1. 程式人生 > >Elasticsearch+logstash+kibana實現日誌分析(實驗)

Elasticsearch+logstash+kibana實現日誌分析(實驗)

elasticsearch logstash kibana

Elasticsearch+logstash+kibana實現日誌分析(實驗)


一、前言


Elastic Stack(舊稱ELK Stack),是一種能夠從任意數據源抽取數據,並實時對數據進行搜索、分析和可視化展現的數據分析框架。(hadoop同一個開發人員)

java 開發的開源的全文搜索引擎工具

基於lucence搜索引擎的

采用 restful - api 標準的

高可用、高擴展的分布式框架

實時數據分析的

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


為什麽要用elk?

服務器眾多,組件眾多,日誌眾多

發現問題困難,技能要求高


日誌主要包括系統日誌、應用程序日誌和安全日誌。

系統運維和開發人員可以通過日誌了解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以了解服務器的負荷,性能安全性,從而及時采取措施糾正錯誤。

通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。

當務之急我們使用集中化的日誌管理,例如:開源的 syslog ,將所有服務器上的日誌收集匯總。

集中化管理日誌後,日誌的統計和檢索又成為一件比較麻煩的事情,一般我們使用 grep 、 awk和 wc 等 Linux 命令能實現檢索和統計,

但是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。

開源實時日誌分析 ELK 平臺能夠完美的解決我們上述的問題, ELK 由 ElasticSearchLogstashKiabana 三個開源工具組成。



二、安裝過程


先安裝java環境

[root@localhost ~]# yum install -y java-1.8.0-openjdk

上傳在官網下載好的包(官網:https://www.elastic.co/downloads/elasticsearch

在解壓目錄下創建,log,data文件目錄:

修改elastic.yaml:主機名字

node.name: node-1

修改elastic.yaml:監聽主機

network.host: 192.168.113.193

開啟 haed 插件

http.cors.enabled:true

http.cors.allow-origin:"*"

創建啟動elasticsearch 的普通用戶

[root@localhost ~]# useradd xhk

[root@localhost ~]# passwd xhk

給予用戶目錄的權限

[root@localhost ~]# chown -R xhk:xhk /usr/local/src/elasticsearch-5.6.3

啟動之前,有幾個參數要修改,否則會報錯

問題1max file descriptors [4096] for elasticsearch process likely toolow, increase to at least [65536]

修改/etc/security/limits.conf添加或修改下列參數

* hard nofile 65536

* soft nofile 65536

問題2[1]: max virtual memory areas vm.max_map_count [65530] is too low,increase to at least [262144]

修改/etc/sysctl.conf添加或修改下列參數

vm.max_map_count=262144

添加後記得敲 sysctl -p ,使配置生效

接下來,切換到用戶 xhk,啟動elasticsearch

[root@localhost ~]# su – xhk

[xhk@localhost ~]$ /usr/local/src/elasticsearch-5.6.3/bin/elasticsearch

啟動elastic:直接用curl訪問9200端口成功即可


=====================================================================================


還可以為其安裝一個head插件

安裝需要的包

[root@localhost ~]# yum install -y git npm openssl

先在目錄下創建一個名為 head 的文件夾

[root@localhost ~]# cd /usr/local/src/elasticsearch-5.6.3

[root@localhost elasticsearch-5.6.3]# mkdir head

[root@localhost head]# git clonegit://github.com/mobz/elasticsearch-head.git

[root@localhost head]# cd elasticsearch-head/

[root@localhost elasticsearch-head]# npm install

[root@localhost elasticsearch-head]# npm install -g grunt-cli

修改配置文件

[root@localhost ~]# vim /usr/local/src/elasticsearch-5.6.3/head/elasticsearch-head/Gruntfile.js

    server: {
           options: {
                 port: 9100,
                 hostname: ‘0.0.0.0‘,     #####添加這句。
                 base: ‘.‘,
                      keepalive: true
                             }
                    }
              }

啟動服務,並用網頁訪問192.168.163.193:9100

[root@localhost elasticsearch-head]# grunt server

技術分享

==============================================================================

接下來安裝logstash,這個就很容易安裝了,直接解壓然後進入目錄使用就行了

[root@localhost ~]# cd /usr/local/src

[root@localhost src]# tar xf logstash-5.6.3.tar.gz

[root@localhost src]# mkdir /logstash

[root@localhost src]# cd /logstash/

找一段nginx默認日誌,並傳入到elasticsearch

[root@localhost logstash]# vim input_output.conf

input {
   file {
       path => "/logstash/xhk.txt"
       type => "nginxlog"
       start_position => "beginning"
    }
}
filter{
   grok {
       match => {
       "message" => "%{IPORHOST:IP} - %{USER:User}\[%{HTTPDATE:Time}\] \"%{WORD:HTTP_Method} %{NOTSPACE:Request}HTTP/%{NUMBER:HTTP_Version}\" %{NUMBER:Status} (?:%{NUMBER:Bytes}|-)\"(?:%{URI:HTTP_Referer}|-)\"\"%{GREEDYDATA:User_Agent}\""
    }
    }
}
output{
    elasticsearch {
      action => "index"
      hosts  =>"192.168.163.193:9200"
      index  =>"xhk-%{+yyyy.MM.dd}"
   }
   stdout {
   codec => rubydebug
    }
}

執行命令傳入命令

[root@localhost logstash]# /usr/local/src/logstash/bin/logstash -f input_output.conf


傳入的時候,elasticsearch 可能會出現該報錯

[2017-11-05T02:16:39,878][WARN][o.e.m.j.JvmGcMonitorService] [node-1] [gc][young][20][8] duration [2.5s],collections [1]/[2.6s], total [2.5s]/[3.4s], memory[69.8mb]->[65.9mb]/[1.9gb], all_pools {[young][39.3mb]->[18.1mb]/[66.5mb]}{[survivor] [8.3mb]->[6.9mb]/[8.3mb]}{[old][22.2mb]->[41.1mb]/[1.9gb]}

[2017-11-05T02:16:39,913][WARN ][o.e.m.j.JvmGcMonitorService][node-1] [gc][20] overhead, spent [2.5s] collecting in the last [2.6s]

解決:

[root@localhost ~]# vim /usr/local/src/elasticsearch-5.6.3/config/jvm.options

添加以下2個參數

Xmx=300m

Xms=300m

=====================================================================================


安裝kibana

傳入一個rpm包直接yum安裝

[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# ls

kibana-5.6.3-x86_64.rpm

[root@localhost src]# yum install -y kibana-5.6.3-x86_64.rpm

修改配置文件,指向elasticsearch

[root@localhost src]# vim /etc/kibana/kibana.yml

elasticsearch.url: http://192.168.163.194:9200

server.host: "192.168.163.196"

啟動服務

[root@localhost src]# systemctl start kibana

使用瀏覽器訪問 http://192.168.163.193:5601

創建圖表,效果如下


技術分享

技術分享


本文出自 “xhk__運維” 博客,請務必保留此出處http://xhk777.blog.51cto.com/13405744/1979233

Elasticsearch+logstash+kibana實現日誌分析(實驗)