ELK6.2.2日誌分析監控系統搭建和配置
ELK日誌平臺介紹
在搜尋ELK資料的時候,發現這篇文章比較好,於是摘抄一小段:
日誌主要包括系統日誌、應用程式日誌和安全日誌。系統運維和開發人員可以通過日誌瞭解伺服器軟硬體資訊、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解伺服器的負荷,效能安全性,從而及時採取措施糾正錯誤。
通常,日誌被分散的儲存不同的裝置上。如果你管理數十上百臺伺服器,你還在使用依次登入每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理,例如:開源的syslog,將所有伺服器上的日誌收集彙總。
集中化管理日誌後,日誌的統計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實現檢索和統計,但是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。
開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。官方網站:https://www.elastic.co/products
Elasticsearch是個開源分散式搜尋引擎,它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。
Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其儲存供以後使用(如,搜尋)。
Kibana 也是一個開源和免費的工具,它Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 介面,可以幫助您彙總、分析和搜尋重要資料日誌。
--------------------------------畫了一個ELK工作的原理圖-------------------------
如圖:Logstash收集AppServer產生的Log,並存放到ElasticSearch叢集中,而Kibana則從ES叢集中查詢資料生成圖表,再返回給Browser。
ELK平臺搭建
系統環境
System: Centos release 7.3
ElasticSearch: 6.2.2
Logstash: 6.2.2
Kibana: 6.2.2
Java: openjdk version "1.8"
一、安裝JDK以及系統環境
下載JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html
本環境是下載的64位rpm包
#rpm -vih jdk-8u151-linux-x64.rpm
建立執行ELK的使用者和組
#groupadd elk
#useradd -g elk elk
#passwd elk
建立ELK存放目錄
#mkdir /elk && chown -R elk:elk /elk
建立資料和日誌存放目錄
#mkdir /tmp/data && chown -R elk:elk /tmp/data/elasticesearch
#mkdir /tmp/logs && chown -R elk:elk /tmp/logs/elasticesearch
二、先安裝Elasticsearch
我下載的是elasticsearch-6.2.2.zip
將檔案解壓,並重命名放到/elk下
#unzip elasticsearch-6.2.2.zip && mv elasticsearch-6.2.2 /elk/elasticsearch
#chown -R elk:elk /elk
配置ElasticSearch
修改elasticsearch/config/elasticsearch.yml中:
#這裡指定的是叢集名稱,需要修改為對應的,開啟了自發現功能後,ES會按照此叢集名稱進行叢集發現
cluster.name:thh_dev1
#資料目錄
path.data:/home/data/elk/data
# log目錄
path.logs:/home/data/elk/logs
# 節點名稱
node.name: node-1
#修改一下ES的監聽地址,這樣別的機器也可以訪問
network.host:0.0.0.0
#預設的埠號
http.port:9200
進入elasticsearch的bin目錄,使用./elasticsearch -d命令啟動elasticsearch。
檢視程序
#ps -ef|grep elasticsearch
檢視Elasticsearch的資訊
#curl http://127.0.0.1:9200/
客戶端網頁訪問可能需要關掉防火牆(阿里雲等雲主機新增安全組策略):
Systemctl stop firewalld.service
注意事項:
修改系統引數,確保系統有足夠資源啟動ES
設定核心引數vim /etc/sysctl.conf
#增加以下引數vm.max _map_count = 655360
執行以下命令,確保生效配置生效:
sysctl –p
設定資源引數
vim /etc/security/limits.conf
#修改
* soft nofile 65536
* hard nofile 131072
* soft nproc 65536
*hard nproc 131072
vim /etc/security/limits.d/20-nproc.conf#設定elk使用者引數
elk soft nproc 65536
如何和elasticsearch互動
安裝elasticsearch-head外掛,ElasticSearch-head是一個H5編寫的ElasticSearch叢集操作和管理工具,可以對叢集進行傻瓜式操作。
安裝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
# yum install -y npm
# git clone git://github.com/mobz/elasticsearch-head.git
# cd elasticsearch-head
#npm install -g grunt
#npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy #使用的是國內映象代理安裝的
#npm install -g cnpm --registry=https://registry.npm.taobao.org #由於國外映象太慢,使用的是國內映象代理安裝
#cnpm install
# npm run start檢查埠是否起來
#netstat -antp |grep 9100
瀏覽器訪問測試是否正常
#http://IP:9100/
三、Logstash簡介和安裝配置
Logstash是一款強大的資料處理工具,它可以實現資料傳輸,格式處理,格式化輸出,還有強大的外掛功能,常用於日誌處理。
工作流程
Logstash工作的三個階段:
input資料輸入端,可以接收來自任何地方的源資料。
* file:從檔案中讀取
* syslog:監聽在514埠的系統日誌資訊,並解析成RFC3164格式。
* redis:從redis-server list中獲取
* beat:接收來自Filebeat的事件
Filter資料中轉層,主要進行格式處理,資料型別轉換、資料過濾、欄位新增,修改等,常用的過濾器如下。
* grok:通過正則解析和結構化任何文字。Grok目前是logstash最好的方式對非結構化日誌資料解析成結構化和可查詢化。logstash內建了120個匹配模式,滿足大部分需求。
* mutate:在事件欄位執行一般的轉換。可以重新命名、刪除、替換和修改事件欄位。
* drop:完全丟棄事件,如debug事件。
* clone:複製事件,可能新增或者刪除欄位。
* geoip:新增有關IP地址地理位置資訊。
output是logstash工作的最後一個階段,負責將資料輸出到指定位置,相容大多數應用,常用的有:
* elasticsearch:傳送事件資料到Elasticsearch,便於查詢,分析,繪圖。
* file:將事件資料寫入到磁碟檔案上。
* mongodb:將事件資料傳送至高效能NoSQL mongodb,便於永久儲存,查詢,分析,大資料分片。
* redis:將資料傳送至redis-server,常用於中間層暫時快取。
* graphite:傳送事件資料到graphite。http://graphite.wikidot.com/
* statsd:傳送事件資料到statsd。
其他介紹:
----開始安裝配置----1、將下載的logstash 6.2.2解壓並放到指定位置
#unzip logstash-6.2.2.zip -d /elk/
#mv /elk/logstash-6.2.2 /elk/logtash
2、建立一個軟連線,每次執行命令的時候不用在寫安裝路徑
#ln -s /elk/logstash/bin/logstash /bin/logstash
3、對配置檔案進行配置,可以新建一個配置檔案
1. Input外掛 權威指南:https://www.elastic.co/guide/en/logstash/current/input-plugins.html
file外掛的使用
# vim /elk/logstash/conf.d/elk.conf
新增如下配置
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.1.202:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
執行logstash指定elk.conf配置檔案,進行過濾匹配
#logstash -f /elk/logstash/conf.d/elk.conf
可以依據上面的引數介紹,自己進行增改。
四、Kibana的安裝及使用
安裝kibana:
解壓kibana原始碼包到/elk/kibana
配置kibana
編輯kibana.yml配置檔案
/elk/kibana/config/kibana.yml
修改以下引數:
#開啟預設埠5601如果5601被佔用可用5602或其他
server.port:5601
server.host:“localhost”#站點地址
elasticsearch.url:http://localhost:9200#指向elasticsearch服務的ip地址
kibana.index:“.kibana”
執行cd /home/parallels/Desktop/kibana/bin執行./kibana
通過kibana視窗觀察你的結果:
http://localhost:5601 ###公網請用公網IP(阿里雲騰訊雲需要開放安全策略)