2 Wtyczki

Omówienie

Wtyczki rozszerzają możliwości monitorowania Zabbix agent 2. Napisane w języku programowania Go, stanowią alternatywę dla ładowalnych modułów (napisanych w C) oraz innych metod rozszerzania funkcjonalności Zabbix.

Te funkcje są specyficzne dla agent 2 i jego wtyczek:

  • Zaplanowane i elastyczne interwały zarówno dla kontroli pasywnych, jak i aktywnych
  • Zarządzanie kolejką zadań z uwzględnieniem harmonogramu i współbieżności zadań
  • Limity czasu na poziomie wtyczki
  • Sprawdzanie zgodności Zabbix agent 2 i jego wtyczek podczas uruchamiania

Wszystkie metryki obsługiwane przez Zabbix agent 2 są zbierane przez wtyczki. Ta strona opisuje zasady konfiguracji wtyczek z perspektywy użytkownika oraz zawiera listę wbudowanych i ładowalnych wtyczek dostarczanych przez Zabbix.

Od Zabbix 6.0 wtyczki nie muszą już być wbudowane w agent 2. Można dodawać je jako ładowalne wtyczki, co upraszcza tworzenie wtyczek dla nowych metryk. Instrukcje dotyczące tworzenia własnych wtyczek znajdują się w Developer center oraz w Przykładowej wtyczce dla Zabbix agent 2.

Konfigurowanie wtyczek

Ta sekcja zawiera ogólne zasady konfiguracji wtyczek oraz najlepsze praktyki.

Wszystkie wtyczki są konfigurowane za pomocą parametru Plugins.* , który może być częścią pliku konfiguracyjnego Zabbix agent 2 lub własnego pliku konfiguracyjnego danej wtyczki. Jeśli wtyczka używa oddzielnego pliku konfiguracyjnego, ścieżkę do tego pliku należy określić w parametrze Include pliku konfiguracyjnego Zabbix agent 2.

Typowy parametr wtyczki ma następującą strukturę:

Plugins.<PluginName>.<Parameter>=<Value>

Dodatkowo istnieją dwie specyficzne grupy parametrów:

  • Plugins.<PluginName>.Default.<Parameter>=<Value> używane do definiowania domyślnych wartości parametrów.

  • Plugins.<PluginName>.<SessionName>.<Parameter>=<Value> używane do definiowania oddzielnych zestawów parametrów dla różnych celów monitorowania za pomocą nazwanych sesji.

Wszystkie nazwy parametrów powinny spełniać następujące wymagania:

  • zaleca się, aby nazwy wtyczek były zapisywane wielkimi literami
  • parametr powinien być zapisany wielką literą
  • znaki specjalne nie są dozwolone
  • zagnieżdżenie nie jest ograniczone maksymalnym poziomem
  • liczba parametrów nie jest ograniczona

Na przykład, aby wykonać aktywnych kontroli, które nie mają Scheduling interwału aktualizacji bezpośrednio po ponownym uruchomieniu agenta tylko dla wtyczki Uptime, ustaw Plugins.Uptime.System.ForceActiveChecksOnStart=1 w pliku konfiguracyjnym. Podobnie, aby ustawić niestandardowy limit dla równoczesnych kontroli dla wtyczki CPU, ustaw Plugins.CPU.System.Capacity=N w pliku konfiguracyjnym.

Wartości domyślne

Możesz ustawić wartości domyślne dla parametrów związanych z połączeniem (URI, nazwa użytkownika, hasło itp.) w pliku konfiguracyjnym w formacie:

Plugins.<PluginName>.Default.<Parameter>=<Value>

Na przykład Plugins.Mysql.Default.Username=zabbix, Plugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017 itd.

Jeśli wartość takiego parametru nie zostanie podana w kluczu pozycji ani w parametrach nazwanej sesji, plugin użyje wartości domyślnej. Jeśli parametr domyślny również nie jest zdefiniowany, zostaną użyte wartości domyślne zapisane na stałe w kodzie.

Jeśli klucz pozycji nie ma żadnych parametrów, agent Zabbix 2 spróbuje zebrać metrykę, używając wartości zdefiniowanych w sekcji parametrów domyślnych.

Nazwane sesje

Nazwane sesje reprezentują dodatkowy poziom parametrów wtyczki i mogą być używane do określania oddzielnych zestawów parametrów uwierzytelniania dla każdej z monitorowanych instancji. Każdy parametr nazwanej sesji powinien mieć następującą strukturę:

Plugins.<PluginName>.Sessions.<SessionName>.<Parameter>=<Value>

Nazwa sesji może być użyta jako parametr klucza elementu connString zamiast osobnego podawania URI, nazwy użytkownika i/lub hasła.

W kluczach pozycji pierwszy parametr może być albo connString, albo URI. Jeśli pierwszy parametr klucza nie pasuje do żadnej nazwy sesji, zostanie potraktowany jako URI. Należy pamiętać, że przekazywanie osadzonych poświadczeń URI w kluczu pozycji nie jest obsługiwane; zamiast tego należy używać parametrów nazwanej sesji.

Lista dostępnych parametrów nazwanej sesji zależy od wtyczki.

Możliwe jest nadpisanie parametrów sesji przez określenie nowych wartości w parametrach klucza pozycji (zobacz przykład).

Jeśli parametr nie jest zdefiniowany dla nazwanej sesji, Zabbix agent 2 użyje wartości zdefiniowanej w domyślnym parametrze wtyczki.

Priorytet parametrów

Wtyczki Zabbix agent 2 wyszukują wartości parametrów związanych z połączeniem w następującej kolejności:

  1. Pierwszy parametr klucza pozycji jest porównywany z nazwami sesji. Jeśli nie zostanie znalezione dopasowanie, jest on traktowany jako rzeczywista wartość; w takim przypadku krok 3 zostanie pominięty. Jeśli dopasowanie zostanie znalezione, wartość parametru (zwykle URI) musi być zdefiniowana w nazwanej sesji.
  2. Pozostałe parametry zostaną pobrane z klucza pozycji, jeśli są zdefiniowane.
  3. Jeśli parametr klucza pozycji (na przykład password) jest pusty, wtyczka wyszuka odpowiadający mu parametr nazwanej sesji.
  4. Jeśli parametr sesji również nie został określony, zostanie użyta wartość zdefiniowana w odpowiednim domyślnym parametrze.
  5. Jeśli wszystko inne zawiedzie, wtyczka użyje zakodowanej na stałe wartości domyślnej.
Przykład 1

Monitorowanie dwóch instancji "MySQL1" i "MySQL2".

Parametry konfiguracji:

Plugins.Mysql.Sessions.MySQL1.Uri=tcp://127.0.0.1:3306
Plugins.Mysql.Sessions.MySQL1.User=mysql1_user
Plugins.Mysql.Sessions.MySQL1.Password=unique_password
Plugins.Mysql.Sessions.MySQL2.Uri=tcp://192.0.2.1:3306
Plugins.Mysql.Sessions.MySQL2.User=mysql2_user
Plugins.Mysql.Sessions.MySQL2.Password=different_password

W wyniku tej konfiguracji każda nazwa sesji może być używana jako connString w kluczu pozycji, np. mysql.ping[MySQL1] lub mysql.ping[MySQL2].

Przykład 2

Podanie części parametrów w kluczu pozycji.

Parametry konfiguracji:

Plugins.PostgreSQL.Sessions.Session1.Uri=tcp://192.0.2.234:5432
Plugins.PostgreSQL.Sessions.Session1.User=old_username
Plugins.PostgreSQL.Sessions.Session1.Password=session_password

Klucz pozycji: pgsql.ping[session1,new_username,,postgres]

W wyniku tej konfiguracji agent połączy się z PostgreSQL, używając następujących parametrów:

  • URI z parametru sesji: 192.0.2.234:5432
  • Nazwa użytkownika z klucza pozycji: new_username
  • Hasło z parametru sesji (ponieważ zostało pominięte w kluczu pozycji): session_password
  • Nazwa bazy danych z klucza pozycji: postgres
Przykład 3

Zbieranie metryki przy użyciu domyślnych parametrów konfiguracji.

Parametry konfiguracji:

Plugins.PostgreSQL.Default.Uri=tcp://192.0.2.234:5432
Plugins.PostgreSQL.Default.User=zabbix
Plugins.PostgreSQL.Default.Password=password

Klucz pozycji: pgsql.ping[,,,postgres]

W wyniku tej konfiguracji agent połączy się z PostgreSQL, używając następujących parametrów:

  • Domyślny URI: 192.0.2.234:5432
  • Domyślna nazwa użytkownika: zabbix
  • Domyślne hasło: password
  • Nazwa bazy danych z klucza pozycji: postgres
Połączenia

Niektóre wtyczki obsługują zbieranie metryk z wielu instancji jednocześnie. Można monitorować zarówno instancje lokalne, jak i zdalne. Obsługiwane są połączenia TCP oraz Unix-socket.

Zaleca się skonfigurowanie wtyczek tak, aby utrzymywały połączenia z instancjami w stanie otwartym. Korzyści obejmują mniejsze przeciążenie sieci, niższe opóźnienia oraz mniejsze zużycie CPU i pamięci dzięki mniejszej liczbie połączeń. Biblioteka klienta zajmuje się tym automatycznie.

Okres, przez jaki nieużywane połączenia powinny pozostać otwarte, można określić za pomocą parametru Plugins.<PluginName>.KeepAlive. Przykład: Plugins.Memcached.KeepAlive

Wbudowane pluginy

Wbudowane pluginy Zabbix agent 2 są dostępne od razu po instalacji. Kliknij nazwę pluginu, aby przejść do repozytorium pluginu z dodatkowymi informacjami.

Nazwa pluginu Opis Obsługiwane klucze pozycji Uwagi
Agent Metryki używanego Zabbix agent. agent.hostname, agent.ping, agent.version Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
Ceph Monitorowanie Ceph. ceph.df.details, ceph.osd.stats, ceph.osd.discovery, ceph.osd.dump,
ceph.ping, ceph.pool.discovery, ceph.status
CPU Monitorowanie CPU systemu (liczba CPU/rdzeni CPU, wykryte CPU, procent wykorzystania). system.cpu.discovery, system.cpu.num, system.cpu.util Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
Docker Monitorowanie kontenerów Docker. docker.container_info, docker.container_stats, docker.containers, docker.containers.discovery,
docker.data_usage, docker.images, docker.images.discovery, docker.info, docker.ping
Zobacz także:
Parametry konfiguracji
File Zbieranie metryk plików. vfs.file.cksum, vfs.file.contents, vfs.file.exists, vfs.file.md5sum,
vfs.file.regexp, vfs.file.regmatch, vfs.file.size, vfs.file.time
Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
Kernel Monitorowanie jądra systemu. kernel.maxfiles, kernel.maxproc Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
Log Monitorowanie plików dziennika. log, log.count, logrt, logrt.count Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.

Zobacz także:
Parametry konfiguracji pluginu (Unix/Windows)
Memcached Monitorowanie serwera Memcached. memcached.ping, memcached.stats
Modbus Odczytuje dane Modbus. modbus.get Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
MQTT Odbiera opublikowane wartości tematów MQTT. mqtt.get Aby skonfigurować szyfrowane połączenie z brokerem MQTT, określ parametry TLS w pliku konfiguracji agent jako nazwaną sesję lub parametry domyślne. Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycji.
MySQL Monitorowanie MySQL i jego forków. mysql.custom.query, mysql.db.discovery, mysql.db.size, mysql.get_status_variables,
mysql.ping, mysql.replication.discovery, mysql.replication.get_slave_status, mysql.version
Aby skonfigurować szyfrowane połączenie z bazą danych, określ parametry TLS w pliku konfiguracji agent jako nazwaną sesję lub parametry domyślne. Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycji.
NetIf Monitorowanie interfejsów sieciowych. net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
Oracle Monitorowanie Oracle Database. oracle.diskgroups.stats, oracle.diskgroups.discovery, oracle.archive.info, oracle.archive.discovery,
oracle.cdb.info, oracle.custom.query, oracle.datafiles.stats, oracle.db.discovery,
oracle.fra.stats, oracle.instance.info, oracle.pdb.info, oracle.pdb.discovery,
oracle.pga.stats, oracle.ping, oracle.proc.stats, oracle.redolog.info,
oracle.sga.stats, oracle.sessions.stats, oracle.sys.metrics, oracle.sys.params,
oracle.ts.stats, oracle.ts.discovery, oracle.user.info, oracle.version
Przed użyciem pluginu zainstaluj Oracle Instant Client.
Proc Procent wykorzystania CPU procesu. proc.cpu.util Obsługiwany klucz ma te same parametry co klucz Zabbix agent key.
Redis Monitorowanie serwera Redis. redis.config, redis.info, redis.ping, redis.slowlog.count Aby skonfigurować szyfrowane połączenie z Redis, określ parametry TLS w pliku konfiguracji agent jako nazwaną sesję lub parametry domyślne. Parametrów TLS nie można przekazywać jako parametrów klucza pozycji. Należy pamiętać, że nieprawidłowa lub w inny sposób niepoprawna konfiguracja TLS może uniemożliwić uruchomienie Zabbix agent 2, dlatego przed włączeniem TLS sprawdź pliki certyfikatów, uprawnienia i ścieżki.
Smart Monitorowanie S.M.A.R.T. smart.attribute.discovery, smart.disk.discovery, smart.disk.get Minimalna wymagana wersja smartctl to 7.1.
Użytkownik uruchamiający Zabbix agent 2 musi mieć uprawnienia sudo/root do smartctl. Plugin używa tylko następujących poleceń:
/usr/sbin/smartctl -a *
/usr/sbin/smartctl --scan *
/usr/sbin/smartctl -j -V

Obsługiwane keys mogą być używane z Zabbix agent 2 tylko w systemach Linux/Windows, zarówno jako sprawdzenie pasywne, jak i aktywne.
Zobacz także:
Parametry konfiguracji
SW Lista zainstalowanych pakietów. system.sw.packages, system.sw.packages.get Obsługiwane klucze mają te same parametry co klucz Zabbix agent key.
Swap Rozmiar przestrzeni swap w bajtach/procentach. system.swap.size Obsługiwany klucz ma te same parametry co klucz Zabbix agent key.
SystemRun Uruchamia określone polecenie. system.run Obsługiwany klucz ma te same parametry co klucz Zabbix agent key.

Zobacz także:
Parametry konfiguracji pluginu (Unix/Windows)
Systemd Monitorowanie usług systemd. systemd.unit.discovery, systemd.unit.get, systemd.unit.info
TCP Sprawdzanie dostępności połączenia TCP. net.tcp.port Obsługiwany klucz ma te same parametry co klucz Zabbix agent key.
UDP Monitorowanie dostępności i wydajności usług UDP. net.udp.service, net.udp.service.perf Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
Uname Pobieranie informacji o systemie. system.hostname, system.sw.arch, system.uname Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
Uptime Zbieranie metryk czasu działania systemu. system.uptime Obsługiwany klucz ma te same parametry co klucz Zabbix agent key.
VFSDev Zbieranie metryk VFS. vfs.dev.discovery, vfs.dev.read, vfs.dev.write Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
WebCertificate Monitorowanie certyfikatów TLS/SSL witryn internetowych. web.certificate.get
WebPage Monitorowanie stron internetowych. web.page.get, web.page.perf, web.page.regexp Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
ZabbixAsync Asynchroniczne zbieranie metryk. net.tcp.listen, net.udp.listen, sensor, system.boottime, system.cpu.intr, system.cpu.load,
system.cpu.switches, system.hw.cpu, system.hw.macaddr, system.localtime, system.sw.os,
system.swap.in, system.swap.out, vfs.fs.discovery
Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
ZabbixStats Wewnętrzne metryki serwer/proxy Zabbix lub liczba opóźnionych pozycji w kolejce. zabbix.stats Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.
ZabbixSync Synchroniczne zbieranie metryk. net.dns, net.dns.record, net.tcp.service, net.tcp.service.perf, proc.mem,
proc.num, system.hw.chassis, system.hw.devices, system.sw.packages,
system.users.num, vfs.dir.count, vfs.dir.size, vfs.fs.get, vfs.fs.inode,
vfs.fs.size, vm.memory.size.
Obsługiwane klucze mają te same parametry co klucze Zabbix agent keys.

Wtyczki ładowalne

Wtyczki ładowalne Zabbix agent 2 nie są dostępne od razu po instalacji i trzeba je zainstalować osobno:

Przed zainstalowaniem wtyczki sprawdź jej plik README. Może on zawierać szczegółowe wymagania i instrukcje instalacji.

Kliknij nazwę wtyczki, aby przejść do repozytorium wtyczki, które zawiera plik README z dodatkowymi informacjami.

Plugin name Description Supported item keys Comments
Ember+ Monitorowanie Ember+. ember.get Zobacz także parametry konfiguracji wtyczki Ember+.
MongoDB Monitorowanie serwerów i klastrów MongoDB (rozproszona baza danych oparta na dokumentach). mongodb.collection.stats, mongodb.collections.discovery, mongodb.collections.usage, mongodb.connpool.stats,
mongodb.db.stats, mongodb.db.discovery, mongodb.jumbo_chunks.count, mongodb.oplog.stats,
mongodb.ping, mongodb.rs.config, mongodb.rs.status, mongodb.server.status,
mongodb.sh.discovery, mongodb.version
Aby skonfigurować szyfrowane połączenia z bazą danych, określ parametry TLS w pliku konfiguracji agenta jako parametry nazwanej sesji.
Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycja.

Zobacz także parametry konfiguracji wtyczki MongoDB.
MSSQL Monitorowanie bazy danych MSSQL. mssql.availability.group.get, mssql.custom.query, mssql.db.get, mssql.job.status.get, mssql.last.backup.get, mssql.local.db.get, mssql.mirroring.get, mssql.nonlocal.db.get, mssql.perfcounter.get, mssql.ping, mssql.quorum.get, mssql.quorum.member.get, mssql.replica.get, mssql.version Aby skonfigurować szyfrowane połączenie z bazą danych, określ parametry TLS w pliku konfiguracji agenta jako parametry nazwanej sesji lub domyślne. Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycja.

Zobacz także parametry konfiguracji wtyczki MSSQL.
NVIDIA GPU Monitorowanie NVIDIA GPU. nvml.device.count, nvml.device.decoder.utilization, nvml.device.ecc.mode, nvml.device.encoder.stats.get, nvml.device.encoder.utilization, nvml.device.energy.consumption, nvml.device.errors.memory, nvml.device.errors.register, nvml.device.fan.speed.avg, nvml.device.get, nvml.device.graphics.frequency, nvml.device.memory.bar1.get, nvml.device.memory.fb.get, nvml.device.memory.frequency, nvml.device.pci.utilization, nvml.device.performance.state, nvml.device.power.limit, nvml.device.power.usage, nvml.device.serial, nvml.device.sm.frequency, nvml.device.temperature, nvml.device.utilization, nvml.device.video.frequency, nvml.system.driver.version, nvml.version Zobacz także parametry konfiguracji wtyczki NVIDIA GPU.
PostgreSQL Monitorowanie PostgreSQL i jego forków. pgsql.autovacuum.count, pgsql.archive, pgsql.bgwriter, pgsql.cache.hit, pgsql.connections,
pgsql.custom.query, pgsql.dbstat, pgsql.dbstat.sum, pgsql.db.age, pgsql.db.bloating_tables,
pgsql.db.discovery, pgsql.db.size, pgsql.locks, pgsql.oldest.xid, pgsql.ping, pgsql.queries,
pgsql.replication.count, pgsql.replication.process, pgsql.replication.process.discovery, pgsql.replication.recovery_role, pgsql.replication.status,
pgsql.replication_lag.b, pgsql.replication_lag.sec, pgsql.uptime, pgsql.version, pgsql.wal.stat
Aby skonfigurować szyfrowane połączenia z bazą danych, określ parametry TLS w pliku konfiguracji agenta jako parametry nazwanej sesji lub domyślne.
Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycja.

Zobacz także parametry konfiguracji wtyczki PostgreSQL.

Wtyczki ładowalne, uruchamiane z opcjami:

  • -V --version - wyświetlają informacje o wersji wtyczki i licencji;
  • -h --help - wyświetlają informacje pomocy.