Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| software:monitoring:promtail-loki-grafana [2025/11/24 13:25] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | software:monitoring:promtail-loki-grafana [2025/12/06 23:53] (текущий) – mirocow | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | {{tag> | ||
| + | |||
| + | ====== Docker Swarm + Promtail + Loki + Grafana ====== | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Fluentd, Fluentd Bit, Logstash и [[software: | ||
| + | |||
| + | ===== Версии: | ||
| + | |||
| + | * [[: | ||
| + | * grafana/ | ||
| + | * grafana/ | ||
| + | |||
| + | ===== Настройки ===== | ||
| + | |||
| + | ==== [[ loki_config ]] ==== | ||
| + | |||
| + | <code yaml> | ||
| + | auth_enabled: | ||
| + | |||
| + | server: | ||
| + | http_listen_port: | ||
| + | |||
| + | common: | ||
| + | instance_addr: | ||
| + | path_prefix: | ||
| + | storage: | ||
| + | filesystem: | ||
| + | chunks_directory: | ||
| + | rules_directory: | ||
| + | replication_factor: | ||
| + | ring: | ||
| + | kvstore: | ||
| + | store: inmemory | ||
| + | |||
| + | schema_config: | ||
| + | configs: | ||
| + | - from: 2020-10-24 | ||
| + | store: tsdb | ||
| + | object_store: | ||
| + | schema: v13 | ||
| + | index: | ||
| + | prefix: index_ | ||
| + | period: 24h | ||
| + | |||
| + | ruler: | ||
| + | alertmanager_url: | ||
| + | |||
| + | limits_config: | ||
| + | retention_period: | ||
| + | reject_old_samples: | ||
| + | reject_old_samples_max_age: | ||
| + | allow_structured_metadata: | ||
| + | max_query_length: | ||
| + | | ||
| + | ingester: | ||
| + | lifecycler: | ||
| + | ring: | ||
| + | kvstore: | ||
| + | store: inmemory | ||
| + | replication_factor: | ||
| + | final_sleep: | ||
| + | chunk_idle_period: | ||
| + | max_chunk_age: | ||
| + | chunk_target_size: | ||
| + | chunk_retain_period: | ||
| + | |||
| + | table_manager: | ||
| + | retention_deletes_enabled: | ||
| + | retention_period: | ||
| + | </ | ||
| + | |||
| + | ==== [[ promtail_config ]] ==== | ||
| + | |||
| + | <code yaml> | ||
| + | server: | ||
| + | http_listen_port: | ||
| + | http_listen_address: | ||
| + | |||
| + | positions: | ||
| + | filename: / | ||
| + | # Запись позиций каждые 15 секунд | ||
| + | sync_period: | ||
| + | |||
| + | clients: | ||
| + | - url: http:// | ||
| + | backoff_config: | ||
| + | min_period: 5s | ||
| + | max_period: 1m | ||
| + | max_retries: | ||
| + | batchwait: 10s | ||
| + | batchsize: 1048576 | ||
| + | timeout: 30s | ||
| + | |||
| + | scrape_configs: | ||
| + | |||
| + | - job_name: docker_containers | ||
| + | docker_sd_configs: | ||
| + | | ||
| + | - host: unix:/// | ||
| + | refresh_interval: | ||
| + | filters: | ||
| + | - name: label | ||
| + | values: [" | ||
| + | |||
| + | relabel_configs: | ||
| + | |||
| + | - target_label: | ||
| + | replacement: | ||
| + | - source_labels: | ||
| + | regex: '/ | ||
| + | target_label: | ||
| + | action: replace | ||
| + | - source_labels: | ||
| + | target_label: | ||
| + | action: replace | ||
| + | |||
| + | # Основной источник логов - stdout/ | ||
| + | - source_labels: | ||
| + | regex: '/ | ||
| + | target_label: | ||
| + | - source_labels: | ||
| + | target_label: | ||
| + | action: replace | ||
| + | |||
| + | # Метаданные Docker Swarm | ||
| + | - source_labels: | ||
| + | target_label: | ||
| + | - source_labels: | ||
| + | target_label: | ||
| + | - source_labels: | ||
| + | target_label: | ||
| + | - source_labels: | ||
| + | target_label: | ||
| + | |||
| + | # Добавляем hostname ноды | ||
| + | - target_label: | ||
| + | replacement: | ||
| + | |||
| + | # Путь к логам контейнера | ||
| + | - source_labels: | ||
| + | target_label: | ||
| + | replacement: | ||
| + | |||
| + | # Пайплайн для обработки логов | ||
| + | pipeline_stages: | ||
| + | - docker: {} | ||
| + | - timestamp: | ||
| + | source: current_time | ||
| + | format: RFC3339 | ||
| + | </ | ||
| + | |||
| + | ===== Docker Compose ===== | ||
| + | |||
| + | |||
| + | monitoring | ||
| + | <code yaml> | ||
| + | version: " | ||
| + | |||
| + | x-logging: | ||
| + | & | ||
| + | driver: " | ||
| + | options: | ||
| + | max-size: " | ||
| + | max-file: " | ||
| + | tag: " | ||
| + | |||
| + | services: | ||
| + | |||
| + | loki: | ||
| + | image: grafana/ | ||
| + | ports: | ||
| + | - " | ||
| + | configs: | ||
| + | - source: loki_config | ||
| + | target: / | ||
| + | volumes: | ||
| + | - loki_data:/ | ||
| + | - / | ||
| + | - / | ||
| + | command: | ||
| + | - -config.file=/ | ||
| + | - -config.expand-env=true | ||
| + | - -target=all | ||
| + | environment: | ||
| + | - TZ=${SYSTEM_TIMEZONE: | ||
| + | networks: | ||
| + | - monitoring | ||
| + | deploy: | ||
| + | placement: | ||
| + | constraints: | ||
| + | - node.role == manager | ||
| + | resources: | ||
| + | limits: | ||
| + | memory: 2G # Уменьшаем память | ||
| + | cpus: ' | ||
| + | reservations: | ||
| + | memory: 1G | ||
| + | cpus: ' | ||
| + | restart_policy: | ||
| + | condition: on-failure | ||
| + | delay: 10s | ||
| + | max_attempts: | ||
| + | logging: *default-logging | ||
| + | labels: | ||
| + | logging: " | ||
| + | logging_jobname: | ||
| + | |||
| + | |||
| + | promtail: | ||
| + | image: grafana/ | ||
| + | configs: | ||
| + | - source: promtail_config | ||
| + | target: / | ||
| + | volumes: | ||
| + | - / | ||
| + | - / | ||
| + | - / | ||
| + | - promtail_positions:/ | ||
| + | - / | ||
| + | - / | ||
| + | command: | ||
| + | - -config.file=/ | ||
| + | - -config.expand-env=true | ||
| + | environment: | ||
| + | - TZ=${SYSTEM_TIMEZONE: | ||
| + | - HOSTNAME={{.Node.Hostname}} | ||
| + | networks: | ||
| + | - monitoring | ||
| + | deploy: | ||
| + | mode: global | ||
| + | resources: | ||
| + | limits: | ||
| + | memory: 512M | ||
| + | cpus: ' | ||
| + | reservations: | ||
| + | memory: 256M | ||
| + | cpus: ' | ||
| + | restart_policy: | ||
| + | condition: any | ||
| + | delay: 30s | ||
| + | max_attempts: | ||
| + | |||
| + | |||
| + | grafana: | ||
| + | image: grafana/ | ||
| + | ports: | ||
| + | - " | ||
| + | environment: | ||
| + | - TZ=${SYSTEM_TIMEZONE: | ||
| + | # GF | ||
| + | - GF_SECURITY_ADMIN_PASSWORD=admin | ||
| + | - GF_SECURITY_ADMIN_USER=admin | ||
| + | - GF_USERS_ALLOW_SIGN_UP=false | ||
| + | - GF_AUTH_ANONYMOUS_ENABLED=true | ||
| + | - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer | ||
| + | # Настройки для решения проблемы блокировки БД | ||
| + | - GF_DATABASE_TYPE=sqlite3 | ||
| + | - GF_DATABASE_PATH=grafana.db | ||
| + | # - GF_DATABASE_MAX_IDLE_CONN=1 | ||
| + | # - GF_DATABASE_MAX_OPEN_CONN=1 | ||
| + | - GF_DATABASE_CONN_MAX_LIFETIME=14400 | ||
| + | # Отключаем функции, | ||
| + | - GF_ALERTING_ENABLED=false | ||
| + | - GF_REPORTING_ENABLED=false | ||
| + | - GF_LIVE_ENABLED=false | ||
| + | volumes: | ||
| + | - grafana_data:/ | ||
| + | - / | ||
| + | - / | ||
| + | networks: | ||
| + | - monitoring | ||
| + | deploy: | ||
| + | placement: | ||
| + | constraints: | ||
| + | - node.role == manager | ||
| + | resources: | ||
| + | limits: | ||
| + | memory: 1G | ||
| + | cpus: ' | ||
| + | reservations: | ||
| + | memory: 512M | ||
| + | cpus: ' | ||
| + | restart_policy: | ||
| + | condition: on-failure | ||
| + | delay: 10s | ||
| + | max_attempts: | ||
| + | |||
| + | |||
| + | configs: | ||
| + | loki_config: | ||
| + | external: true | ||
| + | promtail_config: | ||
| + | external: true | ||
| + | |||
| + | networks: | ||
| + | monitoring: | ||
| + | driver: overlay | ||
| + | attachable: true | ||
| + | |||
| + | volumes: | ||
| + | promtail_positions: | ||
| + | driver: local | ||
| + | loki_data: | ||
| + | driver: local | ||
| + | grafana_data: | ||
| + | driver: local | ||
| + | </ | ||
| + | |||
| + | ===== Встраивание в docker-compose ===== | ||
| + | |||
| + | <code yaml> | ||
| + | x-logging: | ||
| + | & | ||
| + | driver: " | ||
| + | options: | ||
| + | max-size: " | ||
| + | max-file: " | ||
| + | tag: " | ||
| + | |||
| + | services: | ||
| + | |||
| + | loki: | ||
| + | logging: *default-logging | ||
| + | labels: | ||
| + | logging: " | ||
| + | logging_jobname: | ||
| + | </ | ||
| + | |||