Instalace Zabbix Java Gateway a monitoring Tomcatu

Co nás čeká?

V tomto článku vám ukážeme, jak snadno nainstalovat a nakonfigurovat Zabbix Java Gateway, včetně doplňkového příkladu monitoringu Tomcatu.

Výběr operačního systému

Návod obsahuje postup pro RHEL platformy na verzi 9, kde stačí případně jen poupravit repozitáře. Návod pro Debian je připraven pro verzi 12, která je aktuálně poslední podporovanou verzí.

Alma/CentOS/RHEL/Rocky 9
Debian 12

Co je Zabbix Java Gateway?

  • Samostatná komponenta Zabbixu pro monitoring Java aplikací pomocí JMX (Java Management Extensions).
  • Umožňuje Zabbixu sbírat metriky přímo z Java aplikací.
  • Musí být připojena k Zabbix serveru nebo Zabbix proxy.
  • Je napsaná v Javě (vyžaduje Java Runtime Environment).

Doporučení pro nasazení

Pouze jedna Java Gateway na jeden Zabbix Server nebo Proxy.
(Pro více Java Gateway nasaďte další Zabbix Proxy (active/passive).)

Komunikace mezi komponentami Zabbixu a Java Gateway nemůže být šifrovaná.
Od verze 7.4 je to poslední zbývající interní komunikační kanál Zabbixu bez šifrování.

Komunikaci z Java Gateway na monitorované Java aplikace lze zabezpečit (šifrováním a/nebo autentizací).

Sjednocení verzí je kritické – Zabbix Java Gateway musí odpovídat verzi Zabbix serveru/proxy.

Nezapomeňte v konfiguraci Java Gateway (zabbix_java_gateway.conf) explicitně definovat povolené IP adresy.

Osvědčené postupy instalace

Java Runtime Environment (JRE) se automaticky nainstaluje spolu se Zabbix Java Gateway (je postavená na Javě).

Zabbix neposkytuje dedikovanou šablonu přímo pro Java Gateway – použijte obecnou Java šablonu.

Pro konkrétní Java server mohou být potřeba vlastní knihovny (JAR soubory), typicky umístěné v bin adresáři aplikace.

Správné nastavení Java pollerů je zásadní – konfigurace musí být sladěná na obou stranách:

  • Zabbix Server/Proxy (počet Java pollerů)
  • Zabbix Java Gateway (start pollers)

Doporučená praxe: nasadit Zabbix Java Gateway na stejný server jako Zabbix Server nebo Proxy kvůli vyšší bezpečnosti.

Instalace a self-monitoring

Now, when we are aware of basic description of what Zabbix Java Gateway is, and we have learned it’s terminology, we can proceed with the installation.

Nejprve vyloučíme všechny instalační balíčky související se Zabbixem z repozitáře EPEL (za předpokladu, že je EPEL nainstalovaný).

Uděláme to tak, že na konec souboru /etc/yum.repos.d/epel.repo přidáme následující řádek:

[epel]
...
excludepkgs=zabbix*

Přidáme repozitáře Zabbixu a vyčistíme instalační cache. Nahraďte verzi 7.0 vaší verzí (např. 8.06.07.2, …).

rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-latest.el9.noarch.rpm
dnf clean all

A teď už můžeme pokračovat instalací Zabbix Java Gateway

dnf install zabbix-java-gateway

Přidáme repozitáře Zabbixu a vyčistíme instalační cache. Nahraďte verzi 7.0 vaší verzí (např. 8.06.07.2, …).

wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb
dpkg -i zabbix-release_latest_7.0+debian12_all.deb
apt update

A teď už můžeme pokračovat instalací Zabbix Java Gateway

apt install zabbix-java-gateway

Umístění konfiguračních souborů

  • Zabbix Java Gateway
/etc/zabbix/zabbix_java_gateway.conf - hlavní konfigurační soubor
/etc/zabbix/zabbix_java_gateway_logback.xml - konfigurace logování
  • Zabbix Server
/etc/zabbix/zabbix_server.conf
  • Zabbix Proxy
/etc/zabbix/zabbix_proxy.conf

Povolení Zabbix Java Gateway

Po instalaci povolte Java monitoring na serveru nebo proxy úpravou konfiguračního souboru

nano /etc/zabbix/zabbix_server.conf

A upravte následující parametry, kde:

  • JavaGateway: IP nebo DNS adresa Zabbix Java Gateway
  • JavaGatewayPort: komunikační port
  • StartJavaPollers: počet Java pollerů spouštěných na Zabbix serveru/proxy
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5

StartJavaPollers je důležitý parametr, na který je potřeba vždy myslet

  • Výchozí hodnota je vypnuto (0), tedy Java monitoring je neaktivní
  • Doporučená startovní hodnota: 5 pollerů
  • Pokud hodnotu změníte, sladěte toto číslo také v konfiguraci Java Gateway
  • Pokud používáte více Zabbix serverů/proxy s jednou gateway, sečtěte jejich počty pollerů

Po finální konfiguraci nezapomeňte restartovat komponentu Zabbix serveru

systemctl restart zabbix-server

Povolení self-monitoringu Java Gateway

Upravte konfigurační soubor Zabbix Java Gateway

nano /etc/zabbix/zabbix_java_gateway.conf

Speciální monitorovací sekce (self-monitoring):
Odkomentujte následující řádek pro povolení vestavěného JMX monitoringu samotné gateway (JAVA_OPTIONS):

JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -
Dcom.sun.management.jmxremote.registry.ssl=false"

Důležité: Ujistěte se, že každá Java volba (-Dcom…) začíná hned za mezerou a že uvnitř nejsou žádné další mezery navíc!

Aplikujte nové nastavení, spusťte Zabbix Java Gateway a povolte její automatické spuštění po restartu serveru.

systemctl enable zabbix-java-gateway.service --now

Ověření a nastavení monitoringu

Vytvořte hosta pro samotnou Zabbix Java Gateway (nebo použijte existujícího hosta)

  • Přidejte nové rozhraní typu JMX
  • Aplikujte vestavěnou šablonu: Generic Java JMX

Po krátké chvíli se ikona JMX zbarví zeleně. Java Gateway je nyní připravená a monitorovaná.

Monitoring Tomcatu – instalace a nastavení

Pro tento ukázkový monitoring setup nainstalujeme také Tomcat a další potřebné balíčky.

Upozorňujeme, že následující příklad je proveden na Rocky Linux 9. Ve vašem prostředí bude Tomcat nejspíš už nainstalovaný (nebo součástí vašeho stávajícího aplikačního setupu).

dnf install tomcat tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp

Po instalaci Tomcatu je potřeba povolit JMX monitoring s autentizací, abychom zajistili bezpečnost.

Upravte /etc/tomcat/tomcat.conf.

nano /etc/tomcat/tomcat.conf

Přidejte následující (nezapomeňte nahradit IP adresu — musí to být monitorovaný host, ne Zabbix server ani Java Gateway!)

V našem případě byl parametr -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory už předdefinovaný, takže další parametry umístíme hned za něj. Dbejte na správné uvozovky a zalamování/odsazení pomocí \.

# Set default javax.sql.DataSource factory to apache commons one. See rhbz#1214381
JAVA_OPTS="-Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9010 \
-Dcom.sun.management.jmxremote.rmi.port=9010 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=/etc/tomcat/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=/etc/tomcat/jmxremote.access \
-Djava.rmi.server.hostname=185.74.63.152 \
-Djava.net.preferIPv4Stack=true"

Pro vytvoření JMX přístupových rolí a hesel je potřeba vytvořit nebo upravit následující soubory

Upravte (nebo vytvořte) /etc/tomcat/jmxremote.access:

nano /etc/tomcat/jmxremote.access

V tomto souboru definujeme uživatelskou roli s požadovanými oprávněními.

monitorRole readonly
controlRole readwrite

Upravte (nebo vytvořte) /etc/tomcat/jmxremote.password:

nano /etc/tomcat/jmxremote.password

V tomto souboru definujeme hesla pro uživatele nakonfigurované pro JMX přístup

monitorRole Password1
controlRole Password2

Nastavte správná oprávnění z bezpečnostních důvodů (uživatel ve vašem systému může být jiný — my používáme stejného uživatele, pod kterým běží služba Tomcat)

chmod 600 /etc/tomcat/jmxremote.*
chown tomcat:tomcat /etc/tomcat/jmxremote.*

Po úpravě všech konfiguračních souborů dle doporučení nezapomeňte restartovat službu Tomcat

systemctl restart tomcat.service

A pokud je to potřeba, otevřete port ve firewallu (9010/tcp).

firewall-cmd --permanent --add-port=9010/tcp
firewall-cmd --reload

Vytvořte ve webovém rozhraní Zabbixu hosta pro monitoring Tomcatu

  • Připojte šablonu Apache Tomcat by JMX.
  • Nastavte správnou IP nebo DNS adresu Tomcatu a port (ujistěte se, že firewall umožňuje přístup ze Zabbix Java Gateway). V našem případě běží Tomcat, Zabbix Server i Zabbix Java Gateway na stejném hostu, proto používáme localhost. V praxi je takové nasazení spíše nepravděpodobné.
  • Nastavte správné makro (viz další screenshot).

Šablony v Zabbixu používají uživatelská makra pro uživatelské jméno a heslo. Klikněte na Macros a poté vyberte Inherited and host macros.

  • {$TOMCAT.PASSWORD} — v našem případě je to Password1 (best practice: označte tuto hodnotu jako Secret text)
  • {$TOMCAT.USER} — náš uživatel je monitorRole

V tuto chvíli by měly vaše monitoring položky na hostu Tomcat začít přijímat data.

Šablona také obsahuje Low-Level Discovery (LLD).

Závěrečné tipy a monitoring databáze

  • Pro rychlé ladění doporučujeme použít jconsole (součást balíčku JDK), který můžete spustit na svém desktopu
  • Pokud nevidíte metriky, které vás zajímají (například statistiky DB connection poolu), může být potřeba je povolit na úrovni driveru/poolu. Například lze přidat parametr jmxEnabled=“true“ – ten bývá často definovaný v context.xml
×Košík

Your cart is empty.