返回顶部
首页 > 资讯 > 后端开发 > GO >go开发alertmanger实现钉钉报警
  • 528
分享到

go开发alertmanger实现钉钉报警

2024-04-02 19:04:59 528人浏览 八月长安
摘要

通过自己的url实现alertmanager的钉钉报警 WEBhook在alertmanger的配置 - name: 'dingding' webhook_con

通过自己的url实现alertmanager的钉钉报警

WEBhook在alertmanger的配置


- name: 'dingding'
      webhook_configs:
      - send_resolved: true
        url: 'Http://xxxx:8080/Alert'

Go实现钉钉报警的程序


package main

import (
 "bytes"
 "encoding/JSON"
 "fmt"
 "net/http"
 "strings"
 "time"
 "log"
 "GitHub.com/gin-gonic/gin"
)

const (
 webHook_Alert = "https://oapi.dingtalk.com/robot/send?access_token=xxxx"
)
type Message struct {
 MsgType string `json:"msgtype"`
 Text struct {
  Content string `json:"content"`
  Mentioned_list string `json:"mentioned_list"`
  Mentioned_mobile_list string `json:"mentioned_mobile_list"`
 } `json:"text"`

}
type Alert struct {
 Labels      map[string]string `json:"labels"`
 Annotations map[string]string `json:annotations`
 StartsAt    time.Time         `json:"startsAt"`
 EndsAt      time.Time         `json:"endsAt"`
}
//通知消息结构体
type Notification struct {
 Version           string            `json:"version"`
 GroupKey          string            `json:"groupKey"`
 Status            string            `json:"status"`
 Receiver          string            `json:receiver`
 GroupLabels       map[string]string `json:groupLabels`
 CommonLabels      map[string]string `json:commonLabels`
 CommonAnnotations map[string]string `json:commonAnnotations`
 ExternalURL       string            `json:externalURL`
 Alerts            []Alert           `json:alerts`
}
//获取报警信息
func getAlertInfo(notification Notification) string {
 var m Message
 m.MsgType = "text"
 msg,err := json.Marshal(notification.GroupLabels)
 if err != nil {
  log.Println("notification.GroupLabels Marshal failed",err)
 }
 msg1,err := json.Marshal(notification.CommonAnnotations["summary"])
 if err != nil {
  log.Println("notification.CommonAnnotations Marshal failed",err)
 }
 //告警消息
 var buffer bytes.Buffer
 buffer.WriteString(fmt.Sprintf("告警: %v\n",string(msg)))
 buffer.WriteString(fmt.Sprintf("Endpoint: %v\n",string(msg1)))
 buffer.WriteString(fmt.Sprintf("告警描述: \"我挂了,快来救我^OO^\"\n"))
 buffer.WriteString(fmt.Sprintf("Status:%v\n",notification.Status))
 //恢复消息
 var buffer2 bytes.Buffer
 buffer2.WriteString(fmt.Sprintf("告警: %v\n",string(msg)))
 buffer2.WriteString(fmt.Sprintf("Endpoint: %v\n",string(msg1)))
 buffer2.WriteString(fmt.Sprintf("告警描述: \"哈哈哈,我又回来了!!!\"\n"))
 //buffer2.WriteString(fmt.Sprintf("mentioned_mobile_list: %v\n",msgres["mentioned_mobile_list"]))
 buffer2.WriteString(fmt.Sprintf("Status:%v\n",notification.Status))
 if notification.Status == "resolved"{
  m.Text.Content = buffer2.String()
 }else {
  m.Text.Content = buffer.String()
 }
 jsons, err := json.Marshal(m)
 resp := string(jsons)
 return resp
}
//钉钉报警
func SendAlertDingMsg(msg string) {
 defer func() {
  if err := recover(); err != nil {
   fmt.Println("err")
  }
 }()
 content := `{"msgtype": "text",
  "text": {"content": "` + msg + `"}
 }`
 //创建一个请求
 req, err := http.NewRequest("POST", webHook_Alert, strings.NewReader(content))
 if err != nil {
  fmt.Println(err)
  fmt.Println("钉钉报警请求异常")
 }
 client := &http.Client{}
 //设置请求头
 req.Header.Set("Content-Type", "application/json; charset=utf-8")
 //发送请求
 resp, err := client.Do(req)
 if err != nil {
  // handle error
  fmt.Println(err)
  fmt.Println("顶顶报发送异常!!!")
 }
 defer resp.Body.Close()
}
func alert( c *gin.Context)  {
 var notification Notification
 err := c.BindJSON(&notification)
 if err != nil {
  c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
  return
 }
 msg := getAlertInfo(notification)
 SendAlertDingMsg(msg)

}
func main()  {
 t := gin.Default()
        t.GET("/",func(c *gin.Context){
            c.String(http.StatusOK,"关于alertmanager实现钉钉报警的方法!!!!")
        })
 t.POST("/Alert",alert)
 t.Run(":8080")
}

可以通过编译二进制打包部署在k8s环境(可以参考下篇文章,如果在k8s环境中部署gin程序)

到此这篇关于go开发alertmanger实现钉钉报警的文章就介绍到这了,更多相关go 钉钉报警内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: go开发alertmanger实现钉钉报警

本文链接: https://lsjlt.com/news/130612.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • go开发alertmanger实现钉钉报警
    通过自己的url实现alertmanager的钉钉报警 webhook在alertmanger的配置 - name: 'dingding' webhook_con...
    99+
    2024-04-02
  • 怎么用go开发alertmanger实现钉钉报警
    这篇文章主要讲解了“怎么用go开发alertmanger实现钉钉报警”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用go开发alertmanger实现钉钉报警”吧!通过自己的url实现a...
    99+
    2023-06-20
  • 钉钉开发预警系统
    在使用该系统的过程中,我们可以清晰地看到该系统的工作流程。首先,开发任务管理模块会根据开发任务的紧急程度和重要程度,设置提醒时间。系统会在规定的时间内进行提醒,以保证开发人员和测试人员不会因为时间的问题而影响工作效率。其次,系统会对开发任务...
    99+
    2023-10-28
    预警系统
  • docker部署钉钉机器人报警通知的实现
    本文主要介绍了docker部署钉钉机器人报警通知的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 目录结构...
    99+
    2024-04-02
  • 如何使用Laravel实现钉钉接收系统警报
    这篇文章主要介绍了如何使用Laravel实现钉钉接收系统警报,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。钉钉提供的聊天机器人功能,可以使用自定义机器人的 webhook 我...
    99+
    2023-06-26
  • docker部署钉钉机器人报警通知怎么实现
    这篇文章主要介绍“docker部署钉钉机器人报警通知怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“docker部署钉钉机器人报警通知怎么实现”文章能帮助大家解决问题。目录结构[root@no...
    99+
    2023-06-30
  • 怎么用smokeping实现钉钉告警功能
    这篇文章主要讲解了“怎么用smokeping实现钉钉告警功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用smokeping实现钉钉告警功能”吧!第一:钉钉机器人API获取方式钉钉开放...
    99+
    2023-06-04
  • 基于Python实现开发钉钉通知机器人
    目录1.准备2.Python 钉钉机器人通知代码3.钉钉机器人支持Markdown在项目协同工作或自动化流程完成时,我们需要用一定的手段通知自己或他人。比如说,当服务器CPU使用率达...
    99+
    2023-02-07
    Python钉钉通知机器人 Python钉钉通知 Python钉钉机器人
  • shell 操作钉钉机器人实现告警提醒的方法
    我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看。随着手机APP的发展,很多告警开始发送到IM软件上去。目前比较常用的是发送到微信和钉钉上,今天我们将重点放在钉钉上。群机器人是钉钉群...
    99+
    2022-06-04
    shell 钉钉告警提醒 shell 告警提醒
  • SpringBoot-Admin实现微服务监控+健康检查+钉钉告警
    基于SpringCloud微服务平台,进行服务实例监控及健康检查,注册中心为eureka,SpringBoot提供了很好的组件SpringBoot Admin,2.X版本直接可以配置...
    99+
    2024-04-02
  • 如何使用shell操作钉钉机器人实现告警提醒
    这篇文章将为大家详细讲解有关如何使用shell操作钉钉机器人实现告警提醒,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看...
    99+
    2023-06-09
  • zabbix3.4.15用python实现钉钉机器人告警的方法是什么
    zabbix3.4.15用python实现钉钉机器人告警的方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。zabbix服务器监控到异常,可以通过钉钉机器人进行报警通...
    99+
    2023-06-05
  • SpringBoot-Admin如何实现微服务监控+健康检查+钉钉告警
    小编给大家分享一下SpringBoot-Admin如何实现微服务监控+健康检查+钉钉告警,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!基于SpringCloud微服务平台,进行服务实例监控及健康检查,注册中心为eureka...
    99+
    2023-06-25
  • Golang怎么实现发送钉钉机器人消息
    本篇内容介绍了“Golang怎么实现发送钉钉机器人消息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!创建一个钉钉机器人, 必须使用加签方式 ...
    99+
    2023-06-22
  • Java利用钉钉机器人实现发送群消息
    目录添加群机器人Java请求示例官方SDK请求示例pom引入官方SDK群消息通知方法添加群机器人 可以查看这篇文章:添加机器人到钉钉群 使用命令行工具curl快速验证自定义机器人是否...
    99+
    2024-04-02
  • Python基于钉钉监控发送消息提醒的实现
    目录一.使用前设置钉钉二.安全设置三.发送请求四.完整代码一.使用前设置钉钉 1.既然是使用钉钉消息提醒,那么第需要有钉钉。 2.第二步自定义机器人是群机器人,所以需要有个群。 3...
    99+
    2024-04-02
  • Golang两行代码实现发送钉钉机器人消息
    废话不多说, 先看代码 创建一个钉钉机器人, 必须使用加签方式 1. 安装 ding 模块包 go get -u github.com/wanghuiyt/ding 2. 普...
    99+
    2024-04-02
  • python分析实现微信钉钉等软件多开分身
    目前很多软件都限制单实例,大多数软件都是用Mutex来实现的 而这个东西咱们可以用handle去干掉它,并且不影响使用。 钉钉也是一样的步骤 不过Mutex的名字不一样 我测试的钉钉...
    99+
    2024-04-02
  • python怎么实现微信钉钉等软件多开分身
    今天小编给大家分享一下python怎么实现微信钉钉等软件多开分身的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。目前很多软件都...
    99+
    2023-06-29
  • Python基于钉钉监控发送消息提醒怎么实现
    这篇文章主要介绍“Python基于钉钉监控发送消息提醒怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python基于钉钉监控发送消息提醒怎么实现”文章能帮助大家解决问题。一.使用前设置钉钉既...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作