A’ cumail sùil air Microservices Flask le Prometheus

Sreath no dhà de chòd agus bidh an tagradh agad a ’gineadh metrics, wow!

Gus tuigse fhaighinn air mar a tha prometheus_ ag obairflasg_às-mhalairt tha eisimpleir glè bheag gu leòr:

from flask import Flask
from prometheus_flask_exporter import PrometheusMetrics

app = Flask(__name__)
metrics = PrometheusMetrics(app)

@app.route('/')
def main():
    return 'OK'

Sin a h-uile rud a dh 'fheumas tu airson tòiseachadh! Le bhith a’ cur a-steach in-mhalairt agus loidhne airson tòiseachadh Prometheus Metrics, gheibh thu metrics fad an iarrtais и luchd-cunntais iarraidh, air a thaisbeanadh aig a’ cheann-uidhe / meatrach an tagradh Flask leis a bheil e clàraichte, a bharrachd air a h-uile meatrach bunaiteach a gheibh thu bhon bhunait Prometheus leabharlann luchd-cleachdaidh a.

gheibh thu eisimpleir furasta a chleachdadh ann an stòr GitHub a bhios a’ ruith an eisimpleir Prometheus и grafana còmhla ri tagradh demo gus meatrach a ghineadh a choimheadas rudeigin mar seo:

A’ cumail sùil air Microservices Flask le Prometheus

Gheibh thu cuideachd liosta de chomharran ann an LEASACHADH eisimpleirean a tha a’ nochdadh anns an deas-bhòrd, còmhla ri ceistean Prometheus a bhios a’ nochdadh nan deas-bhòrd.

adjustment

Tha mòran roghainnean rèiteachaidh anns an leabharlann, thoir sùil air LEASACHADH eisimpleirean pròiseict dhiubh le mìneachadh goirid.

Tha an rèiteachadh bunaiteach air a shealltainn gu h-àrd. Dìreach cruthaich eisimpleir Prometheus Metrics, canamaid e meatailt, agus an uairsin cleachd e gus na meatrach a bharrachd a tha thu airson a chruinneachadh a mhìneachadh le bhith a’ sgeadachadh nan gnìomhan:

  • @metrics.counter(..)

  • @metrics.gauge(..)

  • @metrics.summary(..)

  • @metrics.histogram(..)

Bidh cunntairean a’ cunntadh fiosan, agus bidh cuid eile a’ cruinneachadh mheatairean stèidhichte air fad nan gairmean sin. Faodaidh tu bileagan a mhìneachadh airson gach aon dhiubh sin, is dòcha a’ cleachdadh feartan iarrtas no freagairt. Mar eisimpleir:

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

Anns an eisimpleir gu h-àrd, cliog air a’ phuing crìochnachaidh /cruinneachadh/10002/nì/76 a bheir air a’ chunntair àrdachadh, mar eisimpleir cnt_collection{collection = "10002", status = "200"}, a bharrachd air sin gheibh thu na meatrach bunaiteach (airson gach puing crìochnachaidh san eisimpleir seo) bhon leabharlann bunaiteach:

  • flask_http_request_duration_seconds - Ùine iarrtas HTTP ann an diogan airson a h-uile iarrtas Flask a rèir modh, slighe agus inbhe

  • flask_http_request_total - An àireamh iomlan de dh’ iarrtasan HTTP a rèir modhan agus inbhean

Tha roghainnean ann airson stad a chuir air puingean crìochnachaidh sònraichte, logadh a-steach slatan-tomhais bunaiteach a bharrachd no leum air an fheadhainn a tha air an liostadh gu h-àrd, no cuir an aon mheatrach àbhaisteach an sàs ann an grunn phuingean crìochnachaidh. Dèan sgrùdadh air LEASACHADH pròiseact gus faicinn dè tha ri fhaighinn.

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}
    )
)

Tha leudachadh goireasach aig an leabharlann airson leabharlannan ioma-ghiollachd mòr-chòrdte leithid uWSGI agus Gunicorn. Gheibh thu cuideachd eisimpleirean beaga de chùisean cleachdaidh cuimsichte, a’ toirt a-steach ioma-phròiseasadh.

Cruinneachadh de mheatailt

Mar a chaidh a ràdh gu h-àrd, tha an leabharlann a’ toirt seachad puing crìochnachaidh gu bunaiteach / meatrach ann an tagradh Flask, a dh'fhaodas a bhith na thargaid airson Neach-togail Prometheus.

Anns an eisimpleir deas-bhòrd gu h-àrd, dh’ fhaodadh tu do Prometheus a chuimseachadh gu tagradh Flask le roghainnean bunaiteach leis an rèiteachadh seo:

scrape_configs:
  - job_name: 'example'

    dns_sd_configs:
      - names: ['app']
        port: 5000
        type: A
        refresh_interval: 5s

Faic an làn eisimpleir aig Stòran GitHub. Tha seo a’ gabhail ris gun urrainn dha Prometheus na h-eisimpleirean tagraidh Flask agad a lorg air http://app:5000/metrics, far am faodadh ainm àrainn an tagraidh fuasgladh fhaighinn air grunn sheòlaidhean IP, mar eisimpleir nuair a bhios tu a’ ruith a-steach Kubernetes no Swarm Docker.

Mura h-eil a bhith a’ nochdadh a’ phuing crìochnachaidh meatrach san dòigh seo a’ freagairt ort, is dòcha leis nach eil thu airson faighinn a-steach don taobh a-muigh, faodaidh tu a chuir dheth gu furasta le bhith a’ dol seachad air. slighe=Chan eil gin nuair a chruthaicheas tu eisimpleir Prometheus Metrics.

from flask import Flask, request
from prometheus_flask_exporter import PrometheusMetrics

app = Flask(__name__)
metrics = PrometheusMetrics(app, path=None)

...

metrics.start_http_server(5099)

An uairsin faodaidh tu a chleachdadh start_http_server(port)gus am puing crìochnachaidh seo fhosgladh air port HTTP eile, 5099 anns an eisimpleir gu h-àrd. Air an làimh eile, ma tha thu toilichte leis a’ phuing crìochnachaidh a bhith san aon iarrtas Flask, ach feumaidh tu a shlighe atharrachadh / meatrach, faodaidh tu an dàrna cuid a dhol seachad air URI eile mar am paramadair slighe, no a chleachdadh clàr_crìochnachaidh(..)gus a stàladh nas fhaide air adhart.

iomraidhean

Ma cho-dhùnas tu feuchainn air, faodaidh tu cùis fhosgladh air GitHub no fàg do bheachdan, fios air ais agus molaidhean!

Tapadh leibh!

Source: www.habr.com

Cuir beachd ann