原文:https://www.howtoing.com/install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-rhel-7html
若是你是一個曾經或過去負責檢查和分析Linux系統日誌的人,那麼你知道若是同時監視多個服務,這個任務可能會成爲一個噩夢。java
在過去的幾天中,該任務必須大多數手動完成,每一個日誌類型單獨處理。 幸運的是,Elasticsearch,Logstash和Kibana的在服務器端的結合,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棧,對每一個部件作什麼的簡短解釋說明:cookie
在中央服務器上安裝如下軟件包。 首先,咱們將安裝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
要安裝Elasticsearch,Logstash和Kibana的最新版本,咱們將不得不手動建立Yum庫以下:
1.導入Elasticsearch公共GPG鑰匙RPM軟件包管理器:
# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
2.將如下幾行庫配置文件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:
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
上述命令的輸出應相似於:
確保你完成上述步驟,而後用Logstash進行。 因爲兩個Logstash和Kibana共享Elasticsearch GPG密鑰,則無需從新導入安裝軟件包以前。
建議閱讀: 在CentOS 7管理系統日誌(配置,旋轉和導入到數據庫中)
7.將如下行庫配置文件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
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來自客戶的到來。 確保證書和密鑰的路徑匹配上一步中概述的正確路徑:
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
)文件:
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消息:
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
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
14.將如下幾行庫配置文件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界面:
咱們已經安裝並在客戶端配置的Filebeat以後,咱們將回到這裏。
建議閱讀: 在實時監控服務器日誌在Linux的「Log.io」工具
咱們將向你展現如何爲客戶端#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中)基於分佈:
[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配置存儲在YAML文件,這須要嚴格的縮進。 當心這是你編輯/etc/filebeat/filebeat.yml
以下:
input_type: log document_type: syslog
上述步驟以下圖所示:
保存更改,而後從新啓動Filebeat在客戶端:
# systemctl restart filebeat
一旦咱們在客戶上完成上述步驟,請隨時前進。
爲了驗證來自客戶端的日誌,能夠發送和接收成功,運行ELK服務器上如下命令:
# curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'
輸出應該相似於(注意如何從信息的/ var / log / messages文件和/ var /日誌/安全正在從客戶端1和客戶端2接收):
不然,檢查錯誤Filebeat配置文件。
# journalctl -xe
在嘗試從新啓動Filebeat將指向您的違規行。
在咱們驗證日誌由客戶端運送並在服務器上成功接收後。 咱們將在Kibana要作的第一件事是配置索引模式並將其設置爲默認值。
您能夠在關係數據庫上下文中將索引描述爲完整數據庫。 咱們將與去filebeat-*
(或者你可使用一個更精確的搜索條件中所解釋的正式文件 )。
輸入filebeat-*
在索引名稱或圖案字段 ,而後單擊建立 :
請注意,您之後將被容許輸入更細粒度的搜索條件。 接下來,單擊綠色矩形中的星形將其配置爲默認索引模式:
最後,在發現菜單中,你會發現幾個字段添加到日誌可視化報告。 只需將鼠標懸停在他們,而後單擊Add:
結果將顯示在屏幕的中心區域,如上所示。 隨意玩弄(添加和刪除的日誌報表字段),以熟悉Kibana。
默認狀況下,Kibana會顯示最後15分鐘期間處理的記錄(見右上角),但你能夠經過選擇另外一個時間框架改變這種行爲:
在本文中,咱們解釋瞭如何設置ELK以收集由兩個客戶端(CentOS 7和Debian 8機器)發送的系統日誌。
如今,你能夠參考官方Elasticsearch文檔並找到如何使用此設置的檢查和更有效地分析你的日誌的詳細信息。
若是你有任何問題,不要猶豫問。 咱們期待您的迴音。