Задать вопрос
@Flowersau

Скрипт на bash для мониторинга таблицы из Postgresql?

Есть бот в тг, к нему прикручена база на Postgresql в которой есть таблица active_list и поле chat_id там отображается число активных пользователей, и вот есть такой вопрос возможно ли мониторить число активных пользователей через Zabbix, чтобы было видно на графике. Пока из того что прочитал - это при помощи UserParameter можно делать такие вещи, но когда попробовал взять готовый скрипт на bashe. Добавил в Заббиксе новый элемент, указал ключ название, вроде как по инструкции) то выдает ошибку Фото1. Скорее всего ошибка в скрипте или как лучше сделать. 6655cd8016413859996939.png

#!/bin/bash

# Параметры подключения к базе данных

DB_HOST = '***'
DB_PORT = '****'
DB_NAME = '****'
DB_USER = '***'
DB_PASS = '***'

SQL_QUERY="SELECT COUNT(DISTINCT chat_id) FROM active_list2;"

RESULT=$(psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -t -c "$SQL_QUERY")

# Удаление пробельных символов
ACTIVE_USERS_COUNT=$(echo $RESULT | xargs)

# Печать результата
echo $ACTIVE_USERS_COUNT
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 4
Melkij
@Melkij
PostgreSQL DBA
Не имеет отношения к postgresql. Чисто bash

DB_NAME = foo - это команда
DB_NAME=foo - это переменная
Ответ написан
Комментировать
AshBlade
@AshBlade
Просто хочу быть счастливым
Как уже написал Melkij - в объявлении переменных окружения не должно быть пробелов рядом со знаком равенства.
Вот такой попробуй
#!/bin/bash

# Параметры подключения к базе данных

DB_HOST='***'
DB_PORT='****'
DB_NAME='****'
DB_USER='***'
DB_PASS='***'

SQL_QUERY="SELECT COUNT(DISTINCT chat_id) FROM active_list2;"

RESULT=$(psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -t -c "$SQL_QUERY")

# Удаление пробельных символов
ACTIVE_USERS_COUNT=$(echo "$RESULT" | xargs)

# Печать результата
echo "$ACTIVE_USERS_COUNT"


P.S. не забудь вокруг переменных окружения при подстановке добавить двойные кавычки (могут появиться недопустимые символы)
Ответ написан
@dronmaxman
VoIP Administrator
В теплейте есть пример и не надо никаких внешних скриптов

https://git.zabbix.com/projects/ZBX/repos/zabbix/b...

Продублируй эту строчку и модифицируй под себя в template_db_postgresql.conf
UserParameter=pgsql.replication.count[*], psql -qtAX postgresql://"$3":"$4"@"$1":"$2"/"$5" -c "SELECT count(*) FROM pg_stat_replication"


например так

UserParameter=pgsql.user.count[*], psql -qtAX postgresql://"$3":"$4"@"$1":"$2"/"$5" -c "SELECT COUNT(DISTINCT chat_id) FROM active_list2;"


и потом добавь item в zabbix
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
DB_HOST = '***'
DB_PORT = '****'
DB_NAME = '****'
DB_USER = '***'
DB_PASS = '***'


Для объявления переменных, нужно убрать пробелы и до и после равно.
VARIABLE = VALUE
ошибка

VARIABLE=VALUE
нормально
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы