1、阿里云短信服务API
2、Jenkins-plugin:Generic Webhook Trigger Plugin

  • 阿里云

  • Grafana

    • 产生报警信息
    • 将报警信息发送给Jenkins的webhook接口
  • Jenkins

    • 创建JOB,执行python脚本
    • 设置JOB的webhook地址

一、首先根据实际情况修改阿里云短信接口的python demo

# -*- coding: utf- -*-
import sys
from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
from aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
from aliyunsdkcore.client import AcsClient
import uuid
from aliyunsdkcore.profile import region_provider
from aliyunsdkcore.http import method_type as MT
from aliyunsdkcore.http import format_type as FT
#import const
import json """
短信业务调用接口示例,版本号:v20170525 Created on -- """
try:
reload(sys)
sys.setdefaultencoding('utf8')
except NameError:
pass
except Exception as err:
raise err # 注意:不要更改
ACCESS_KEY_ID = "LTAIqEab3HRpRmk6"
ACCESS_KEY_SECRET = "TrnLKl5Qdd7aiAxsUF9v57635y07oK" REGION = "cn-hangzhou"
PRODUCT_NAME = "Dysmsapi"
DOMAIN = "dysmsapi.aliyuncs.com" #Jenkins webhook变量
PhoneNumbers = sys.argv[].split(",")
Contents = sys.argv[]
State = sys.argv[] print "PhoneNumbers: %s" % PhoneNumbers
print "Contents: %s" % Contents acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN) def send_sms(business_id, phone_numbers, sign_name, template_code, template_param=None):
smsRequest = SendSmsRequest.SendSmsRequest()
# 申请的短信模板编码,必填
smsRequest.set_TemplateCode(template_code) # 短信模板变量参数
if template_param is not None:
smsRequest.set_TemplateParam(template_param) # 设置业务请求流水号,必填。
smsRequest.set_OutId(business_id) # 短信签名
smsRequest.set_SignName(sign_name) # 数据提交方式
# smsRequest.set_method(MT.POST) # 数据提交格式
# smsRequest.set_accept_format(FT.JSON) # 短信发送的号码列表,必填。
smsRequest.set_PhoneNumbers(phone_numbers) # 调用短信发送接口,返回json
smsResponse = acs_client.do_action_with_exception(smsRequest) # TODO 业务处理 return smsResponse if __name__ == '__main__':
__business_id = uuid.uuid1()
#print(__business_id)
#params = "{\"code\":\"11113\"}"
#params = u'{"name":"wqb","code":"12345678","address":"bz","phone":"13000000000"}'
params = {"name":Contents,"state":State}
params = json.dumps(params)
print params
for PhoneNumber in PhoneNumbers:
print(send_sms(__business_id, PhoneNumber, "wjoyxt", "SMS_155355123", params))

附:阿里云短信模板详情

模版类型:短信通知
模版名称:Grafana短信模板
模版CODE:SMS_155355123
模版内容:Grafana告警名称:${name} ,现在状态变为:${state}
申请说明:公司内部运维人员专用告警短信

二、Jenkins插件Generic Webhook Trigger Plugin配置

三、创建Grafana Notification channels,Url:http://172.17.102.200:8080/generic-webhook-trigger/invoke?token=sms

完成!至此在Grafana触发报警后会通过这个Channel 发送一个POST请求到Jenkins,Jenkins便会执行对应的JOB从而发送报警短信。

构建过程日志如下图所示:

回调参数示例:

{
"title": "My alert",
"ruleId": ,
"ruleName": "Load peaking!",
"ruleUrl": "http://url.to.grafana/db/dashboard/my_dashboard?panelId=2",
"state": "alerting",
"imageUrl": "http://s3.image.url",
"message": "Load is peaking. Make sure the traffic is real and spin up more webfronts",
"evalMatches": [
{
"metric": "requests",
"tags": {},
"value":
}
]
}

手动测试:

curl -H "Content-Type: application/json" -X POST -d '{"ruleName":"test","state":"OK"}' "http://172.17.102.200:18080/generic-webhook-trigger/invoke?token=sms"

Grafana短信报警实现的更多相关文章

  1. Grafana 短信报警

    一.分析 需求 Grafana支持短信渠道报警 要求 使用开发提供的短信API接口 请求url: http://192.168.1.1:8088/alerting/sendSms?mobile=手机号 ...

  2. zabbix3配置短信报警

    需求:在zabbix服务器配置短信报警,当服务出现故障达到预警级别是通过发送短信的形式告诉运维人员,以便及时处理. 一.zabbix服务器端配置短信脚本 我的短信脚本放置位置为 /etc/zabbix ...

  3. CactiEZ 中文版V10.1安装使用以及139邮箱短信报警设置

    说明:CactiEZ中文版V10.1是基于CentOS 6.0系统,整合Cacti等相关软件,重新编译而成的一个操作系统!   说明:CactiEZ中文版V10.1是基于CentOS 6.0系统,整合 ...

  4. server宕机监控、检測、报警程序(139绑定手机短信报警)monitor_down.sh

    宕机监控报警程序 一.   需求来源 宕机对运维人员来说,最痛苦了.怎样检測一台server是否还在正常执行,假设该server宕机,怎样在第一时间监測到并通知一线运维人员进行维护,最大化降低损失. ...

  5. centos7之zabbix邮件报警(短信报警)

    前言 前面我们介绍了zabbix的基本linux和window及SNMP流量的简单监控,我们知道作为运维人员,需要7x24小时待命,但是我们不可能时时刻刻都坐在电脑旁边查看监控上的各个主机状态,所以我 ...

  6. mysubmail 短信报警

    https://www.mysubmail.com/chs/documents/developer/YPWD84   文本文档  官网:www.mysubmail.com 操作流程:快速接入短信 AP ...

  7. Zabbix 短信报警示例

    Zabbix 短信报警 示例: 注意zabbix 脚本文件默认放置目录是 alertscripts (zabbix 动作调用脚本目录) # 编辑 zabbix_server.conf # AlertS ...

  8. zabbix学习笔记:zabbix监控之短信报警

    zabbix学习笔记:zabbix监控之短信报警 zabbix的报警方式有多种,除了常见的邮件报警外,特殊情况下还需要设置短信报警和微信报警等额外方式.本篇文章向大家介绍短信报警. 短信报警设置 短信 ...

  9. zabbix 短信报警

    使用的短信平台是云片网,接口请看官网短信接口API文档,有示例 进入server服务器存放脚本的文件夹,默认路径是 [root@test zabbix]# cat zabbix_server.conf ...

随机推荐

  1. map集合实现缓存

    package com.linmingliang.myblog.utils; import java.util.Map;import java.util.concurrent.ConcurrentHa ...

  2. Shell脚本出现$'\r': command not found

    Centos7下执行shell脚本报错如下 [root@ip---- ~]# sh install_zabbix_agent.sh install_zabbix_agent.: $'\r': comm ...

  3. py-day4 python filter函数

    filter函数:遍历序列中的每个元素,判断每个元素得到布尔值,如果是True则留下 # 例子:条件筛选 name =['m_xiaoli','zhangfei','m_xiaoma','m_wang ...

  4. Spring Boot Admin 的使用

    Spring Boot 版本: 1.5.20 一.Spring Boot Admin Server 1.在pom.xml中增加 <dependency> <groupId>or ...

  5. MySQL:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

    ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'. 原因是:mysql数据库的user表里,存 ...

  6. 记不住 Linux 命令?这三个工具可以帮你(转)

    链接:https://zhuanlan.zhihu.com/p/30668155 Linux 桌面从开始的简陋到现在走了很长的路.在我早期使用 Linux 的那段日子里,掌握命令行是最基本的 —— 即 ...

  7. 带宽怎么算---Gbit/s

    带宽怎么算---Gbit/s 信息来源: 计算方法: 带宽的实际应用:

  8. MapperScan和ComponentScan同时使用问题

    @MapperScan:1.首先了解@Mapper    在接口上添加了@Mapper,在编译之后就会生成相应的接口实现类.    不过需要在每个接口上面进行配置,为了简化开发,就有了 @Mapper ...

  9. (转)android 中uri.parse()用法

    1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = new Intent(Intent.ACTI ...

  10. Selenium常用方法

    Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击.下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬.对于一些JavaScript动态渲染的页面来说 ...