Ad Widget

Collapse

Zabbix queue

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Grinders2007
    Junior Member
    • Jul 2018
    • 16

    #1

    Zabbix queue

    Здравствуйте!
    Нужна помощь в решении проблемы, недавно вынес все проверки IPMI poller на отдельную прокси для снижения нагрузки на сервер, после чего начал наблюдать отсутствие данных спустя некоторое время на всех узлах за прокси.
    Используется:
    Zabbix 3.2.4 на Rhel 6.5
    mysql Ver 15.1 Distrib 10.1.18-MariaDB на Rhel 6.5
    zabbix_proxy 3.2.4 на Rhel 6.5
    Почти 95% всех проверок на прокси используют IPMI агент с интервалом в 4м.

    Пример отсутствия данных за прокси:

    Очередь растет до 25 000, после чего не увеличивается, и новые данные перестают поступать на сервер. В логах Zabbix прокси и сервера ошибок нет. В логах агента возникает ошибка соединения с Zabbix сервером:
    Code:
    [I]24083:20180718:145005.752 cannot send heartbeat message to server at "172.26.222.162": ZBX_TCP_READ() timed out
    20290:20180718:114939.934 cannot send history data to server at "172.26.222.162": ZBX_TCP_WRITE() failed: [104] Connection reset by peer[/I]
    telnet 172.26.222.162 10051 с любого сервера показывает что порт Zabbix server отвечает слишком долго и отбрасывает соединение.
    Лог прокси:
    Code:
    [I]23169:20180712:031602.119 Unable to connect to the server [172.26.222.162]:10051 [cannot connect to [[172.26.222.162]:10051]: [110] Connection timed out]. Wil$
     23168:20180712:031603.954 Unable to connect to the server [172.26.222.162]:10051 [cannot connect to [[172.26.222.162]:10051]: [4] Interrupted system call]
     23168:20180712:031703.954 Unable to connect to the server [172.26.222.162]:10051 [cannot connect to [[172.26.222.162]:10051]: [4] Interrupted system call]
     23169:20180712:031705.119 Still unable to connect...
     23169:20180712:031838.119 Still unable to connect...
     23169:20180712:031908.121 Connection restored.
     23221:20180712:032713.596 executing housekeeper
     23221:20180712:032716.608 housekeeper [deleted 609709 records in 3.002051 sec, idle for 1 hour(s)]
     23167:20180712:034104.836 received configuration data from server at "172.26.222.162", datalen 2449559
     23169:20180712:035157.911 Unable to connect to the server [172.26.222.162]:10051 [cannot connect to [[172.26.222.162]:10051]: [110] Connection timed out]. Wil$
     23169:20180712:035158.913 Connection restored.[/I]
    Видно что прокся пытается отправить данные серверу, но у нее не получается.

    Рестарт сервера помогает решить эту проблему на неопределенное время(пока очереди вновь не станут слишком большими). Приблизительно 6 часов после перезагрузки Zabbix server принимает все данные с прокси корректно, после чего графики перестают строиться и в логах можно наблюдать ошибку подключения к серверу.

    Click image for larger version

Name:	APIProxy.JPG
Views:	291
Size:	110.5 KB
ID:	363426
    Click image for larger version

Name:	APIQueue.JPG
Views:	273
Size:	40.9 KB
ID:	363427

    По признакам недоступности Zabbix и времени роста очереди, проблема скорее всего заключается в большой очереди Zabbix proxy.
    На примере формумов с похожими проблемами я пробовал синхронизировать время на Proxy и Server, играться с настройками Timeout, StartDBSyncers, StartPollers, StartIPMIPollers, менял интервал проверок. Но это не дало никаких результатов.

    Снимки графиков в вложении.

    Конфиг zabbix_server.conf:
    Code:
    [I]SourceIP=172.26.222.162
    LogFile=/var/log/zabbix/zabbix_server.log
    LogFileSize=0
    DebugLevel=2
    PidFile=/var/run/zabbix/zabbix_server.pid
    DBHost=172.26.222.169
    DBName=XXX
    DBUser=XXX
    DBPassword=XXX
    DBPort=3306
    StartPollers=470
    StartIPMIPollers=50
    StartPollersUnreachable=390
    StartTrappers=150
    StartPingers=90
    StartDiscoverers=2
    StartHTTPPollers=1
    StartTimers=10
    StartEscalators=1
    StartVMwareCollectors=0
    VMwareCacheSize=1M
    VMwareTimeout=10
    SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
    StartSNMPTrapper=1
    CacheSize=1024M
    CacheUpdateFrequency=60
    StartDBSyncers=24
    HistoryCacheSize=512M
    TrendCacheSize=128M
    ValueCacheSize=128M
    Timeout=20
    TrapperTimeout=120
    UnreachablePeriod=60
    UnavailableDelay=600
    UnreachableDelay=300
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    ExternalScripts=/usr/lib/zabbix/externalscripts
    LogSlowQueries=0
    StartProxyPollers=4
    AllowRoot=1
    User=XXX
    [/I]
    Конфиг БД my.cnf:
    Code:
    [I][mysqld]
    datadir=/opt/db/
    socket=/var/lib/mysql/mysql.sock
    user=XXX
    symbolic-links=0
    default_storage_engine=InnoDB
    innodb_file_per_table = 1
    connect_timeout = 60
    wait_timeout = 28800
    max_connections = 1500
    max_allowed_packet = 128M
    max_connect_errors = 1000
    tmp_table_size = 256M
    max_heap_table_size = 128M
    table_cache = 1024
    log_error = /var/log/mysql/mysql-error.log
    default_storage_engine=InnoDB
    innodb_file_per_table = 1
    innodb_status_file = 1
    innodb_additional_mem_pool_size = 128M
    innodb_buffer_pool_size = 10G
    innodb_buffer_pool_instances = 10
    innodb_flush_method = O_DIRECT
    innodb_io_capacity = 2000
    innodb_flush_log_at_trx_commit = 2
    innodb_support_xa = 0
    innodb_log_buffer_size = 128M
    event_scheduler = 1
    query_cache_type = 0
    query_cache_size = 536870912
    join_buffer_size=256K
    query_cache_limit=2M
    sort_buffer_size=2M
    read_buffer_size=256K
    read_rnd_buffer_size=512K
    key_buffer_size=48M
    open_files_limit = 100000
    thread_cache_size = 100
    event_scheduler = 1
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    !includedir /etc/my.cnf.d[/I]
    Конфиг zabbix_proxy.conf:
    Code:
    [I]ProxyMode=0
    Server=172.26.222.162
    ServerPort=10051
    Hostname=XXX-zbx-px02
    ListenPort=10051
    LogFile=/var/log/zabbix/zabbix_proxy.log
    LogFileSize=400
    DebugLevel=2
    PidFile=/var/run/zabbix/zabbix_proxy.pid
    DBName=/var/lib/sqlite/zabbix.db
    DBUser=XXX
    DataSenderFrequency=1
    StartPollers=210
    StartIPMIPollers=320
    StartPollersUnreachable=50
    StartTrappers=5
    StartPingers=1
    StartDiscoverers=1
    SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
    CacheSize=256M
    StartDBSyncers=12
    HistoryCacheSize=512M
    HistoryIndexCacheSize=64M
    Timeout=25
    ExternalScripts=/usr/lib/zabbix/externalscripts
    AllowRoot=1[/I]
    Есть идеи из-за чего это может происходить и как можно это решить? Возможно проблема не в очереди, но пока это единственная версия проблемы.
    Attached Files
  • Grinders2007
    Junior Member
    • Jul 2018
    • 16

    #2
    Давний пост.
    Опишу как решил данную проблему:
    Как выяснилось сервер открывает множество tcp соединений и не закрывает их, они висят в состоянии time_wait т.к. нету ответа от сервера. В таком случае они закроются только по истечении timeout прописанного на машинке.
    Посмотреть кол-во можно командой:
    netstat -an | grep ip:10051| awk '{ print $6}' |sort| uniq -c
    Соединения накапливаются и в итоге доходят до лимита. В итоге заббикс сервер становиться недоступен.
    Соединения накапливаются по нескольким причинам:
    1. Большое кол-во узлов завязано на сервер.
    2. Zabbix помечает эти серверы как недоступные и начинает их опрашивать каждые 60 сек(по умолчанию).
    Есть несколько вариантов решения:
    1. Распределить сервера на прокси.
    2. Увеличить UnreachablePeriod в конфигурации сервера.
    3. Уменьшить время ожидания ответа от сервера в конфигурации сервера.
    Я уменьшил время ожидания в "/proc/sys/net/ipv4/tcp_fin_timeout" и распределил несколько узлов на прокси.
    В идеале ВСЕ узлы должны быть за прокси. Как я понял это Best practics для Zabbix.

    Comment

    Working...