#prometheus #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"} $CPUn")
var="$var
"
var=$var$(printf "${TOOL}memory_usage{process="$CMD", pid="$PID"} $MEMn")
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
Запуск его вручную выглядит нормально:
Running it with systemd the process value gets trimmed (if the value is greater than 9 characters the sign is being added):