前言
使用node_exporter的 textfile_collector 采集shell脚本输出符合prom 的指标上报给 Prometheus
调整MySQL备份脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| $ cat /data/backup/mysql/pxb_backup.sh
MYSQL_USER="root" MYSQL_PASSWORD="Z1xI7zXXXXX" MYSQL_SOCKET="/tmp/mysql.sock" BACKUP_DIR="/data/backup/mysql/backup" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_NAME="full_backup_$DATE" METRICS_FILE="/usr/local/node_exporter/textfile_collector/mysql_backup_status.prom"
if [ ! -d "$BACKUP_DIR" ]; then mkdir -p "$BACKUP_DIR" fi
echo "Starting MySQL full backup..." xtrabackup --backup --user=$MYSQL_USER --password=$MYSQL_PASSWORD --socket=$MYSQL_SOCKET --target-dir=$BACKUP_DIR/$BACKUP_NAME
if [ $? -eq 0 ]; then echo "MySQL full backup completed successfully." BACKUP_STATUS=0 BACKUP_STATUS_LABEL="success" else echo "MySQL full backup failed!" BACKUP_STATUS=1 BACKUP_STATUS_LABEL="failed" exit 1 fi
echo "Compressing backup..." tar -czf $BACKUP_DIR/$BACKUP_NAME.tar.gz -C $BACKUP_DIR $BACKUP_NAME
echo "mysql_backup_status{backup_type=\"full\", status=\"$BACKUP_STATUS_LABEL\"} $BACKUP_STATUS" > $METRICS_FILE
rm -rf $BACKUP_DIR/$BACKUP_NAME
echo "Cleaning up old backups..." cd $BACKUP_DIR ls -t | grep full_backup_.*\.tar\.gz | tail -n +8 | xargs rm -f
echo "Backup and cleanup completed."
|
监控备份文件大小和备份创建时间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $ cat mysql_backup_metrics.sh
BACKUP_DIR="/data/backup/mysql/backup"
OUTPUT_FILE="/usr/local/node_exporter/textfile_collector/mysql_backup_file.prom"
> $OUTPUT_FILE
for file in $(ls $BACKUP_DIR/full_backup_*.tar.gz); do size=$(stat -c%s "$file") mtime=$(stat -c%Y "$file") echo "backup_file_size{file=\"$file\"} $size" >> $OUTPUT_FILE echo "backup_file_mtime{file=\"$file\"} $mtime" >> $OUTPUT_FILE done
|
调整node_exporter
1 2 3 4 5 6 7 8 9 10
| $ systemctl cat node_exporter.service
[Unit] Description=Node Exporter
[Service] WorkingDirectory=/usr/local/node_exporter ExecStart=/usr/local/node_exporter/node_exporter --web.config.file="/usr/local/node_exporter/basic_auth.yml" --collector.textfile.directory="/usr/local/node_exporter/textfile_collector" [Install] WantedBy=multi-user.target
|