Skip to content
Snippets Groups Projects
Commit 312c1c30 authored by godog's avatar godog
Browse files

Merge branch 'enumerate-raid' into 'master'

base: rework md array handling

See merge request !306
parents c0814acc 1b1b9dc5
Branches
No related tags found
1 merge request!306base: rework md array handling
Pipeline #82579 passed
......@@ -3,18 +3,13 @@
#!/usr/bin/env bash
set -eu
for MD_DEVICE in /dev/md/*; do
RAID_ARRAYS=$(lsblk --noheadings --output NAME,TYPE --list | awk '$2 ~ /^raid/ { print $1 }')
for MD_DEVICE in ${RAID_ARRAYS}; do
# Subshell to avoid eval'd variables from leaking between iterations
(
# Resolve symlink to discover device, e.g. /dev/md127
MD_DEVICE_NUM=$(readlink -f "${MD_DEVICE}")
# Remove /dev/ prefix
MD_DEVICE_NUM=${MD_DEVICE_NUM#/dev/}
MD_DEVICE=${MD_DEVICE#/dev/md/}
# Query sysfs for info about md device
SYSFS_BASE="/sys/devices/virtual/block/${MD_DEVICE_NUM}/md"
SYSFS_BASE="/sys/devices/virtual/block/${MD_DEVICE}/md"
MD_LAYOUT=$(cat "${SYSFS_BASE}/layout")
MD_LEVEL=$(cat "${SYSFS_BASE}/level")
MD_METADATA_VERSION=$(cat "${SYSFS_BASE}/metadata_version")
......@@ -25,18 +20,18 @@ for MD_DEVICE in /dev/md/*; do
# Output RAID array informational metric.
# NOTE: Metadata version is a label rather than a separate metric because the version can be a string
echo "node_md_info{md_device=\"${MD_DEVICE_NUM}\", md_name=\"${MD_DEVICE}\", raid_level=\"${MD_LEVEL}\", md_metadata_version=\"${MD_METADATA_VERSION}\"} 1"
echo "node_md_info{md_device=\"${MD_DEVICE}\", raid_level=\"${MD_LEVEL}\", md_metadata_version=\"${MD_METADATA_VERSION}\"} 1"
# Fetch sync state and metrics.
SYNC_STATE=$(cat "${SYSFS_BASE}/sync_action")
echo "node_md_sync_state{md_device=\"${MD_DEVICE_NUM}\",sync_state=\"${SYNC_STATE}\"} 1"
echo "node_md_sync_state{md_device=\"${MD_DEVICE}\",sync_state=\"${SYNC_STATE}\"} 1"
SYNC_SPEED=$(cat "${SYSFS_BASE}/sync_speed")
if [ "$SYNC_SPEED" = "none" ]; then
SYNC_SPEED=0
fi
echo "node_md_sync_speed{md_device=\"${MD_DEVICE_NUM}\"} ${SYNC_SPEED}"
echo "node_md_sync_speed{md_device=\"${MD_DEVICE}\"} ${SYNC_SPEED}"
DEGRADED=$(cat "${SYSFS_BASE}/degraded")
echo "node_md_degraded{md_device=\"${MD_DEVICE_NUM}\"} ${DEGRADED}"
echo "node_md_degraded{md_device=\"${MD_DEVICE}\"} ${DEGRADED}"
)
done
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment