Կոդերի մի քանի տող և ձեր հավելվածը ստեղծում է չափումներ, վայ:
Որպեսզի հասկանանք, թե ինչպես է աշխատում Պրոմեթևսըտափաշիշ_արտահանողին բավական է մինիմալ օրինակ.
from flask import Flask
from prometheus_flask_exporter import PrometheusMetrics
app = Flask(__name__)
metrics = PrometheusMetrics(app)
@app.route('/')
def main():
return 'OK'
Դա այն ամենն է, ինչ ձեզ հարկավոր է սկսելու համար: Նախաստորագրման համար ներմուծում և տող ավելացնելով PrometheusMetrics, դուք կստանաք չափումներ հարցման տևողությունը и հարցումների հաշվիչներ, ցուցադրվում է վերջնակետում /մետրիկա Flask հավելվածը, որով գրանցված է, ինչպես նաև բոլոր լռելյայն չափումները, որոնք դուք ստանում եք բազայից Պրոմեթևսի հաճախորդների գրադարան.
դու կարող ես գտնել հեշտ օգտագործման օրինակ GitHub պահոցում, որն աշխատում է օրինակը Պրոմեթեւս и Գրաֆանա Դեմո հավելվածի հետ մեկտեղ՝ չափումներ ստեղծելու համար, որոնք այսպիսի տեսք կունենան.
Դուք նաև կգտնեք ցուցիչների ցանկը առաջնային օրինակներ, որոնք հայտնվում են վահանակում, ինչպես նաև Պրոմեթևսի հարցումները, որոնք լրացնում են վահանակները:
հարմարեցում
Գրադարանում կան բազմաթիվ կազմաձևման տարբերակներ, նայեք առաջնային դրանց նախագծի օրինակները՝ հակիրճ բացատրությամբ:
Հիմնական կոնֆիգուրացիան ներկայացված է վերևում: Պարզապես ստեղծեք օրինակ 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
flask_http_request_duration_seconds — HTTP հարցման տևողությունը վայրկյաններով՝ Flask-ի բոլոր հարցումների համար՝ ըստ մեթոդի, ճանապարհի և կարգավիճակի
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-ը: Կարող եք նաև գտնել նպատակային օգտագործման դեպքերի փոքր օրինակներ, ներառյալ բազմամշակումը:
Չափումների հավաքածու
Ինչպես նշվեց վերևում, գրադարանը լռելյայն տրամադրում է վերջնական կետ /մետրիկա Flask հավելվածում, որը կարող է ծառայել որպես թիրախ Պրոմեթևս շինարար.
Վերևի վահանակի օրինակում կարող եք ձեր Prometheus-ը թիրախավորել Flask հավելվածին, որն ունի լռելյայն կարգավորումներ այս կազմաձևով.
Ամբողջական օրինակը տես այստեղ GitHub պահոցներ. Սա ենթադրում է, որ Պրոմեթևսը կարող է գտնել ձեր Flask հավելվածի օրինակները http://app:5000/metrics, որտեղ հավելվածի տիրույթի անունը կարող է փոխակերպվել մի քանի IP հասցեների, օրինակ՝ երբ աշխատում է Կուբերնետես կամ Docker ամբոխ.
Եթե չափումների վերջնակետի այս կերպ բացահայտումը ձեզ չի համապատասխանում, գուցե այն պատճառով, որ դուք չեք ցանկանում թույլ տալ արտաքին մուտք գործել դրան, կարող եք հեշտությամբ անջատել այն՝ անցնելով ճանապարհ=Ոչ օրինակ ստեղծելիս 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 միացքի վրա, 5099 վերը նշված օրինակում. Այլապես, եթե դուք գոհ եք, որ վերջնական կետը նույն Flask հավելվածում է, բայց դուք պետք է փոխեք դրա ուղին /մետրիկա, կարող եք կամ փոխանցել մեկ այլ URI որպես ուղու պարամետր, կամ օգտագործել register_endpoint (..)այն ավելի ուշ տեղադրելու համար: