使用docker搭建ELK分布式日志同步方案

docker,elk · 浏览次数 : 21

小编点评

本文将指导您如何使用Docker快速搭建一套ELK(Elasticsearch、Logstash、Kibana)日志同步方案。我们将从Elasticsearch、Kibana和Logstash三个组件出发,详细介绍它们的配置和启动方法。 一、Elasticsearch 1. 拉取官方源镜像: ``` docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "xpack.security.enabled=false" elasticsearch:8.14.1 ``` 2. 配置说明: - discovery.type:设置为single-node,表示单节点模式。 - xpack.security.enabled:若为true,需要授权访问,但内网环境下可省略此参数。 二、Kibana 1. 拉取Kibana镜像: ``` docker run -d --name kibana --link elasticsearch -p 5601:5601 kibana:7.17.22 ``` 2. 配置说明: - 无需额外配置,与Elasticsearch容器关联即可。 三、Logstash 1. 拉取Logstash镜像: ``` docker run -d --name logstash -v /Logs:/Logs -v /root/logstash.conf:/usr/share/logstash/pipeline/logstash.conf logstash:7.17.22 ``` 2. 配置说明: - input:选择文件输入源,地址应与程序容器日志挂载点相同。 - output:选择elasticsearch输出源,连接到Elasticsearch容器。 - 注意:若Elasticsearch容器启用了xpack.security.enabled,需在Logstash配置中添加相应授权配置。 四、Web站点 1. 拉取Web站点镜像: ``` docker run -d --name web -p 5000:80 -v /Logs:/app/Logs -v /etc/localtime:/etc/localtime -e TimeZone=Asia/Shanghai webapplication1:latest ``` 2. 配置说明: - -v /Logs:/app/Logs:将容器的日志文件夹挂载到主机文件上。 - -v /etc/localtime:/etc/localtime:同步主机时间。 - -e TimeZone=Asia/Shanghai:同步主机时区。 完成以上步骤后,ELK日志收集方案基本搭建完毕。程序产生的日志将通过挂载同步到主机,然后同步进Logstash的容器。Logstash将定时读取日志数据,并通过Elasticsearch的API写入数据库,最后通过Kibana的可视化界面进行分析。

正文

ELK作为业界最常用日志同步方案,我们今天尝试一下使用docker快速搭建一套ELK方案。ELK使用国内加速源拉取的镜像比较旧,有条件的朋友可以拉取官网的源。elasticsearch作为日志储存库(数据库),kibana的作用通过elasticsearch的API接口调取其中数据作可视化分析,logstash的作用就是将程序生成的日志同步到elasticsearch。

搭建Elasticsearch

docker run 
-d 
--name elasticsearch 
-p 9200:9200 
-p 9300:9300 
-e "discovery.type=single-node" 
-e "xpack.security.enabled=false" 
elasticsearch:8.14.1

其中discovery.type必填,不然启动失败,简单选择单节点规模,如果在内网建议填写xpack.security.enabled为false,因为默认值是true,默认elasticsearch需要授权访问,内网网络这一步可以省掉。

搭建kibana

docker run 
-d 
--name kibana 
--link elasticsearch 
-p 5601:5601 
kibana:7.17.22

通过docker的link参数,与刚刚搭建的elasticsearch容器关联起来,默认数据就会关联起来,elasticsearch通过API进行数据访问,如果刚才搭建elasticsearch容器xpack.security.enabled没有填写false,此时则需要配置授权。

搭建Web站点

docker run 
-d 
--name web 
-p 5000:80 
-v /Logs:/app/Logs 
-v /etc/localtime:/etc/localtime 
-e TimeZone=Asia/Shanghai 
webapplication1:latest

拉取网站镜像启动容器,切记同步一下主机的时间和时区,容器默认是国际标准时间和时区,会有8个小时的差值。-v /etc/localtime:/etc/localtime的作用是同步主机时间,-e TimeZone=Asia/Shanghai的作用是同步主机时区。

-v /Logs:/app/Logs作用是挂载点,将容器的日志文件夹挂载到主机文件上面,这一步很重要,logstash同步日志需要挂载这个主机的日志文件夹。

搭建Logstash

logstash需要先配置参数,才可以启动镜像。

input {
  file {
    path => "/Logs/*.txt"
    start_position => "beginning"
  }
}
 
filter {
}
 
output {
  elasticsearch {
    hosts => ["http://192.168.3.105:9200"]
    index => "logstash-%{+YYYY.MM.dd}"
  }
}

input是输入源,选择文件,地址应该是与程序容器日志挂载点相同。
output是输出源,选择elasticsearch,填写刚刚启动的elasticsearch容器,如果搭建elasticsearch容器xpack.security.enabled没有填写false,此时则需要配置授权。

docker run 
-d 
--name logstash 
-v /Logs:/Logs 
-v /root/logstash.conf:/usr/share/logstash/pipeline/logstash.conf 
logstash:7.17.22

将主机的日志挂载点传进容器,将logstash.conf配置文件挂载进去。

四个容器启动之后,ELK日志收集方案就基本搭建完毕,程序生产的日志通过挂载同步到主机,再同步进logstash的容器,由logstash定时读取将数据通过elasticsearch的API写入库,再通过kibana的可视化界面进行分析。

访问kibana可视化界面可以就进行日志实时同步分析,根据我的容器端口和IP地来看,我的kibana站点地址是:http://192.168.3.105:5601

 

更多系列文章

构建高性能,可伸缩,高可用,安全,自动化,可溯源,整体式应用构架体系

 

与使用docker搭建ELK分布式日志同步方案相似的内容:

使用docker搭建ELK分布式日志同步方案

ELK作为业界最常用日志同步方案,我们今天尝试一下使用docker快速搭建一套ELK方案。ELK使用国内加速源拉取的镜像比较旧,有条件的朋友可以拉取官网的源。elasticsearch作为日志储存库(数据库),kibana的作用通过elasticsearch的API接口调取其中数据作可视化分析,lo

EMQX配置ssl/tls双向认证+SpringBoot项目整合MQTT_真实业务实践

一.使用docker搭建Emqx 1.拉取emqx镜像 docker pull emqx/emqx:5.7 2.运行 docker run -d --name emqx emqx/emqx:5.7 3.拷贝 docker中 etc data log 到宿主机的 /opt/emqx 下 mkdir -

docker 搭建私有仓库并发布私有镜像

本文为博主原创,转载请注明出处: 1.自建私有docker仓库 自建一个Docker仓库,可以使用Docker官方提供的开源项目Docker Registry。以下是一些基本步骤: 安装Docker Registry: 在服务器上安装Docker引擎。 使用以下命令拉取Docker Registry

利用Docker、云服务器、mongodb搭建自己的测试平台

准备一个云服务器 购买一个云服务器,在阿里云,腾讯云上购买即可。 然后创建一个实例,安装Linux操作系统,我安装的是CentOS。 记住账号和密码,可以使用ssh远程登录即可。 搭建测试环境 Docker是一个轻量级的虚拟机,可以使用Docker下载一个Docker里面包含你想要的环境的镜像 比如

使用Cloudflare Worker加速docker镜像

前言 开发者越来越难了,现在国内的docker镜像也都️了,没有镜像要使用docker太难了,代理又很慢 现在就只剩下自建镜像的办法了 GitHub上有开源项目可以快速搭建自己的镜像库,不过还是有点麻烦,还好Cloudflare暂时还活着‍ 本文记录一下使用 Cloudf

Gitlab搭建

目录Gitlab1. 使用docker部署gitlab2. 登录gitlab2.1 修改语言为中文2.3 修改密码3. 用户管理3.1 创建用户4. 配置ssh拉取代码4.1 添加ssh密钥4.2 测试拉取 Gitlab 1. 使用docker部署gitlab [root@master ~]# mk

最快速搭建个人服务器图床siuuuuu

@目录1.服务器准备2.docker 安装(1)通过命令行的方式(2)宝塔面板上安装3.开启端口访问什么是docker4.docker安装minio什么是minio5.配置minio6.picgo下载与配置 本文记录使用docker+minio+picgo超快速搭建自己服务器个人图床! 1.服务器准

跨主机Docker容器通信的学习

背景 骨折在家找自己的人比较少. 又因为出不去也没法做运动,就不如将之前没学习深入的地方学习下 先是进行Docker 搭建 redis cluster的处理. 当时发现必须使用 --net=host进行. 本来想尝试进行 overlay的网咯进行搭建 当然有一个目的是验证 overlay的性能损耗

基于 Cloudflare Workers 和 cloudflare-docker-proxy 搭建镜像加速服务

本文主要介绍了如何基于 Cloudflare Workers 和 cloudflare-docker-proxy 搭建 dockerhub、gcr、quay 等镜像加速服务。 最近,受限于各种情况,部分主流镜像站都关了,为了能够正常使用,建议自己搭建一个加速器。 写文之前,也已经部署好了一个,可以直

debian11 使用podman搭建 nacos-server

前言 基于debian11 + podman 搭建 nacos-server 用于简单测试。 nacos-server基于java,如果直接运行还要准备java环境,在docker/podman 镜像中发现了打包好的nacos-server镜像,集成了java和nacos-server。 正文 1.