move node exporter and backup docker script
This commit is contained in:
1 parent
95c2f90031
commit
0e52aefa07
3 files changed
+2
No files matched your search
Executable
+8
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
cd /docker
|
||||
find . -maxdepth 3 -type f \
|
||||
\( -name "*.yaml" -o -name "*.yml" -o -name "*.conf" -o -name "*.sh" \) \
|
||||
-print0 2>/dev/null |
|
||||
|
||||
rsync -aR --files-from=- --from0 ./ /home/lucas/scripts/docker_compose/$(hostname)
|
||||
crontab -l > /home/lucas/scripts/docker_compose/$(hostname)/crontab.bak
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
|
||||
OUT=/docker/monitoring/node_exporter/textfile_collector/custom.prom
|
||||
TS=$(date +%s%3N)
|
||||
if [[ "$(hostname)" == "mediahost" ]]; then
|
||||
DOCKER_CONTAINER_NUM=51
|
||||
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"
|
||||
|
||||
Executable
+39
@@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
|
||||
OUT="/docker/monitoring/node_exporter/textfile_collector/smart_selftest.prom"
|
||||
|
||||
> "$OUT"
|
||||
|
||||
for dev in $(smartctl --scan-open | awk '{print $1}'); do
|
||||
name=$(basename "$dev")
|
||||
LAST=0
|
||||
if [[ "$dev" == *nvme* ]]; then
|
||||
POWER_ON=$(smartctl -a "$dev" | awk -F': *' '/Power On Hours:/ {print $2}')
|
||||
LAST=$(smartctl -l selftest "$dev" 2>/dev/null \
|
||||
| grep "Completed" \
|
||||
| head -1 \
|
||||
| awk '{print $(NF-5)}')
|
||||
elif [[ "$dev" == *sd* ]]; then
|
||||
POWER_ON=$(smartctl -a "$dev" | awk '/Power_On_Hours/ {print $10}')
|
||||
LAST=$(smartctl -l selftest "$dev" 2>/dev/null \
|
||||
| grep "Completed" \
|
||||
| head -1 \
|
||||
| awk '{print $(NF-1)}')
|
||||
MODEL=$(smartctl -i "$dev" | awk -F': *' '/Device Model/ {print $2}')
|
||||
# ST2000LM003 self-test hour counter rolls over at 65536
|
||||
if [[ "$MODEL" == "ST2000LM003 HN-M201RAD" ]] && \
|
||||
[[ "$LAST" =~ ^[0-9]+$ ]] && \
|
||||
[[ "$POWER_ON" =~ ^[0-9]+$ ]] && \
|
||||
(( POWER_ON > 65535 && LAST < 65536 )); then
|
||||
LAST=$((LAST + 65536))
|
||||
fi
|
||||
else
|
||||
POWER_ON=99999999999
|
||||
echo $dev
|
||||
fi
|
||||
|
||||
# Skip devices without self-test history
|
||||
echo $name: Last: ${LAST}, PowerOn: ${POWER_ON}
|
||||
echo "smart_last_selftest_poweron_hours{device=\"$name\"} $LAST" >> "$OUT"
|
||||
|
||||
done
|
||||
Reference in new issue
Block a user