Хэд хэдэн мөр код, таны програм хэмжүүр үүсгэдэг, хөөе!
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 програм, мөн үндсэн дээрээсээ авдаг бүх стандарт хэмжүүрүүд .
чи олж чадна жишээг ажиллуулдаг GitHub репозитор и Демо програмын хамт дараах байдлаар харагдах хэмжигдэхүүнүүдийг үүсгэх болно:

Та мөн үзүүлэлтүүдийн жагсаалтыг эндээс олох болно хяналтын самбарт харагдах жишээнүүдийн хамт хяналтын самбарыг дүүргэдэг Prometheus асуулга.
тохируулга
Номын санд олон тохиргооны сонголтууд байдаг, хараарай тэдгээрийн төслийн жишээг товч тайлбартайгаар.
Үндсэн тохиргоог дээр харуулав. Зүгээр л жишээ үүсгэ 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Дээрх жишээнд төгсгөлийн цэг дээр дарна уу /цуглуулга/10002/зүйл/76 жишээ нь тоолуурыг нэмэгдүүлэхэд хүргэдэг cnt_collection{цуглуулга = "10002", статус = "200"}, мөн та өгөгдмөл сангаас өгөгдмөл хэмжигдэхүүнүүдийг (энэ жишээний төгсгөлийн цэг бүрийн хувьд) авах болно:
flask_http_request_duration_seconds— Арга, зам, статусаар бүх колбонд зориулсан 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 зэрэг алдартай олон процессортой номын сангуудад тохиромжтой өргөтгөлүүдтэй. Та мөн олон боловсруулалт зэрэг зорилтот хэрэглээний жижиг жишээнүүдийг олж болно.
Хэмжилтийн цуглуулга
Дээр дурдсанчлан номын сан нь анхдагчаар төгсгөлийн цэгийг өгдөг / хэмжигдэхүүн Зорилтот болгон ашиглаж болох Flask програм дээр .
Дээрх хяналтын самбарын жишээн дээр та өөрийн Prometheus-г энэ тохиргоотой өгөгдмөл тохиргоотой Flask програм руу чиглүүлэх боломжтой.
scrape_configs:
- job_name: 'example'
dns_sd_configs:
- names: ['app']
port: 5000
type: A
refresh_interval: 5sБүрэн жишээг эндээс үзнэ үү . Энэ нь Prometheus нь таны Flask програмын жишээнүүдийг олох боломжтой гэж үздэг http://app:5000/metrics, програмын домэйн нэр нь олон IP хаягтай, жишээлбэл нэвтэрч байх үед шийдэгдэх боломжтой буюу .
Хэрэв та хөндлөнгийн хандалтыг зөвшөөрөхийг хүсэхгүй байгаа учраас хэмжүүрийн төгсгөлийн цэгийг ийм байдлаар харуулах нь танд тохирохгүй бол та үүнийг дамжуулж хялбархан идэвхгүй болгож болно. зам=Үгүй жишээ үүсгэх үед 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(порт)Энэ төгсгөлийн цэгийг өөр HTTP порт дээр нээхийн тулд, 5099 дээрх жишээнд. Эсвэл, хэрэв та төгсгөлийн цэг нь ижил колбонд байгаадаа сэтгэл хангалуун байгаа ч түүний замыг өөрчлөх хэрэгтэй. / хэмжигдэхүүн, та өөр URI-г замын параметр болгон дамжуулах эсвэл ашиглаж болно бүртгэлийн_төгсгөл(..)дараа суулгахын тулд.
лавлагаа
- Прометейд зориулсан энэ шил экспортлогч
— Хэрэглээ, жишээ, тохиргооны сонголтууд
— Колбоны хэрэглээний хяналтыг янз бүрийн аргаар тохируулах жишээ
- Энэ төсөл PyPI дээр байна
— Python-д зориулсан албан ёсны Prometheus үйлчлүүлэгч номын сан
Хэрэв та үүнийг туршиж үзэхээр шийдсэн бол GitHub дээр асуудал нээх эсвэл өөрийн санал хүсэлт, санал хүсэлт, санал хүсэлтээ үлдээгээрэй!
Баярлалаа!
Эх сурвалж: www.habr.com
