čtvrtek 13. června 2013

Monitoring HAProxy pomocí Zabbix Agent

 V práci jsem narazil na server, kde byla zprovozněna HAProxy pro přepínání provozu na dva IBM IHS servery (Apache).

Stav HAProxy se dá velmi podrobně sledovat pomoci socket. Pěknou inspirací byl tento návod.

V konfiguraci haproxy.conf je nutno zapnout zápis do socketů.

global
# Create a socket that allows us to query it directly
stats socket    /tmp/haproxy.sock


Pro čtení ze socketu je třeba aplikace socat, která  např. v RHEL 5.8 není a tak je někdy potřeba si ji zkompilovat ručne.

Já volil konkrétně tuto verzi, novější mi nešla zkompilovat.

cd /usr/local/src
wget http://www.dest-unreach.org/socat/download/socat-1.7.2.1.tar.gz
tar xzf socat-1.7.2.1.tar.gz
cd socat-1.7.2.1
./configure --disable-fips
make
make install


Pak už můžeme vyčítat požadované hodnoty. Zmíněný návod je velmi podrobný.

[root@server ~]# echo "show info" | socat /tmp/haproxy.sock stdio
Name: HAProxy
Version: 1.4.21
Release_date: 2012/05/21
Nbproc: 1
Process_num: 1
Pid: 29810
Uptime: 0d 0h01m46s
Uptime_sec: 106
Memmax_MB: 0
Ulimit-n: 8219
Maxsock: 8219
Maxconn: 4096
Maxpipes: 0
CurrConns: 17
PipesUsed: 0
PipesFree: 0
Tasks: 25
Run_queue: 1
node: server.domena.cz
description:


Konfigurací Zabbix agenta, kde nadefinujeme uživatelské parametry a pomocí grep a awk atd. vyďobeme jednotlivé potřebné hodnoty.

Toto je např. HAProxy "total" connections/sessions

UserParameter=hap.scur, echo "show stat" | /usr/bin/sudo /usr/local/bin/socat /tmp/haproxy.sock stdio | grep -i 'server,FRONTEND' |
sed 's/,/\ /g' | awk '{print $3}'


Pro povolení práce se socketem je nutno delegovat opravnění uživateli zabbix.

visudo
...
Defaults:%zabbix !requiretty
Defaults:zabbix !requiretty

## Allows 'zabbix' user to run all commands without password.
zabbix ALL=NOPASSWD: ALL

Žádné komentáře: