1. 首页
  2. 技术知识

基于docker安装zabbix的详细教程

目录

    基于docker安装zabbix1、zabbix配置2、存储配置

      格式化磁盘创建pv创建vg创建lv创建文件系统创建挂载目录挂载分区写入启动项

    3、安装docker4、修改docker存储路径5、创建专用于 Zabbix 组件容器的网络:6、创建mysql库

      [废弃]6、docker安装mysql拉取mysql镜像创建mysql容器添加防火墙端口

    7、安装zabbix-java-gateway8、安装zabbix-server

      安装zabbix-server(基于Alphine)配置企业微信脚本安装python环境添加防火墙端口

    9、安装zabbix-web-nginx-mysql 创建容器

      添加防火墙端口访问zabbix服务

    10、安装zabbix-agent(yum安装)

      a. 安装Zabbix资源库b. 安装 Zabbix agentc. 启动 Zabbix agentd.root用户启动e.配置防火墙

基于docker安装zabbix


1、zabbix配置

用途 ip 账户
zabbix服务端 192.168.1.1 账户:Admin 密码:zabbix
zabbix-mysql数据库 192.168.1.2 数据库:zabbix,用户:zabbix 密码:123456


2、存储配置

存储规划

docker镜像文件默认存储路径:/var/lib/docker

为避免系统磁盘空间不足影响docker服务正常运行,需要调整docker默认存储路径。

通用存储建议:

1、目录/data:用于存储数据文件;

2、目录/APP:用于存储应用文件;

3、数据盘建议使用卷管理模式,便于后期扩容

综上,对应zabbix服务安装,建议:

1、目录/data/docker用于存储docker文件;

1、目录/data/zabbix用于存储zabbix相关配置文件;

格式化磁盘

  1. [root@s01 ~]# fdisk -l
  2. Disk /dev/vda: 64.4 GB, 64424509440 bytes, 125829120 sectors
  3. Units = sectors of 1 * 512 = 512 bytes
  4. Sector size (logical/physical): 512 bytes / 512 bytes
  5. I/O size (minimum/optimal): 512 bytes / 512 bytes
  6. Disk label type: dos
  7. Disk identifier: 0x0001598a
  8.    Device Boot      Start         End      Blocks   Id  System
  9. /dev/vda1            2048     8390655     4194304   82  Linux swap / Solaris
  10. /dev/vda2   *     8390656   125829086    58719215+  83  Linux
  11. Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
  12. Units = sectors of 1 * 512 = 512 bytes
  13. Sector size (logical/physical): 512 bytes / 512 bytes
  14. I/O size (minimum/optimal): 512 bytes / 512 bytes
  15. [root@s01 ~]# lsblk
  16. NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
  17. vda    253:0    0   60G  0 disk
  18. ├─vda1 253:1    0    4G  0 part [SWAP]
  19. └─vda2 253:2    0   56G  0 part /
  20. vdb    253:16   0  100G  0 disk
  21. [root@s01 ~]# fdisk /dev/vdb
  22. Welcome to fdisk (util-linux 2.23.2).
  23. Changes will remain in memory only, until you decide to write them.
  24. Be careful before using the write command.
  25. Device does not contain a recognized partition table
  26. Building a new DOS disklabel with disk identifier 0x4dee972c.
  27. Command (m for help): n
  28. Partition type:
  29.    p   primary (0 primary, 0 extended, 4 free)
  30.    e   extended
  31. Select (default p):
  32. Using default response p
  33. Partition number (1-4, default 1):
  34. First sector (2048-209715199, default 2048):
  35. Using default value 2048
  36. Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
  37. Using default value 209715199
  38. Partition 1 of type Linux and of size 100 GiB is set
  39. Command (m for help): p
  40. Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
  41. Units = sectors of 1 * 512 = 512 bytes
  42. Sector size (logical/physical): 512 bytes / 512 bytes
  43. I/O size (minimum/optimal): 512 bytes / 512 bytes
  44. Disk label type: dos
  45. Disk identifier: 0x4dee972c
  46.    Device Boot      Start         End      Blocks   Id  System
  47. /dev/vdb1            2048   209715199   104856576   83  Linux
  48. Command (m for help): w
  49. The partition table has been altered!
  50. Calling ioctl() to re-read partition table.
  51. Syncing disks.
  52. [root@s01 ~]# lsblk
  53. NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
  54. vda    253:0    0   60G  0 disk
  55. ├─vda1 253:1    0    4G  0 part [SWAP]
  56. └─vda2 253:2    0   56G  0 part /
  57. vdb    253:16   0  100G  0 disk
  58. └─vdb1 253:17   0  100G  0 part

复制代码
创建pv

  1. [root@s01 ~]# pvcreate /dev/vdb1
  2.   Physical volume “/dev/vdb1” successfully created.
  3. [root@s01 ~]# pvs
  4.   PV         VG Fmt  Attr PSize    PFree
  5.   /dev/vdb1     lvm2 —  <100.00g <100.00g

复制代码
创建vg

  1. [root@s01 ~]# vgcreate vg0 /dev/vdb1
  2.   Volume group “vg0” successfully created
  3. [root@s01 ~]# vgs
  4.   VG  #PV #LV #SN Attr   VSize    VFree
  5.   vg0   1   0   0 wz–n- <100.00g <100.00g

复制代码
创建lv

  1. [root@s01 ~]# lvcreate -l 100%VG -n lv_1 vg0
  2.   Logical volume “lv_1” created.
  3. [root@s01 ~]# lvs
  4.   LV   VG  Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  5.   lv_1 vg0 -wi-a—– <100.00g

复制代码
创建文件系统

  1. [root@s01 ~]# mkfs.xfs /dev/vg0/lv_1
  2. meta-data=/dev/vg0/lv_1          isize=512    agcount=4, agsize=6553344 blks
  3.          =                       sectsz=512   attr=2, projid32bit=1
  4.          =                       crc=1        finobt=0, sparse=0
  5. data     =                       bsize=4096   blocks=26213376, imaxpct=25
  6.          =                       sunit=0      swidth=0 blks
  7. naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
  8. log      =internal log           bsize=4096   blocks=12799, version=2
  9.          =                       sectsz=512   sunit=0 blks, lazy-count=1
  10. realtime =none                   extsz=4096   blocks=0, rtextents=0

复制代码
创建挂载目录

  1. [root@s01 ~]# mkdir /data

复制代码
挂载分区

  1. [root@s01 ~]# mount /dev/vg0/lv_1 /data
  2. [root@s01 ~]# df -Th
  3. Filesystem           Type      Size  Used Avail Use% Mounted on
  4. devtmpfs             devtmpfs  7.8G     0  7.8G   0% /dev
  5. tmpfs                tmpfs     7.8G     0  7.8G   0% /dev/shm
  6. tmpfs                tmpfs     7.8G  8.7M  7.8G   1% /run
  7. tmpfs                tmpfs     7.8G     0  7.8G   0% /sys/fs/cgroup
  8. /dev/vda2            ext3       55G  2.7G   50G   6% /
  9. /dev/mapper/vg0-lv_1 xfs       100G   33M  100G   1% /data
  10. tmpfs                tmpfs     1.6G     0  1.6G   0% /run/user/0

复制代码
写入启动项

  1. # vi /etc/fstab
  2. # 新增内容:
  3. /dev/vg0/lv_1  /data xfs    defaults        1 2

复制代码
3、安装docker

  1. # 查看操作系统版本
  2. $ cat /etc/redhat-release
  3. CentOS Linux release 7.2.1511 (Core)
  4. # 安装docker
  5. $ yum install -y docker
  6. # 查看docker版本
  7. $ docker -v
  8. Docker version 1.13.1, build 7d71120/1.13.1

复制代码
4、修改docker存储路径

docker默认存储路径:/var/lib/docker

新存储路径:/data/docker

  1. $ docker -v
  2. Docker version 1.13.1, build 7d71120/1.13.1
  3. # 停止docker
  4. $ systemctl stop docker
  5. # 设置docker新存储路径
  6. $ mv /var/lib/docker /data/docker
  7. # 修改docker路径
  8. $ vim /etc/docker/daemon.json
  9. {
  10.     “registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”],
  11.     “graph”: “/data/docker”
  12. }
  13. # 启动docker
  14. $ systemctl start docker
  15. # 查看docker进程信息
  16. $ docker info

复制代码
5、创建专用于 Zabbix 组件容器的网络:

  1. # 1.bridge模式
  2. docker默认网络模式。此模式将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。开启的容器会自动分配和IP在一个网段的ip地址,并且开启的容器的ip以IP为基础递增关闭容器之后,ip会自动释放。bridge模式只有宿主机才能与运行在其上面的容器进行通信。
  3. # 2.host模式
  4. 容器将不会虚拟出自己的网卡,配置自己的IP等,而是直接与宿主机的共享P和端口。
  5. 如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
  6. 使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好,网络的安全性变差。
  7. # 3.none模式
  8. 该模式关闭了容器的网络功能。
  9. 使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。
  10. 这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过–network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。
  11. # 创建专用于 Zabbix 组件容器的网络
  12. $ docker network create –subnet 172.20.0.0/16 –ip-range 172.20.240.0/20 zabbix-net
  13. # 查看的docker network
  14. $ docker network ls
  15. NEТWORK ID          NAME                DRIVER              SCOPE
  16. 14c25119dd06        bridge              bridge              local
  17. 4e2782140647        host                host                local
  18. b25888b8c26a        none                null                local
  19. cfc3bf2124af        zabbix-net          bridge              local
  20. # 查看新增的网络
  21. $ ip a
  22. 5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
  23.     link/ether 02:42:31:ce:6a:ce brd ff:ff:ff:ff:ff:ff
  24.     inet 172.17.0.1/16 scope global docker0
  25.        valid_lft forever preferred_lft forever
  26. 6: br-cfc3bf2124af: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
  27.     link/ether 02:42:cd:35:b7:4c brd ff:ff:ff:ff:ff:ff
  28.     inet 172.20.240.0/16 scope global br-cfc3bf2124af
  29.        valid_lft forever preferred_lft forever

复制代码
6、创建mysql库

如果生产环境已有mysql实例,仅需创建数据库。

  1. $ mysql -uroot -p -h 192.168.1.2
  2. password  root_pwd
  3. mysql> create database zabbix character set utf8 collate utf8_bin;
  4. mysql> create user zabbix@192.168.1.1 identified by ‘123456’;
  5. mysql> grant all privileges on zabbix.* to zabbix@192.168.1.1;
  6. mysql> quit;

复制代码
[废弃]6、docker安装mysql

建议使用平台提供mysql实例。

拉取mysql镜像

  1. $ docker pull mysql

复制代码
创建mysql容器

  1. # ———————————————–
  2. # 创建mysql服务器实例
  3. # 注意:此命令用于创建mysql容器实例后提取配置文件,如果已有配置文件,可直接进入下一步:
  4. $ docker run –name mysql-server -t \
  5. -e MYSQL_DATABASE=”zabbix” \
  6. -e MYSQL_USER=”zabbix” \
  7. -e MYSQL_PASSWORD=”123456″ \
  8. -e MYSQL_ROOT_PASSWORD=”root_pwd” \
  9. -e TZ=Asia/Shanghai \
  10. –network=zabbix-net \
  11. –ip=172.20.240.1 \
  12. -p 3306:3306 \
  13. -d mysql:latest \
  14. –character-set-server=utf8 –collation-server=utf8_bin \
  15. –default-authentication-plugin=mysql_native_password
  16. # ———————————————–
  17. # 创建mysql配置与数据存储路径
  18. $ mkdir -p /app/mysql/conf
  19. $ mkdir -p /app/mysql/data
  20. # 拷贝已有mysql配置文件到宿主机目录
  21. $ docker cp mysql-server:/etc/mysql/ /app/mysql/conf/
  22. # 使用新路径创建mysql-server
  23. $ docker run –name mysql-server -t \
  24. -e MYSQL_DATABASE=”zabbix” \
  25. -e MYSQL_USER=”zabbix” \
  26. -e MYSQL_PASSWORD=”123456″ \
  27. -e MYSQL_ROOT_PASSWORD=”root_pwd” \
  28. -e TZ=Asia/Shanghai \
  29. -v /app/mysql/conf:/etc/mysql \
  30. -v /app/mysql/data:/var/lib/mysql \
  31. –network=zabbix-net \
  32. –ip=172.20.240.1 \
  33. -p 3306:3306 \
  34. -d mysql:latest \
  35. –character-set-server=utf8 –collation-server=utf8_bin \
  36. –default-authentication-plugin=mysql_native_password
  37. # 关于mysql容器重启策略
  38. 问题描述:
  39. 如果创建mysql容器时指定–restart参数,则无法启动容器
  40. –restart unless-stopped \
  41. 解决办法:
  42. 需要创建后,手工更新容器重启策略:
  43. $ docker update –restart=unless-stopped mysql-server
  44. # 查看启动日志
  45. $ docker logs mysql-server
  46. 2022-04-15 05:43:59+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.28-1debian10 started.
  47. 2022-04-15 05:43:59+00:00 [Note] [Entrypoint]: Switching to dedicated user ‘mysql’
  48. 2022-04-15 05:43:59+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.28-1debian10 started.
  49. 2022-04-15T05:44:00.942337Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.28) starting as process 1
  50. # 查看进程
  51. $ docker ps
  52. CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
  53. 28c91f44958a        mysql:latest        “docker-entrypoint…”   22 hours ago        Up 5 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   mysql-server
  54. # 连接mysql
  55. $ docker exec -it mysql-server /bin/bash
  56. root@28c91f44958a:/# whereis mysql
  57. mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql
  58. root@28c91f44958a:/# mysql -u root -p
  59. Enter password:
  60. Welcome to the MySQL monitor.  Commands end with ; or \g.
  61. Your MySQL connection id is 8
  62. Server version: 8.0.28 MySQL Community Server – GPL
  63. Copyright (c) 2000, 2022, Oracle and/or its affiliates.
  64. Oracle is a registered trademark of Oracle Corporation and/or its
  65. affiliates. Other names may be trademarks of their respective
  66. owners.
  67. Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
  68. mysql> show databases;
  69. +——————–+
  70. | Database           |
  71. +——————–+
  72. | information_schema |
  73. | mysql              |
  74. | performance_schema |
  75. | sys                |
  76. +——————–+
  77. 4 rows in set (0.01 sec)

复制代码

添加防火墙端口

  1. firewall-cmd –zone=public –add-port=3306/tcp –permanent
  2. firewall-cmd –reload
  3. firewall-cmd –zone=public –list-ports

复制代码
7、安装zabbix-java-gateway

Zabbix Java gateway 的守护进程是用 Java 编写。为了在特定主机上找到 JMX 计数器的值,Zabbix server 向 Zabbix Java gateway 发送请求,后者使用 JMX 管理 API 来远程查询相关的应用。该应用不需要安装额外的软件。只需要在启动时,命令行添加-Dcom.sun.management.jmxremote选项即可。

  1. # 运行zabbix-java-gateway
  2. $ docker run –name zabbix-java-gateway -t \
  3. -e TZ=Asia/Shanghai \
  4. –network=zabbix-net \
  5. –ip=172.20.240.2 \
  6. –restart unless-stopped \
  7. -d zabbix/zabbix-java-gateway:latest
  8. # 查看进程
  9. $ docker ps
  10. CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS              PORTS               NAMES
  11. 85a594ad32d9        zabbix/zabbix-java-gateway:latest   “docker-entrypoint…”   9 seconds ago       Up 9 seconds        10052/tcp           zabbix-java-gateway
  12. # 查看日志
  13. $ docker logs zabbix-java-gateway
  14. ** Preparing Zabbix Java Gateway
  15. ** Preparing Zabbix Java Gateway log configuration file
  16. Updating /etc/zabbix/zabbix_java_gateway_logback.xml ‘DebugLevel’ parameter: ‘info’… updated
  17. 2022-04-15 06:43:36.232 [main] INFO  com.zabbix.gateway.JavaGateway – Zabbix Java Gateway 6.0.3 (revision 506e2b5) has started
  18. 2022-04-15 06:43:36.247 [main] INFO  com.zabbix.gateway.JavaGateway – listening on 0.0.0.0/0.0.0.0:10052

复制代码
8、安装zabbix-server


安装zabbix-server(基于Alphine)

  1. # ————————————————
  2. # 安装zabbix-server(latest版本基于Alphine Linux)
  3. $ docker run –name zabbix-server-mysql -t \
  4. -e DB_SERVER_HOST=”192.168.1.2″ \
  5. -e MYSQL_DATABASE=”zabbix” \
  6. -e MYSQL_USER=”zabbix” \
  7. -e MYSQL_PASSWORD=”123456″ \
  8. -e MYSQL_ROOT_PASSWORD=”root_pwd” \
  9. -e ZBX_JАVAGATEWAY=”zabbix-java-gateway” \
  10. -e TZ=Asia/Shanghai \
  11. –network=zabbix-net \
  12. –ip=172.20.240.3 \
  13. -p 10051:10051 \
  14. –restart unless-stopped \
  15. -d zabbix/zabbix-server-mysql:latest
  16. # 不需要的参数
  17. # –link mysql-server:mysql \
  18. # –link zabbix-java-gateway \
  19. # ————————————————
  20. # 使用外部存储目录
  21. # 创建zabbix-server配置目录
  22. $ mkdir -p /data/zabbix/conf
  23. $ mkdir -p /data/zabbix/alertscripts
  24. # 拷贝zabbix配置文件
  25. $ docker cp zabbix-server-mysql:/etc/zabbix/zabbix_server.conf /data/zabbix/conf
  26. $ ll /data/zabbix/conf
  27. total 28
  28. -rw-rw-r– 1 root root 24804 May 30 15:14 zabbix_server.conf
  29. # 移除容器
  30. $ docker stop zabbix-server-mysql
  31. $ docker rm zabbix-server-mysql
  32. # 重新创建容器
  33. $ docker run –name zabbix-server-mysql -t \
  34. -e DB_SERVER_HOST=”192.168.1.2″ \
  35. -e MYSQL_DATABASE=”zabbix” \
  36. -e MYSQL_USER=”zabbix” \
  37. -e MYSQL_PASSWORD=”123456″ \
  38. -e MYSQL_ROOT_PASSWORD=”root_pwd” \
  39. -e ZBX_JАVAGATEWAY=”zabbix-java-gateway” \
  40. -e TZ=Asia/Shanghai \
  41. -v /data/zabbix/conf/zabbix_server.conf:/etc/zabbix/zabbix_server.conf \
  42. -v /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
  43. –network=zabbix-net \
  44. –ip=172.20.240.3 \
  45. -p 10051:10051 \
  46. –restart unless-stopped \
  47. -d zabbix/zabbix-server-mysql:latest
  48. # 查看日志,此版本是:5.4.9
  49. $ docker logs zabbix-server-mysql
  50. Starting Zabbix Server. Zabbix 5.4.9 (revision d81e506).

复制代码
配置企业微信脚本

  1. # 将企业微信发送脚本:pyweixin.py,存储到目录:alertscripts
  2. $ cd /data/zabbix/alertscripts
  3. $ vim pyweixin.py
  4. $ chmod +x pyweixin.py
  5. # 修改python3地址
  6. # 微信脚本默认的python3地址为与实际不符:
  7. #!/usr/local/python3/bin/python3.5
  8. # 需要修改为以下地址:
  9. #!/usr/bin/python3

复制代码
安装python环境

发送企业微信需要python环境支持。

  1. # 使用root用户进入容器安装python
  2. $ docker exec –privileged -u root -it zabbix-server-mysql /bin/bash
  3. $ cat /etc/issue
  4. Welcome to Alpine Linux 3.14
  5. Kernel \r on an \m (\l)
  6. # 修改Alpine镜像源
  7. $ sed -i s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g /etc/apk/repositories
  8. # 安装python
  9. $ apk add –update –no-cache curl jq py3-configobj py3-pip py3-setuptools python3 python3-dev
  10. # 验证python3版本
  11. $ python3 -V
  12. Python 3.9.5

复制代码
添加防火墙端口

  1. # 开启防火墙
  2. $ systemctl enable firewalld
  3. $ systemctl start firewalld
  4. # 添加防火墙端口
  5. firewall-cmd –zone=public –add-port=10051/tcp –permanent
  6. firewall-cmd –reload
  7. firewall-cmd –zone=public –list-ports

复制代码
9、安装zabbix-web-nginx-mysql 创建容器

  1. # 创建容器
  2. $ docker run –name zabbix-web-nginx-mysql -t \
  3. -e ZBX_SERVER_HOST=”zabbix-server-mysql” \
  4. -e DB_SERVER_HOST=”192.168.1.2″ \
  5. -e MYSQL_DATABASE=”zabbix” \
  6. -e MYSQL_USER=”zabbix” \
  7. -e MYSQL_PASSWORD=”123456″ \
  8. -e MYSQL_ROOT_PASSWORD=”root_pwd” \
  9. -e PHP_TZ=Asia/Shanghai \
  10. -e TZ=Asia/Shanghai \
  11. –network=zabbix-net \
  12. –ip=172.20.240.4 \
  13. -p 80:8080 \
  14. –restart unless-stopped \
  15. -d zabbix/zabbix-web-nginx-mysql:latest
  16. # 取消以下参数
  17. # –link mysql-server:mysql \
  18. # –link zabbix-server-mysql:zabbix-server \
  19. # 查看日志
  20. $ docker logs zabbix-web-nginx-mysql
  21. ** Deploying Zabbix web-interface (Nginx) with MySQL database
  22. ** Using MYSQL_USER variable from ENV
  23. ** Using MYSQL_PASSWORD variable from ENV
  24. ********************
  25. * DB_SERVER_HOST: mysql-server
  26. * DB_SERVER_PORT: 3306
  27. * DB_SERVER_DBNAME: zabbix
  28. ********************
  29. ** Adding Zabbix virtual host (HTTP)
  30. **** Impossible to enable SSL support for Nginx. Certificates are missed.
  31. ** Preparing Zabbix frontend configuration file
  32. # 进程列表
  33. $ docker ps
  34. CONTAINER ID        IMAGE                                  COMMAND                  CREATED             STATUS              PORTS                               NAMES
  35. a707c1ff30c9        zabbix/zabbix-web-nginx-mysql:latest   “docker-entrypoint.sh”   6 minutes ago       Up 6 minutes        8443/tcp, 0.0.0.0:80->8080/tcp      zabbix-web-nginx-mysql
  36. 27f3c4948691        zabbix/zabbix-server-mysql:latest      “/sbin/tini — /us…”   24 hours ago        Up About an hour    0.0.0.0:10051->10051/tcp            zabbix-server-mysql
  37. fa0a386f2459        zabbix/zabbix-java-gateway:latest      “docker-entrypoint…”   25 hours ago        Up About an hour    10052/tcp                           zabbix-java-gateway

复制代码
添加防火墙端口

  1. firewall-cmd –zone=public –add-port=80/tcp –permanent
  2. firewall-cmd –reload
  3. firewall-cmd –zone=public –list-ports

复制代码
访问zabbix服务

  1. # 经过上述配置后,Zabbix 前端已准备就绪! 默认用户名是Admin,密码zabbix。
  2. http://192.168.1.1
  3. # 访问zabbix-web服务时,发现监控首页提示错误:
  4. Zabbix agent is not available (for 3m)
  5. 需要安装zabbix-agent,并配置zabbix-agent的ip,详见下面小结:

复制代码
10、安装zabbix-agent(yum安装)

由于zabbix-agent用于监控服务器状态,建议直接安装在服务器上,不要使用docker安装。

a. 安装Zabbix资源库

产品手册

  1. $ rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-release-5.4-1.el7.noarch.rpm
  2. $ yum clean all

复制代码
b. 安装 Zabbix agent

  1. $ yum install -y zabbix-agent
  2. # 配置agent,设置服务端地址
  3. $ vim /etc/zabbix/zabbix_agentd.conf
  4. # 如果在zabbix-server上安装agent,需要配置zabbix-server的docker地址:
  5. Server=172.20.240.3
  6. ServerActive=172.20.240.3
  7. # 如果在被监控服务器上安装agent,需要配置zabbix-server的宿主机地址:
  8. Server=192.168.1.1
  9. ServerActive=192.168.1.1
  10. # 注释掉Hostname配置,让agent自动解析
  11. # Hostname=****
  12. # 如果操作系统不允许创建zabbix用户,需要使用root运行agent,修改配置:
  13. AllowRoot=1

复制代码
c. 启动 Zabbix agent

设置开机zabbix-agent开机启动

  1. $ systemctl enable zabbix-agent
  2. $ systemctl restart zabbix-agent
  3. $ systemctl status zabbix-agent

复制代码
d.root用户启动

启动agent服务时,提示以下错误:

# 问题描述:

Failed at step USER spawning /usr/sbin/zabbix_agentd: No such process

zabbix-agent.service: control process exited, code=exited status=217

Failed to start Zabbix Agent.

Unit zabbix-agent.service entered failed state.

# 问题分析

此问题主要是因为操作系统限制不允许创建用户导致的,需要使用root账户启动服务。

# 解决办法

修改启动用户:

vim /usr/lib/systemd/system/zabbix-agent.service

修改默认用户zabbix为root,

修改前:

User=zabbix

Group=zabbix

修改后:

User=root

Group=root

# 然后重载服务配置,并启动服务

systemctl daemon-reload

systemctl start zabbix-agent.service


e.配置防火墙

  1. firewall-cmd –zone=public –add-port=10050/tcp –permanent
  2. firewall-cmd –reload
  3. firewall-cmd –zone=public –list-ports

复制代码 到此这篇关于基于docker安装zabbix的文章就介绍到这了,更多相关docker安装zabbix内容请搜索软件技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件技术网!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/109157.html

联系我们