基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現

ELK簡介

「ELK」是三個開源項目的首字母縮寫:Elasticsearch,Logstash和Kibana。Elasticsearch是一個搜索和分析引擎。Logstash是一個服務器端數據處理管道,它同時從多個源中提取數據,對其進行轉換,而後將其發送到像Elasticsearch這樣的「存儲」。Kibana容許用戶使用Elasticsearch中的圖表和圖形可視化數據。java

ELK原理

在全部須要收集日誌的服務上部署logstash,做爲logstashagent用於監控並過濾所手機的日誌,將過濾後的內容整合在一塊兒,最終所有交給elasticsearch檢索引擎;能夠用elasticsearch進行自定義搜索,再經過Kibana結合自定義搜索內容生成圖標,進行日誌展現。node

ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並做爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。
表明一個集羣,集羣中有多個節點,其中有一個爲主節點,這個主節點是能夠經過選舉產生的,主從節點是對於集羣內部來講的。es的一個概念就是去中心化,字面上理解就是無中心節點,這是對於集羣外部來講的,由於從外部來看es集羣,在邏輯上是個總體,你與任何一個節點的通訊和與整個es集羣通訊是等價的。linux

ELK基本模型

基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現

日誌分析存在的困境

  • 開發人員不能登陸線上服務器查看日誌
  • 各個系統都有日誌,日誌分散難以查找
  • 日誌數據量大,查找慢,數據不夠實時

環境準備

關閉防火牆及selinux

虛擬機分配

主機名 IP地址 所用軟件
node-1 172.16.10.21 Elasticsearch、logstash、kibana
node-1 172.16.10.29 Elasticsearch、logstash、kibana

ES羣集的搭建

es羣集須要兩臺虛擬機,一臺做爲主,一臺做爲從。兩臺服務器的軟件安裝方式都相同,不一樣之處在於軟件的配置文件的修改,可是也是區別不大。web

安裝es軟件

加載gpg驗證密鑰

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

建立yum倉庫

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

安裝軟件包

yum install elasticsearch -y
yum install java -y

配置es羣集

修改配置文件(兩臺服務器不一樣的地方會註明)

vim /etc/elasticsearch/elasticsearch.yml
cluster.name: chen  //自定義,兩臺服務器保持一致
node.name: linux-node1   //節點名稱兩臺服務器各不相同
path.data: /data/es-data    //自定義,需手動建立,若不建立服務會啓動失敗
path.logs: /var/log/elasticsearch/   //默認路徑,不可更改
bootstrap.memory_lock: true   //開啓防止交換分區,避免數據丟失
network.host: 0.0.0.0    //容許任意地址監聽
http.port: 9200     //開啓服務器端口
discovery.zen.ping.unicast.hosts: ["172.16.10.21", "172.16.10.29"]
//識別形式選用單播,host1爲本地地址,host2爲對方地址,在兩一臺服務器上地址書寫順序相反

建立文件夾並賦予權限

mkdir -p /data/es-data
chown -R elasticsearch:elasticsearch /data/es-data/   //用戶在安裝軟件時自動建立

系統優化

vim /etc/security/limits.conf    //如下內容文件末尾插入便可
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited    //普通用戶內存解鎖
* soft nofile 65535
* hard nofile 65535    //文件限制

啓動服務

systemctl start elasticsearch.service
netstat -ntap | grep 9200

加載es插件

/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

數據的存儲,展現

訪問網頁

訪問網頁便可查看到兩個服務器,此時兩個服務器已經完成了選舉,指定了主從服務器
基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現json

存儲數據

使用json格式在網頁中添加數據
基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現bootstrap

查詢數據

基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現

數據刪除

基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現

數據索引分片

數據的索引會自動建立5個分片,單擊概覽便可看到
基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現vim

配置logstash

數據一般以多種格式分散在許多系統中。Logstash支持各類輸入,這些輸入同時從衆多公共源中提取事件。經過連續的流媒體方式輕鬆從日誌,指標,Web應用程序,數據存儲和各類AWS服務中提取數據。實驗中並非兩臺服務器都須要安裝該軟件,當你須要分析某個服務器中的日誌文件時,便可安裝。centos

配置yum源

vim /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

安裝軟件

yum install logstash -y

收集系統日誌

建立配置文件

vim file.conf    //文件位置自定義,演示是在/目錄下建立

input {
      file {
          path => "/var/log/messages"    //路徑爲系統日誌存放路徑
          type => "system"               //類型自定義
          start_position => "beginning"   //從頭開始獲取
      }
}

output {
     elasticsearch {
          hosts => ["172.16.10.21:9200"]
          index => "system-%{+YYYY.MM.dd}"    //年月日固定格式
     }
}

開啓收集

ln -s /opt/logstash/bin/logstash /usr/bin/
logstash -f /root/file.conf

基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現

網頁查看數據

基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現
基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現

部署kibana

軟件安裝

wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
tar zxvf kibana-4.3.1-linux-x64.tar.gz -C /opt/
mv /opt/kibana-4.3.1-linux-x64/ /usr/local/kibana

配置文件修改

vim /usr/local/kibana/config/kibana.yml
server.port: 5601   //開啓端口
server.host: "0.0.0.0"
elasticsearch.url: "http://172.16.10.21:9200"   //此處爲es地址
kibana.index: ".kibana"

啓動監聽

screen    //啓用分屏,如果沒有該命令,則使用yum安裝
/usr/local/kibana/bin/kibana    //啓用監聽
ctrl+a+d  //放入後臺執行

基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現

訪問網站、建立索引

基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現

查看數據

基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現
基於彈性堆棧(ELK堆棧)的日誌分析、存儲及展現

相關文章
相關標籤/搜索