基于elk實現分布式日志

1.基本介紹

1.1 什么是分布式日志

在分布式應用中,日志被分散在儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日志。這樣是不是感覺很繁瑣和效率低下。所以我們使用集中化的日志管理,分布式日志就是對大規模日志數據進行采集、追蹤、處理。

1.2 為什么要使用分布式日志

一般我們需要進行日志分析場景:直接在日志文件中grep、awk就可以獲得自己想要的信息。但在規模較大的場景中,此方法效率低下,面臨問題包括日志量太大如何歸檔、文本搜索太慢怎么辦、如何多維度查詢。需要集中化的日志管理,所有服務器上的日志收集匯總。常見解決思路是建立集中式日志收集系統,將所有節點上的日志統一收集,管理,訪問。

1.3 ELK 分布式日志

  • 實際上ELK是三款軟件的簡稱,分別是Elasticsearch、 Logstash、Kibana組成。
  • Elasticsearch 基于java,是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Kibana 基于nodejs,也是一個開源和免費的工具,Kibana可以為Logstash和ElasticSearch提供的日志分析友好的Web 界面,可以匯總、分析和搜索重要數據日志。
  • Logstash 基于java,是一個開源的用于收集,分析和存儲日志的工具。
  • 下面是ELK的工作原理:
    在這里插入圖片描述

2.實戰

2.1 搭建elk環境

本環境用于接收各logstash發送的日志數據。
具體,參考:https://core815.blog.csdn.net/article/details/149837061

2.2 準備日志文件

日志文件,可以指向應用系統具體文件目錄,本文準備了測試文件,可在文末“相關資源”章節獲取。
在這里插入圖片描述

2.3 安裝logstash

安裝文件,放到“/home”路徑下:

tar -zxvf logstash-9.1.2-linux-x86_64.tar.gz

編寫配置文件:

cd /home/logstash-9.1.2/bin
vim logstash-elasticsearch.conf

logstash-elasticsearch.conf:

# INPUT 模塊:定義日志來源
input {file {# 監聽 /home/logs/ 目錄下所有 .log 文件path => "/home/logs/*.log"# 首次啟動時從文件開頭讀取(歷史日志全量導入)start_position => "beginning"# 禁用 sincedb 記錄(每次重啟均重新讀取文件,適用于測試環境)sincedb_path => "/dev/null"# 多行合并編解碼器(用于處理跨行日志,如 Java 異常堆棧)codec => multiline {# 匹配以時間戳開頭的行(格式示例:2025-08-13 10:00:00)pattern => "^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}"# true 表示不匹配 pattern 的行合并到上一事件negate => true# 將當前行合并到上一事件的末尾what => "previous"# 強制未完成的多行事件每 3 秒輸出一次auto_flush_interval => 3}}
}# FILTER 模塊:數據處理邏輯
filter {# 若文件路徑包含 "info"(如 /home/logs/app_info.log)if [path] =~ "info" {# 標記日志類型為 "info"mutate { replace => { type => "info" } }# 使用 GROK 解析 Apache 組合日志格式(提取 IP、方法、狀態碼等字段)grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}# 解析日志中的時間戳,覆蓋默認的 @timestampdate {match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]  # 格式示例:13/Aug/2025:14:00:00 +0800}}# 若文件路徑包含 "error"(如 /home/logs/error.log)else if [path] =~ "error" {# 標記日志類型為 "error"mutate { replace => { type => "error" } }}# 其他日志文件else {# 標記日志類型為 "random_logs"mutate { replace => { type => "random_logs" } }}
}# OUTPUT 模塊:定義數據輸出目標
output {# 輸出到 Elasticsearchelasticsearch {hosts => "10.86.97.210:9200"  # ES 服務器地址(生產環境建議改為數組格式:["ip:port"])user => "elastic"              # 用戶名(正確字段應為 username)password => "test@123456"     # 密碼(特殊符號需用雙引號包裹)# 缺失參數建議添加:# ssl => true                  # 若 ES 啟用 HTTPS 需開啟# index => "logs-%{type}-%{+YYYY.MM.dd}"  # 按類型和日期分隔索引}# 同時輸出到控制臺(調試用,生產環境可移除)stdout {codec => rubydebug  # 以易讀格式打印結構化事件}
}

創建logstash專用用戶:

sudo groupadd -r logstash
sudo useradd -r -s /bin/bash -g logstash -d /home/logstash-9.1.2 -m logstash

調整logstash目錄權限:

# 將 Logstash 安裝目錄所有權賦予新用戶
sudo chown -R logstash:logstash /home/logstash-9.1.2/
# 確保日志目錄可寫入
sudo mkdir /var/log/logstash
sudo chown logstash:logstash /var/log/logstash

使用測試命令檢查語法:

sudo -u logstash /home/logstash-9.1.2/bin/logstash -f /home/logstash-9.1.2/bin/logstash-elasticsearch.conf --config.test_and_exit

以專用用戶身份啟動:

sudo -u logstash /home/logstash-9.1.2/bin/logstash -f /home/logstash-9.1.2/bin/logstash-elasticsearch.conf

啟動效果:
在這里插入圖片描述

2.4 kibana查看

kibana訪問地址:
http://10.86.97.210:5601/
賬號:elastic
密碼:test@123456

在這里插入圖片描述

3.相關資源

百度網盤:https://pan.baidu.com/s/1DFlQim7xPwx7uEKOGTd85A?pwd=4i76

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95404.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95404.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95404.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多模態RAG賽題實戰之策略優化--Datawhale AI夏令營

科大訊飛AI大賽(多模態RAG方向) - Datawhale 項目流程圖 1、升級數據解析方案:從 fitz 到 MinerU PyMuPDF(fitz)是基于規則的方式提取pdf里面的數據;MinerU是基于深度學習模型通過把PDF內的頁面看成是圖片…

09--解密棧與隊列:數據結構核心原理

1. 棧 1.1. 棧的簡介 棧 是一種 特殊的線性表,具有數據 先進后出 特點。 注意: stack本身 不支持迭代器操作 主要原因是因為stack不支持數據的隨機訪問,必須保證數據先進后出的特點。stack在CPP庫中實現為一種 容器適配器 所謂容器適配器&a…

打造專屬 React 腳手架:從 0 到 1 開發 CLI 工具

前言: 在前端開發中,重復搭建項目環境是個低效的事兒。要是團隊技術棧固定(比如 React AntD Zustand TS ),每次從零開始配路由、狀態管理、UI 組件,既耗時又容易出錯。這時候,自定義 CLI 腳手架 就派上…

Python day43

浙大疏錦行 Python day43 import torch import numpy as np import pandas as pd import torchvision import torchvision.transforms as transforms import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torch.utils.data import Da…

python基于Hadoop的超市數據分析系統

前端開發框架:vue.js 數據庫 mysql 版本不限 后端語言框架支持: 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 數據庫工具:Navicat/SQLyog等都可以 摘要&…

如何用 COLMAP 制作 Blender 格式的數據集

如何用 COLMAP 制作 Blender 格式的數據集并劃分出 transforms_train.json、transforms_val.json 和 transforms_test.json。 一、什么是 Blender 格式數據集? Blender 格式數據集是 Nerf 和 Nerfstudio 常用的輸入格式,其核心是包含了相機內外參的 JSON 文件,一般命名為:…

[GESP202309 六級] 2023年9月GESP C++六級上機題題解,附帶講解視頻!

本文為GESP 2023年9月 六級的上機題目詳細題解和講解視頻,覺得有幫助或者寫的不錯可以點個贊。 題目一講解視頻 GESP2023年9月六級上機題一題目二講解視頻 題目一:小羊買飲料 B3873 [GESP202309 六級] 小楊買飲料 - 洛谷 題目大意: 現在超市一共有n種飲料&#…

linux 操作ppt

目錄 方法1:用 libreoffice 打開PPT文件 播放腳本: 方法2:用 python-pptx 創建和編輯PPT 方法3:其他方法 在Linux中,可以使用Python通過python-pptx庫來創建和編輯PPT文件,但直接播放PPT文件需要借助其…

元數據管理與數據治理平臺:Apache Atlas 基本搜索 Basic Search

文中內容僅限技術學習與代碼實踐參考,市場存在不確定性,技術分析需謹慎驗證,不構成任何投資建議。 Apache Atlas 框架是一套可擴展的核心基礎治理服務,使企業能夠有效、高效地滿足 Hadoop 中的合規性要求,并支持與整個…

LangChain4J-(1)-Hello World

一、LangChain4J是什么? LangChain4J 是一個專為 Java 生態系統設計的開源框架,用于簡化與大語言模型(LLM,如 OpenAI 的 GPT 系列、Google 的 Gemini、Anthropic 的 Claude 等)的集成和交互。它借鑒了 Python 生態中 L…

HTTPS應用層協議-中間攻擊人

HTTPS應用層協議-中間攻擊人 ? Man-in-the-MiddleAttack,簡稱“MITM 攻擊” 確實,在方案 2/3/4 中,客戶端獲取到公鑰 S 之后,對客戶端形成的對稱秘鑰 X 用服務端給客戶端的公鑰 S 進行加密,中間人即使竊取到了數據&am…

利用 Makefile 高效啟動 VIVADO 軟件:深入解析與實踐

利用 Makefile 高效啟動 VIVADO 軟件:深入解析與實踐 系列文章目錄 1、VMware Workstation Pro安裝指南:詳細步驟與配置選項說明 2、VMware 下 Ubuntu 操作系統下載與安裝指南 3.基于 Ubuntu 的 Linux 系統中 Vivado 2020.1 下載安裝教程 文章目錄利用 …

[前端算法]排序算法

默認情況下,sort() 會將元素轉換為字符串,然后按照 Unicode 編碼的順序進行排序: const fruits [apple, banana, cherry, date]; fruits.sort(); console.log(fruits); // 輸出: ["apple", "banana", "cherry"…

C#標簽批量打印程序開發

C#標簽批量打印程序開發(集成Bartender解決方案)一、系統架構設計 1. 核心模塊劃分 public class LabelPrintingSystem {private IDataLoader _dataLoader; // 數據加載器private ITemplateEngine _templateEngine; // 模板引擎private IPrintControl…

ECC的原理、背景、工作機制和數學基礎

ECC的原理、背景、工作機制和數學基礎摘要:本文首先詳細介紹ECC(Error-Correcting Code,糾錯碼)的原理,包括背景、工作機制和數學基礎。然后,解釋ECC在SRAM(Static Random-Access Memory&#x…

計算機網絡2-2:物理層下面的傳輸媒體

目錄 導引型傳輸媒體 同軸電纜 雙絞線 光纖 電力線 非導引型傳輸媒體 無線電波 微波 紅外線 可見光 無線電頻譜管理機構 導引型傳輸媒體 同軸電纜 雙絞線 光纖 光在光纖中傳播的基本原理 電力線 非導引型傳輸媒體 無線電波 微波 紅外線 可見光 LiFi(可見光通信) …

Dify 從入門到精通(第 32/100 篇):Dify 的日志分析與監控

Dify 從入門到精通(第 32/100 篇):Dify 的日志分析與監控 Dify 入門到精通系列文章目錄 第一篇《Dify 究竟是什么?真能開啟低代碼 AI 應用開發的未來?》介紹了 Dify 的定位與優勢第二篇《Dify 的核心組件&#xff1a…

【IntelliJ IDEA】修改堆內存

idea卡頓,鼠標漂移修改idea文件打開 idea 安裝路徑,【bin】目錄下【idea64.exe.vmoptions】文件修改【-Xms】最小內存【-Xmx】最大內存-Xms2048m -Xmx9216midea更改內存設置工具欄幫助更改內存設置設置堆大小上限為 文件 設置的最大內存保存并重啟Leslie…

Docker與Docker Compose:容器世界的“單兵作戰”與“軍團指揮官”

在容器化技術的浪潮中,Docker和Docker Compose如同“雙子星”,一個專注于單兵作戰,一個擅長軍團指揮。它們看似相似,卻各司其職。對于開發者來說,理解它們的區別不僅能讓代碼部署事半功倍,更能避免踩坑。本…

進階向:Python編寫自動化郵件發送程序

Python編寫自動化郵件發送程序:從零開始詳解在數字化時代,自動化郵件發送功能已成為企業和個人提升工作效率的重要工具。據統計,全球每天發送的商業郵件超過30億封,其中約40%是通過自動化系統發送的。這種功能被廣泛應用于多種場景…