单Bash脚本实现多项目Elasticsearch快照备份状态校验
单脚本实现多项目Elasticsearch快照备份校验方案
修改后可直接使用的完整脚本如下:
#!/bin/bash # 定义所有需要校验的项目列表,后续新增/删除项目直接修改此处即可 PROJECTS=("emirates" "etihad" "flydubai" "airarabia") # 指标输出文件路径 METRIC_FILE="/var/lib/node_exporter/textfile_collector/elasticsearch_backup_status.prom" # 启动时先清空旧指标文件,避免残留已下线项目的无效数据 > "$METRIC_FILE" # 遍历所有项目逐个执行备份校验 for project in "${PROJECTS[@]}"; do _BACKUP_STATUS=$(curl -s -X GET "10.0.45.101:9200/_cat/snapshots/$project?v&s=id&pretty" | tail -1 | awk '{ print $2 }') # 兜底判断:无快照记录时直接判定为校验失败 if [[ $_BACKUP_STATUS = "SUCCESS" ]]; then metric_value=0 else metric_value=1 fi # 追加写入当前项目的校验指标 echo "elasticsearch_backup_status{project=\"$project\", env=\"prod\", zone=\"dubai\"} $metric_value" >> "$METRIC_FILE" done
核心修改说明:
- 将所有待校验项目统一维护在脚本顶部的数组中,无需额外写调用脚本,后续调整校验范围只需修改数组即可
- 新增执行前清空指标文件的逻辑,避免历史失效项目的指标残留影响监控准确性
- 循环处理每个项目的校验请求,使用追加模式
>>写入指标,保证所有项目的校验结果都能正常保存 - 额外补充了快照为空的兜底判断逻辑,避免项目未创建快照时出现异常指标
内容的提问来源于stack exchange,提问作者noze_potato
相关产品推荐
相关产品推荐

