2 Wtyczki
Przegląd
Wtyczki rozszerzają możliwości monitorowania agent 2 Zabbixa. Napisane w języku programowania Go, stanowią alternatywę dla ładowalnych modułów (napisanych w C) oraz innych metod rozszerzania funkcjonalności Zabbixa.
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 agent 2 Zabbixa i jego wtyczek podczas uruchamiania
Wszystkie metryki obsługiwane przez agent 2 Zabbixa są zbierane przez wtyczki. Ta strona opisuje zasady konfiguracji wtyczek z perspektywy użytkownika oraz zawiera listę wbudowanych i ładowalnych wtyczek dostarczanych przez Zabbixa.
Od Zabbixa 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 agent 2 Zabbixa.
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 agenta Zabbix agent 2 albo własnego pliku konfiguracyjnego danej wtyczki. Jeśli wtyczka korzysta z oddzielnego pliku konfiguracyjnego, ścieżkę do tego pliku należy podać 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ą sesji nazwanych.
Wszystkie nazwy parametrów powinny spełniać następujące wymagania:
- zaleca się, aby nazwy wtyczek były zapisywane wielką literą
- 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 jednoczesnych 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, Zabbix agent 2 spróbuje zebrać metrykę, używając 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żyta jako kluczowy parametr elementu 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 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:

- 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.
- Pozostałe parametry zostaną pobrane z klucza pozycji, jeśli są zdefiniowane.
- Jeśli parametr klucza pozycji (na przykład password) jest pusty, wtyczka wyszuka odpowiadający mu parametr nazwanej sesji.
- Jeśli parametr sesji również nie jest określony, zostanie użyta wartość zdefiniowana w odpowiednim domyślnym parametrze.
- 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. Zalety to mniejsze przeciążenie sieci, niższe opóźnienia oraz mniejsze użycie CPU i pamięci dzięki mniejszej liczbie połączeń. Biblioteka klienta zajmuje się tym automatycznie.
Okres, przez który 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 agenta 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 konfiguracji agenta 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ą 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 agenta jako parametry nazwanej sesji lub domyślne. Parametrów TLS nie można przekazywać jako parametrów klucza pozycji. Pamiętaj, że nieprawidłowa lub w inny sposób błędna 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 -VObsł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 serwera/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 należy zainstalować je osobno:
- W systemie Linux można użyć pakietów (np. zainstalować Ember+ na Ubuntu poleceniem
apt install zabbix-agent2-plugin-ember-plus) albo zbudować wtyczki - W systemie Windows można zainstalować je z MSI albo zbudować wtyczki
Przed zainstalowaniem wtyczki proszę sprawdzić 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 |
|---|---|---|---|
| Ember+ | Monitorowanie Ember+. | ember.get | Zobacz także parametry konfiguracji wtyczki Ember+. |
| MongoDB | Monitorowanie serwerów i klastrów MongoDB (rozproszonej bazy danych opartej 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 konfiguracyjnym agenta jako parametry nazwanej sesji. Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycji. 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 konfiguracyjnym agenta jako parametry nazwanej sesji lub domyślne. Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycji. Zobacz także parametry konfiguracji wtyczki MSSQL. |
| 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 agenta jako parametry nazwanej sesji lub domyślne. Obecnie parametrów TLS nie można przekazywać jako parametrów klucza pozycji. 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.