使用ELK Stack(Elasticsearch、Logstash、Kibana、Beats)進行日志管理是一種流行的開源解決方案,用于集中式日志收集、存儲、分析和可視化。ELK Stack可以從分布式系統中采集和聚合日志,幫助運維和開發人員更好地理解系統的運行狀態、排查問題并監控關鍵業務指標。
本文將使用Filebeat、Logstash、Elasticsearch、Kibana搭建一個簡單的日志分析平臺,其中需要自行部署Filebeat并且打通和天翼云云搜索Elasticsearch、Kibana以及Logstash實例之間的網絡。
ELK Stack組件
Elasticsearch 是一個分布式搜索引擎,作為ELK堆棧的核心,它負責存儲和索引日志數據。Elasticsearch提供強大的全文搜索、過濾和分析功能,可以快速處理大規模數據并允許實時查詢。
Logstash 是一個數據處理管道工具,負責從各種輸入源收集數據,進行過濾、處理并將其輸出到 Elasticsearch。Logstash 支持多種數據源(如文件、數據庫、消息隊列),并且能夠通過過濾器對數據進行處理,比如解析、格式轉換等。
Kibana 是一個數據可視化和分析工具,允許用戶在瀏覽器中直觀地查詢和展示Elasticsearch 中存儲的日志數據。Kibana提供多種圖表、儀表盤和地圖,可以幫助用戶監控系統、分析日志、生成報表等。
Beats是一組輕量級數據收集器,用于將各種類型的數據發送到Elasticsearch或Logstash進行索引和分析。其中Filebeat是 ELK Stack 中的一個輕量級日志數據收集器,用于收集日志文件數據。它監視指定的日志文件或位置,并將其發送到Elasticsearch或Logstash以進行存儲和分析。
工作機制
首先使用輕量級的Filebeat采集日志、其次使用Logstash接收Filebeat的輸出,并對日志進行解析、添加或刪除字段等處理、最后將數據輸出到天翼云Elasticsearch實例,通過Kibana實例在前端可視化展示。
前提條件
已經開通天翼云云搜索Elasticsearch和Kibana實例,并完成Logstash實例加裝。
已經部署Filebeat和Logstash并且打通和天翼云云搜索實例之間的網絡。推薦使用Filebeat 7.10.2版本。
查看Kibana的終端可以訪問到云搜索實例,設置好5601端口的網絡安全策略。
操作步驟
配置Filebeat
Filebeat采集日志,配置具體的日志路徑。
#采集日志
filebeat.inputs:
- type: log
# 采集的日志文件的路徑。替換為自己日志的路徑,可以使用通配符。
paths:
- /your_path/*.log
output.logstash:
hosts: ["{logstash_ip}:5044"]配置Logstash
Logstash需要接收Filebeat的輸出并進行處理,需要在Logstash管道管理模塊中創建并部署管道。示例配置如下:
input {
beats {
port ==> 5044
}
}
# 對數據進行處理。
filter {
# mutate {
# remove_field ==> ["@version"]
# }
}
output{
elasticsearch{
# Elasticsearch實例的訪問地址。
hosts ==> ["//{ip}:{port}", "//{ip}:{port}", "//{ip}:{port}"]
# 訪問Elasticsearch實例的用戶名和密碼,如無安全機制可不配置。
user ==> "********"
password ==> "********"
# 配置寫入的索引名,示例如下。
index ==> "filebeat-logstash-es-%{+YYYY.MM.dd}"
}
}使用Kibana進行可視化查詢。
啟動Filebeat并成功部署Logstash管道后,日志會不斷被采集到Elasticsearch實例中。可以在瀏覽器中打開Kibana界面,http:{ip}:5601。
輸入正確的用戶名和密碼,可以登錄到系統中。
可以使用Dev tools進行查詢。
GET {your_index}/_search
{
"query": {
"match": {
"{your_filed}": "XXXXXX"
}
}
}OpenSearch和OpenSearch Dashboards也適用這套方案。在實際的使用過程中將Elasticsearch和Kibana替換為OpenSearch和OpenSearch Dashboards,同時修改Logstash配置輸出到OpenSearch實例即可。