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

2,671次阅读
没有评论

共计 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协议发布,转载请注明出处。
评论(没有评论)