Sobes.tech
Middle+

Kuidas seadistaksite jälgimise 200 serveri jaoks? Milliseid lähenemisviise ja tööriistu kasutaksite ning kuidas kujundaksite jälgimissüsteemi?

sobes.tech AI

Vastus AI-lt

200 serveri jälgimiseks arendaksin mahtu ja usaldusväärset süsteemi, mis hõlmab metrikkide ja logide kogumist, salvestamist, analüüsi ja visualiseerimist:

Lähendid:

  1. Agent-põhine ja agentivaba: Kasutaksin kombinatsiooni. Agent-põhine — sügava süsteemimetrika kogumise jaoks (CPU, RAM, ketas, võrk), agentivaba — teenuste ja portide kättesaadavuse kontrollimiseks (ping, curl).
  2. Keskne jälgimine: Kõik andmed kogutakse ja töödeldakse keskse süsteemi kaudu.
  3. Automatiseerimine: Kasutaksin automatiseerimisvahendeid agentide paigaldamiseks, konfiguratsioonide seadistamiseks ja armatuurlaudade loomiseks.
  4. Hoiatusstrateegia: Seadistaksin selged reeglid, eskaleerimise ja teavitustööriistade (Slack, PagerDuty) integratsiooni.
  5. Logide kogumine: Keskne logide kogumine analüüsiks ja probleemide lahendamiseks.
  6. Visualiseerimine: Informatiivsed armatuurlaud kiireks süsteemi seisundi ülevaatamiseks.

Tööriistad:

  • Metrikkide kogumine: Prometheus (eksportijad: node_exporter — hostidele, blackbox_exporter — kättesaadavuse kontrolliks).
  • Metrikkide salvestamine: Prometheus (kohalikult) ja Thanos või VictoriaMetrics — pikaajaline salvestus ja skaleerimine.
  • Logide kogumine: Fluentd või Filebeat — kogumiseks, Kafka või RabbitMQ (valikuline) — buferiseerimiseks.
  • Logide salvestamine: Elasticsearch.
  • Visualiseerimine: Grafana — metrikkide ja logide visualiseerimiseks.
  • Hoiatused: Alertmanager (integreeritud Prometheus-iga), Slack, PagerDuty.
  • Automatiseerimine: Ansible või Puppet — agentide paigaldamiseks ja konfiguratsioonide seadistamiseks.
  • Orkestreerimine (valikuline, kuid soovitatav): Kubernetes — jälgimisketi paigaldamiseks.

Süsteemi projekteerimine:

  1. Arhitektuur:

    • Mitmed node_exporter eksemplarid serverites.
    • Üks või mitu replikatsiooniga Prometheus serverit (kasutades Thanos Receiver või VictoriaMetrics VMAgent) andmete kogumiseks.
    • Thanos / VictoriaMetrics — agregatsiooniks, pikaajaliseks salvestamiseks ja päringuteks.
    • Ühtne Elasticsearch klaster logide salvestamiseks.
    • Armatuurlaudklaster visualiseerimiseks.
    • Üks või mitu Alertmanager näidet.
    • Fluentd / Filebeat agentid serverites logide kogumiseks.
    graph TD
        A[200 Serverit] -- node_exporter --> B(Prometheus Server)
        A -- Fluentd/Filebeat --> C(Kafka/RabbitMQ - Valikuline)
        C -- Fluentd/Logstash --> D(Elasticsearch Klaster)
        B -- Kaugjuhitav Kirjutamine --> E(Thanos/VictoriaMetrics)
        E -- Päring --> F(Grafana)
        D -- Päring --> F
        B -- Hoiatus --> G(Alertmanager)
        G -- Teavitus --> H(Slack/PagerDuty)
    
  2. Metrikkide kogumise konfiguratsioon (Prometheus):

    • Dünaamiline sihtkohtade avastamine (serverid) — kasutades teenuse avastamist (nt, Consul või Kubernetes) või staatilist konfiguratsiooni (Ansible kaudu hallatav):
    • Kogumise intervallide seadistamine (scrape_interval).
    • Sageli nõutavate metrikkide reeglite rakendamine (recording rules).
    # Prometheuse näidiskogumise konfiguratsioon
    scrape_configs:
      - job_name: 'node_exporter'
        # Dünaamiline avastamine või static_configs
        static_configs:
          - targets: ['server1:9100', 'server2:9100', ...]
        # metrics_path: /metrics # Vaikimisi väärtus
    
  3. Logide kogumise konfiguratsioon:

    • Agentide (Fluentd või Filebeat) konfiguratsioonid — logifailide jälgimine ja saatmine keskpunkti.
    • Logide analüüs agentide tasemel või saatmisel Elasticsearchi — andmete struktureerimine.
    # Filebeat konfiguratsiooni näide (filebeat.yml)
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/*.log
        - /var/log/syslog
    #-------------------------- Elasticsearch väljund ---------------------------
    output.elasticsearch:
      hosts: ["elasticsearch:9200"]
    
  4. Grafana seadistused:

    • Andmeallikate lisamine (Prometheus, Elasticsearch).
    • Armatuurlaudade loomine:
      • Ülevaate armatuurlaud (Health Overview).
      • Kategooriate kaupa armatuurlaud (CPU, Memory, Disk, Network).
      • Konkreetsete teenuste/rakenduste armatuurlaud.
      • Logide armatuurlaud.
    • Muutujate mallide kasutamine — dünaamiline serverite/teenuste valik.
  5. Hoiatussüsteemi seadistamine:

    • Parameetrite määramine metrikkide põhjal.
    • Hoiatusreeglite loomine Prometheus-is (või Alertmanager-is).
    • Saajate konfiguratsioon — Alertmanager (integreerimine).
    • Eskalatsioonipoliitika määramine (näiteks, esmalt teavitus Slackis, siis kõne PagerDuty kaudu).
    # Prometheuse reeglite ja hoiatussüsteemi näide (rules.yml)
    # CPU kasutusprotsendi reegel — 5 minutit
    - record: instance:node_cpu_user_percent:rate5m
      expr: 100 - avg without (cpu)(rate(node_cpu_seconds_total{mode="idle"}[5m]) * 100)
    
    # Hoiatusreegel: Kõrge CPU koormus (> 80%)
    - alert: HighCPULoad
      expr: instance:node_cpu_user_percent:rate5m > 80
      for: 5m # oodata 5 minutit
      labels:
        severity: warning
      annotations:
        summary: "CPU koormus on kõrge {{ $labels.instance }}"
        description: "CPU koormus {{ $labels.instance }}{{ $value }}%."
    
  6. Automatiseerimine:

    • Kasutades Ansible playbook-e —
      • node_exporter, Fluentd/Filebeat paigaldamine ja konfiguratsioon.
      • Prometheus/Alertmanager/Grafana/Elasticsearch staki paigaldamine.
      • Konfiguratsioonifailide haldamine (scrape configs, rules, dashboards).

See oleks keeruline, skaleeritav ja paindlik jälgimissüsteem suure hulga serverite jaoks.