2 Wtyczki

Przegląd

Wtyczki rozszerzają możliwości monitorowania Zabbix agent 2. Napisane w języku programowania Go, stanowią alternatywę dla modułów ładowalnych (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ę zarówno wbudowanych, jak i ładowalnych wtyczek dostarczanych przez Zabbix.

Od wersji Zabbix 6.0 wtyczki nie muszą już być wbudowane w agent 2. Można je dodawać jako wtyczki ładowalne, co upraszcza tworzenie wtyczek dla nowych metryk. Instrukcje dotyczące tworzenia własnych wtyczek można znaleźć w centrum deweloperskim oraz w przykładowej wtyczce dla Zabbix agent 2.

Konfigurowanie pluginów

Ta sekcja przedstawia ogólne zasady konfiguracji pluginów oraz najlepsze praktyki.

Wszystkie pluginy są konfigurowane przy użyciu parametru Plugins.*, który może być częścią pliku konfiguracyjnego Zabbix agent 2 lub własnego pliku konfiguracyjnego pluginu. Jeśli plugin używa oddzielnego pliku konfiguracyjnego, ścieżka do tego pliku powinna zostać określona w parametrze Include w pliku konfiguracyjnym Zabbix agent 2.

Typowy parametr pluginu 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ę zapisywanie nazw pluginów wielką literą
  • nazwa parametru powinna zaczynać się 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 wykonywać aktywne testy, które nie mają interwału aktualizacji Scheduling update interval, natychmiast po restarcie agenta tylko dla pluginu Uptime, ustaw Plugins.Uptime.System.ForceActiveChecksOnStart=1 w pliku konfiguracyjnym. Podobnie, aby ustawić niestandardowy limit współbieżnych testów dla pluginu 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, wtyczka użyje wartości domyślnej. Jeśli parametr domyślny również nie jest zdefiniowany, zostaną użyte domyślne wartości zapisane na stałe w kodzie.

Jeśli klucz pozycji nie ma żadnych parametrów, Zabbix agent 2 podejmie próbę zebrania metryki przy użyciu wartości zdefiniowanych w sekcji parametrów domyślnych.

Nazwane sesje

Nazwane sesje stanowią 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żywana jako parametr klucza pozycji connString zamiast osobnego określania 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 poświadczeń osadzonych w 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 zastąpienie 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

Pluginy 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 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 hasło) jest pusty, plugin będzie szukał odpowiadającego mu parametru nazwanej sesji.
  4. Jeśli parametr sesji również nie jest określony, zostanie użyta wartość zdefiniowana w odpowiednim parametrze domyślnym.
  5. Jeśli wszystko inne zawiedzie, plugin 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.0: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 przy użyciu 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 przy użyciu 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 pluginy obsługują jednoczesne zbieranie metryk z wielu instancji. Możliwe jest monitorowanie zarówno instancji lokalnych, jak i zdalnych. Obsługiwane są połączenia TCP oraz Unix-socket.

Zaleca się skonfigurowanie pluginów tak, aby utrzymywały połączenia z instancjami w stanie otwartym. Korzyści obejmują zmniejszenie obciążenia sieci, opóźnień oraz zużycia CPU i pamięci dzięki mniejszej liczbie połączeń. Biblioteka klienta zajmuje się tym automatycznie.

Okres, przez jaki nieużywane połączenia powinny pozostawać 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ą takie same parametry jak klucze Zabbix agent.
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ą takie same parametry jak klucze Zabbix agent.
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ą takie same parametry jak klucze Zabbix agent.
Kernel Monitorowanie jądra. kernel.maxfiles, kernel.maxproc Obsługiwane klucze mają takie same parametry jak klucze Zabbix agent.
Log Monitorowanie plików dziennika. log, log.count, logrt, logrt.count Obsługiwane klucze mają takie same parametry jak klucze Zabbix agent.

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ą takie same parametry jak klucze Zabbix agent.
MQTT Odbiera opublikowane wartości tematów MQTT. mqtt.get Aby skonfigurować szyfrowane połączenie z brokerem MQTT, określ parametry TLS w pliku konfiguracyjnym agent jako parametry nazwanej sesji lub 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 konfiguracyjnym agent jako parametry nazwanej sesji lub 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ą takie same parametry jak klucze Zabbix agent.
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 przez proces. proc.cpu.util Obsługiwany klucz ma takie same parametry jak klucz Zabbix agent.
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 konfiguracyjnym agent jako parametry nazwanej sesji lub domyślne. Parametrów TLS nie można przekazywać jako parametrów klucza pozycji. Należy pamiętać, że niepoprawna lub w inny sposób nieprawidłowa konfiguracja TLS może uniemożliwić uruchomienie Zabbix agent 2, dlatego przed włączeniem TLS należy zweryfikować 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 klucze 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 Wyświetlanie listy zainstalowanych pakietów. system.sw.packages, system.sw.packages.get Obsługiwane klucze mają takie same parametry jak klucz Zabbix agent.
Swap Rozmiar przestrzeni wymiany w bajtach/procentach. system.swap.size Obsługiwany klucz ma takie same parametry jak klucz Zabbix agent.
SystemRun Uruchamia określone polecenie. system.run Obsługiwany klucz ma takie same parametry jak klucz Zabbix agent.

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 takie same parametry jak klucz Zabbix agent.
UDP Monitorowanie dostępności i wydajności usług UDP. net.udp.service, net.udp.service.perf Obsługiwane klucze mają takie same parametry jak klucze Zabbix agent.
Uname Pobieranie informacji o systemie. system.hostname, system.sw.arch, system.uname Obsługiwane klucze mają takie same parametry jak klucze Zabbix agent.
Uptime Zbieranie metryk czasu działania systemu. system.uptime Obsługiwany klucz ma takie same parametry jak klucz Zabbix agent.
VFSDev Zbieranie metryk VFS. vfs.dev.discovery, vfs.dev.read, vfs.dev.write Obsługiwane klucze mają takie same parametry jak klucze Zabbix agent.
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ą takie same parametry jak klucze Zabbix agent.
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ą takie same parametry jak klucze Zabbix agent.
ZabbixStats Wewnętrzne metryki Zabbix server/proxy lub liczba opóźnionych pozycji w kolejce. zabbix.stats Obsługiwane klucze mają takie same parametry jak klucze Zabbix agent.
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ą takie same parametry jak klucze.

Wtyczki ładowalne

Wtyczki ładowalne Zabbix agent 2 nie są dostępne od razu po instalacji i muszą zostać zainstalowane 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.

Nazwa wtyczki Opis Obsługiwane klucze pozycji Uwagi
Ceph Monitorowanie Ceph. ceph.df.details, ceph.osd.stats, ceph.osd.discovery, ceph.osd.dump,
ceph.ping, ceph.pool.discovery, ceph.status
Zobacz także parametry konfiguracyjne wtyczki Ceph.
Ember+ Monitorowanie Ember+. ember.get Zobacz także parametry konfiguracyjne wtyczki Ember+.
MongoDB Monitorowanie serwerów i klastrów MongoDB (rozproszona baza danych oparta na dokumentach). mongodb.cfg.discovery, 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 konfiguracyjnym agent jako parametry nazwanej sesji.
Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycji.

Zobacz także parametry konfiguracyjne 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 konfiguracyjnym agent jako parametry nazwanej sesji lub domyślne. Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycji.

Zobacz także parametry konfiguracyjne 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 konfiguracyjne 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 konfiguracyjnym agent jako parametry nazwanej sesji lub domyślne.
Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycji.

Zobacz także parametry konfiguracyjne wtyczki PostgreSQL.

Wtyczki ładowalne, uruchomione z:

  • -V --version - wyświetlają wersję wtyczki oraz informacje o licencji;
  • -h --help - wyświetlają informacje pomocy.
  • -t, --test <item key> — uruchamiają wtyczkę w trybie testowym (konfiguracja wtyczki jest ignorowana).