(轉)如何在CentOS / RHEL 7上安裝Elasticsearch,Logstash和Kibana(ELK)

原文:https://www.howtoing.com/install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-rhel-7html

若是你是一個曾經或過去負責檢查和分析Linux系統日誌的人,那麼你知道若是同時監視多個服務,這個任務可能會成爲一個噩夢。java

在過去的幾天中,該任務必須大多數手動完成,每一個日誌類型單獨處理。 幸運的是,Elasticsearch,LogstashKibana的在服務器端的結合,Filebeat在客戶端一塊兒,使得一旦艱鉅的任務,像今天,在公園裏散步。node

前三個部件造成所謂的ELK棧,其主要目的是在同一時間(也稱爲集中式記錄)收集來自多個服務器的日誌。linux

建議閱讀: 4優秀的開源日誌監控和管理工具用於Linux數據庫

內置的基於java的Web界面容許您快速檢查日誌,以方便比較和故障排除。 這些客戶端日誌發送到由Filebeat中央服務器,它能夠被描述爲一個日誌傳送代理。centos

讓咱們看看全部這些部分如何組合在一塊兒。 咱們的測試環境包括如下機器:安全

Central Server: CentOS 7 (IP address: 192.168.0.29). 2 GB of RAM. Client #1: CentOS 7 (IP address: 192.168.0.100). 1 GB of RAM. Client #2: Debian 8 (IP address: 192.168.0.101). 1 GB of RAM.

請注意,這裏提供的RAM值是不嚴格的先決條件,但建議值,成功實現了中央服務器上的ELK。 在客戶端上較少的RAM將沒有太大的差異,若是有的話,在全部。服務器

在服務器上安裝ELK

首先,讓咱們在服務器上安裝的ELK棧,對每一個部件作什麼的簡短解釋說明:cookie

  1. Elasticsearch存儲由客戶端發送的日誌。
  2. Logstash處理這些日誌。
  3. Kibana提供Web界面,這將幫助咱們檢查和分析日誌。

在中央服務器上安裝如下軟件包。 首先,咱們將安裝Java JDK版本8(更新102,最新一期在寫這篇文章的時候),這是ELK組件的依賴。oracle

您可能須要首先檢查在Java下載頁面點擊這裏 ,查看是否有可用的較新的更新。

# yum update # cd /opt # wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jre-8u102-linux-x64.rpm" # rpm -Uvh jre-8u102-linux-x64.rpm

檢查安裝是否成功完成的時間:

# java -version
從命令行檢查Java版本

從命令行檢查Java版本

要安裝Elasticsearch,LogstashKibana的最新版本,咱們將不得不手動建立Yum庫以下:

啓用Elasticsearch Repository

1.導入Elasticsearch公共GPG鑰匙RPM軟件包管理器:

# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

2.將如下幾行庫配置文件elasticsearch.repo :

/etc/yum.repos.d/elasticsearch.repo
[elasticsearch] name=Elasticsearch repository baseurl=http://packages.elastic.co/elasticsearch/2.x/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enabled=1

3.安裝Elasticsearch包。

# yum install elasticsearch

安裝完成後,將提示您啓動並啓用elasticsearch:

在Linux中安裝Elasticsearch

在Linux中安裝Elasticsearch

4.啓動並啓用該服務。

# systemctl daemon-reload # systemctl enable elasticsearch # systemctl start elasticsearch

5.經過TCP端口9200在你的防火牆容許通訊:

# firewall-cmd --add-port=9200/tcp # firewall-cmd --add-port=9200/tcp --permanent

6.檢查Elasticsearch響應經過HTTP簡單的請求:

# curl -X GET http://localhost:9200

上述命令的輸出應相似於:

驗證Elasticsearch安裝

驗證Elasticsearch安裝

確保你完成上述步驟,而後用Logstash進行。 因爲兩個LogstashKibana共享Elasticsearch GPG密鑰,則無需從新導入安裝軟件包以前。

建議閱讀: 在CentOS 7管理系統日誌(配置,旋轉和導入到數據庫中)

啓用Logstash存儲庫

7.將如下行庫配置文件logstash.repo :

/etc/yum.repos.d/logstash.repo
[logstash] name=Logstash baseurl=http://packages.elasticsearch.org/logstash/2.2/centos gpgcheck=1 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch enabled=1

8.安裝Logstash包:

# yum install logstash

9.添加基於在下面的下面的行ELK服務器的IP地址的SSL證書[ v3_ca ]在第/etc/pki/tls/openssl.cnf :

[ v3_ca ] subjectAltName = IP: 192.168.0.29 
添加Elasticsearch服務器IP地址

添加Elasticsearch服務器IP地址

10.生成自簽名的證書,有效期365天:

# cd /etc/pki/tls # openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

11.配置Logstash輸入,輸出和濾波器文件:

輸入 :建立/etc/logstash/conf.d/input.conf並插入如下行進去。 這是必要的Logstash「 學習 」如何處理Beats來自客戶的到來。 確保證書和密鑰的路徑匹配上一步中概述的正確路徑:

/etc/logstash/conf.d/input.conf
input { beats { port => 5044 ssl => true ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } }

輸出( /etc/logstash/conf.d/output.conf )文件:

/etc/logstash/conf.d/output.conf
output { elasticsearch { hosts => ["localhost:9200"] sniffing => true manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }

濾波器( /etc/logstash/conf.d/filter.conf )文件。 爲了簡單,咱們將記錄syslog消息:

/etc/logstash/conf.d/filter.conf
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }

12.驗證Logstash配置文件。

# service logstash configtest
驗證Logstash配置

驗證Logstash配置

13.啓動並啓用logstash:

# systemctl daemon-reload # systemctl start logstash # systemctl enable logstash

14.配置防火牆以容許Logstash從客戶端(TCP端口5044)獲得日誌:

# firewall-cmd --add-port=5044/tcp # firewall-cmd --add-port=5044/tcp --permanent

啓用Kibana存儲庫

14.將如下幾行庫配置文件kibana.repo :

/etc/yum.repos.d/kibana.repo
[kibana] name=Kibana repository baseurl=http://packages.elastic.co/kibana/4.4/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enabled=1

15.安裝Kibana包:

# yum install kibana

16.啓動並啓用Kibana。

# systemctl daemon-reload # systemctl start kibana # systemctl enable kibana

17.確保您能夠從另外一臺計算機訪問接入Kibana的Web界面(容許TCP端口5601上的流量):

# firewall-cmd --add-port=5601/tcp # firewall-cmd --add-port=5601/tcp --permanent

18.啓動Kibana( http://192.168.0.29:5601 )來驗證您能夠訪問Web界面:

訪問Kibana Web界面

訪問Kibana Web界面

咱們已經安裝並在客戶端配置的Filebeat以後,咱們將回到這裏。

建議閱讀: 在實時監控服務器日誌在Linux的「Log.io」工具

在客戶端服務器上安裝Filebeat

咱們將向你展現如何爲客戶端#1這樣作(重複的客戶端#2以後,改變路徑,若是適用於您的分佈)。

1.從服務器到客戶機複製SSL證書:

# scp /etc/pki/tls/certs/logstash-forwarder.crt root@192.168.0.100:/etc/pki/tls/certs/

2.導入Elasticsearch公共GPG鑰匙RPM軟件包管理器:

# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

3.建立Filebeat(存儲庫/etc/yum.repos.d/filebeat.repo CentOS中)基於分佈:

/etc/yum.repos.d/filebeat.repo
[filebeat] name=Filebeat for ELK clients baseurl=https://packages.elastic.co/beats/yum/el/$basearch enabled=1 gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch gpgcheck=1

4.配置源在Debian及其衍生物安裝Filebeat:

# aptitude install apt-transport-https # echo "deb https://packages.elastic.co/beats/apt stable main" > /etc/apt/sources.list.d/filebeat.list # aptitude update

5.安裝Filebeat包:

# yum install filebeat        [On CentOS and based Distros] # aptitude install filebeat [On Debian and its derivatives]

6.啓動並啓用Filebeat:

# systemctl start filebeat # systemctl enable filebeat

配置Filebeat

這裏提醒一下的話。Filebeat配置存儲在YAML文件,這須要嚴格的縮進。 當心這是你編輯/etc/filebeat/filebeat.yml以下:

  1. 路徑 ,指出哪些日誌文件應「運」到ELK服務器。
  2. 淘金 :
input_type: log document_type: syslog
  1. 輸出 :
    1. 取消對與logstash開頭的行。
    2. 代表您ELK服務器和端口的IP地址,其中Logstash在主機聽。
    3. 確保路徑證書指向您在步驟建立I(Logstash部分)高於實際文件。

上述步驟以下圖所示:

在客戶端服務器中配置Filebeat

在客戶端服務器中配置Filebeat

保存更改,而後從新啓動Filebeat在客戶端:

# systemctl restart filebeat

一旦咱們在客戶上完成上述步驟,請隨時前進。

測試Filebeat

爲了驗證來自客戶端的日誌,能夠發送和接收成功,運行ELK服務器上如下命令:

# curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

輸出應該相似於(注意如何從信息的/ var / log / messages文件/ var /日誌/安全正在從客戶端1客戶端2接收):

測試Filebeat

測試Filebeat

不然,檢查錯誤Filebeat配置文件。

# journalctl -xe

在嘗試從新啓動Filebeat將指向您的違規行。

測試Kibana

在咱們驗證日誌由客戶端運送並在服務器上成功接收後。 咱們將在Kibana要作的第一件事是配置索引模式並將其設置爲默認值。

您能夠在關係數據庫上下文中將索引描述爲完整數據庫。 咱們將與去filebeat-* (或者你可使用一個更精確的搜索條件中所解釋的正式文件 )。

輸入filebeat-*索引名稱圖案字段 ,而後單擊建立 :

測試Kibana

測試Kibana

請注意,您之後將被容許輸入更細粒度的搜索條件。 接下來,單擊綠色矩形中的星形將其配置爲默認索引模式:

配置默認Kibana索引模式

配置默認Kibana索引模式

最後,在發現菜單中,你會發現幾個字段添加到日誌可視化報告。 只需將鼠標懸停在他們,而後單擊Add:

添加日誌可視化報告

添加日誌可視化報告

結果將顯示在屏幕的中心區域,如上所示。 隨意玩弄(添加和刪除的日誌報表字段),以熟悉Kibana。

默認狀況下,Kibana會顯示最後15分鐘期間處理的記錄(見右上角),但你能夠經過選擇另外一個時間框架改變這種行爲:

Kibana日誌報告

Kibana日誌報告

概要

在本文中,咱們解釋瞭如何設置ELK以收集由兩個客戶端(CentOS 7和Debian 8機器)發送的系統日誌。

如今,你能夠參考官方Elasticsearch文檔並找到如何使用此設置的檢查和更有效地分析你的日誌的詳細信息。

若是你有任何問題,不要猶豫問。 咱們期待您的迴音。

相關文章
相關標籤/搜索