Категории

Как создать микрологсервер для Nextcloud с помощью Zabbix

26.08.2025 10:19 | коды из категории: Linux

скрипт в забикс агент, чтобы анализировать логи на количество ошибок

про Как создать микрологсервер для Nextcloud с помощью Zabbix

Сегодня я покажу, как настроить простой, но мощный мониторинг логов Nextcloud с помощью Zabbix. Это позволит вам видеть ошибки в реальном времени, получать алерты и быстро находить проблемы.

Цель

Создать систему, которая:

Необходимые компоненты

Шаг 1: Создание скрипта для подсчёта ошибок

Создайте скрипт, который будет считать количество вхождений ключевых слов в логах.

#!/bin/bash

# Путь к лог-файлу
LOG_FILE="$1"
KEYWORD="$2"

# Проверяем, существует ли файл
if [ ! -f "$LOG_FILE" ]; then
    echo 0
    exit 0
fi

# Подавляем ошибки grep
COUNT=$(grep -i "$KEYWORD" "$LOG_FILE" 2>/dev/null | wc -l)

echo "$COUNT"

Сохраните его как /usr/local/bin/zabbix-log-errors.sh, сделайте исполняемым:


sudo chmod +x /usr/local/bin/zabbix-log-errors.sh

Шаг 2: Настройка Zabbix-агента

Добавьте пользовательский параметр в конфиг Zabbix:


UserParameter=log.errors[*],/usr/local/bin/zabbix-log-errors.sh "$1" "$2"

Сохраните в /etc/zabbix/zabbix_agentd.conf и перезапустите агент:


sudo systemctl restart zabbix-agent

Шаг 3: Создание элементов данных в Zabbix

В интерфейсе Zabbix создайте следующие Items:

Имя Ключ Описание
Nextcloud: Exceptions in log log.errors[/var/log/nextcloud/nextcloud.log,Exception] Количество исключений PHP
Nextcloud: Errors in log log.errors[/var/log/nextcloud/nextcloud.log,Error] Общие ошибки
Nextcloud: Fatal errors log.errors[/var/log/nextcloud/nextcloud.log,Fatal] Фатальные ошибки
Nextcloud: Failed login attempts log.errors[/var/log/nextcloud/nextcloud.log,"Failed login"] Неудачные попытки входа
Nextcloud: DB errors log.errors[/var/log/nextcloud/nextcloud.log,DB error] Ошибки базы данных

Шаг 4: Добавление триггеров

Создайте триггер, чтобы получать уведомления при появлении ошибок:


{HOST:log.errors[/var/log/nextcloud/nextcloud.log,Exception].last()} > 0

Шаг 5: Отображение данных

Создайте дашборд с виджетом "Значение элемента данных" или таблицей, чтобы видеть все ошибки сразу.

Результат

Вы получили полноценный микрологсервер, который:

Заключение

Такой подход позволяет легко контролировать состояние вашего Nextcloud-сервера без сложных инструментов. Используйте этот шаблон для мониторинга других сервисов: почтовых серверов, веб-серверов, баз данных.

Дополнительно: ключевые слова для почтовых серверов

Для мониторинга почтовых серверов (Dovecot, Postfix, Roundcube) используйте:

Настройка почтового сервера (Postfix + Dovecot) часто сопровождается "странными" ошибками в логах. Вот реальные проблемы, с которыми я столкнулся, и как их решил.

Проблема 1: Zabbix не видит данные из лога

При попытке считать количество строк в /var/log/mail.log через Zabbix — возвращается 0, хотя события есть.

sudo -u zabbix cat /var/log/mail.log
cat: /var/log/mail.log: Permission denied

Решение: Добавьте пользователя zabbix в группу adm

Файл /var/log/mail.log принадлежит группе adm, а пользователь zabbix в неё не входит.

sudo usermod -aG adm zabbix
sudo systemctl restart zabbix-agent

После этого проверьте:

sudo -u zabbix grep "Cached message size" /var/log/mail.log | wc -l

Проблема 2: Лог-файл растёт слишком быстро

Файл /var/log/mail.log достигает сотен МБ, что замедляет парсинг и мониторинг.

Решение: Настройте ротацию логов раз в сутки

Отредактируйте конфиг ротации (обычно /etc/logrotate.d/rsyslog) или создайте свой:

/var/log/mail.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 644 syslog adm
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate > /dev/null || true
    endscript
}

Теперь лог будет резаться каждый день, храниться 7 версий, старые — сжиматься.

Проблема 3: Нужно очистить лог, но не сломать сервис

Хочется обнулить лог, но просто rm + touch может нарушить работу rsyslog.

Решение: Очищайте файл безопасно, не удаляя его

Сделайте резервную копию и обнулите содержимое:

sudo cp /var/log/mail.log /backup/mail.log.$(date +%F)
sudo truncate -s 0 /var/log/mail.log

Или:

sudo > /var/log/mail.log

Так файл останется на месте, а rsyslog продолжит писать в него.

Проблема 4: В логах Dovecot — ошибка чтения письма

dovecot: Error: Mailbox INBOX: UID=5065: read(...) failed
dovecot: Deleting corrupted cache record uid=5065

Решение: Удалите или почините повреждённое письмо

Перейдите в папку пользователя и найдите файл:

cd /mnt/newmail/logoakademia.ru/michurinskiy@logoakademia.ru/cur/
ls -la | grep "1750837808.M991258P"

Если файл повреждён — удалите его:

rm "1750837808.M991258P..."

Или пересоздайте индексы Dovecot:

sudo doveadm kick michurinskiy@logoakademia.ru
rm /path/to/user/*.index*
rm /path/to/user/dovecot-uidlist

Проблема 5: Много подряд идущих входов в IMAP

Login: user=, method=PLAIN, rip=127.0.0.1
Login: user=, method=PLAIN, rip=127.0.0.1
Login: user=, method=PLAIN, rip=127.0.0.1

Решение: Это норма, не паникуйте

Современные почтовые клиенты (Thunderbird, Outlook, мобильные приложения) открывают несколько IMAP-соединений одновременно для ускорения синхронизации.

Каждое соединение — это отдельный Login в логе. Главное — они корректно завершаются (Disconnected: Logged out).

Теги: #linux-сервер #linux #Zabbix #сервер #dovecot #логи #postfix #zabbixagent #roundcube #nextcloud

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты без контактов

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA