Мониторинг кластера Global ERP#

metrics

Система мониторинга состоит из Prometheus, Loki, Tempo и Grafana.

Телеметрия k8s#

Для сбора системной телеметрии кластера k8s используется kube-prometheus-stack

Собственный кластер k8s#

При разворачивании кластера Global ERP в собственном кластере k8s требуется требуется установить kube-prometheus-stack по официальной документации

VK Cloud#

При разворачивании кластера Global ERP в VK Cloud требуется установить аддон «kube-prometheus-stack» из панели управления кластером. В конфигурации аддона для компонента prometheus-node-exporter требуется добавить блок «extraArgs» для получения телеметрии ФС нод кластера.

prometheus-node-exporter:
  image:
    repository: "prometheus/node-exporter"
    tag: v1.7.0
  namespaceOverride: "monitoring"
  resources:
    limits:
      cpu: 200m
      memory: 50Mi
    requests:
      cpu: 100m
      memory: 30Mi
  extraArgs:
    - --collector.filesystem
    - --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/)
    - --collector.filesystem.fs-types-exclude=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$

Внешняя система мониторинга#

Для настройки отправки логов во внешний инстанс Loki при конфигурировании групп ресурсов и книг ресурсов кластера Global в поле «Дополнительно отсылать метрики во внешнюю систему» требуется выставить «Да».

Настройка Prometheus#

Prometheus устанавливается по официальной документации. Для получения метрик сервера Global Prometheus настраивается на сбор метрик с внутреннего инстанса через федерацию.

Пример config.yaml

global:
  scrape_interval:     5s
  evaluation_interval: 5s

scrape_configs:
  - job_name: 'federate'
    scrape_interval: 15s

    honor_labels: true
    metrics_path: '/federate'

    params:
      'match[]':
        - '{__name__=~"^[^go_].+"}'

    static_configs:
      - targets:
        - '<prometheus_external_ip>:9090'  

Настройка Loki#

Loki устанавливается по официальной документации.

Простейший конфиг приведён ниже. При его использовании требуется задать корректные значения параметров path_prefix, chunks_directory и rules_directory.

Пример config.yaml

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096
  
common:
  instance_addr: 127.0.0.1
  path_prefix: <path>          #/mnt/data/loki
  storage:
    filesystem:
      chunks_directory: <path> #/mnt/data/loki/chunks
      rules_directory: <path>  #/mnt/data/loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

query_range:
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
    - from: 2020-10-24
      store: tsdb
      object_store: filesystem
      schema: v13
      index:
        prefix: index_
        period: 24h

ruler:
  alertmanager_url: http://localhost:9093

analytics:
  reporting_enabled: false

Настройка Grafana#

Grafana устанавливается и настраивается по официальной документации.