基于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

# 查看版本号

[[email protected] ~]# 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 -e MYSQL_DATABASE="zabbix"  3 -e MYSQL_USER="zabbix"  4 -e MYSQL_PASSWORD="zabbix"  5 -e MYSQL_ROOT_PASSWORD="zabbix"  6 -v /home/zabbix/data:/var/lib/mysql  7 -d mysql:5.7  8 --character-set-server=utf8  9 --collation-server=utf8_bin 10 --restart=always 11 -p 3306:3306

定义了数据库名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 --rm --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)检查安装的三个容器是否都正常启动

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

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

[[email protected] ~]# docker ps -a

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

[[email protected] ~]# 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=当前主机IP105行   - DB_SERVER_HOST=当前主机IP115行   - ZBX_SERVER_HOST=当前主机IP

4)加载yml编排文件(需要等待一些时间,因为需要下载镜像)

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

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

[[email protected] 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?

原文地址:https://www.cnblogs.com/double-dong/p/11441168.html

时间: 2024-08-30 05:03:59

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

基于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 #关闭se

Zabbix监控平台(三)生产环境案例

Zabbix监控平台(三)生产环境案例 一,Zabbix生产环境监测案例概述 1.1 项目规划 1.2 SNMP监控流程 1.3 IPMI 1.4 JMX(使用Zabbix Java Gateway代理) 1.5 实战监控Nginx,Apache,MySQL,PHP-fpm 1.6 Zabbix的Web监测 二,Zabbix监控MySQL数据库操作实战 2.1 编写监控脚本 2.2 在zabbix-agent端创建自定义键值配置文件 2.3 在zabbix-server端测试键值 2.4 在za

提取zabbix监控平台单台服务器图形并发邮件python实现

需求:希望每天邮件发出当天某台服务器的监控状态,如果某天都登陆zabbix截图很麻烦,而且并不能保证每天都准点操作,于是写了一段脚本实现自动抓取图片,并组装成html,通过定时邮件发送,实现日报自动化. 一.效果图: 二.代码: #!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb import datetime import cookielib, urllib2,urllib import smtplib from email

zabbix监控平台汉化

前一段时间应公司的需要,搭建了zabbix监控平台,安装zatree插件,安装和配置过程相对nagios简化了许多.但是在图形化方面还存在较大的察觉,有一种生硬的感觉. 平台搭建好了得给上司看看,不然还以为天天拿工资没有干活.上司看完了之后还比较满意,就是对全英文体验不是很好,不好怎么样,只有汉化了. 在网上也查阅了不少文章,都是各说各的,简单的配置也被说的摸不着头脑.it行业就是这样,当你明白的时候感觉很难,很高大上,等你走进来后,会发现,其实是自己吓唬自己. 这里现将zabbix的汉化过程,

分布式zabbix监控平台汉化,中文乱码问题

zabbix监控软件一直对中文的支持较弱,zabbix汉化之后经常会发生发生中文字体乱码的情况.关于zabbix汉化方法可参考文章( zabbix监控平台汉化 http://koala003.blog.51cto.com/9996246/1683687) 这是由于zabbix对web端没有中文库支持较弱的缘故,所以我们需要做的是添加专业的中文字体库: 1. 添加中文字库 我们可以在本地的电脑上下载,也可以去网上下载,建议使用较为常用的中文字体库 本地中文字体库路径: C:\Windows\Fon

zabbix监控平台的搭建--安装zabbix

zabbix监控平台之--zabbix安装篇 1.安装依赖包 yum -y install gcc gcc-c++ autoconf httpdphp mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysqlphp-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmathmysql-connector-odbc mysql-devel l

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

部标1078视频监控平台,是一个庞杂的工程,涵盖了多层协议,部标jt808,jt809,jt1078,苏标Adas协议等,多个平台功能标准,部标796标准,部标1077标准和苏标主动安全标准,视频方面的协议有RTSP, RTMP, RTP, 音视频编码有H.264, AAC,  726,711等,消化这些协议和功能标准就已经是需要一个较长的周期了,而构建一个视频平台的架构,也是比较复杂的,后端不仅有网关,还要有流媒体服务器,转发服务器,播放器,RTSP或RTMP服务器等多个服务器模块,需要的技术

ONOS集群---基于docker部署

ONOS HA 部署流程 高可靠性的网络环境在生产中随处可见,ONOS的一大亮点是支持集群.为了能够快速的搭建起ONOS的集群环境,官网提供了基于docker的部署镜像.当我们部署完成docker环境以后,可以很方便的使用docker来部署一个ONOS的集群.[关于docker的环境部署,参考:http://www.cnblogs.com/BurlyLuo/p/8283815.html] ONOS使用Hazelcast架构实现对集群成员的管理,在集群模式下,网络中的控制器共享状态信息,共同管理网

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

本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中, 至于docker如何安装,请参考https://www.cnblogs.com/xingyunqiu/p/11584066.html Jenkins官网文档:https://jenkins.io/zh/doc/ 使用命令从镜像仓库拉取指定文件,我这里用的是jenkins:lts这个版本:如果需要其他版本 注意,由于我是基于docker容器化部署Jenkins,所以不需要安装jdk环境 sudo docker