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

最近更新时间:2024-10-17 22:07:32

我的收藏
本文将详细为您介绍腾讯云云服务器(CVM)如何从零开始接入 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-name
metrics_path: /metrics
cvm_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 order

import (
"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 main

import (
"net/http"

"github.com/prometheus/client_golang/prometheus/promhttp"
)

func main() {
// 业务代码

// 把 Prometheus 指标暴露在 HTTP 服务上
http.Handle("/metrics", promhttp.Handler())

// 业务代码
}

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