0

我正在将以下指标推送到 Prometheus PushGateway

cpu_usage{process="dsapi_slave",pid="89543"} 0.1

但是在 Prometheus 中,我看到进程值dsapi_sla+而不是原始推送值dsapi_slave

cpu_usage{environment="DEV", exported_instance="machine", exported_job="top", instance="someServer", job="Engine", pid="89543", process="dsapi_sla+", source="push_gateway"}

+似乎通过添加符号来修剪长度超过 9 个字符的文本。

不确定这个重新标签配置是否导致它,我不这么认为,因为我的目标是实例标签:

  relabel_configs:
  - source_labels: [__address__]
    regex: "([^:]+):\\d+"
    target_label: instance

对此有任何提示吗?

编辑:

经过一些调试后,问题似乎是由curl用于发布数据以推送网关指标端点的命令引起的,但仅当发布它的脚本由 systemd/cron 运行时。

脚本是:

#!/bin/bash
# script to collect the cpu and memory usage per process

var=""
LINES=""
LINES=$(top -bcn2 | awk '/^top -/ { p=!p } { if (!p) print }' | tail -n +8)

while read -r LINE
do
IN=`echo "$LINE" | tr -s ' '`
PID=`echo $IN | cut -d ' ' -f1 `
CMD=`echo $IN | cut -d ' ' -f12 `
CPU=`echo $IN | cut -d ' ' -f9 `
MEM=`echo $IN | cut -d ' ' -f10 `
var=$var$(printf "${TOOL}cpu_usage{process=\"$CMD\", pid=\"$PID\"} $CPU\n")
var="$var
"
var=$var$(printf "${TOOL}memory_usage{process=\"$CMD\", pid=\"$PID\"} $MEM\n")
var="$var
"
done <<< "$LINES"

# push to the prometheus pushgateway
curl -v -X POST -H "Content-Type: text/plain" --data "${var}" https://localhost:10083/metrics/job/top/instance/machine --insecure 

手动运行它看起来不错:

在此处输入图像描述

使用 systemd 运行它,进程值会被修剪(如果值大于 9 个字符,则添加 + 号):

在此处输入图像描述

4

0 回答 0