分享

Docker安装及安装单机版ELK日志收集系统

 新进小设计 2022-06-17 发布于北京

概述

现在Elasticsearch是比较火的, 很多公司都在用. 而Docker也正如火如荼, 所以我就使用了Docker来安装ELK, 这里会详细介绍下安装的细节以及需要注意的地方. 先来强调一下, Elasticsearch和Kibana必须用相同版本, 这个可以避免很多坑。

日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

开源实时日志分析ELK平台由ElasticSearch、Logstash和Kiabana三个开源工具组成:

1)ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。在elasticsearch中,所有节点的数据是均等的。

2)Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

3)Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

ELK工作原理展示图:

 

如上图:Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。

ELK环境部署

CentOS7.8系统上安装docker,并用docker安装ELK单机日志手机系统平台。

一、准备工作

1,系统环境

系统:CentOS7.8

防火墙:关闭

Centos7防火墙关闭方法与Centos6的有所区别

CentOS6关闭防火墙使用以下命令:

CentOS7中关闭防火墙使用以下命令:

selinux:关闭

selinux关闭方式有两种,一种是临时关闭,另一种是永久关闭。

临时关闭方式:

永久关闭方式:

编辑配置文件/etc/selinux/config

首先执行yum update –y升级操作系统到最新版本,

[root@docker-srv ~]#cat /etc/redhat-release

CentOS Linux release 7.8.2003 (Core)

配置安装docker-ce19.03.11的yum源,

yum install –y yum-utils device-mapper-persistent-data lvm2

yum-config-manager \

--add-repo \

https://download./linux/centos/docker-ce.repo

执行yum install docker-ce-19.03.11* -y

验证安装

安装完成后,运行下面的命令,验证是否安装成功。

docker version 

 

docker info

 

 

 配置docker加速器

vi /etc/docker/daemon.json

 

systemctl daemon-reload

systemctl restart docker

systemctl enable docker

docker安装到此结束!

1,接下来用docker安装ELK,拉取镜像:

首先安装elasticsearch

docker pull elasticsearch:7.6.2

敲完命令后回车, 只需要等镜像下载完就成了. 一共791MB, 耐心等待.

2,启动ES

安装完成以后当然需要去启动了, 启动也很方便, 只需要一行命令即可.

docker run --name es1 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.6.2

启动后可以先查看一下,名称自定义!

 

3. 测试安装

我们可以去检查ES是否安装完成, 可以输入命令:

curl http://localhost:9200

 

注意: 需要关闭防火墙或放行9200端口

安装Kibana

Kibana是一个开源的分析和可视化平台, 被设计用于和Elasticsearch一起工作. 我们可以通过Kibana来搜索, 查看, 并和存储在Elasticsearch索引中的数据进行交互, 并轻松地执行高级数据分析, 以各种图标, 表格和地图的形式可视化数据.

Kibana使得理解大量数据变得很容易. 它简单的, 基于浏览器的界面使你能够快速创建和共享动态仪表板, 实时显示Elasticsearch查询的变化.

1. 拉取镜像

同样适用docker安装Kibana命令如下:

docker pull kibana:7.6.2

这个比较大, 有1.01GB, 耐心等待…

2. 启动Kibana

安装完成以后需要启动Kibana容器, 我们需要使用--link参数将Kibana连接到Elasticsearch容器, 命令如下:

docker run --name kibana --link es1:elasticsearch -p 5601:5601 -d kibana:7.6.2

其中, --link es:elasticsearch中的es是Docker中Elasticsearch容器名, 你也可以替换成对应的容器ID.

3. 配置汉化

默认情况下, Kibana界面是英文的, 不过Kibana 7中官方加入了中文的选项, 汉化包位置: /usr/share/kibana/x-pack/plugins/translations/translations/zh-CN.json

我们需要进入Kibana容器, 编辑/usr/share/kibana/config/kibana.yml文件, 在末尾添加i18n.locale: zh-CN即可. 注意冒号后一定要有空格!

docker exec -it kibana /bin/bash

cd config/

vi kibana.yml

exit

 

然后重启Kibana

docker restart kibana

4. 测试安装

启动以后可以打开浏览器输入http://你的IP:5601就可以打开Kibana的界面了. 上图

 

ES的其他设置

在使用Elasticsearch时, 我们还需要进行一些设置. 例如解决跨域访问和中文分词.

1. 解决跨域访问

首先进入到ES容器中, 然后进入到指定目录修改elasticsearch.yml文件

docker exec -it es /bin/bash

cd config/

vi elasticsearch.yml

在elasticsearch.yml的文件末尾加上

http.cors.enabled: true

http.cors.allow-origin: "*"

修改配置后重启容器即可

docker restart es1

 

2. 安装IK中文分词器

ES自带的分词器对中文分词不友好, 所以我们下载开源的IK分词器来解决这个问题. 首先进入到plugins目录中下载分词器, 下载完成后解压, 再重启ES即可. 具体步骤如下:

docker exec -it es /bin/bash

cd plugins/

elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip

exit

Elasticsearch的版本和IK分词器的版本需要保持一致, 不然在重启的时候会失败. 可以点击查看所有版本, 选择合适的版本右键复制链接地址即可.

然后重启容器, 可以在Kibana界面的dev tools中验证是否安装成功

 

安装elasticsearch head插件监控管理

docker pull mobz/elasticsearch-head:5

docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5

在浏览器中打开elasticsearch-head页面,填入ElasticSearch地址

 

 

安装filebeat+logstash进行日志过滤

在客户端机器上面安装filebeat

配置yum源

cat /etc/yum.repos.d/filebeat.repo

[filebeat]

name=Elasticsearch repository for 7.x packages

baseurl=https://artifacts./packages/7.x/yum

gpgcheck=0

gpgkey=https://artifacts./GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

执行yum makecache && yum install filebeat* -y

vi /etc/filebeat/filebeat.yml

 

 

 

 

systemctl restart filebeat

docker pull logstash:7.6.2

docker run -itd --name logstash -p 5044:5044 -v /etc/logstash/config:/usr/share/logstash/config -v /etc/logstash/pipeline:/usr/share/logstash/pipeline logstash:7.6.2

cat /etc/logstash/config/logstash.conf

 

 

最后提醒:线上环境要求持续提供服务,即使在服务器出现问题时,及时修复及时提供服务,比如异常断电宕机,或者重启机器后,所以需要配置docker及各个服务器开机自动启动!

Docker容器启动时加入--restart=always 就ok啦!

 

白驹过隙,当看到比你优秀的人比你还努力的时候,你也会越来越优秀,相信越努力越幸运!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多