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的日志,整理架構如圖:
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
再次啟動即可
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
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 &
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/ #浏覽器通路測試是否正常
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
chown isi:isi /u01/isi/messages
再次啟動即可
./logstash -f ../config/elk.conf
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
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