Files
Ubuntu_docs/Logs/Vector_dev_install.md

171 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Настройка Vector для отправки логов в Gotify
Эта инструкция описывает, как установить Vector, настроить его для чтения JSON-логов из файла `/opt/org_ccalm_main/logs/ccalm.log`, фильтрации строк с уровнем `ERROR` и отправки уведомлений в Gotify.
---
## 0. ✅ Подключаемся к инфраструктуре
```sh
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 пакет с сайта
```sh
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`:
```sh
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
```sh
curl -X POST -k "https://gotify.geovizor.top:8443/message?token=AYmcpr43YtPKDmZ" \
-H "Content-Type: application/json" \
-d '{"message": "Test message", "priority": 5}'
```
Проверяем что gotify работает:
```sh
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:
```sh
vector --config /etc/vector/vector.yaml validate
```
Ожидаемый вывод: `Configuration is valid`.
## Шаг 4: Запуск Vector
### Тестовый запуск (для отладки)
```sh
sudo vector --config /etc/vector/vector.yaml
```
### Запуск как сервиса
1. Включите и запустите сервис:
```sh
sudo systemctl enable vector
sudo systemctl start vector
```
2. Проверьте статус:
```sh
sudo systemctl status vector
```
## Шаг 5: Проверка отправки в Gotify
1. Убедитесь, что Gotify доступен по указанному URL.
2. Добавьте тестовую строку лога в `/opt/org_ccalm_main/logs/ccalm.log`:
```sh
echo '{"level": "ERROR", "message": "Database connection failed", "timestamp": "2025-05-18T12:28:00Z"}' | sudo tee -a /opt/org_ccalm_main/logs/ccalm.log
```
3. Проверьте Gotify (веб-интерфейс или приложение) — должно прийти уведомление с заголовком "CCALM Log Error" и сообщением "Database connection failed".
## Шаг 6: Отладка
- Логи Vector: `/var/log/vector/vector.log` или stdout (в тестовом режиме).
- Проверьте логи при проблемах:
```sh
cat /var/log/vector/vector.log
```
## Дополнительные настройки
- **Права доступа к файлу логов**:
```sh
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` в конфигурации.