Docker入门之zabbix-agent篇

谁说我不能喝 提交于 2020-12-19 07:42:34
  • 在client端启动zabbix-agent服务

启动zabbix-agent有如下2种方式:

  1. 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

     

  2. 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容器

 

 

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!