一,ELK是什么?
ELK是一套针对日志数据做解决方案的框架,分别代表了三款产品: - E: ElasticSearch(ES),负责日志的存储和检索; - L:Logstash,负责日志的收集,过滤和格式化; - K:Kibana,负责日志的展示统计和数据可视化;
ElasticSearch
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。Logstash
Logstash是一个用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。Kibana
Kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。二,ELK可以做什么:
- 应用出现故障,需要通过日志排查故障信息。当应用已部署了多个环境时,这时排查的难度和耗时就是一个巨大的损耗。而ELK就可以对多个环境的日志进行收集,过滤,存储,检错,可视化。届时你只需要查看kibana上的日志信息,就可以找出故障所在。
- 针对应用在生产环境上的表现需要数据支撑,如访客数,功能调用量,出错率等等。此类数据的收集,当然可以通过使用别的产品或编写一套程序进行输出,是有其一定的效果。但能像ELK这样对应用无入侵,且功能强大的开源软件。那是少之又少了。
三,ELK一般用来做啥?
ELK组件在海量日志系统的运维中,可用于解决:分布式日志数据集中式查询和管理
系统监控,包含系统硬件和应用各个组件的监控
故障排查
安全信息和事件管理
报表功能
ELK组件在大数据运维系统中,主要可解决的问题如下:
日志查询,问题排查,上线检查
服务器监控,应用监控,错误报警,Bug管理
性能分析,用户行为分析,安全漏洞分析,时间管理
四,ELK日志分析的构成:
1.elasticsearch的基础概念:
接近实时(NRT),群集(cluster),节点(node),索引(index),分片或副本(shards & replicas)。2.logstash的主要组件:
shipper:日志收集者。
lndexer:日志存储者。
broker:日志Hub
Search and Storage:允许对事件进行搜索和存储
web interface:基于web的展示界面
3.kibana的主要功能:
Elasticsearch无缝之集成,整合数据,复杂数据分析,让更多团队成员收益,接口灵活,配置简单,可视化多数据源,简单数据导出。
一,配置Elasticsearch软件
注:两台节点配置相同,在配置elasticsearch配置文件中注意服务器名称不要相同,群集名称要相同,才可以实现群集效果。
准备环境:在两台ELK节点上配置域名解析,通过本地/etc/hosts文件实现。
[root@node1 ~]# hostname
node1
[root@node1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.1 node1
192.168.2.2 node2
检查Java环境
[root@node1 ~]# java -version
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
部署elasticsearch软件
[root@node1 ~]# rpm -ihv /mnt/elasticsearch-5.5.0.rpm
警告:/mnt/elasticsearch-5.5.0.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
加载系统服务
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl enable elasticsearch.service
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[root@node1 ~]#
创建数据存放数据并授权
[root@node1 ~]# mkdir -p /data/elk_data/
[root@node1 ~]# chown elasticsearch:elasticsearch /data/elk_data/
更改elasticsearch主配置文件
[root@localhost ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: node1
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"]
启动elasticsearch并查看是否成功开启
[root@node1 ~]# systemctl start elasticsearch.service
[root@node1 ~]# netstat -anpt | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 4297/java
查看节点信息
二,安装Elasticsearch-head插件
编译安装node,编译安装node耗时较长,大约40min,根据机械的配置可能有所不同,请耐心等待。
[root@node1 ~]# tar zxf /mnt/node-v8.2.1.tar.gz -C /usr/src/
[root@node1 ~]# cd /usr/src/node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure && make && make install
安装phantomjs
[root@node1 ~]# cd /usr/local/src/
[root@node1 src]# tar jxf /mnt/phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 src]# cd phantomjs-2.1.1-linux-x86_64/bin/
[root@node1 bin]# cp phantomjs /usr/local/bin/
安装Elasticsearch-head
[root@node1 bin]# cd
[root@node1 ~]# cd /usr/local/src/
[root@node1 src]# tar zxf /mnt/elasticsearch-head.tar.gz
[root@node1 src]# cd elasticsearch-head/
[root@node1 elasticsearch-head]# npm install
修改Elasticsearch配置文件
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@node1 ~]# systemctl restart elasticsearch
启动服务
[root@node1 elasticsearch-head]# npm run start &
[root@node1 elasticsearch-head]# netstat -lnupt | grep 9100
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 50396/grunt
[root@node1 elasticsearch-head]# netstat -lnupt | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 50023/java
通过elasticsearch-head查看elasticsearch信息。通过浏览器访问http://192.168.2.1:9100/,并连接群集
插入索引。通过命令插入一个测试索引,通过输出信息可以看到索引为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"}'
查看效果
二,logstash安装及使用方法
注:logstash一般部署在需要监控其日志的服务器中,在本案例中,logstash部署在Apache服务器上,用于收集Apache服务器的日志信息并发送到Elasticsearch中。在正式部署之前,在Node1上部署Logstash,以熟悉logstash的使用方法。logstash也需要Java环境,所以安装之前也要检查当前机器的Java环境是否存在。
在node1上安装logstash
[root@node1 ~]# rpm -ihv /mnt/logstash-5.5.1.rpm
警告:/mnt/logstash-5.5.1.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:logstash-1:5.5.1-1 ################################# [100%])
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash
[root@node1 ~]# systemctl start logstash.service
[root@node1 ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
测试logstash
logstash命令行中常用的命令选项如下:
-f:通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
-e:后面跟着字符串,该字符串可以被当做lgostash配置(如果是“ ”,则默认使用stdin作为输入,stdout作为输出)。
-t:测试配置文件是否正确,然后退出。
[root@node1 ~]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.2.1:9200"] } }'
www.baidu.com
www.sina.com
www.google.com
查看logstash新增的索引
logstash配置文件
input {
fliter {...}
}
output {...}
下来修改logstash配置文件,让其收集系统日志/vcar/log/messages,并将其输出到elasticsearch中。
[root@node1 src]# chmod o+r /var/log/messages
[root@node1 src]# ll /var/log/messages
-rw----r--. 1 root root 107359 9月 2 03:23 /var/log/messages
[root@node1 ~]# vim /etc/logstash/conf.d/system.conf
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.2.1:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
~
[root@node1 src]# systemctl restart logstash
三,安装Kibana
在node1服务器上安装Kibana,并设置开机启动
[root@node1 ~]# cd /usr/local/src/
[root@node1 src]# rpm -ihv /mnt/kibana-5.5.1-x86_64.rpm
警告:/mnt/kibana-5.5.1-x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:kibana-5.5.1-1 ################################# [100%])
[root@node1 src]# systemctl enable kibana.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.
设置kibana的主配置文件/etc/kibana/kibana.yml\
[root@node1 src]# vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
bana.index: ".kibana"
启动kibana服务
[root@node1 src]# systemctl start kibana.service
验证kibana,通过浏览器访问http://192.168.2.1:5601,第一次登录需要添加一个elasticsearch索引,添加前面创建索引system-*。
单击“Discover”按钮查看图标信息及日志信息,可以分类显示,使鼠标指针悬停在“Available Fields”中的“host”,然后点击“add”按钮,可以看到按照“host”筛选后的结果。
将apache服务器的日志添加到Elasticsearch并通过Kibana显示。
[root@node1 src]# yum -y install httpd
[root@node1 ~]# systemctl start httpd
在logstash配置文件apache_log.conf
[root@node1 ~]# cd /etc/logstash/conf.d/
[root@node1 conf.d]# vim apache_log.conf
input {
file {
path => "/etc/httpd/logs/access_log"
type => "access"
start_position => "beginning"
}
file {
path => "/etc/httpd/logs/error_log"
type => "error"
start_position => "beginning"
}
}
output {
if [type] == "access" {
elasticsearch {
hosts => ["192.168.2.1:9200"]
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.2.1:9200"]
index => "apache_error-%{+YYYY.MM.dd}"
}
}
}
激活配置文件
/usr/share/logstash/bin/logstash -f apache_log.conf
登录Kibana,单击“ Create index Pattern ”
添加“ apache_access ”,并单击Create按钮。
查看apache_access日志
添加“ apache_error ”,并单击Create按钮。
查看 apache_error 日志文件文章来源:https://www.toymoban.com/news/detail-426882.html
文章来源地址https://www.toymoban.com/news/detail-426882.html
到了这里,关于Linux--ELK日志分析系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!