ELK日志管理

1. ELK简介

  ELK是一个基于浏览器页面的ElasticSearch 的前段展示工具,也是一个开源和免费的工具,Kibana 可以为Logstash 和ElasticSearch 提供的日志分析友好的web 界面,可以汇总、分析、搜索重要的数据日志。

1ElasticSearch

  (弹性搜索)一个分布式搜索服务器,提供了一个分布式多用户能力的全文搜索引擎,自动发现,索引自动分片,索引副本机制,多数据源,自动搜索负责等功能。

2Logstash

  (日志存储)部署在产生日志的应用服务器上,用于收集日志。是一个开源工具,可以对日子进行收集,过滤,分析,并将其存储以后使用(比如搜索)。

3Kibana

  (日志信息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 关键字的日子

原文地址:https://www.cnblogs.com/ajunyu/p/11286897.html