čtvrtek 14. března 2013

GNU date vs BSD date

Pro kotrolu validace SSL certifikátů v Zabbixu jsem se rozhodl použít návod na wiki.zabbix, kde je odkaz na podrobnější autorův web.

Vše by fungovalo, až na malou drobnost a tou je následující příkaz, který je součástí scriptu, porovnávající datum z certifikátu s aktuálním časem. BSD date a GNU date je jiný a parametry jsou jine.

BSD date

date '+%s' --date "Dec 29 23:59:59 2013 GMT"
date: illegal time format
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
            [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]


Script zext_ssl_check.sh, který používá OpenSSL (openssl s_client) pro zjištění data expirace certifikátu jsem si postupně prošel až jsem narazil na příkaz date. Abych FreeBSD naučil GNU date - gdate, musel jsem doinstalovat následující balíček coreutils.

coreutils-8.20_2    The Free Software Foundation's core utilities

Pak už příkaz dělal co má.

GNU date

gdate '+%s' --date "Dec 29 23:59:59 2013 GMT"
1388361599


Pak už příkaz dělal co má. Na stránce autora jsou dvě verze scriptu pro kontrolu SSL certifikátů. Jedna je z webu a druha je z svn.

Verze s svn vraci jen počet dní do expirace.

./zext_ssl_check.sh edu.mudk.cz 443
290


Verze z webu ma širší použití.

./zext_ssl_cert.sh
usage: ./zext_ssl_cert.sh [-i|-d] hostname port
    -i Show Issuer
    -d Show valid days remaining


./zext_ssl_cert.sh -i edu.mudk.cz 443
Thawte DV SSL CA


./zext_ssl_cert.sh -d edu.mudk.cz 443
290

Ke každému scriptu je extra Template. Použil jsem verzi z svn, ale musel jsem Template modifikovat pro Zabbix 2.0.5. Konkrétně mi External_check nefungoval.

Mnou upravená definice klíče.
zext_ssl_check.sh[{HOST.CONN},{$SSL_PORT}]

V Template bylo. Zkrátka musíme vědět co a jak je kde třeba :-)

zext_ssl_cert.sh[{$SSL_PORT}]

s tím, že varianta

zext_ssl_check.sh[{HOST.CONN}, {$SSL_PORT}]
a
zext_ssl_check.sh[{HOST.CONN} {$SSL_PORT}]

mi nefunovala v Zabbixu 2.0.5.

pondělí 11. března 2013

Zabbix PostgreSQL

Pro dočasné monitorování mailserveru edu.mudk.cz jsem na byvalém serveru zprovoznil Zabbix pod aktuální verzí FreeBSD 9.1-RELEASE-p1. Zabbix jsem nyní chtěl vyzkoušet s databází PostgreSQL 9.2.

Instalace a konfigurace všech potřebných aplikací vychází z aktuálních FreeBSD portů.
U PostgreSQL jsem se rozhodl použít TABLESPACE. Obecně potřeba nejsou, ale chtěl jsem mít data Zabbixu oddělené od hlavní db.

Konfigrace Zabbixu s použitím PostgreSQL je obecně popsána zde.

psql template1
CREATE USER zabbix WITH ENCRYPTED PASSWORD '*****' NOCREATEDB NOCREATEUSER;


Vytvoříme a převlastníme adresář pro TABLESPACE.

mkdir -p /data/pgsql/zabbix && chown pgsql:pgsql /data/pgsql/zabbix

CREATE TABLESPACE zabbix OWNER zabbix LOCATION '/data/pgsql/zabbix';
CREATE DATABASE zabbix WITH OWNER = zabbix TABLESPACE = zabbix;


Rozbalíme si tarbal.

cd /tmp/  && tar xvzf /usr/ports/distfiles/zabbix-2.0.5.tar.gz
cd /tmp/zabbix-2.0.5/database/postgresql


Naimportujeme db schéma

cat schema.sql | psql -U zabbix zabbix  
cat images.sql | psql -U zabbix zabbix
cat data.sql | psql -U zabbix zabbix


Kompilace Zabbixu i PHP musí být nastavena s podporou PostgreSQL.