Startdiscoverers zabbix что это
Перейти к содержимому

Startdiscoverers zabbix что это

  • автор:

Is Zabbix network discoverer 1 threaded per discovery rule or across all discovery rules?

I have set up two network discovery rules networks to test if they will be scanned simultaneously. Both the logged output of the discoverer thread ( zabbix_server —runtime-control log_level_increase=discoverer ) and the output of tcpdump shows me that each of those networks is scanned sequentially. This is not good because I have tons of /24 networks and I need them scanned independently. Is there a way to mitigate this somehow?

asked Mar 3, 2020 at 16:02
316 3 3 silver badges 14 14 bronze badges

1 Answer 1

Zabbix periodically scans the IP ranges defined in network discovery rules. The frequency of the check is configurable for each rule individually.

Note that one discovery rule will always be processed by a single discoverer process. The IP range will not be split between multiple discoverer processes.

You should reconfigure the number of discovery processes ( StartDiscoverers ) in your zabbix_server.conf from 1, which is the default, to a higher value.

The right value depends on how many C class you need to scan, the frequerncy of the scan and the response speed of the scan itself.

Ошибка Zabbix discoverer processes more than 75% busy.

Помощник Админа > Blog > Windows & Linux > Linux > Ошибка Zabbix discoverer processes more than 75% busy.

В Telegram получил сообщение от Zabbix следующего содержания:

Zabbix discoverer processes more than 75% busy

zabbix_utilization

Для устранения данной проблемы требуется скорректировать файл-конфигурации zabbix_server.conf.
Откроем zabbix_server.conf командой:

# nano /etc/zabbix/zabbix_server.conf

Находим параметр с опцией «StartDiscoverers» и меняем значение данного параметра на значение 5, которое по умолчанию равно 1:

### Option: StartDiscoverers #Number of pre-forked instances of discoverers. # # Mandatory: no # Range: 0-250 # Default: #StartDiscoverers=1 StartDiscoverers=5

Zabbix_discovery_size

После изменения настроек требуется сохранить файл и перезагрузить zabbix сервер командой:

# service zabbix-server restart

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Конфигурационный файл zabbix-сервера

DebugLevel=3
LogFile=/var/log/zabbix-server/zabbix_server.log
PidFile=/var/run/zabbix/zabbix_server.pid
DBName=zabbix
DBUser=zabbix
AlertScriptsPath=/etc/zabbix/alert.d/
FpingLocation=/usr/bin/fping
DBPassword=123
DBHost=127.0.0.1
StartPingers=20
CacheSize=512M
StartPollers=65
StartPollersUnreachable=25
StartTrappers=5
StartDiscoverers=3
HousekeepingFrequency=24
MaxHousekeeperDelete=5000
StartDBSyncers=32
ValueCacheSize=64M
Timeout=10

Регулярные выражения (regexp) для network discovery в заббиксе/zabbix

Заббикс – вещь капризная и очень требовательная к ресурсам дисковой подсистемы. А какая-нибудь 76 или 65 циска будучи в ядре или дистрибьюции создаёт уйму интерфейсов, нужных и ненужных. Надо с этим бороться и снимать данные только с нужных портов.

В заббиксе – configuratuin–hosts–нужный хост–discovery rules–Template SNMP Interfaces 64: Network interfaces–нажимаем на Network interfaces–Filters– matches

Для 7606 я написал следующее правило:

^TenGigabitEthernet1/[1-8]$|^GigabitEthernet2/[1-9]$|^GigabitEthernet2/[1-2][0-9]$|^unrouted VLAN [1-9]$|^unrouted VLAN [1-9][0-9]$|^unrouted VLAN [1-9][0-9][0-9]$|^unrouted VLAN [1-3][1-4][0-9][0-9]$|^Port-channel1$

Это выражение будет матчить TenGigabitEthernet1/ с 1 по 8, GigabitEthernet2/ с 1 по 9, GigabitEthernet2/ с 10 по 29, unrouted VLAN с 1 по 3499. Символ ^ – матчить в начале строки, $ – в конце строки.

xe-2/0/[0-3].[0-9] – будут матчиться интерфейсы xe-2/0/0-3.0000-9999. – значит повторить предыдущее значение от 1 до 4 раз.

До этого я пытался экранировать слешы обратным слешем, но в заббиксе это не работает. так же в заббиксе есть инструмент для тестирования регекспов (администрирование-регулярные выражения).

Мониторинг уровня оптического сигнала на cisco

snmpwalk -v2c -c 123 192.168.2.2 1.3.6.1.2.1.47.1.1.1.1.7 | grep Te1/2
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1027 = STRING: “Te1/2”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1028 = STRING: “10-Gigabit Transceiver Port Container Te1/2”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1029 = STRING: “Transceiver Te1/2”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1030 = STRING: “Te1/2 Module Temperature Sensor”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1031 = STRING: “Te1/2 Supply Voltage Sensor”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1032 = STRING: “Te1/2 Bias Current Sensor”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1033 = STRING: “Te1/2 Transmit Power Sensor”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1034 = STRING: “Te1/2 Receive Power Sensor”

нужны соответственно значения уровня на приёме и передаче: 1033 и 1034. Далее снимаем значения с сенсора:

snmpwalk -v2c -c 123 192.168.2.2 1.3.6.1.4.1.9.9.91.1.1.1.1.4.1033
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1033 = INTEGER: -36
manager@zabbix:~$ snmpwalk -v2c -c 123 192.168.2.2 1.3.6.1.4.1.9.9.91.1.1.1.1.4.1034
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1034 = INTEGER: -13

Определить точность измерения:

“This variable indicates the number of decimal
places of precision in fixed-point
sensor values reported by entSensorValue.

Означает, что нужна запятая перед значением справа. Нужно написать скрипт для заббикса.

логирование сообщений с cisco

sudo nano /etc/rsyslog.conf

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

sudo nano /etc/rsyslog.d/50-default.conf

# From core devices
local2.* /var/log/device_log/core

sudo mkdir /var/log/device_log

sudo touch /var/log/device_log/core

sudo nano /etc/logrotate.conf

/var/log/device_log missingok
rotate 5
size=5M
compress
>

/var/log/snmptt missingok
rotate 5
size=5M
compress
>

На хосте заббикс сервера создаю item:

zabbix

Триггеры на падение входящего трафика в три раза

Берётся последнее значение, умножается на 100 и делится на последнее пятое значение. Если отношение меньше тридцати (разница примерно в три раза), срабатывает триггер.

Внимание! Количество трафика из DATAIX упало в 3 раза. Необходимо проверить соответствующий график – возможно ложное срабатывание. Если не проводится никаких работ, необходимо написать письмо на noc@dataix.ru для выяснения причин.

Настроено действие на оповещение:

Тема по умолчанию
Сообщение по умолчанию
Trigger:
Trigger status:
Trigger URL: Item values: 1. (:): Description:
Original event ID:
Сообщение о восстановлении
Тема восстановления
Сообщение о восстановлении
Trigger:
Trigger status:
Trigger URL: Item values: 1. (:): Description:
Original event ID:
Активировано

zabbix trigger DDoS

Жалкие попытки организовать извещение о DDoS атаках.

1. Создаю триггер на входящий со стороны аплинка трафик:

т.е. берётся последнее значение, умноженное на 100 и делится на последнее пятое значение. Если последнее значение больше в 2.5 раза, то триггер срабатывает. Может быть надо брать среднее значение за промежуток времени?

zabbix and syslog centos

Журналирование логов с коммутаторов и маршрутизаторов в заббиксе.

1. В /var/log/ создаётся файл, куда будут складываться логи с оборудования, например

Назначаются права доступа^

chmod 664 switch.log

chown root:zabbix switch.log

2. Редактируем rsyslog.conf:

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

3. Ротация логов – /etc/logrotate.conf

/var/log/switch.log
rotate 7 #количество файлов
size 10M #размер файла для ротации
create
>

Без имени

4. В заббиксе в items заббикс сервера создаём

Логи будут отображатся в latest data.

Что необходимо сделать:

Разные файлы для свитчей, агрегаций, коммутаторов. Тригеры на определённое словосочетание в логах

Перенос каталогов с диска на диск

Понадобилось перенести информацию с жёсткого на жёсткий — для заббикса. Конфигурация следующая — на SSD всё кроме /opt и /var, эти разделы на НЖМД.

  1. Посмотреть информацию о дисках в системе hdparm -i /dev/sd[a-z].
  2. Информация о точках монтирования — mount.
  3. Перенос информации – dd if=/dev/sda of=/dev/sdb

Ещё способ, например перенести на другой диск определённый каталог. Например с sda на sdc.

  1. Монтирую диск mount -t ext4 /dev/sdc mnt/sdc
  2. Архивирую нужный каталог tar tar zcvf pgsql.tar.gz lib/pgsql
  3. Разархивирую tar xvf pgsql.tar.gz -C /mnt/sdc/.

some problems with zabbsrv – less than 25 free in the configuration cache zabbix and Zabbix icmp pinger processes more than 75% busy

1. Zabbix icmp pinger processes more than 75% busy

Нужно увеличить количество процессов пинг – StartPingers в конфиге заббикс сервера. Пока поставил 10, если понадобится увеличу.

2. less than 25 free in the configuration cache zabbix

Увеличить параметр CacheSize, но сначала проверить: но вначале надо сделать `ipcs -M`

—— Пределы совм. исп. памяти ——–
max number of segments = 4096
max seg size (kbytes) = 67108864
max total shared memory (kbytes) = 17179869184
минимальный размер сегмента (байт) = 1
максимум 67 гигигабайта на сегмент. а всего разрешено использовать до 17T.

Пока выставил 512M, если ошибка повторится – увеличить.

Настройка zabbix server psql CentOS 6

Или вот так проще:

yum install epel-release

yum update

установка postgresql yum install postgresql-server

service postgresql initdb
yum install zabbix22-server-pgsql zabbix22-web-pgsql zabbix22-dbfiles-pgsql zabbix22
Создать пользователя zabbix с паролем password CREATE USER zabbix WITH password ‘password’; Создать базу данных zabbix create database zabbix; GRANT ALL PRIVILEGES ON DATABASE zabbix to zabbix;
# "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 10.230.*.*/24 md5 host all all 127.0.0.1/32 md5 # IPv6 local connections: #host all all ::1/128 ident
listen_addresses = '*' port = 5432
# ----------------------------- # PostgreSQL configuration file # ----------------------------- #------------------------------------------------------------------------------ # FILE LOCATIONS #------------------------------------------------------------------------------ listen_addresses = '*' port = 5432 max_connections = 100 #------------------------------------------------------------------------------ # RESOURCE USAGE (except WAL) #------------------------------------------------------------------------------ # - Memory - shared_buffers = 1024MB # min 128kB maintenance_work_mem = 512MB # min 1MB #------------------------------------------------------------------------------ # WRITE AHEAD LOG #------------------------------------------------------------------------------ synchronous_commit = off # In many situations, turning off synchronous_commit for noncritical transactions can provide much of the potential performance benefit of turning off fsync, without the attendant risks of data corruption. #------------------------------------------------------------------------------ # QUERY TUNING #------------------------------------------------------------------------------ effective_cache_size = 16000MB #------------------------------------------------------------------------------ # ERROR REPORTING AND LOGGING #------------------------------------------------------------------------------ logging_collector = on log_directory = 'pg_log' # directory where log files are written, # can be absolute or relative to PGDATA log_filename = 'postgresql-%a.log' # log file name pattern, # can include strftime() escapes log_truncate_on_rotation = on # If on, an existing log file of the # same name as the new log file will be # truncated rather than appended to. # But such truncation only occurs on # time-driven rotation, not on restarts # or size-driven rotation. Default is # off, meaning append to existing files # in all cases. log_rotation_age = 1d # Automatic rotation of logfiles will # happen after that time. 0 disables. log_rotation_size = 0 # Automatic rotation of logfiles will # happen after that much log output. # 0 disables. #------------------------------------------------------------------------------ # RUNTIME STATISTICS #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # AUTOVACUUM PARAMETERS #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # CLIENT CONNECTION DEFAULTS #------------------------------------------------------------------------------ datestyle = 'iso, dmy' changed. lc_messages = 'ru_RU.UTF-8' # locale for system error message # strings lc_monetary = 'ru_RU.UTF-8' # locale for monetary formatting lc_numeric = 'ru_RU.UTF-8' # locale for number formatting lc_time = 'ru_RU.UTF-8' # locale for time formatting # default configuration for text search default_text_search_config = 'pg_catalog.russian' #------------------------------------------------------------------------------ # LOCK MANAGEMENT #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # VERSION/PLATFORM COMPATIBILITY #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # CUSTOMIZED OPTIONS #------------------------------------------------------------------------------
psql -U zabbix -d zabbix -f schema.sql psql -U zabbix -d zabbix -f images.sql psql -U zabbix -d zabbix -f data.sql
post_max_size = 16M max_execution_time = 300 max_input_time = 300 date.timezone = Europe/Moscow
nano /etc/selinux/config SELINUX=disabled
DBHost=10.230.*.* DBName=zabbix DBSocket=/tmp/.s.PGSQL.5432
chkconfig httpd on chkconfig postgresql on chkconfig zabbix-server on

Базовая настройка Zabbix 6.4.0 под CentOS 8 / Rocky Linux 8

Вот прошло уже 2 недели с появления новой версии Zabbix, а именно, версии 6.4.0. И поскольку новым версиям посвещено довольно мало статей, а интерфейс и логику работы они поменяли прямо очень сильно, я решил написать кратенькую инструкцию как с актуальной на данный момент времени вообще жить. Сейчас начнём с основ, а там посмотрим на реакцию публики. Итак.

Собственно, установка

Только обратите внимение, что на этой странице в пункте 1 надо выбрать то, что соответствует вашим пожеланиям, в зависимости от выбора каждого пункта инструкция будет изменяться. Я предпочитаю использовать Zabbix в комплекте с Postgres, потому дальнейшие советы будут про него.

Еще для установки на восьмёрку придётся обновить версии пары пакетов относительно штатных системных, иначе установка пройдёт успешно, но потом ничего работать не будет:

dnf install -y epel-release # Устанавливаем сторонний репозиторий, содержащий нужные нам версии php dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm dnf module reset php dnf module enable php:remi-7.4 -y dnf -qy module disable postgresql dnf install -y postgresql15 postgresql15-server

После установки необходимых пакетов и создания базы данных нужно зайти в конфиг сервера /etc/zabbix/zabbix_server.conf и внести некоторые изменения, я ограничился следующими:

# Данные для подключения к базе, должны соответствовать тому, # что использовалось при установке базы: DBName=zabbix DBUser=zabbix DBPassword=password # Параметры, отвечающие за быстродействие, оптимизированы под меня StartDiscoverers=10 StartHTTPPollers=10 StartVMwareCollectors=5 VMwareCacheSize=32M VMwareTimeout=120 StatsAllowedIP=127.0.0.1. 1,2001:db8::/32,zabbix.your-company.ru

Сохраняем изменения, перезагружаем сервер

systemctl restart zabbix-server.service

… и выполняем первый вход через веб, в процессе которого надо будет указать параметры подключения к базе. А потом еще зайти в интерфейс и сменить пароль администратора с Admin/zabbix на что-нибудь более безопасное.

Если почему-то веб-интерфейс не открывается, то «чиним» фаерволл:

firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --add-service=zabbix-agent --permanent firewall-cmd --add-service=zabbix-server --permanent firewall-cmd --reload

Настройка

А дальше начинается самое интересное… Если вы ранее работали с более старой версией (как например я, который до этого использовал версию 4.5), то интерфейс вы можете не узнать вообще.

Для начала зайдём в Data Collection — Discovery. Тут нам нужно пока 2 правила, первое зададим так:

Data Collection — Discovery

Это правило позволит нам обнаруживать все пингующиеся узлы в сети. Если сетей нужно несколько, пишем их через запятую.

Далее, создаём второе правило, которое позволит нам находить все узлы с установленным Zabbix-агентом:

Теперь, если мы зайдём в Monitoring — Discovery, то мы уже увидим какие-то найденные узлы, но сверху можно выбрать конкретное Discovery rule, применить его и мы узнам, какой именно узел, подпадающий под это правило, находится в каком состоянии:

Отличие живых узлов от мертвых

Первые строки соответствуют узлам в статусе «доступен» и отображают непрерывное время доступности, последние же соответствуют узлам в статусе «не доступен» и отображают время недоступности.

Узлы, находящиеся тут, это все узлы, активность которых Zabbix зафиксировал. Реального сбора с них вполне может не идти!

Далее, устанавливаем заббикс-клиент на узел, который мы хотим мониторить. Для этого на каком-то сервере точно также добавляет репозиторий, устанавливаем пакет zabbix-agent, после чего вносим правки в конфиг и перезапускает сервер. В конфиге я лично ограничусь следующими необходимыми и достаточными мне на первое время правками:

Server=zabbix.yourcompany.ru ServerActive=zabbix.yourcompany.ru #Hostname=Zabbix server HostnameItem=system.hostname HostMetadata=Linux

Строчку Hostname надо убрать любым способом, например закомментировать как в моем примере. Конечно, вы можете указать имя сервера и напрямую (и тогда не указывать HostnameItem), но на мой взгляд это неудобно потому, что тогда каждый конфиг будет уникальным, в данном же случае, все конфиги всех серверов оказываются строго идентичными, благодаря чему их можно раскладывать централизованно например при установке через ansible или любой другой механизм. А имя сервера будет браться из его собственного имени хоста, для работы с которым существует две удобные команды:

Однако, пока новый агент в списке доступных серверов не появится. И чтобы это исправить надо произвести еще несколько действий. Во-первых, заходим в «Alerts-Action-Autoregistration actions», создаём новое действие («Create Action» в правом верхнем углу), которое по наличию в Metadata слова «Linux» будет добавлять хост в группу «Linux Servers», при этом там создаём условие («Add» в поле «Condition»)

А после нажатия кнопки сохранения («Add») переходим на вкладке «Operations» и там также жмём «Add», добавляем соответствующее действие и опять сохраняем.

Тут кстати важно заметить, что в отличие от старых версий, сейчас есть возможность добавлять узлы не только по метаданным, но также по PSK-ключам, что конечно гораздо безопаснее и о чём подробнее вы можете почитать тут: https://www.zabbix.com/documentation/current/en/manual/discovery/auto_registration#secure-autoregistration

Я же не буду на этом останавливаться потому, что если сервер находится в закрытой корпоративной сети, что является типовой схемой применения системы мониторинга, такие меры безопасности на мой взгляд являются избыточными.

Во-вторых, заходим в «Alerts-Action-Discovery actions», там создаём новое «Discovery action» примерно с такими условиями, как на картинке выше и примерно с такими действиями, как на картинке ниже.

И опять видим что-то новое! Что за «Set host inventory mode?»- спросите вы — Оказывается, если раньше правила автоопределения просто работали, то сейчас мало того, что их поделили на 2 группы, так еще по умолчанию их выполнение не может добавить узел в Inventory! И исправить эту ситуацию можно одним из двух путей: либо через дополнительный пункт в действиях правила автоопределения, как на изображении выше, либо через смену поведения по-умолчанию, которая производится в Administration-General-Other-Default host inventory mode.

Теперь те Linux-сервера, на которых установлен Zabbig agent, будут автоматически добавляться в Inventory hosts, хотя и не сразу… В начале узел должен пропинговаться и стать «Доступен», потом к нему попытается сходить правило Autoregistration action, оно уточнит, точно ли агент настоящий, потом хост он будет добавлен в список узлов Data collection-Hosts, потом к нему будет применено Discovery action и только после этого узел появится в Inventory и начнёт отображаться его доступность. При параметрах, которые приведены в примере, это должно занять менее полутора часов.

Если статья окажется интересна и наберёт положительные отзывы, я напишу как подружить Zabbix с VmWare ESXi.

А если будут просто какие-то пожелания или возражения — пишите, с удовольствием исправлю. Я — не частый автор статей для Хабра, потому с большим вниманием отнесусь к критике и постараюсь исправить возможные ошибки. Рука не набита, как говорится.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *