
一、前言
開發排查系統問題用得最多的手段就是檢視系統日志,
ELK
是
Elastic
公司開源的實時日志處理與分析解決方案,已經為日志處理方案的主流選擇。
而在生産環境中,如何針對
ELK
進行監控,保證各個元件正常運作?如何知道目前的資源是否能承受線上的壓力呢?本文主要是以
Elastic Stack 7.x
版本為例,介紹如何監控
ELK
自身的各個元件。
二、總體架構
常見的
Elastic Stack
日志系統架構如下
其中可使用
Metricbeat
元件作為輕量級監視代理,通過HTTP端點收集各個元件的監控資訊,并把監控資料落盤到
Elasticsearch
中,最終通過
Kibana
以圖形化的方式展示各種監控資料。
三、部署Metricbeat
建議在每台伺服器上都運作
Metricbeat
收集名額,多個Metricbeat執行個體的名額将在
Elasticsearch
伺服器上合并。
下載下傳對應版本的
Metricbeat
位址如下:
https://www.elastic.co/cn/downloads/past-releases#metricbeat3.1. 收集Elasticsearch資訊
在
Metricbeat
中啟用并配置
Elasticsearch x-pack
子產品
從安裝目錄中,運作:
./metricbeat modules enable elasticsearch-xpack
預設情況下,子產品從
http://localhost:9200收集 Elasticsearch 名額。如果本地伺服器有不同的位址,請在 modules.d/elasticsearch-xpack.yml 中将其添加到主機設定。
3.2. 收集Kibana資訊
Metricbeat
Kibana x-pack
./metricbeat modules enable kibana-xpack
該子產品将預設從
http://localhost:5601收集 Kibana 監測名額。如果本地 Kibana 執行個體有不同的位址,則必須通過 modules.d/kibana-xpack.yml 檔案中的 hosts 設定進行指定。
3.3. 收集Logstash資訊
Metricbeat
Logstash x-pack
./metricbeat modules enable logstash-xpack
http://localhost:9600 收集 Logstash 監測名額。如果本地 Logstash 執行個體有不同的位址,則必須通過 modules.d/logstash-xpack.yml 檔案中的 hosts 設定進行指定。
3.4. 收集Beats資訊
所有類型的 Beats
配置都一樣
3.4.1. 開啟HTTP端點
需要開啟
Beats
自己的HTTP端點輸出監控資料,例如
Filebeat
修改
filebeat.yml
檔案,在最後添加以下配置
http:
enabled: true
host: 0.0.0.0
port: 5066
3.4.2. 啟用Beat子產品
Metricbeat
Beat x-pack
./metricbeat modules enable beat-xpack
http://localhost:5066 收集 beat 監測名額。如果正在監測的 beat 執行個體有不同的位址,則必須通過 modules.d/beat-xpack.yml 檔案中的 hosts 設定進行指定。
3.5. 資料輸出配置
配置
Metricbeat
以發送至監測叢集,在
metricbeat.yml
檔案中修改以下内容
output.elasticsearch:
hosts: ["http://localhost:9200"] ## Monitoring cluster
# Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"
PS:位址、使用者名和密碼按實際情況修改
3.6. 啟動Metricbeat
./metricbeat -e
四、收集Elasticsearch日志
使用
Filebeat
收集
Elasticsearch
自身的日志資料。
首先需要在
Elasticsearch
所在的伺服器中安裝
Filebeat
元件。
4.1. 啟用es子產品
Filebeat
Elasticsearch
子產品,執行以下指令
./filebeat modules enable elasticsearch
4.2. 配置es子產品
修改es子產品的配置資訊,指定日志路徑
vim modules.d/elasticsearch.yml
修改為以下内容
- module: elasticsearch
server:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_server.json
gc:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/gc.log.[0-9]*
- /app/elk/elasticsearch/logs/gc.log
audit:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_audit.json
slowlog:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_index_search_slowlog.json
- /app/elk/elasticsearch/logs/*_index_indexing_slowlog.json
deprecation:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_deprecation.json
PS:日志路徑按實際情況修改
4.3. 配置輸出
filebeat.yml
檔案,配置es相關資訊
output.elasticsearch:
hosts: ["localhost:9200"]
# Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"
4.4. 啟動Filebeat
./filebeat -c filebeat.yml -e
五、檢視監控界面
進入
Kibana
的控制台界面,進入
堆棧監測
菜單
即可檢視各個元件的監控資訊
掃碼關注有驚喜!