整个实现步骤分为四篇:
(资料图)
第一篇:TrueSight接口调试
第二篇:golang HTTP程序编写
第三篇:Promethus Webhook配置
第四篇:docker镜像打包和部署
一、背景
国内几乎没有Promethus与TrueSight集成实现的资料,原因主要还是因为TrueSight比较小众,过去大多是金融行业用得比较多,随后因为微服务架构、K8S、Docker这些的盛行,TrueSight已经很难体现出优势,为此BMC官方也推出了BMC Helix的产品,只是目前国内还未有完整的案例,大多是在实施中。
二、目的
本人使用和运维BMC TrueSight是在2016年,还包括了BMC Remedy、CMDB、ADDM等相关产品,希望通过此次Promethus与TrueSight集成案例,带大家去实现Promethus的事件集成,此方案也可用于需要与Promethus告警事件集成的其他的事件平台,后续也将会更多的带来相关的一些讲解和案例,帮助可能使用或正在使用BMC产品的同学更全面的了解其产品的功能,当然目前我也在着手对BMC相关产品进行技术替换,也将分享给大家。
三、实现方案
实现方案思路为通过GO或python启动HTTP服务,文章里我将以Go为例,实现Prometheus webhook的监听,处理接收到的告警事件,并将事件转发到TrueSight或者其他事件平台上,方法是通用的,大家可以自行尝试。
四、实现步骤及完整代码
1.TrueSight(版本:11.3.05.001)
1.1 TrueSight本身提供了丰富的集成方式,可以将第三方监控工具和业务系统的告警事件集成到BMC Truesight中进行统一处理和展示,包括调用BMC Truesight Restful API、BMC MSEND命令行脚本、SNMP TRAP等方式。
1.2 首先进行本地调用测试,分为2步,第一步:调用truesight认证API接口获取token(24小时有效),第二步:获取token后,再调用发送告警事件API发送事件。(本地用postman等api工具先行进行验证)
1.3 POST获取token请求地址:https://XXXX:8043/tsws/10.0/api/authenticate/login,调用时添加Header:
1.4 请求body参数:
{
"username":"账号",
"password":"密码",
"tenantName":"*"
}
1.5 收到如下返回说明获取token成功
1.6 根据拿到的token进行模拟事件发送,POST接口请求地址:https://XXXX/bppmws/api/Event/create?routingId=这里是pncell的名字&routingIdType=CELL_NAME
1.7 请求header参数(注意:authtoken后面是“空格”+token)
1.8 请求Body参数样例
[
{
"attributes": {
"CLASS": "DIAODU_EV",
"itsm_category": "firing",
"itsm_company": "",
"itsm_location": "",
"itsm_manufacturer": "",
"itsm_product_name": "",
"itsm_item": "cluster.pod.status.phase.not.running-y1k00-6bed5db83e16c8ab82b6668afddbc0c0",
"itsm_operational_category1": "2023-03-01T07:02:27.334013278Z",
"itsm_operational_category2": "0001-01-01T00:00:00Z",
"itsm_operational_category3": "APPLICATION",
"mc_host": "gjtest",
"mc_host_address": "",
"mc_object": "global",
"mc_object_class": "Cluster",
"mc_origin_sev": "Critical",
"mc_parameter": "cluster.memory.utilization",
"mc_parameter_threshold": "0.01",
"mc_parameter_value": "0.27842724083472054",
"msg": "集群的实际内存使用率2 > 0.01 "
}
}
]
1.9 返回成功样例
{
"responseList": [
{
"mc_ueid": "mc.pncell_GDVUTSIMAP01.207ea691.0",
"statusMsg": "OK",
"statusCode": "200"
}
],
"responseTimeStamp": "2023-03-01T10:01:53",
"statusMsg": "OK",
"statusCode": "200"
}
1.10 返回失败样例(例如token失效,token值不对)
{
"responseTimeStamp": "2023-03-01T09:50:34",
"statusMsg": "Authentication failed. Invalid Username/Password OR Invalid/Expired Token",
"statusCode": "401"
}
进行到这步,说明truesight的接口已经调通,下一步将带大家完整实现通过go监听promethus webhook,同时发送到truesight事件平台。
--------------------------------------------
本人录制的微服务与分布式系统实战课程(连载中):https://study.163.com/course/introduction/1213354804.htm?inLoc=ss_ssjg_qblb_%E5%BE%AE%E6%9C%8D%E5%8A%A1