#!/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"