Skip to content

Latest commit

 

History

History
73 lines (50 loc) · 2.34 KB

README.md

File metadata and controls

73 lines (50 loc) · 2.34 KB

PgZabbix

Suck some stats out of Postgres, and inject it into Zabbix. Mostly based on pg_monz but not written in shell script.

Goal: Having a small userspace daemon that keeps connection pools up vs. Postgres ( Thus avoiding the constant calls to various scripts )

Talk natively with Zabbix-send style function ( json )

SQLAlchemy + Python for connection pooling.

I started this out as Python3, but might have to downgrade to Python2 just for RHEL6 compat.

Done: Gather stats from Postgres Discovery rules for Zabbix Cron-based sender thing

Todo: Zabbix integration and stuff

HOWTO: Use your configuration management system to push the PgZabbix tool (or install via pip) Use your configuration management system to set up cron jobs: 1/hour for discovery */minute or 5 minutes for logging then pipe it to zabbix_sender:

# as postgres superuser:
# createuser  -e --no-replication  pgzabbix
run the provided pgzabbix.sql file to create a pg_stat_replic view that
can be used. Modify the GRANT line if you chose another username
# psql -d postgres -f pgzabbix.sql

$ PgZabbix --tables | zabbix_sender -c /etc/zabbix/zabbix_agent.conf  -i -
If you use HostnameItem instead of Hostname, add -s $(hostname --long)

LICENCE: Very inspired by pg_monz ( https://github.com/pg-monz/pg_monz ) but I really wasn't fond of how everything passed data through shell, and I was even less fond of the idea of setting paths and directories via Zabbix.

So I rewrote it.

As a bonus, "table$({echo,hello,world])hi"  should work

Building: make sure you've got psycopg2 from your package manager python setup.py bdist --formats=zip and then deploy the zip file, run it with python zipfile.zip

Hacking Running ancient postgres in production and want to test it? $ podman run --rm=true -p 5432 -ti centos:6 $ rpm -ivh https://download.postgresql.org/pub/repos/yum/9.1/redhat/rhel-6-x86_64/pgdg-centos91-9.1-6.noarch.rpm $ yum install postgresql91-server postgresql91 $ su - postgres $ /usr/pgsql-9.1/bin/initdb /var/lib/pgsql/9.1/data/ $ edit postgresql.conf, add listen = "*" $ edit pg_hba.conf, add connect / trust

$ /usr/pgsql-9.1/bin/postgres -D /var/lib/pgsql/9.1/data

Compat: Postgres 9.1 and up for now, more features in Pg10 and above