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:

- 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.
- Pozostałe parametry zostaną pobrane z klucza pozycji, jeśli są zdefiniowane.
- Jeśli parametr klucza pozycji (na przykład hasło) jest pusty, plugin będzie szukał odpowiadającego mu parametru nazwanej sesji.
- Jeśli parametr sesji również nie jest określony, zostanie użyta wartość zdefiniowana w odpowiednim parametrze domyślnym.
- 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:
- W systemie Linux można użyć pakietów (np. zainstalować Ember+ w Ubuntu za pomocą
apt install zabbix-agent2-plugin-ember-plus) lub zbudować wtyczki - W systemie Windows można zainstalować z MSI lub 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.
| 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).