docker安装ELK详细步骤

系统配置:CentOS7.6 4核4G ELK版本:7.7.1 elastic官网…

系统配置:CentOS7.6 4核4G
ELK版本:7.7.1
elastic官网地址:https://www.elastic.co/cn/
elastic产品地址:https://www.elastic.co/cn/elastic-stack
yum源地址:https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum

前言
日志主要包括系统日志和应用程序日志,运维和开发人员可以通过日志了解服务器中软硬件的信息,检查应用程序或系统的故障,了解故障出现的原因,以便解决问题。分析日志可以更清楚的了解服务器的状态和系统安全状况,从而可以维护服务器稳定运行。

ELK简介
ELK主要由ElasticSearch、Logstash和Kibana三个开源工具组成,还有其他专门由于收集数据的轻量型数据采集器Beats。

Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。

在elasticsearch中,所有节点的数据是均等的。

Logstash :数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。

Kibana :可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。

Filebeat:轻量级数据收集引擎。相对于Logstash所占用的系统资源来说,Filebeat 所占用的系统资源几乎是微乎及微。它是基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择。

版本说明:
Elasticsearch、Logstash、Kibana、Filebeat安装的版本号必须全部一致,不然会出现kibana无法显示web页面。

ELK常见的几种架构:
1 Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。这种架构虽然是官网介绍里的方式,但是往往在生产中很少使用。

2 Elasticsearch + Logstash + filebeat + Kibana
与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,但是这种架构有一个缺点,当logstash出现故障, 会造成日志的丢失。

3 Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如RabbitMQ) + Kibana
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。

架构图:

1.部署elasticsearch

1.1.查看是否安装docker

需要注意的是,如果操作系统版本不是很新不要安装最新版本docker,比如我centos7.2安装docker最新版,后面出现 linux 与 docker 版本的兼容性问题,报错”container init exited prematurely“,卸载docker安装较早版本即可。

注意:关闭selinux、firewall、iptables,防火墙不关闭需对应放通端口,我直接关闭

1.2.查找安装elasticsearch镜像

等待安装完成,查看elasticsearch镜像是否已加载。

1.3.创建挂载目录

1.4.赋予权限
docker中elasticsearch的用户UID是1000.

1.5.创建挂载用配置

1.6.运行elasticsearch
通过镜像,启动一个容器,并将9200和9300端口映射到本机(elasticsearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口)。此处建议给容器设置固定ip,我这里没设置。

1.7.验证安装是否成功

此处我在安装时在宿主机无法访问容器内的es,报错curl: (56) Recv failure: Connection reset by peer,折腾很久解决,问题解决方法见我的另一篇文章:链接。前面的配置已纠正该问题,所以参考本文配置不会出现该问题。

2.部署kibana

2.1.安装kibana

docker images查看是否完成

2.2.获取elasticsearch容器ip

2.3.配置文件
在服务器上新建配置文件,用于docker文件映射。所使用目录需对应新增。
vi /data/elk/kibana/kibana.yml

2.4.运行kibana

2.5.访问
浏览器上输入:http://ip:5601,如无法访问进容器检查配置是否生效

2.6.检查kibana容器配置文件
将配置文件中elasticsearch.hosts地址修改为elasticsearch容器地址。

docker exec -it kibana /bin/bash

vi config/kibana.yml,修改后的配置如下:

重启kibana:docker restart kibana

2.7.重新访问
浏览器上输入:http://ip:5601,由于启动较慢,可多刷新几次。

3.部署logstash
3.1.获取logstash镜像

3.2.编辑logstash.yml配置文件。所使用目录需对应新增。

vi /data/elk/logstash/logstash.yml

3.3.编辑logstash.conf文件,此处先配置logstash直接采集本地数据发送至es

vi /data/elk/logstash/conf.d/syslog.conf

编辑本地rsyslog配置增加:

#配置修改后重启服务

3.4.运行logstash

3.5.测试es接收logstash数据

获取到system-syslog-相关日志,则es已能获取来自logstash的数据,kibana中也同步显示数据。

4.部署filebeat

在需要监测的机器yum安装filebeat

filebeat配置,此处先配置filebeat直接发送数据到es

启动服务

es接收数据查询

可查到filebeat-7.7.1-*数据,kibana中也显示对应数据。

5.filebeat采集数据,logstash过滤,在kibana中显示

5.1删除之前的logstash生成的测试数据

5.2修改filebeat.yml,后重启服务

5.3将之前的syslog.conf重命名为syslog.conf.bak,增加logstash配置 ,其中可增加过滤相关配置,此处未配置。

vi /data/elk/logstash/conf.d/logstash.conf

5.4查看es是否获取数据

filebeat_g-*数据已经获取,kibana中增加相关索引即可。

5.5kibana增加索引

至此安装完成。

后记:本文只是实践并记录了ELK的docker安装方式,参考了下列文档,但这些文档中配置文件较多错误所以自己按调整过的正确配置编辑了本文,仅供参考。

1.ELK详细安装部署_xllove2008的博客-CSDN博客_elk部署

2.ELK 架构之 Logstash 和 Filebeat 安装配置 – 田园里的蟋蟀 – 博客园

3.Linux搭建ELK日志收集系统:FIlebeat+Redis+Logstash+Elasticse

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/2129.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部