Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
software:monitoring [2025/11/17 00:45] 192.168.1.1software:monitoring [2025/12/07 02:38] (текущий) – [Программные средства] mirocow
Строка 1: Строка 1:
-{{tag>[loki docker swarm promtail grafana]}}+{{tag>[loki docker swarm promtail grafana monitoring fluentd fluent-bit prometheus}}
  
-====== Docker Swarm + Loki + Protmail + Grafana ======+====== Мониторинг ======
  
-===== Версии===== +{{:software:67567.jpg?600|}}
-  +
-  * grafana/loki:3.5.8 +
-  * grafana/promtail:3.5.8 +
-  * grafana/grafana:10.2.2+
  
-===== Настройки =====+Мониторинг IT-инфраструктуры (ИТ-мониторинг) — это процесс постоянного сбора, обработки и анализа данных о состоянии элементов ИТ-среды: серверов, сетевых устройств, приложений, каналов связи и других компонентов. Цель — обеспечить стабильность, безопасность и эффективность инфраструктуры, своевременно выявлять и устранять проблемы. 
  
-==== [[ loki_config ]] ====+  * Минимизация времени простоя — быстрая реакция на проблемы (перезапуск служб, уведомление администраторов, автоматизированные действия) сокращает время простоя. 
 +  * Снижение операционных расходов — автоматизация контроля сети, серверов, приложений уменьшает нагрузку на сотрудников, сокращает число ручных проверок. 
 +  * Улучшение пользовательского опыта — стабильная работа систем влияет на удовлетворённость клиентов и сотрудников, мониторинг помогает обеспечивать оптимальное время ответа приложений и сервисов. 
 +  * Планирование развития инфраструктуры — анализ исторических данных и трендов позволяет прогнозировать будущие потребности в ресурсах и планировать развитие ИТ-инфраструктуры.
  
-<code yaml> +===== Программы =====
-auth_enabled: false+
  
-server: +Grafana, Promtail, Loki, Prometheus, Fluent Bit, Fluentd, Kibana, Logstah, Elasticsearch, ELK, Zabbix, Alloy.
-  http_listen_port: 3100+
  
-common: +==== Рекомендации ====
-  instance_addr: 127.0.0.1 +
-  path_prefix: /loki +
-  storage: +
-    filesystem: +
-      chunks_directory: /loki/chunks +
-      rules_directory: /loki/rules +
-  replication_factor:+
-  ring: +
-    kvstore: +
-      store: inmemory+
  
-schema_config: +  * Использовать Fluentd или Fluent Bit, которые умеют отправлять данные в Loki. В отличие от Promtail они имеют готовые парсеры практически для любого вида лога и справляются в том числе с multiline-логами.
-  configs: +
-    from: 2020-10-24 +
-      store: tsdb +
-      object_store: filesystem +
-      schema: v13 +
-      index: +
-        prefix: index_ +
-        period: 24h+
  
-ruler: +===== Программные средства =====
-  alertmanager_url: http://localhost:9093+
  
-limits_config: 
-  retention_period: 720h 
-  reject_old_samples: true 
-  reject_old_samples_max_age: 720h 
  
-table_manager: +  * [[system:universal]] 
-  retention_deletes_enabled: true +  [[.monitoring:promtail-loki-grafana]] 
-  retention_period: 720h +  * [[.monitoring:fluent-bit-loki-grafana]] 
-</code> +  * [[.monitoring:fluent-bit-fluentd-loki-grafana]] 
- +  * [[.monitoring:prometheus]] 
-==== [[ promtail_config ]] ==== +  * [[system:ctop]] 
- +  * [[system:htop]] 
-[[monitoring:promtail]] +  * [[system:iotop]] 
- +  * [[software:iperf3]] 
-<code yaml> +  * [[:lsof]
-server: +  [[system:elasticsearch:logstash]
-  http_listen_port: 9080 +  * [[:lm-sensors]
-  http_listen_address: 0.0.0.0 +  [[mysql:mytop]] 
- +  [[network:netstat]
-positions: +  [[system:rsyslog]] 
-  filename: /tmp/positions.yaml +  * [[:tcpdump]] 
-  # Запись позиций каждые 15 секунд +  * [[system:top]] 
-  sync_period: 15s +  * [[system:watch]] 
- +  * [[ping:zabbix]] 
-clients: +  * [[system:vmstat]] 
-  url: http://loki:3100/loki/api/v1/push +  * [[:software:monitoring:promtail]] 
-    backoff_config: +  * [[software:monitoring:fluent-bit]] 
-      min_period: 10s +  * [[system:syslog]]
-      max_period: 5m +
-      max_retries: 50 +
-    batchwait: 30s +
-    batchsize: 2097152 +
-    timeout: 60s +
-    external_labels: +
-      cluster: docker-swarm +
-      host: "${HOSTNAME}" +
- +
-scrape_configs: +
- +
-  - job_namesystem +
-    static_configs: +
-    targets: +
-        localhost +
-      labels: +
-        job: varlogs +
-        __path__: /var/log/*log +
- +
-  # See https://grafana.com/docs/loki/latest/send-data/promtail/configuration/#docker_sd_config +
-  # Also see https://prometheus.io/docs/prometheus/latest/configuration/configuration/#dockerswarm_sd_config +
-  - job_namedocker_containers +
-    docker_sd_configs+
-      - hostunix:///var/run/docker.sock +
-        refresh_interval60s +
-        filters: +
-          - name: status +
-            values: ["running"+
-    relabel_configs: +
-      - target_label: job +
-        replacement: docker_containers +
-      - source_labels: [__meta_docker_container_name+
-        regex: '/(.*)' +
-        target_labelcontainer +
-        actionreplace +
-      - source_labels: [__meta_docker_container_label_com_docker_swarm_service_name+
-        target_label: service +
-        regex: ".+" +
-        action: keep +
-      - source_labels: [__meta_docker_container_label_com_docker_swarm_service_name] +
-        target_labelswarm_service_name +
-      source_labels: [__meta_docker_stack_namespace+
-        target_label: stack +
-        action: replace +
-      - source_labels: [__meta_docker_swarm_node_id] +
-        target_label: node_id +
-        action: replace +
-      - source_labels: [__meta_docker_container_label_com_docker_swarm_node_hostname+
-        target_label: node +
-        action: replace +
-      - source_labels: [__meta_docker_container_log_stream] +
-        target_labellog_stream +
-        action: replace +
-      - source_labels: [__meta_docker_container_id+
-        target_label: container_id +
-        action: replace +
-      - source_labels: [__meta_docker_container_image] +
-        target_label: image +
-        action: replace +
-      # Правило дропа для тестирования +
-      # - source_labels: [__meta_docker_container_name] +
-      #   regex: '(promtail|loki|grafana)' +
-      #   action: drop +
-    pipeline_stages: +
-      - docker: {} +
-      - timestamp: +
-          source: current_time +
-          format: RFC3339 +
-</code> +
- +
-===== Docker Compose ===== +
- +
- +
-monitoring +
-<code yaml> +
-version: "3.8" +
- +
-services: +
- +
-  loki+
-    image: grafana/loki:3.5.8 +
-    ports: +
-      - "3100:3100" +
-    configs: +
-      - source: loki_config +
-        target: /etc/loki/local-config.yaml +
-    volumes: +
-      - loki_data:/loki +
-      - /etc/localtime:/etc/localtime:ro +
-      - /etc/timezone:/etc/timezone:ro +
-    command:  +
-      - -config.file=/etc/loki/local-config.yaml +
-      - -config.expand-env=true +
-      - -target=all +
-    networks: +
-      - monitoring +
-    deploy: +
-      placement: +
-        constraints: +
-          - node.role == manager +
-      resources: +
-        limits: +
-          memory: 2G  # Уменьшаем память +
-          cpus'1.0' +
-        reservations: +
-          memory: 1G +
-          cpus: '0.5' +
-      restart_policy: +
-        condition: on-failure +
-        delay: 10s +
-        max_attempts:+
- +
-  promtail: +
-    image: grafana/promtail:3.5.8 +
-    configs: +
-      - source: promtail_config +
-        target: /etc/promtail/config.yaml +
-    volumes: +
-      - /var/run/docker.sock:/var/run/docker.sock:ro +
-      - /var/log:/var/log:ro +
-      - /var/lib/docker/containers:/var/lib/docker/containers:ro +
-      - /var/log/journal:/var/log/journal:ro +
-      - /run/systemd/journal:/run/systemd/journal:ro +
-      - promtail_positions:/tmp +
-      - /etc/localtime:/etc/localtime:ro +
-      - /etc/timezone:/etc/timezone:ro +
-    command:  +
-      - -config.file=/etc/promtail/config.yaml +
-      - -client.external-labels=host=${HOSTNAME} +
-      - -config.expand-env=true +
-      #- -log.level=info +
-    environment: +
-      - HOSTNAME={{.Node.Hostname}} +
-    networks: +
-      - monitoring +
-    deploy: +
-      mode: global +
-      resources: +
-        limits: +
-          memory: 512M +
-          cpus: '0.5' +
-        reservations: +
-          memory: 256M +
-          cpus: '0.25' +
-      restart_policy: +
-        condition: any +
-        delay: 30s +
-        max_attempts: 10 +
- +
-  grafana: +
-    image: grafana/grafana:10.2.2 +
-    ports: +
-      - "3000:3000" +
-    environment: +
-      - 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:/var/lib/grafana +
-      - /etc/localtime:/etc/localtime:ro +
-      - /etc/timezone:/etc/timezone:ro +
-    networks: +
-      - monitoring +
-    deploy: +
-      placement: +
-        constraints: +
-          - node.role == manager +
-      resources: +
-        limits: +
-          memory: 1G +
-          cpus: '0.5' +
-        reservations: +
-          memory: 512M +
-          cpus: '0.25' +
-      restart_policy: +
-        condition: on-failure +
-        delay: 10s +
-        max_attempts:+
- +
-configs+
-  loki_config: +
-    external: true +
-  promtail_config: +
-    externaltrue +
- +
-networks: +
-  monitoring: +
-    driver: overlay +
-    attachable: true +
- +
- +
-volumes: +
-  promtail_positions: +
-    driverlocal +
-  loki_data: +
-    driver: local +
-  grafana_data: +
-    driver: local +
-</code>+