介绍
所谓elk分别表示elasticsearch,logstash,kibana。
Elasticsearch:是一个分布式的开源搜索和分析引擎,适用所有类型的数据,包括文本,数字,结构化和非结构化的数据;一个近乎实时查询的全文搜索引擎,elasticsearch的设计目标就是要能够处理和搜索巨量的日志数据
Logstash:读取原始日志,并对其进行分析和过滤,然后将其转发给其他组件(比如Elasticsearch)进行索引或存储,logstash支持丰富的Input和output类型,能够处理各种应用的日志
Kibana: 一个基于 JavaScript 的 Web 图形界面程序,专门用于可视化 Elasticsearch 的数据。Kibana 能够查询 Elasticsearch 并通过丰富的图表展示结果。用户可以创建 Dashboard 来监控系统的日志
Filebeat:引入filebeat作为日志搜集器,主要是为了logstash开销大的问题,相比logstash,filebeat所占系统的cpu和内存几乎可以忽略不计
日志处理流程
Filebeat将日志发送给logstash进行分析和过滤,然后由logstash转发给elasticsearch,最后由kibana展示elasticsearch的数据
环境以及软件版本
系统:centos7.7
主机:192.168.0.192
Filebeat: filebeat-6.2.4-x86_64.rpm
Elk:sebp/elk: latest
docker安装配置
docker安装配置这里就不重复了,记得配置阿里云加速器就ok
elk安装与配置
设置内存大小
运行elk镜像需要vm.max_map_count至少262144内存
-
编辑系统配置文件,添加以下内容
vim /etc/sysctl.confvm.max_map_count = 262144 -
wq保存退出
-
查看是否生效
sysctl –p
安装elk
这里使用docker-elk的集成版,就不一个个镜像下载了
-
拉取镜像
docker pull sebp/elk -
查看镜像
docker images -
启动elk
docker run -dit --name elk \ -p 5601:5601 \ -p 9200:9200 \ -p 5044:5044 \ -v /home/elk:/var/lib/elasticsearch \ -v /etc/localtime:/etc/localtime \ sebp/elk-p:三个端口分别对应Kibana,elasticsearch,logstash的端口
-v:将容器目录和宿主机目录进行挂载,以便数据同步
访问
以上便是elk安装启动的过程,下面进行访问,测试安装是否成功
-
Elasticsearch
-
Kibana
修改
出现上图表示安装启动成功,下面进行一些简单的修改,在演示和测试环境中,ssl是不必要的,可以去掉logstash的ssl
-
进入elk容器编辑配置文件,删除ssl认证相关配置
docker exec -it elk bashvim /etc/logstash/conf.d/02-beats-input.conf将以下内容删除
网友的经验之谈,如下图所示
-
退出容器并重启
docker restart elk(或者容器ID)
filebeat安装和配置
这里安装filebeat有两种方式,一种直接在线安装,另一种就是使用docker镜像拉取进行配置,docker的好处就是可以与宿主机完全隔离,要删除的话直接删除镜像就完事了,这里我使用的是直接在线安装的方式
安装filebeat
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-x86_64.rpm
注意:以上方式亲测,奇慢无比,建议直接复制 artifacts.elastic.co/downloads/b… 链接到浏览器下 载到桌面,最后上传到服务器
上传之前将下载一半的filebeat删除并卸载
-
查看安装的filebeat
rpm -qa | grep filebeat -
卸载filebeat
yum –y remove filebeat-6.2.4-1.x86_64 -
上传
这里我上传到/root目录
-
安装
sudo rpm -vi filebeat-6.2.4-x86_64.rpm -
配置
安装完之后配置文件默认在下图所示目录
vim /etc/filebeat/ filebeat.yml -
修改
enabled:fasle修改成true(filebeat 6.0后,enabled默认为关闭,必须要修改成true)
paths:表示你想要抓取分析的日志所在路径,我这里就不改了,一般指向项目产生日志的所在目录
找到下图所示将elasticsearch注释,logstash放开并配置主机ip+端口
配置改为上图所示。注释掉Elasticsearch output,开启Logstash output。 如果直接将日志发送到Elasticsearc,请编辑此行:Elasticsearch output 如果直接将日志发送到Logstash,请编辑此行:Logstash output 只能使用一行输出,其它的注掉即可
修改完成后保存退出
-
重启filebeat
/etc/init.d/filebeat restart
访问kibana并创建默认索引
上面默认索引创建完成,这时候控制台就会显示/var/log/下所有日志文件的日志,这是我们在/etc/filebeat/filebeat.yml配置的
测试
现在我们手动写入一个日志文件到/etc/log/下,如下图所示
echo 'liucong 大傻子 ......' >> /var/log/info.log
再看控制台,点击刷新就出来了