ELK實踐

總體架構:
image.png
邏輯架構:
image.png數據庫

一個系統(project)包含多個服務(service),一個服務有多個副本,elk系統須要將不一樣系統的日誌統一歸集,按project-service-date歸集到index便於查看系統日誌,避免尋找系統全部副本日誌的繁瑣。
Filebeat定義所採集的系統、服務及其日誌地址,發送到project-service的topic。Logstash訂閱kafka以該project開頭全部的topic,通過統一解析後添加日期信息,發往project-service-date的index中。
若是須要採集其餘系統日誌,更改filebeat的project,service及日誌地址,並在logstash添加新的數據源(project-*)便可。json

filebeat:採集日誌發往kafka架構

  • input:分佈式

    • 配置日誌地址,監聽*All.log文件,不採集error,避免日誌重複採集
    • 定義project和service
    • 配置換行,若是非日期開頭,則合併至下一行,便於採集堆棧報錯信息
  • Output:spa

    • kafka:topic爲projectservice
  • 部署:線程

    • 把配置打進鏡像,在swarm集羣中以global模式部署,
    • Docker-compose中把監聽的日誌文件映射進容器

Logstash:解析數據發往es日誌

  • input:kafka部署

    • group_id:分佈式環境下group_id應該相同,可橫向擴展
    • topic_pattern,經過正則處理同一project的全部topic
  • filter:kafka

    • 通過mutate,json,grok
    • 一條日誌中包含:日誌時間,線程號,日誌級別,日誌信息。
    • 把日誌時間裏的日期解析出來,作爲index裏的date,插入es。
  • output:input

    • 可根據不一樣的條件發送至不一樣的數據庫
相關文章
相關標籤/搜索