docker构建基本的ElasticSearch+Logstash+Kibana(ELK)服务

Logstash为服务端数据处理管道,可以从多各渠道采集数据并进行处理,然后输出到指定的存储库中;Elasticsearch为一个大数据存取、分析的全文搜索引擎;Kibana主要用来进行数据的可视化展示,与Grafana功能相同;借助于ELK可以实现数据通过Logstash进行筛选处理;然后将数据存储到ES中,支持海量数据的全文搜索;最后在Kibana中对数据进行可视化展示这样一条龙的处理。本文将使用Docker部署ELK服务,以及简单日志分析服务的构建。

1、ElasticSearch服务

首先获取ES的镜像文件,这里以version:7.12.0为例:

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.12.0

然后启动一个单节点(single-node)的ES集群:

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.12.0

# 由于ES服务较消耗内存,因此启动时可以进行内存大小设置
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m"docker.elastic.co/elasticsearch/elasticsearch:7.12.0

# 9200端口主要用于外部通讯
# 9300端口用于ES集群之间通信

也可以使用docker-compose来构建多节点的集群以及更详细的ES配置,可以参考:ES服务Docker部署

进行连接测试,在浏览器中输入ES地址,显示如下信息说明已经配置完成:
在这里插入图片描述

2、Kibana服务
2.1、Kibana服务构建

镜像获取,以version:7.12.0为例:

docker pull docker.elastic.co/kibana/kibana:7.12.0

构建Kibana服务,并与ES服务建立连接:

ocker run -d --name kibana -e ELASTICSEARCH_URL=[es地址,如:http://localhost:9200] -p 5601:5601 docker.elastic.co/kibana/kibana:7.12.0

更多的相关配置可以参考官网:Kibana服务Docker部署

2.2、Kibana服务测试

在这里插入图片描述
测试Kibana服务与ES服务的连接,点击Kibana客户端上的Dev tools,进入如下页面:
在这里插入图片描述
可以在Console中进行ES相关语句的操作。

3、Logstash服务
3.1、Logstash服务搭建

先来获取镜像,同样的以version:7.12.0为例:

docker pull docker.elastic.co/logstash/logstash:7.12.0

接下来需要进行Logstash配置文件的构建,Logstash的配置文件主要分为两种 Settings and Pipeline ConfigurationPipeline Configuration类型配置文件主要是对Pipeline的inputfilteroutput进行配置,大致结构如下:

input {
  ...
}
filter {
  ...
}
output {
  ...
}

这里可以按照上述格式进行解析日志文件Pipeline的配置(logstash.conf):

input {
 file { # 数据输入的类型,从文件中输入
   path=>"/data/api.log" # 文件所在位置,docker容器中的目录
   start_position => "beginning" # 从文件什么地方开始读取,有两个值可以选:end——文件末尾;begining——从文件首行开始
 }
}
output {
  elasticsearch{ # 输出数据到es中
     hosts=>["172.22.34.1:9200"] # es的位置,这里使用es服务宿主机ip,使用localhost时访问不过去
     index => "es-message-%{+YYYY.MM.dd}" # 数据存储到es中时,设置的index名称,格式为`es-message-年.月.日`
  }
  stdout { codec => json } # 设置数据的输出格式
}

更多的配置可以参考官网文档:Logstash配置文件Pipleline configuration

接下来进行Settings Configuration类型配置文件的配置,该类型配置文件主要用来控制Logstash的执行的,例如设置Pipleline配置的位置,日志记录选项等其他设置,具体的配置项可以参考:Logstash中的settings documentation,这里介绍下本次构建Logstash服务时用到的配置:

pipeline:
  id: main  # 配置pipeline的id
path:
  config: /usr/share/logstash/conf.d/*.conf # 这里是管道的配置文件的地址
  logs: /var/log/logstash  # logstash日志存储的目录
config:
  reload:
    automatic: true # 定期检查配置是否已更改,并在更改后重新加载配置
    interval: 5s  # Logstash多长时间检查一次配置文件中的更改。必须使用单位限定符(s)

完成以上两项之后就可以构建Logstash容器,然后启动服务了,使用如下命令:

docker run -it -d -p 9600:9600 -p 5044:5044 --name logstash 
-v /root/Elastic/Logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml # 挂载logstash基本配置
-v /root/Elastic/Logstash/pipline/:/usr/share/logstash/conf.d/  # 挂载管道信息配置
-v /root/Elastic/Logstash/data/api.log:/data/api.log  # 挂载日志文件地址,要将宿主机的日志数据,与容器内的挂载
docker.elastic.co/logstash/logstash:7.12.0

完成以上的内容就实现了Logstash服务的构建以及与ES服务的连接。

3.2、Logstash与ES连接测试

首先在宿主机目录/root/Elastic/Logstash/data/下建立文件api.log,内容如下所示:

测试数据1;
测试数据2;
测试数据3;
测试数据4;
测试数据5;
测试数据6;

然后在Kibana中查看日志内容是否已经解析到ES中,在Kibana的Dev tools中进行如下操作:
在这里插入图片描述
即可看到api.log中的日志信息已经同步解析到ES中。

注意:
    使用ELK时,需要使用的版本一致!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值