ကုဒ်မျဉ်းနှစ်ကြောင်းနှင့် သင့်အပလီကေးရှင်းသည် မက်ထရစ်များကို ထုတ်ပေးသည်၊ ဝိုး!
Prometheus_ မည်သို့အလုပ်လုပ်သည်ကိုနားလည်ရန်ဘူး_တင်ပို့သူ အနည်းငယ်မျှသာ ဥပမာ လုံလောက်သည်-
from flask import Flask
from prometheus_flask_exporter import PrometheusMetrics
app = Flask(__name__)
metrics = PrometheusMetrics(app)
@app.route('/')
def main():
return 'OK'
စတင်ရန် လိုအပ်သည်မှာ ဒါပါပဲ။ တင်သွင်းခြင်းနှင့် အစပြုခြင်းအတွက် လိုင်းတစ်ခုကို ပေါင်းထည့်ခြင်းဖြင့် PrometheusMetricsမက်ထရစ်များ ရရှိပါမည်။ တောင်းဆိုမှုကြာချိန် и ကောင်တာများတောင်းဆိုခြင်း။အဆုံးမှတ်တွင်ပြသထားသည်။ /မက်ထရစ်များ ၎င်းနှင့်အတူ မှတ်ပုံတင်ထားသည့် Flask အက်ပ်အပြင် အခြေခံမှ သင်ရရှိသည့် ပုံသေမက်ထရစ်များအားလုံး
သင်ရှာလိုရသည်
အညွှန်းကိန်းများစာရင်းကိုလည်း သင်တွေ့လိမ့်မည်။
သင့်အောင်လုပ်ခြင်း
စာကြည့်တိုက်တွင် configuration options များစွာရှိသည်၊ ကြည့်ရှုပါ။
အခြေခံ configuration ကို အပေါ်မှာ ပြထားပါတယ်။ ဥပမာတစ်ခုဖန်တီးပါ။ PrometheusMetricsခေါ်ကြပါစို့ မက်ထရစ်လုပ်ဆောင်ချက်များကို အလှဆင်ခြင်းဖြင့် သင်စုဆောင်းလိုသော နောက်ထပ်မက်ထရစ်များကို သတ်မှတ်ရန် ၎င်းကို အသုံးပြုပါ-
-
@metrics.counter(..)
-
@metrics.gauge(..)
-
@metrics.summary(..)
-
@metrics.histogram(..)
ကောင်တာများက ခေါ်ဆိုမှုများကို ရေတွက်ကြပြီး အခြားသူများသည် ထိုခေါ်ဆိုမှု၏ကြာချိန်ပေါ်မူတည်၍ မက်ထရစ်များကို စုဆောင်းပါသည်။ တောင်းဆိုချက် သို့မဟုတ် တုံ့ပြန်မှုဂုဏ်သတ္တိများကို အသုံးပြု၍ ၎င်းတို့တစ်ခုစီအတွက် အညွှန်းများကို သင်သတ်မှတ်နိုင်သည်။ ဥပမာအားဖြင့်:
from flask import Flask, request
from prometheus_flask_exporter import PrometheusMetrics
app = Flask(__name__)
# group by endpoint rather than path
metrics = PrometheusMetrics(app, group_by='endpoint')
@app.route('/collection/:collection_id/item/:item_id')
@metrics.counter(
'cnt_collection', 'Number of invocations per collection', labels={
'collection': lambda: request.view_args['collection_id'],
'status': lambda resp: resp.status_code
})
def get_item_from_collection(collection_id, item_id):
pass
အထက်ဖော်ပြပါ ဥပမာတွင် အဆုံးမှတ်ကို နှိပ်ပါ။ /collection/10002/item/76 ဥပမာအားဖြင့် တန်ပြန်ကို တိုးစေသည်။ cnt_collection{collection = "10002", status = "200"}ထို့အပြင် သင်သည် ပုံသေဒစ်ဂျစ်တိုက်မှ (ဤဥပမာရှိ အဆုံးမှတ်တစ်ခုစီအတွက်) ပုံသေ မက်ထရစ်များကို ရရှိပါမည်-
-
flask_http_request_duration_seconds
- နည်းလမ်း၊ လမ်းကြောင်းနှင့် အခြေအနေအရ Flask တောင်းဆိုမှုအားလုံးအတွက် HTTP တောင်းဆိုမှုကြာချိန် -
flask_http_request_total
- နည်းလမ်းများနှင့် အခြေအနေများဖြင့် HTTP တောင်းဆိုမှု စုစုပေါင်းအရေအတွက်
သတ်မှတ်ထားသော အဆုံးမှတ်များကို ခြေရာခံခြင်းကို ကျော်ရန်၊ နောက်ထပ် ပုံသေမက်ထရစ်များကို မှတ်တမ်းသွင်းရန် သို့မဟုတ် အထက်ဖော်ပြပါတို့ကို ကျော်ရန် သို့မဟုတ် တူညီသော စိတ်ကြိုက်မက်ထရစ်ကို အဆုံးမှတ်များစွာတွင် အသုံးပြုရန် ရွေးချယ်စရာများရှိသည်။ ထွက်ခွာသည်
app = Flask(__name__)
metrics = PrometheusMetrics(app)
@app.route('/')
def main():
pass # requests tracked by default
@app.route('/skip')
@metrics.do_not_track()
def skip():
pass # default metrics are not collected
# custom metric to be applied to multiple endpoints
common_counter = metrics.counter(
'by_endpoint_counter', 'Request count by endpoints',
labels={'endpoint': lambda: request.endpoint}
)
@app.route('/common/one')
@common_counter
def endpoint_one():
pass # tracked by the custom and the default metrics
@app.route('/common/two')
@common_counter
def endpoint_two():
pass # also tracked by the custom and the default metrics
# register additional default metrics
metrics.register_default(
metrics.counter(
'by_path_counter', 'Request count by request paths',
labels={'path': lambda: request.path}
)
)
စာကြည့်တိုက်တွင် uWSGI နှင့် Gunicorn ကဲ့သို့သော နာမည်ကြီး multiprocessing စာကြည့်တိုက်များအတွက် အဆင်ပြေသော extension များရှိသည်။ Multiprocessing အပါအဝင် ပစ်မှတ်ထားသော အသုံးပြုမှုကိစ္စများအတွက် နမူနာအသေးစားများကိုလည်း သင်တွေ့နိုင်သည်။
မက်ထရစ်များစုစည်းမှု
အထက်တွင်ဖော်ပြခဲ့သည့်အတိုင်း၊ စာကြည့်တိုက်သည် မူရင်းအတိုင်း အဆုံးမှတ်တစ်ခုပေးသည်။ /မက်ထရစ်များ Flask အက်ပလီကေးရှင်းတစ်ခုတွင် ပစ်မှတ်တစ်ခုအဖြစ် ဆောင်ရွက်နိုင်သည်။
အထက်ဖော်ပြပါ ဒိုင်ခွက်နမူနာတွင်၊ သင်သည် ဤဖွဲ့စည်းမှုပုံစံဖြင့် ပုံသေဆက်တင်များနှင့်အတူ သင်၏ Prometheus ကို Flask အပလီကေးရှင်းတစ်ခုသို့ ပစ်မှတ်ထားနိုင်သည်-
scrape_configs:
- job_name: 'example'
dns_sd_configs:
- names: ['app']
port: 5000
type: A
refresh_interval: 5s
နမူနာအပြည့်အစုံကို မှာကြည့်ပါ။
မက်ထရစ်များ အဆုံးအမှတ်ကို ဤနည်းဖြင့် ဖော်ထုတ်ခြင်းသည် သင့်အတွက် မသင့်လျော်ပါက၊ ၎င်းကို ပြင်ပသို့ ဝင်ရောက်ခွင့် မပြုလိုသောကြောင့် ဖြစ်နိုင်သည်၊ ဖြတ်သန်းခြင်းဖြင့် ၎င်းကို အလွယ်တကူ ပိတ်နိုင်သည်။ လမ်းကြောင်း = မရှိပါ။ ဥပမာတစ်ခုဖန်တီးသောအခါ PrometheusMetrics.
from flask import Flask, request
from prometheus_flask_exporter import PrometheusMetrics
app = Flask(__name__)
metrics = PrometheusMetrics(app, path=None)
...
metrics.start_http_server(5099)
ထို့နောက်သင်အသုံးပြုနိုင်ပါသည်။ start_http_server(port)မတူညီသော HTTP port တွင် ဤအဆုံးမှတ်ကိုဖွင့်ရန်၊ 5099 အထက်ပါဥပမာတွင်။ တနည်းအားဖြင့် သင်သည် အဆုံးမှတ်သည် တူညီသော Flask အပလီကေးရှင်းတွင် ရှိနေသည့်အတွက် ပျော်ရွှင်သော်လည်း၊ သင်သည် ၎င်း၏လမ်းကြောင်းမှ ပြောင်းလဲရန် လိုအပ်ပါသည်။ /မက်ထရစ်များလမ်းကြောင်း ကန့်သတ်ချက်များအဖြစ် အခြား URI ကို သင်ဖြတ်သန်းနိုင်သည် သို့မဟုတ် အသုံးပြုနိုင်သည်။ register_endpoint(..)၎င်းကို နောက်ပိုင်းတွင် ထည့်သွင်းရန်။
ကိုးကား
-
rycus86/prometheus_flask_exporter - Prometheus အတွက် ဤပုလင်းတင်ပို့သူ -
prometheus-flask-exporter README - အသုံးပြုမှု၊ ဥပမာများနှင့် ဖွဲ့စည်းမှုရွေးချယ်စရာများ -
prometheus-flask-exporter ဥပမာများ — Flask အပလီကေးရှင်းစောင့်ကြည့်ခြင်းကို ပုံစံအမျိုးမျိုးဖြင့် သတ်မှတ်ခြင်း ဥပမာများ -
PyPI ရှိ prometheus-flask-exporter — ဤပရောဂျက်သည် PyPI တွင်ဖြစ်သည်။ -
prometheus/client_python - Python အတွက်တရားဝင် Prometheus ဖောက်သည်စာကြည့်တိုက်
စမ်းသုံးကြည့်ရန် ဆုံးဖြတ်ပါက GitHub တွင် ပြဿနာတစ်ခုဖွင့်ရန် သို့မဟုတ် သင့်မှတ်ချက်များ၊ အကြံပြုချက်များနှင့် အကြံပြုချက်များကို ချန်ထားခဲ့ပါ။
Thank you!
source: www.habr.com