189 8069 5689

基于Docker部署4.2版本的zabbix监控平台的两种方法

系统运维

一、准备工作

创新互联长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为盱眙企业提供专业的网站建设、网站制作盱眙网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

两台VMware 虚拟机


一台充当zabbix server(安装docker)ip:192.168.73.133

一台充当zabbix agent(安装docker)ip:192.168.73.136

基础环境


cat /etc/redhat-release

CentOS Linux release 7.5.1804 (Core)

dcoker安装


#关闭防火墙:

systemctl stop firewalld

systemctl disable firewalld

#关闭selinux:

sed -i \'s/enforcing/disabled/\' /etc/selinux/config

setenforce 0

#安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

#添加Docker软件包源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装Docker ce

yum install -y docker-ce

#启动Docker服务并设置开机启动

systemctl start docker

systemctl enable docker

#查看版本号

[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.5
 Git commit:        74b1e89
 Built:             Thu Jul 25 21:21:07 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Server: Docker Engine - Community
 Engine:
  Version:          19.03.1
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.5
  Git commit:       74b1e89
  Built:            Thu Jul 25 21:19:36 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

#配置镜像加速器


curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io`

#重启镜像

systemctl restart docker

docker安装完毕!



zabbix server端操作




提供两种不同的安装方式

1、采用zabbix官网中的docker安装章节内容,在官方镜像库中拉取镜像的方式进行安装

https://www.zabbix.com/documentation/4.0/zh/manual/installation/containers

本文档主机的本地目录结构目录在/home/zabbix下,设置了用于保存容器的数据,其它目录根据实际应用情况可选,以下操作命令需要连接外网进行镜像拉取,没有外网需要离线下载镜像包

1)启动一个单独的数据库mysql用于保存zabbix数据

docker run  --name Mysql-server -t \\
-e MYSQL_DATABASE=zabbix \\
-e MYSQL_USER=zabbix \\
-e MYSQL_PASSWORD=zabbix \\
-e MYSQL_ROOT_PASSWORD=zabbix \\
-v /home/zabbix/data:/var/lib/mysql \\
-d mysql:5.7 \\
--character-set-server=utf8 \\
--collation-server=utf8_bin \\
--restart=always \\
-p 3306:3306

定义了数据库名zabbix,数据库用户zabbix,密码zabbix,在本地目录/home/zabbix/data中持久化保存mysql容器运行中的数据,确保容器退出运行后,数据不会丢失,最后两条是定义了数据库的字符集为utf8,解决了mysql数据库保存中文的问题;

2)启动zabbix server服务,并关联这个服务到上面已经启动的mysql数据库实例上,确保zabbix的数据可以保存到mysql数据库中,挂载在本地目录中的还有其它一些内容,根据生产环境实际情况灵活决定是否挂载,如果挂载可以通过容器直接加载本地目录中的脚本或认证信息,镜像版本使用的centos版本,便于后续能够使用python脚本,预装了py环境

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 \\
--link mysql-server:mysql \\
-v /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \\
-v /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \\
-v /home/zabbix/modules:/var/lib/zabbix/modules \\
-v /home/zabbix/enc:/var/lib/zabbix/enc \\
-v /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys \\
-v /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs \\
-v /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys \\
-v /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca \\
-v /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps \\
-v /home/zabbix/mibs:/var/lib/zabbix/mibs \\
-p 10051:10051 \\
-d zabbix/zabbix-server-mysql:centos-latest \\
-restart=always

挂载说明:

/usr/lib/zabbix/alertscripts

该卷用于保存自定义警报脚本,它是AlertScriptsPath参数zabbix_server.conf

/usr/lib/zabbix/externalscripts

外部检查(项目类型)使用该卷,它是ExternalScripts参数zabbix_server.conf

/var/lib/zabbix/modules

该卷允许加载其他模块并使用LoadModule功能扩展Zabbix服务器。

/var/lib/zabbix/enc

该卷用于存储TLS相关文件。这些文件的名称使用规定ZBX_TLSCAFILE,ZBX_TLSCRLFILE,ZBX_TLSKEY_FILE和ZBX_TLSPSKFILE变量。

/var/lib/zabbix/ssh_keys

该卷用作SSH检查和操作的公钥和私钥的位置。它是SSHKeyLocation参数zabbix_server.conf。

/var/lib/zabbix/ssl/certs

该卷用作客户端身份验证的SSL客户端证书文件的位置。它是SSLCertLocation参数zabbix_server.conf。

/var/lib/zabbix/ssl/keys

该卷用作客户端身份验证的SSL私钥文件的位置。它是SSLKeyLocation参数zabbix_server.conf。

/var/lib/zabbix/ssl/ssl_ca

该卷用作SSL服务器证书验证的证书颁发机构(CA)文件的位置。它是SSLCALocation参数zabbix_server.conf。

/var/lib/zabbix/snmptraps

该卷用作snmptraps.log文件的位置。它可以由zabbix-snmptraps容器共享,并volumes_from在创建Zabbix服务器的新实例时使用Docker选项继承。

可以使用共享卷和交换ZBX_ENABLE_SNMP_TRAPS环境变量来启用SNMP陷阱处理功能true。

/var/lib/zabbix/mibs

该卷允许添加新的MIB文件。它不支持子目录,必须放置所有MIB /var/lib/zabbix/mibs

备注:通常会用到的是存放脚本的路径和配置文件的路径

3)启动zabbix前端web界面实例,将web界面实例与前面的mysql数据库服务实例

docker run --rm --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 \\
      -e PHP_TZ=Asia/Shanghai \\
      --link mysql-server:mysql \\
      --link zabbix-server-mysql:zabbix-server \\
      -p 8080:80 \\
      -d zabbix/zabbix-web-nginx-mysql:latest

挂载说明:

--link mysql-server:mysql 连接数据库实例,mysql-server必须要与第一步的--name mysql-server完全一致

--link zabbix-server-mysql:zabbix-server 连接zabbix服务器实例,zabbix-server-mysql必须要与第二步的--name zabbix-server-mysql完全一致

DB_SERVER_HOST变量的值要与第二步指定的-e DB_SERVER_HOST="mysql-server"一致

4)检查安装的三个容器是否都正常启动

以上状态就是三个容器全部正常启动

#如果有没有启动可以使用查看所有容器列表

[root@localhost ~]# docker ps -a

#找到未能启动的容器ID,然后查看日志

[root@localhost ~]# docker logs 0eeb1dbdb279
5)宿主机上,使用正常的zabbix-agent的安装,不使用容器

#rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.5-1.el7.x86_64.rpm
#yum install zabbix-agent 
#vim /etc/zabbix/zabbix_agentd.conf     #修改配置文件
Server=172.17.0.3
ServerActive=172.17.0.3:10050
Hostname=Zabbix server
#systemctl restart zabbix-agent
#systemctl enable zabbix-agent

注意:如果要对宿主机进行监控,请编辑宿主机的zabbix_agentd.conf,将Server地址,默认127.0.0.1,修改为docker-server容器地址,否则不通;如果是对其他主机的监控则使用docker-zabbix-server宿主机的IP

6)验证登陆主机8080端口,查看是否能正常登陆

使用安装zabbix server的主机ip加端口8080登录,账号Admin,密码zabbix,默认是英文,白色背景,可以在右上角的用户按钮选项中调整语言和背景颜色

2、使用docker-compose,进行安装

1)安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
docker-compose version 1.23.1, build b02f1306

2)编写yml编排文件

创建文件夹

mkdir /docker-compose
cd /docker-compose/
vim docker-compose.yml

编写docker-compose

version: \'3\'
mysql:
    image: mysql:5.7
    ports:
        - 3306:3306
    volumes:
        - ./home/zabbix/data:/var/lib/mysql
        - ./home/zabbix/data:/etc/mysql
        - ./home/zabbix/data:/var/log/mysql
    environment:
        - MYSQL_USER=zabbix
        - MYSQL_DATABASE=zabbix
        - MYSQL_PASSWORD=zabbix
        - MYSQL_ROOT_PASSWORD=123321
        - LANG=en_US.utf8
        - TZ=Asia/Shanghai
    restart: always
services:
  zabbix-server:
    container_name: zabbix-server
    image: zabbix/zabbix-server-mysql:centos-latest
    restart: always
    network_mode: host
#    ports:
#      - 10051:10051
    environment:
      - DB_SERVER_HOST=192.168.73.133
      - MYSQL_USER=zabbix
      - MYSQL_DATABASE=zabbix
      - MYSQL_PASSWORD=zabbix
      - DB_SERVER_ROOT_USER=root
      - DB_SERVER_ROOT_PASS=123321
      - TZ=\'Asia/Shanghai\'
    volumes:
      - /home/zabbix/zabbixconfig:/etc/zabbix
      - /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
      - /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
      - /home/zabbix/modules:/var/lib/zabbix/modules
      - /home/zabbix/enc:/var/lib/zabbix/enc
      - /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys
      - /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs
      - /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys
      - /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca
      - /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps
      - /home/zabbix/mibs:/var/lib/zabbix/mibs
  zabbix-web-nginx:
    image: zabbix/zabbix-web-nginx-mysql:latest
    restart: always
    network_mode: bridge
    ports:
      - 8080:80
    environment:
      - DB_SERVER_HOST=192.168.73.133
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
      - MYSQL_ROOT_PASSWORD=123321
      - ZBX_SERVER_HOST=192.168.73.133
      - PHP_TZ=Asia/Shanghai
      - TZ=\'Asia/Shanghai\'
  zabbix-agent:
    image: zabbix/zabbix-agent:latest
    environment:
      - ZBX_HOSTNAME=Zabbix server
      - ZBX_SERVER_HOST=127.0.0.1
      - ZBX_SERVER_PORT=10051
      - TZ=\'Asia/Shanghai\'
    network_mode: host
#    ports:
#      - 10050:10050
    restart: always
    privileged: true
#    links:
#      - zabbix-server:zabbixhost

3)根据自己主机的ip地址进行修改,主要是修改编排文件docker-compose.yml

53行 - DB_SERVER_HOST=当前主机IP
105行 - DB_SERVER_HOST=当前主机IP
115行 - ZBX_SERVER_HOST=当前主机IP
4)加载yml编排文件(需要等待一些时间,因为需要下载镜像)

docker-compose -f docker-compose.yml up -d

5)加载完之后查看容器组是否运行

[root@localhost cmp_zabbix_server]# docker-compose ps
                      Name                                     Command               State               Ports            
--------------------------------------------------------------------------------------------------------------------------
cmp_zabbix_server_zabbix-agent_1_95447af24cfd       /sbin/tini -- /usr/bin/doc ...   Up                                   
cmp_zabbix_server_zabbix-web-nginx_1_aeec36553371   docker-entrypoint.sh             Up      443/tcp, 0.0.0.0:8080->80/tcp
zabbix-server

zabbix agent端操作



1 如果该主机安装了docker就可以,一样可以使用docker-compose,编写编排yml文件安装,根据主机ip地址修改第8行ip

mkdir /docker-compose
cd /docker-compose/
vim docerk-compose.yml
version: \'3\'
version: \'3\'
services:
  zabbix-agent:
    image: zabbix/zabbix-agent:latest
    container_name: zabbix-agent
    environment:
      - ZBX_HOSTNAME=192.168.73.136
      - ZBX_SERVER_HOST=192.168.73.133
      - ZBX_SERVER_PORT=10051
      - TZ=\'Asia/Shanghai\'
    network_mode: bridge
    ports:
      - 10050:10050
    restart: always
    privileged: true

加载编排文件

docker-compose -f docker-compose.yml up -d --build

查看容器是否启动成功

docker-compose ps

如果主机没有安装docker,则使用rpm包进行安装即可,见zabbix-server主机的agent安装步骤

web端操作



验证登陆主机8080端口,查看是否能正常登陆,使用安装zabbix server的主机ip加端口8080登录,账号admin,密码zabbix,默认是英文,白色背景,可以在右上角的用户按钮选项中调整语言和背景颜色,在配置选项中添加刚才安装的agent的主机


分享名称:基于Docker部署4.2版本的zabbix监控平台的两种方法
分享地址:http://cdxtjz.cn/article/cjocco.html

其他资讯