Elasticsearch+logstash+kibana實現日誌分析(實驗)java
1、前言node
Elastic Stack(舊稱ELK Stack),是一種可以從任意數據源抽取數據,並實時對數據進行搜索、分析和可視化展示的數據分析框架。(hadoop同一個開發人員)nginx
java 開發的開源的全文搜索引擎工具git
基於lucence搜索引擎的
github
採用 restful - api 標準的
npm
高可用、高擴展的分佈式框架
vim
實時數據分析的
api
官方網站: https://www.elastic.co/products瀏覽器
爲何要用elk?安全
服務器衆多,組件衆多,日誌衆多
發現問題困難,技能要求高
日誌主要包括系統日誌、應用程序日誌和安全日誌。
系統運維和開發人員能夠經過日誌瞭解服務器軟硬件信息、檢查配置過程當中的錯誤及錯誤發生的緣由。常常分析日誌能夠了解服務器的負荷,性能安全性,從而及時採起措施糾正錯誤。
一般,日誌被分散的儲存不一樣的設備上。若是你管理數十上百臺服務器,你還在使用依次登陸每臺機器的傳統方法查閱日誌。這樣是否是感受很繁瑣和效率低下。
當務之急咱們使用集中化的日誌管理,例如:開源的 syslog ,將全部服務器上的日誌收集彙總。
集中化管理日誌後,日誌的統計和檢索又成爲一件比較麻煩的事情,通常咱們使用 grep 、 awk和 wc 等 Linux 命令能實現檢索和統計,
可是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法不免有點力不從心。
開源實時日誌分析 ELK 平臺可以完美的解決咱們上述的問題, ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三個開源工具組成。
2、安裝過程
先安裝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
啓動以前,有幾個參數要修改,不然會報錯
問題1、max 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
建立圖表,效果以下