手把手教你如何搭建 ELK 日誌收集系統

若是以爲文章有用或寫得好,還請在左邊點個贊哦!html

本文已收錄到我的博客:geekvic.top ,歡迎來撩!前端

ELK簡介

你還在爲線上排查日誌找不到節點服務器而犯愁嗎?今天手把手教你們如何搭建一套日誌收集系統,用來代替傳統的人工登陸服務器查看後臺服務日誌的方式。java

在傳統項目中,若是在生產環境中,有多臺不一樣的服務器集羣,若是生產環境須要經過日誌定位項目的Bug的話,須要在每臺節點上使用傳統的命令方式查詢,這樣效率很是低下。 所以咱們須要集中化的管理日誌,ELK則應運而生。ELK=ElasticSeach+Logstash+Kibana,日誌收集原理以下所示。node

  1. 每臺服務器集羣節點安裝Logstash日誌收集系統插件linux

  2. 每臺服務器節點將日誌輸入到Logstash中spring

  3. Logstash將該日誌格式化爲json格式,根據天天建立不一樣的索引,輸出到ElasticSearch中chrome

  4. 瀏覽器使用安裝Kibana查詢日誌信息 json

elk-.png

Elastic Search

簡介

ElasticSearch是一個分佈式搜索服務,提供的是一組Restful API,底層基於Lucene,採用多shard(分片)的方式保證數據安全,而且提供自動resharding的功能。是目前全文搜索引擎的首選,能夠快速的存儲、搜索和分析海量數據。vim

安裝

  1. 官網下載最新版本,地址是:www.elastic.co/cn/download…瀏覽器

  2. 解壓:# tar zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz

  3. 命令:#cd elasticsearch-7.4.2,配置config裏的elasticsearch.yml文件,配置以下。

cluster.name: es-application
 node.name: es-node-1
 network.host: 0.0.0.0
 http.port: 9200
 discovery.seed_hosts: ["192.168.1.169"]
 cluster.initial_master_nodes: ["es-node-1"]
 path.data: /var/data/es
 path.logs: /var/log/es
複製代碼

常見問題

can not run elasticsearch as root

解決思路:爲了安全不容許使用root用戶啓動,須要新建一個es的帳戶,以下所示。

# adduser es
# passwd es
# chown -R es elasticsearch-7.4.2 
# su elasticsearch
啓動ES:
# ./bin/elasticsearch
複製代碼

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解決思路:切換到root用戶修改# vim /etc/security/limits.conf,在最後面追加下面內容,其中es 是啓動ES的用戶,不是root。

es hard nofile 65536
es soft nofile 65536
複製代碼

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解決思路:切換到root用戶修改配置sysctl.conf

#vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
並執行命令:
sysctl -p
複製代碼

啓動

後臺啓動:./elasticsearch -d
中止命令:./elasticsearch -stop
複製代碼

驗證

訪問 ip:9200,成功顯示以下json信息

es.png

ES Head

推薦安裝chrome插件,也能夠下載安裝包進行安裝。

Logstash

簡介

Logstash 是一個徹底開源的工具,它能夠對你的日誌進行收集、過濾、分析,支持大量的數據獲取方法,並將其存儲供之後使用(如搜索)。

安裝與配置

  • 解壓logstash-7.4.2,修改logstash-7.4.2/config的logstash.conf文件;
  • logstash.conf文件配置以下:
input {
tcp {
mode => "server"
host => "192.168.1.169"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "192.168.1.169:9200"
index => "springboot-logstash-%{+YYYY.MM.dd}"
}
}
複製代碼
  • 執行命令
# ../bin/logstash -f logstash.conf
複製代碼

Spring boot集成Logstash

pom文件裏引入jar包

<!--logstash-->
<dependency>
   <groupId>net.logstash.logback</groupId>
   <artifactId>logstash-logback-encoder</artifactId>
   <version>6.2</version>
</dependency>
複製代碼

修改logback-spring.xml

<!--logstash地址-->
<springProperty scope="context" name="LOGSTASH_ADDRESS" source="logstash.address"/>
<!--輸出到logstash的appender-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--能夠訪問的logstash日誌收集端口-->
<destination>${LOGSTASH_ADDRESS}</destination>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"app": "java-study",
"level": "%-5level",
"thread": "%thread",
"logger": "%logger{50} %M %L ",
"message": "%msg"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>


<root level="INFO">
<appender-ref ref="LOGSTASH"/>
</root>
複製代碼

yml添加配置

logstash:
     address: 192.168.1.169:4560
複製代碼

Kibana

簡介

Kibana 是一個基於瀏覽器頁面的Elasticsearch前端展現工具,也是一個開源和免費的工具,Kibana能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌。

安裝與配置

  • 解壓kibana-7.4.2-linux-x86_64.tar.gz,並修改配置文件kibana.yml
  • 執行命令
# ./kibana --allow-root
複製代碼
  • 配置日期格式

dateformat.png

  • create index pattern
  • 保存自定義篩選字段,供後續篩選

kibana.png

左手敲鍵盤,右手投籃,一個愛好籃球的碼農~~~

同步我的博客:geekvic.top/post/5c1c8f…

聲明:本博客全部文章除特別聲明外,均採用 BY-NC-SA 許可協議。轉載請註明出處!

相關文章
相關標籤/搜索