1、准备工做前端
两台VMware 虚拟机python
一台充当zabbix server(安装docker)ip:192.168.73.133mysql
一台充当zabbix agent(安装docker)ip:192.168.73.136linux
基础环境nginx
cat /etc/redhat-releasegit
CentOS Linux release 7.5.1804 (Core)github
dcoker安装web
#关闭防火墙:sql
systemctl stop firewallddocker
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端操做
提供两种不一样的安装方式
一、采用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,默认是英文,白色背景,能够在右上角的用户按钮选项中调整语言和背景颜色
二、使用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的主机