首页 » 网站推广 » phppost被屏障技巧_版本宣告过程中的樊篱恢复告警

phppost被屏障技巧_版本宣告过程中的樊篱恢复告警

访客 2024-12-12 0

扫一扫用手机浏览

文章目录 [+]

监控是运维进行业务上线后的末了一个环节,我们须要通过监控理解业务的运行状态,对告警及时干预,担保业务的稳定。

版本发布

在系统版本发布过程中,须要对运用做事进行重启,此时在监控的检测周期内会触发运用告警,而这个告警属于正常的例行掩护,该当将此告警屏蔽,待发版完成并测试正常后再规复告警,担保监控井井有条的运行。

phppost被屏障技巧_版本宣告过程中的樊篱恢复告警

上述版本发布流程如下:

phppost被屏障技巧_版本宣告过程中的樊篱恢复告警
(图片来自网络侵删)

版本发布过程中可能会涉及多个开源产品,如jenkins、git、cmdb、运用容器、zabbix等,而大多公司内部没有一条ESB总线将各个平台或系统串联,因此须要通过各独立的接口供运维直接访问调用。

在此我们紧张先容下版本发布过程中,通过调用zabbix API实现zabbix屏蔽告警/规复告警。

屏蔽/规复告警

1.流程

以上流程是版本发布流水线触发调用zabbix api实现屏蔽/规复告警功能,把稳这个过程不做版本测试是否成功(在上游流水线中自行判断),只是用来禁用/启用监控项。

2.环境解释

此套流程用于已经确定好ip的情形下,匹配的是此ip下的监控项,因此:

请修正:

ZBX #zabbix api 地址

hostip #主机ip

3.代码实现

#!/bin/bash#comment: 此脚本用于发版过程中屏蔽zabbix监控项,发版正常后规复zabbix监控项#grep -Po 利用perl正则 \K 左边的所有东西被"退回"且不作为该正则表达式的匹配部分#获取主机hostidfunction get_hostid(){ #获取hostid hostid=`curl -s --connect-timeout 10 -m 20 -X POST -H 'Content-Type:application/json' -d' { "jsonrpc": "2.0", "method": "host.get", "params": { "filter": { "host": [ "'"${hostip}"'" ] } }, "auth": "'"${zabbix_token}"'", "id": 1 }' $ZBX|grep -Po '"hostid[":]+\K[^"]+'` echo $hostid}#获取监控项itemidfunction get_itemid(){ #获取itemid itemid=`curl -s --connect-timeout 10 -m 20 -X POST -H 'Content-Type:application/json' -d' { "jsonrpc": "2.0", "method": "item.get", "params": { "output": "extend", "hostids": "'"${hostid}"'", "search": { "key_": "'"$1"'" }, "sortfield": "name" }, "auth": "'"${zabbix_token}"'", "id": 1 }' $ZBX|grep -Po '"itemid[":]+\K[^"]+'` echo $itemid }#屏蔽/规复监控项,status:1禁用;status:0启用function update_itemid(){ update_itemid=`curl -w %{http_code} -s -X POST -H 'Content-Type:application/json' -d' { "jsonrpc": "2.0", "method": "item.update", "params": { "itemid": "'"$1"'", "status": '$2' }, "auth": "'"${zabbix_token}"'", "id": 1 }' $ZBX` echo $update_itemid}#主程序#zabbix-server的地址,请自行修正ZBX="http://zabbix.server.api/api_jsonrpc.php" ##zabbix api token,请自行修正zabbix_token=xxxxxxxxxxxxxxxxxxxxxxx#主机ip,请自行修正hostip=xxxxxecho -e "\033[33m进入zabbix监控屏蔽及规复过程中,是否失落败不影响发版,请放心利用\033[0m"KEY=$2case $1 in"masking_alarm")echo -e "\033[32m开始屏蔽zabbix监控项\033[0m"echo $KEY#屏蔽监控项#status:1 禁用status=1if [ -z "$KEY" ];then echo -e "\033[31m 请输入监控项的健值\033[0m" exit 1else hostid=$(get_hostid) if [ ${#hostid} -eq 0 ];then echo -e "\033[31mhostid为空,请检讨api能否访问\033[0m" exit 1 else key_list=($KEY) for key in ${key_list[@]} do itemid_list=$(get_itemid $key) if [ "${#itemid_list}" -eq 9 ];then echo -e "\033[31mitemid为空,请在zabbix上检讨key是否存在\033[0m" exit 1 else for itemid in ${itemid_list} do update_itemid $itemid $status done fi done fifi;;#规复监控项"recovery_alarm")echo -e "\033[32m开始规复zabbix监控项\033[0m"echo $KEY#status:0 启用status=0if [ -z "$KEY" ];then echo -e "\033[31m 请输入监控项的健值\033[0m" exit 1else hostid=$(get_hostid) if [ ${#hostid} -eq 0 ];then echo -e "\033[31mhostid为空,请检讨api能否访问\033[0m" exit 1 else key_list=($KEY) for key in ${key_list[@]} do itemid_list=$(get_itemid $key) if [ "${#itemid_list}" -eq 9 ];then echo -e "\033[31mitemid为空,请在zabbix上检讨key是否存在\033[0m" exit 1 else for itemid in ${itemid_list} do update_itemid $itemid $status done fi done fifi;;)echo "请选择masking_alarm或recovery_alarm"exit 1;;esac

4.代码实行

#屏蔽告警bash zabbix.sh masking_alarm website.code[http://xxxxxxx/1]进入zabbix监控屏蔽及规复过程中,是否失落败不影响发版,请放心利用开始屏蔽zabbix监控项website.code[http://xxxxxxx]{"jsonrpc":"2.0","result":{"itemids":["111502"]},"id":1}200#规复告警bash zabbix.sh recovery_alarm website.code[http://xxxxxxx/1]进入zabbix监控屏蔽及规复过程中,是否失落败不影响发版,请放心利用开始规复zabbix监控项website.code[http://xxxxxxxx]{"jsonrpc":"2.0","result":{"itemids":["111502"]},"id":1}200

屏蔽或规复后,请至zabbix检讨监控监控项状态是否同等。

把稳:

1.此脚本也可进行监控项的模糊匹配

#匹配监控项key包含xxxxxxxbash zabbix.sh recovery_alarm xxxxxxx

2. 此脚本可以进行多行匹配,须担保每个key值回车换行

总结

1.普通的监控项,基本可以通过以上脚本的模糊匹配办理;

2.对付同一个接口,可能会有url和port监控同时存在的情形,此时我们须在监控项key中做下关联,以便可以通过两个key中的同一字符模糊匹配同时操作这两个监控项,减少屏蔽规复的韶光,从而提高版本发布效率。

标签:

相关文章