L
L
link772018-06-04 17:52:39
PostgreSQL
link77, 2018-06-04 17:52:39

How to write a bash script to monitor postgresql for zabbix?

Добрый день.
Подскажите пожалуйста. Цель: Необходимо создать скрипт под zabbix на баше для мониторинга доступности 10 баз данных соединенных в кластер. Хочу делать так:
#!/bin/bash
#смотрю слушающие порты на сервера командой
RESULT=$( ss -nltp | grep postgres | tr ':' ' ' | awk '{print $5}' | sort -u ) │
echo $RESULT > /etc/zabbix/scripts/postgresql.tmp
Вывод будет таким:
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
А далее мне нужно, что бы zabbix агент опросил каждую базу данных по этим портам, послал какой то запрос на каждый порт из этого списка , и если ответа нет, zabbixy приходило "-1", а есть есть то "1". Таким образом будет понятно, какая база "лежит". Как я понимаю нужно делать через psql -p port server_data_base
Но как это будет выглядеть на баше?
Подскажите как это реализовать? Уже много чего прочитал, но так и не понял, как:(

Answer the question

In order to leave comments, you need to log in

2 answer(s)
K
ky0, 2018-06-04
@ky0

Why fence the bike? There are several good templates on share.zabbix.com and the Internet - open the one you don't need and that's it.

V
Viktor Taran, 2018-06-06
@shambler81

here is an example, here there is a cycle and a request to the database, I think based on this art, you can create your own squeak.

#!/bin/sh
#скрипт бэкапа баз данных
###########################
#Создаем папку для архивов.  -p не ругается когда папка уже есь test проверяет есть ли папка  для чистых логов
test ! -d /var/backup/mysql/`date +%Y` && { mkdir -p /var/backup/mysql/`date +%Y` ; }
test ! -d /var/backup/mysql/last && { mkdir -p /var/backup/mysql/last ; }

#прячем от умных, и так не зайдут но всеже.
chmod 600 /var/backup/mysql
chmod 600 /var/backup/mysql/last

# делаем сам дапм файлов sql, свежинькие файлы лежат всегда в ней, очень удобно не нужно заходить в архивы и искать там вчерашние базы, и логируется.
for i in `mysql -uroot -ppass -e'show databases;' | grep -v information_schema | grep -v Database`; do mysqldump -uroot -ppass $i > /var/backup/mysql/last/$i.sql;done >> /dev/null 2>> /var/log/sqlbackup.log
# Архивируем дамп, ну и логируем разумеется
cd /var/backup/mysql/
tar -czvf /var/backup/mysql/`date +%Y`/sqldump-`date +%Y-%m-%u`.tar.gz ./last >> /dev/null > /var/log/sqlbackup.log
#(echo "Subject: Бэкап mysql  klondike-server завершен"; cat /var/log/sqlbackup.log;) | /usr/sbin/sendmail  [email protected]
##################  Конец скрипта

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question