采用普罗米修斯(Prometheus )监控各个指标的含义,类型,以及格式

1. Prometheus 监控指标的类型

普罗米修斯主要有四种类型的监控指标:

  1. Counter类型的指标:其工作方式和计数器一样,只增不减(除非系统发生重置)。常见的监控指标,如机器的启动时间(node_cpu),HTTP访问量(http_requests_total)等。可以通过PromQL语句对这些指标进行分析,如:
    查询当前系统中,访问量前10的HTTP地址:
topk(10, http_requests_total)
  1. Gauge即仪表类型的指标,侧重于反应系统的当前状态,样本数据可增可减。如CPU使用率(node_memory_MemFree,主机当前空闲的内容大小),内存使用率(node_memory_MemAvailable,可用内存大小),集群节点个数,大部分监控数据都是这种类型的。
    如可通过PromQL内置函数delta()可以获取样本在一段时间返回内的变化情况。例如,计算CPU温度在两个小时内的差异:
delta(cpu_temp_celsius{host="zeus"}[2h])
  1. Histogram:也就是直方图类型的metric, 能够分组分区间显示指标的信息。例如,统计延迟在0 ~ 10ms之间的请求数有多少而10~20ms之间的请求数就可采用这种方式。注意他与summary的区别。
  2. summary:好像不是很好翻译,个人认为是表示分位数(quantile)的信息。分位数0.5表示前50%的数据是什么水平,现实生活中的例子比如班上所有学生身高的中位数,同样的分位数0.9表示前90%身高的划分位置。
    这个可以参考官方文档上的例子:

HELP prometheus_tsdb_wal_fsync_duration_seconds Duration of WAL fsync.
TYPE prometheus_tsdb_wal_fsync_duration_seconds summary
prometheus_tsdb_wal_fsync_duration_seconds{quantile=“0.5”} 0.012352463
prometheus_tsdb_wal_fsync_duration_seconds{quantile=“0.9”} 0.014458005
prometheus_tsdb_wal_fsync_duration_seconds{quantile=“0.99”} 0.017316173
prometheus_tsdb_wal_fsync_duration_seconds_sum 2.888716127000002
prometheus_tsdb_wal_fsync_duration_seconds_count 216
从上面的样本中可以得知当前Prometheus Server进行wal_fsync操作的总次数为216次,耗时2.888716127000002s。其中中位数(quantile=0.5)的耗时为0.012352463,9分位数(quantile=0.9)的耗时为0.014458005s。

2. Prometheus 监控指标的格式

2. 1 时间序列

这就涉及到Prometheus存储数据的方式是时间序列的,所谓的时间序列其实就是关于指标的集合,只不过这些指标是按照时间顺序排列的。

每条time-series通过指标名称(metrics name)和一组标签集(labelset)命名。如下所示,可以将time-series理解为一个以时间为Y轴的数字矩阵:
^
│ . . . . . . . . . . . . . . . . . . . node_cpu{cpu=“cpu0”,mode=“idle”}
│ . . . . . . . . . . . . . . . . . . . node_cpu{cpu=“cpu0”,mode=“system”}
│ . . . . . . . . . . . . . . . . . . node_load1{}
│ . . . . . . . . . . . . . . . . . .
v
<------------------ 时间 ---------------->

在time-series中的每一个点称为一个样本(sample),样本由以下三部分组成:
指标(metric):metric name和描述当前样本特征的labelsets;
时间戳(timestamp):一个精确到毫秒的时间戳;
样本值(value): 一个float64的浮点型数据表示当前样本的值。
如:http_request_total{status=“200”, method=“GET”}@1434417561287 => 94334

2.2 metric格式

每一条metric的格式是:

< metric name>{< label name>=< label value>, ...}

其中以__作为前缀的标签,是系统保留的关键字,只能在系统内部使用。
注意: 实际获取的信息可能不仅仅包含metric,还有一些注释,他们都以#开头,其中HELP用于解释当前指标的含义,TYPE则说明当前指标的数据类型。

如下面这条信息,就包含了两条metric。

# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="idle"} 362812.7890625
# HELP node_load1 1m load average.
# TYPE node_load1 gauge
node_load1 3.0703125

参考资料:

  1. https://yunlzheng.gitbook.io/prometheus-book/parti-prometheus-ji-chu/promql/prometheus-metrics-types#counter-zhi-zeng-bu-jian-de-ji-shu-qi
  2. https://www.modb.pro/db/45956
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Prometheus 和 Grafana 监视基于 Jetty 的 Java 应用程序可以帮助你收集和分析应用程序的性能指标,并据此进行优化和调整。下面是一些基本步骤: 1. 安装 Prometheus 和 Grafana。可以从官网下载并安装它们,也可以使用 Docker 镜像启动。 2. 在应用程序中添加 Prometheus 客户端库。这个库提供了一些 API,可以让应用程序将性能指标暴露给 Prometheus。 3. 在应用程序的启动脚本中添加启动参数,以启用 Prometheus 客户端库。例如,可以添加以下参数: ``` -javaagent:/path/to/prometheus/jmx_prometheus_javaagent.jar=8080:/path/to/config.yml ``` 这个参数会启动一个 Java 代理,将应用程序的性能指标暴露给 Prometheus。8080 是代理监听的端口号,config.yml 是代理的配置文件。 4. 在 Prometheus 的配置文件中添加监控目标。例如,可以添加以下配置: ``` - job_name: 'jetty' metrics_path: '/metrics' static_configs: - targets: ['localhost:8080'] ``` 这个配置告诉 Prometheus 监视名为 "jetty" 的目标,并从该目标的 /metrics 路径获取指标。目标地址为 localhost:8080。 5. 启动应用程序和 Prometheus,并验证指标是否被成功收集。可以使用 Prometheus 的 Web UI 来查看指标。 6. 在 Grafana 中创建仪表盘,将应用程序的指标展示出来。可以使用 Grafana 的模板和图表来构建仪表盘。 这些步骤只是一个简单的指导,具体的实现可能因应用程序和环境的不同而有所不同。但总的来说,使用 Prometheus 和 Grafana 监视基于 Jetty 的 Java 应用程序是相对简单和方便的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值