#!/bin/bash durationtime=`echo "${@: -1}"|awk '{if($0~"h") print $0*3600;else if($0~"m") print $0*60;else if($0~"s") print $0*1;else if($0!~"h|m|s") print "Error"}'` if [ $durationtime == "Error" ]||[ $durationtime == 0 ];then echo -e "请依次输入\033[31m 告警规则名称\033[0m \033[31m label:value\033[0m \033[31m 告警沉默时长\033[0m" echo -e "label和value之间请用\033[31m英文\033[0m冒号" echo -e "时长格式示例一: \033[41;36m 1h \033[0m 示例二: \033[41;36m 5m \033[0m 示例三: \033[41;36m 40s \033[0m ,请使用单一单位" echo -e "\033[41;36m 最后一个参数请输入沉默时长 \033[0m,单位:\033[31m h/m/s\033[0m" && exit 1 else starttimes=`date +%s` endtimes=$(($starttimes + $durationtime)) starttime=`date +%F"T"%T"+08:00" -d @${starttimes}` endtime=`date +%F"T"%T"+08:00" -d @${endtimes}` alertname=$1 case $# in 2) curl -H "Content-Type: application/json" -X POST -d '{"comment": "silences alert","createdBy": "x","startsAt": "'"${starttime}"'","endsAt": "'"${endtime}"'","matchers": [{"isRegex": false,"name": "alertname","value": "'"${alertname}"'"}]}' http://alertmanager-test.aispeech.com/api/v2/silences ;; 3) key1=$(echo "$2"|awk -F":" '{print $1}') value1=$(echo "$2"|awk -F":" '{print $2}') if [[ $value1 ]];then curl -H "Content-Type: application/json" -X POST -d '{"comment": "silences alert","createdBy": "x","startsAt": "'"${starttime}"'","endsAt": "'"${endtime}"'","matchers": [{"isRegex": false,"name": "alertname","value": "'"${alertname}"'","name": "'"${key1}"'","value": "'"${value1}"'"}]}' http://alertmanager-test.aispeech.com/api/v2/silences else echo -e "\033[41;36m 请正确输入过滤条件 \033[0m 示例一:\033[31m hostname:d3-gpu-001\033[0m" fi ;; 4) key1=$(echo $2|awk -F":" '{print $1}') value1=$(echo $2|awk -F":" '{print $2}') key2=$(echo $3|awk -F":" '{print $1}') value2=$(echo $3|awk -F":" '{print $2}') if [[ $value1 ]] && [[ $value2 ]];then curl -H "Content-Type: application/json" -X POST -d '{"comment": "silences alert","createdBy": "x","startsAt": "'"${starttime}"'","endsAt": "'"${endtime}"'","matchers": [{"isRegex": false,"name": "alertname","value": "'"${alertname}"'","name": "'"${key1}"'","value": "'"${value1}"'"},{"isRegex": false,"name": "alertname","value": "'"${alertname}"'","name": "'"${key2}"'","value": "'"${value2}"'"}]}' http://alertmanager-test.aispeech.com/api/v2/silences else echo -e "\033[41;36m 请正确输入过滤条件 \033[0m 示例一:\033[31m hostname:d3-gpu-001 hostip:10.100.1.100\033[0m" fi ;; *) echo -e "请依次输入\033[31m 告警规则名称\033[0m \033[31m label:value\033[0m \033[31m 告警沉默时长\033[0m" echo -e "label和value之间请用\033[31m英文\033[0m冒号" echo -e "时长格式示例一: \033[41;36m 1h \033[0m 示例二: \033[41;36m 5m \033[0m 示例三: \033[41;36m 40s \033[0m ,请使用单一单位" echo -e "\033[41;36m 最后一个参数请输入沉默时长 \033[0m,单位:\033[31m h/m/s\033[0m" && exit 1 ;; esac fi