ansible_playbooks/roles/node_exporter_install/files/docker-ps-metrics.sh
2026-02-24 11:30:35 +03:00

29 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
# Путь к директории textfile collector
OUTPUT_DIR="/var/lib/node_exporter/textfile_collector"
OUTPUT_FILE="$OUTPUT_DIR/docker_ps.prom"
# Выполняем docker ps и преобразуем в метрики
docker ps -a --format "table {{.Names}}\t{{.Status}}" | \
awk 'NR>1 {
# Очищаем статус от лишних деталей (например, "Up 2 hours" → "running")
status = $2
if (status ~ /^Up/) status = "running"
else if (status ~ /^Exited/) status = "exited"
else if (status ~ /^Restarting/) status = "restarting"
else status = "unknown"
# Формируем метрику: 1 для running, 0 для остальных
value = (status == "running") ? 1 : 0
# Выводим в формате Prometheus
print "docker_container_status{container=\"" $1 "\",status=\"" status "\"} " value
}' > "$OUTPUT_FILE"
# Добавляем метаданные (HELP и TYPE)
{
echo "# HELP docker_container_status Статус контейнера (1=running, 0=не running)"
echo "# TYPE docker_container_status gauge"
cat "$OUTPUT_FILE"
} > "$OUTPUT_FILE.tmp" && mv "$OUTPUT_FILE.tmp" "$OUTPUT_FILE"