የፍላስክ ማይክሮ አገልግሎቶችን ከፕሮሜቲየስ ጋር መከታተል

ሁለት የኮድ መስመሮች እና መተግበሪያዎ መለኪያዎችን ያመነጫሉ፣ ዋው!

ፕሮሜቲየስ እንዴት እንደሚሰራ ለመረዳት_ብልቃጥ_ላኪ አነስተኛ ምሳሌ በቂ ነው፡-

from flask import Flask
from prometheus_flask_exporter import PrometheusMetrics

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

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

ለመጀመር የሚያስፈልግህ ያ ብቻ ነው! ማስመጣት እና ለመጀመር መስመር በማከል ፕሮሜቲየስ ሜትሪክስ, መለኪያዎች ያገኛሉ የጥያቄ ቆይታ и የጥያቄ ቆጣሪዎችበመጨረሻው ነጥብ ላይ ይታያል / መለኪያዎች የተመዘገበበት የፍላስክ መተግበሪያ እና ከመሠረቱ የሚያገኟቸው ማናቸውም ነባሪ መለኪያዎች Prometheus ደንበኛ ቤተ-መጽሐፍት.

ማግኘት ይችላሉ ምሳሌ ለመጠቀም ቀላል ምሳሌውን በሚያስጀምር የ GitHub ማከማቻ ውስጥ ፕሮሚትየስ и ግራፋና ይህን የሚመስሉ መለኪያዎችን ለማመንጨት ከማሳያ መተግበሪያ ጋር፡-

የፍላስክ ማይክሮ አገልግሎቶችን ከፕሮሜቲየስ ጋር መከታተል

እንዲሁም በ ውስጥ ጠቋሚዎች ዝርዝር ያገኛሉ README በዳሽቦርዱ ውስጥ የሚታዩ ምሳሌዎች፣ ዳሽቦርዶቹን ከሚሞሉ የፕሮሜቲየስ መጠይቆች ጋር።

በደንብ ማድረግ

ቤተ መፃህፍቱ ብዙ የማዋቀር አማራጮች አሉት፣ ይመልከቱት። README ምሳሌዎቻቸውን በአጭር ማብራሪያ ያቅርቡ።

መሰረታዊ ውቅር ከላይ ይታያል. አፋጣኝ ብቻ ፕሮሜቲየስ ሜትሪክስ, እንጥራው ሜትሪክስ, እና ከዚያ ተግባራትን በማስጌጥ ለመሰብሰብ የሚፈልጓቸውን ተጨማሪ መለኪያዎችን ለመግለጽ ይጠቀሙበት፡

  • @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 - ለሁሉም የፍላስክ ጥያቄዎች በዘዴ፣ መንገድ እና ሁኔታ በሰከንዶች ውስጥ የኤችቲቲፒ ጥያቄ ቆይታ

  • flask_http_request_total - አጠቃላይ የኤችቲቲፒ ጥያቄዎች ዘዴዎች እና ሁኔታዎች

የተወሰኑ የመጨረሻ ነጥቦችን መከታተልን ለመዝለል፣ ተጨማሪ ነባሪ መለኪያዎችን ለመመዝገብ ወይም ከላይ ያሉትን ለመዝለል ወይም ተመሳሳይ ብጁ መለኪያን በበርካታ የመጨረሻ ነጥቦች ላይ ለመተግበር አማራጮች አሉ። ጨርሰህ ውጣ README ያለውን ለማየት ፕሮጀክት።

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 ላሉ ታዋቂ ባለብዙ ፕሮሰሰር ቤተ-መጻሕፍት ምቹ ቅጥያዎች አሉት። እንዲሁም ባለብዙ ሂደትን ጨምሮ የታለመ አጠቃቀም ጉዳዮችን ትናንሽ ምሳሌዎችን ማግኘት ይችላሉ።

የመለኪያዎች ስብስብ

ከላይ እንደተጠቀሰው, ነባሪው ቤተ-መጽሐፍት የመጨረሻ ነጥብ ያቀርባል / መለኪያዎች ለ ዒላማ ሆኖ ሊያገለግል በሚችል የፍላሽ መተግበሪያ ውስጥ ሰብሳቢ ፕሮሜቲየስ.

ከላይ ባለው ዳሽቦርድ ምሳሌ ላይ እንደዚህ ባሉ ነባሪ ቅንብሮች የእርስዎን Prometheus ወደ Flask መተግበሪያ ማነጣጠር ይችላሉ፡

scrape_configs:
  - job_name: 'example'

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

ሙሉውን ምሳሌ በ ላይ ይመልከቱ GitHub ማከማቻዎች. ይህ Prometheus የእርስዎን Flask መተግበሪያ ምሳሌዎችን በ ላይ ሊያገኛቸው እንደሚችል ያስባል http://app:5000/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)

ከዚያ መጠቀም ይችላሉ start_http_server(ወደብ)ይህንን የመጨረሻ ነጥብ በሌላ የኤችቲቲፒ ወደብ ለመክፈት ፣ 5099 ከላይ ባለው ምሳሌ. በአማራጭ፣ የመጨረሻው ነጥብ በተመሳሳይ የፍላስክ መተግበሪያ ውስጥ በመገኘቱ ደስተኛ ከሆኑ፣ ግን መንገዱን ከ መቀየር አለብዎት / መለኪያዎች, ወይ የተለየ URI እንደ የመንገድ መለኪያ ማለፍ ወይም መጠቀም ይችላሉ የመመዝገቢያ_መጨረሻ ነጥብ (...)በኋላ ላይ ለመጫን.

ማጣቀሻዎች

ለመሞከር ከወሰኑ በ GitHub ላይ ችግር ለመክፈት ነፃነት ይሰማዎ ወይም አስተያየቶችዎን ፣ አስተያየቶችዎን እና አስተያየቶችዎን ይተዉ!

እናመሰግናለን!

ምንጭ: hab.com

አስተያየት ያክሉ