使用Docker搭建Zabbix运维监控系统

2,287次阅读
没有评论

共计 5460 个字符,预计需要花费 14 分钟才能阅读完成。

Zabbix 项目地址

官方文档

Docker 容器地址

启动 MySQL

$ docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      -d mysql:5.7 \
      --character-set-server=utf8 --collation-server=utf8_bin
变量 说明
MYSQL_DATABASE MySQL 用户名
MYSQL_USER MySQL 数据库名
MYSQL_PASSWORD MySQL 数据库密码
MYSQL_ROOT_PASSWORD MySQL ROOT 密码
使用 Docker 搭建 Zabbix 运维监控系统

启动 Zabbix Java gateway 实例

这个实例主要用来监控 Java,不监控 Java 的话可以不安装这个,同时,下方的 Zabbix server 实例中删除 -e ZBX_JAVAGATEWAY="zabbix-java-gateway" 和 --link zabbix-java-gateway:zabbix-java-gateway,这边案例正常安装此实例

$ docker run --name zabbix-java-gateway -t \
      -d zabbix/zabbix-java-gateway:latest
使用 Docker 搭建 Zabbix 运维监控系统

启动 Zabbix server 实例

  • 且关联这个实例到已创建的 MySQL 服务器实例
$ docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      --network host \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:latest
变量 说明
DB_SERVER_HOST 数据库名称
MYSQL_DATABASE MySQL 用户名
MYSQL_USER MySQL 数据库名
MYSQL_PASSWORD MySQL 数据库密码
MYSQL_ROOT_PASSWORD MySQL ROOT 密码
ZBX_JAVAGATEWAY 配置 Zabbix Java gateway,默认不启动
使用 Docker 搭建 Zabbix 运维监控系统

启动 Zabbix web 接口

$ docker run --name zabbix-web-nginx-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="zabbix" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:80 \
      -d zabbix/zabbix-web-nginx-mysql:latest
变量 说明
DB_SERVER_HOST 数据库名称
MYSQL_DATABASE MySQL 用户名
MYSQL_USER MySQL 数据库名
MYSQL_PASSWORD MySQL 数据库密码
MYSQL_ROOT_PASSWORD MySQL ROOT 密码
使用 Docker 搭建 Zabbix 运维监控系统

查询容器状态

[centos@localhost ~]$ docker ps
CONTAINER ID        IMAGE                                  COMMAND                  CREATED              STATUS              PORTS                                            NAMES
1a1f287deff3        zabbix/zabbix-web-nginx-mysql:latest   "docker-entrypoint.sh"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 443/tcp                      zabbix-web-nginx-mysql
0a7691d48275        zabbix/zabbix-server-mysql:latest      "/sbin/tini -- /usr/…"   4 minutes ago        Up 4 minutes        0.0.0.0:10051->10051/tcp                         zabbix-server-mysql
4bc59e83d8c7        zabbix/zabbix-java-gateway:latest      "docker-entrypoint.s…"   6 minutes ago        Up 6 minutes        10052/tcp                                        zabbix-java-gateway
3b1d33a26031        mysql:5.7                              "docker-entrypoint.s…"   17 minutes ago       Up 17 minutes       3306/tcp, 33060/tcp                              mysql-server
b6483f3cac6a        portainer/portainer                    "/portainer"             59 minutes ago       Up 59 minutes       0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp   portainer
使用 Docker 搭建 Zabbix 运维监控系统

访问 ZabbZix

  • 在浏览器输入宿主机 IP:80 进入 WEB 页面
  • 默认用户名:Admin
  • 默认密码:zabbix
使用 Docker 搭建 Zabbix 运维监控系统
  • 成功进去 Zabbix 首页
使用 Docker 搭建 Zabbix 运维监控系统

语言修改

  • 默认为英文,点击右下角的用户图标,然后找到 Language -Chinese(zh_cn),然后点击下方的更新按钮
使用 Docker 搭建 Zabbix 运维监控系统
使用 Docker 搭建 Zabbix 运维监控系统

启动 Docker-Agent(可选)

监控 Docker 容器,可以使用 zabbix-docker-monitoring 项目,使用此项目可以监控宿主机上运行的所有 Docker 状态

https://github.com/monitoringartist/zabbix-docker-monitoring/

$ docker run \
  --name=dockbix-agent-xxl \
  --net=host \
  --privileged \
  -v /:/rootfs \
  -v /var/run:/var/run \
  --restart unless-stopped \
  -e "ZA_Server=<ZABBIX SERVER IP/DNS NAME/IP RANGE>" \
  -e "ZA_ServerActive=<ZABBIX SERVER IP/DNS NAME>" \
  -d monitoringartist/dockbix-agent-xxl-limited:latest
变量 说明
ZA_Server zabbix-server 容器的 IP(非宿主机 IP)/ 域名
ZA_ServerActive zabbix-server 容器的 IP(非宿主机 IP)/ 域名

安装 Zabbix-Agent(Docker 环境)

查询 zabbix-server 容器的 IP

  • 每次重启 Docker,IP 都会发生变化

方式一:

宿主机终端输入如下命令查询,将返回 IPAddress

docker inspect zabbix-server-mysql|grep IPAddress
使用 Docker 搭建 Zabbix 运维监控系统

方式二:

使用 Portainer,访问 IP:9000,找到 Containers - zabbix-server-mysql,网页底部会有个 Connected networks,即可看到桥接的 IP

使用 Docker 搭建 Zabbix 运维监控系统

运行 Zabbix-Agent

  • 以监控 Zabbix 服务器为例,Zabbix-Server 和 Zabbix-Agent 安装在同一台主机的 Docker 上,运行不同的容器
$ docker run \
  --name zabbix-agent \
  -p 10050:10050 \
  -e ZBX_HOSTNAME="HostName" \
  -e ZBX_SERVER_HOST="Zabbix 服务器 IP" \
  -e ZBX_SERVER_PORT=10051 \
  -d zabbix/zabbix-agent
变量 说明
ZBX_HOSTNAME Zabbix 主机名称,服务器本机默认为 Zabbix server
ZBX_SERVER_HOST zabbix-server 容器的 IP(非宿主机 IP)
使用 Docker 搭建 Zabbix 运维监控系统
使用 Docker 搭建 Zabbix 运维监控系统
  • 如果无法上线,需配置防火墙,需要 root 权限
$ firewall-cmd --zone=public --add-port=10050/tcp --permanent
$ systemctl restart firewalld.service
使用 Docker 搭建 Zabbix 运维监控系统

Zabbix 错误警告

  • 出现错误 Zabbix agent is not available (for 3m)
  • Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused
  • 主要原因就是我们是将 Zabbix 服务器和 Zabbix 客户端都安装到了 Docker 上
使用 Docker 搭建 Zabbix 运维监控系统
  • 打开配置 - 主机,接口那的 ip 为 127.0.0.1,这个 IP 是宿主机的 IP,需要修改为 zabbix-agent 容器的 IP
使用 Docker 搭建 Zabbix 运维监控系统
  • 点击名称那的 Zabbix server , 修改为 zabbix-agent 容器的 IP(非 zabbix-server 容器的 IP)

查询 zabbix-agent 容器的 IP

方式一:

宿主机终端输入如下命令查询,将返回 IPAddress

docker inspect zabbix-agent|grep IPAddress
使用 Docker 搭建 Zabbix 运维监控系统

方式二:

使用 Portainer,访问 IP:9000,找到 Containers - zabbix-agent,网页底部会有个 Connected networks,即可看到桥接的 IP

使用 Docker 搭建 Zabbix 运维监控系统
  • agent 代理程序的接口 IP 地址 处,填入刚刚查询到的 zabbix-agent 的 IP
使用 Docker 搭建 Zabbix 运维监控系统
  • 等待几分钟,主机选项卡右侧的可用性中的 ZBX 将由红色变成绿色
使用 Docker 搭建 Zabbix 运维监控系统
  • 打开监测 - 仪表盘,可以看到错误已经消失,可用数量为 1
使用 Docker 搭建 Zabbix 运维监控系统

Debain 安装 Zabbix-Agent(非 Docker 环境)

  • 在其他机器上安装监控,非服务器本机安装
  • 举例在 Deabin 平台下直接安装 Zabbix-agent,本文以 Kali 为演示,Kali 是基于 Deabian 开发的

下载 Zabbix-Agent

  • 选择合适的 Zabbix 平台和对应的系统版本,这边选择 Zabbix 4.4,Debian 10,基于 MySQL+Nginx
使用 Docker 搭建 Zabbix 运维监控系统

添加软件源

  • 下方会有命令提供
使用 Docker 搭建 Zabbix 运维监控系统
  • 下载软件源
$ sudo wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1+buster_all.deb
  • 安装软件源
$ sudo dpkg -i zabbix-release_4.4-1+buster_all.deb
  • 更新软件源
$ sudo apt update
使用 Docker 搭建 Zabbix 运维监控系统

安装 Zabbix-Agent

$ sudo apt install zabbix-agent
使用 Docker 搭建 Zabbix 运维监控系统

修改配置文件

$ sudo vim /etc/zabbix/zabbix_agentd.conf
变量 说明
Server zabbix-server 宿主机 IP(非容器 IP)
ServerActive zabbix-server 宿主机 IP(非容器 IP)
Hostname 主机名称,自定义(这边我取名为 Kali Linux)
使用 Docker 搭建 Zabbix 运维监控系统
使用 Docker 搭建 Zabbix 运维监控系统

开机启动 Zabbix-Agent

$ sudo systemctl enable zabbix-agent
$ sudo systemctl start zabbix-agent

查询 Debain 主机 IP

$ ip addr
使用 Docker 搭建 Zabbix 运维监控系统

添加主机

打开 Zabbix-Server 的 WEB 网页端,然后找到 配置 - 主机 - 创建主机,添加刚刚的主机名称和 IP 地址

变量 说明
主机名称 刚刚自定义的名称(这边自定义叫 Kali Linux)
群组 监控的群组(这边是 Linux 系统,选择 Linux servers)
agent 代理程序的接口 安装 Agent 的机器的 IP 地址
使用 Docker 搭建 Zabbix 运维监控系统
  • 先不要点击下方的更新按钮

添加模板

  • 切换到模板选项卡,点击 Link new templates 右侧的选择
  • 找到 Templates/Operating systems 中的 Template OS Linux by Zabbix agent 并勾选
使用 Docker 搭建 Zabbix 运维监控系统
使用 Docker 搭建 Zabbix 运维监控系统
  • 点击添加按钮,然后稍等片刻

Zabbix-Agent 运行检查

  • 可以看到下方的 ZBX 已经变成绿色上线了
使用 Docker 搭建 Zabbix 运维监控系统

正文完
 
Hlynford
版权声明:本站原创文章,由 Hlynford 2020-03-15发表,共计5460字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)