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

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

文章转载自: ++老猿新码++

原文链接: https://www.cnblogs.com/netcore3/p/18286280

体验地址: 引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

相关推荐
爱宇阳1 天前
Java Spring Boot 项目 Docker 容器化部署教程
java·spring boot·docker
掘根1 天前
【Docker】网络
网络·docker·容器
阿萨德528号1 天前
Redis 分布式锁进阶:跨语言场景下的锁兼容性与一致性保障
数据库·redis·分布式
爱宇阳1 天前
从容器化到自动化:Vue3 项目 Docker 部署与 GitLab CI/CD 集成 Harbor 全流程
docker·自动化·gitlab
ejinxian1 天前
Linux 虚拟化技术 KVM/ESXI/Docker
linux·运维·docker·qemu·openvz
新疆嘉博智选科技有限公司1 天前
Macos系统上搭建Hadoop详细过程
大数据·hadoop·分布式
lxmyzzs1 天前
vscode-ssh无法进入docker问题解决
vscode·docker·ssh
Candice_jy1 天前
vscode运行ipynb文件:使用docker中的虚拟环境
服务器·ide·vscode·python·docker·容器·编辑器
roman_日积跬步-终至千里1 天前
【Docker下部署高可用】StarRocks 存算一体架构高可用部署要点
docker·容器·架构
一周困⁸天.2 天前
Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】
大数据·elk·elasticsearch·jenkins