91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Python怎么對Prometheus進行監控

發布時間:2021-03-26 15:42:31 來源:億速云 閱讀:585 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關使用Python怎么對Prometheus進行監控,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

使用Python和Flask編寫Prometheus監控

Installation

pip install flask
pip install prometheus_client

Metrics

Prometheus提供4種類型Metrics:Counter, Gauge, SummaryHistogram

Counter

Counter可以增長,并且在程序重啟的時候會被重設為0,常被用于任務個數,總處理時間,錯誤個數等只增不減的指標。

import prometheus_client
from prometheus_client import Counter
from prometheus_client.core import CollectorRegistry
from flask import Response, Flask
app = Flask(__name__)
requests_total = Counter("request_count", "Total request cout of the host")
@app.route("/metrics")
def requests_count():
  requests_total.inc()
  # requests_total.inc(2)
  return Response(prometheus_client.generate_latest(requests_total),
          mimetype="text/plain")
@app.route('/')
def index():
  requests_total.inc()
  return "Hello World"
if __name__ == "__main__":
  app.run(host="0.0.0.0")

運行該腳本,訪問youhost:5000/metrics

# HELP request_count Total request cout of the host
# TYPE request_count counter
request_count 3.0

Gauge

Gauge與Counter類似,唯一不同的是Gauge數值可以減少,常被用于溫度、利用率等指標。

import random
import prometheus_client
from prometheus_client import Gauge
from flask import Response, Flask
app = Flask(__name__)
random_value = Gauge("random_value", "Random value of the request")
@app.route("/metrics")
def r_value():
  random_value.set(random.randint(0, 10))
  return Response(prometheus_client.generate_latest(random_value),
          mimetype="text/plain")
if __name__ == "__main__":
  app.run(host="0.0.0.0")

運行該腳本,訪問youhost:5000/metrics

# HELP random_value Random value of the request
# TYPE random_value gauge
random_value 3.0

Summary/Histogram

Summary/Histogram概念比較復雜,一般exporter很難用到,暫且不說。

LABELS

使用labels來區分metric的特征

from prometheus_client import Counter
c = Counter('requests_total', 'HTTP requests total', ['method', 'clientip'])
c.labels('get', '127.0.0.1').inc()
c.labels('post', '192.168.0.1').inc(3)
c.labels(method="get", clientip="192.168.0.1").inc()

使用Python和asyncio編寫Prometheus監控

from prometheus_client import Counter, Gauge
from prometheus_client.core import CollectorRegistry
REGISTRY = CollectorRegistry(auto_describe=False)
requests_total = Counter("request_count", "Total request cout of the host", registry=REGISTRY)
random_value = Gauge("random_value", "Random value of the request", registry=REGISTRY)
import prometheus_client
from prometheus_client import Counter,Gauge
from prometheus_client.core import CollectorRegistry
from aiohttp import web
import aiohttp
import asyncio
import uvloop
import random,logging,time,datetime
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
routes = web.RouteTableDef()
# metrics包含
requests_total = Counter("request_count", "Total request cout of the host") # 數值只增
random_value = Gauge("random_value", "Random value of the request") # 數值可大可小
@routes.get('/metrics')
async def metrics(request):
  requests_total.inc()   # 計數器自增
  # requests_total.inc(2)
  data = prometheus_client.generate_latest(requests_total)
  return web.Response(body = data,content_type="text/plain")  # 將計數器的值返回
@routes.get("/metrics2")
async def metrics2(request):
  random_value.set(random.randint(0, 10))  # 設置值任意值,但是一定要為 整數或者浮點數
  return web.Response(body = prometheus_client.generate_latest(random_value),content_type="text/plain")  # 將值返回
@routes.get('/')
async def hello(request):
  return web.Response(text="Hello, world")
# 使用labels來區分metric的特征
c = Counter('requests_total', 'HTTP requests total', ['method', 'clientip']) # 添加lable的key,
c.labels('get', '127.0.0.1').inc()    #為不同的label進行統計
c.labels('post', '192.168.0.1').inc(3)   #為不同的label進行統計
c.labels(method="get", clientip="192.168.0.1").inc()  #為不同的label進行統計
g = Gauge('my_inprogress_requests', 'Description of gauge',['mylabelname'])
g.labels(mylabelname='str').set(3.6)  #value自己定義,但是一定要為 整數或者浮點數
if __name__ == '__main__':
  logging.info('server start:%s'% datetime.datetime.now())
  app = web.Application(client_max_size=int(2)*1024**2)  # 創建app,設置最大接收圖片大小為2M
  app.add_routes(routes)   # 添加路由映射
  web.run_app(app,host='0.0.0.0',port=2222)  # 啟動app
  logging.info('server close:%s'% datetime.datetime.now())

關于使用Python怎么對Prometheus進行監控就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宕昌县| 静乐县| 新密市| 龙泉市| 余庆县| 湘潭县| 淮阳县| 南靖县| 三河市| 津南区| 洪湖市| 潼关县| 大安市| 观塘区| 东阿县| 阿克苏市| 紫金县| 台东市| 沈丘县| 阆中市| 杨浦区| 桑植县| 汉寿县| 敦煌市| 双柏县| 襄城县| 新野县| 军事| 迭部县| 沙洋县| 镶黄旗| 中超| 福建省| 东乌珠穆沁旗| 青冈县| 延川县| 阜阳市| SHOW| 虞城县| 蓝田县| 隆回县|