shell - 获取consul kv并写入至k8s alertmanager

2021-07-05
#!/bin/bash
basepath=$(cd $(dirname $0); pwd)
source ${basepath}/config.sh
source /etc/profile.d/consul.sh
source /etc/profile
function DownloadConsul() {
    consul_files=$(/usr/local/bin/consul kv get --recurse | grep 'alertManager.d' |awk -F ':' '{print $1}')
    for consul_file in ${consul_files}
    do
        echo $consul_file
        local_file=$(echo ${consul_file} | awk -F '/' '{print $NF}')
        /usr/local/bin/consul kv get ${consul_file} > ${temp_path}/${local_file}
    done
}

function UpdateK8s() {
    cat ${basepath}/alertmanager-demo-head ${temp_path}/alarm_*  ${basepath}/alertmanager-demo-foot > /tmp/alertmanager.yaml
    /usr/local/bin/kubectl --kubeconfig /root/.kube/all-config/pro -n monitoring create secret generic alertmanager-main --from-file=/tmp/alertmanager.yaml --dry-run -o yaml > /tmp/alertmanager-secret.yaml
    /usr/local/bin/kubectl --kubeconfig /root/.kube/all-config/pro -n monitoring apply -f /tmp/alertmanager-secret.yaml
}

temp_path="/tmp/alertmanagerrules.d"
mkdir -p ${temp_path}
cd ${temp_path}
rm -rf ${temp_path}/*

echo `date`
DownloadConsul
UpdateK8s

alertmanager-demo-head

global:
  # 在没有告警的情况下声明为已解决的时间
  resolve_timeout: 5m

route:
  # 告警聚合维度
  group_by: ['id', 'type', 'queue', 'instance', 'InstanceId', 'clusterId']
  # 收到告警,以分组维度等待15秒聚合,然后一起触发告警信息
  group_wait: 15s
  # 分组内容有变更,则发送告警的时间间隔
  group_interval: 1m
  # 分组内发送相同告警的时间间隔
  repeat_interval: 30m
  # 默认接收器
  receiver: 'default'
  routes:
    - receiver: 'ignore'
      group_wait: 15s
      match_re:
        severity: "2"

alertmanager-demo-foot

receivers:
- name: 'default'
  webhook_configs:
#  - url: 'http://127.0.0.1'
  - url: 'http://12000.pro.xx.corp:12000/alert/webHook/0'
    send_resolved: true

- name: 'ignore'
  webhook_configs:
  - url: 'http://127.0.0.1'

#抑制规则
inhibit_rules:
  - source_match:
      severity: '3'
    target_match:
      severity: '2'
    equal: ['id', 'type', 'queue', 'instance', 'InstanceId', 'clusterId']

consul kv demo

    - receiver: 'default'
      repeat_interval: 5m
      match:
        id: 12692

标题:shell - 获取consul kv并写入至k8s alertmanager
地址:https://blog.nijianqiang.xyz:8443/articles/2021/07/05/1625474389326.html