-
Notifications
You must be signed in to change notification settings - Fork 12
server_docker
遇见王斌 edited this page Feb 21, 2018
·
34 revisions
Zabbix server 容器 (meetbill/zabbix) 提供以下服务
- Zabbix 服务端,端口为 10051
- Zabbix Web 端口为 10080 (e.g. http://$container_ip:10080 )
- MySQL instance supporting Zabbix, 用户为
zabbix
密码为zabbix
- Monit deamon managing the processes (http://$container_ip:2812, user 'myuser' and password 'mypassword').
CentOS7.3 安装 Docker 可以查看 手册 中 Docker 安装部分
#docker run -d \
--restart always \
-p 10051:10051 \
-p 10080:80 \
-p 2812:2812 \
-v /var/lib/zabbix/:/var/lib/mysql \
-v /etc/zabbix/alert:/etc/zabbix/alert \
--name zabbix meetbill/zabbix
执行上述命令后,会拉取meetbill/zabbix
镜像,并指定启动后的容器名字为zabbix
,启动容器后,会花费一点儿时间初始化数据库,可以通过下面命令查看初始化数据库进度
同时运行容器时加
-v /var/lib/zabbix:/var/lib/mysql
将 mysql 数据存储在本地目录 /var/lib/zabbix 中-v /etc/zabbix/alert:/etc/zabbix/alert
可以在此目录配置邮件监控发送邮箱配置
#docker logs -f zabbix
-------------------------------------------------------------- 出现以下内容初始化 OK
Running Monit...
'mysqld' process is not running
New Monit id: 82f51c8f1808824fa723284546da261e
Stored in '/root/.monit.id'
Starting Monit 5.22.0 daemon with http interface at [*]:2812
'98a2937cc0ee' Monit 5.22.0 started
'mysqld' trying to restart
'mysqld' start: '/sbin/service mysqld start'
'mysqld' process is running with pid 567
'zabbix-server' start: '/sbin/service zabbix-server start'
'nginx' start: '/sbin/service nginx start'
'php-fpm' trying to restart
'php-fpm' start: '/sbin/service php-fpm start'
'php-fpm' process is not running
'php-fpm' process is running with pid 670
浏览器中输入http:// 服务 IP 地址:10080
即可以看到 Dabbix 登陆界面
- 登陆名
Admin
- 登陆密码
zabbix
# docker exec -i -t zabbix /bin/bash
访问 http://ip:2812
(其中的 IP 更换为服务器 IP)
- 登陆名:
myuser
- 密码:
mypassword
HttpRequest: access denied -- client [10.20.133.44]: missing or invalid Authorization header
上面日志说明有用户访问 monit
#docker stop zabbix
#docker rm zabbix
#docker rmi meetbill/zabbix
#docker stop zabbix
#rm -rf /var/lib/zabbix
#docker start zabbix
在 mysql 数据卷本地磁盘目录创建 .meetbill-debug 文件
如 mysql 数据存放在 /var/lib/zabbix 则
$cd /var/lib/zabbix
$touch .meetbill-debug
【此问题已解决】
遇到的问题是 Docker 容器启动后自动退出,如果容器启动参数时包含“--restart=always” 或“--restart”则会不停重启
提示如下
# docker logs zabbix
Monit daemon with PID 1 awakened
Running Monit...
Monit daemon with PID 1 awakened
Running Monit...
Monit daemon with PID 1 awakened
原因
容器的 PID1 进程(初始化进程)运行时异常退出。docker 检测有异常则重启容器,然后容器检测到已经有 monit 进程(查看有 /var/run/monit.pid 文件),则返回 "Monit daemon with PID 1 awakened" 然后退出。
-
背景
Zabbix server 使用容器安装,agent 装在物理机上,zabbix_server 监控本机的物理机器时
-
问题
Zabbix server 容器监控其他物理机器使用物理机器的真实 IP 即可,监控容器本身所在的物理机器时会有问题,提示如下
# Zabbix server 容器中获取容器所在物理机上的 agent 的信息 [root@328ac2a86196 zabbix]# zabbix_get -s 192.168.1.2 -k agent.ping zabbix_get [1527]: Check access restrictions in Zabbix agent configuration # Zabbix agent 日志 server 访问 agent 时问题 [时间] failed to accept an incoming connection: connection from "172.17.0.8" rejected, allowed hosts: "192.168.1.2"
-
分析
zabbix server 访问本机物理机器的 zabbix agent 时使用的容器中的 IP ,与 zabbix agent 配置的地址(本机物理机实际地址不符)
-
解决方法 (1) 修改 Agent 中的 Zabbix server IP 地址为 Zabbix server 容器 IP
物理机器安装 zabbix_agent 时 配置 zabbix_server 的 IP 为 zabbix_server 的容器 IP 获取 zabbix server 容器 IP 的方式 (docker inspect -f '{{.NetworkSettings.IPAddress}}' zabbix)
(2) 启动容器使用 Host 网络模式
注意:
使用命令获取到的容器 IP 地址写入到文件中后面会有^M
,可以通过echo ${IP} | sed 's/\r//g'
方式去掉
CentOS 7.3 上遇到此问题时,查看下 selinux 是否已关闭,可以关闭状态下,重新启动容器
在逻辑卷后添加:rw
显式的表面挂载卷可读写
#docker stop zabbix
#docker rm zabbix
#docker run -d \
--restart always \
-p 10051:10051 \
-p 10080:80 \
-p 2812:2812 \
-v /var/lib/zabbix/:/var/lib/mysql:rw \
-v /etc/zabbix/alert:/etc/zabbix/alert:rw \
--name zabbix meetbill/zabbix