Files
Ubuntu_docs/Logs/Vector_dev_install.md

6.3 KiB
Raw Blame History

Настройка Vector для отправки логов в Gotify

Эта инструкция описывает, как установить Vector, настроить его для чтения JSON-логов из файла /opt/org_ccalm_main/logs/ccalm.log, фильтрации строк с уровнем ERROR и отправки уведомлений в Gotify.


0. Подключаемся к инфраструктуре

  ssh igor@ccalm.org -p 2200

Предварительные требования

  • ОС: Ubuntu/Debian (для других ОС уточните, чтобы адаптировать команды).
  • Файл логов: /opt/org_ccalm_main/logs/ccalm.log с JSON-строками (поля level и message).
  • Gotify: Доступный сервер Gotify с URL и токеном (например, https://gotify.example.com/message?token=<your-token>).
  • Доступ к терминалу с правами sudo.

Шаг 1: Установка Vector

Пробуем скачать deb пакет с сайта

curl -L https://packages.timber.io/vector/0.43.1/vector_0.43.1-1_amd64.deb -o vector_0.43.1-1_amd64.deb &&
sudo dpkg -i vector_0.43.1-1_amd64.deb &&
sudo apt-get install -f &&
vector --version

Шаг 2: Создание конфигурации Vector

Vector использует YAML для конфигурации. Настроим чтение логов, фильтрацию ERROR и отправку в Gotify.

  1. Создайте файл конфигурации /etc/vector/vector.yaml:
cd /etc/vector &&
sudo tee vector.yaml > /dev/null <<'EOF'
data_dir: "/var/lib/vector"

sources:
  ccalm_logs:
    type: file
    include:
      - /opt/org_ccalm_main/logs/ccalm.log
    read_from: beginning

transforms:
  parse_json:
    type: remap
    inputs:
      - ccalm_logs
    source: |
      structured, err = parse_json(.message)
      if err != null {
        abort
      }
      merged, err = merge(., structured)
      if err != null {
        abort
      }
      . = merged

  filter_errors:
    type: filter
    inputs:
      - parse_json
    condition: '.level == "ERROR"'

  format_telegram_json:
    type: remap
    inputs:
      - filter_errors
    source: |
      msg, err = string(.message)
      if err != null {
        msg = "Unable to parse message"
      }
      .message = "{\"title\":\"CCALM Main Error Log\",\"message\":\"ERROR: " + msg + "\"}"


sinks:
     gotify:
       type: http
       inputs:
         - filter_errors
       uri: "https://gotify.geovizor.top:8443/message?token=AYmcpr43YtPKDmZ"
       method: post
       encoding:
         codec: json
         template: '{"title":"CCALM Main Error Log","message":"Test message 00","priority":5}'
       request:
         headers:
           Content-Type: "application/json"
           Host: "gotify.geovizor.top"
           Content-Length: "{{ content_length }}"
       tls:
         verify_certificate: false
         verify_hostname: false
EOF

Пробую отправку через curl

curl -X POST -k "https://gotify.geovizor.top:8443/message?token=AYmcpr43YtPKDmZ" \
  -H "Content-Type: application/json" \
  -d '{"message": "Test message", "priority": 5}'

Проверяем что gotify работает:

curl -k -X POST -H "Content-Type: application/json" -H "Host: gotify.geovizor.top" -d '{"message":"Test message 00","priority":5}' --http1.1 https://gotify.geovizor.top:8443/message?token=AYmcpr43YtPKDmZ -v

Объяснение конфигурации

  • Source (ccalm_logs): Читает логи из файла, парсит JSON, поддерживает многострочные логи.
  • Transform (filter_errors): Фильтрует логи с level: "ERROR".
  • Sink (gotify): Отправляет отфильтрованные логи в Gotify через HTTP POST.

Шаг 3: Проверка конфигурации

Проверьте корректность YAML:

vector --config /etc/vector/vector.yaml validate

Ожидаемый вывод: Configuration is valid.

Шаг 4: Запуск Vector

Тестовый запуск (для отладки)

sudo vector --config /etc/vector/vector.yaml

Запуск как сервиса

  1. Включите и запустите сервис:
  sudo systemctl enable vector
  sudo systemctl start vector
  1. Проверьте статус:
   sudo systemctl status vector

Шаг 5: Проверка отправки в Gotify

  1. Убедитесь, что Gotify доступен по указанному URL.
  2. Добавьте тестовую строку лога в /opt/org_ccalm_main/logs/ccalm.log:
echo '{"level": "ERROR", "message": "Database connection failed", "timestamp": "2025-05-18T12:28:00Z"}' | sudo tee -a /opt/org_ccalm_main/logs/ccalm.log
  1. Проверьте Gotify (веб-интерфейс или приложение) — должно прийти уведомление с заголовком "CCALM Log Error" и сообщением "Database connection failed".

Шаг 6: Отладка

  • Логи Vector: /var/log/vector/vector.log или stdout (в тестовом режиме).
  • Проверьте логи при проблемах:
  cat /var/log/vector/vector.log

Дополнительные настройки

  • Права доступа к файлу логов:
  sudo chown vector:vector /opt/org_ccalm_main/logs/ccalm.log
  sudo chmod 644 /opt/org_ccalm_main/logs/ccalm.log
  • Если JSON-формат отличается: Если поле level называется иначе (например, log_level), замените .level на .log_level в condition.
  • HTTP вместо HTTPS: Если Gotify использует HTTP, замените https:// на http:// в uri.

Примечания

  • Убедитесь, что Gotify настроен и токен действителен.
  • Если логи не отправляются, проверьте сетевую доступность Gotify и правильность URL/токена.
  • Для чтения только новых логов удалите read_from: beginning в конфигурации.