ELK 學習筆記 一、學習ELK之前,先了解一下什么是ELK; ELK是由 Elasticsearch、Logstash和Kibana 三部分組件組成。 Elasticsearch 是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。 Logstash 是一個完全開源的工具,它可以對你的日志進行收集、分析,並將其存儲供以后使用 Kibana 是一個開源和免費的工具,它可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數據日志。 Filebeat 是用於單用途數據托運人的平台。它們以輕量級代理的形式安裝,並將來自成百上千台機器的數據發送到 Logstash 或 Elasticsearch,可以替換Logstash的客戶端搜集日志信息,降低Logstash客戶端搜集日志的性能消耗問題。 二、環境安裝 注意安裝時必須保證版本的一致性,避免出現兼容問題(我選擇的是7.1.1),同時采用docker的形式搭建環境; 安裝之前先通過docker創建一個ELK環境的自定義網絡,方便后期通信 docker network create mynetwork 1.安裝ES # 下載鏡像 查看鏡像 docker pull elasticsearch:7.1.1 docker images #docker run 啟動 docker run -d --name es --net mynetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.1.1
# 配置掛載啟動方式
sudo docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e ES_JAVA_OPS="-Xms256m -Xmx256m" \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.1.1
注意:
chmod -R 777 /data/elasticsearch
要有訪問權限
https://segmentfault.com/a/1190000023605284?utm_source=tag-newest
#docker ps查看容器狀態 # 檢測 elasticsearch 是否啟動成功 curl 127.0.0.1:9200
設置配置文件x-pck登陸驗證:
修改elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
xpack.security.enabled: true #這一步是開啟x-pack插件
在bin文件夾下
elasticsearch-setup-passwords interactive #此步為手動設置密碼
然后設置密碼即可
2.安裝Kibana # 下載鏡像 查看鏡像 docker pull kibana:7.1.1 docker images # 運行 Kibana docker run -d --name es_kibana --net mynetwork -p 5601:5601 kibana:7.1.1 # 查看容器啟動狀態 docker ps 修改kibana配置kibana.yml設置連接es的密碼:
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://es:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
修改 hosts 為es的container 名字
3.安裝Logstash # 下載鏡像 查看鏡像 docker pull logstash:7.1.1 docker images docker run -it -d -p 5044:5044 --name logstash --net mynetwork -v {自定義主機掛載目錄}/logstash.yml:/usr/share/logstash/config/logstash.yml -v {自定義主機掛載目錄}/conf.d/:/usr/share/logstash/conf.d/ logstash:7.1.1 #通過docker exec修改配置 docker exec -it es_logstash /bin/bash
#logstash.yml http.host: "0.0.0.0"
找到"/usr/share/logstash/pipeline"的logstash.conf 修改redis輸入源配置: input { redis { host => "ip" port => "6379" db => "0" password => "***" key => "logstash-***" data_type => "list" } } filter { #定義數據的格式 } output { elasticsearch{ hosts=> "http://es:9200" # es文件名不要帶_ index => "logstash-***-%{+yyyy.MM}"
user =>
"elastic"
password =>
"123456"
} } 到此ELK環境基本搭建完畢(采用的redis輸入源代替filebeat) 三、項目使用 引入pom依賴 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> <!-- <classifier>jr</classifier>--> </dependency> <!-- ELK日志系統需要的包 --> <!-- ELK日志系統需要的包 里面包含redis.clients--> <dependency> <groupId>com.cwbase</groupId> <artifactId>logback-redis-appender</artifactId> <version>1.1.5</version> </dependency> 添加logback-spring.xml日志配置: <appender name="LOG_STASH" class="com.cwbase.logback.RedisAppender"> <source>***</source> <type>online</type> <host>127.0.0.1</host> <port>6379</port> <password>***</password> <key>logstash-***</key> <tags>online</tags> <mdc>true</mdc> <location>true</location> <callerStackIndex>0</callerStackIndex> </appender>