دفع مقاييس بروميثيوس باستخدام بوابة الدفع

على الرغم من ذلك ، فقط الدفع هو لهب أزرق في الأيقونة المفضلة







مقدمة



تتعلق هذه الملاحظة عمومًا بدفع Pushgateway ، ومع ذلك ، سأحذرك وأعترف على الفور بأن النص سيحتوي على مثال - نمط مضاد للدفع Pushgateway ، حيث يوصى باستخدام Pushgateway في حالة عدم عمل الخدمة باستمرار (أو لخدمة / مهمة بدأت بشكل عام لا توجد واجهة) ، مما يعني أنه من الأفضل لبروميثيوس ألا يطرق باستمرار على الأبواب المغلقة ولا يقوم بعمل غير ضروري.







المقدمة



لذا ، فإن pushgateway هي خدمة يمكنك من خلالها إسقاط المقاييس عندما لا يكون نموذج سحب بروميثيوس القياسي قابلاً للتطبيق (في المقدمة ، وصفت عمومًا كيف يمكن أن ينشأ مثل هذا الموقف وينظر إليه) بعد دخول المقاييس إلى بوابة الدفع ، يختارها بروميثيوس بالفعل من هناك ، وهذا يعني عدة قيود تتعلق بدفع المقاييس ، على سبيل المثال ، عدم وجود مقياس أعلى ، نظرًا لأنه يتم إنشاؤه بواسطة بروميثيوس نفسه للمثال الذي تم الاستطلاع عليه ، وفي هذه الحالة ، يكون فقط بوابة الدفع.







ملاحظة: على الرغم من أننا إذا تحدثنا عن مقياس الارتفاع ، فلن تكون هناك حاجة إذا كنت تستخدم Pushgateway بطريقة عملية.







إعداد بروميثيوس لمسح بوابة الدفع



لنفترض أن لدينا مؤلفًا مثل هذا باستخدام Prometheus و Pushgateway:







# ....( -   ..)   
prometheus:  
    restart: always  
    image: bitnami/prometheus:latest  
    links:  
        - pushgateway  
    volumes:  
        - ./.prom.yml:/opt/bitnami/prometheus/conf/prometheus.yml  

pushgateway:  
    restart: always  
    image: bitnami/pushgateway:latest  
    ports:  
        - 9091:9091  
      
      





prom.yml - , pushgateway:







global: null
scrape_interval: 5s
scrape_timeout: 2s
evaluation_interval: 15s

scrape_configs:
  - job_name: pushgateway
    honor_labels: true
    static_configs:
      - targets:
          - 'pushgateway:9091'
      
      





, honor_lables, , , , "X" pushgateway, "X", honor_lables=false "X" pushgateway "exported_X" , pushgateway, true ( , ).







p.s. pushgateway — - , , basic_auth.









, , , , , - , service_discovery ( , , ).







, , Faust ( swarm, ), consul prometheus, docker compose scale.







, , , , :







ports:  
- "9100-9200:6066"  
      
      





prometheus .







. . , — , push_to_gateway .







async def push_metrics():  
    def auth_handler(url, method, timeout, headers, data):  
        return basic_auth_handler(url, method, timeout, headers, data, PUSHGATEWAY_USERNAME, PUSHGATEWAY_PASSWORD)  
    push_to_gateway(PUSHGATEWAY_URI, job=f"{WORKERS_APP_NAME}-{ENV}", registry=registry_metrics, handler=auth_handler)  

@app.timer(interval=PUSH_METRICS_INTERVAL)  
async def push_metrics_cron():  
    await push_metrics()  
      
      





— job name ( — prometheus'), handler registry . , pushgateway - , , prometheus.









قررت أن أكتب ملاحظة ، نظرًا لأنني واجهت ملاحظة مماثلة في عملي ، سأقول على الفور أن الطريقة من المثال لن تدخل في الإنتاج ، ومع ذلك ، مثل استخدام pushgateway في حالة عدم وجود اكتشاف الخدمة ، لاختبارها يمكن أن تؤتي ثمارها.








All Articles