කේත පේළි කිහිපයක් සහ ඔබේ යෙදුම ප්රමිතික ජනනය කරයි, වාව්!
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 යෙදුම මෙන්ම ඔබ පදනමෙන් ලබා ගන්නා සියලු පෙරනිමි මිනුම් දණ්ඩ
ඔබට සොයාගත හැකිය
ඔබට දර්ශක ලැයිස්තුවක් ද සොයාගත හැකිය
ගැලපුම්
පුස්තකාලයේ බොහෝ වින්යාස විකල්ප තිබේ, බලන්න
මූලික වින්යාසය ඉහත පෙන්වා ඇත. උදාහරණයක් පමණක් සාදන්න 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/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 වැනි ජනප්රිය බහු සැකසුම් පුස්තකාල සඳහා පහසු දිගු ඇත. බහු සැකසුම් ඇතුළු ඉලක්කගත භාවිත අවස්ථා පිළිබඳ කුඩා උදාහරණ ද ඔබට සොයා ගත හැක.
මිනුම් එකතුව
ඉහත සඳහන් කළ පරිදි, පුස්තකාලය පෙරනිමියෙන් අවසන් ලක්ෂ්යයක් සපයයි /මිතික සඳහා ඉලක්කයක් ලෙස සේවය කළ හැකි Flask යෙදුමක
ඉහත උපකරණ පුවරු උදාහරණයේදී, ඔබට මෙම වින්යාසය සමඟින් පෙරනිමි සැකසුම් සහිත Flask යෙදුමකට ඔබේ Prometheus ඉලක්ක කළ හැක:
scrape_configs:
- job_name: 'example'
dns_sd_configs:
- names: ['app']
port: 5000
type: A
refresh_interval: 5s
සම්පූර්ණ උදාහරණය බලන්න
ප්රමිතික අන්ත ලක්ෂ්යය මේ ආකාරයෙන් නිරාවරණය කිරීම ඔබට නොගැලපේ නම්, සමහරවිට ඔබට එයට බාහිර ප්රවේශයට ඉඩ දීමට අවශ්ය නැති නිසා, ඔබට එය පසුකර යාමෙන් පහසුවෙන් අක්රිය කළ හැක. path=කිසිවක් නැත උදාහරණයක් නිර්මාණය කරන විට 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(..)එය පසුව ස්ථාපනය කිරීමට.
යොමු
-
rycus86/prometheus_flask_exporter - Prometheus සඳහා මෙම බෝතල් අපනයනකරු -
prometheus-flask-exporter README - භාවිතය, උදාහරණ සහ වින්යාස විකල්ප -
prometheus-flask-exporter උදාහරණ — විවිධ ආකාරවලින් ෆ්ලැස්ක් යෙදුම් නිරීක්ෂණ පිහිටුවීමේ උදාහරණ -
PyPI මත prometheus-flask-exporter - මෙම ව්යාපෘතිය PyPI මත ඇත -
prometheus/client_python - Python සඳහා නිල Prometheus සේවාදායක පුස්තකාලය
ඔබ එය උත්සාහ කිරීමට තීරණය කරන්නේ නම්, GitHub හි ගැටලුවක් විවෘත කිරීමට හෝ ඔබේ අදහස්, ප්රතිපෝෂණ සහ යෝජනා තබන්න!
ස්තුතියි!
මූලාශ්රය: www.habr.com