41 lines
1.3 KiB
Bash
Executable File
41 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
OUT=/docker/monitoring/node_exporter/textfile_collector/custom.prom
|
|
TS=$(date +%s%3N)
|
|
if [[ "$(hostname)" == "mediahost" ]]; then
|
|
DOCKER_CONTAINER_NUM=44
|
|
elif [[ "$(hostname)" == "serverhost" ]]; then
|
|
DOCKER_CONTAINER_NUM=4
|
|
elif [[ "$(hostname)" == "quiethost" ]]; then
|
|
DOCKER_CONTAINER_NUM=1
|
|
fi
|
|
{
|
|
# Docker container states
|
|
docker ps -a --format '{{.Names}}' | while read -r name; do
|
|
if docker inspect -f '{{.State.Running}}' "$name" 2>/dev/null | grep -q true; then
|
|
echo "docker_container_state{name=\"$name\"} 1"
|
|
else
|
|
echo "docker_container_state{name=\"$name\"} 0"
|
|
fi
|
|
done
|
|
|
|
echo docker_container_number $DOCKER_CONTAINER_NUM
|
|
|
|
# Public IP information
|
|
IP_JSON=$(curl -fsSL http://ip-api.com/json)
|
|
|
|
IP=$(jq -r '.query' <<< "$IP_JSON")
|
|
COUNTRY=$(jq -r '.country' <<< "$IP_JSON")
|
|
CITY=$(jq -r '.city' <<< "$IP_JSON")
|
|
ISP=$(jq -r '.isp' <<< "$IP_JSON" | sed 's/"/\\"/g')
|
|
COUNTRYCODE=$(jq -r '.countryCode' <<< "$IP_JSON")
|
|
LAT=$(jq -r '.lat' <<< "$IP_JSON")
|
|
LON=$(jq -r '.lon' <<< "$IP_JSON")
|
|
|
|
echo "public_ip_info{ip=\"$IP\",country=\"$COUNTRY\",city=\"$CITY\",isp=\"$ISP\",countrycode=\"$COUNTRYCODE\",lat=\"$LAT\",lon=\"$LON\"} 1"
|
|
echo "custom_metrics_last_update_timestamp_seconds $(date +%s)"
|
|
} > "$OUT.$$"
|
|
|
|
mv "$OUT.$$" "$OUT"
|
|
|