Введение
Сегодня я расскажу о том, как быстро и эффективно собрать логи в моей домашней лаборатории, а также развернуть систему управления логами VictoriaLogs. VictoriaLogs от VictoriaMetrics — это эффективная, быстрая и простая в настройке система для централизованного сбора, хранения и анализа логов.
Почему именно VictoriaLogs?
VictoriaLogs предоставляет несколько значительных преимуществ по сравнению с другими решениями:
- Высокая производительность и низкое потребление ресурсов. Она идеально подходит для небольших и средних лабораторий.
- Поддержка Elasticsearch API. Полностью совместима с существующими инструментами, такими как Kibana и Grafana.
- Минимальные требования к оборудованию. Хорошо подходит для домашней среды с ограниченными ресурсами.
- Удобная интеграция. Простое развертывание с помощью Helm-чарта.
- Эффективное хранение. Использует сжатие и оптимизированное хранение, что позволяет дольше хранить логи на минимальных ресурсах.
- Встроенный UI для просмотра логов. Предоставляет собственный веб-интерфейс для удобного поиска и анализа логов без необходимости сторонних решений.
Почему не выбрали другие популярные решения?
На рынке представлены различные популярные решения для сбора и анализа логов:
- ELK Stack (Elasticsearch, Logstash, Kibana): высокие требования к ресурсам и сложность в управлении.
- Loki от Grafana Labs: хорошее решение, но имеет менее эффективное хранение и поиск в случае большого объёма логов.
- Graylog: сложнее в настройке и требует более значительных ресурсов.
VictoriaLogs была выбрана за её простоту, эффективность хранения и минимальные ресурсы, идеально подходящие для домашней лаборатории.
Подготовка и развертывание
Создание Namespace
Создадим отдельный namespace для логирования. Выделение отдельного namespace позволяет лучше изолировать ресурсы и проще управлять правами доступа:
apiVersion: v1
kind: Namespace
metadata:
name: logging
labels:
pod-security.kubernetes.io/enforce: privileged
pod-security.kubernetes.io/enforce-version: latest
Повышение привилегий (privileged
) необходимо, так как система логирования может требовать доступа к определённым ресурсам и файлам на хостах Kubernetes для полноценного сбора логов.
Применяем его:
kubectl apply -f ./victoria-logs/default.yaml
Установка с помощью Helm
Сначала получаем конфигурационный файл для дальнейших изменений:
helm show values vm/victoria-logs-single > ./victoria-logs/values.yaml
Обратите внимание, что в values.yaml
необходимо явно включить интеграцию с Vector, так как по умолчанию она отключена:
vector:
enabled: true
Затем устанавливаем VictoriaLogs:
helm upgrade vls vm/victoria-logs-single \
--install \
--create-namespace \
--kubeconfig ./kubeconfig \
--namespace logging \
--version 0.9.6 \
--values ./victoria-logs/values.yaml
Настройка Ingress
Для доступа извне настраиваем Ingress:
kubectl apply -f ./victoria-logs/ingress.yml --kubeconfig ./kubeconfig
Пример минимального файла Ingress (ingress.yml
):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: victoria-logs-ingress
namespace: logging
spec:
rules:
- host: vlogs.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: vls-victoria-logs-single-server
port:
number: 9428
Подключение Vector для сбора логов
VictoriaLogs отлично интегрируется с Vector, который мы используем для сбора логов. Vector автоматически собирает логи из Kubernetes и отправляет их в VictoriaLogs.
VictoriaLogs работает как со структурированными так и неструктурированным логами. Каждая запись обязательно должна иметь текст. Также можно добавить дополнительные поля как ключ-значение key=value
. Запись может быть представлена как JSON объект. Пример:
Проверка работоспособности
После завершения установки можно убедиться, что система успешно работает, зайдя по указанному домену (vlogs.local
) или проверив состояние pod'ов командой:
kubectl get pods -n logging --kubeconfig ./kubeconfig
Также можно использовать встроенный веб-интерфейс VictoriaLogs для анализа и визуализации собранных логов.

А вот потребление ресурсов:

Посмотреть как работает можно здесь.
Источники

