天天看點

ELK日志分析系統-ELK搭建篇

1、介紹

ELK是Elasticsearch、Logstash、Kibana的簡稱,這三者是核心套件,但并非全部。
Elasticsearch是實時全文搜尋和分析引擎,提供搜集、分析、存儲資料三大功能;是一套開放REST和JAVA API等結構提供高效搜尋功能,可擴充的分布式系統。它建構于Apache Lucene搜尋引擎庫之上。
Logstash是一個用來搜集、分析、過濾日志的工具。它支援幾乎任何類型的日志,包括系統日志、錯誤日志和自定義應用程式日志。它可以從許多來源接收日志,這些來源包括 syslog、消息傳遞(例如 RabbitMQ)和JMX,它能夠以多種方式輸出資料,包括電子郵件、websockets和Elasticsearch。
Kibana是一個基于Web的圖形界面,用于搜尋、分析和可視化存儲在 Elasticsearch名額中的日志資料。它利用Elasticsearch的REST接口來檢索資料,不僅允許使用者建立他們自己的資料的定制儀表闆視圖,還允許他們以特殊的方式查詢和過濾資料。
           

2、整體架構

在ELK搭建片中,先給129上搭建es,logstash,kibana單節點,然後通過在logstash服務中添加配置進而擷取129伺服器中的/var/log/messages,kafka,zk的日志,整理架構如圖:

ELK日志分析系統-ELK搭建篇

3、環境

1)CentOS 7.4 兩台

192.168.171.129    安裝:elasticsearch、logstash、Kibana、Nginx、Http、Redis
192.168.171.139    安裝:logstash
           

2)安裝java

參考java環境(jdk1.8)安裝-linux&windows

3)下載下傳軟體

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.16.tar.gz
https://artifacts.elastic.co/downloads/logstash/logstash-5.6.16.tar.gz
https://artifacts.elastic.co/downloads/kibana/kibana-5.6.16-linux-x86_64.tar.gz
           

4、安裝es

1)解壓

cd /root/elk/
tar -xf elasticsearch-5.6.16.tar.gz -C /u01/isi/application/
           

2)修改elasticsearch的配置檔案

cd /u01/isi/application/elasticsearch-5.6.16/config
vim config/elasticsearch.yml
cluster.name: elk           #配置并設定叢集名稱
node.name: 192.168.171.129  #配置并設定節點名稱
path.data: /u01/isi/application/elasticsearch-5.6.16/data  #修改data存放的路徑
path.logs: /u01/isi/application/elasticsearch-5.6.16/logs  #修改logs日志的路徑
#bootstrap.memory_lock: true  #配置記憶體使用用交換分區(不建議使用)
network.host: 0.0.0.0         #監聽的網絡位址
http.port: 9200               #開啟監聽的端口
#下面兩行配置是增加新的參數,這樣head插件可以通路es (5.x版本,如果沒有可以自己手動加)
http.cors.enabled: true
http.cors.allow-origin: "*"
           

3)建立es 資料的存放目錄,調整目錄的屬主屬組

mkdir -p /u01/isi/application/elasticsearch-5.6.16/{data,logs} #自定義用于存放data資料的目錄
chown -R isi:isi /u01/isi/application/elasticsearch-5.6.16/#修改elasticsearch的日志屬主屬組
           

4)啟動elasticsearch服務

su isi
cd /u01/isi/application/elasticsearch-5.6.16/
nohup ./bin/elasticsearch &
有可能服務起不來,原因是本測試機器的記憶體不夠,可以修改es啟動是加載的記憶體參數
修改參數:
vim /etc/elasticsearch/jvm.options
-Xms512m
-Xmx512m
再次啟動即可
           
ELK日志分析系統-ELK搭建篇

5)注意事項

1> 需要修改幾個參數,不然啟動會報錯
vim /etc/security/limits.conf
在末尾追加以下内容(elk為啟動使用者,當然也可以指定為*)
isi soft nofile 65536
isi hard nofile 65536
isi soft nproc 2048
isi hard nproc 2048
isi soft memlock unlimited
isi hard memlock unlimited
           
ELK日志分析系統-ELK搭建篇
2> 再修改一個參數(非必要)
vim /etc/security/limits.d/90-nproc.conf
将裡面的1024改為2048(ES最少要求為2048)
*          soft    nproc     2048
           
3> 另外還需注意一個問題
[2017-06-14T19:19:01,641][INFO ][o.e.b.BootstrapChecks    ] [elk-1] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
[2017-06-14T19:19:01,658][ERROR][o.e.b.Bootstrap          ] [elk-1] node validation exception
[1] bootstrap checks failed
[1]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk  
           

解決:修改配置檔案,在配置檔案添加一項參數(目前還沒明白此參數的作用)

vim /etc/elasticsearch/elasticsearch.yml

bootstrap.system_call_filter: false

重新啟動服務即可

cd /u01/isi/application/elasticsearch-5.6.16/
nohup ./bin/elasticsearch &
           
ELK日志分析系統-ELK搭建篇

6)安裝elasticsearch-head插件

安裝docker鏡像或者通過github下載下傳elasticsearch-head項目都是可以的,1或者2兩種方式選擇一種安裝使用即可

1> 使用docker的內建好的elasticsearch-head
docker run -p 9100:9100 mobz/elasticsearch-head:5
           

docker容器下載下傳成功并啟動以後,運作浏覽器打開http://localhost:9100/

2> 使用git安裝elasticsearch-head(需要node,自行安裝即可或參考指導書)
yum install -y git
cd /u01/isi/application/elasticsearch-5.6.16
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
netstat -antp |grep 9100   #head預設是9100,檢查端口是否起來
http://IP:9100/            #浏覽器通路測試是否正常
           
ELK日志分析系統-ELK搭建篇

5、安裝LogStash

1)解壓

cd /root/elk/

tar -xf logstash-5.6.16.tar.gz -C /u01/isi/application/

2)權限調整

chown -R isi:isi /u01/isi/application/logstash-5.6.16/

3)logstash配置檔案的使用

1> file插件的使用
cd /u01/isi/application/logstash-5.6.16/
vim config/elk.conf
添加如下配置
    input {
        file {
            path => "/var/log/messages"
            type => "system"
            start_position => "beginning"
            }
    }
    output {    
             elasticsearch {
                    hosts => ["192.168.171.129:9200"]
                    index => "system-%{+YYYY.MM.dd}"
                }
    }
           
啟動服務
su isi
因為isi使用者沒有權限讀取/var/log/messages,是以可以建立軟連接配接,改變軟連接配接的權限,進而達到擷取系統日志
ln -s  /var/log/messages  /u01/isi/messages
           
ELK日志分析系統-ELK搭建篇
chown isi:isi /u01/isi/messages
再次啟動即可
./logstash -f ../config/elk.conf 
           
ELK日志分析系統-ELK搭建篇
ELK日志分析系統-ELK搭建篇
2> 配置安全日志的并且把日志的索引按類型做存放,繼續編輯elk.conf檔案
vim /etc/logstash/conf.d/elk.conf
input {
    file {
        path => "/u01/isi/messages"
        type => "system"
        start_position => "beginning"
    }
    file {
        path => "/var/log/secure"
        type => "secure"
        start_position => "beginning"
}
file {
        path => "/u01/isi/application/kafka_2.11/logs/server.log"
        type => "kafka"
        start_position => "beginning"
}
file {
        path => "/u01/isi/application/zookeeper-3.4.10/zookeeper.out"
        type => "zookeeper"
        start_position => "beginning"
}

}
output {
    if [type] == "system" {
        elasticsearch {
            hosts => ["192.168.171.129:9200"]
            index => "system-%{+YYYY.MM.dd}"
        }
    }
    if [type] == "secure" {
        elasticsearch {
            hosts => ["192.168.171.129:9200"]
            index => "secure-%{+YYYY.MM.dd}"
        }
}
if [type] == "kafka" {
        elasticsearch {
            hosts => ["192.168.171.129:9200"]
            index => "kafka-%{+YYYY.MM.dd}"
        }
    }
if [type] == "zookeeper" {
        elasticsearch {
            hosts => ["192.168.171.129:9200"]
            index => "secure-%{+YYYY.MM.dd}"
        }
    }
}
           
啟動服務
ln -s /var/log/secure /u01/isi/secure
chown isi:isi /u01/isi/secure
./logstash -f ../config/elk.conf
           
ELK日志分析系統-ELK搭建篇
ELK日志分析系統-ELK搭建篇

6、安裝Kibana

1)解壓

cd /root/elk/
tar -xf kibana-5.6.16-linux-x86_64.tar.gz -C /u01/isi/application/
           

2)權限調整

chown -R isi:isi /u01/isi/application/kibana-5.6.16-linux-x86_64
           

3)配置檔案的修改

cd /u01/isi/application/kibana-5.6.16-linux-x86_64
vim config/kibana.yml
修改配置檔案如下,開啟以下的配置
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.171.129:9200"
kibana.index: ".kibana" 
           

4)啟動服務

su isi
cd /u01/isi/application/kibana-5.6.16-linux-x86_64
./bin/kibana
           
ELK日志分析系統-ELK搭建篇

5)建立索引

ELK日志分析系統-ELK搭建篇
ELK日志分析系統-ELK搭建篇
ELK日志分析系統-ELK搭建篇
ELK日志分析系統-ELK搭建篇

繼續閱讀