Sobes.tech
Middle+

Эмне кылсаңыз 200 сервер үчүн мониторингти кантип орнотосуз? Кантип ыкмалар жана инструменттер колдонуп, мониторинг тутумун кантип долбоорлосуз?

sobes.tech AI

AIден жооп

200 серверлердин мониторинги үчүн мен масштабдуу жана ишенимдүү системаны иштеп чыгар элем, ал метрикалардын жана логдордун чогулушу, сакталуусу, талдоосу жана визуализациясын камтыйт:

Жолдор:

  1. Агенттик жана агентсиз: Мен аралашмасын колдонмокмун. Агенттик — системдик метрикаларды терең чогултуу үчүн (CPU, RAM, диск, тармак), агентсиз — кызматтардын жана порттордун жеткиликтүүлүгүн текшерүү үчүн (ping, curl).
  2. Централизованный мониторинг: Бардык маалыматтар борбордук системада чогулуп жана иштетилет.
  3. Автоматизация: Агенттерди жайгаштыруу, конфигурацияны орнотуу жана дашборддорду түзүү үчүн автоматташтыруу инструменттерин колдонмокмун.
  4. Эскалация стратегиясы: Тазалык эрежелери, эскалация жана билдирүү инструменттери менен (Slack, PagerDuty) интеграцияланган билдирүү системасын орнотуңуз.
  5. Логдорду чогултуу: Логдорду борборлоштурган чогултуу, талдоо жана көйгөйлөрдү чечүү үчүн.
  6. Визуализация: Жылдам системанын абалын көрүү үчүн маалыматтуу дашборддор.

Куралдар:

  • Метрикалык чогултуу: Prometheus (экспортёрлору менен: node_exporter — хосттор үчүн, blackbox_exporter — жеткиликтүүлүктү текшерүү үчүн).
  • Метрикалык сактоо: Prometheus (жергиликтүү) жана Thanos же VictoriaMetrics — узак мөөнөттүү сактоо жана масштабдоо үчүн.
  • Логдорду чогултуу: Fluentd же Filebeat — чогултуу үчүн, Kafka же RabbitMQ (опционалдуу) — буферлөө үчүн.
  • Логдорду сактоо: Elasticsearch.
  • Визуализация: Grafana — метрикалар жана логдор үчүн.
  • Билдирүүлөр: Alertmanager (Prometheus менен интеграцияланган), Slack, PagerDuty.
  • Автоматташтыруу: Ansible же Puppet — агенттерди жайгаштыруу жана конфигурациялоо үчүн.
  • Оркестрация (салттуу, бирок сунушталат): Kubernetes — мониторинг стегин жайгаштыруу үчүн.

Мониторинг системасын долбоорлоо:

  1. Архитектура:

    • 200 серверлерде node_exporter үлгүлөрү:
    • Бир нече репликацияланган Prometheus серверлери (Thanos Receiver же VictoriaMetrics VMAgent колдонуу менен) маалыматтарды чогултуу үчүн:
    • Thanos / VictoriaMetrics — жыйынтыктоо, узак мөөнөттүү сактоо жана суроолор үчүн:
    • Бирдиктүү Elasticsearch кластер — логдорду сактоо үчүн:
    • Grafana кластер — визуализация үчүн:
    • Бир нече Alertmanager үлгүлөрү:
    • Серверлердин логдорун чогултуу үчүн Fluentd / Filebeat агенттери:
    graph TD
        A[200 Серверлер] -- node_exporter --> B(Prometheus Сервер)
        A -- Fluentd/Filebeat --> C(Kafka/RabbitMQ - Опционалдуу)
        C -- Fluentd/Logstash --> D(Elasticsearch Кластер)
        B -- Алыс жазуу --> E(Thanos/VictoriaMetrics)
        E -- Суроо --> F(Grafana)
        D -- Суроо --> F
        B -- Эскалация --> G(Alertmanager)
        G -- Билдирүү --> H(Slack/PagerDuty)
    
  2. Метрикалык чогултуу конфигурациясы (Prometheus):

    • Максаттарды динамикалуу аныктоо (серверлер) — кызматтарды табуу аркылуу (мисалы, Consul же Kubernetes) же статикалык конфигурациялар менен (Ansible аркылуу башкаруу):
    • Чогултуу интервалдарын орнотуу (scrape_interval):
    • Жогорку суроо талап кылынган метрикалар үчүн жазуу эрежелерин колдонуу (recording rules):
    # Prometheus үчүн мисалдык scrape конфигурациясы
    scrape_configs:
      - job_name: 'node_exporter'
        # Динамикалуу аныктоо же static_configs
        static_configs:
          - targets: ['server1:9100', 'server2:9100', ...]
        # metrics_path: /metrics # Дефолт мааниси
    
  3. Логдорду чогултуу конфигурациясы:

    • Агенттердин (Fluentd/Filebeat) конфигурациялары — лог файлдарын мониторингдөө жана борбордук түйүнгө жөнөтүү:
    • Логдорду талдоо агенттер деңгээлинде же жөнөтүү алдында Elasticsearch үчүн — маалыматтарды структуралоо:
    # Filebeat конфигурациясынын мисалы (filebeat.yml)
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/*.log
        - /var/log/syslog
    #-------------------------- Elasticsearch чыгуу ---------------------------
    output.elasticsearch:
      hosts: ["elasticsearch:9200"]
    
  4. Grafana орнотуулары:

    • Маалымат булагын кошуу (Prometheus, Elasticsearch):
    • Дашборддорду түзүү:
      • Жалпы карап чыгуу дашборддору (Health Overview):
      • Категориялар боюнча дашборддор (CPU, Memory, Disk, Network):
      • конкреттүү кызматтар/приложениелер үчүн дашборддор:
      • Логдор үчүн дашборддор:
    • Өзгөрмөлөрдүн шаблондарын колдонуу — серверлерди/кызметтерди динамикалуу тандоо үчүн:
  5. Билдирүү жөнөтүү орнотуулары:

    • Метрикалык негизделген чектөөлөрдү аныктоо:
    • Prometheus (же Alertmanager) аркылуу билдирүү эрежелерин түзүү:
    • Билдирүү алгычыларды орнотуу — Alertmanagerда (интеграциялар):
    • Эскалация саясатын аныктоо (мисалы, биринчи Slackке билдирүү, андан кийин PagerDuty аркылуу звонок):
    # Prometheus үчүн эрежелер жана билдирүүлөрдүн мисалы (rules.yml)
    # CPU жүктөмүнүн пайыздык көрсөткүчү — 5 мүнөт
    - record: instance:node_cpu_user_percent:rate5m
      expr: 100 - avg without (cpu)(rate(node_cpu_seconds_total{mode="idle"}[5m]) * 100)
    
    # Эскалация эрежеси: Жогорку CPU жүктөмү (> 80%)
    - alert: HighCPULoad
      expr: instance:node_cpu_user_percent:rate5m > 80
      for: 5m # 5 мүнөт күтүү
      labels:
        severity: warning
      annotations:
        summary: "CPU жүктөмү жогору {{ $labels.instance }}"
        description: "CPU жүктөмү {{ $labels.instance }}{{ $value }}%.
    

" ```

  1. Автоматташтыруу:
    • Ansible плейбуктарын колдонуу —
      • node_exporter, Fluentd/Filebeat орнотуу жана конфигурациялоо:
      • Prometheus/Alertmanager/Grafana/Elasticsearch стегин жайгаштыруу:
      • Конфигурациялык файлдарды башкаруу (scrape configs, rules, dashboards):

Бул — чоң сандык серверлер үчүн масштабдуу жана ийкемдүү мониторинг ыкмасы болор эле.