Linux 搭建ELK日志收集系統


在搭建ELK之前,首先要安裝Redis和JDK,安裝Redis請參考上一篇文章

首先安裝JDK及配置環境變量

1.解壓安裝包到/usr/local/java目錄下
[root@VM_0_9_centos ~]# tar xvf /ryt/soft/jdk-11.0.3_linux-x64_bin.tar.gz -C /usr/local/java/
2.配置環境變量(在尾部追加內容如下)
[root@VM_0_9_centos ~]# vim /etc/profile

export JAVA_HOME=/usr/local/java/jdk-11.0.3
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

  3.重啟配置文件,使其立即生效

  [root@VM_0_9_centos ~]# source /etc/profile

 

ELK搭建詳細過程

安裝程序:filebeat,elasticsearch,logstash,kibana

 1.安裝Elasticsearch

1)解壓安裝包到路徑/usr/local/elk下
[root@VM_0_9_centos ~]# tar -zxvf /ryt/soft/elk/elasticsearch-7.2.0-linux-x86_64.tar.gz -C /usr/local/elk/
2.創建用戶並賦權

 [root@VM_0_9_centos elk]# useradd es_user

 [root@VM_0_9_centos elk]# groupadd esgroup

[root@VM_0_9_centos elk]# chown -R es_user:esgroup /usr/local/elk/elasticsearch-7.2.0/
3)修改ES配置文件:
[root@VM_0_9_centos elk]# vim /usr/local/elk/elasticsearch-7.2.0/config/elasticsearch.yml

#這里指定的是集群名稱,需要修改為對應的,開啟了自發現功能后,ES會按照此集群名稱進行集群發現
cluster.name: elk-application
node.name: node-1
#目錄需要手動創建 path.data: /data/elasticsearch/data path.logs: /data/elasticsearch/logs #ES監聽地址 network.host: 0.0.0.0 #允許外網個訪問 http.port: 9200

  discovery.seed_hosts: ["172.17.0.9"] #內網ip
  cluster.initial_master_nodes: ["node-1"]

4)修改系統參數
#添加參數
m.max_map_count=655360
注:ES啟動的時候回占用特別大的資源所以需要修改下系統參數,若不修改資源啟動會異常退出
[root@VM_0_9_centos elk]# vim /etc/sysctl.conf
5)重新載入配置
[root@VM_0_9_centos elk]# sysctl -p /etc/sysctl.conf
6)修改資源參數
[root@VM_0_9_centos elk]# vim /etc/security/limits.conf
修改內容
* soft nofile 65536
* hard nofile 131072
* soft nproc 65536
* hard nproc 131072

7)設置用戶資源參數
[root@VM_0_9_centos elk]# vim /etc/security/limits.d/20-nproc.conf
#添加 
es_user    soft    nproc     65536

8)創建數據和日志目錄並修改目錄權限
[root@VM_0_9_centos elk]# mkdir -pv /usr/local/elk/{data,logs}
[root@VM_0_9_centos elk]# chown -R es_user:esgroup /data/elasticsearch/
[root@VM_0_9_centos elk]# chown -R es_user:esgroup /usr/local/elk/elasticsearch-7.2.0

9)切換用戶並后台啟動ES
[root@VM_0_9_centos elk]# su esuser
[es_user@VM_0_9_centos elk]$ /usr/local/elk/elasticsearch-7.2.0/bin/elasticsearch &

 2.安裝logstash

1.解壓安裝包並移到/usr/local/elk目錄下
[root@VM_0_9_centos filebeat-7.2.0]# tar -zvxf /ryt/soft/elk/logstash-7.2.0.tar.gz -C /usr/local/elk/
2.創建軟連接
[root@VM_0_9_centos elk]# ln -s /usr/local/elk/logstash-7.2.0 /usr/local/elk/logstash

注:Java HotSpot(TM) 64-Bit Server VM warning: 
INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed;
error='Not enough space' (errno=12)
[root@VM_0_9_centos elk]# vim ./elasticsearch-7.2.0/config/jvm.options
3.在/usr/local/elk/logstash/config/下新建文件logstash.config
內容如下:

  input {
    redis {
      data_type => "list" #存儲類型
      type => "redis-input"
      key => "logstash:redis" #key值,后面要與spring boot中key保持一致
      host => "localhost"
      port => 6379
     # threads => 5 #啟動線程數量
    codec => "json"
   }
  }

  output {
    elasticsearch {
      hosts => ["localhost:9200"]
      index => "springboot-elk" #index是定義將過濾后的日志推送到Elasticsearch后存儲的名字
    }
    stdout { codec => rubydebug} #是否在控制台打印
  }

4.載入配置
[root@VM_0_9_centos config]# ../bin/logstash -f logstash-elasticsearch.conf -t

3.安裝filebeat

1)解壓安裝包到路徑/usr/local/elk下
[root@VM_0_9_centos elk]# tar xvf filebeat-7.2.0-linux-x86_64.tar.gz -C /usr/local/elk/

2)修改配置文件,使filebeat獲取的日志進入redis:
注:此處演示獲取spring cloud框架中eureka日志,其他程序日志都可相同方法獲取

  [root@VM_0_9_centos filebeat-7.2.0]# 
  [root@VM_0_9_centos filebeat-7.2.0]# pwd
   /usr/local/elk/filebeat-7.2.0
  [root@VM_0_9_centos filebeat-7.2.0]# vim ./filebeat.yml

 #修改的內容有一家幾個字段 enabled:true paths:程序日志路徑

#output只能有一個
#output.logstash:
# hosts:["服務器IP:5044"]
output.redis:   hosts:127.0.0.1 #redis所在服務器IP   port:6379 #redis端口
3)設置開機啟動
修改配置rc.local,后面追加 /usr/local/elk/filebeat-7.2.0/filebeat > /tmp/filebeat.log 2>&1
[root@VM_0_9_centos filebeat-7.2.0]# vim /etc/rc.local

4)后台啟動filebeat
[root@VM_0_9_centos filebeat-7.2.0]# /usr/local/elk/filebeat-7.2.0/filebeat &

  5)查看啟動,filebeat有沒有監聽端口,主要看日志和進程

  [root@VM_0_9_centos filebeat-7.2.0]# ps -ef | grep filebeat

  [root@VM_0_9_centos filebeat-7.2.0]# tailf logs/filebeat

  

 4.啟動logstash

測試一下logstash不指定配置文件啟動
[root@VM_0_9_centos config]# /usr/local/elk/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'
注:手動輸入 hello world,它也會輸出 hello world

 5.安裝kibana

1)解壓安裝包到路徑/usr/local/elk下
[root@VM_0_9_centos ~]# tar -zxvf /ryt/soft/elk/kibana-7.2.0-linux-x86_64.tar.gz -C /usr/local/elk/

2)編輯kibana配置文件
[root@VM_0_9_centos ~]# vim /usr/local/elk/kibana-7.2.0/config/kibana.yml
   server.port: 5601
   server.host: "0.0.0.0"
   elasticsearch.hosts: ["http://49.234.206.139:9200"]
3)后台啟動kibana
[root@VM_0_9_centos ~]# /usr/local/elk/kibana-7.2.0/bin/kibana --allow-root &

 6.ELK logstash啟動慢解決方案

使用如下命令查詢
[root@VM_0_9_centos ~]# cat /proc/sys/kernel/random/entropy_avail

如果返回值小於1000, 那么就需要安裝haveged包。
[root@VM_0_9_centos ~]# yum -y install haveged
我在安裝了以后, logstash啟動慢的問題解決,在10秒內啟動。

參考鏈接:https://wiki.archlinux.org/index.php/Haveged_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM