1. ELK简介
ELK是一个基于浏览器页面的ElasticSearch 的前段展示工具,也是一个开源和免费的工具,Kibana 可以为Logstash 和ElasticSearch 提供的日志分析友好的web 界面,可以汇总、分析、搜索重要的数据日志。
1)ElasticSearch
(弹性搜索)一个分布式搜索服务器,提供了一个分布式多用户能力的全文搜索引擎,自动发现,索引自动分片,索引副本机制,多数据源,自动搜索负责等功能。
2)Logstash
(日志存储)部署在产生日志的应用服务器上,用于收集日志。是一个开源工具,可以对日子进行收集,过滤,分析,并将其存储以后使用(比如搜索)。
3)Kibana
(日志信息web 展示)是一个基于浏览器的ElasticSearch 的前段展示工具,也是一个开源和免费的工具,可以为ElasticSearch 和Logstash 提供的日志分析进行友好的Web 界面,可以汇总,分析,搜索重要的数据日志。
Elastic 官网:https://www.elastic.co/cn/
2. 安装elasticsearch
准备node1 和node2
1> node1 节点:
1)安装gpgkey
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2)配置源
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 enabled=1 yum makecache
3)安装
yum install elasticsearch nginx java -y java -version openjdk version "1.8.0_212" OpenJDK Runtime Environment (build 1.8.0_212-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
4)创建日志存储文件
mkdir -p /data/es-data
5)编辑主配置文件
vim /etc/elasticsearch/elasticsearch.yml cluster.name: my-application #判别节点是否是统一集群 node.name: node-1 #节点名称,建议和主机名一致 path.data: /data/es-data #数据存放的路径 path.logs: /var/log/elasticsearch #日志存放的路径 bootstrap.memory_lock: true #锁住内存,不被使用到交换分区 network.host: 0.0.0.0 #允许访问的ip http.port: 9200 #端口
6)数据目录授权
mkdir -p /data/es-data chown -R elasticsearch.elasticsearch /data/ vim /etc/sysctl.conf vm.max_map_count=655360 sysctl -p vim /etc/security/limits.conf * soft nofile 655350 * hard nofile 655350 * soft nproc 4096 * hard nproc 4096
7)启动elasticsearch.service
systemctl start elasticsearch.service systemctl enable elasticsearch.service netstat -anlp | egrep '(9200|9300)'
8)通过web 界面查看elasticsearch 集群状态
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head chown -R elasticsearch.elasticsearch /usr/share/elasticsearch//plugins systemctl restart elasticsearch.service
9)授权
/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf chown -R elasticsearch.elasticsearch /usr/share/elasticsearch//plugins systemctl restart elasticsearch.service
2> node2
1) 编辑主配置文件
vim /etc/elasticsearch/elasticsearch.yml cluster.name: my-application #判别节点是否是统一集群 node.name: node-1 #节点名称,建议和主机名一致 path.data: /data/es-data #数据存放的路径 path.logs: /var/log/elasticsearch #日志存放的路径 bootstrap.memory_lock: true #锁住内存,不被使用到交换分区 network.host: 0.0.0.0 #允许访问的ip http.port: 9200 #端口 discovery.zen.ping.multicast.enabled: false #关闭多播 discovery.zen.ping.unicast.hosts: ["node1", "node2"] #写地址
3> web 页面测试
http://192.168.210.131:9200/_plugin/head/ http://192.168.210.130:9200/_plugin/head/ 集群健康值: green (0 of 0) http://192.168.210.131:9200/_plugin/kopf/#!/cluster http://192.168.210.130:9200/_plugin/kopf/#!/cluster
3. 安装logstach
1> node1 和node2 均执行:
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch 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 enabled=1 yum install -y logstash
2> logstach 数据收集
1) 命令行单行操作
(1)格式:/opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{} }'
在交互终端可以输入内容,ctrl+c 退出
(2)格式:/opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } }'
在交互终端可以输入内容,ctrl+c 退出
( 3 ) 格式: /opt/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearc{ hosts =>
["192.168.210.131:9200"] } }'
在交互终端可以输入内容,ctrl+c 退出
( 4 ) 格式: /opt/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts =>
["192.168.210.131:9200"] } stdout { codec => rubydebug } }'
在交互终端可以输入内容,ctrl+c 退出
2> Logstach 的配置文件和文件编写
配置手册地址:https://www.elastic.co/guide/en/logstash/current/configuration.html
(1)使用logstash 启动一个配置文件,会在elasticsearch 中写一份
vim /etc/logstash/conf.d/01-logstash.conf input { stdin { } } output { elasticsearch { hosts => ["192.168.210.131:9200"] } stdout { codec => rubydebug } } /opt/logstash/bin/logstash -f /etc/logstash/conf.d/01-logstash.conf
(2)编写conf,从日志文件收取日志
vim /etc/logstash/conf.d/system.conf input { file { path => "/var/log/messages" type => "systemlog" start_position => "beginning" } } output { elasticsearch { hosts => ["192.168.210.131:9200"] index => "system-%{+YYYY.MM.dd}" } } /opt/logstash/bin/logstash -f /etc/logstash/conf.d/system.conf &
(3)收集多个日志
vim /etc/logstash/conf.d/all.conf input { file { path => "/var/log/messages" type => "system" start_position => "beginning" } file { path => "/var/log/elasticsearch/my-application.log" type => "es-error" start_position => "beginning" } } output { if [type] == "system" { elasticsearch { hosts => ["192.168.210.131:9200"] index => "system-%{+YYYY.MM.dd}" } } if [type] == "es-error" { elasticsearch { hosts => ["192.168.210.131:9200"] index => "es-error-%{+YYYY.MM.dd}" } } } /opt/logstash/bin/logstash -f /etc/logstash/conf.d/all.conf
(4)模块总结
stdin,stdout,syslog,tcp,udp,rubuydebug,multline
目前项目中使用的是elasticsearch-1.5.1 版本,使用到的插件如下:
1> hq 监控,管理elasticsearch 集群以及通过web 界面来进行查询操作
项目地址:https://github.com/royrusso/elasticsearch-HQ
2> analysis-ik ik 分词器,中文分词
项目地址:https://github.com/medcl/elasticsearch-analysis-ik
3> bigdesk 统计分析和图表化elasticsearch 集群状态信息
项目地址:https://github.com/lukas-vlcek/bigdesk
4> head 最实用的通过web 界面来查看elasticsearch 集群状态信息
项目地址:https://github.com/mobz/elasticsearch-head
5> inquisitor 一个帮助调试查询语句细节的工具
项目地址:https://github.com/polyfractal/elasticsearch-inquisitor
6> marvel 超赞的一个通过json 查询的工具,可惜是收费项目,非开源
项目地址:https://www.elastic.co/downloads/marvel
7> sql 一款国人写的通过类似sql 语法进行查询的工具
项目地址:https://github.com/NLPchina/elasticsearch-sql
8> kopf 一个通过web 界面来管理和监控elasticsearch 集群状态信息
4. kibaba 部署
1>下载二进制安装包:
wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
2>
tar zxf kibana-4.3.1-linux-x64.tar.gz -C /opt/
3>
ln -s /opt/kibana-4.3.1-linux-x64 /opt/kibana
4>
cp /opt/kibana/config/kibana.yml kibana.yml.bak
5>
vim kibana.yml server.port: 5601 kibana #端口 server.host: "0.0.0.0" #对外服务的主机 elasticsearch.url: "http://192.168.56.11:9200" #和elasticsearch 练习 kibana.index: ".kibana #在elasticsearch 中添加.kibana 索引
6> 安装屏风软件
yum install -y screen
7> 开启屏风窗口,并启动kibana 程序
screen
/opt/kibana/bin/kibana
显示开启打开的屏风:screen -ls
进入开启打开的屏风:screen -r id
推出开启打开的屏风:crtl +a+d
关闭开启打开的屏风:screen -X -S id quit
8> 使用kibana-web
http://192.168.16.95:5601
创建索引,填入elasticserach 中设为type 的,注意要在后面+*
点击discover 搜索显示内容,在选择last 选择查看的时间
筛选message 关键字的日子