Docker筆記02-日誌平臺ELK搭建

OS: Centos7html

準備工做:web

虛擬機中安裝Centos, 搭建Docker環境docker

ELK簡介: 略json

文檔地址 https://elk-docker.readthedocs.io/ vim

須要注意的是在Beats套件加入ELK Stack後,新的稱呼是 Elastic Stack , 本次實踐的是 filebeat + elk 網絡

因爲elk鏡像很大7.0.1版本大約1.8G 開始前建議將鏡像源設置成國內地址 如阿里鏡像庫,網易鏡像庫等app

阿里鏡像源設置可參考 http://www.javashuo.com/article/p-bzkqktuw-hy.html/elasticsearch

1.下載鏡像post

docker pull sebp/elk

2.運行鏡像性能

docker run -p  5601:5601 -p 9200:9200 -p 5044:5044  -v /usr/dockerfile:/data -it -d --name elk sebp/elk
  • 5601 (Kibana web interface).
  • 9200 (Elasticsearch JSON interface).
  • 5044 (Logstash Beats interface, receives logs from Beats such as Filebeat – see the Forwarding logs with Filebeat section).

 

  本機elk鏡像運行有點慢,查看運行日誌

  docker logs elk   

3. 配置logstash文件  能夠不用配置 因爲filebeat比logstash有更好的性能基本是用filebeat蒐集日誌後直接發給elasticsearch來分析存儲

  若是須要處理日誌能夠filebeat收集日誌發給logstash,再由logstash整理後給elasticsearch

vim  /usr/dockerfile/config/logstash.yml

input 數據來源是filebeat 端口是5044 禁用ssl
output 輸出是elasticsearch 配置 elasticsearch 地址 和索引

input {
  beats {
    port => 5044
    ssl => false
    codec => "json"
  }
}

output {
  elasticsearch {
    hosts => ["127.0.0.1:9200"]
    index => "filebeat-%{+YYYY.MM.dd}"
  }
}

 

4.查看elk是否成功啓動

host 192.168.95.131 是本地虛擬機的ip 

http://192.168.95.131:9200/_search?pretty 

http://192.168.95.131:5601/

能正常打開頁面表示成功了

5.安裝filebeat 

   能夠根據Kibana頁面提示安裝filebeat

   進入Kibana Home頁後   選擇 Add log data  =>  Logstash logs 

   

根據對應主機系統選擇不一樣的安裝方式

6.配置filebeat.yml

   cd /etc/filebeat 進入配置文件路徑

   ls fields.yml  filebeat.reference.yml  filebeat.yml  modules.d 

   須要配置的就是filebeat.yml , filebeat.reference.yml 是完整的配置項   

filebeat.inputs:
- type: log
  enabled: true        # 啓用 #
  paths:
    - /data/logs/*.log   # 掃描的文件logs目錄下全部.log後綴的文件 #
    - /data/logs/*/*.txt  # 掃描logs目錄下文件夾下的.txt後綴的文件#
  fields:                  # 標籤 表示 name = host value = 192.168.95.130 logstash中 獲取方式 fields.host #
    host: "192.168.95.130"

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml

  reload.enabled: true

setup.template.settings:
  index.number_of_shards: 1
  _source.enabled: true

output.elasticsearch:
  hosts: ["192.168.95.131:9200"]  #elasticsearch 地址#


processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - drop_fields:
      fields: ["cpu.user","cpu.system","host.os.family"]  # 過濾的字段 # 

logging.to_files: true   # filebeat 運行日誌 保存到 /var/log/filebeat 路徑下 #
logging.files:
  path: /var/log/filebeat

 

7.filebeat 中止/啓動/狀態查看命令

sudo service filebeat stop
sudo service filebeat start
sudo service filebeat status

啓動filebeat後需查看status來確認是否成功啓動,一般失敗的緣由是filebeat.yml文件配置有誤

成功狀態以下 :

 

8.驗證elk平臺是否正常

  登錄Kibanna > Management > Kinbana > Index Patterns  根據提示建立索引

 

 點擊 Discover 選擇索引 filebeat-* 或者 logstash-*  點擊刷新 查看日誌

 

 或者點擊Logs 菜單 查看全部日誌 能夠點擊 Stream live 實時查看日誌

 

遇到的坑:

1.啓動elk失敗,內存不足

https://www.cnblogs.com/yidiandhappy/p/7714489.html

  

2.filebeat 啓動時提示成功了 可是收集不到日誌,使用 sudo service filebeat status 查看啓動狀態 發現是失敗的,後來驗證是filebeat.yml配置錯誤

elk基礎功能搭建完成

其餘功能還在探索中....

參考

https://www.imooc.com/article/70996

 

在實踐Filebeat發送日誌給Logstash的過程當中一直有些問題,最終發現是logstash配置文件有誤,真確的路徑是進入容器後的/etc/logstash/conf.d/02-beats-input.conf
參考 https://juejin.im/post/5ba4c8ef6fb9a05d082a1f53

在收集filebeat本身的運行日誌時發現一直沒產生?! 解決方案是配置filebeat.yml
    查看filebeat運行狀態
# sudo service filebeat status

    

而後 # sudo filebeat run

這條命令是阻塞式的,而後新開窗口進入日誌目錄進看到日誌

  

下一篇 Docker網絡模式

相關文章
相關標籤/搜索