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:

- 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 został 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. 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:
- 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 pliku MSI albo zbudować wtyczki
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.