Zabbix Docker环境部署
程序员文章站
2022-04-18 19:55:51
...
Zabbix服务端部署
- 本服务部署采用Docker镜像部署,以简化部署流程。部署参考 官方中文部署手册
名称介绍
- 宿主机:运行Docker容器的Linux服务器
1、Docker环境
Docker环境不属于本文档的介绍范围,安装请参考Docker官网
下文中使用到的docker命令介绍:
- 搜索镜像:
docker search [镜像名称]
- 下载镜像:
docker pull [镜像名称]
- 安装镜像并启动镜像容器:
docker run --name [镜像别名] \
--link [关联镜像]:[关联镜像别名] \
-e [容器环境变量名称]=[容器环境变量值] \
-p [宿主机端口]:[容器端口] \
-v [宿主机目录]:[容器目录] \
-d [镜像名称]:[镜像版本]
其中 --link [关联镜像]:[关联镜像别名]
-e [容器环境变量名称]=[容器环境变量值]
-p [宿主机端口]:[容器端口]
-v [宿主机目录]:[容器目录]
为可选参数,各参数具体含义以及其他参数请参考Docker官网
- 进入容器:
docker exec -it [容器别名或容器ID] bash
- 在容器中运行命令:
docker exec -it [容器别名或容器ID] [Shell命令行]
- 查看容器日志:
docker logs [容器别名或容器ID]
- 从宿主机拷贝文件或文件夹到容器中:
docker cp [宿主机文件或目录] [容器ID]:[容器中的目录]
- 从容器拷贝文件或文件夹到宿主机中:
docker cp [容器ID]:[容器中的目录] [宿主机文件或目录]
- 停止容器:
docker stop [容器别名或容器ID]
- 启动容器:
docker start [容器别名或容器ID]
- 重启容器:
docker restart [容器别名或容器ID]
- 删除容器:
docker rm [容器别名或容器ID]
- 删除镜像:
docker rmi [镜像名称:镜像ID]
2、安装MySQL
- (1) 搜索镜像:
docker search mysql
- (2) 选择并下载镜像:
docker pull mysql
- (3) 安装并运行镜像:
- 在宿主机中创建目录并赋予权限:
mkdir -p /var/mysql/data
chmod -R 775 /var/mysql/data
- 运行镜像:
docker run --name zabbix-mysql \
-p 3306:3306 \
-v /var/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root
-d mysql
3、安装Zabbix Java gateway
- (1) 搜索镜像:
docker search zabbix-java-gateway
- (2) 选择并下载镜像:
docker pull zabbix/zabbix-java-gateway
- (3) 安装并运行镜像:
docker run --name zabbix-java-gateway \
-d zabbix/zabbix-java-gateway
4、安装Zabbix Server
- (1) 搜索镜像:
docker search zabbix-server-mysql
- (2) 选择并下载镜像:
docker pull zabbix/zabbix-server-mysql
- (3) 安装并运行镜像:
- 在宿主机中创建目录并赋予权限:
mkdir -p /var/zabbix/data
chmod -R 775 /var/zabbix/data
- 运行镜像:
docker run --name zabbix-server \
--link zabbix-mysql:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
-e MYSQL_DATABASE="zabbix" \
-e DB_SERVER_PORT="3306" \
-v /var/zabbix/data:/usr/lib/zabbix \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql
- 查看zabbix-server启动日志
docker logs zabbix-server
注意: 此时查看zabbix-server日志会发现容器启动失败,这是因为zabbix-server我们配置的启动使用zabbix用户,zabbix数据库,但是前面创建MySQL时没有进行此操作
5、解决Zabbix Server启动失败问题
- (1)从Zabbix Server中下载Zabbix的MySQL数据库脚本到宿主机中
docker cp zabbix-server:/usr/share/doc/zabbix-server-mysql/create.sql.gz ./
zcat create.sql.gz > create.sql
- (2)在Mysql中创建zabbix用户,并将SQL脚本导入到MySQL数据库中
docker cp ./create.sql zabbix-mysql:/var/mysql
docker exec -it zabbix-mysql bash
cd /var/mysql
mysql -u root -p
root
CREATE user 'zabbix'@'%' IDENTIFIED BY 'zabbix';
create database zabbix;
grant all on zabbix.* to 'zabbix'@'%';
use zabbix;
source create.sql;
- (3)重启zabbix-server
docker restart zabbix-server
6、安装Zabbix Web Nginx MySQL
- (1) 搜索镜像:
docker search zabbix-web-nginx-mysql
- (2) 选择并下载镜像:
docker pull zabbix/zabbix-web-nginx-mysql
- (3) 安装并运行镜像:
docker run --name zabbix_web \
--link zabbix-mysql:mysql \
--link zabbix-server:zabbix-server \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_DATABASE="zabbix" \
-e ZBX_SERVER_HOST="zabbix-server" \
-p 80:80 \
-d zabbix/zabbix-web-nginx-mysql
至此Zabbix服务容器全部安装完成。可以通过宿主机的IP来访问Zabbix的Web界面,默认账户:Admin 密码:zabbix
7、Zabbix客户端 Zabbix Agent
zabbix-agent为Zabbix的客户端组件,用来收集需要监控的服务器信息。
zabbix可以直接使用linux组件来进行安装
- (1)下载安装zabbix-agent
yum install zabbix-agent -y
- (2)修改zabbix-agent
zabbix-agent安装完毕之后,配置在/etc/zabbix/zabbix_agentd.conf
修改配置文件:主要修改一下三项即可
#Zabbix-Agent被动模式下允许服务器的授权地址
Server=[zabbix-server的IP地址]
#Zabbix-agent主动模式下的上报地址
ServerActive=[zabbix-server的IP地址]
#Zabbix-agent的服务器名称
Hostname=Zabbix server
8、Zabbix Web添加主机
- (1)打开并登录Zabbix Web
- (2)Configuration -> Hosts -> Create host
- Host name填写第7步中的zabbix_agentd.conf中的Hostname
- Groups选择对应的服务器,例如Linux选择:
Linux servers
- Agent interfaces填写被监控的服务器的ip地址和端口号(就是第7步中部署zabbix-agent的服务器的Ip,如果没有修改过第7步中zabbix_agentd.conf中的zabbix-agent监听的端口号,则默认端口为10050)
- (3)切换到Templates界面,在Link new templates选择对应的模板,例如Linux服务器可以选择:
Template OS Linux
。选择完成之后点击add
按钮,默认即添加完成 - (4)点击Add按钮,即可成功添加服务器,在列表中会显示刚才添加的服务器信息
推荐阅读
-
ASP.NET Core 3.0 : 二十八. 在Docker中的部署以及docker-compose的使用
-
教你使用如何docker部署淘宝rap2服务
-
详解如何使用Docker快速部署ELK环境(最新5.5.1版本)
-
docker部署rabbitmq集群的实现方法
-
Docker部署Django应用的示例
-
Docker下实战zabbix三部曲之三:自定义监控项
-
Docker下实战zabbix三部曲之二:监控其他机器
-
NetCore的Docker部署
-
Linux下自动化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)
-
[笔记]使用Docker部署.NET Core应用程序