目录
elk介绍
elk日志简化分析的管理工具,由Elasticsearch(ES)、Logstash、Kibana三个开源工具组成,官方网站: https://www.elastic.co/products
ES(nosql非关数据库):存储功能和索引
Logstash(收集日志):到应用服务器上拿取log,并进行格式转换后输出到es中
通过input功能来收集/采集log
filter过滤器:格式化数据
output输出:日志输出到es数据库内
Kibana(展示工具):将es内的数据在浏览器展示出来,通过UI界面展示(可以根据自己的需求对日志进行处理,方便查阅读取)
日志处理过程
Logstash收集AppServer产生的Log,并将log进行集中化管理,将日志格式化(Logstash) 并存放,ElasticSearch集群中,对格式化后的数据进行索引|和存储( Elasticsearch),Kibana则从Es集群中查询数据生成图表,再返回给browsers。
elasticsearch介绍
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfu1web接口。
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
logstash介绍
Logstash由JRuby语言编写,基于消息(message-based)的简单架构,并运行在Java虚拟机(JVWM)上。不同于分离的代理端( agent)或主机端(server),LogStash可配置单一的代理端(agent)与其它开源软件结合,以实现不同的功能。
kibana介绍
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板( dashboard)实时显示Elasticsearch查询动态。设置Kibana非常简单。无需编写代码,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测。
搭建elk
搭建elasticsearch
#节点一
#上传elasticsearch至opt目录下
[root@node1 ~]# cd /opt
[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm
#加载系统服务
[root@node1 opt]# systemctl daemon-reload
[root@node1 opt]# systemctl enable elasticsearch.service
#对配置文件做备份后再进行编辑
[root@node1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
[root@node1 opt]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster #17行取消注释并修改
node.name: node1 #23行取消注释
path.data: /data/elk_data #33行取消注释并修改数据存放路径
path.logs: /var/log/elasticsearch/ #37行取消注释修改日志存放路径
bootstrap.memory_lock: false #43行修改为不在启动时锁定内存
network.host: 0.0.0.0 #55行修改服务监听的ip地址
http.port: 9200 #59行取消注释,监听端口为9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"] #68行修改节点名,集群的发现通过单播进行
#查看配置信息
[root@node1 opt]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: node-1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
[root@node1 opt]# mkdir -p /data/elk_data
[root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/
[root@node1 opt]# systemctl start elasticsearch.service #由于elasticsearch启动比较慢,所以一开始查看9200端口可以看不到
[root@node1 opt]# netstat -anpt |grep 9200
tcp6 0 0 :::9200 :::* LISTEN 32352/java
#节点二配置
#把软件包上传至opt目录下
[root@node2 ~]# cd /opt
[root@node2 opt]# ls
elasticsearch-5.5.0.rpm redis-5.0.7 rh
[root@node2 opt]# rpm -ivh elasticsearch-5.5.0.rpm
#对配置文件做备份后再进行编辑
[root@node1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
[root@node1 opt]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster #17行取消注释并修改
node.name: node2 #23行取消注释
path.data: /data/elk_data #33行取消注释并修改数据存放路径
path.logs: /var/log/elasticsearch/ #37行取消注释修改日志存放路径
bootstrap.memory_lock: false #43行修改为不在启动时锁定内存
network.host: 0.0.0.0 #55行修改服务监听的ip地址
http.port: 9200 #59行取消注释,监听端口为9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"] #68行修改节点名,集群的发现通过单播进行
查看节点信息
[root@node2 opt]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: node2
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
[root@node1 opt]# systemctl start elasticsearch.service
[root@node1 opt]# netstat -anpt |grep 9200
tcp6 0 0 :::9200 :::* LISTEN 32352/java
查看集群健康信息
查看集群状态信息
搭建elasticsearch-head插件管理集群
#在两个节点进行安装
[root@node1 opt]# yum -y install gcc gcc-c++ make
将node-v8.2.1.tar.gz解压到opt目录下
[root@node1 opt]# tar zxvf node-v8.2.1.tar.gz
[root@node1 opt]# cd node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure
[root@node1 ~]# make -j3 #make编译时间大概10分钟
[root@node1 ~]# make install
#将elasticsearch-head.tar.gz、phantomjs-2.1.1-linux-x86_64.tar.bz2解压到/usr/local/src/目录下
[root@node1 opt]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
[root@node1 ~]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
[root@node1 ~]# cp phantomjs /usr/local/bin
[root@node1 opt]# tar xzvf elasticsearch-head.tar.gz -C /usr/local/src/
[root@node1 ~]# cd /usr/local/src/elasticsearch-head
[root@node1 elasticsearch-head]# npm install #使用npm工具进行安装
[root@node1 elasticsearch-head]# cd ~
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml #进入配置文件,末尾添加
http.cors.enabled: true #这两行表示支持跨域支持和域名支持
http.cors.allow-origin: "*"
[root@node1 ~]# systemctl restart elasticsearch
[root@node1 ~]# netstat -anpt |grep 9200
tcp6 0 0 :::9200 :::* LISTEN 79942/java
[root@node1 ~]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm run start & #放在后台启动
在节点一上创建索引为index-demo,数据类型为test的数据
[root@node1 elasticsearch-head]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type:application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
{
"_index" : "index-demo",
"_type" : "test",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"created" : true
}
访问192.168.218.214:9100
查看之前创建的数据信息
搭建logstash和kibana
在httpd服务器上安装
[root@localhost ~]# cd /opt
[root@localhost opt]# rpm -ivh logstash-5.5.1.rpm
[root@localhost opt]# systemctl start logstash.service
[root@localhost opt]# systemctl enable logstash.service
[root@localhost opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ #创建软连接
[root@localhost opt]# chmod o+r /var/log/messages #给这个文件添加其他人可读的权限,logstash需要读取这个文件
[root@localhost opt]# vim /etc/logstash/conf.d/system.conf #这是一个空文件,需要插入内容
input { #从/var/log/messages中获取数据
file{
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output { #将文件内容输出到elasticsearch上
elasticsearch {
hosts => ["192.168.218.214:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
[root@localhost opt]# systemctl restart logstash.service
安装kibana
在节点一进行安装
[root@node1 elasticsearch-head]# cd /usr/local/src
[root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm
[root@node1 src]# cd /etc/kibana/
[root@node1 kibana]# cp kibana.yml kibana.yml.bak
[root@node1 kibana]# vim kibana.yml
server.port: 5601 #第2行打开kibana的端口
server.host: "0.0.0.0" #第7行取消注释修改kibana监听端口
elasticsearch.url: "http://192.168.218.214:9200" #第21行把地址修改为本机ip,用于和elasticsearch建立联系
kibana.index: ".kibana" #30行取消注释
[root@node1 kibana]# systemctl start kibana.service
[root@node1 kibana]# systemctl enable kibana.service
[root@node1 kibana]# netstat -anpt |grep 5601
tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 82549/node
访问192.168.218.214:9100
访问192.168.218.214:5601
创建完成后点击discover就可以查看系统日志信息了