Streams в Graylog — механизм маршрутизации сообщений. Каждый лог попадает в один или несколько streams на основе правил. Мы создали потоки:
- Network Equipment — все логи от маршрутизаторов и коммутаторов
- RADIUS — аутентификация и учёт абонентов
- Billing — логи биллинговой системы
- DNS — запросы DNS-серверов
- Security — события безопасности (failed login, firewall drops)
Каждый stream привязан к своему индексу в OpenSearch с собственной политикой ротации:
# Index Set конфигурация через Graylog API
curl -u admin:password -H "Content-Type: application/json" \
-X POST http://graylog:9000/api/system/indices/index_sets \
-d '{
"title": "Network Equipment Logs",
"description": "Logs from routers and switches",
"index_prefix": "network",
"shards": 4,
"replicas": 1,
"rotation_strategy_class": "org.graylog2.indexer.rotation.strategies.SizeBasedRotationStrategy",
"rotation_strategy": {
"type": "org.graylog2.indexer.rotation.strategies.SizeBasedRotationStrategyConfig",
"max_size": 30000000000
},
"retention_strategy_class": "org.graylog2.indexer.retention.strategies.DeletionRetentionStrategy",
"retention_strategy": {
"type": "org.graylog2.indexer.retention.strategies.DeletionRetentionStrategyConfig",
"max_number_of_indices": 180
},
"index_analyzer": "standard",
"field_type_refresh_interval": 5000
}'
Alerting — одна из сильных сторон Graylog. Пример alert condition для обнаружения BGP-flapping:
# Event Definition: BGP Session Flap Detection
# Тип: Aggregation
# Условие: более 3 событий BGP_NOTIFICATION за 5 минут от одного устройства
# Graylog Event Definition (JSON)
{
"title": "BGP Session Flap",
"description": "BGP session flapping detected on network device",
"priority": 1,
"config": {
"type": "aggregation-v1",
"query": "mnemonic:BGP_NOTIFICATION OR mnemonic:BGP-5-ADJCHANGE",
"streams": ["network-equipment-stream-id"],
"group_by": ["source"],
"series": [{
"id": "count",
"function": "count",
"field": "message"
}],
"conditions": {
"expression": {
"expr": ">",
"left": {"ref": "count"},
"right": {"value": 3}
}
},
"search_within_ms": 300000,
"execute_every_ms": 60000
},
"notifications": [{
"notification_id": "telegram-notification-id"
}]
}
Dashboards мы создали для каждой команды: NOC видит состояние сетевого оборудования, abuse-отдел — Security stream, биллинг — свои логи. Всё разграничено через роли Graylog, привязанные к LDAP-группам.
Оставить комментарий