- 在client端启动zabbix-agent服务
启动zabbix-agent有如下2种方式:
- agent start
root@lykj-45:/srv# ls leyao zabbix zabbix-agent-20180606.tar.gz root@lykj-45:/srv# tree -L 3 zabbix/ zabbix/ `-- agent |-- agent |-- compose.yml `-- zabbix-agent.service 1 directory, 3 files root@lykj-45:/srv# zabbix/agent/agent start
- service zabbix-agent start
root@lykj-45:/etc/init.d# pwd /etc/init.d root@lykj-45:/etc/init.d# ls -l zabbix-agent -rwxr-xr-x 1 root root 1688 Jun 8 14:35 zabbix-agent root@lykj-45:/etc/init.d# service zabbix-agent start
- 使用agent start启动时遇到的问题
Question:
docker与docker-compose版本不匹配,提示如下:
root@lykj-45:/etc/init.d# cd /srv
root@lykj-45:/srv# /srv/zabbix/agent/agent start
ERROR: The Docker Engine version is less than the minimum required by Compose. Your current project requires a Docker Engine of version 1.10.0 or greater.
root@lykj-45:/srv# docker -v
Docker version 1.9.1, build a34a1d5
root@lykj-45:/srv# docker-compose -v
docker-compose version 1.8.0, build f3628c7
Answer:
要么升级docker版本,要么降级docker-compose版本(建议一般只升不降);
而升级docker需要先卸载旧版本再重装新版本,会影响到宿主机上的所有容器,务必谨慎操作;
在本例中,采用另一种启动方式来规避docker版本问题。
docker与docker-compose的版本兼容性如下:
docker | docker-compose |
1.9.1 | 1.6.2 |
1.10.0 | 1.8.0 |
备注:安装docker时尽量使用最新的版本,默认的1.9.1版本太老,不建议使用。
- 使用service zabbix-agent start启动时遇到的问题
Question1:
执行service zabbix-agent start没报错,但是没有相应的zabbix进程
root@LYKJweb01:/etc/init.d# service zabbix-agent start
root@LYKJweb01:/etc/init.d# ps -ef |grep zabbix
root 8631 8504 0 14:56 pts/2 00:00:00 grep --color=auto zabbix
Answer1:
1) 使用docker logs命令来查看日志信息
root@LYKJweb01:/etc/init.d# docker logs zabbix-agent
##########################################
...
zabbix_agentd [55]: ERROR: "LogType" "file" parameter requires "LogFile" parameter to be set
...
2)进入容器中修改agent配置文件
root@wxsn:~# docker exec -it zabbix-agent /bin/bash
bash-4.3# cat /etc/zabbix/zabbix_agentd.conf
LogType=console
Server=43.254.240.86
ServerActive=43.254.240.86:10051
Hostname=43.254.240.38
Include=/etc/zabbix/zabbix_agentd.d/
LoadModulePath=/var/lib/zabbix/modules/
3)重启容器后,可以看到zabbix对应的进程
root@wxsn:~# docker restart zabbix-agent
root@wxsn:~# ps -ef |grep zabbix
libuuid 2527 2474 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd --foreground -c /etc/zabbix/zabbix_agentd.conf
libuuid 2528 2527 0 13:21 ? 00:00:01 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
libuuid 2529 2527 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
libuuid 2530 2527 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
libuuid 2531 2527 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
libuuid 2532 2527 0 13:21 ? 00:00:01 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 3696 3634 0 15:06 pts/1 00:00:00 grep --color=auto zabbix
Question2:
有zabbix进程,但是server端获取不到数据
Answer2:
1)可能是docker环境变量中的ZBX_HOSTNAME与实际不符,导致server获取不到client的数据
root@wxsn:~# docker exec -it zabbix-agent env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=7ff8fd15b700 '''container-id'''
ZBX_HOSTNAME=43.254.240.38 '''与web上配置的主机名称保持一致'''
ZBX_SERVER_HOST=43.254.240.86
TERM=xterm
ZBX_VERSION=3.4.4
ZBX_SOURCES=svn://svn.zabbix.com/tags/3.4.4/
HOME=/root
2)不推荐更改运行中的容器配置(如环境变量),容器本身是无状态的,当然可以通过进入容器内部的方式进行更改,但这样的更改是无法持久化保存的,容器重启后更改就会丢失。
3)更改原容器的名字,以便新容器的名字与现有环境保持一致
root@wxsn:~# docker rename zabbix-agent zabbix-agent-old
4)新建容器并设置正确的环境变量
root@wxsn:~# docker run -e HOSTNAME=c4a6d125f1ad -e ZBX_HOSTNAME=43.254.240.107 -e ZBX_SERVER_HOST=43.254.240.86 -e HOME=/ROOT --name zabbix-agent -d -p 10050:10050/tcp zabbix/zabbix-agent
5)使用docker top来查看容器内的进程
root@wxsn:~# ps -ef |grep zabbix
libuuid 2527 2474 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd --foreground -c /etc/zabbix/zabbix_agentd.conf
libuuid 2528 2527 0 13:21 ? 00:00:01 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
libuuid 2529 2527 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
libuuid 2530 2527 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
libuuid 2531 2527 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
libuuid 2532 2527 0 13:21 ? 00:00:01 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 3857 3634 0 15:17 pts/1 00:00:00 docker run -e ZBX_HOSTNAME=43.254.240.110 -it zabbix-agent
root 4008 3634 0 15:30 pts/1 00:00:00 grep --color=auto zabbix
root@wxsn:~# docker top zabbix-agent
UID PID PPID C STIME TTY TIME CMD
root 2474 809 0 13:21 ? 00:00:02 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
libuuid 2527 2474 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd --foreground -c /etc/zabbix/zabbix_agentd.conf
libuuid 2528 2527 0 13:21 ? 00:00:01 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
libuuid 2529 2527 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
libuuid 2530 2527 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
libuuid 2531 2527 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
libuuid 2532 2527 0 13:21 ? 00:00:01 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
6)如果server端还没有数据,就检查docker中的zabbix配置文件 zabbix_agentd.conf 是否正确
7)配置文件正确但仍没有数据,可能是由于之前容器异常中断而zabbix进程未正常释放导致
a.使用 lsof -i:10050 查看有哪些进程在使用10050
b.使用 kill -9 xxx(pid) 来杀死异常进程
c.使用 docker restart zabbix-agent重启zabbix容器
来源:oschina
链接:https://my.oschina.net/u/4340671/blog/3941191