go-kit 微服務 日誌分析管理 (ELK + Filebeat)

hwholiday發表於2020-03-16

ELK

  • ELK 不是一款軟體,而是 Elasticsearch、Logstash 和 Kibana 三種軟體產品的首字母縮寫
    • Elasticsearch:分散式搜尋和分析引擎,具有高可伸縮、高可靠和易管理等特點
    • Logstash:資料收集引擎,它支援動態的從各種資料來源蒐集資料並處理資料
    • Kibana:資料分析,視覺化平臺

Filebeat

  • Filebeat 是一個輕量型的服務對伺服器壓力比較小,用於採集資料,並上報到 Logstash 或 Elasticsearch

Beats

  • Packetbeat => 蒐集網路流量資料
  • Topbeat => 蒐集系統、程式和檔案系統級別的 CPU 和記憶體使用情況等資料
  • Filebeat => 蒐集檔案資料
  • Winlogbeat => 蒐集 Windows 事件日誌資料
  • Metricbeat => Ship and analyze metrics.
  • Heartbeat => Ping your Infrastructure.
  • Auditbeat => Send audit data to Elasticsearch.
  • Functionbeat => Ship cloud data with serverless infrastructure.
  • Journalbeat => Analyze Journald logs.

架構


Filebeat ->
            ->
Filebeat -> -> -> -> Logstash -> Elasticsearch -> Kibana
            ->
Filebeat ->

安裝

  • elasticsearch 下載 地址

    • 啟動命令
linux    bin/elasticsearch
Windows  bin\elasticsearch.bat
//訪問 http://localhost:9200/ 正確返回資料  
{
  "name": "linux-pc",
  "cluster_name": "elasticsearch",
  "cluster_uuid": "_Jb2j7Z0RO2EK5Nsr1GqjQ",
  "version": {
    "number": "7.6.1",
    "build_flavor": "default",
    "build_type": "tar",
    "build_hash": "aa751e09be0a5072e8570670309b1f12348f023b",
    "build_date": "2020-02-29T00:15:25.529771Z",
    "build_snapshot": false,
    "lucene_version": "8.4.0",
    "minimum_wire_compatibility_version": "6.8.0",
    "minimum_index_compatibility_version": "6.0.0-beta1"
},
  "tagline": "You Know, for Search"
}
//開啟 config/kibana.yml檔案 
//在elasticsearch.hosts中寫上elasticsearch的地址
//elasticsearch.hosts: ["http://localhost:9200"]
linux    bin/kibana
Windows  bin\kibana.bat
bin/logstash -f logstash.conf
./filebeat -e -c filebeat.yml

監控 git-kit 服務

  • filebeat.yml 配置
filebeat.inputs:
- type: log     
  enabled: true
  paths:
    - /home/go/src/learning_tools/logs/go-kit-v11-client-*.log
  document_type: "kit-client"   #指定型別  在elastic中可通過[type]識別
  fields:
    tag: kit-client                #指定標籤  在logstahs中可通過[fields][tag]識別
- type: log     
  enabled: true
  paths:
    - /home/go/src/learning_tools/logs/go-kit-v11-server-*.log
  document_type: "kit-server"   
  fields:
    tag: kit-server                

# 積累1024條訊息才上報
#spool_size: 1024
# 或者空閒5s上報
#idle_timeout: "5s"

output.logstash:
  hosts: ["0.0.0.0:5044"]      

//output.elasticsearch:
//  # Array of hosts to connect to.
//  hosts: ["0.0.0.0:9200"]
//  # Optional protocol and basic auth credentials.
//#protocol: "https"
//#username: "elastic"           
//#password: "changeme"
  • logstash.conf 配置 這裡只做最基礎演示,其他高階功能 點選
input  #Input Plugin處理資料輸入
{
  beats
  {
    port => 5044
  }
}
output  #Output Plugin將格式化資料輸出到指定目標檔案
{
  stdout { #控制檯輸出日誌
    codec => rubydebug
  }
 if [fields][tag] == "kit-server"
   {
    elasticsearch {
      hosts => ["http://localhost:9200"]
      index => "kit-server-%{+YYYY.MM.dd}"
    }
  }

if [fields][tag] == "kit-client"
   {
    elasticsearch {
      hosts => ["http://localhost:9200"]
      index => "kit-client-%{+YYYY.MM.dd}"
    }
  }

}

訪問 http://localhost:5601 我們就可以通過 kibana 檢視日誌了

  • 檢視我們建立的檔案

  • 建立檢視

  • 檢視 kit-client 日誌

  • 檢視 kit-server 日誌

結語

  • 加入日誌分析管理 (ELK + Filebeat),我們可以更好的監控日誌,清洗資料等方便我們處理和定位問題
  • 歡迎新增 QQ 一起討論

完整程式碼地址

聯絡 QQ: 3355168235

更多原創文章乾貨分享,請關注公眾號
  • go-kit 微服務 日誌分析管理 (ELK + Filebeat)
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章