ELK企业内部日志分析系统(elasticsearch/logstash/beats/kibana)centos7详解
一、软件介绍
1.Easticsearch搜索引擎:是一个基于Lucene的搜索引擎,提供索引,搜索功能。他提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
2.Logstash接收,处理,转发日志工具:
logstash是一个开源的服务器端数据处理流水线,它可以同时从多个数据源获取数据,并将其转化为最喜欢的“存储”(ours is elasticsearch,naturally.)主要是用来日志的搜集、分析、过滤日志的工具。用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。
3.Beats采集日志信息:GO语言开发,所以高效、很快:
filebeat:
隶属于Beats,轻量级数据收集引擎。基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择,目前Beats包含四种工具:
-
Packetbeat(搜集网络流量数据)
-
Metricbeat(搜集系统、进程和文件通过从操作系统和服务收集指标,帮助您监控服务器及其托管的服务。)
-
Filebeat(搜集文件数据)
-
Winlogbeat(搜集 Windows 事件日志数据)
4.Kibana:独立美观的图形数据展示界面: Kibana 是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持,它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。让你可视化你的Elasticsearch数据并导航Elastic Stack,所以你可以做任何事情,从凌晨2:00分析为什么你得到分页,了解雨水可能对你的季度数字造成的影响。
二、实验环境
1.实验拓扑
2.实验准备
a.环境准备:
- els——192.168.11.132——elasticsearch(搜索引擎)
- logstash——192.168.11.139——logstash(日志处理) redis(缓冲队列)
- filebeat——192.168.11.140——filebeat(日志收集)httpd/mysql(生成日志)
- kibana——192.168.11.141——kibana(展示界面)
b.修改主机名
hostnamectl set-hostname els.along.com
hostnamectl set-hostname logstash.along.com
hostnamectl set-hostname filebeat.along.com
hostnamectl set-hostname kibana.along.com
注:分别在四台主机上操作,然后重启主机生效
c.修改hosts
vim /etc/hosts
192.168.11.132 els.along.com
192.168.11.139 logstash.along.com
192.168.11.140 filebeat.along.om
192.168.11.141 kibana.along.com
测试:互ping
[root@els ~]# ping logstash.along.com
[root@els ~]# ping filebeat.along.com
[root@els ~]# ping kibana.along.com
e.关闭防火墙、selinux
systemctl stop firewalld.service
systemctl status firewalld.service
setenforce 0
getenforce
f.同步时间
yum -y install chrony
vim /etc/chrony.conf
systemctl restart chronyd.service
chronyc sources -v
三、搭建elasticsearch和head插件
1.安装java环境
yum -y install java-1.8.0-openjdk-devel
2.安装下好的els(https://www.elastic.co)
yum -y install elasticsearch-5.5.1.rpm
3.修改jvm的配置
vim /etc/elasticsearch/jvm.options
4.配置els
vim /etc/elasticsearch//elasticsearch.yml
cluster.name: alongels #集群名字
node.name: els #节点名
path.data: /els/data #索引路径
path.logs: /els/logs #日志存储路径
network.host: 192.168.11.132 #对外通信的地址,依次修改为自己机器对外的IP
#http.port: 9200 #默认端口
5.创建所需的路径,并修改权限
mkdir -pv /els/{data,logs}
chown -R elasticsearch.elasticsearch /els/*
6.重启服务
systemctl start elasticsearch.service
7.测试
ss -naput | grep 9200
curl 192.168.11.132:9200
浏览器访问:
8.安装elasticsearch 的head插件
谷歌Elasticsearch head插件实现了此功能,所以直接使用谷歌插件
四、搭建介绍logstash
1.介绍(笔者自己做笔记用,可以直接忽略)
查看官方文档:https://www.elastic.co/cn/products/logstash
① 官方介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。
② Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs:
logstash整个工作流分为三个阶段:输入、过滤、输出。每个阶段都有强大的插件提供支持:
Input 必须,负责产生事件(Inputs generate events),常用的插件有
- file 从文件系统收集数据
- syslog 从syslog日志收集数据
- redis 从redis收集日志
- beats 从beats family收集日志(如:Filebeats)
Filter常用的插件有, 可选,负责数据处理与转换(filters modify them)
- grok grok是logstash中最常用的日志解释和结构化插件
- mutate 支持事件的变换,例如重命名、移除、替换、修改等
- drop 完全丢弃事件
- clone 克隆事件
- geoip 给ip地址添加地址信息
output 输出,必须,负责数据输出(outputs ship them elsewhere),常用的插件有
- elasticsearch 把数据输出到elasticsearch
- file 把数据输出到普通的文件
- graphite 把数据输出到graphite (logstash 插件)
- statsd 把数据输出到statsd(logstash插件)
2.下载安装
去官网下载对应版本的logstash ,我下载的是5.5.1版本https://www.elastic.co/cn/downloads/logstash
yum -y install logstash-5.5.1.rpm
3.修改环境变量
vim /etc/profile.d/logstash.sh
export
. /etc/profile.d/logstash.sh
4.logstash演示用法(笔者做笔记,可忽略)
input => 标准输入
filter => 无
output => 标准输出
编辑配置文件,由于input、output还是标准输入输出
出现无法输出的情况可通过以下方法解决
a.示例1:标准输入输出(可忽略)
----编辑配置文件
cd /etc/logstash/conf.d/
vim test.conf
logstash -f ./test.conf -t
有Configuration OK表明测试成功
logstash -f ./test.conf
b.示例2:从文件输入数据,经grok 拆分插件过滤之后输出至标准输出(必做)
input => 文件输入
filter => grok、date 模块
grok:拆分字段
date:修改时间格式
output => 标准输出
----下载http服务
yum -y install httpd
systemctl start httpd
vim /var/www/html/index.html
home page
----生成20个测试页面
for i in {1…20}; do echo "Test Page i">/var/www/html/testi" > /var/www/html/testi">/var/www/html/testi.html; done
ls /var/www/html
curl 192.168.11.139
curl 192.168.11.139/test1.html
—循环生成httpd日志
for i in {1…200}; do j=((((((i %20+1)); curl http://192.168.11.139:80/test$j.html; done**(重要)**
----vim test2.conf
logstash -f ./test.conf -t
有Configuration OK表明测试成功
logstash -f ./test.conf
c.示例3:filter 的date、mutate 插件(可忽略)
input => 标准输入
filter => date、mutate 模块
mutate:修改字段
output => 标准输出
vim test3.conf
logstash -f ./test.conf -t
有Configuration OK表明测试成功
logstash -f ./test.conf
d.示例4:filter 的 geoip 模块(记录世界ip地址)
input => 标准输入
filter => geoip 模块
geoip:利用这个模块解析ip的地址,利于后边kibana 的地理位置展示图
output => 标准输出
----(1)准备ip 数据库
网上下载数据库,因为是记录世界的IP 地址,所以经常有变动,可以写一个计划任务,每隔一周去网上下载一次,解包,链接到maxmind 下:
tar xf GeoLite2-City.tar.gz
mv GeoLite2-City_20190416/ /etc/logstash/
cd /etc/logstash/
mv GeoLite2-City_20190416/ maxmind
----模拟一个公网ip 访问
echo ‘112.168.1.102 - - [08/Feb/2018:15:28:53 +0800] “GET /test6.html HTTP/1.1” 200 12 “-” “curl/7.29.0”’ >> /var/log/httpd/access_log
vim /etc/logstash/conf.d/test4.conf
logstash -f ./test.conf -t
有Configuration OK表明测试成功
logstash -f ./test.conf
e.示例5:output 输出给elasticsearch
input => 来自httpd 的访问日志
filter => geoip 模块
output => 输出给elasticsearch
vim test5.conf
logstash -f test5.conf -t
logstash -f test5.conf
f.示例6:output 输出给redis
input => 来自httpd 的访问日志
filter => geoip 模块
output => 输出给redis
yum -y install redis
vim /etc/redis.conf
systemctl restart redis
vim /etc/logstash/conf.d/test6.conf
测试如图
五、Beats 轻量型数据采集器
1.下载官网:
https://www.elastic.co/cn/products/beats
2.安装
yum -y install filebeat-5.5.1-x86_64.rpm
3.修改配置文件
vim /etc/filebeat/filebeat.yml
***-----示例1:配置filebeats,目标***elasticsearch
4.安装httpd服务
systemctl start filebeat.service
yum install httpd
systemctl start httpd
vim /var/www/html/index.html
for i in {1…20}; do echo "Test Page i">/var/www/html/test{i}" > /var/www/html/testi">/var/www/html/test{i}.html; done
ls /var/www/html/
curl 192.168.11.140
curl 192.168.11.140/test1.html
for i in {1…200}; do j=((((((i %20+1)); curl http://192.168.11.140:80/test$j.html; done(生成日志文件)
5.测试
filebeat.sh -e /etc/filebeat/filebeat.yml
----示例1:完整的ELK —> 配置filebeat,目标给logstash
1.配置filebeat
vim /etc/filebeat/filebeat.yml
systemctl restart filebeat.service
ss -anput | grep 5044
2.logstash服务器的配置
input => 来自filebeat
filter => geoip 模块
output => 输出给elasticsearch
vim /etc/logstash/conf.d/apachelogs.conf
logstash -f apachelogs.conf -t
3.filebeat的操作
systemctl restart filebeat.service
for i in {1…200}; do j=((((((i %20+1)); curl http://192.168.11.140:80/test$j.html; done(生成日志)
4.测试
----示例2:完整的els搭建
1.filebeat的操作
vim /etc/filebeat/filebeat.yml
redis-cli -a 123.com
2.logstash的操作
input => 来自redis
filter => geoip 模块
output => 输出给elasticsearch
vim /etc/logstash/conf.d/apachelogs2.conf
logstash -f apachelog.conf -t
3.filebeat的操作
systemctl restart filebeat
filebeat.sh -e /etc/filebeat/filebeat.yml
另开窗口产生日志
for i in {1…200}; do j=((((((i %20+1)); curl http://192.168.11.140:80/test$j.html; done
4.测试
六、kibana
1.介绍
kibana 是您走进 Elastic Stack 的窗口,Kibana 让您能够可视化 Elasticsearch 中的数据并操作Elastic Stack,因此您可以在这里解开任何疑问:例如,为何会在凌晨 2:00 被传呼,雨水会对季度数据造成怎样的影响。
① 一张图片胜过千万行日志
Kibana 让您能够自由地选择如何呈现您的数据。或许您一开始并不知道自己想要什么。不过借助Kibana 的交互式可视化,您可以先从一个问题出发,看看能够从中发现些什么。
② 从基础入手
Kibana 核心搭载了一批经典功能:柱状图、线状图、饼图、环形图,等等。它们充分利用了Elasticsearch 的聚合功能。
③ 将地理数据融入任何地图
利用我们的 Elastic Maps Services 来实现地理空间数据的可视化,或者发挥创意,在您自己的地图上实现自定义位置数据的可视化。
④ 时间序列也在菜单之列
您可以利用 Timelion,对您 Elasticsearch 中的数据执行高级时间序列分析。您可以利用功能强大、简单易学的表达式来描述查询、转换和可视化。
⑤ 利用 graph 功能探索关系
凭借搜索引擎的相关性功能,结合 graph 探索,揭示您 Elasticsearch 数据中极其常见的关系。
2.官网下载
https://www.elastic.co/cn/downloads/kibana
3.安装配置
yum -y install kibana-5.5.1-x86_64.rpm
vim /etc/kibana/kibana.yml
systemctl start kibana
打开网页192.168.11.141:5601
kibana目前不会操作,日后更新。
- Linux――ELK(Elasticsearch + Logstash + Kibana)企业日志分析之linux系统history收集展示
- ELK(ElasticSearch+Logstash+Kibana)+redis日志收集分析系统
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(八) elasticsearch配置外网访问及常见错误处理
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(十五) logstash将配置写在多个文件
- Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台
- Centos 6.5 安装nginx日志分析系统 elasticsearch + logstash + redis + kibana
- CENTOS6.5安装日志分析ELK elasticsearch + logstash + redis + kibana
- ELK(日志分析系统): Elasticsearch + Logstash + Kibana集群环境部署及应用
- Centos6.5使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践
- ELK(elasticsearch+logstash+kibana)实现Java分布式系统日志分析架构
- Centos6.5使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践
- Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台
- ELK(elasticsearch+logstash+kibana)日志分析系统
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(十三) kibana 界面查询语法
- ELK(elasticsearch+logstash+kibana)实时日志分析系统搭建
- elasticsearch + logstash + kibana 搭建 ELK 日志分析系统
- Ubuntu 14.04搭建ELK日志分析系统(Elasticsearch+Logstash+Kibana)
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(五) 通过redis扩展logstash
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(七) elasticsearch.yml配置文件详细说明