SpringBoot + 钉钉机器人 == Java应用监控告警

本文介绍了如何借助SpringBoot和钉钉自定义机器人来构建应用的监控告警系统。通过创建钉钉群聊和机器人,设置Webhook地址,然后在SpringBoot应用中设计告警服务、消息队列、告警线程和数据发送服务,实现实时监控并发送错误信息到钉钉群,从而及时处理线上异常。
摘要由CSDN通过智能技术生成

背景: 在大型系统中,线上异常出现是必然的结果,那么我们该如何尽可能在早期就发现应用运行有问题并及时的处理以免扩大影响范围呢?

答案是 给应用加监控并告警错误信息。

本文借助SpringBoot +钉钉来实现应用的监控告警,当然也可以借助企业微信、短信通知等等

钉钉开发平台-自定义机器人接入文档

image.png

看了一下钉钉的文档,可发现通过调用Webhook地址可将告警消息发送到群聊里来实现消息通知的功能

实现步骤

获取调用地址
  • 先创建一个钉钉群,并创建自定义机器人

选择其中一项安全设置,可加强安全性,防止Webhook地址泄密被乱发消息

image.png

  • 创建成功,复制Webhook地址,等下需要用到

image.png

创建SpringBoot应用
  • 项目结构

image.png

WarnService

定义上报错误信息的接口

错误信息会添加到队列里MonitorMessageQueue

interface WarnService {
   
    fun reportErrorMsg(moduleName: String, msg: String)

}

@Service
class WarnServiceImpl : WarnService {
   
    @Autowired
    private lateinit var monitorMessageQueue: MonitorMessageQueue
    override fun reportErrorMsg(moduleName: String, msg: String) {
   
        monitorMessageQueue.add(MessageDto().apply {
   
            this.moduleName = moduleName
            this.content = msg
            this.timestamp = System.currentTimeMillis()
        })
    }
MonitorMessageQueue队列

队列提供的方法

  • start:启动守护线程
  • drain:等待超时返回队列元素,这里设置30秒超时返回
  • add:添加元素到队列里

@Component
@Scope("singleton")
class MonitorMessageQueue {
   
    private val queue: BlockingQueue<MessageDto> = LinkedBlockingQueue()
    private val logger = LoggerFactory.getLogger(MonitorMessageQueue::class.java)

    @Autowired
    private lateinit var sendService: DataSendService

    @PostConstruct
    private fun start() {
   
        logger.info("MonitorMessageQueue start")
        val thread = Thread(
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值