- 在client端启动zabbix-agent服务
启动zabbix-agent有如下2种方式:
- agent start
root@lykj-45:/srv# lsleyao zabbix zabbix-agent-20180606.tar.gzroot@lykj-45:/srv# tree -L 3 zabbix/zabbix/`-- agent |-- agent |-- compose.yml `-- zabbix-agent.service1 directory, 3 filesroot@lykj-45:/srv# zabbix/agent/agent start
- service zabbix-agent start
root@lykj-45:/etc/init.d# pwd/etc/init.droot@lykj-45:/etc/init.d# ls -l zabbix-agent-rwxr-xr-x 1 root root 1688 Jun 8 14:35 zabbix-agentroot@lykj-45:/etc/init.d# service zabbix-agent start
- 使用agent start启动时遇到的问题
Question:
docker与docker-compose版本不匹配,提示如下:
root@lykj-45:/etc/init.d# cd /srvroot@lykj-45:/srv# /srv/zabbix/agent/agent startERROR: 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 -vDocker version 1.9.1, build a34a1d5root@lykj-45:/srv# docker-compose -vdocker-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 startroot@LYKJweb01:/etc/init.d# ps -ef |grep zabbixroot 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/bashbash-4.3# cat /etc/zabbix/zabbix_agentd.confLogType=consoleServer=43.254.240.86ServerActive=43.254.240.86:10051Hostname=43.254.240.38Include=/etc/zabbix/zabbix_agentd.d/LoadModulePath=/var/lib/zabbix/modules/
3)重启容器后,可以看到zabbix对应的进程
root@wxsn:~# docker restart zabbix-agentroot@wxsn:~# ps -ef |grep zabbixlibuuid 2527 2474 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd --foreground -c /etc/zabbix/zabbix_agentd.conflibuuid 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 envPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binHOSTNAME=7ff8fd15b700 '''container-id'''ZBX_HOSTNAME=43.254.240.38 '''与web上配置的主机名称保持一致'''ZBX_SERVER_HOST=43.254.240.86TERM=xtermZBX_VERSION=3.4.4ZBX_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 zabbixlibuuid 2527 2474 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd --foreground -c /etc/zabbix/zabbix_agentd.conflibuuid 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-agentroot 4008 3634 0 15:30 pts/1 00:00:00 grep --color=auto zabbixroot@wxsn:~# docker top zabbix-agentUID PID PPID C STIME TTY TIME CMDroot 2474 809 0 13:21 ? 00:00:02 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conflibuuid 2527 2474 0 13:21 ? 00:00:00 /usr/sbin/zabbix_agentd --foreground -c /etc/zabbix/zabbix_agentd.conflibuuid 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容器