基于Docker搭建Zabbix

间隙填充
正睿科技  发布时间:2024-07-12 14:41:03  浏览数:400
关于正睿.png

zabbix简介

zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

zabbix由2部分构成,zabbix server与可选组件zabbix agent。

zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

pmur6hy3nphhs_6c84516b89a747dfa244a18dbda10636.png


镜像准备

docker pull mysql:5.7

       准备mysql5.7镜像。Zabbix需要一个数据库来存储监控数据、配置信息和历史记录等,而MySQL是一种流行的开源关系型数据库,具有高性能、可靠性和易用性等特点,因此被广泛应用于Zabbix的后端存储中。

除了MySQL,Zabbix还支持其他数据库,如PostgreSQL、Oracle和IBM DB2等,这些数据库也都可以作为Zabbix的后端存储。选择哪种数据库取决于具体场景和需求,例如实际负载大小、性能要求、安全性要求等。

pmur6hy3nphhs_840f973ea02140c78d640864900c6095.png

docker pull zabbix/zabbix-server-mysql:centos-latest

下载Zabbix服务器和MySQL(作为Zabbix后端数据库)关联工具,并需基于最新版的CentOS操作系统运行这些组件。

pmur6hy3nphhs_4f8d9d7bc5964f1f857893b9843aed23.png

docker pull zabbix/zabbix-web-nginx-mysql:latest

zabbix-web-nginx-mysql是Zabbix监控系统的Web前端,使用nginx作为Web服务器,使用MySQL作为后端存储。该组件提供了一个用户友好的Web界面,可以让用户方便地浏览和管理监控数据、配置信息和历史记录等。

pmur6hy3nphhs_a574de6b6ef24661825b55c2fa1e123c.png

docker pull zabbix/zabbix-java-gateway:latest

Java Gateway是使用JMX技术来远程管理和监控分布式Java应用程序的代理。它位于Java应用程序和JMX客户端之间,充当中间件,将JMX请求转发到Java应用程序中的相应MBean,并返回结果给JMX客户端。Java Gateway可以处理与多个Java应用程序的连接,从而提供集中的监控和管理接口。

Zabbix Java Gateway具有以下功能:

(1)监控Java应用程序:Zabbix Java Gateway可以监控Java应用程序的性能指标、运行状态和资源使用情况等,比如CPU使用率、内存使用量、线程数等。

(2)数据收集和传输:Java应用程序通过使用Zabbix提供的Java native API,将监控数据发送到Zabbix Java Gateway,然后Zabbix Java Gateway将这些数据转发给Zabbix Server进行处理。

(3)自定义监控项:Zabbix Java Gateway提供了一些特殊接口和函数,使得Java开发人员能够自定义和扩展监控项,以满足特定需求的监控需求。

pmur6hy3nphhs_0798f1f3ca0d4e62b8d6b3b42670b69e.png

docker images

pmur6hy3nphhs_ce80a487a5c04ccd84fe1d0385a83304.png


部署Zabbbix

创建Docker网络

docker network create -d bridge zabbix

pmur6hy3nphhs_713d528f6dc64bef8e4c4ae534c5bba8.png

docker network ls

pmur6hy3nphhs_beefc41df7bd4d3e9416d21aaddacde9.png

启动mysql容器

docker run -dit -p 3306:3306 --name zabbix-mysql --network zabbix -v/etc/localtime:/etc/localtime --restart always  -e MYSQL_DATABASE="zabbix" -eMYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix-password" -eMYSQL_ROOT_PASSWORD="root-password" mysql:5.7

pmur6hy3nphhs_4ab11afa3c8a44b8924b2347a3360210.png

启动zabbix-java-gateway容器

docker run -dit -v /etc/localtime:/etc/localtime --restart=always --name=zabbix-java-gateway --network zabbix zabbix/zabbix-java-gateway:latest

pmur6hy3nphhs_7709100a35454d879627dccd6d91584b.png

启动zabbix-server容器

docker volume create zabbix-server-vol

此处是创建一个Docker卷(Volume)的命令,其中zabbix-server-vol是卷的名称,可以根据需要进行自定义命名。

Docker卷是用于在容器和主机之间共享数据的一种机制。它允许将数据持久化保存,并且可以在不同的容器之间进行共享和重用。使用卷可以确保数据的持久性和可靠性,即使容器被删除或重新创建,数据也会被保留。

在Zabbix监控系统中,zabbix-server-vol是用于存储Zabbix Server容器中的重要数据的卷。这些数据可能包括配置文件、日志文件、数据库文件等。通过创建一个具名卷(named volume),可以方便地将这些数据与容器关联起来,并确保数据的持久性。

创建卷后,可以在启动Zabbix Server容器时使用该卷,并将容器内的特定路径与卷进行映射,从而实现数据的读写操作。例如,可以使用-v zabbix-server-vol:/path/to/data选项将卷挂载到容器内的/path/to/data路径,使得容器内的数据与卷进行同步。

pmur6hy3nphhs_8d86d3de99e847fca1ff35c5f9761d3c.png

docker inspect zabbix-server-vol

此处用于检查指定卷(Volume)的详细信息。

执行该命令后,Docker将返回一个关于卷的JSON格式的输出,其中包含了卷的各种属性和配置信息。这些信息可以帮助用户更好地了解和管理卷。

一般而言,docker inspect zabbix-server-vol命令返回的输出包括以下信息:

  • 卷的名称:即"zabbix-server-vol",用于唯一标识和引用卷。

  • 卷的驱动程序:表示使用哪种驱动程序来实现卷功能。例如,对于本地主机卷,驱动程序可能是local。

  • 卷的挂载点:表示卷被挂载到容器内部的路径,以便在容器和主机之间共享数据。

  • 卷的标签:即用户为卷定义的任意标签,用于进一步描述和分类卷。

  • 创建时间和最后修改时间:表示卷的创建时间和最后一次修改时间。

  • 其他配置项:还包括其他可能与卷相关的配置信息。

pmur6hy3nphhs_dbcaf7055bad4ed48faf442eabc25d59.png

docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/etc/zabbix -v/etc/localtime:/etc/localtime --name=zabbix-server --restart=always --network zabbix -e DB_SERVER_HOST="zabbix-mysql" -eMYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix-password" -e MYSQL_ROOT_PASSWORD="root-password" -eZBX_JAVAGATEWAY="zabbix-java-gateway" zabbix/zabbix-server-mysql:centos-latest

pmur6hy3nphhs_85d076671eb5481090cf3d7750ebfa39.png

启动zabbix-web容器

docker run -dit -p 8080:8080 -v /etc/localtime:/etc/localtime --name zabbix-web --restart=always --network zabbix -e DB_SERVER_HOST="zabbix-mysql" -eMYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix-password" -e MYSQL_ROOT_PASSWORD="root-password" -e ZBX_SERVER_HOST="zabbix-server" zabbix/zabbix-web-nginx-mysql:latest

检查启动项

docker ps -a

pmur6hy3nphhs_40f87f6b52f94562897c37bbb2f36e10.png


Zabbix应用

访问IP:8080端口

pmur6hy3nphhs_8f0376e22b10424090b244f1c7648e83.png

pmur6hy3nphhs_232af573b261402ca742c8e9ba7ffef4.png

问题没解决? 我们帮您!

   如果您在本文中未能找到解决当前问题的办法,不用担心——正睿专业技术支持团队随时待命

服务项目.png

获取更多帮助

   文章来源:阿里云开发者社区作者:周周的奇妙编程