promethues 服务中记录数据
promethues 支持的数据类型
-
counter:一个计数器是代表一个累积指标单调递增计数器,它的值只能增加或在重新启动时重置为零。
-
GauGge:表示单个数值,可以任意地上升和下降的度量。常用于测量值,如温度或当前内存使用情况,但也可用于可以上下的“计数”,例如并发请求的数量。
-
Summary:摘要采样观察(通常是请求持续时间和响应大小等)
-
Histogram:跟踪存储桶中事件的大小和数量。这允许分位数的可聚合计算。
-
下面是python prometheus_client库 示例
counter
- 一直累加的计数器,不可以减少,只有服务重启才能清零
- 前面两个参数必填,第一个是名字,第二个是描述,第三个是标签(选填)
- 只有inc()方法,默认加1
GauGge
- 参数与counter类型一致
- 有三个方法
- inc() #默认+1
- dec() #默认-1
- set() #设置具体数值(float)
demo
import random
from prometheus_client import Counter,Gauge,start_http_server
from flask import Flask,request
from wsgiref.simple_server import make_server
app = Flask(__name__)
# 使用Counter类型数据,只能递增,不能递减,只能重启服务的时候清零,第一个参数是名称,第二个参数是说明,第三个参数是标签名称
c = Counter('Counter_test','this is test server',('url','name'))
http_request_total = Counter('http_request_total','request request total of the host',['url'])
# 使用Gauge类型数据,可变大变小,第一个参数是名称,第二个参数是说明,第三个参数是标签名称
http_request_speed = Gauge('http_request_speed','request request speed',['url'])
@app.route('/')
def index():
# 标签需要写上去,每次加1
c.labels('127.0.0.1','activt').inc()
# 每次加10
http_request_total.labels('127.0.0.1').inc(10)
num = random.random()
# 每次的数据是可大可小的num
http_request_speed.labels(request.base_url).set(num)
return 'render_template("index.html")'
if __name__ == "__main__":
# 开启promethues web服务,等待promethues服务器过来抓取数据
start_http_server(8032)
# 开启web服务,接受请求,统计数据
httpd = make_server('0.0.0.0', 8012, app )
httpd.serve_forever()
# 返回的结果
# Counter_test_total{name="activt",url="127.0.0.1"} 6.0 ------这是统计Counter数据
# http_request_total{url="127.0.0.1"} 60.0 -----这是统计Counter数据
# http_request_speed{url="http://127.0.0.1:8012/"} 0.6473488224134477 ---Gauge数据