VictoriaMetrics — это высокопроизводительное решение для обработки и анализа временных рядов данных. Оно представляет собой распределенную систему, спроектированную для хранения, сжатия и выполнения запросов к временным рядам в реальном времени. Продукт обладает горизонтальной масштабируемостью, что позволяет обрабатывать большие объемы данных.
В нашем случае Victoria Metrics позволит нам организовать сбор данных о событиях блокировки используя POST уведомления которые генерирует Сrowdsec и легко связать их с панелью мониторинга Crowdsec Cyber Threat Insights на базе Grafana. Ознакомиться с документацией дашборда можно здесь.
Разворачиваем Victoria Metrics
В нашем примере будем использовать [[Мониторинг роутера Mikrotik при помощи Prometheus и Grafana в docker контейнере|стек мониторинга]]:
victoria-metrics:
image: victoriametrics/victoria-metrics
container_name: victoria-metrics
volumes:
- ./victoria-metrics:/victoria-metrics-data
networks:
monitoring: null
ports:
- 8428:8428
restart: unless-stopped
Настройка Crowdsec
Необходимо внести формат отправки http уведомлений по событию в конфигурационном файле crowdsec/config/notifications/http.yaml
:
type: http
name: http_default
log_level: info
format: >
{{- range $Alert := . -}}
{{- range .Decisions -}}
{"metric":{"__name__":"cs_lapi_decision","instance":"gateway","country":"{{$Alert.Source.Cn}}","asname":"{{$Alert.Source.AsName}}","asnumber":"{{$Alert.Source.AsNumber}}","latitude":"{{$Alert.Source.Latitude}}","longitude":"{{$Alert.Source.Longitude}}","iprange":"{{$Alert.Source.Range}}","scenario":"{{.Scenario}}","type":"{{.Type}}","duration":"{{.Duration}}","scope":"{{.Scope}}","ip":"{{.Value}}"},"values": [1],"timestamps":[{{now|unixEpoch}}000]}
{{- end }}
{{- end -}}
url: http://192.168.78.110:8428/api/v1/import
method: POST
192.168.78.110
- адрес установки Victoria Metricsgateway
- название сервера для разделения разных установок Crowdsec
Далее необходимо внести изменение в файл crowdsec/config/profiles.yaml
раскомментировав параметры:
name: default_ip_remediation
notifications:
- http_default
---
name: default_range_remediation
notifications:
- http_default
Проверяем настройку можно командой:
docker exec crowdsec cscli notifications list
Проверяем что VictoriaMetrics получает метрики из Crowdsec. Для это добавляем в бан любой адрес:
docker exec crowdsec cscli decisions add --ip 109.120.132.95
Cоздаем запрос и выбираем ответ в формате json
:
cs_lapi_decision{ip="192.168.0.1"}[1h]
В ответ мы должны получить результат:
Настройка Grafana
Добавляем в Grafana источник данных Victoria Metrics по правилам Prometheus:
apiVersion: 1
datasources:
-
access: proxy
basicAuth: false
name: victoria-metrics
type: prometheus
url: "http://victoria-metrics:8428/"
Импортируем дашборд с ID:21689
Заключение
C помощью Victoria Metrics мы получили легковесный дашборд для Crowdsec на базе Grafana.