29 lines
1.2 KiB
Bash
Executable file
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"
|