准备工作


两台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

# 查看版本号

  1. [root@localhost ~]# docker versionClient: 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: falseServer: 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

#配置镜像加速器

  1. 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数据

  1. 1 docker run --name mysql-server -t \
  2. 2 -p 3306:3306 \
  3. 3 -e MYSQL_DATABASE="zabbix" \
  4. 4 -e MYSQL_USER="zabbix" \
  5. 5 -e MYSQL_PASSWORD="zabbix" \
  6. 6 -e MYSQL_ROOT_PASSWORD="zabbix" \
  7. 7 -v /home/zabbix/data:/var/lib/mysql \
  8. 8 -v /home/zabbix/data/conf:/etc/mysql/conf.d\
  9. 9 -d mysql:5.7 \
  10. 10 --restart: always\
  11. 11 --character-set-server=utf8 \
  12. 12 --collation-server=utf8_bin

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

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

  1. 1 docker run --name zabbix-server-mysql -t \
  2. 2 -e DB_SERVER_HOST="mysql-server" \
  3. 3 -e MYSQL_DATABASE="zabbix" \
  4. 4 -e MYSQL_USER="zabbix" \
  5. 5 -e MYSQL_PASSWORD="zabbix" \
  6. 6 -e MYSQL_ROOT_PASSWORD="zabbix" \
  7. 7 --link mysql-server:mysql \
  8. 8 -v /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
  9. 9 -v /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
  10. 10 -v /home/zabbix/zabbixconfig:/etc/zabbix \
  11. 11 -v /home/zabbix/modules:/var/lib/zabbix/modules \
  12. 12 -v /home/zabbix/enc:/var/lib/zabbix/enc \
  13. 13 -v /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys \
  14. 14 -v /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs \
  15. 15 -v /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys \
  16. 16 -v /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca \
  17. 17 -v /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps \
  18. 18 -v /home/zabbix/mibs:/var/lib/zabbix/mibs \
  19. 19 -p 10051:10051 \
  20. 20 -d zabbix/zabbix-server-mysql:centos-latest \
  21. 21 -restart=always

挂载说明:

/usr/lib/zabbix/alertscripts

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

/usr/lib/zabbix/externalscripts

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

/usr/lib/zabbix/alertscripts

该卷用于保存zabbix-server端的配置文件

/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数据库服务实例

  1. 1 docker run --name zabbix-web-nginx-mysql -t \
  2. 2 -e DB_SERVER_HOST="mysql-server" \
  3. 3 -e MYSQL_DATABASE="zabbix" \
  4. 4 -e MYSQL_USER="zabbix" \
  5. 5 -e MYSQL_PASSWORD="zabbix" \
  6. 6 -e MYSQL_ROOT_PASSWORD="zabbix" \
  7. 7 -e PHP_TZ="Asia/Shanghai" \
  8. 8 --link mysql-server:mysql \
  9. 9 --link zabbix-server-mysql:zabbix-server \
  10. 10 -p 8080:80 \
  11. 11 -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)检查安装的三个容器是否都正常启动

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

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

  1. [root@localhost ~]# docker ps -a

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

  1. [root@localhost ~]# docker logs 0eeb1dbdb279

5)宿主机上,使用正常的zabbix-agent的安装,不使用容器

  1. 1 #rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.5-1.el7.x86_64.rpm
  2. 2 #yum install zabbix-agent
  3. 3 #vim /etc/zabbix/zabbix_agentd.conf #修改配置文件
  4. 4 Server=172.17.0.3
  5. 5 ServerActive=172.17.0.3:10050
  6. 6 Hostname=Zabbix server
  7. 7 #systemctl restart zabbix-agent
  8. 8 #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

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

2)编写yml编排文件

创建文件夹

  1. 1 # mkdir /docker-compose
  2. 2 # cd /docker-compose/
  3. 3 # vim docker-compose.yml

编写docker-compose

  1. 1 version: '3'
  2. 2 mysql:
  3. 3 image: mariadb:latest
  4. 4 ports:
  5. 5 - "3306:3306"
  6. 6 volumes:
  7. 7 - ./home/zabbix/data:/var/lib/mysql
  8. 8 - ./home/zabbix/data:/etc/mysql
  9. 9 - ./home/zabbix/data:/var/log/mysql
  10. 10 environment:
  11. 11 - MYSQL_USER=zabbix
  12. 12 - MYSQL_DATABASE=zabbix
  13. 13 - MYSQL_PASSWORD=zabbix
  14. 14 - MYSQL_ROOT_PASSWORD=123321
  15. 15 - LANG=en_US.utf8
  16. 16 - TZ=Asia/Shanghai
  17. 17 restart: always
  18. 18 services:
  19. 19 zabbix-server:
  20. 20 container_name: zabbix-server
  21. 21 image: zabbix/zabbix-server-mysql:centos-latest
  22. 22 restart: always
  23. 23 network_mode: host
  24. 24 # ports:
  25. 25 # - "10051:10051"
  26. 26 environment:
  27. 27 - DB_SERVER_HOST=192.168.73.133
  28. 28 - MYSQL_USER=zabbix
  29. 29 - MYSQL_DATABASE=zabbix
  30. 30 - MYSQL_PASSWORD=zabbix
  31. 31 - DB_SERVER_ROOT_USER=root
  32. 32 - DB_SERVER_ROOT_PASS=123321
  33. 33 - TZ'Asia/Shanghai'
  34. 34 volumes:
  35. 35 - /home/zabbix/zabbixconfig:/etc/zabbix
  36. 36 - /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
  37. 37 - /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
  38. 38 - /home/zabbix/modules:/var/lib/zabbix/modules
  39. 39 - /home/zabbix/enc:/var/lib/zabbix/enc
  40. 40 - /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys
  41. 41 - /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs
  42. 42 - /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys
  43. 43 - /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca
  44. 44 - /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps
  45. 45 - /home/zabbix/mibs:/var/lib/zabbix/mibs
  46. 46 zabbix-web-nginx:
  47. 47 image: zabbix/zabbix-web-nginx-mysql:latest
  48. 48 restart: always
  49. 49 network_mode: bridge
  50. 50 ports:
  51. 51 - "8080:80"
  52. 52 environment:
  53. 53 - DB_SERVER_HOST=192.168.73.133
  54. 54 - MYSQL_DATABASE=zabbix
  55. 55 - MYSQL_USER=zabbix
  56. 56 - MYSQL_PASSWORD=zabbix
  57. 57 - MYSQL_ROOT_PASSWORD=123321
  58. 58 - ZBX_SERVER_HOST=192.168.73.133
  59. 59 - PHP_TZ="Asia/Shanghai"
  60. 60 - TZ'Asia/Shanghai'
  61. 61 zabbix-agent:
  62. 62 image: zabbix/zabbix-agent:latest
  63. 63 environment:
  64. 64 - ZBX_HOSTNAME=Zabbix server
  65. 65 - ZBX_SERVER_HOST=127.0.0.1
  66. 66 - ZBX_SERVER_PORT=10051
  67. 67 - TZ='Asia/Shanghai'
  68. 68 network_mode: host
  69. 69 # ports:
  70. 70 # - "10050:10050"
  71. 71 restart: always
  72. 72 privileged: true
  73. 73 # links:
  74. 74 # - zabbix-server:zabbixhost

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

  1. 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)加载完之后查看容器组是否运行

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

zabbix agent端操作


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

  1. 1 # mkdir /docker-compose
  2. 2 # cd /docker-compose/
  3. 3 # vim docerk-compose.yml
  4. 4
  5. 5 version: '3'
  6. 6 version: '3'
  7. 7 services:
  8. 8 zabbix-agent:
  9. 9 image: zabbix/zabbix-agent:latest
  10. 10 container_name: zabbix-agent
  11. 11 environment:
  12. 12 - ZBX_HOSTNAME=192.168.73.136
  13. 13 - ZBX_SERVER_HOST=192.168.73.133
  14. 14 - ZBX_SERVER_PORT=10051
  15. 15 - TZ='Asia/Shanghai'
  16. 16 network_mode: bridge
  17. 17 ports:
  18. 18 - "10050:10050"
  19. 19 restart: always
  20. 20 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的主机

可以关注本人公众号,如有不对的地方和问题,欢迎指出和交流

参考文档:

https://www.cnblogs.com/yaun1498078591/p/10181106.html

https://www.cnblogs.com/shuaiyin/p/11070056.html

https://blog.csdn.net/firehadoop/article/details/84642907​

基于Docker部署4.2 版本的zabbix监控平台的更多相关文章

  1. 基于Docker部署nodejs应用

    基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...

  2. 基于Docker部署ETCD集群

    基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...

  3. 部署zabbix监控平台(源码安装)

    案例:部署Zabbix监控平台 1 问题 本案例要求部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备: 安装LNMP环境 源码安装Zabbix 安装监控端主机,修改基本 ...

  4. Security基础(六):部署Zabbix监控平台、配置及使用Zabbix监控系统、自定义Zabbix监控项目、实现Zabbix报警功能

    一.部署Zabbix监控平台 目标: 本案例要求部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备: 在监控服务器上安装LAMP环境    修改PHP配置文件,满足Zab ...

  5. Zabbix监控平台

                                                                     Zabbix监控平台 案例1:常用系统监控命令 案例2:部署Zabbi ...

  6. 基于BootStrap框架构建快速响应的GPS部标监控平台

    最近一个客户要求将gps部标平台移植到bootStrap框架作为前端框架,符合交通部796部标只是他们的一个基本要求,重点是要和他们的冷链云物流平台进行适配.我自己先浏览了客户的云物流平台的界面,采用 ...

  7. 基于java spring框架开发部标1078视频监控平台精华文章索引

    部标1078视频监控平台,是一个庞杂的工程,涵盖了多层协议,部标jt808,jt809,jt1078,苏标Adas协议等,多个平台功能标准,部标796标准,部标1077标准和苏标主动安全标准,视频方面 ...

  8. Ubuntu系统下基于docker部署Jenkins环境

    本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中, 至于docker如何安装,请参考https://www.cnblogs.com/xingyunqiu/p/115 ...

  9. 基于docker部署jenkins

    1. 拉镜像 和其他的部署的镜像的方式一样,通常是直接使用docker search jenkins 然后直接docker pull jenkins 此时,在安装插件的时候发现插件都安装失败,提示je ...

随机推荐

  1. Java实习生常规技术面试题每日十题Java基础(七)

    目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...

  2. Android物联网应用程序开发(智慧城市)—— 火焰监控界面开发

    效果: 布局代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns: ...

  3. 编写Java程序,使用JTable表格组件展现人员信息列表

    返回本章节 返回作业目录 需求说明: 使用JTable组件显现人员信息列表 实现思路: 创建一个JTable对象. 创建一个JScrollPane对象(显示横向和纵向滚动条). 将表格添加到滚动面板. ...

  4. Dom 键盘事件以及实战案例

    键盘事件 //键盘操作 //1.某键盘按下执行的操作 document是对文档进行触发 document.onkeyup = function(){ console.log('你好') } docum ...

  5. 苹果系统 的 qq浏览器 和 qq内置浏览器 无法使用 websocket 的 妥协方案

    没错,就是用不了,js脚本不执行,更别说服务器运行 onopen函数了!!! 怎么办...搞了一天,仍然找不到连接的方法!!! 幸运的是仅仅苹果系统 的无法使用 ,安卓的却可以,奇了怪了 哈皮 ,那我 ...

  6. Go的日志库go-logging

    配置文件config.yaml log: prefix: '[MY-LOG] ' log-file: true stdout: 'DEBUG' file: 'DEBUG' config/config. ...

  7. Could not find resource mybatis.xml 找不到mybatis主配置文件的三种解决方式

    第一种:先清除target目录 再重新compile编译 第二种:让idea重构项目 第三种 :手动添加到target目录下的classes包下

  8. HDOJ3579Hello Kiki

    https://acm.hdu.edu.cn/showproblem.php?pid=3579 一些坑点.首先是如果说最后求得到的结果为0,那么在数学意义上这是正确的,0对于任何的确是最小的整数解,但 ...

  9. 深度介绍Flink在字节跳动数据流的实践

    本文是字节跳动数据平台开发套件团队在1月9日Flink Forward Asia 2021: Flink Forward 峰会上的演讲分享,将着重分享Flink在字节跳动数据流的实践. 字节跳动数据流 ...

  10. 【Java常用类】BigDecimal

    BigDecimal 一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中, 要求数字精度比较高,故用到java.math.BigDecimal类. BigDecimal类支 ...