ELK日志實時分析平臺搭建和使用

概述

ELK日志分析平臺是指Elasticsearch、Logstash 和 Kibana 三個項目的集合,后面又增加了Filebeat數(shù)據(jù)采集器。

  • Elasticsearch是一個數(shù)據(jù)搜索分析引擎。
  • Logstash 是日志數(shù)據(jù)處理的管理和日志采集器,能從各個客戶端/業(yè)務(wù)系統(tǒng)采集,轉(zhuǎn)換,發(fā)送到Elasticsearch。
  • Kibana 則是數(shù)據(jù)圖形/報表的可視化展示。
  • Filebeat 是比Logstash更輕巧的數(shù)據(jù)采集器

一般而言,日志數(shù)據(jù)流采用一下兩種方案

  • Filebeat負責數(shù)據(jù)采集日志,然后轉(zhuǎn)發(fā)到Logstash進行格式處理并發(fā)送到Elasticsearch進行存儲,然后管理員通過Kibana實現(xiàn)數(shù)據(jù)可視化。
  • Filebeat負責數(shù)據(jù)采集日志,然后進行格式處理并發(fā)送到Elasticsearch進行存儲,然后管理員通過Kibana實現(xiàn)數(shù)據(jù)可視化。


    image.png

本篇文章將對方案二的搭建以及使用進行講解。

目的

  • 項目線上出現(xiàn)錯誤,快速定位問題。
  • 項目節(jié)點過多,日志太分散,ELK可以統(tǒng)一管理日志。
  • 方便在大量日志文件中精準搜索關(guān)鍵字
  • 解決開發(fā)人員無服務(wù)器權(quán)限需要查看日志的痛點

安裝

git clone https://github.com/deviantony/docker-elk.git  # 我下載的是8.6.2版本
docker-compose up #啟動容器 只會啟動 elasticsearch、kibana、logstash

默認用戶:elastic
默認密碼:changeme
kibana UI : http://localhost:5601
elasticsearch: http://localhost:9200/

詳情可以查看.env 文件

image.png

設(shè)置用戶名密碼

輸入默認賬號密碼登錄kibana


image.png

步驟一


image.png

步驟二


image.png
image.png

漢化kibana

在 /kibana/config/kibana.yml 文件最后添加:i18n.locale: "zh-CN"


image.png

配置filebeat 通過filebeat采集日志輸出到elasticsearch

/extensions/filebeat/config/filebeat.yml,
注意里面的賬號密碼需要在kibana預(yù)先設(shè)置好

setup.kibana:              
  #kibanaIP地址
  host: "http://kibana:5601"
  username: "filebeat_internal"
  password: ${FILEBEAT_INTERNAL_PASSWORD}

filebeat.inputs:
- type: log
  enabled: true
  paths:
  - /usr/share/filebeat/logs/*.log # 這個路徑是需要收集的日志路徑,是docker容器中的路徑
  fields:
    type: "testing" # 日志標簽,區(qū)別不同日志,下面建立索引會用到
  fields_under_root: true
  encoding: utf-8 # 指定被監(jiān)控的文件的編碼類型,使用plain和utf-8都是可以處理中文日志的
  multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true # 是否需要對pattern條件轉(zhuǎn)置使用,不翻轉(zhuǎn)設(shè)為true,反轉(zhuǎn)設(shè)置為false。  【建議設(shè)置為true】
  multiline.match: after # 匹配pattern后,與前面(before)還是后面(after)的內(nèi)容合并為一條日志

processors:
- drop_fields:
# 去除多余字段
    fields: ["agent.type","agent.name", "agent.version","log.file.path","log.offset","input.type","ecs.version","host.name","agent.ephemeral_id","agent.hostname","agent.id","_id","_index","_score","_suricata.eve.timestamp","agent.hostname","cloud. availability_zone","host.containerized","host.os.kernel","host.os.name","host.os.version"]

output.elasticsearch:
  hosts: [ http://elasticsearch:9200 ]
  indices:
       #索引名稱,一般為  ‘服務(wù)名稱+ip+ --%{+yyyy.MM.dd}’。
    - index: "testing-%{+yyyy.MM.dd}"  
      when.contains:
      #標簽,對應(yīng)日志和索引,和上面對應(yīng)
        type: "testing"
  username: filebeat_internal
  password: ${FILEBEAT_INTERNAL_PASSWORD}
image.png

映射日志目錄文件

建立/logs目錄,并寫入一寫測試的日志文件
/extensions/filebeat/filebeat-compose.yml

image.png

啟動容器

# 同時啟動elasticsearch、kibana、logstash、filebeat
docker-compose -f docker-compose.yml -f extensions/filebeat/filebeat-compose.yml up

配置工作空間

步驟一創(chuàng)建工作區(qū)


image.png

切換工作區(qū)


image.png

步驟二
image.png

步驟三


image.png

步驟四


image.png

步驟五


image.png

步驟六


image.png

image.png

elasticsearch kibana 提示Your trial license is expired 問題解決

image.png

image.png

選擇Basic許可證

給索引設(shè)置生命周期

1.創(chuàng)建索引生命周期策略,超過30天自動刪除索引


image.png

image.png

image.png

image.png

2.設(shè)置索引模版


image.png

image.png

image.png
image.png

image.png

image.png

image.png
PUT _ilm/policy/log_delete_policy
{
  "policy": {
    "phases": {
      "delete": {
        "min_age": "5m",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

PUT _template/logs_template
{
  "index_patterns": ["testing*"],   
  "settings":{   
    "index.lifecycle.name": "log_delete_policy"
  },
  "mappings":{  
      "properties":{
        "message":{
          "type": "text",
          "fields": {
             "keyword": {
                "type": "keyword",
                "ignore_above": 256
             }
          }
        }
      }
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容