本文将详细为您介绍腾讯云云服务器(CVM)如何从0开始接入 Prometheus 监控服务。
购买 Prometheus
说明:
购买的 Prometheus 实例需跟监控的云服务器同一个 vpc 下,能实现网络互通。
2. 在购买页中,选择合适的实例规格、网络。选择相同 vpc 网段,保证 Prometheus 能与需要采集的云服务器网段相同,才能采集到数据。实例规格,可根据自己的业务上报量进行选择。
3. 选择完后,单击立即购买并支付即可。
接入云服务器基础指标
1. 下载安装 node_exporter:
在需要上报的云服务器上,下载并安装 node_exporter(采集基础指标数据的 exporter),您可以单击进入 Prometheus 开源官网下载地址 node_exporter,也可以直接执行下列命令,下载解压: wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz && tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz
2. 运行 node_exporter 采集基础监控数据:
2.1 进入相关文件夹,执行 node_exporter。
cd node_exporter-1.3.1.linux-amd64
./node_exporter
2.2 可通过下列命令,将该基础监控数据暴露在9100 端口:
curl 127.0.0.1:9100/metrics
如下图为执行命令后看到的暴露出来的指标监控数据。
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
4. 查看数据是否上报成功:
登录 Prometheus 监控服务控制台,单击 Grafana 图标,进入 Grafana。
如下图所示,到 Explore 搜索下 {job="cvm_node_exporter"}
查看是否有数据,若有数据,则表示上报成功。
5. 配置 Dashboard 界面:Dashboard 界面每个产品都会有一些现成的 json 文件,可以直接导入。
5.1 下载 Dashboard 文件:登录 Dashboard 界面,单击搜索 node_exporter,选择最新的 Dashboard 并下载。
5.2 导入 Dashboard 的 json 文件:登录 Prometheus 监控服务控制台,进入基本信息 > Grafana 地址,单击进入 Grafana,在 Grafana 控制台 > Create > Import > 在 Upload JSON file 中上传 Dashboard 文件。
接入云服务器业务层指标
Prometheus 根据监控的不同场景提供了 Counter、Gauge、Historgram、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 中查看业务指标监控数据。
本页内容是否解决了您的问题?