前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus 自定义数据源

Prometheus 自定义数据源

原创
作者头像
谢正伟
修改2021-10-09 17:08:34
1.7K0
修改2021-10-09 17:08:34
举报
文章被收录于专栏:云原生研究云原生研究

prom 官方提供了很多数据源 exporter。包括:

  • blackbox_exporter
  • consul_exporter
  • graphite_exporter
  • haproxy_exporter
  • memcached_exporter
  • mysqld_exporter
  • node_exporter
  • statsd_exporter

前面的章节里,我们已经使用过官方的 node_exporter。

我们现在尝试使用第三方的 exporter。

腾讯云的 exporter

腾讯云的 exporter 地址在:https://github.com/tencentyun/tencentcloud-exporter

首先,需要拉下上述源代码并编译成可执行文件:

git clone https://github.com/tencentyun/tencentcloud-exporter
cd tencentcloud-exporter
go build cmd/qcloud-exporter/qcloud_exporter.go

编译完成,生成了一个文件:qcloud_exporter

现在需要编写一个 config 文件(config.yml):

credential:
  region: "ap-shanghai"
rate_limit: 15
products:
  - namespace: QCE/CVM
    all_metrics: true
    all_instances: true
    extra_labels: [InstanceId, InstanceName]

我将 access_key 和 secret_key 都放入了环境变量,所以上述配置文件中无需配置这两个参数:

export TENCENTCLOUD_SECRET_ID="YOUR_ACCESS_KEY"
export TENCENTCLOUD_SECRET_KEY="YOUR_ACCESS_SECRET"

现在只需要启动 exporter 即可:

./qcloud_exporter --config.file=./config.yml

启动完成后,可以在浏览器中看到 metrics 信息,地址是:http://0.0.0.0:9123/metrics

腾讯云的 exporter 使用的是 云 API 实现,如果在本地运行 exporter,会有明显的延时,实际使用中,建议部署在云上的同 region。

现在,将这个 exporter 配置到 prom 中,只需要在 config 文件的 scrape_configs 下新增一个 job 配置(prometheus.yml)。

global:
  scrape_interval: 15s
  external_labels:
    monitor: 'cvm-monitor'
scrape_configs:
  - job_name: 'qcloud_cvm'
    scrape_timeout: 20s
    scrape_interval: 30s
    static_configs:
      - targets:
        - host.docker.internal:9123

然后,启动 prom:

docker run --rm -p 9090:9090 \
    -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus

启动后查询“外网网卡每秒出流量” qce_cvm_wanouttraffic_max 试试。

编写业务监控指标

我们通过观察 metrics 的数据格式,可以看出他的格式是:名称{键="值",键="值"...} 数值

# TYPE qce_cvm_wanouttraffic_max gauge
qce_cvm_wanouttraffic_max{instance_id="ins-ireqmbad",instance_name="tke_cls-k383r70d_worker1"} 0.0.1

现在我们随意编写一个业务指标试试。

下面使用了 php 模拟了 2 个商品的价格波动,采用了随机数进行演示。

$router->get('/metrics', function () use ($router) {
    $v = '# TYPE price gauge';
    $v .= "\n";
    $v .= 'price{product="蓝色潜水艇"} '.rand(100,10000)/100;
    $v .= "\n";
    $v .= 'price{product="果壳中的宇宙"} '.rand(200,20000)/100;
    $v .= "\n";
    return (new Response($v, 200))
                  ->header('Content-Type', 'text/plain; version=0.0.4');
});

请注意,这里需要按照规范来写,包括头部的注释 # TYPE price gauge,规范请看这里:https://prometheus.io/docs/instrumenting/exposition_formats/

输出结果大概为:

# TYPE price gauge
price{product="蓝色潜水艇"} 59.71
price{product="果壳中的宇宙"} 121.69

我们把这个数据源发布到地址:http://0.0.0.0:8004/metrics

现在我们把他配置到 prom 中。

编写 config 文件(prometheus2.yml):

global:
  scrape_interval: 15s
  external_labels:
    monitor: 'prom-monitor'
scrape_configs:
  - job_name: 'book-price'
    scrape_timeout: 5s
    scrape_interval: 10s
    static_configs:
      - targets:
        - host.docker.internal:8004

用这个配置文件启动 prom:

docker run --rm -p 9090:9090 \
    -v $(pwd)/prometheus2.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus

在 prom 的UI 查询 price,会得到类似下面的折线图:

自定义业务指标监控
自定义业务指标监控

现在,我们可以对业务指标进行监控了。


系列文章:

第一篇:Prometheus 入门

第二篇:Prometheus 自定义数据源

第三篇:Prometheus 的美化 - Grafana

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 腾讯云的 exporter
  • 编写业务监控指标
相关产品与服务
前端性能监控
前端性能监控(Real User Monitoring,RUM)是一站式前端监控解决方案,专注于 Web、小程序等场景监控。前端性能监控聚焦用户页面性能(页面测速,接口测速,CDN 测速等)和质量(JS 错误,Ajax 错误等),并且联动腾讯云应用性能监控实现前后端一体化监控。用户只需要安装 SDK 到自己的项目中,通过简单配置化,即可实现对用户页面质量的全方位守护,真正做到低成本使用和无侵入监控。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档