diff --git a/Monitoring/VictoriaLogs/VictoriaLogs-setup.md b/Monitoring/VictoriaLogs/VictoriaLogs-setup.md new file mode 100644 index 0000000..daed596 --- /dev/null +++ b/Monitoring/VictoriaLogs/VictoriaLogs-setup.md @@ -0,0 +1,80 @@ +--- +title: Установка и настройка VictoriaLogs +description: +published: true +date: 2025-04-28T07:25:56.957Z +tags: victorialogs +editor: markdown +dateCreated: 2025-04-28T07:25:56.957Z +--- + +Пару лет назад у VictoriaMetrics вышел продукт, который является частью именного стека, – VictoriaLogs. Руки не доходили раньше на него посмотреть и вот дошли. Сразу скажу, что всё очень понравилось за простоту, функциональность и удобство. Покажу сразу с примерами. + +Отдельно перечислю особенности VictoriaLogs: + +▪️По своей сути это одиночный бинарник, который можно сконфигурировать ключами запуска, не нужен даже конфигурационный файл. +▪️В бинарнике есть всё, что надо для сбора и просмотра логов: веб интерфейс, метрики для мониторинга за системой, все типы приёмников логов. +▪️Для бэкапа достаточно скопировать директорию с данными, например, с помощью rsync. То есть вообще никаких проблем и заморочек с бэкапом. +▪️Есть плагин для datasource в Grafana, чтобы делать оттуда запросы к логам, а также готовый дашборд для визуализации метрик хранилища. +▪️Простая, короткая документация, где есть всё необходимое для запуска и настройки. + +Покажу примеры сбора логов в VictoriaLogs от Journald, Syslog и Vector. Для этого подготовил небольшой docker-compose.yml с некоторыми параметрами: + +```yaml +services: + victoria-logs: + image: victoriametrics/victoria-logs:latest + volumes: + - ./victoria-logs-data:/victoria-logs-data + command: + - --storageDataPath=/victoria-logs-data + - --retentionPeriod=90d + - --syslog.listenAddr.tcp=:514 + ports: + - 9428:9428 + - 514:514 + restart: always +``` +Запускаем проект, переходим на порт 9428, чтобы убедиться в том, что всё запустилось. По умолчанию открывается страница с некоторыми ссылками на Web UI, Метрики и ключи запуска. + +Отправим в VictoriaLogs логи от systemd от любого сервера, локального или внешнего. Для этого понадобится служба systemd-journal-remote (https://t.me/srv_admin/3136). Ставим её: + +`# apt install systemd-journal-remote` + +Редактируем конфиг /etc/systemd/journal-upload.conf, добавляя один параметр: +``` +[Upload] +URL=http://localhost:9428/insert/journald +``` +URL, соответственно, измените, если у вас сбор логов не с локального сервера, а удалённого. Запускаем службу и проверяем, что она успешно начала отправку логов: + +`# systemctl start systemd-journal-upload` +`# systemctl status systemd-journal-upload` + +Идём в веб интерфейс VictoriaLogs - http://212.193.59.87:9428/select/vmui и смотрим там логи. + +Переходим к Syslog. Я уже добавил параметр syslog.listenAddr.tcp=:514. Убедитесь, что указанный порт прослушивается: + +`# ss -tulnp | grep 514` + +Если у вас этот порт уже занят syslog сервером, то измените порт для VictoriaLogs. В общем-то настраивать больше ничего не надо. Теперь в любом софте, который умеет отправлять данные в формате syslog, укажите в качестве сервера IP вашего VictoriaLogs. Например, в том же Микротике: System ⇨ Logging ⇨ Actions ⇨ Add Type Remote. + +Для сбора логов от всех популярных агентов, типа Filebeat, Fluentd, Vector (https://t.me/srv_admin/2388) и т.д. тоже ничего специально настраивать не надо. Делаете всё точно так же, как для отправки логов в Elasticsearch, только в качестве endpoint указываете URL от вашего сервера VictoriaLogs. Вот пример для Vector: + +```yaml +sinks: + vlogs: + inputs: + - nginx_access_logs + type: elasticsearch + endpoints: + - http://212.193.59.87:9428/insert/elasticsearch/ + api_version: v8 + compression: gzip +``` +Решение очень понравилось своей простотой, универсальностью и скоростью настройки. Буквально за час со всем разобрался и настроил. Никаких затруднений. Отдельно нужно решать вопрос доступа к приёмнику логов и веб интерфейсу. С уровня приложения никаких решений нет. Нужно либо firewall, либо proxy использовать. + +Отдельно отмечу, что те же логи syslog и journald сразу парсятся по основным полям, типа hostname, time, cmdline и т.д. Ничего для этого настраивать не надо. Сразу в веб интерфейсе можно поиск и группировку по ним делать. Получается очень функциональное решение по простоте и скорости настройки на уровне обычного syslog сервера, но с гораздо большими возможностями. +![victorialogs-1.png](/monitoring/victorialogs-1.png) +![victorialogs-2.png](/monitoring/victorialogs-2.png) +![victorialogs-3.png](/monitoring/victorialogs-3.png) \ No newline at end of file