前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据采集export使用prometheus_client 和 Flask实现

数据采集export使用prometheus_client 和 Flask实现

原创
作者头像
master_lu
修改2022-04-09 18:29:15
1.3K0
修改2022-04-09 18:29:15
举报
文章被收录于专栏:prometheusprometheus

一、export

1、安装库

代码语言:shell
复制
pip install prometheus_client  flask

2、demo.py

代码语言:python
复制
from atexit import register
import mimetypes
from prometheus_client.core import CollectorRegistry
from prometheus_client import Gauge,Counter,Info,Enum,generate_latest,start_http_server

from flask import Response, Flask


#获取源数据,数据源可以是任意接口、数据库、文件等
def  get_qcloud_data():
      data = {
        'cvm': 1,
        'cbs': 2,
        'clb': 3
      }
      return data
    
#设置metrics
#Prometheus提供4种类型Metrics:Counter, Gauge, Summary和Histogram
#Counter 累加器,只有inc方法,定义方法指标名,描述,默认增长值是1
#Gauge 可任意设置,比如cpu、内存、磁盘等指标,定义方法,指标名,描述,标签
#Histogram 分桶统计,对每个桶的数据进行统计
#Summary 分位统计,对每个值进行统计

registry = CollectorRegistry(auto_describe=False)
product_cvm = Gauge('product_cvm', 'product_usage_cvm', ['product'], registry=registry)
product_cbs = Gauge('product_cbs', 'product_usage_cbs', ['product'], registry=registry)
product_clb = Gauge('product_clb', 'product_usage_clb', ['product'], registry=registry)



app = Flask(__name__)


@app.route("/metrics")
def main():
  data = get_qcloud_data()
  for key, value in data.items():
    if key == 'cvm':
      product_cvm.labels(product=key).set(value)
    elif key == 'cbs':
      product_cbs.labels(product=key).set(value)
    elif key == 'clb':
      product_clb.labels(product=key).set(value)
  return Response(generate_latest(registry), mimetype="text/plain")
      

@app.route('/')
def index():
  return "welecome to qcloud export"

if __name__ == "__main__":
  app.run(host="0.0.0.0", port=8000)

3、观察采集到的数据

image.png
image.png

二、prometheus

1、安装prometheus,prometheus.yml文件先拿出来再映射

代码语言:shell
复制
docker run -d -p 9090:9090 --name prometheus --restart=always -v /etc/localtime:/etc/localtime -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml -v $(pwd)/data:/prometheus/  /prom/prometheus

2、编辑prometheus.yml

添加刚写的export地址,prometheus是请求式获取数据,默认配置15s

代码语言:yaml
复制
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
      - targets: ["192.168.1.200:8000"]

3、

image.png
image.png
image.png
image.png

三、grafana

image.png
image.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、export
  • 二、prometheus
  • 三、grafana
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com