'快速搭建ELK日誌分析平臺'

"
"
快速搭建ELK日誌分析平臺

日誌主要包括系統日誌、應用程序日誌和安全日誌等。系統運維和開發人員可以通過日誌瞭解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解服務器的負荷,性能安全性,從而及時採取措施糾正錯誤。通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。ELK可以將我們的系統日誌、訪問日誌、運行日誌、錯誤日誌等進行統一收集、存儲分析和搜索以及圖形展現。

  • Elasticsearch是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(如,搜索)。
  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。

官方網站:https://www.elastic.co

1. Elasticsearch

Elasticsearch需要至少Java 8。Java的安裝在不同的平臺下是不一樣,這裡提供Linux安裝JAVA的方法。

安裝java環境

1.在Oracle官方下載新版jdk,下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-

2133151.html

2.建議下載安裝.rpm格式後綴的JDK,不需要配置java環境變量,會自動配置,上傳安裝包至服務器安裝jdk。

# rpm -ivh jdk-8u171-linux-x64.rpm

3.檢查JAVA是否安裝成功,顯示如下結果,說明安裝成功。

# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

一旦Java準備就緒,然後我們就可以下載並安裝運行Elasticsearch。我們可以從這個頁面http://www.elastic.co/downloads/elasticsearch獲取所有發行版本的二進制安裝包。每一個版本都對應有zip和tar壓縮包,還有deb和rpm安裝包,還有Windows下用的msi安裝包。

安裝elasticsearch

1.將下載好的rpm安裝包上傳至Linux服務器上,執行命令安裝。

# rpm --install elasticsearch-6.4.0.rpm

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/elasticsearch.repo #編輯最新的elasticsearch.repo文件
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install elasticsearch -y #yum安裝elasticsearch

2.使用命令可查看elasticsearch安裝位置。

# rpm -ql elasticsearch

3.運行elasticsearch。

# systemctl start elasticsearch

4.如果一切正常,Elasticsearch就會在默認的9200端口運行。這時請求9200端口,Elastic 返回一個 JSON 對象,包含當前節點、集群、版本等信息。

# curl localhost:9200
{
"name" : "U895YAk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "m6sBcukAS422XA5cgrwRqA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

配置Elasticsearch

Elasticsearch配置文件是在/etc/elasticsearch下的elasticsearch.yml文件。在編輯之前先停止elasticsearch。

# systemctl stop elasticsearch

主要配置說明,我們grep一下需要做的配置。

# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: idc-elk #設置集群名稱
node.name: idc-elk-node1 #設置節點名稱
path.data: /var/lib/elasticsearch #默認索引存儲位置
path.logs: /var/log/elasticsearch #默認日誌存儲位置
bootstrap.memory_lock: true #鎖定進程物理內存,避免(swapped)來提高性能
network.host: 0.0.0.0 #設置網絡允許任意訪問
http.port: 9200 #打開默認監聽端口

默認情況下,Elasticsearch只允許本機訪問,如果需要遠程訪問,需修改 Elasticsearch的 elasticsearch.yml配置文件,去掉network.host的註釋,將它的值改成0.0.0.0,還需關閉系統防火牆或者放行9200運行端口。

關閉Linux防火牆,並設置開機不啟動。

# systemctl stop firewalld
# systemctl disable firewalld

啟動elasticsearch,並設置開機啟動。

# systemctl start elasticsearch
# systemctl enable elasticsearch

這時我們可以通過瀏覽器訪問輸入http://IP:9200訪問elasticsearch。

"
快速搭建ELK日誌分析平臺

日誌主要包括系統日誌、應用程序日誌和安全日誌等。系統運維和開發人員可以通過日誌瞭解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解服務器的負荷,性能安全性,從而及時採取措施糾正錯誤。通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。ELK可以將我們的系統日誌、訪問日誌、運行日誌、錯誤日誌等進行統一收集、存儲分析和搜索以及圖形展現。

  • Elasticsearch是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(如,搜索)。
  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。

官方網站:https://www.elastic.co

1. Elasticsearch

Elasticsearch需要至少Java 8。Java的安裝在不同的平臺下是不一樣,這裡提供Linux安裝JAVA的方法。

安裝java環境

1.在Oracle官方下載新版jdk,下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-

2133151.html

2.建議下載安裝.rpm格式後綴的JDK,不需要配置java環境變量,會自動配置,上傳安裝包至服務器安裝jdk。

# rpm -ivh jdk-8u171-linux-x64.rpm

3.檢查JAVA是否安裝成功,顯示如下結果,說明安裝成功。

# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

一旦Java準備就緒,然後我們就可以下載並安裝運行Elasticsearch。我們可以從這個頁面http://www.elastic.co/downloads/elasticsearch獲取所有發行版本的二進制安裝包。每一個版本都對應有zip和tar壓縮包,還有deb和rpm安裝包,還有Windows下用的msi安裝包。

安裝elasticsearch

1.將下載好的rpm安裝包上傳至Linux服務器上,執行命令安裝。

# rpm --install elasticsearch-6.4.0.rpm

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/elasticsearch.repo #編輯最新的elasticsearch.repo文件
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install elasticsearch -y #yum安裝elasticsearch

2.使用命令可查看elasticsearch安裝位置。

# rpm -ql elasticsearch

3.運行elasticsearch。

# systemctl start elasticsearch

4.如果一切正常,Elasticsearch就會在默認的9200端口運行。這時請求9200端口,Elastic 返回一個 JSON 對象,包含當前節點、集群、版本等信息。

# curl localhost:9200
{
"name" : "U895YAk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "m6sBcukAS422XA5cgrwRqA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

配置Elasticsearch

Elasticsearch配置文件是在/etc/elasticsearch下的elasticsearch.yml文件。在編輯之前先停止elasticsearch。

# systemctl stop elasticsearch

主要配置說明,我們grep一下需要做的配置。

# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: idc-elk #設置集群名稱
node.name: idc-elk-node1 #設置節點名稱
path.data: /var/lib/elasticsearch #默認索引存儲位置
path.logs: /var/log/elasticsearch #默認日誌存儲位置
bootstrap.memory_lock: true #鎖定進程物理內存,避免(swapped)來提高性能
network.host: 0.0.0.0 #設置網絡允許任意訪問
http.port: 9200 #打開默認監聽端口

默認情況下,Elasticsearch只允許本機訪問,如果需要遠程訪問,需修改 Elasticsearch的 elasticsearch.yml配置文件,去掉network.host的註釋,將它的值改成0.0.0.0,還需關閉系統防火牆或者放行9200運行端口。

關閉Linux防火牆,並設置開機不啟動。

# systemctl stop firewalld
# systemctl disable firewalld

啟動elasticsearch,並設置開機啟動。

# systemctl start elasticsearch
# systemctl enable elasticsearch

這時我們可以通過瀏覽器訪問輸入http://IP:9200訪問elasticsearch。

快速搭建ELK日誌分析平臺

ElasticSearch-Head插件安裝

ElasticSearch-Head 是一個與Elasticsearch集群(Cluster)相交互的Web前臺。

ElasticSearch-Head的主要作用:

  • 它展現ES集群的拓撲結構,並且可以通過它來進行索引(Index)和節點(Node)級別的操作。
  • 它提供一組針對集群的查詢API,並將結果以json和表格形式返回。
  • 它提供一些快捷菜單,用以展現集群的各種狀態。

ElasticSearch-Head github地址:https://github.com/mobz/elasticsearch-head

1.下載ElasticSearch-Head源碼。

# git clone git://github.com/mobz/elasticsearch-head.git

2.安裝ElasticSearch-Head。

# cd /usr/share/elasticsearch/elasticsearch-head
# npm install

3.配置插件,插件啟動前需要先對插件進行一些相關配置。

1修改elasticsearch.yml,增加跨域的配置(需要重啟es才能生效)。啟用CORS,允許訪問的IP地址段,* 為所有IP都可以。

# echo "http.cors.enabled: true" >>/etc/elasticsearch/elasticsearch.yml
# echo "http.cors.allow-origin: \\"*\\"" >>/etc/elasticsearch/elasticsearch.yml
# tail -2 /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

2編輯Gruntfile.js,修改服務器監聽地址,增加hostname屬性將其值設置為*。

# cat /usr/share/elasticsearch/elasticsearch-head/Gruntfile.js | grep "hostname" 
-C 5
},

connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}

3編輯 _site/app.js,修改head連接es的地址。

# sed -i 's#http://localhost:9200#http://172.28.29.211:9200#g' 
/usr/share/elasticsearch/elasticsearch-head/_site/app.js
# cat /usr/share/elasticsearch/elasticsearch-head/_site/app.js | grep “172.28.29.211”
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.28.29.211:9200";

4.後臺方式啟動ElasticSearch-Head插件。

# cd /usr/share/elasticsearch/elasticsearch-head/node_modules/grunt/bin
# nohup ./grunt server & exit

5. 啟動成功後,可在瀏覽器輸入http://IP:9100訪問head插件並與ES進行交互。

"
快速搭建ELK日誌分析平臺

日誌主要包括系統日誌、應用程序日誌和安全日誌等。系統運維和開發人員可以通過日誌瞭解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解服務器的負荷,性能安全性,從而及時採取措施糾正錯誤。通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。ELK可以將我們的系統日誌、訪問日誌、運行日誌、錯誤日誌等進行統一收集、存儲分析和搜索以及圖形展現。

  • Elasticsearch是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(如,搜索)。
  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。

官方網站:https://www.elastic.co

1. Elasticsearch

Elasticsearch需要至少Java 8。Java的安裝在不同的平臺下是不一樣,這裡提供Linux安裝JAVA的方法。

安裝java環境

1.在Oracle官方下載新版jdk,下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-

2133151.html

2.建議下載安裝.rpm格式後綴的JDK,不需要配置java環境變量,會自動配置,上傳安裝包至服務器安裝jdk。

# rpm -ivh jdk-8u171-linux-x64.rpm

3.檢查JAVA是否安裝成功,顯示如下結果,說明安裝成功。

# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

一旦Java準備就緒,然後我們就可以下載並安裝運行Elasticsearch。我們可以從這個頁面http://www.elastic.co/downloads/elasticsearch獲取所有發行版本的二進制安裝包。每一個版本都對應有zip和tar壓縮包,還有deb和rpm安裝包,還有Windows下用的msi安裝包。

安裝elasticsearch

1.將下載好的rpm安裝包上傳至Linux服務器上,執行命令安裝。

# rpm --install elasticsearch-6.4.0.rpm

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/elasticsearch.repo #編輯最新的elasticsearch.repo文件
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install elasticsearch -y #yum安裝elasticsearch

2.使用命令可查看elasticsearch安裝位置。

# rpm -ql elasticsearch

3.運行elasticsearch。

# systemctl start elasticsearch

4.如果一切正常,Elasticsearch就會在默認的9200端口運行。這時請求9200端口,Elastic 返回一個 JSON 對象,包含當前節點、集群、版本等信息。

# curl localhost:9200
{
"name" : "U895YAk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "m6sBcukAS422XA5cgrwRqA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

配置Elasticsearch

Elasticsearch配置文件是在/etc/elasticsearch下的elasticsearch.yml文件。在編輯之前先停止elasticsearch。

# systemctl stop elasticsearch

主要配置說明,我們grep一下需要做的配置。

# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: idc-elk #設置集群名稱
node.name: idc-elk-node1 #設置節點名稱
path.data: /var/lib/elasticsearch #默認索引存儲位置
path.logs: /var/log/elasticsearch #默認日誌存儲位置
bootstrap.memory_lock: true #鎖定進程物理內存,避免(swapped)來提高性能
network.host: 0.0.0.0 #設置網絡允許任意訪問
http.port: 9200 #打開默認監聽端口

默認情況下,Elasticsearch只允許本機訪問,如果需要遠程訪問,需修改 Elasticsearch的 elasticsearch.yml配置文件,去掉network.host的註釋,將它的值改成0.0.0.0,還需關閉系統防火牆或者放行9200運行端口。

關閉Linux防火牆,並設置開機不啟動。

# systemctl stop firewalld
# systemctl disable firewalld

啟動elasticsearch,並設置開機啟動。

# systemctl start elasticsearch
# systemctl enable elasticsearch

這時我們可以通過瀏覽器訪問輸入http://IP:9200訪問elasticsearch。

快速搭建ELK日誌分析平臺

ElasticSearch-Head插件安裝

ElasticSearch-Head 是一個與Elasticsearch集群(Cluster)相交互的Web前臺。

ElasticSearch-Head的主要作用:

  • 它展現ES集群的拓撲結構,並且可以通過它來進行索引(Index)和節點(Node)級別的操作。
  • 它提供一組針對集群的查詢API,並將結果以json和表格形式返回。
  • 它提供一些快捷菜單,用以展現集群的各種狀態。

ElasticSearch-Head github地址:https://github.com/mobz/elasticsearch-head

1.下載ElasticSearch-Head源碼。

# git clone git://github.com/mobz/elasticsearch-head.git

2.安裝ElasticSearch-Head。

# cd /usr/share/elasticsearch/elasticsearch-head
# npm install

3.配置插件,插件啟動前需要先對插件進行一些相關配置。

1修改elasticsearch.yml,增加跨域的配置(需要重啟es才能生效)。啟用CORS,允許訪問的IP地址段,* 為所有IP都可以。

# echo "http.cors.enabled: true" >>/etc/elasticsearch/elasticsearch.yml
# echo "http.cors.allow-origin: \\"*\\"" >>/etc/elasticsearch/elasticsearch.yml
# tail -2 /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

2編輯Gruntfile.js,修改服務器監聽地址,增加hostname屬性將其值設置為*。

# cat /usr/share/elasticsearch/elasticsearch-head/Gruntfile.js | grep "hostname" 
-C 5
},

connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}

3編輯 _site/app.js,修改head連接es的地址。

# sed -i 's#http://localhost:9200#http://172.28.29.211:9200#g' 
/usr/share/elasticsearch/elasticsearch-head/_site/app.js
# cat /usr/share/elasticsearch/elasticsearch-head/_site/app.js | grep “172.28.29.211”
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.28.29.211:9200";

4.後臺方式啟動ElasticSearch-Head插件。

# cd /usr/share/elasticsearch/elasticsearch-head/node_modules/grunt/bin
# nohup ./grunt server & exit

5. 啟動成功後,可在瀏覽器輸入http://IP:9100訪問head插件並與ES進行交互。

快速搭建ELK日誌分析平臺

Elasticsearch集群配置

Elasticsearch多機集群中的節點可以分為master nodes和data nodes,在配置文件中使用Zen發現(Zen discovery)機制來管理不同節點。

Elasticsearch集群中有的節點一般有三種角色:master node、data node和client node。

  1. master node:master節點主要用於元數據(metadata)的處理,比如索引的新增、刪除、分片分配等。
  2. data node:data節點上保存了數據分片。它負責數據相關操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內存和 I/O 資源。
  3. client node:client 節點起到路由請求的作用,實際上可以看做負載均衡器。( 對於沒有很多請求的業務,client node可以不加,master和data足矣)。

1.將idc-elk-node1(172.28.29.211)設為master節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"]
#

2. idc-elk-node2(172.28.29.212)節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml 
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: false #表示該節點不會作為主節點
node.data: true #表示該節點可以存儲數據,false表示只作為搜索
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"] #有多少節點配置多少IP
#

3.重啟elasticsearch,登錄head插件查看集群狀態,可以看到兩臺node,idc-elk-node1為master。

"
快速搭建ELK日誌分析平臺

日誌主要包括系統日誌、應用程序日誌和安全日誌等。系統運維和開發人員可以通過日誌瞭解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解服務器的負荷,性能安全性,從而及時採取措施糾正錯誤。通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。ELK可以將我們的系統日誌、訪問日誌、運行日誌、錯誤日誌等進行統一收集、存儲分析和搜索以及圖形展現。

  • Elasticsearch是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(如,搜索)。
  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。

官方網站:https://www.elastic.co

1. Elasticsearch

Elasticsearch需要至少Java 8。Java的安裝在不同的平臺下是不一樣,這裡提供Linux安裝JAVA的方法。

安裝java環境

1.在Oracle官方下載新版jdk,下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-

2133151.html

2.建議下載安裝.rpm格式後綴的JDK,不需要配置java環境變量,會自動配置,上傳安裝包至服務器安裝jdk。

# rpm -ivh jdk-8u171-linux-x64.rpm

3.檢查JAVA是否安裝成功,顯示如下結果,說明安裝成功。

# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

一旦Java準備就緒,然後我們就可以下載並安裝運行Elasticsearch。我們可以從這個頁面http://www.elastic.co/downloads/elasticsearch獲取所有發行版本的二進制安裝包。每一個版本都對應有zip和tar壓縮包,還有deb和rpm安裝包,還有Windows下用的msi安裝包。

安裝elasticsearch

1.將下載好的rpm安裝包上傳至Linux服務器上,執行命令安裝。

# rpm --install elasticsearch-6.4.0.rpm

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/elasticsearch.repo #編輯最新的elasticsearch.repo文件
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install elasticsearch -y #yum安裝elasticsearch

2.使用命令可查看elasticsearch安裝位置。

# rpm -ql elasticsearch

3.運行elasticsearch。

# systemctl start elasticsearch

4.如果一切正常,Elasticsearch就會在默認的9200端口運行。這時請求9200端口,Elastic 返回一個 JSON 對象,包含當前節點、集群、版本等信息。

# curl localhost:9200
{
"name" : "U895YAk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "m6sBcukAS422XA5cgrwRqA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

配置Elasticsearch

Elasticsearch配置文件是在/etc/elasticsearch下的elasticsearch.yml文件。在編輯之前先停止elasticsearch。

# systemctl stop elasticsearch

主要配置說明,我們grep一下需要做的配置。

# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: idc-elk #設置集群名稱
node.name: idc-elk-node1 #設置節點名稱
path.data: /var/lib/elasticsearch #默認索引存儲位置
path.logs: /var/log/elasticsearch #默認日誌存儲位置
bootstrap.memory_lock: true #鎖定進程物理內存,避免(swapped)來提高性能
network.host: 0.0.0.0 #設置網絡允許任意訪問
http.port: 9200 #打開默認監聽端口

默認情況下,Elasticsearch只允許本機訪問,如果需要遠程訪問,需修改 Elasticsearch的 elasticsearch.yml配置文件,去掉network.host的註釋,將它的值改成0.0.0.0,還需關閉系統防火牆或者放行9200運行端口。

關閉Linux防火牆,並設置開機不啟動。

# systemctl stop firewalld
# systemctl disable firewalld

啟動elasticsearch,並設置開機啟動。

# systemctl start elasticsearch
# systemctl enable elasticsearch

這時我們可以通過瀏覽器訪問輸入http://IP:9200訪問elasticsearch。

快速搭建ELK日誌分析平臺

ElasticSearch-Head插件安裝

ElasticSearch-Head 是一個與Elasticsearch集群(Cluster)相交互的Web前臺。

ElasticSearch-Head的主要作用:

  • 它展現ES集群的拓撲結構,並且可以通過它來進行索引(Index)和節點(Node)級別的操作。
  • 它提供一組針對集群的查詢API,並將結果以json和表格形式返回。
  • 它提供一些快捷菜單,用以展現集群的各種狀態。

ElasticSearch-Head github地址:https://github.com/mobz/elasticsearch-head

1.下載ElasticSearch-Head源碼。

# git clone git://github.com/mobz/elasticsearch-head.git

2.安裝ElasticSearch-Head。

# cd /usr/share/elasticsearch/elasticsearch-head
# npm install

3.配置插件,插件啟動前需要先對插件進行一些相關配置。

1修改elasticsearch.yml,增加跨域的配置(需要重啟es才能生效)。啟用CORS,允許訪問的IP地址段,* 為所有IP都可以。

# echo "http.cors.enabled: true" >>/etc/elasticsearch/elasticsearch.yml
# echo "http.cors.allow-origin: \\"*\\"" >>/etc/elasticsearch/elasticsearch.yml
# tail -2 /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

2編輯Gruntfile.js,修改服務器監聽地址,增加hostname屬性將其值設置為*。

# cat /usr/share/elasticsearch/elasticsearch-head/Gruntfile.js | grep "hostname" 
-C 5
},

connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}

3編輯 _site/app.js,修改head連接es的地址。

# sed -i 's#http://localhost:9200#http://172.28.29.211:9200#g' 
/usr/share/elasticsearch/elasticsearch-head/_site/app.js
# cat /usr/share/elasticsearch/elasticsearch-head/_site/app.js | grep “172.28.29.211”
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.28.29.211:9200";

4.後臺方式啟動ElasticSearch-Head插件。

# cd /usr/share/elasticsearch/elasticsearch-head/node_modules/grunt/bin
# nohup ./grunt server & exit

5. 啟動成功後,可在瀏覽器輸入http://IP:9100訪問head插件並與ES進行交互。

快速搭建ELK日誌分析平臺

Elasticsearch集群配置

Elasticsearch多機集群中的節點可以分為master nodes和data nodes,在配置文件中使用Zen發現(Zen discovery)機制來管理不同節點。

Elasticsearch集群中有的節點一般有三種角色:master node、data node和client node。

  1. master node:master節點主要用於元數據(metadata)的處理,比如索引的新增、刪除、分片分配等。
  2. data node:data節點上保存了數據分片。它負責數據相關操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內存和 I/O 資源。
  3. client node:client 節點起到路由請求的作用,實際上可以看做負載均衡器。( 對於沒有很多請求的業務,client node可以不加,master和data足矣)。

1.將idc-elk-node1(172.28.29.211)設為master節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"]
#

2. idc-elk-node2(172.28.29.212)節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml 
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: false #表示該節點不會作為主節點
node.data: true #表示該節點可以存儲數據,false表示只作為搜索
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"] #有多少節點配置多少IP
#

3.重啟elasticsearch,登錄head插件查看集群狀態,可以看到兩臺node,idc-elk-node1為master。

快速搭建ELK日誌分析平臺

2. Logstash

Logstash 是一個開源的數據收集引擎,它具有備實時數據傳輸能力。它可以統一過濾來自不同源的數據,並按照開發者的制定的規範輸出到目的地。顧名思義,Logstash 收集數據對象就是日誌文件。由於日誌文件來源多(如:系統日誌、服務器日誌、網絡設備日誌等),且內容雜亂,不便於人類進行觀察。因此,我們可以使用 Logstash 對日誌文件進行收集和統一過濾,變成可讀性高的內容,方便開發者或運維人員觀察,從而有效的分析系統/項目運行的性能,做好監控和預警的準備工作等。

"
快速搭建ELK日誌分析平臺

日誌主要包括系統日誌、應用程序日誌和安全日誌等。系統運維和開發人員可以通過日誌瞭解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解服務器的負荷,性能安全性,從而及時採取措施糾正錯誤。通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。ELK可以將我們的系統日誌、訪問日誌、運行日誌、錯誤日誌等進行統一收集、存儲分析和搜索以及圖形展現。

  • Elasticsearch是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(如,搜索)。
  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。

官方網站:https://www.elastic.co

1. Elasticsearch

Elasticsearch需要至少Java 8。Java的安裝在不同的平臺下是不一樣,這裡提供Linux安裝JAVA的方法。

安裝java環境

1.在Oracle官方下載新版jdk,下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-

2133151.html

2.建議下載安裝.rpm格式後綴的JDK,不需要配置java環境變量,會自動配置,上傳安裝包至服務器安裝jdk。

# rpm -ivh jdk-8u171-linux-x64.rpm

3.檢查JAVA是否安裝成功,顯示如下結果,說明安裝成功。

# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

一旦Java準備就緒,然後我們就可以下載並安裝運行Elasticsearch。我們可以從這個頁面http://www.elastic.co/downloads/elasticsearch獲取所有發行版本的二進制安裝包。每一個版本都對應有zip和tar壓縮包,還有deb和rpm安裝包,還有Windows下用的msi安裝包。

安裝elasticsearch

1.將下載好的rpm安裝包上傳至Linux服務器上,執行命令安裝。

# rpm --install elasticsearch-6.4.0.rpm

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/elasticsearch.repo #編輯最新的elasticsearch.repo文件
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install elasticsearch -y #yum安裝elasticsearch

2.使用命令可查看elasticsearch安裝位置。

# rpm -ql elasticsearch

3.運行elasticsearch。

# systemctl start elasticsearch

4.如果一切正常,Elasticsearch就會在默認的9200端口運行。這時請求9200端口,Elastic 返回一個 JSON 對象,包含當前節點、集群、版本等信息。

# curl localhost:9200
{
"name" : "U895YAk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "m6sBcukAS422XA5cgrwRqA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

配置Elasticsearch

Elasticsearch配置文件是在/etc/elasticsearch下的elasticsearch.yml文件。在編輯之前先停止elasticsearch。

# systemctl stop elasticsearch

主要配置說明,我們grep一下需要做的配置。

# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: idc-elk #設置集群名稱
node.name: idc-elk-node1 #設置節點名稱
path.data: /var/lib/elasticsearch #默認索引存儲位置
path.logs: /var/log/elasticsearch #默認日誌存儲位置
bootstrap.memory_lock: true #鎖定進程物理內存,避免(swapped)來提高性能
network.host: 0.0.0.0 #設置網絡允許任意訪問
http.port: 9200 #打開默認監聽端口

默認情況下,Elasticsearch只允許本機訪問,如果需要遠程訪問,需修改 Elasticsearch的 elasticsearch.yml配置文件,去掉network.host的註釋,將它的值改成0.0.0.0,還需關閉系統防火牆或者放行9200運行端口。

關閉Linux防火牆,並設置開機不啟動。

# systemctl stop firewalld
# systemctl disable firewalld

啟動elasticsearch,並設置開機啟動。

# systemctl start elasticsearch
# systemctl enable elasticsearch

這時我們可以通過瀏覽器訪問輸入http://IP:9200訪問elasticsearch。

快速搭建ELK日誌分析平臺

ElasticSearch-Head插件安裝

ElasticSearch-Head 是一個與Elasticsearch集群(Cluster)相交互的Web前臺。

ElasticSearch-Head的主要作用:

  • 它展現ES集群的拓撲結構,並且可以通過它來進行索引(Index)和節點(Node)級別的操作。
  • 它提供一組針對集群的查詢API,並將結果以json和表格形式返回。
  • 它提供一些快捷菜單,用以展現集群的各種狀態。

ElasticSearch-Head github地址:https://github.com/mobz/elasticsearch-head

1.下載ElasticSearch-Head源碼。

# git clone git://github.com/mobz/elasticsearch-head.git

2.安裝ElasticSearch-Head。

# cd /usr/share/elasticsearch/elasticsearch-head
# npm install

3.配置插件,插件啟動前需要先對插件進行一些相關配置。

1修改elasticsearch.yml,增加跨域的配置(需要重啟es才能生效)。啟用CORS,允許訪問的IP地址段,* 為所有IP都可以。

# echo "http.cors.enabled: true" >>/etc/elasticsearch/elasticsearch.yml
# echo "http.cors.allow-origin: \\"*\\"" >>/etc/elasticsearch/elasticsearch.yml
# tail -2 /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

2編輯Gruntfile.js,修改服務器監聽地址,增加hostname屬性將其值設置為*。

# cat /usr/share/elasticsearch/elasticsearch-head/Gruntfile.js | grep "hostname" 
-C 5
},

connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}

3編輯 _site/app.js,修改head連接es的地址。

# sed -i 's#http://localhost:9200#http://172.28.29.211:9200#g' 
/usr/share/elasticsearch/elasticsearch-head/_site/app.js
# cat /usr/share/elasticsearch/elasticsearch-head/_site/app.js | grep “172.28.29.211”
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.28.29.211:9200";

4.後臺方式啟動ElasticSearch-Head插件。

# cd /usr/share/elasticsearch/elasticsearch-head/node_modules/grunt/bin
# nohup ./grunt server & exit

5. 啟動成功後,可在瀏覽器輸入http://IP:9100訪問head插件並與ES進行交互。

快速搭建ELK日誌分析平臺

Elasticsearch集群配置

Elasticsearch多機集群中的節點可以分為master nodes和data nodes,在配置文件中使用Zen發現(Zen discovery)機制來管理不同節點。

Elasticsearch集群中有的節點一般有三種角色:master node、data node和client node。

  1. master node:master節點主要用於元數據(metadata)的處理,比如索引的新增、刪除、分片分配等。
  2. data node:data節點上保存了數據分片。它負責數據相關操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內存和 I/O 資源。
  3. client node:client 節點起到路由請求的作用,實際上可以看做負載均衡器。( 對於沒有很多請求的業務,client node可以不加,master和data足矣)。

1.將idc-elk-node1(172.28.29.211)設為master節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"]
#

2. idc-elk-node2(172.28.29.212)節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml 
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: false #表示該節點不會作為主節點
node.data: true #表示該節點可以存儲數據,false表示只作為搜索
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"] #有多少節點配置多少IP
#

3.重啟elasticsearch,登錄head插件查看集群狀態,可以看到兩臺node,idc-elk-node1為master。

快速搭建ELK日誌分析平臺

2. Logstash

Logstash 是一個開源的數據收集引擎,它具有備實時數據傳輸能力。它可以統一過濾來自不同源的數據,並按照開發者的制定的規範輸出到目的地。顧名思義,Logstash 收集數據對象就是日誌文件。由於日誌文件來源多(如:系統日誌、服務器日誌、網絡設備日誌等),且內容雜亂,不便於人類進行觀察。因此,我們可以使用 Logstash 對日誌文件進行收集和統一過濾,變成可讀性高的內容,方便開發者或運維人員觀察,從而有效的分析系統/項目運行的性能,做好監控和預警的準備工作等。

快速搭建ELK日誌分析平臺

Logstash 通過管道進行運作,管道有兩個必需的元素,輸入和輸出,還有一個可選的元素,過濾器。輸入插件從數據源獲取數據,過濾器插件根據用戶指定的數據格式修改數據,輸出插件則將數據寫入到目的地。在實際工作中Logstash數據收集的一個流程大概是:數據源→通過input插件(如file、redis、stdin)→output插件→寫到Elasticsearch。

"
快速搭建ELK日誌分析平臺

日誌主要包括系統日誌、應用程序日誌和安全日誌等。系統運維和開發人員可以通過日誌瞭解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解服務器的負荷,性能安全性,從而及時採取措施糾正錯誤。通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。ELK可以將我們的系統日誌、訪問日誌、運行日誌、錯誤日誌等進行統一收集、存儲分析和搜索以及圖形展現。

  • Elasticsearch是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(如,搜索)。
  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。

官方網站:https://www.elastic.co

1. Elasticsearch

Elasticsearch需要至少Java 8。Java的安裝在不同的平臺下是不一樣,這裡提供Linux安裝JAVA的方法。

安裝java環境

1.在Oracle官方下載新版jdk,下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-

2133151.html

2.建議下載安裝.rpm格式後綴的JDK,不需要配置java環境變量,會自動配置,上傳安裝包至服務器安裝jdk。

# rpm -ivh jdk-8u171-linux-x64.rpm

3.檢查JAVA是否安裝成功,顯示如下結果,說明安裝成功。

# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

一旦Java準備就緒,然後我們就可以下載並安裝運行Elasticsearch。我們可以從這個頁面http://www.elastic.co/downloads/elasticsearch獲取所有發行版本的二進制安裝包。每一個版本都對應有zip和tar壓縮包,還有deb和rpm安裝包,還有Windows下用的msi安裝包。

安裝elasticsearch

1.將下載好的rpm安裝包上傳至Linux服務器上,執行命令安裝。

# rpm --install elasticsearch-6.4.0.rpm

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/elasticsearch.repo #編輯最新的elasticsearch.repo文件
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install elasticsearch -y #yum安裝elasticsearch

2.使用命令可查看elasticsearch安裝位置。

# rpm -ql elasticsearch

3.運行elasticsearch。

# systemctl start elasticsearch

4.如果一切正常,Elasticsearch就會在默認的9200端口運行。這時請求9200端口,Elastic 返回一個 JSON 對象,包含當前節點、集群、版本等信息。

# curl localhost:9200
{
"name" : "U895YAk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "m6sBcukAS422XA5cgrwRqA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

配置Elasticsearch

Elasticsearch配置文件是在/etc/elasticsearch下的elasticsearch.yml文件。在編輯之前先停止elasticsearch。

# systemctl stop elasticsearch

主要配置說明,我們grep一下需要做的配置。

# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: idc-elk #設置集群名稱
node.name: idc-elk-node1 #設置節點名稱
path.data: /var/lib/elasticsearch #默認索引存儲位置
path.logs: /var/log/elasticsearch #默認日誌存儲位置
bootstrap.memory_lock: true #鎖定進程物理內存,避免(swapped)來提高性能
network.host: 0.0.0.0 #設置網絡允許任意訪問
http.port: 9200 #打開默認監聽端口

默認情況下,Elasticsearch只允許本機訪問,如果需要遠程訪問,需修改 Elasticsearch的 elasticsearch.yml配置文件,去掉network.host的註釋,將它的值改成0.0.0.0,還需關閉系統防火牆或者放行9200運行端口。

關閉Linux防火牆,並設置開機不啟動。

# systemctl stop firewalld
# systemctl disable firewalld

啟動elasticsearch,並設置開機啟動。

# systemctl start elasticsearch
# systemctl enable elasticsearch

這時我們可以通過瀏覽器訪問輸入http://IP:9200訪問elasticsearch。

快速搭建ELK日誌分析平臺

ElasticSearch-Head插件安裝

ElasticSearch-Head 是一個與Elasticsearch集群(Cluster)相交互的Web前臺。

ElasticSearch-Head的主要作用:

  • 它展現ES集群的拓撲結構,並且可以通過它來進行索引(Index)和節點(Node)級別的操作。
  • 它提供一組針對集群的查詢API,並將結果以json和表格形式返回。
  • 它提供一些快捷菜單,用以展現集群的各種狀態。

ElasticSearch-Head github地址:https://github.com/mobz/elasticsearch-head

1.下載ElasticSearch-Head源碼。

# git clone git://github.com/mobz/elasticsearch-head.git

2.安裝ElasticSearch-Head。

# cd /usr/share/elasticsearch/elasticsearch-head
# npm install

3.配置插件,插件啟動前需要先對插件進行一些相關配置。

1修改elasticsearch.yml,增加跨域的配置(需要重啟es才能生效)。啟用CORS,允許訪問的IP地址段,* 為所有IP都可以。

# echo "http.cors.enabled: true" >>/etc/elasticsearch/elasticsearch.yml
# echo "http.cors.allow-origin: \\"*\\"" >>/etc/elasticsearch/elasticsearch.yml
# tail -2 /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

2編輯Gruntfile.js,修改服務器監聽地址,增加hostname屬性將其值設置為*。

# cat /usr/share/elasticsearch/elasticsearch-head/Gruntfile.js | grep "hostname" 
-C 5
},

connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}

3編輯 _site/app.js,修改head連接es的地址。

# sed -i 's#http://localhost:9200#http://172.28.29.211:9200#g' 
/usr/share/elasticsearch/elasticsearch-head/_site/app.js
# cat /usr/share/elasticsearch/elasticsearch-head/_site/app.js | grep “172.28.29.211”
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.28.29.211:9200";

4.後臺方式啟動ElasticSearch-Head插件。

# cd /usr/share/elasticsearch/elasticsearch-head/node_modules/grunt/bin
# nohup ./grunt server & exit

5. 啟動成功後,可在瀏覽器輸入http://IP:9100訪問head插件並與ES進行交互。

快速搭建ELK日誌分析平臺

Elasticsearch集群配置

Elasticsearch多機集群中的節點可以分為master nodes和data nodes,在配置文件中使用Zen發現(Zen discovery)機制來管理不同節點。

Elasticsearch集群中有的節點一般有三種角色:master node、data node和client node。

  1. master node:master節點主要用於元數據(metadata)的處理,比如索引的新增、刪除、分片分配等。
  2. data node:data節點上保存了數據分片。它負責數據相關操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內存和 I/O 資源。
  3. client node:client 節點起到路由請求的作用,實際上可以看做負載均衡器。( 對於沒有很多請求的業務,client node可以不加,master和data足矣)。

1.將idc-elk-node1(172.28.29.211)設為master節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"]
#

2. idc-elk-node2(172.28.29.212)節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml 
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: false #表示該節點不會作為主節點
node.data: true #表示該節點可以存儲數據,false表示只作為搜索
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"] #有多少節點配置多少IP
#

3.重啟elasticsearch,登錄head插件查看集群狀態,可以看到兩臺node,idc-elk-node1為master。

快速搭建ELK日誌分析平臺

2. Logstash

Logstash 是一個開源的數據收集引擎,它具有備實時數據傳輸能力。它可以統一過濾來自不同源的數據,並按照開發者的制定的規範輸出到目的地。顧名思義,Logstash 收集數據對象就是日誌文件。由於日誌文件來源多(如:系統日誌、服務器日誌、網絡設備日誌等),且內容雜亂,不便於人類進行觀察。因此,我們可以使用 Logstash 對日誌文件進行收集和統一過濾,變成可讀性高的內容,方便開發者或運維人員觀察,從而有效的分析系統/項目運行的性能,做好監控和預警的準備工作等。

快速搭建ELK日誌分析平臺

Logstash 通過管道進行運作,管道有兩個必需的元素,輸入和輸出,還有一個可選的元素,過濾器。輸入插件從數據源獲取數據,過濾器插件根據用戶指定的數據格式修改數據,輸出插件則將數據寫入到目的地。在實際工作中Logstash數據收集的一個流程大概是:數據源→通過input插件(如file、redis、stdin)→output插件→寫到Elasticsearch。

快速搭建ELK日誌分析平臺

Logstash安裝同樣依賴JAVA,之前已經安裝不做介紹。Logstash官網下載地址:https://www.elastic.co/downloads/logstash。

安裝logstash只需將下載好的tar包上傳到服務器上,解壓在相應目錄即可,例如/usr/local下:

# tar -xzvf logstash-6.4.0.tar.gz -C /usr/local

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/logstash.repo #編輯一個最新的logstash.repo文件
[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install logstash -y #yum安裝logstash

運行Logstash

在logstash安裝目錄下執行如下命令進行啟動測試。

# /usr/local/logstash-6.4.0/bin/logstash -e 'input{stdin{}} output{stdout{}}'
Sending Logstash logs to /usr/local/logstash-6.4.0/logs which is now configured via log4j2.properties
[2018-08-29T10:03:48,479][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
hello test2018 #手動輸入字符串作為標準輸入,按回車
{
"@version" => "1", #版本號
"host" => " idc-elk-node2 ", #數據由哪個節點發過來
"@timestamp" => 2018-08-29T14:04:50.047Z, #自動生成時間戳
"message" => "hello test2018" #輸入的內容
}

我們可以看到,我們輸入什麼內容logstash按照某種格式輸出,其中-e參數允許Logstash直接通過命令行接受設置。這點尤其快速的幫助我們反覆的測試配置是否正確而不用寫配置文件。使用CTRL-C命令可以退出之前運行的Logstash。

Logstash使用-e參數在命令行中指定配置是很常用的方式,不過如果需要配置更多設置則需要很長的內容。這種情況,我們首先創建一個簡單的配置文件,並且指定logstash使用這個配置文件。

配置文件寫法:

# 日誌導入
input {
}
# 日誌篩選匹配處理
filter {
}
# 日誌匹配輸出
output {
}

配置文件運行測試

1.在logstash安裝目錄下創建一個測試文件logstash-test.conf,文件內容如下:

# cat logstash-test.conf 
input{
stdin{}
}
output{
stdout{codec=>rubydebug}
}

Logstash使用input和output定義收集日誌時的輸入和輸出的相關配置,本例中input定義了一個叫"stdin"的input,output定義一個叫"stdout"的output。無論我們輸入什麼字符,Logstash都會按照某種格式來返回我們輸入的字符,其中output被定義為"stdout"並使用了codec參數(一種解碼編碼的工具)來指定logstash輸出格式。

2. 使用logstash的-f參數來讀取配置文件,執行如下開始進行測試:

# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-test.conf
[INFO ] 2018-08-29 10:47:42.561 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
hello test 2018! #同理輸入字符串按一定格式輸出顯示
{
"@timestamp" => 2018-08-29T14:48:19.048Z,
"@version" => "1",
"host" => " idc-elk-node2 ",
"message" => "hello test 2018!"
}

配置文件寫入Elasticsearch

我們創建一個測試文件logstash-es.conf,將logstash收集到的數據提交到elastisearch中,這裡需要使用一個output插件——elasticsearch。

# cat logstash-es.conf 
input {
stdin {}
}
output {
elasticsearch {
hosts => ["172.28.29.211:9200"]
}
}

啟動logstash進行測試:

# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-es.conf 
[INFO ] 2018-08-29 11:14:02.644 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
ni shi wo de xiaopingguo #隨便輸入一些內容
nnnn
zenme ai ni doubuduo!

登錄到Elasticsearch就可以查看到數據了。

"
快速搭建ELK日誌分析平臺

日誌主要包括系統日誌、應用程序日誌和安全日誌等。系統運維和開發人員可以通過日誌瞭解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解服務器的負荷,性能安全性,從而及時採取措施糾正錯誤。通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。ELK可以將我們的系統日誌、訪問日誌、運行日誌、錯誤日誌等進行統一收集、存儲分析和搜索以及圖形展現。

  • Elasticsearch是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(如,搜索)。
  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。

官方網站:https://www.elastic.co

1. Elasticsearch

Elasticsearch需要至少Java 8。Java的安裝在不同的平臺下是不一樣,這裡提供Linux安裝JAVA的方法。

安裝java環境

1.在Oracle官方下載新版jdk,下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-

2133151.html

2.建議下載安裝.rpm格式後綴的JDK,不需要配置java環境變量,會自動配置,上傳安裝包至服務器安裝jdk。

# rpm -ivh jdk-8u171-linux-x64.rpm

3.檢查JAVA是否安裝成功,顯示如下結果,說明安裝成功。

# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

一旦Java準備就緒,然後我們就可以下載並安裝運行Elasticsearch。我們可以從這個頁面http://www.elastic.co/downloads/elasticsearch獲取所有發行版本的二進制安裝包。每一個版本都對應有zip和tar壓縮包,還有deb和rpm安裝包,還有Windows下用的msi安裝包。

安裝elasticsearch

1.將下載好的rpm安裝包上傳至Linux服務器上,執行命令安裝。

# rpm --install elasticsearch-6.4.0.rpm

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/elasticsearch.repo #編輯最新的elasticsearch.repo文件
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install elasticsearch -y #yum安裝elasticsearch

2.使用命令可查看elasticsearch安裝位置。

# rpm -ql elasticsearch

3.運行elasticsearch。

# systemctl start elasticsearch

4.如果一切正常,Elasticsearch就會在默認的9200端口運行。這時請求9200端口,Elastic 返回一個 JSON 對象,包含當前節點、集群、版本等信息。

# curl localhost:9200
{
"name" : "U895YAk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "m6sBcukAS422XA5cgrwRqA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

配置Elasticsearch

Elasticsearch配置文件是在/etc/elasticsearch下的elasticsearch.yml文件。在編輯之前先停止elasticsearch。

# systemctl stop elasticsearch

主要配置說明,我們grep一下需要做的配置。

# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: idc-elk #設置集群名稱
node.name: idc-elk-node1 #設置節點名稱
path.data: /var/lib/elasticsearch #默認索引存儲位置
path.logs: /var/log/elasticsearch #默認日誌存儲位置
bootstrap.memory_lock: true #鎖定進程物理內存,避免(swapped)來提高性能
network.host: 0.0.0.0 #設置網絡允許任意訪問
http.port: 9200 #打開默認監聽端口

默認情況下,Elasticsearch只允許本機訪問,如果需要遠程訪問,需修改 Elasticsearch的 elasticsearch.yml配置文件,去掉network.host的註釋,將它的值改成0.0.0.0,還需關閉系統防火牆或者放行9200運行端口。

關閉Linux防火牆,並設置開機不啟動。

# systemctl stop firewalld
# systemctl disable firewalld

啟動elasticsearch,並設置開機啟動。

# systemctl start elasticsearch
# systemctl enable elasticsearch

這時我們可以通過瀏覽器訪問輸入http://IP:9200訪問elasticsearch。

快速搭建ELK日誌分析平臺

ElasticSearch-Head插件安裝

ElasticSearch-Head 是一個與Elasticsearch集群(Cluster)相交互的Web前臺。

ElasticSearch-Head的主要作用:

  • 它展現ES集群的拓撲結構,並且可以通過它來進行索引(Index)和節點(Node)級別的操作。
  • 它提供一組針對集群的查詢API,並將結果以json和表格形式返回。
  • 它提供一些快捷菜單,用以展現集群的各種狀態。

ElasticSearch-Head github地址:https://github.com/mobz/elasticsearch-head

1.下載ElasticSearch-Head源碼。

# git clone git://github.com/mobz/elasticsearch-head.git

2.安裝ElasticSearch-Head。

# cd /usr/share/elasticsearch/elasticsearch-head
# npm install

3.配置插件,插件啟動前需要先對插件進行一些相關配置。

1修改elasticsearch.yml,增加跨域的配置(需要重啟es才能生效)。啟用CORS,允許訪問的IP地址段,* 為所有IP都可以。

# echo "http.cors.enabled: true" >>/etc/elasticsearch/elasticsearch.yml
# echo "http.cors.allow-origin: \\"*\\"" >>/etc/elasticsearch/elasticsearch.yml
# tail -2 /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

2編輯Gruntfile.js,修改服務器監聽地址,增加hostname屬性將其值設置為*。

# cat /usr/share/elasticsearch/elasticsearch-head/Gruntfile.js | grep "hostname" 
-C 5
},

connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}

3編輯 _site/app.js,修改head連接es的地址。

# sed -i 's#http://localhost:9200#http://172.28.29.211:9200#g' 
/usr/share/elasticsearch/elasticsearch-head/_site/app.js
# cat /usr/share/elasticsearch/elasticsearch-head/_site/app.js | grep “172.28.29.211”
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.28.29.211:9200";

4.後臺方式啟動ElasticSearch-Head插件。

# cd /usr/share/elasticsearch/elasticsearch-head/node_modules/grunt/bin
# nohup ./grunt server & exit

5. 啟動成功後,可在瀏覽器輸入http://IP:9100訪問head插件並與ES進行交互。

快速搭建ELK日誌分析平臺

Elasticsearch集群配置

Elasticsearch多機集群中的節點可以分為master nodes和data nodes,在配置文件中使用Zen發現(Zen discovery)機制來管理不同節點。

Elasticsearch集群中有的節點一般有三種角色:master node、data node和client node。

  1. master node:master節點主要用於元數據(metadata)的處理,比如索引的新增、刪除、分片分配等。
  2. data node:data節點上保存了數據分片。它負責數據相關操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內存和 I/O 資源。
  3. client node:client 節點起到路由請求的作用,實際上可以看做負載均衡器。( 對於沒有很多請求的業務,client node可以不加,master和data足矣)。

1.將idc-elk-node1(172.28.29.211)設為master節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"]
#

2. idc-elk-node2(172.28.29.212)節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml 
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: false #表示該節點不會作為主節點
node.data: true #表示該節點可以存儲數據,false表示只作為搜索
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"] #有多少節點配置多少IP
#

3.重啟elasticsearch,登錄head插件查看集群狀態,可以看到兩臺node,idc-elk-node1為master。

快速搭建ELK日誌分析平臺

2. Logstash

Logstash 是一個開源的數據收集引擎,它具有備實時數據傳輸能力。它可以統一過濾來自不同源的數據,並按照開發者的制定的規範輸出到目的地。顧名思義,Logstash 收集數據對象就是日誌文件。由於日誌文件來源多(如:系統日誌、服務器日誌、網絡設備日誌等),且內容雜亂,不便於人類進行觀察。因此,我們可以使用 Logstash 對日誌文件進行收集和統一過濾,變成可讀性高的內容,方便開發者或運維人員觀察,從而有效的分析系統/項目運行的性能,做好監控和預警的準備工作等。

快速搭建ELK日誌分析平臺

Logstash 通過管道進行運作,管道有兩個必需的元素,輸入和輸出,還有一個可選的元素,過濾器。輸入插件從數據源獲取數據,過濾器插件根據用戶指定的數據格式修改數據,輸出插件則將數據寫入到目的地。在實際工作中Logstash數據收集的一個流程大概是:數據源→通過input插件(如file、redis、stdin)→output插件→寫到Elasticsearch。

快速搭建ELK日誌分析平臺

Logstash安裝同樣依賴JAVA,之前已經安裝不做介紹。Logstash官網下載地址:https://www.elastic.co/downloads/logstash。

安裝logstash只需將下載好的tar包上傳到服務器上,解壓在相應目錄即可,例如/usr/local下:

# tar -xzvf logstash-6.4.0.tar.gz -C /usr/local

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/logstash.repo #編輯一個最新的logstash.repo文件
[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install logstash -y #yum安裝logstash

運行Logstash

在logstash安裝目錄下執行如下命令進行啟動測試。

# /usr/local/logstash-6.4.0/bin/logstash -e 'input{stdin{}} output{stdout{}}'
Sending Logstash logs to /usr/local/logstash-6.4.0/logs which is now configured via log4j2.properties
[2018-08-29T10:03:48,479][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
hello test2018 #手動輸入字符串作為標準輸入,按回車
{
"@version" => "1", #版本號
"host" => " idc-elk-node2 ", #數據由哪個節點發過來
"@timestamp" => 2018-08-29T14:04:50.047Z, #自動生成時間戳
"message" => "hello test2018" #輸入的內容
}

我們可以看到,我們輸入什麼內容logstash按照某種格式輸出,其中-e參數允許Logstash直接通過命令行接受設置。這點尤其快速的幫助我們反覆的測試配置是否正確而不用寫配置文件。使用CTRL-C命令可以退出之前運行的Logstash。

Logstash使用-e參數在命令行中指定配置是很常用的方式,不過如果需要配置更多設置則需要很長的內容。這種情況,我們首先創建一個簡單的配置文件,並且指定logstash使用這個配置文件。

配置文件寫法:

# 日誌導入
input {
}
# 日誌篩選匹配處理
filter {
}
# 日誌匹配輸出
output {
}

配置文件運行測試

1.在logstash安裝目錄下創建一個測試文件logstash-test.conf,文件內容如下:

# cat logstash-test.conf 
input{
stdin{}
}
output{
stdout{codec=>rubydebug}
}

Logstash使用input和output定義收集日誌時的輸入和輸出的相關配置,本例中input定義了一個叫"stdin"的input,output定義一個叫"stdout"的output。無論我們輸入什麼字符,Logstash都會按照某種格式來返回我們輸入的字符,其中output被定義為"stdout"並使用了codec參數(一種解碼編碼的工具)來指定logstash輸出格式。

2. 使用logstash的-f參數來讀取配置文件,執行如下開始進行測試:

# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-test.conf
[INFO ] 2018-08-29 10:47:42.561 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
hello test 2018! #同理輸入字符串按一定格式輸出顯示
{
"@timestamp" => 2018-08-29T14:48:19.048Z,
"@version" => "1",
"host" => " idc-elk-node2 ",
"message" => "hello test 2018!"
}

配置文件寫入Elasticsearch

我們創建一個測試文件logstash-es.conf,將logstash收集到的數據提交到elastisearch中,這裡需要使用一個output插件——elasticsearch。

# cat logstash-es.conf 
input {
stdin {}
}
output {
elasticsearch {
hosts => ["172.28.29.211:9200"]
}
}

啟動logstash進行測試:

# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-es.conf 
[INFO ] 2018-08-29 11:14:02.644 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
ni shi wo de xiaopingguo #隨便輸入一些內容
nnnn
zenme ai ni doubuduo!

登錄到Elasticsearch就可以查看到數據了。

快速搭建ELK日誌分析平臺

"
快速搭建ELK日誌分析平臺

日誌主要包括系統日誌、應用程序日誌和安全日誌等。系統運維和開發人員可以通過日誌瞭解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解服務器的負荷,性能安全性,從而及時採取措施糾正錯誤。通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。ELK可以將我們的系統日誌、訪問日誌、運行日誌、錯誤日誌等進行統一收集、存儲分析和搜索以及圖形展現。

  • Elasticsearch是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(如,搜索)。
  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。

官方網站:https://www.elastic.co

1. Elasticsearch

Elasticsearch需要至少Java 8。Java的安裝在不同的平臺下是不一樣,這裡提供Linux安裝JAVA的方法。

安裝java環境

1.在Oracle官方下載新版jdk,下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-

2133151.html

2.建議下載安裝.rpm格式後綴的JDK,不需要配置java環境變量,會自動配置,上傳安裝包至服務器安裝jdk。

# rpm -ivh jdk-8u171-linux-x64.rpm

3.檢查JAVA是否安裝成功,顯示如下結果,說明安裝成功。

# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

一旦Java準備就緒,然後我們就可以下載並安裝運行Elasticsearch。我們可以從這個頁面http://www.elastic.co/downloads/elasticsearch獲取所有發行版本的二進制安裝包。每一個版本都對應有zip和tar壓縮包,還有deb和rpm安裝包,還有Windows下用的msi安裝包。

安裝elasticsearch

1.將下載好的rpm安裝包上傳至Linux服務器上,執行命令安裝。

# rpm --install elasticsearch-6.4.0.rpm

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/elasticsearch.repo #編輯最新的elasticsearch.repo文件
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install elasticsearch -y #yum安裝elasticsearch

2.使用命令可查看elasticsearch安裝位置。

# rpm -ql elasticsearch

3.運行elasticsearch。

# systemctl start elasticsearch

4.如果一切正常,Elasticsearch就會在默認的9200端口運行。這時請求9200端口,Elastic 返回一個 JSON 對象,包含當前節點、集群、版本等信息。

# curl localhost:9200
{
"name" : "U895YAk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "m6sBcukAS422XA5cgrwRqA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

配置Elasticsearch

Elasticsearch配置文件是在/etc/elasticsearch下的elasticsearch.yml文件。在編輯之前先停止elasticsearch。

# systemctl stop elasticsearch

主要配置說明,我們grep一下需要做的配置。

# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: idc-elk #設置集群名稱
node.name: idc-elk-node1 #設置節點名稱
path.data: /var/lib/elasticsearch #默認索引存儲位置
path.logs: /var/log/elasticsearch #默認日誌存儲位置
bootstrap.memory_lock: true #鎖定進程物理內存,避免(swapped)來提高性能
network.host: 0.0.0.0 #設置網絡允許任意訪問
http.port: 9200 #打開默認監聽端口

默認情況下,Elasticsearch只允許本機訪問,如果需要遠程訪問,需修改 Elasticsearch的 elasticsearch.yml配置文件,去掉network.host的註釋,將它的值改成0.0.0.0,還需關閉系統防火牆或者放行9200運行端口。

關閉Linux防火牆,並設置開機不啟動。

# systemctl stop firewalld
# systemctl disable firewalld

啟動elasticsearch,並設置開機啟動。

# systemctl start elasticsearch
# systemctl enable elasticsearch

這時我們可以通過瀏覽器訪問輸入http://IP:9200訪問elasticsearch。

快速搭建ELK日誌分析平臺

ElasticSearch-Head插件安裝

ElasticSearch-Head 是一個與Elasticsearch集群(Cluster)相交互的Web前臺。

ElasticSearch-Head的主要作用:

  • 它展現ES集群的拓撲結構,並且可以通過它來進行索引(Index)和節點(Node)級別的操作。
  • 它提供一組針對集群的查詢API,並將結果以json和表格形式返回。
  • 它提供一些快捷菜單,用以展現集群的各種狀態。

ElasticSearch-Head github地址:https://github.com/mobz/elasticsearch-head

1.下載ElasticSearch-Head源碼。

# git clone git://github.com/mobz/elasticsearch-head.git

2.安裝ElasticSearch-Head。

# cd /usr/share/elasticsearch/elasticsearch-head
# npm install

3.配置插件,插件啟動前需要先對插件進行一些相關配置。

1修改elasticsearch.yml,增加跨域的配置(需要重啟es才能生效)。啟用CORS,允許訪問的IP地址段,* 為所有IP都可以。

# echo "http.cors.enabled: true" >>/etc/elasticsearch/elasticsearch.yml
# echo "http.cors.allow-origin: \\"*\\"" >>/etc/elasticsearch/elasticsearch.yml
# tail -2 /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

2編輯Gruntfile.js,修改服務器監聽地址,增加hostname屬性將其值設置為*。

# cat /usr/share/elasticsearch/elasticsearch-head/Gruntfile.js | grep "hostname" 
-C 5
},

connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}

3編輯 _site/app.js,修改head連接es的地址。

# sed -i 's#http://localhost:9200#http://172.28.29.211:9200#g' 
/usr/share/elasticsearch/elasticsearch-head/_site/app.js
# cat /usr/share/elasticsearch/elasticsearch-head/_site/app.js | grep “172.28.29.211”
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.28.29.211:9200";

4.後臺方式啟動ElasticSearch-Head插件。

# cd /usr/share/elasticsearch/elasticsearch-head/node_modules/grunt/bin
# nohup ./grunt server & exit

5. 啟動成功後,可在瀏覽器輸入http://IP:9100訪問head插件並與ES進行交互。

快速搭建ELK日誌分析平臺

Elasticsearch集群配置

Elasticsearch多機集群中的節點可以分為master nodes和data nodes,在配置文件中使用Zen發現(Zen discovery)機制來管理不同節點。

Elasticsearch集群中有的節點一般有三種角色:master node、data node和client node。

  1. master node:master節點主要用於元數據(metadata)的處理,比如索引的新增、刪除、分片分配等。
  2. data node:data節點上保存了數據分片。它負責數據相關操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內存和 I/O 資源。
  3. client node:client 節點起到路由請求的作用,實際上可以看做負載均衡器。( 對於沒有很多請求的業務,client node可以不加,master和data足矣)。

1.將idc-elk-node1(172.28.29.211)設為master節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"]
#

2. idc-elk-node2(172.28.29.212)節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml 
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: false #表示該節點不會作為主節點
node.data: true #表示該節點可以存儲數據,false表示只作為搜索
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"] #有多少節點配置多少IP
#

3.重啟elasticsearch,登錄head插件查看集群狀態,可以看到兩臺node,idc-elk-node1為master。

快速搭建ELK日誌分析平臺

2. Logstash

Logstash 是一個開源的數據收集引擎,它具有備實時數據傳輸能力。它可以統一過濾來自不同源的數據,並按照開發者的制定的規範輸出到目的地。顧名思義,Logstash 收集數據對象就是日誌文件。由於日誌文件來源多(如:系統日誌、服務器日誌、網絡設備日誌等),且內容雜亂,不便於人類進行觀察。因此,我們可以使用 Logstash 對日誌文件進行收集和統一過濾,變成可讀性高的內容,方便開發者或運維人員觀察,從而有效的分析系統/項目運行的性能,做好監控和預警的準備工作等。

快速搭建ELK日誌分析平臺

Logstash 通過管道進行運作,管道有兩個必需的元素,輸入和輸出,還有一個可選的元素,過濾器。輸入插件從數據源獲取數據,過濾器插件根據用戶指定的數據格式修改數據,輸出插件則將數據寫入到目的地。在實際工作中Logstash數據收集的一個流程大概是:數據源→通過input插件(如file、redis、stdin)→output插件→寫到Elasticsearch。

快速搭建ELK日誌分析平臺

Logstash安裝同樣依賴JAVA,之前已經安裝不做介紹。Logstash官網下載地址:https://www.elastic.co/downloads/logstash。

安裝logstash只需將下載好的tar包上傳到服務器上,解壓在相應目錄即可,例如/usr/local下:

# tar -xzvf logstash-6.4.0.tar.gz -C /usr/local

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/logstash.repo #編輯一個最新的logstash.repo文件
[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install logstash -y #yum安裝logstash

運行Logstash

在logstash安裝目錄下執行如下命令進行啟動測試。

# /usr/local/logstash-6.4.0/bin/logstash -e 'input{stdin{}} output{stdout{}}'
Sending Logstash logs to /usr/local/logstash-6.4.0/logs which is now configured via log4j2.properties
[2018-08-29T10:03:48,479][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
hello test2018 #手動輸入字符串作為標準輸入,按回車
{
"@version" => "1", #版本號
"host" => " idc-elk-node2 ", #數據由哪個節點發過來
"@timestamp" => 2018-08-29T14:04:50.047Z, #自動生成時間戳
"message" => "hello test2018" #輸入的內容
}

我們可以看到,我們輸入什麼內容logstash按照某種格式輸出,其中-e參數允許Logstash直接通過命令行接受設置。這點尤其快速的幫助我們反覆的測試配置是否正確而不用寫配置文件。使用CTRL-C命令可以退出之前運行的Logstash。

Logstash使用-e參數在命令行中指定配置是很常用的方式,不過如果需要配置更多設置則需要很長的內容。這種情況,我們首先創建一個簡單的配置文件,並且指定logstash使用這個配置文件。

配置文件寫法:

# 日誌導入
input {
}
# 日誌篩選匹配處理
filter {
}
# 日誌匹配輸出
output {
}

配置文件運行測試

1.在logstash安裝目錄下創建一個測試文件logstash-test.conf,文件內容如下:

# cat logstash-test.conf 
input{
stdin{}
}
output{
stdout{codec=>rubydebug}
}

Logstash使用input和output定義收集日誌時的輸入和輸出的相關配置,本例中input定義了一個叫"stdin"的input,output定義一個叫"stdout"的output。無論我們輸入什麼字符,Logstash都會按照某種格式來返回我們輸入的字符,其中output被定義為"stdout"並使用了codec參數(一種解碼編碼的工具)來指定logstash輸出格式。

2. 使用logstash的-f參數來讀取配置文件,執行如下開始進行測試:

# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-test.conf
[INFO ] 2018-08-29 10:47:42.561 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
hello test 2018! #同理輸入字符串按一定格式輸出顯示
{
"@timestamp" => 2018-08-29T14:48:19.048Z,
"@version" => "1",
"host" => " idc-elk-node2 ",
"message" => "hello test 2018!"
}

配置文件寫入Elasticsearch

我們創建一個測試文件logstash-es.conf,將logstash收集到的數據提交到elastisearch中,這裡需要使用一個output插件——elasticsearch。

# cat logstash-es.conf 
input {
stdin {}
}
output {
elasticsearch {
hosts => ["172.28.29.211:9200"]
}
}

啟動logstash進行測試:

# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-es.conf 
[INFO ] 2018-08-29 11:14:02.644 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
ni shi wo de xiaopingguo #隨便輸入一些內容
nnnn
zenme ai ni doubuduo!

登錄到Elasticsearch就可以查看到數據了。

快速搭建ELK日誌分析平臺

快速搭建ELK日誌分析平臺

3.Kibana

Kibana官網下載地址:https://www.elastic.co/downloads/kibana。

安裝Kibana只需將下載好的tar包上傳到服務器上,解壓在相應目錄即可,例如/usr/local下:

# tar -xzvf kibana-6.4.0-linux-x86_64.tar.gz -C /usr/local

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/kibana.repo #編輯一個最新的kibana.repo文件
[kibana-6.x]
name=Kibana repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install kibana -y #yum安裝kibana

配置Kibana

如果是用rpm安裝kibana配置文件是在/etc/kibana下的kibana.yml文件。

主要配置說明:

# grep '^[a-z]' /etc/kibana/kibana.yml 
server.port: 5601 #打開默認端口
server.host: 0.0.0.0 #設置網絡允許任意訪問
elasticsearch.url: http://172.28.29.211:9200 #配置elasticsearch地址
kibana.index: ".kibana" #默認kibana創建的索引

運行Kibana

運行Kibana並設置開機啟動。

# systemctl start kibana
# systemctl enable kibana

打開瀏覽器輸入http://IP:5601就可以訪問Kibana了。

"
快速搭建ELK日誌分析平臺

日誌主要包括系統日誌、應用程序日誌和安全日誌等。系統運維和開發人員可以通過日誌瞭解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解服務器的負荷,性能安全性,從而及時採取措施糾正錯誤。通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。ELK可以將我們的系統日誌、訪問日誌、運行日誌、錯誤日誌等進行統一收集、存儲分析和搜索以及圖形展現。

  • Elasticsearch是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(如,搜索)。
  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。

官方網站:https://www.elastic.co

1. Elasticsearch

Elasticsearch需要至少Java 8。Java的安裝在不同的平臺下是不一樣,這裡提供Linux安裝JAVA的方法。

安裝java環境

1.在Oracle官方下載新版jdk,下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-

2133151.html

2.建議下載安裝.rpm格式後綴的JDK,不需要配置java環境變量,會自動配置,上傳安裝包至服務器安裝jdk。

# rpm -ivh jdk-8u171-linux-x64.rpm

3.檢查JAVA是否安裝成功,顯示如下結果,說明安裝成功。

# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

一旦Java準備就緒,然後我們就可以下載並安裝運行Elasticsearch。我們可以從這個頁面http://www.elastic.co/downloads/elasticsearch獲取所有發行版本的二進制安裝包。每一個版本都對應有zip和tar壓縮包,還有deb和rpm安裝包,還有Windows下用的msi安裝包。

安裝elasticsearch

1.將下載好的rpm安裝包上傳至Linux服務器上,執行命令安裝。

# rpm --install elasticsearch-6.4.0.rpm

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/elasticsearch.repo #編輯最新的elasticsearch.repo文件
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install elasticsearch -y #yum安裝elasticsearch

2.使用命令可查看elasticsearch安裝位置。

# rpm -ql elasticsearch

3.運行elasticsearch。

# systemctl start elasticsearch

4.如果一切正常,Elasticsearch就會在默認的9200端口運行。這時請求9200端口,Elastic 返回一個 JSON 對象,包含當前節點、集群、版本等信息。

# curl localhost:9200
{
"name" : "U895YAk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "m6sBcukAS422XA5cgrwRqA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

配置Elasticsearch

Elasticsearch配置文件是在/etc/elasticsearch下的elasticsearch.yml文件。在編輯之前先停止elasticsearch。

# systemctl stop elasticsearch

主要配置說明,我們grep一下需要做的配置。

# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: idc-elk #設置集群名稱
node.name: idc-elk-node1 #設置節點名稱
path.data: /var/lib/elasticsearch #默認索引存儲位置
path.logs: /var/log/elasticsearch #默認日誌存儲位置
bootstrap.memory_lock: true #鎖定進程物理內存,避免(swapped)來提高性能
network.host: 0.0.0.0 #設置網絡允許任意訪問
http.port: 9200 #打開默認監聽端口

默認情況下,Elasticsearch只允許本機訪問,如果需要遠程訪問,需修改 Elasticsearch的 elasticsearch.yml配置文件,去掉network.host的註釋,將它的值改成0.0.0.0,還需關閉系統防火牆或者放行9200運行端口。

關閉Linux防火牆,並設置開機不啟動。

# systemctl stop firewalld
# systemctl disable firewalld

啟動elasticsearch,並設置開機啟動。

# systemctl start elasticsearch
# systemctl enable elasticsearch

這時我們可以通過瀏覽器訪問輸入http://IP:9200訪問elasticsearch。

快速搭建ELK日誌分析平臺

ElasticSearch-Head插件安裝

ElasticSearch-Head 是一個與Elasticsearch集群(Cluster)相交互的Web前臺。

ElasticSearch-Head的主要作用:

  • 它展現ES集群的拓撲結構,並且可以通過它來進行索引(Index)和節點(Node)級別的操作。
  • 它提供一組針對集群的查詢API,並將結果以json和表格形式返回。
  • 它提供一些快捷菜單,用以展現集群的各種狀態。

ElasticSearch-Head github地址:https://github.com/mobz/elasticsearch-head

1.下載ElasticSearch-Head源碼。

# git clone git://github.com/mobz/elasticsearch-head.git

2.安裝ElasticSearch-Head。

# cd /usr/share/elasticsearch/elasticsearch-head
# npm install

3.配置插件,插件啟動前需要先對插件進行一些相關配置。

1修改elasticsearch.yml,增加跨域的配置(需要重啟es才能生效)。啟用CORS,允許訪問的IP地址段,* 為所有IP都可以。

# echo "http.cors.enabled: true" >>/etc/elasticsearch/elasticsearch.yml
# echo "http.cors.allow-origin: \\"*\\"" >>/etc/elasticsearch/elasticsearch.yml
# tail -2 /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

2編輯Gruntfile.js,修改服務器監聽地址,增加hostname屬性將其值設置為*。

# cat /usr/share/elasticsearch/elasticsearch-head/Gruntfile.js | grep "hostname" 
-C 5
},

connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}

3編輯 _site/app.js,修改head連接es的地址。

# sed -i 's#http://localhost:9200#http://172.28.29.211:9200#g' 
/usr/share/elasticsearch/elasticsearch-head/_site/app.js
# cat /usr/share/elasticsearch/elasticsearch-head/_site/app.js | grep “172.28.29.211”
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.28.29.211:9200";

4.後臺方式啟動ElasticSearch-Head插件。

# cd /usr/share/elasticsearch/elasticsearch-head/node_modules/grunt/bin
# nohup ./grunt server & exit

5. 啟動成功後,可在瀏覽器輸入http://IP:9100訪問head插件並與ES進行交互。

快速搭建ELK日誌分析平臺

Elasticsearch集群配置

Elasticsearch多機集群中的節點可以分為master nodes和data nodes,在配置文件中使用Zen發現(Zen discovery)機制來管理不同節點。

Elasticsearch集群中有的節點一般有三種角色:master node、data node和client node。

  1. master node:master節點主要用於元數據(metadata)的處理,比如索引的新增、刪除、分片分配等。
  2. data node:data節點上保存了數據分片。它負責數據相關操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內存和 I/O 資源。
  3. client node:client 節點起到路由請求的作用,實際上可以看做負載均衡器。( 對於沒有很多請求的業務,client node可以不加,master和data足矣)。

1.將idc-elk-node1(172.28.29.211)設為master節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"]
#

2. idc-elk-node2(172.28.29.212)節點配置。

# sed -n '69,73'p /etc/elasticsearch/elasticsearch.yml 
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
node.master: false #表示該節點不會作為主節點
node.data: true #表示該節點可以存儲數據,false表示只作為搜索
discovery.zen.ping.unicast.hosts: ["172.28.29.211", "172.28.29.212"] #有多少節點配置多少IP
#

3.重啟elasticsearch,登錄head插件查看集群狀態,可以看到兩臺node,idc-elk-node1為master。

快速搭建ELK日誌分析平臺

2. Logstash

Logstash 是一個開源的數據收集引擎,它具有備實時數據傳輸能力。它可以統一過濾來自不同源的數據,並按照開發者的制定的規範輸出到目的地。顧名思義,Logstash 收集數據對象就是日誌文件。由於日誌文件來源多(如:系統日誌、服務器日誌、網絡設備日誌等),且內容雜亂,不便於人類進行觀察。因此,我們可以使用 Logstash 對日誌文件進行收集和統一過濾,變成可讀性高的內容,方便開發者或運維人員觀察,從而有效的分析系統/項目運行的性能,做好監控和預警的準備工作等。

快速搭建ELK日誌分析平臺

Logstash 通過管道進行運作,管道有兩個必需的元素,輸入和輸出,還有一個可選的元素,過濾器。輸入插件從數據源獲取數據,過濾器插件根據用戶指定的數據格式修改數據,輸出插件則將數據寫入到目的地。在實際工作中Logstash數據收集的一個流程大概是:數據源→通過input插件(如file、redis、stdin)→output插件→寫到Elasticsearch。

快速搭建ELK日誌分析平臺

Logstash安裝同樣依賴JAVA,之前已經安裝不做介紹。Logstash官網下載地址:https://www.elastic.co/downloads/logstash。

安裝logstash只需將下載好的tar包上傳到服務器上,解壓在相應目錄即可,例如/usr/local下:

# tar -xzvf logstash-6.4.0.tar.gz -C /usr/local

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/logstash.repo #編輯一個最新的logstash.repo文件
[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install logstash -y #yum安裝logstash

運行Logstash

在logstash安裝目錄下執行如下命令進行啟動測試。

# /usr/local/logstash-6.4.0/bin/logstash -e 'input{stdin{}} output{stdout{}}'
Sending Logstash logs to /usr/local/logstash-6.4.0/logs which is now configured via log4j2.properties
[2018-08-29T10:03:48,479][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
hello test2018 #手動輸入字符串作為標準輸入,按回車
{
"@version" => "1", #版本號
"host" => " idc-elk-node2 ", #數據由哪個節點發過來
"@timestamp" => 2018-08-29T14:04:50.047Z, #自動生成時間戳
"message" => "hello test2018" #輸入的內容
}

我們可以看到,我們輸入什麼內容logstash按照某種格式輸出,其中-e參數允許Logstash直接通過命令行接受設置。這點尤其快速的幫助我們反覆的測試配置是否正確而不用寫配置文件。使用CTRL-C命令可以退出之前運行的Logstash。

Logstash使用-e參數在命令行中指定配置是很常用的方式,不過如果需要配置更多設置則需要很長的內容。這種情況,我們首先創建一個簡單的配置文件,並且指定logstash使用這個配置文件。

配置文件寫法:

# 日誌導入
input {
}
# 日誌篩選匹配處理
filter {
}
# 日誌匹配輸出
output {
}

配置文件運行測試

1.在logstash安裝目錄下創建一個測試文件logstash-test.conf,文件內容如下:

# cat logstash-test.conf 
input{
stdin{}
}
output{
stdout{codec=>rubydebug}
}

Logstash使用input和output定義收集日誌時的輸入和輸出的相關配置,本例中input定義了一個叫"stdin"的input,output定義一個叫"stdout"的output。無論我們輸入什麼字符,Logstash都會按照某種格式來返回我們輸入的字符,其中output被定義為"stdout"並使用了codec參數(一種解碼編碼的工具)來指定logstash輸出格式。

2. 使用logstash的-f參數來讀取配置文件,執行如下開始進行測試:

# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-test.conf
[INFO ] 2018-08-29 10:47:42.561 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
hello test 2018! #同理輸入字符串按一定格式輸出顯示
{
"@timestamp" => 2018-08-29T14:48:19.048Z,
"@version" => "1",
"host" => " idc-elk-node2 ",
"message" => "hello test 2018!"
}

配置文件寫入Elasticsearch

我們創建一個測試文件logstash-es.conf,將logstash收集到的數據提交到elastisearch中,這裡需要使用一個output插件——elasticsearch。

# cat logstash-es.conf 
input {
stdin {}
}
output {
elasticsearch {
hosts => ["172.28.29.211:9200"]
}
}

啟動logstash進行測試:

# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-es.conf 
[INFO ] 2018-08-29 11:14:02.644 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
ni shi wo de xiaopingguo #隨便輸入一些內容
nnnn
zenme ai ni doubuduo!

登錄到Elasticsearch就可以查看到數據了。

快速搭建ELK日誌分析平臺

快速搭建ELK日誌分析平臺

3.Kibana

Kibana官網下載地址:https://www.elastic.co/downloads/kibana。

安裝Kibana只需將下載好的tar包上傳到服務器上,解壓在相應目錄即可,例如/usr/local下:

# tar -xzvf kibana-6.4.0-linux-x86_64.tar.gz -C /usr/local

如果你的linux服務器可以上網,也可以用yum進行安裝。

# cat /etc/yum.repos.d/kibana.repo #編輯一個最新的kibana.repo文件
[kibana-6.x]
name=Kibana repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# yum install kibana -y #yum安裝kibana

配置Kibana

如果是用rpm安裝kibana配置文件是在/etc/kibana下的kibana.yml文件。

主要配置說明:

# grep '^[a-z]' /etc/kibana/kibana.yml 
server.port: 5601 #打開默認端口
server.host: 0.0.0.0 #設置網絡允許任意訪問
elasticsearch.url: http://172.28.29.211:9200 #配置elasticsearch地址
kibana.index: ".kibana" #默認kibana創建的索引

運行Kibana

運行Kibana並設置開機啟動。

# systemctl start kibana
# systemctl enable kibana

打開瀏覽器輸入http://IP:5601就可以訪問Kibana了。

快速搭建ELK日誌分析平臺

至此,ELK日誌分析平臺搭建完成。

"

相關推薦

推薦中...