Prometheus 监控服务 云服务器场景下自定义接入

这篇将详细介绍腾讯云云服务器(CVM)如何从零开始接入 Prometheus 监控服务。

相关产品
Prometheus 监控服务 产品页,含版本规格、价格与购买入口。

一、购买 Prometheus

注意:购买的 Prometheus 实例需跟监控的云服务器同一个 vpc 下,才能实现网络互通。

1. 登录 Prometheus 监控服务控制台,单击新建购买 Prometheus 实例 。 

2. 在购买页中,选择合适的实例规格、网络。选择相同 vpc 网段,保证 Prometheus 能与需要采集的云服务器网段相同,才能采集到数据。实例规格,可根据自己的业务上报量进行选择。

3. 选择完后,单击立即购买并支付即可。

注意:如需了解 Prometheus 更多定价规则,请参见 产品定价。

二、接入云服务器基础指标

1. 下载安装 node_exporter:
在需要上报数据的主机上,下载并安装 node_exporter,你可以点击进入 Prometheus 开源页面下载地址 node_exporter,也可以直接执行下列命令:

wget https://rig-1258344699.cos.ap-guangzhou.myqcloud.com/prometheus-agent/node_exporter -O node_exporter

目录为当前文件夹:

2. 运行 node_exporter 采集基础监控数据:

·赋予权限,执行 node_exporter 并查看日志。

chmod +x node_exporter && nohup ./node_exporter & cat nohup.out

如下所示即为执行成功:

·可通过下列命令,查看暴露在9100端口的监控数据:

curl 127.0.0.1:9100/metrics

如下为执行命令后看到的暴露出来的指标监控数据:

3. 新增抓取任务:
i. 登录 Prometheus 监控服务控制台,选择对应 Prometheus 实例进入管理页面。

ii. 进入数据采集 > 集成中心,在集成中心页面找到CVM 云服务器卡片并点击弹出集成页面,根据页面提示进行配置即可。

iii. 抓取任务参考配置 如下:

job_name: example-job-namemetrics_path: /metricscvm_sd_configs:- region: ap-guangzhou ports: – 9100 filters: – name: tag:示例标签键 values: – 示例标签值relabel_configs: – source_labels: [__meta_cvm_instance_state] regex: RUNNING action: keep- regex: __meta_cvm_tag_(.*) replacement: $1 action: labelmap- source_labels: [__meta_cvm_region] target_label: region action: replace

如需使用公网 IP 作为采集目标,需要在抓取任务中增加以下 relabel 规则:

– action: replace regex: ([^:]+):(.*);(.+) replacement: $3:$2 source_labels: – __address__ – __meta_cvm_public_ip target_label: __address__

4. 查看数据是否上报成功:

i. 登录 Prometheus 监控服务控制台,单击 Grafana 访问地址列的登录 Grafana。

ii. 如下所示,到 Explore 搜索下 {job="cvm_node_exporter"} 查看是否有数据,若有数据,则表示上报成功。

5. 配置 Dashboard 界面:Dashboard 界面每个产品都会有一些现成的 json 文件,可以直接导入。

i. 下载 Dashboard 文件:登录 Dashboard-Node Exporter Full 页面,选择最新的 Dashboard 并下载。

ii. 导入 Dashboard 的 json 文件:登录 Prometheus 监控服务控制台,进入基本信息 > Grafana 地址,单击进入 Grafana,在 Grafana 控制台 > Dashboards > Import > 在 Upload JSON file 中上传 Dashboard 文件。

配置完后的效果如下:

三、接入云服务器业务层指标

Prometheus 根据监控的不同场景提供了 Counter、Gauge、Histogram、Summary 四种指标类型。Prometheus 社区提供了多种开发语言的 SDK,每种语言的使用方法基本上类似,主要是开发语言语法上的区别,下面主要以 Go 作为例子,使用 Counter 指标类型如何上报自定义监控指标数据。其余指标类型请参见 自定义监控。

四、Counter

计数类型,数据是单调递增的指标,服务重启之后会重置。可以用 Counter 来监控请求数、异常数、用户登录数和订单数等。

1. 如何通过 Counter 来监控订单数:

package orderimport ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto")// 定义需要监控 Counter 类型对象var ( opsProcessed = promauto.NewCounterVec(prometheus.CounterOpts{ Name: "order_service_processed_orders_total", Help: "The total number of processed orders", }, []string{"status"}) // 处理状态)// 订单处理func makeOrder() { opsProcessed.WithLabelValues("success").Inc() // 成功状态 // opsProcessed.WithLabelValues("fail").Inc() // 失败状态 // 下单的业务逻辑}

例如,通过 rate() 函数获取订单的增长率:

rate(order_service_processed_orders_total[5m])

2. 暴露 Prometheus 指标:
通过 promhttp.Handler() 把监控埋点数据暴露到 HTTP 服务上。

package mainimport ( "net/http" "github.com/prometheus/client_golang/prometheus/promhttp")func main() { // 业务代码 // 把 Prometheus 指标暴露在 HTTP 服务上 http.Handle("/metrics", promhttp.Handler()) // 业务代码}

3. 采集数据:
完成相关业务自定义监控埋点之后,应用发布,即可通过 Prometheus 来抓取监控指标数据。采集完成后,等待数分钟,你可在 Prometheus 监控服务集成的 Grafana 中查看业务指标监控数据。


赞 (0)
上一篇 4天前
下一篇 4天前