zabbix 服务端安装(docker)

安装思路:
1、安装数据库,用于存放 zabbix server 的数据
2、安装服务端,即 zabbix server
3、安装管理员网页

安装数据库

对于 zabbix 的数据库,建议独立部署一套,避免和其他业务共用!

业务数据、配置、日志都映射到宿主机上,避免数据丢失,也方便日后运维

创建配置文件目录 mkdir -p /data/zabbix-mysql/conf

编辑配置文件 vim /data/zabbix-mysql/conf/my.cnf,添加如下内容:

[client]

port=3306
default-character-set=utf8

[mysqld]

port=3306
character_set_server=utf8
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
datadir     = /var/lib/mysql

#时差处理
default-time_zone='+8:00'

#不需要进行hostname解析
skip-name-resolve 

#MySQL8需要加这句配置
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

运行容器

docker run --name zabbix-mysql-server --hostname zabbix-mysql-server \
--restart=always \
--privileged=true \
-v /data/zabbix-mysql/conf:/etc/mysql/conf.d \
-v /data/zabbix-mysql/logs:/logs \
-v /data/zabbix-mysql/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD="123456" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123456" \
-e MYSQL_DATABASE="zabbix" \
-p 33061:3306 \
-d mysql:5.6 \
--character-set-server=utf8 --collation-server=utf8_bin

安装 zabbix server

docker run  --name zabbix-server-mysql --hostname zabbix-server-mysql \
--restart=always \
--privileged=true \
--link zabbix-mysql-server:mysql \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_USER="zabbix" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_PASSWORD="123456" \
-v /etc/localtime:/etc/localtime \
-v /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:centos-latest

注意了,官方有很多镜像,默认的只有 60mb

我拉的是 centos-latest 版本,这个镜像比较大,

为什么用这个呢?便于后续能够使用 python 脚本做服务监听预警

运行后观察数据库,数据表会陆陆续续被创建出来,说明持久化没问题

这个时候 zabbix 服务端已经正常使用了,但是还需要追加如下内容

安装 python 环境

没有预警推送的 zabbix 是没有灵魂的

服务监听预警的触发途径比较多,我认为通过脚本触发是最灵活的,

// 以root身份进入容器
docker exex -it -uroot zabbix-server-mysql bash
// 在容器里执行安装命令,建议用 python2
yum install -y python2

安装完毕后,/usr/bin 多了如下内容

如此情况下,我们能通过 python2 或者 python2.7 命令使用 python

为了更加友好,我们创建下快捷

cp /usr/bin/python2.7 /usr/bin/python;
cp /usr/bin/pip2.7 /usr/bin/pip;
pip install requests;

提交镜像,下次创建容器可以省去 python 安装

docker commit zabbix-server-mysql zabbix-server-mysql-python

安装管理员网页

docker run --name zabbix-web-nginx-mysql --hostname zabbix-web-nginx-mysql \
--link zabbix-mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123456" \
-e MYSQL_DATABASE="zabbix" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e PHP_TZ="Asia/Shanghai" \
-p 8080:8080 \
-d \
zabbix/zabbix-web-nginx-mysql

这里有个很大的坑,

网上找的教程都是映射 80 端口到外部,因为老版本镜像里面的 nginx 配置里面写的是 80 端口,

但是现在最新的镜像里面的 nginx 用的是 8080 端口!

访问

打开浏览器输入,ip:8080,用户名 Admin,密码 zabbix

汉化

安装过程中可能的错误

错误1:zabbix-server-mysql 运行失败

查看日志发现建表失败

往上翻日志,发现是这个报错,原因是我们在 my.cnf 中追加了默认 default-storage-engine=InnoDB

解决方案:去掉这个配置项,重新来即可

错误2:安装完毕后 网页打不开

检查宿主机端口映射也是正常的,

我们进入 zabbix-web-nginx-mysql 发现 nginx.conf 映射的是 8080 端口,

所以,修改 docker 的端口映射即可


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:zabbix 服务端安装(docker)

字数:912

本文作者:夏来风

发布时间:2020-11-27, 23:41:39

原始链接:http://www.demo1024.com/blog/zabbix-install-server/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。