提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
目錄
前言
一、概述
二、組件
1.?elasticsearch
2. logstash
2.1 工作過程
2.2 INPUT
2.3? FILETER
2.4? OUTPUTS
3. kibana
三、架構(gòu)類型
3.1 ELK
3.2 ELKK
3.3 ELFK
3.5 EFK
四、案例
前言
ELK日志收集系統(tǒng)是一種常用的開源系統(tǒng),由三個主要組件組成:Elasticsearch、Logstash和Kibana。
-
Elasticsearch是一個基于Lucene的分布式搜索和分析引擎,用于存儲和索引大量數(shù)據(jù)。它能夠快速地搜索和分析大規(guī)模的日志數(shù)據(jù),并支持實(shí)時的數(shù)據(jù)查詢和聚合分析。
-
Logstash是一個用于數(shù)據(jù)收集、處理和傳輸?shù)墓ぞ摺K軌驈母鞣N來源(如文件、數(shù)據(jù)庫、消息隊(duì)列等)收集日志數(shù)據(jù),并對其進(jìn)行過濾、轉(zhuǎn)換和標(biāo)準(zhǔn)化處理,然后將數(shù)據(jù)發(fā)送給Elasticsearch進(jìn)行存儲和索引。
-
Kibana是一個用于數(shù)據(jù)可視化和分析的工具。它提供了用戶友好的界面,可以通過圖表、表格、儀表盤等方式展示和分析存儲在Elasticsearch中的日志數(shù)據(jù)。用戶可以使用Kibana進(jìn)行數(shù)據(jù)查詢、聚合、篩選和導(dǎo)出,并可以自定義儀表盤和報(bào)告。
ELK日志收集系統(tǒng)能夠幫助企業(yè)集中收集、存儲和分析各種類型的日志數(shù)據(jù),提供實(shí)時的監(jiān)控、診斷和故障排查能力,幫助提高系統(tǒng)的穩(wěn)定性和性能。它還支持可擴(kuò)展性和高可用性,并提供了豐富的插件和擴(kuò)展機(jī)制,可以與其他工具和系統(tǒng)集成。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、概述
ELK由三個組件構(gòu)成
?? ?作用
?? ??? ?日志收集
?? ??? ?日志分析
?? ??? ?日志可視化
?? ?為什么使用?
?? ??? ?日志對于分析系統(tǒng)、應(yīng)用的狀態(tài)十分重要,但一般日志的量會比較大,并且比較分散。
?? ??? ?如果管理的服務(wù)器或者程序比較少的情況我們還可以逐一登錄到各個服務(wù)器去查看、分析。但如果服務(wù)器或者程序的數(shù)量比較多了之后這種方法就顯得力不從心?;诖?,一些集中式的日志系統(tǒng)也就應(yīng)用而生。目前比較有名成熟的有,Splunk(商業(yè))、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、還有ELK等等。
二、組件
1.?elasticsearch
日志分析
?? ?開源的日志收集、分析、存儲程序
?? ?特點(diǎn)
?? ??? ?分布式
?? ??? ?零配置
?? ??? ?自動發(fā)現(xiàn)
?? ??? ?索引自動分片
?? ??? ?索引副本機(jī)制
?? ??? ?Restful風(fēng)格接口
?? ??? ?多數(shù)據(jù)源
?? ??? ?自動搜索負(fù)載
2. logstash
日志收集
?搜集、分析、過濾日志的工具
2.1 工作過程
一般工作方式為c/s架構(gòu),Client端安裝在需要收集日志的服務(wù)器上,Server端負(fù)責(zé)將收到的各節(jié)點(diǎn)日志進(jìn)行過濾、修改等操作,再一并發(fā)往Elasticsearch上去
?? ??? ?Inputs → Filters → Outputs
?? ??? ?輸入-->過濾-->輸出
2.2 INPUT
File:從文件系統(tǒng)的文件中讀取,類似于tail -f命令
Syslog:在514端口上監(jiān)聽系統(tǒng)日志消息,并根據(jù)RFC3164標(biāo)準(zhǔn)進(jìn)行解析
(要使用 Logstash 從 Syslog 中讀取數(shù)據(jù),您可以按照以下步驟進(jìn)行配置:
? ?1. 創(chuàng)建 Logstash 配置文件:使用任意文本編輯器創(chuàng)建一個新的配置文件(例如 `syslog.conf`)。
? ?2. 配置 Syslog 輸入插件:在配置文件中添加以下內(nèi)容,以配置 Logstash 從 Syslog 中讀取數(shù)據(jù):
? ?```yaml
? ?input {
? ? ?syslog {
? ? ? ?port => 514 ?# Syslog 默認(rèn)的監(jiān)聽端口號為 514,請根據(jù)實(shí)際情況進(jìn)行修改
? ? ? ?type => "syslog"
? ? ?}
? ?}
? ?```
? ?這將配置 Logstash 使用 Syslog 輸入插件監(jiān)聽默認(rèn)的 Syslog 端口號(514),并使用 "syslog" 類型標(biāo)記這些事件。
? ?3. 可選的過濾器和輸出配置:根據(jù)您的需求,您可以添加額外的過濾器或輸出插件來處理從 Syslog 讀取的數(shù)據(jù)。根據(jù)您的具體需求進(jìn)行相應(yīng)的配置。
? ?4. 啟動 Logstash:導(dǎo)航到 Logstash 的安裝目錄,并運(yùn)行以下命令以啟動 Logstash 并加載 Syslog 配置:
? ?```bash
? ?bin/logstash -f path/to/syslog.conf
? ?```
? ?請確保將 `path/to/syslog.conf` 替換為實(shí)際的配置文件路徑。
啟動 Logstash 后,它將監(jiān)聽來自 Syslog 的數(shù)據(jù)并進(jìn)行處理。請確保 Logstash 能夠接收 Syslog 數(shù)據(jù),并且防火墻或網(wǎng)絡(luò)配置允許 Logstash 與 Syslog 進(jìn)行通信。如果您使用的是默認(rèn)端口 514,請確保沒有其他服務(wù)占用該端口。如有需要,可以修改 Logstash 配置文件中的端口設(shè)置來與 Syslog 配置一致。)
Redis:從redis service中讀取(要使用Logstash從Redis中讀取數(shù)據(jù),您可以按照以下步驟設(shè)置Logstash配置:
? ?1. 安裝Logstash和Redis插件:首先,確保已在系統(tǒng)上安裝了Logstash,并在Logstash的安裝目錄 下運(yùn)行以下命令安裝Redis插件:
? ?```
? ?bin/logstash-plugin install logstash-input-redis
? ?```
? ?2. 創(chuàng)建Logstash配置文件:創(chuàng)建一個新的配置文件(例如`redis.conf`),并使用任意文本編輯器打開。
? ? 3. 配置Redis輸入插件:在配置文件中添加以下內(nèi)容,以配置Logstash從Redis中讀取數(shù)據(jù):
? ?```
? ?input {
? ? ?redis {
? ? ? ?host => "localhost" ? # Redis主機(jī)地址,根據(jù)您的配置進(jìn)行更改
? ? ? ?port => 6379 ? ? ? ? ?# Redis端口,根據(jù)您的配置進(jìn)行更改
? ? ? ?data_type => "list" ? # Redis數(shù)據(jù)類型,例如list、channel、pattern等
? ? ? ?key => "your_key" ? ? # Redis數(shù)據(jù)鍵名,根據(jù)您的配置進(jìn)行更改
? ? ?}
? ?}
? ?```
? ?注意,這只是一個基本的配置示例,請根據(jù)您的Redis主機(jī)地址、端口、數(shù)據(jù)類型和鍵名進(jìn)行相應(yīng)的更改。
? ? ?4. 配置Logstash輸出:根據(jù)您的需求,您可以添加其他輸出插件(如Elasticsearch、文件輸出)
Beats:從filebeat中讀?。ㄒ?Logstash 從其他主機(jī)的 Filebeat 讀取數(shù)據(jù),您需要進(jìn)行以下配置:
1. 在 Filebeat 上配置 Logstash 輸出:編輯 Filebeat 的配置文件(通常是 `filebeat.yml`)并添加 Logstash 輸出的配置。確保將 `output.logstash.hosts` 設(shè)置為 Logstash 主機(jī)的 IP 地址或主機(jī)名,如下所示:
? ?```yaml
? ?output.logstash:
? ? ?hosts: ["logstash_host:5044"]
? ?```
? ?將 `logstash_host` 替換為實(shí)際的 Logstash 主機(jī)地址。確保配置中的端口號 `5044` 與 Logstash 監(jiān)聽的端口一致。
2. 在 Logstash 上配置 Filebeat 輸入:創(chuàng)建一個新的 Logstash 配置文件(例如 `filebeat.conf`),并使用文本編輯器打開。在配置文件中添加以下內(nèi)容:
? ?```yaml
? ?input {
? ? ?beats {
? ? ? ?port => 5044 # 設(shè)置 Logstash 監(jiān)聽的端口與 Filebeat 配置中一致
? ? ?}
? ?}
? ?```
? ?這將指示 Logstash 監(jiān)聽 Filebeat 發(fā)送的數(shù)據(jù)。
3. 可選的過濾器和輸出配置:根據(jù)您的需求,您可以添加額外的過濾器或輸出插件來處理從 Filebeat 讀取的數(shù)據(jù)。根據(jù)您的具體需求進(jìn)行相應(yīng)的配置。
4. 啟動 Logstash:導(dǎo)航到 Logstash 的安裝目錄并運(yùn)行以下命令以啟動 Logstash 并加載 Filebeat 配置:
? ?```bash
? ?bin/logstash -f path/to/filebeat.conf
? ?```
? ?請確保將 `path/to/filebeat.conf` 替換為實(shí)際的配置文件路徑。
啟動 Logstash 后,它將監(jiān)聽來自其他主機(jī)上 Filebeat 的數(shù)據(jù),并根據(jù)配置進(jìn)行處理。請確保 Logstash 能夠訪問其他主機(jī)上的 Filebeat,并且防火墻或網(wǎng)絡(luò)配置允許 Logstash 與 Filebeat 進(jìn)行通信)
2.3? FILETER
Grok:解析任意文本數(shù)據(jù),Grok 是 Logstash 最重要的插件。它的主要作用就是將文本格式的字符串,轉(zhuǎn)換成為具體的結(jié)構(gòu)化的數(shù)據(jù),配合正則表達(dá)式使用。
?? ??? ? 官方提供的grok表達(dá)式:logstash-patterns-core/patterns at main · logstash-plugins/logstash-patterns-core · GitHub
?? ??? ? Grok在線調(diào)試:Grok Debugger
?? ??? ? Mutate:對字段進(jìn)行轉(zhuǎn)換。例如對字段進(jìn)行刪除、替換、修改、重命名等。
?? ??? ? Drop:丟棄一部分Events不進(jìn)行處理。
?? ??? ? Clone:拷貝Event,這個過程中也可以添加或移除字段。
?? ??? ? Geoip:添加地理信息(為前臺kibana圖形化展示使用)
2.4? OUTPUTS
? ? ? ? ? ? ? ?Elasticsearch:可以高效的保存數(shù)據(jù),并且能夠方便和簡單的進(jìn)行查詢。
?? ??? ? File:將Event數(shù)據(jù)保存到文件中。
?? ??? ? Graphite:將Event數(shù)據(jù)發(fā)送到圖形化組件中,踏實(shí)一個當(dāng)前較流行的開源存儲圖形化展示的組件。
3. kibana
日志可視化
?? ??? ?Grafana
?? ?為Logstash和ElasticSearch在收集、存儲的日志基礎(chǔ)上進(jìn)行分析時友好的Web界面,可以幫助匯總、分析和搜索重要數(shù)據(jù)日志。
三、架構(gòu)類型
3.1 ELK
? ? ? ? es
?? ??? ?logstash
?? ??? ?kibana
3.2 ELKK
? ? ? ? es
?? ??? ?logstash
?? ??? ?kafka
?? ??? ?kibana
3.3 ELFK
? ? ? ??es
?? ??? ?logstash? ?重量級
? ? ? ? ? ? ? ? ? ? ? ? 占用系統(tǒng)資源較多
?? ??? ?filebeat? ? 輕量級
? ? ? ? ? ? ? ? ? ? ? ?占用系統(tǒng)資源較少
?? ??? ?kibana
3.4 ELFKK
? ? ? ? es
?? ??? ?logstash
?? ??? ?filebeat
?? ??? ?kafka
?? ??? ?kibana
3.5 EFK
? ? ? ? es
?? ??? ?logstash
?? ??? ?fluentd
?? ??? ?kafka
?? ??? ?kibana
四、案例
ELK日志收集系統(tǒng)集群實(shí)驗(yàn)
1.實(shí)驗(yàn)拓?fù)?/strong>
2. 環(huán)境配置
設(shè)置各個主機(jī)的IP地址為拓?fù)渲械撵o態(tài)IP,在兩個節(jié)點(diǎn)中修改主機(jī)名為node1和node2并設(shè)置hosts文件
node1:
hostnamectl set-hostname node1
vim /etc/hosts
192.168.156.11? node1
192.168.156.12 ?node2
node2:
hostnamectl set-hostname node2
vim /etc/hosts
192.168.156.11 ?node1
192.168.156.12 ?node2
3.??安裝node1與node2節(jié)點(diǎn)的elasticsearch
安裝
?rpm -ivh elasticsearch-5.5.0.rpm
配置
node1:
vim /etc/elasticsearch/elasticsearch.yml
cluster.name:my-elk-cluster ?//集群名稱 ??
node.name:node1 //節(jié)點(diǎn)名字
path.data:/var/lib/elasticsearch ?//數(shù)據(jù)存放路徑
path.logs: /var/log/elasticsearch/ ?//日志存放路徑
bootstrap.memory_lock:false //在啟動的時候不鎖定內(nèi)存
network.host:192.168.56.11? //提供服務(wù)綁定的IP地址,0.0.0.0代表所有地址
http.port:9200 //偵聽端口為9200
discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集發(fā)現(xiàn)通過單播實(shí)現(xiàn)
node2:
vim /etc/elasticsearch/elasticsearch.yml
cluster.name:my-elk-cluster ?//集群名稱 ??
node.name:node2 //節(jié)點(diǎn)名字
path.data:/var/lib/elasticsearch ?//數(shù)據(jù)存放路徑
path.logs: /var/log/elasticsearch/ ?//日志存放路徑
bootstrap.memory_lock:false //在啟動的時候不鎖定內(nèi)存
network.host:192.168.156.12? //提供服務(wù)綁定的IP地址,0.0.0.0代表所有地址
http.port:9200 //偵聽端口為9200
discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集發(fā)現(xiàn)通過單播實(shí)現(xiàn)
啟動elasticsearch服務(wù)
node1和node2
systemctl start elasticsearch
查看節(jié)點(diǎn)信息
http://192.168.156.11:9200
http://192.168.156.12:9200
查看集群健康狀態(tài):
http://192.168.115.3:9200/_cluster/health
Green 健康 ??yellow ?警告 ???red ?集群不可用,嚴(yán)重錯誤
4.?在node1安裝elasticsearch-head插件
tar xf node-v8.2.1.tar.gz
cd node-v8.2.1
./configure && make && make install
等待安裝完畢。
安裝完畢后會生成命令:npm
拷貝命令
tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs ?/usr/local/bin
安裝elasticsearch-head
tar xf elasticsearch-head.tar.gz
cd elasticsearch-head
npm install
修改elasticsearch配置文件
vim /etc/elasticsearch/elasticsearch.yml
添加? ?http.cors.enabled: true ?//開啟跨域訪問支持,默認(rèn)為false
? ? ? ? ? http.cors.allow-origin:?"*" ?//跨域訪問允許的域名地址
啟動elasticsearch-head
cd elasticsearch-head
npm run start &
查看監(jiān)聽: netstat -anput | grep :9100
訪問:
http://192.168.156.11:9100
測試
在node1的終端中輸入:
curl ?-XPUT ?'localhost:9200/index-demo/test/1?pretty&pretty' -H ?'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
刷新瀏覽器可以看到對應(yīng)信息即可
node1服務(wù)器安裝logstash
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service
In -s /usr/share/logstash/bin/logstash??/usr/local/bin/
測試1: 標(biāo)準(zhǔn)輸入與輸出
logstash -e 'input{ stdin{} }output { stdout{} }'
測試2: 使用rubydebug解碼
logstash -e 'input {?stdin{} } output { stdout{ codec=>rubydebug }}'
測試3:輸出到elasticsearch
??查看結(jié)果:
http://192.168.156.11:9100
logstash日志收集文件格式
Logstash配置文件基本由三部分組成:input、output以及 filter(根據(jù)需要)。標(biāo)準(zhǔn)的配置文件格式如下:
input (...)??輸入
filter {...}???過濾
output {...}??輸出
在每個部分中,也可以指定多個訪問方式。例如,若要指定兩個日志來源文件,則格式如下:
input {
file{path =>"/var/log/messages"?type =>"syslog"}
file { path =>"/var/log/apache/access.log" ?type =>"apache"}
}
案例:通過logstash收集系統(tǒng)信息日志
chmod o+r /var/log/messages
vim /etc/logstash/conf.d/system.conf
? ? input {
? ? file{
? ? path =>"/var/log/messages"?
? ? type => "system"
? ? start_position => "beginning"
? ? }
? ? }
? ? output {
? ? elasticsearch{
? ? hosts =>["192.168.1.1:9200"]
? ? index => "system-%{+YYYY.MM.dd}"
? ? }
? ? }
重啟日志服務(wù): systemctl restart logstash
查看日志: http://192.168.156.11:9100
node1節(jié)點(diǎn)安裝kibana
rpm -ivh kibana-5.5.1-x86_64.rpm
配置kibana
vim /etc/kibana/kibana.yml
server.port:5601 ?//Kibana打開的端口
server.host:"0.0.0.0" //Kibana偵聽的地址
elasticsearch.url: "http://192.168.8.134:9200" ?
//和Elasticsearch 建立連接
kibana.index:".kibana" ?//在Elasticsearch中添加.kibana索引
啟動kibana
systemctl start kibana
訪問kibana :
http://192.168.156.11:5601
首次訪問需要添加索引,我們添加前面已經(jīng)添加過的索引:system-*
企業(yè)案例:
收集httpd訪問日志信息
在httpd服務(wù)器上安裝logstash,參數(shù)上述安裝過程,可以不進(jìn)行測試
logstash在httpd服務(wù)器上作為agent(代理),不需要啟動
編寫httpd日志收集配置文件
vim /etc/logstash/conf.d/httpd.conf
input {
file{
path=>"/var/log/httpd/access_log" //收集Apache訪問日志
type => "access"?//類型指定為 access
start_position => "beginning"?//從開始處收集
}
output{
elasticsearch {
hosts =>["192.168.156.11:9200"] // elasticsearch 監(jiān)聽地址及端口
index =>"httpd_access-%{+YYYY.MM.dd}" //指定索引格式
}
}
使用logstash命令導(dǎo)入配置:
logstash -f ?/etc/logstash/conf.d/httpd.conf
使用kibana查看即可! http://192.168.156.11:5601???查看時在mangement選項(xiàng)卡創(chuàng)建索引httpd_access-* ?即可!
文章來源:http://www.zghlxwxcb.cn/news/detail-692361.html
? 文章來源地址http://www.zghlxwxcb.cn/news/detail-692361.html
到了這里,關(guān)于ELK日志收集系統(tǒng)(四十九)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!