Ad Widget

Collapse

Проблемы с zabbix-snmptraps в docker

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Проблемы с zabbix-snmptraps в docker

    Добрый день.
    Установлен заббикс в докере. Использовался следующий compose файл: (вложением тк много текста) docker-compose.txt

    После запуска контейнера все выглядит нормально. Процессы запущены, порты слушаются, в в stdout трапы валятся:
    Code:
    $docker exec zabbix_zabbix-snmptraps_1 netstat -lntup
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 127.0.0.11:39545 0.0.0.0:* LISTEN -
    udp 0 0 127.0.0.11:35369 0.0.0.0:* -
    udp 0 0 0.0.0.0:1162 0.0.0.0:* 10/snmptrapd
    
    $docker exec zabbix_zabbix-snmptraps_1 ps aux
    PID USER TIME COMMAND
    1 zabbix 0:01 {supervisord} /usr/bin/python3 /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
    9 zabbix 0:00 /usr/sbin/snmptrapfmt -f /etc/snmp/snmptrapfmt.conf
    10 zabbix 0:00 /usr/sbin/snmptrapd -m +ALL -M /usr/share/snmp/mibs/:/var/lib/zabbix/mibs -f -n -Lo -p /tmp/snmptrapd.pid -C -c /etc/snmp/snmptrapd.conf udp:0.0.0.0:1162
    
    $docker logs -f  zabbix_zabbix-snmptraps_1
    020-06-30 16:34:56 192.168.1.31(via UDP: [172.16.238.1]:60152->[172.16.238.2]:1162) TRAP, SNMP v1, community public
    2020-06-30 16:34:57 192.168.1.19(via UDP: [172.16.238.1]:43626->[172.16.238.2]:1162) TRAP, SNMP v1, community public
    Но, файл ./zbx_env/var/lib/zabbix/snmptraps/snmptraps.log даже не создается.

    Если эти процессы убить, то supervisord перезапустит их и файл создается и начинает писаться.

    Code:
    $docker exec zabbix_zabbix-snmptraps_1 kill -9 10
    $docker exec zabbix_zabbix-snmptraps_1 kill -9 9
    $docker exec zabbix_zabbix-snmptraps_1 ps aux
    PID USER TIME COMMAND
    1 zabbix 0:01 {supervisord} /usr/bin/python3 /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
    306 zabbix 0:00 /usr/sbin/snmptrapd -m +ALL -M /usr/share/snmp/mibs/:/var/lib/zabbix/mibs -f -n -Lo -p /tmp/snmptrapd.pid -C -c /etc/snmp/snmptrapd.conf udp:0.0.0.0:1162
    327 zabbix 0:00 /usr/sbin/snmptrapfmt -f /etc/snmp/snmptrapfmt.conf
    Но! в файл попадают строки с IP докер-бриджа а не железки

    Code:
    20200630.161747 ZBXTRAP 172.16.238.1 6 1 (null) SNMPv2-SMI::enterprises.9.9.41.
    20200630.161803 ZBXTRAP 172.16.238.1 IF-MIB::linkDown 0 (null) IF-MIB::ifIndex.
    20200630.161804 ZBXTRAP 172.16.238.1 6 1 (null) SNMPv2-SMI::enterprises.9.9.41.
    20200630.161805 ZBXTRAP 172.16.238.1 IF-MIB::linkUp 0 (null) IF-MIB::ifIndex.17
    20200630.161816 ZBXTRAP 172.16.238.1 6 1 (null) SNMPv2-SMI::enterprises.9.9.41.
    20200630.161823 ZBXTRAP 172.16.238.1 IF-MIB::linkDown 0 (null) IF-MIB::ifIndex.
    20200630.161823 ZBXTRAP 172.16.238.1 IF-MIB::linkDown 0 (null) IF-MIB::ifIndex.
    20200630.161825 ZBXTRAP 172.16.238.1 IF-MIB::linkUp 0 (null) IF-MIB::ifIndex.15
    В заббикс эти трапы валятся в хост 172.16.238.1 (создал для теста)

    При этом сам трап в stdout корректно, с верным IP (см выше лог из контейнера)

    Конфиги (стоковые, из контейнера вытащил)
    snmptrapd.conf
    Code:
    authCommunity log,execute,net public
    disableAuthorization yes
    traphandle default /usr/sbin/snmptrapfmthdlr
    snmptrapfmt.conf
    Code:
    SUBST=\#\ \
    NODEFMT=ip
    VARFMT="%n %v "
    LOGFMT="$x ZBXTRAP $R $G $S $e $*"
    LOGFILE="/var/lib/zabbix/snmptraps/snmptraps.log"
    Вопросы:
    1. Как запускать траппер из композа нормально? не буду же я руками убивать эти процессы после каждого рестарта.
    2. Как писать в лог корректный IP?

    По второуму полагаю что нужно править snmptrapfmt.conf: LOGFMT но не нашел что имено тудп писать, а после пересоздания контейнера опять сломается.
    Attached Files
    Last edited by DeeZ; 30-06-2020, 18:57.

    #2
    Выкинул из supervisord секцию [program:snmptrapfmt], а в [program:snmptrapd] поменял команду, Поменял docker-compose, что бы мой файл маунтился в конттейнер.
    Теперь файл выглядит так, работает как положено.

    Code:
    [supervisord]
    nodaemon = true
    
    [program:snmptrapd]
    command = /usr/sbin/%(program_name)s -m '+ALL' -M /usr/share/snmp/mibs/:/var/lib/zabbix/mibs -f -n -Lo -Lf /var/lib/zabbix/snmptraps/snmptraps.log -p /tmp/snmptrapd.pid -F "%%y%%02m%%02l.%%02h%%02j%%02k ZBXTRAP %%A %%N %%v\n" -C -c /etc/snmp/%(program_name)s.conf udp:0.0.0.0:1162
    auto_start = true
    autorestart = true
    priority = 100
    
    startsecs=3
    startretries=3
    stopsignal=TERM
    stopwaitsecs=2
    
    redirect_stderr=true
    stdout_logfile = /dev/stdout
    stdout_logfile_maxbytes = 0
    Но это костяль. Как то же разработчик планировал и тестировал работу трапов? Зачем snmptrapfmt если лог можно писать snmptrapd?

    PS: из /etc/snmp/snmptrapd.conf надо выкинуть "trarphandler default". На работу не влияет но в логах неудачные попытки обработки трапа.
    Last edited by DeeZ; 01-07-2020, 13:22.

    Comment

    Announcement

    Collapse
    No announcement yet.
    Working...
    X