基于Docker部署4.2 版本的zabbix监控平台
准备工作
两台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 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
#配置镜像加速器
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 docker run --name mysql-server -t \
- 2 -p 3306:3306 \
- 3 -e MYSQL_DATABASE="zabbix" \
- 4 -e MYSQL_USER="zabbix" \
- 5 -e MYSQL_PASSWORD="zabbix" \
- 6 -e MYSQL_ROOT_PASSWORD="zabbix" \
- 7 -v /home/zabbix/data:/var/lib/mysql \
- 8 -v /home/zabbix/data/conf:/etc/mysql/conf.d\
- 9 -d mysql:5.7 \
- 10 --restart: always\
- 11 --character-set-server=utf8 \
- 12 --collation-server=utf8_bin
定义了数据库名zabbix,数据库用户zabbix,密码zabbix,在本地目录/home/zabbix/data中持久化保存mysql容器运行中的数据,确保容器退出运行后,数据不会丢失,最后两条是定义了数据库的字符集为utf8,解决了mysql数据库保存中文的问题;
2)启动zabbix server服务,并关联这个服务到上面已经启动的mysql数据库实例上,确保zabbix的数据可以保存到mysql数据库中,挂载在本地目录中的还有其它一些内容,根据生产环境实际情况灵活决定是否挂载,如果挂载可以通过容器直接加载本地目录中的脚本或认证信息,镜像版本使用的centos版本,便于后续能够使用python脚本,预装了py环境
- 1 docker run --name zabbix-server-mysql -t \
- 2 -e DB_SERVER_HOST="mysql-server" \
- 3 -e MYSQL_DATABASE="zabbix" \
- 4 -e MYSQL_USER="zabbix" \
- 5 -e MYSQL_PASSWORD="zabbix" \
- 6 -e MYSQL_ROOT_PASSWORD="zabbix" \
- 7 --link mysql-server:mysql \
- 8 -v /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
- 9 -v /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
- 10 -v /home/zabbix/zabbixconfig:/etc/zabbix \
- 11 -v /home/zabbix/modules:/var/lib/zabbix/modules \
- 12 -v /home/zabbix/enc:/var/lib/zabbix/enc \
- 13 -v /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys \
- 14 -v /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs \
- 15 -v /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys \
- 16 -v /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca \
- 17 -v /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps \
- 18 -v /home/zabbix/mibs:/var/lib/zabbix/mibs \
- 19 -p 10051:10051 \
- 20 -d zabbix/zabbix-server-mysql:centos-latest \
- 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 docker run --name zabbix-web-nginx-mysql -t \
- 2 -e DB_SERVER_HOST="mysql-server" \
- 3 -e MYSQL_DATABASE="zabbix" \
- 4 -e MYSQL_USER="zabbix" \
- 5 -e MYSQL_PASSWORD="zabbix" \
- 6 -e MYSQL_ROOT_PASSWORD="zabbix" \
- 7 -e PHP_TZ="Asia/Shanghai" \
- 8 --link mysql-server:mysql \
- 9 --link zabbix-server-mysql:zabbix-server \
- 10 -p 8080:80 \
- 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)检查安装的三个容器是否都正常启动
以上状态就是三个容器全部正常启动
#如果有没有启动可以使用查看所有容器列表
[root@localhost ~]# docker ps -a
#找到未能启动的容器ID,然后查看日志
[root@localhost ~]# docker logs 0eeb1dbdb279
5)宿主机上,使用正常的zabbix-agent的安装,不使用容器
- 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 #yum install zabbix-agent
- 3 #vim /etc/zabbix/zabbix_agentd.conf #修改配置文件
- 4 Server=172.17.0.3
- 5 ServerActive=172.17.0.3:10050
- 6 Hostname=Zabbix server
- 7 #systemctl restart zabbix-agent
- 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 # 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 # chmod +x /usr/local/bin/docker-compose
- 3 # docker-compose --version
- 4 docker-compose version 1.23.1, build b02f1306
2)编写yml编排文件
创建文件夹
- 1 # mkdir /docker-compose
- 2 # cd /docker-compose/
- 3 # vim docker-compose.yml
编写docker-compose
- 1 version: '3'
- 2 mysql:
- 3 image: mariadb:latest
- 4 ports:
- 5 - "3306:3306"
- 6 volumes:
- 7 - ./home/zabbix/data:/var/lib/mysql
- 8 - ./home/zabbix/data:/etc/mysql
- 9 - ./home/zabbix/data:/var/log/mysql
- 10 environment:
- 11 - MYSQL_USER=zabbix
- 12 - MYSQL_DATABASE=zabbix
- 13 - MYSQL_PASSWORD=zabbix
- 14 - MYSQL_ROOT_PASSWORD=123321
- 15 - LANG=en_US.utf8
- 16 - TZ=Asia/Shanghai
- 17 restart: always
- 18 services:
- 19 zabbix-server:
- 20 container_name: zabbix-server
- 21 image: zabbix/zabbix-server-mysql:centos-latest
- 22 restart: always
- 23 network_mode: host
- 24 # ports:
- 25 # - "10051:10051"
- 26 environment:
- 27 - DB_SERVER_HOST=192.168.73.133
- 28 - MYSQL_USER=zabbix
- 29 - MYSQL_DATABASE=zabbix
- 30 - MYSQL_PASSWORD=zabbix
- 31 - DB_SERVER_ROOT_USER=root
- 32 - DB_SERVER_ROOT_PASS=123321
- 33 - TZ='Asia/Shanghai'
- 34 volumes:
- 35 - /home/zabbix/zabbixconfig:/etc/zabbix
- 36 - /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- 37 - /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
- 38 - /home/zabbix/modules:/var/lib/zabbix/modules
- 39 - /home/zabbix/enc:/var/lib/zabbix/enc
- 40 - /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys
- 41 - /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs
- 42 - /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys
- 43 - /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca
- 44 - /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps
- 45 - /home/zabbix/mibs:/var/lib/zabbix/mibs
- 46 zabbix-web-nginx:
- 47 image: zabbix/zabbix-web-nginx-mysql:latest
- 48 restart: always
- 49 network_mode: bridge
- 50 ports:
- 51 - "8080:80"
- 52 environment:
- 53 - DB_SERVER_HOST=192.168.73.133
- 54 - MYSQL_DATABASE=zabbix
- 55 - MYSQL_USER=zabbix
- 56 - MYSQL_PASSWORD=zabbix
- 57 - MYSQL_ROOT_PASSWORD=123321
- 58 - ZBX_SERVER_HOST=192.168.73.133
- 59 - PHP_TZ="Asia/Shanghai"
- 60 - TZ='Asia/Shanghai'
- 61 zabbix-agent:
- 62 image: zabbix/zabbix-agent:latest
- 63 environment:
- 64 - ZBX_HOSTNAME=Zabbix server
- 65 - ZBX_SERVER_HOST=127.0.0.1
- 66 - ZBX_SERVER_PORT=10051
- 67 - TZ='Asia/Shanghai'
- 68 network_mode: host
- 69 # ports:
- 70 # - "10050:10050"
- 71 restart: always
- 72 privileged: true
- 73 # links:
- 74 # - 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
- 1 # mkdir /docker-compose
- 2 # cd /docker-compose/
- 3 # vim docerk-compose.yml
- 4
- 5 version: '3'
- 6 version: '3'
- 7 services:
- 8 zabbix-agent:
- 9 image: zabbix/zabbix-agent:latest
- 10 container_name: zabbix-agent
- 11 environment:
- 12 - ZBX_HOSTNAME=192.168.73.136
- 13 - ZBX_SERVER_HOST=192.168.73.133
- 14 - ZBX_SERVER_PORT=10051
- 15 - TZ='Asia/Shanghai'
- 16 network_mode: bridge
- 17 ports:
- 18 - "10050:10050"
- 19 restart: always
- 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监控平台的更多相关文章
- 基于Docker部署nodejs应用
基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...
- 基于Docker部署ETCD集群
基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...
- 部署zabbix监控平台(源码安装)
案例:部署Zabbix监控平台 1 问题 本案例要求部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备: 安装LNMP环境 源码安装Zabbix 安装监控端主机,修改基本 ...
- Security基础(六):部署Zabbix监控平台、配置及使用Zabbix监控系统、自定义Zabbix监控项目、实现Zabbix报警功能
一.部署Zabbix监控平台 目标: 本案例要求部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备: 在监控服务器上安装LAMP环境 修改PHP配置文件,满足Zab ...
- Zabbix监控平台
Zabbix监控平台 案例1:常用系统监控命令 案例2:部署Zabbi ...
- 基于BootStrap框架构建快速响应的GPS部标监控平台
最近一个客户要求将gps部标平台移植到bootStrap框架作为前端框架,符合交通部796部标只是他们的一个基本要求,重点是要和他们的冷链云物流平台进行适配.我自己先浏览了客户的云物流平台的界面,采用 ...
- 基于java spring框架开发部标1078视频监控平台精华文章索引
部标1078视频监控平台,是一个庞杂的工程,涵盖了多层协议,部标jt808,jt809,jt1078,苏标Adas协议等,多个平台功能标准,部标796标准,部标1077标准和苏标主动安全标准,视频方面 ...
- Ubuntu系统下基于docker部署Jenkins环境
本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中, 至于docker如何安装,请参考https://www.cnblogs.com/xingyunqiu/p/115 ...
- 基于docker部署jenkins
1. 拉镜像 和其他的部署的镜像的方式一样,通常是直接使用docker search jenkins 然后直接docker pull jenkins 此时,在安装插件的时候发现插件都安装失败,提示je ...
随机推荐
- Java实习生常规技术面试题每日十题Java基础(七)
目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...
- Android物联网应用程序开发(智慧城市)—— 火焰监控界面开发
效果: 布局代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns: ...
- 编写Java程序,使用JTable表格组件展现人员信息列表
返回本章节 返回作业目录 需求说明: 使用JTable组件显现人员信息列表 实现思路: 创建一个JTable对象. 创建一个JScrollPane对象(显示横向和纵向滚动条). 将表格添加到滚动面板. ...
- Dom 键盘事件以及实战案例
键盘事件 //键盘操作 //1.某键盘按下执行的操作 document是对文档进行触发 document.onkeyup = function(){ console.log('你好') } docum ...
- 苹果系统 的 qq浏览器 和 qq内置浏览器 无法使用 websocket 的 妥协方案
没错,就是用不了,js脚本不执行,更别说服务器运行 onopen函数了!!! 怎么办...搞了一天,仍然找不到连接的方法!!! 幸运的是仅仅苹果系统 的无法使用 ,安卓的却可以,奇了怪了 哈皮 ,那我 ...
- Go的日志库go-logging
配置文件config.yaml log: prefix: '[MY-LOG] ' log-file: true stdout: 'DEBUG' file: 'DEBUG' config/config. ...
- Could not find resource mybatis.xml 找不到mybatis主配置文件的三种解决方式
第一种:先清除target目录 再重新compile编译 第二种:让idea重构项目 第三种 :手动添加到target目录下的classes包下
- HDOJ3579Hello Kiki
https://acm.hdu.edu.cn/showproblem.php?pid=3579 一些坑点.首先是如果说最后求得到的结果为0,那么在数学意义上这是正确的,0对于任何的确是最小的整数解,但 ...
- 深度介绍Flink在字节跳动数据流的实践
本文是字节跳动数据平台开发套件团队在1月9日Flink Forward Asia 2021: Flink Forward 峰会上的演讲分享,将着重分享Flink在字节跳动数据流的实践. 字节跳动数据流 ...
- 【Java常用类】BigDecimal
BigDecimal 一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中, 要求数字精度比较高,故用到java.math.BigDecimal类. BigDecimal类支 ...