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 由 ElasticSearch 、 Logstash 和 Kiabana 三个开源工具组成。
二、安装过程
先安装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
创建图表,效果如下