Sobes.tech
Middle

Ի՞նչ տեսակի մետրիկներ եք ճանաչում Prometheus-ում:

sobes.tech AI

Պատասխան AI-ից

Prometheus աջակցում է չորս հիմնական տեսակի մետրիկների.

  1. Հաշվիչ (Counter): Մոնոտոնիկ աճող արժեք, որը կարող է միայն աճել (կամ վերականգնվել զրոյին գործընթացի վերագործարկման ժամանակ): Օգտագործվում է ինկրեմենտալ իրադարձությունների հաշվարկի համար, ինչպիսիք են հարցումների, սխալների կամ ավարտված առաջադրանքների քանակը:
    // Օրինակ Go-ում
    var requestsTotal = prometheus.NewCounter(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Ընդհանուր HTTP հարցումների քանակը",
        },
    )
    
  2. Սենսոր (Gauge): Կանոնավոր թվային արժեք, որը կարող է ինչպես աճել, այնպես էլ նվազել: Օգտագործվում է ինչ-որ բանի ընթացիկ վիճակի չափման համար, օրինակ՝ CPU բեռ, հիշողության օգտագործում, ակտիվ օգտվողների քանակ կամ հերթի չափը:
    # Python-ում օրինակ
    from prometheus_client import Gauge
    
    cpu_usage = Gauge('cpu_usage_percent', 'Ընթացիկ CPU օգտագործումը տոկոսներով')
    cpu_usage.set(55.5)
    
  3. Հիստոգրամա (Histogram): Մափում է նմուշների բաշխումը (օրինակ՝ հարցումների պատասխանների ժամանակը) և խմբավորում դրանք կոնֆիգուրացվող կուպակների (buckets) մեջ: Հնարավոր է ստանալ տվյալներ յուրաքանչյուր կուպակի նմուշների քանակի և ընդհանուր արժեքների մասին: Օգտագործվում է ուշացման վերլուծության համար:
    // Java-ում օրինակ
    import io.prometheus.client.Histogram;
    
    static final Histogram requestLatencies = Histogram.build()
        .name("http_request_duration_seconds")
        .help("Հարցի տևողությունը վայրկյաններով")
        .buckets(0.1, 0.5, 1.0, 2.5, 5.0, 10.0) // Կուպակներ
        .register();
    
  4. Սմիթ (Summary): Դրականորեն նման է հիստոգրամային, բայց հաճախորդի կողմում հաշվարկում է նմուշների կարգավորելի քվանտիլները մոծակային ժամանակային պատուհանում: Ներկայացնում է նաև ընդհանուր նմուշների քանակը և նրանց գումարը: Հարմար է ուշացման չափման համար, երբ կարևոր են քվանտիլները, սակայն հարկավոր է հաշվի առնել, որ հաճախորդի կողմի հաշվարկը պահանջում է ավելի մեծ հաշվարկային հզորություն և կարող է հանգեցնել ավելի քիչ ճշգրիտ քվանտիլների՝ հավաքագրման ժամանակ:
    # Ruby-ում օրինակ
    require 'prometheus/client'
    
    requests_summary = Prometheus::Client::Summary.new(:request_duration_seconds, 'Հարցի տևողությունը վայրկյաններով')
    

Մետրիկայի տեսակի ընտրությունը կախված է տվյալների բնույթից, որոնք անհրաժեշտ է հետևել։