ELK初探

java06051515發表於2020-01-06

需求背景:

業務發展越來越大,伺服器越來越多,各種訪問日誌,應用日誌,錯誤日誌也越來越多,開發人員排查問題,需要上伺服器查,不方便,運營人員需要一些資料,也需要運維人員上伺服器分子日誌。

Elasticsearch 是個開源分散式搜尋引擎,它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制, restful 風格介面,多資料來源,自動搜尋負載等。

Logstash 是一個完全開源的工具,他可以對你的日誌進行收集、分析,並將其儲存供以後使用(如,搜尋)。

kibana 也是一個開源和免費的工具,他 Kibana 可以為 Logstash 和 Elastic Search 提供的日誌分析友好的 Web 介面,可以幫助您彙總、分析和搜尋重要資料日誌。

ELK初探ELK初探


一、準備工作

三臺伺服器環境:

192.168.153.13 (主節點)cnetos7

192.168.153.14 (資料節點)centos7

192.168.153.15 (資料節點)centos7

角色劃分:

3臺全部安裝elasticsearch

主節點上安裝kibana

其中一個(192.168.153.15 )資料節點上安裝logstash

二、部署工作:

1、三臺機器上都安裝jdk

yum install -y java-1.8.0-openjdk

2、安裝elasticsearch

下載6.3版本的

在一臺機器上執行

wget artifacts.elastic.co/downloads/e…

用scp同步到另外兩臺機器上

然後分別在三臺機器上執行:

rpm -ivh elasticsearch-6.3.0.rpm

3、配置es

在主節點上配置如下資訊:

vim /etc/elasticsearch/elasticsearch.yml

cluster.name: test

node.name: test-01

node.master: true

node.data: false

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

network.host: 192.168.153.13

http.port: 9200

discovery.zen.ping.unicast.hosts: ["192.168.153.13","192.168.153.14", "192.168.153.15"]

配置完儲存,分別拷貝到其他兩個節點上

在一個從節點:

vim /etc/elasticsearch/elasticsearch.yml #修改以下4行資料

node.name: test-14

node.master: false

node.data: true

network.host: 192.168.153.14

在另一個從節點也是同樣的修改(注意ip和node.name不一樣)

4、啟動es

順序:主,從,從

systemctl start elasticsearch

#curl '192.168.153.13:9200/_cluster/health?pretty'

檢視叢集節點有沒有問題

ELK初探ELK初探


5、安裝kibana(主機器上)

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.0-x86_64.rpm

rpm -ivh kibana-6.3.0-x86_64.rpm

vim /etc/kibana/kibana.yml #配置kibana

server.port: 5601

server.host: 192.168.153.13

elasticsearch.url: "http://192.168.153.13:9200"

啟動:

systemctl start kibana

檢視程式,埠,檢查服務是否啟動起來

瀏覽器訪問:192.168.153.13:5601,可以訪問到說明成功了

6、安裝logstash

在192.168.153.15機器上安裝

wget artifacts.elastic.co/downloads/l…

rpm -ivh logstash-6.3.0.rpm

配置logstash

vim /etc/logstash/conf.d/syslog.conf #以收集系統日誌為例

input{

syslog{

type => "syslog-syslog"

port => 10514

}

}

output{

stdout{

codec => rubydebug

}

}

檢查配置檔案是否有錯:

cd /usr/share/logstash/bin

./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.te

st_and_exit

顯示Configuration OK,說明可以啟動了

注:啟動之前要做一件事,檢查10514埠是否開啟,沒有開啟,那麼配置一下

vim /etc/rsyslog.conf

在#### RULES #### 下面新增一行

*.*@@192.168.153.15:10514

啟動:

./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf

注:此處一個小實驗

執行了./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf ,終端頁面不會退出,在新開啟一個終端頁面,執行systemctl restart rsyslog,然後反過去看之前的終端頁面,會出現日誌資訊(圖略)

三、配置logstash收集資訊展示在kibana上

1、配置並啟動logstash

vim /etc/logstash/conf.d/syslog.conf

input{

syslog{

type => "syslog-syslog"

port => 10514

}

}

output{

elasticsearch{

hosts => ["192.168.153.13:9200"]

index => "system-syslog-%{+YYYY.MM}"

}

}

檢查配置:

/usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.te

st_and_exit

為對logstash的日誌和資料目錄授權:

chown -R logstash /var/lib/logstash/

chown -R logstash /log/lib/logstash/

啟動:

systemctl restart logstash

稍等檢視埠9600是否啟動起來

2、kibana上看日誌

配置logstash監聽192.168.153.15這個ip

vim /etc/logstash/logstash.yml

http.host: "192.168.153.15"

systemctl restart logstash

web頁面開啟kibana並配置索引;

索引可以執行:curl '192.168.153.13:9200/_cat/indices?v' 來獲取

ELK初探ELK初探


然後下一步,create;

回到首頁discover,可以看到

ELK初探ELK初探


3、實驗:

終端視窗關閉192.168.153.15這個頁面,再重新連線,會看到/var/log/messages下會生成新的日誌;

重新整理kibana頁面,可以看到新生成的日誌