Paari koodirida ja teie rakendus genereerib mÔÔdikud, vau!
Kuna on oluline mÔista, kuidas prometheus_flask_exporter töötab, piisab minimaalsest nÀitest:
from flask import Flask
from prometheus_flask_exporter import PrometheusMetrics
app = Flask(__name__)
metrics = PrometheusMetrics(app)
@app.route('\/')
def main():
return 'OK'See on kÔik, mis on vajalik alustamiseks! Lisa import ja rea algatamiseks PrometheusMetrics, saate mÔÔdikud pÀringute kestuse ja pÀringu loendurid, mis kuvatakse Flaski rakenduse lÔpp-punktis, kus ta on registreeritud, samuti kÔik vaike mÔÔdikud, mis tulevad baasist /metrics Prometheuse kliendi teek .
kasutajasÔbraliku nÀite koos demonstreeriva rakendusega, et genereerida mÔÔdikud, mis nÀevad vÀlja umbes nii: ja Leiate ka mÔÔdikute nimekirja

README Teegis on palju konfiguratsioonivÔimalusi, vaata
Seadistamine
projekti nĂ€iteid lĂŒhikese selgitusega. Baaskonfiguratsioon on esitatud ĂŒleval. Lihtsalt loo instants
, nimetame seda PrometheusMetricsmetrics , ja seejÀrel mÀÀrake lisamÔÔdikud, mida soovite koguda, funktsioone dekoreerides:@metrics.counter(..)
@metrics.gauge(..)@metrics.summary(..)@metrics.histogram(..)Loendurid loevad kutsed, samas kui ĂŒlejÀÀnud koguvad mÔÔdikud nende kutsumise kestuse alusel. VĂ”ite mÀÀrata silte igaĂŒhe jaoks, potentsiaalselt kasutades pĂ€ringu vĂ”i vastuse atribuute. NĂ€iteks:
from flask import Flask, request from prometheus_flask_exporter import PrometheusMetricsapp = Flask(__name__)# rĂŒhmitamine lĂ”pp-punkti, mitte tee jĂ€rgi metrics = PrometheusMetrics(app, group_by='endpoint')@app.route('\/collection\/collection_id\/item\/item_id') @metrics.counter( 'cnt_collection', 'Kutsede arv kogumise kaupa', labels={ 'collection': lambda: request.view_args['collection_id'], 'status': lambda resp: resp.status_code }) def get_item_from_collection(collection_id, item_id): pass
Ălaltoodud nĂ€ites lĂ”pp-punkti klikkiminetĂ”stab loendurit, nĂ€iteks /collection/10002/item/76 cnt_collection{collection = "10002", status = "200"} , pluss, saate vaikemÔÔdikud (iga lĂ”pp-punkti jaoks selles nĂ€ites) vaiketeegist:flask_http_request_duration_seconds
â HTTP pĂ€ringu kestus sekundites kĂ”ikide Flaski pĂ€ringute, meetodi, tee ja staatuse jĂ€rgi flask_http_request_totalâ KĂ”igi HTTP pĂ€ringute koguarv meetodite ja staatuste kaupa â Ăldine HTTP-pĂ€ringute arv meetodite ja staatuste kaupa
On olemas vĂ”imalusi teatud lĂ”pp-punktide jĂ€lgimise vahelejĂ€tmiseks, registreerida vaikimisi tĂ€iendavad mÔÔdikud vĂ”i vahele jĂ€tta ĂŒlaltoodud ning rakendada sama kohandatud mÔÔdikut mitmele lĂ”pp-punktile. Tutvuge projektiga, et nĂ€ha, mis on saadaval.
app = Flask(__name__)
metrics = PrometheusMetrics(app)
@app.route('â/')
def main():
pass # vaikimisi jÀlgitavad pÀringud
@app.route('â/skip')
@metrics.do_not_track()
def skip():
pass # vaikimisi mÔÔdikud ei koguta
# kohandatud mÔÔdik, mida rakendatakse mitmele lÔpp-punktile
common_counter = metrics.counter(
'by_endpoint_counter', 'PÀringute arv lÔpp-punktide kaupa',
labels={'endpoint': lambda: request.endpoint}
)
@app.route('â/common/one')
@common_counter
def endpoint_one():
pass # jÀlgitakse kohandatud ja vaikimisi mÔÔdikute jÀrgi
@app.route('â/common/two')
@common_counter
def endpoint_two():
pass # jÀlgitakse samuti kohandatud ja vaikimisi mÔÔdikute jÀrgi
# registreeri tÀiendavad vaikimisi mÔÔdikud
metrics.register_default(
metrics.counter(
'by_path_counter', 'PÀringute arv pÀringute teede kaupa',
labels={'path': lambda: request.path}
)
)Raamatukogus on mugavad laiendused populaarsete mitmeprotsessoriliste raamatukogude jaoks, nagu uWSGI ja Gunicorn. Samuti leiate vÀikseid nÀiteid sihtotstarbeliste kasutusvÔimaluste kohta, sealhulgas mitmeprotsessoriliste.
MÔÔdikute kogumine
Nagu eespool mainitud, pakub raamatukogu vaikimisi lÔpp-punkti /metrics Flaski rakenduses, mis vÔib teenida sihtmÀrgiks .
Eespool toodud juhtumi jaoks, kus armatuurlaud on, saate suunata oma Prometheuse Flaski rakendusele vaikeseadistuste jÀrgi sellise konfiguratsiooniga:
scrape_configs:
- job_name: 'example'
dns_sd_configs:
- names: ['app']
port: 5000
type: A
refresh_interval: 5sVaadake tÀielikku nÀidet . See eeldab, et Prometheus suudab leida teie Flaski rakenduse instantsid http://app:5000/metrics, kus rakenduse domeeninimi vÔib potentsiaalselt lahendada mitmele IP-aadressile, nÀiteks töötades vÔi .
Kui see mÔÔdikute lÔpp-punkt ei sobi teile, vÔib-olla seetÔttu, et te ei soovi sellele vÀlispÀÀsu lubada, saate selle hÔlpsasti keelata, edastades path=None instantsi loomisel 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)SeejÀrel saate kasutada start_http_server(port), et avada see lÔpp-punkt teisel HTTP-porti, 5099 nagu eespool nÀidatud. Alternatiivselt, kui te pole vastu, et lÔpp-punkt oleks samas Flaski rakenduses, kuid peate selle tee muutma /metrics, saate kas edastada teise URI teede parameetrina vÔi kasutada register_endpoint(..), et seada see hiljem.
Viidatud lingid
 â See on Prometheuse flaski eksportija
 â Kasutus, nĂ€ited ja konfigureerimise parameetrid
 â Flaski rakenduste jĂ€lgimise seadistamise nĂ€ited erinevates viisides
 â See projekt on PyPI-s
 â Prometheuse ametlik klientteek Pythonis
Kui otsustate proovida, siis Àrge kartke avada probleem GitHubis vÔi jÀtta oma kommentaare, tagasisidet ja ettepanekuid!
AitÀh!
Allikas: habr.com
