Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| software:fluent-bit-loki-grafana:fluent-bit:docker-swarm-syslog-ng [2025/12/06 03:36] – создано mirocow | software:fluent-bit-loki-grafana:fluent-bit:docker-swarm-syslog-ng [2025/12/07 00:56] (текущий) – mirocow | ||
|---|---|---|---|
| Строка 17: | Строка 17: | ||
| http_listen | http_listen | ||
| http_port | http_port | ||
| + | coro_stack_size | ||
| + | plugins_path | ||
| # ==================== ASUS ROUTER SYSLOG INPUT ==================== | # ==================== ASUS ROUTER SYSLOG INPUT ==================== | ||
| Строка 34: | Строка 36: | ||
| Path / | Path / | ||
| Parser | Parser | ||
| - | Refresh_Interval | + | Refresh_Interval |
| Ignore_Older | Ignore_Older | ||
| Docker_Mode | Docker_Mode | ||
| Строка 45: | Строка 47: | ||
| Storage.Type | Storage.Type | ||
| Read_from_Head | Read_from_Head | ||
| + | |||
| + | # Только для отладки | ||
| + | # [INPUT] | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # ==================== DOCKER FILTERS ==================== | ||
| # Фильтруем пустые логи | # Фильтруем пустые логи | ||
| Строка 82: | Строка 102: | ||
| whitelist_key | whitelist_key | ||
| whitelist_key | whitelist_key | ||
| - | |||
| - | # | ||
| - | # ПАРСЕРЫ ДЛЯ РАЗНЫХ ТИПОВ ЛОГОВ | ||
| - | # | ||
| [FILTER] | [FILTER] | ||
| Строка 219: | Строка 235: | ||
| copy log _raw | copy log _raw | ||
| copy parsed_data _parsed | copy parsed_data _parsed | ||
| + | # copy exception_class _class | ||
| + | # copy exception_message _message | ||
| + | # copy exception_backtrace _backtrace | ||
| copy docker.label_project project | copy docker.label_project project | ||
| Строка 247: | Строка 266: | ||
| match | match | ||
| rule $logging ^enabled$ data.$container_id true | rule $logging ^enabled$ data.$container_id true | ||
| + | |||
| + | # ==================== ROUTER FILTERS ==================== | ||
| + | |||
| + | [FILTER] | ||
| + | Name parser | ||
| + | Match | ||
| + | Key_Name | ||
| + | Parser | ||
| + | Reserve_Data | ||
| + | |||
| + | [FILTER] | ||
| + | Name record_modifier | ||
| + | Match | ||
| + | Record | ||
| + | Record | ||
| + | Record | ||
| + | Record | ||
| + | |||
| + | [FILTER] | ||
| + | Name modify | ||
| + | Match | ||
| + | Rename | ||
| + | Rename | ||
| + | Set | ||
| + | Set | ||
| + | |||
| + | # Отфильтровываем служебные контейнеры | ||
| + | [FILTER] | ||
| + | Name grep | ||
| + | Match | ||
| + | Exclude | ||
| + | Exclude | ||
| + | Exclude | ||
| + | Exclude | ||
| [FILTER] | [FILTER] | ||
| Строка 279: | Строка 332: | ||
| whitelist_key | whitelist_key | ||
| - | # ==================== ROUTER FILTERS ==================== | + | # Логи |
| - | # Очищаем и структурируем логи | + | [OUTPUT] |
| - | [FILTER] | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | Parser | + | |
| - | Reserve_Data | + | |
| - | + | | |
| - | [FILTER] | + | |
| - | | + | |
| - | | + | |
| - | Record | + | |
| - | | + | |
| - | Record | + | |
| - | + | ||
| - | # Добавляем важные поля из syslog | + | |
| - | [FILTER] | + | |
| - | Name modify | + | |
| - | Match | + | |
| - | Rename | + | |
| - | Rename | + | |
| - | | + | |
| - | # ==================== OUTPUTS ==================== | ||
| # Логи роутера в Loki | # Логи роутера в Loki | ||
| [OUTPUT] | [OUTPUT] | ||
| Строка 310: | Строка 348: | ||
| Host loki | Host loki | ||
| Port 3100 | Port 3100 | ||
| - | Labels | + | Labels |
| - | Label_Keys | + | |
| Line_Format | Line_Format | ||
| Auto_Kubernetes_Labels off | Auto_Kubernetes_Labels off | ||
| - | |||
| - | # Docker логи в Loki | ||
| - | [OUTPUT] | ||
| - | name loki | ||
| - | match | ||
| - | host loki | ||
| - | port 3100 | ||
| - | labels | ||
| - | label_keys | ||
| - | line_format | ||
| - | auto_kubernetes_labels off | ||
| # Только для отладки | # Только для отладки | ||
| # [OUTPUT] | # [OUTPUT] | ||
| # | # | ||
| - | # | + | # |
| # | # | ||
| </ | </ | ||
| - | === parsers.conf === | ||
| - | |||
| - | <code ini> | ||
| - | # Базовый парсер для Docker JSON логов | ||
| - | [PARSER] | ||
| - | Name docker | ||
| - | Format | ||
| - | Time_Key | ||
| - | Time_Format %Y-%m-%dT%H: | ||
| - | Time_Keep | ||
| - | |||
| - | # Nginx access логи | ||
| - | [PARSER] | ||
| - | Name nginx_access | ||
| - | Format | ||
| - | Regex | ||
| - | Time_Key | ||
| - | Time_Format %d/ | ||
| - | |||
| - | # Gitlab JSON логи (application logs) | ||
| - | [PARSER] | ||
| - | Name gitlab_json | ||
| - | Format | ||
| - | # Time_Key | ||
| - | Time_Keep | ||
| - | |||
| - | # GitLab Registry логи | ||
| - | [PARSER] | ||
| - | Name gitlab_registry | ||
| - | Format | ||
| - | Regex | ||
| - | Time_Key | ||
| - | Time_Format %Y-%m-%dT%H: | ||
| - | Time_Keep | ||
| - | |||
| - | # Sidekiq JSON логи | ||
| - | [PARSER] | ||
| - | Name sidekiq_json | ||
| - | Format | ||
| - | # Time_Key | ||
| - | Time_Keep | ||
| - | |||
| - | # Nextcloud Apache-style логи | ||
| - | [PARSER] | ||
| - | Name nextcloud_access | ||
| - | Format | ||
| - | Regex | ||
| - | Time_Key | ||
| - | Time_Format %d/ | ||
| - | Time_Keep | ||
| - | |||
| - | # Apache access логи | ||
| - | [PARSER] | ||
| - | Name apache_access | ||
| - | Format | ||
| - | Regex | ||
| - | Time_Key | ||
| - | Time_Format %d/ | ||
| - | |||
| - | # MySQL error логи | ||
| - | [PARSER] | ||
| - | Name mysql_error | ||
| - | Format | ||
| - | Regex | ||
| - | Time_Key | ||
| - | Time_Format %Y-%m-%dT%H: | ||
| - | Time_Keep | ||
| - | |||
| - | # MySQL slow query логи | ||
| - | [PARSER] | ||
| - | Name mysql_slow | ||
| - | Format | ||
| - | Regex ^# Time: (?< | ||
| - | Time_Key | ||
| - | Time_Format %Y-%m-%dT%H: | ||
| - | Time_Keep | ||
| - | |||
| - | # PostgreSQL логи | ||
| - | [PARSER] | ||
| - | Name postgresql | ||
| - | Format | ||
| - | Regex | ||
| - | Time_Key | ||
| - | Time_Format %Y-%m-%d %H:%M:%S.%L %Z | ||
| - | Time_Keep | ||
| - | |||
| - | # PostgreSQL extended логи (с деталями запросов) | ||
| - | [PARSER] | ||
| - | Name postgresql_detailed | ||
| - | Format | ||
| - | Regex | ||
| - | Time_Key | ||
| - | Time_Format %Y-%m-%d %H:%M:%S.%L %Z | ||
| - | Time_Keep | ||
| - | |||
| - | # PHP-FPM логи | ||
| - | [PARSER] | ||
| - | Name php_fpm | ||
| - | Format | ||
| - | Regex | ||
| - | Time_Key | ||
| - | Time_Format %d-%b-%Y %H:%M:%S | ||
| - | Time_Keep | ||
| - | |||
| - | # Стандартный syslog | ||
| - | [PARSER] | ||
| - | Name syslog_rfc3164 | ||
| - | Format | ||
| - | Regex | ||
| - | Time_Key | ||
| - | Time_Format %b %d %H:%M:%S | ||
| - | Time_Keep | ||
| - | |||
| - | # Grafana лог формата key=value | ||
| - | [PARSER] | ||
| - | Name grafana_logfmt | ||
| - | Format | ||
| - | Time_Key | ||
| - | Time_Format %Y-%m-%dT%H: | ||
| - | Time_Keep | ||
| - | |||
| - | [PARSER] | ||
| - | Name grafana_regex | ||
| - | Format | ||
| - | Regex | ||
| - | Time_Key | ||
| - | Time_Format %Y-%m-%dT%H: | ||
| - | Time_Keep | ||
| - | </ | ||
| - | |||
| - | === Установка === | ||
| - | |||
| - | <code bash> | ||
| - | |||
| - | </ | ||
| === loki_config === | === loki_config === | ||
| Строка 526: | Строка 417: | ||
| </ | </ | ||
| - | === Развертывание === | + | ==== Развертывание |
| <code bash> | <code bash> | ||
| + | version: " | ||
| + | |||
| + | x-logging: & | ||
| + | driver: " | ||
| + | options: | ||
| + | max-size: " | ||
| + | max-file: " | ||
| + | tag: " | ||
| + | |||
| + | x-labels: & | ||
| + | logging: " | ||
| + | logging_jobname: | ||
| + | monitoring: " | ||
| + | |||
| + | services: | ||
| + | loki: | ||
| + | image: grafana/ | ||
| + | ports: | ||
| + | - " | ||
| + | configs: | ||
| + | - source: loki_config | ||
| + | target: / | ||
| + | volumes: | ||
| + | - loki_data:/ | ||
| + | command: -config.file=/ | ||
| + | networks: | ||
| + | - monitoring | ||
| + | deploy: | ||
| + | placement: | ||
| + | constraints: | ||
| + | - node.role == manager | ||
| + | logging: *default-logging | ||
| + | labels: | ||
| + | <<: *default-labels | ||
| + | service: " | ||
| + | component: " | ||
| + | |||
| + | fluent-bit: | ||
| + | image: fluent/ | ||
| + | configs: | ||
| + | - source: fluent_bit_config | ||
| + | target: / | ||
| + | - source: fluent_bit_parser | ||
| + | target: / | ||
| + | - source: docker_metadata | ||
| + | target: / | ||
| + | environment: | ||
| + | - NODE_ID={{.Node.ID}} | ||
| + | - NODE_NAME={{.Node.Hostname}} | ||
| + | ports: | ||
| + | - " | ||
| + | - " | ||
| + | networks: | ||
| + | - monitoring | ||
| + | volumes: | ||
| + | - flb_storage:/ | ||
| + | - / | ||
| + | deploy: | ||
| + | mode: global | ||
| + | |||
| + | |||
| + | grafana: | ||
| + | image: grafana/ | ||
| + | ports: | ||
| + | - " | ||
| + | environment: | ||
| + | - GF_SECURITY_ADMIN_PASSWORD=admin | ||
| + | - GF_SECURITY_ADMIN_USER=admin | ||
| + | volumes: | ||
| + | - grafana_data:/ | ||
| + | networks: | ||
| + | - monitoring | ||
| + | deploy: | ||
| + | placement: | ||
| + | constraints: | ||
| + | - node.role == manager | ||
| + | logging: *default-logging | ||
| + | labels: | ||
| + | <<: *default-labels | ||
| + | service: " | ||
| + | component: " | ||
| + | |||
| + | configs: | ||
| + | loki_config: | ||
| + | external: true | ||
| + | fluent_bit_config: | ||
| + | external: true | ||
| + | fluent_bit_parser: | ||
| + | external: true | ||
| + | docker_metadata: | ||
| + | external: true | ||
| + | |||
| + | networks: | ||
| + | monitoring: | ||
| + | driver: overlay | ||
| + | volumes: | ||
| + | flb_storage: | ||
| + | driver: local | ||
| + | loki_data: | ||
| + | driver: local | ||
| + | grafana_data: | ||
| + | driver: local | ||
| </ | </ | ||
| - | === Проверка работы === | + | ==== Проверка работы |
| <code bash> | <code bash> | ||