社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker安装Zabbix实战

DevOps实战派 • 10 月前 • 336 次点击  
关注公众号,获取更多精彩内容

Zabbix是一款知名的老牌监控系统,可对硬件、操作系统、数据库、网络等多种目标介质进行统一监控,并集成了UI、监控展示、告警、服务发现等多种功能,能够非常高效进行工作。

由于Zabbix产品涉及较多组件,安装的过程往往较为麻烦,需要花费不少时间进行部署调试。

对此,本文将介绍如何基于Docker容器的方式,快速搭建zabbix监控平台,解决大家在安装部署上的痛点。

一. Zabbix架构信息
1. zabbix-server
zabbix 的server 端,负责接收agent发送过来的监控数据,并且提供zabbix的所有核心功能。
2. database
用于存储监控数据和配置信息的数据库,目前常用的有mysql和postgresql两种数据库。
3. zabbix-web
zabbix的UI端,提供操作控制台和监控展示等功能。
4. zabbix-java-gateway
用于监控Java程序的JVM状态,zabbix本身无法直接从jvm获取监控指标,需使用该网关来实现。
5. zabbbix-agent

zabbix的代理端,部署在目标主机上,用于收集主机的监控数据,并提供给到zabbix server。

二. 安装Docker
1. 配置官方yum源
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
2. 安装Docker



    
$ sudo yum install docker-ce docker-ce-cli containerd.io
3. 启动Docker
$ sudo systemctl start docker
4. 查看Docker版本号,确认安装正确。
$ docker version


三. 部署Zabbix组件
zabbix支持mysql/postgresql两种数据库,本示例使用支持mysql的zabbix版本。
1. 安装数据库
下载镜像,zabbix 6.x版本要求使用mysql 8.0。
$ docker pull mysql:8.0
创建存储卷,用于持久化mysql数据。
$ docker volume create -d local  mysql_data #存放mysql数据
$ docker volume create -d local  mysql_logs #存放mysql日志
$ docker volume create -d local  mysql_conf #存放mysql配置文件 
注:存储卷默认存储位置路径为:/var/lib/docker/volume/${volume_name}。关于存储卷的知识,不清楚的朋友可查看此文《Docker容器实战十一:数据存储》


启动容器




    
$ docker run --name mysql-server -t \
   -v mysql_data:/var/lib/mysql \
      -v mysql_logs:/var/log/mysql \
      -v mysql_conf:/etc/mysql \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --restart=unless-stopped \
      -d mysql:8.0 \
      --character-set-server=utf8 --collation-server=utf8_bin \
      --default-authentication-plugin=mysql_native_password
2. 安装zabbix-java-gateway
下载镜像
$ docker pull zabbix/zabbix-java-gateway:alpine-6.2-latest
启动容器
$ docker run --name zabbix-java-gateway -t \
   --restart=unless-stopped \
      -d zabbix/zabbix-java-gateway:alpine-6.2-latest

3. 安装zabbix-server

 下载镜像

$ docker pull zabbix/zabbix-server-mysql:6.2-alpine-latest
创建存储卷,用于存储zabbix配置文件。
$ docker volume create -d local  zabbix_server
启动server容器,开放10051/TCP端口,用于接收监控数据。添加--link参数,实现mysql和java-gateway容器间的互相通信。
$ docker run --name zabbix-server-mysql -t \
    -v zabbix_server:/etc/zabbix \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      --restart=unless-stopped \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:alpine-6.2-latest

注:此方式适合所有容器部署在同一台主机上,如果是分开部署,则在前面的步骤需要开放相关端口,并通过局域网进行连接。

4.  安装Zabbix Web 界面
下载镜像



    
$ docker pull zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest

启动web容器

$ docker run --name zabbix-web-nginx-mysql -t \
   -e PHP_TZ="Asia/Shanghai" \
   -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest
5. 登录zabbix
部署完成后,打开浏览器访问主机地址,即可访问zabbix。
登录账号:Admin    
密码:zabbix
登录后显示界面,部署完成。


四. 安装agent
zabbix agent部署较为简单,你可以使用Docker,也可以使用Yum、二进制包等方式安装,此处演示基于Docker的安装方式。
下载镜像
$ docker pull zabbix/zabbix-agent:alpine-6.2-latest
创建存储卷,用于存储agent配置文件。
$ docker volume create -d local  zabbix_agent

启动agent容器

$ docker run --name zabbix-agent -t \
      -v zabbix_agent:/etc/zabbix \
      -e ZBX_HOSTNAME="host-01" \
      -e ZBX_SERVER_HOST="192.168.214.112" \ 
      -e ZBX_SERVER_PORT=10051 \
      -p 10050:10050 \
      --restart=unless-stopped \
      --privileged \
      -d zabbix/zabbix-agent:alpine-6.2-latest
注:如果是部署在zabbix Server主机上的监控agent,此时的ZBX_SERVER_HOST需改为zabbix server的容器IP,而不能用主机IP。


五. 添加主机 
在目标主机安装好agnt后,即可以在zabbix server端配置相关的主机监控。

1. 点击"Create host”,创建新的主机配置。

2. 配置完成后,静待一会可看到监控目标生效。

3. 查看监控数据,可看到已正常获取。

结语:

相比传统的部署方式,容器化安装无疑是更加方便快捷的选择。学会使用容器来进行部署是一项非常有用的技能,这有利于我们快速地搭建好需要的系统环境,提升工作效率。
------------------------------------------

全文结方便的话可以随手点个“赞”或者“在看”,也欢迎分享文章到朋友圈和技术群,感谢阅读!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/169722
 
336 次点击