zoukankan      html  css  js  c++  java
  • 基于钉钉服务简单监控

    对于互联网公司。监控就像自己的眼睛,没有眼睛的人,面临的灾难可想而知,所谓无监控不调优,目前的监控总共分几类:

    一类 服务级别监控:(服务是否可用,磁盘是否足够,cpu是否高)这个创业公司都是直接用云的赋能服务,目前简单的监控,容器化后,k8s帮我做了很多

    二类 业务级别监控:(QPS、RT、失败比例、错误日志等)业务级别的监控,一般大的公司都有针对自己的特点对开源框架的组合。之前公司采用的是:

                                        监控埋点日志->KAFKA->influshdb-> 前端grafana展示 。 

    目前创业公司,时间和资源有限,就在考虑一种简单的能快速上线的方案。下面采用的就是简单的基于钉钉的监控:

      首先平时一直在用钉钉,比较赞的地方,钉钉提供了非常方便可以定义的钉钉机器人,可以通过webhook方式推送消息和格式。

      具体可参考: https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1

    具体实现:

    简单版本实现: 通过每个服务接口异常进行捕获,对异常消息进行处理同时采用线程池(单线程:纯内存操作不是IO操作)方式推送消息到本地队列,队列限制大小(可配置),避免无限制推送

    然后推送模块定时按一定频率(可配置)获取消息。然后推送消息到钉钉机器人。引入方式各个服务接入jar

    后续版本扩展

            是否可以同样多种推送方式(邮件、短信、钉钉)

            是否支持多种存储消息方式(内存队列、MQ、Redis)       

            是否可以接入简单的统计(方法执行时间、方法访问量、超时告警等)

    1、整体流程

    2、实现细节(Spring boot接入)

         具体源码就不公开了

         1、利用spring boot的自动注入功能。在spring.factories 中增加启动注入

         2、利用ConditionalOnProperty注解中增加配置 只有注解启用时候才会加载成功

    @Configuration
    @EnableConfigurationProperties(DingtalkProperties.class)
    @ConditionalOnProperty(value = "monitor.alert.dingtalk.enble",havingValue ="true")

        3、DingtalkProperties中配置参数

            配置参数:

    1 monitor:
    2   alert:
    3    dingtalk:
    4      enble: true
    5      phone: [xxxx,xxxx]
    6      url: https://oapi.dingtalk.com/robot/send? access_token=

            这样服务接入的时候更灵活,简单~

    参数名

    可选值

    默认值

    描述

    示例

    enable

    true| false

    false

    true 启用

    false 禁用

    如上

    phone

    手机号

    通知人手机号,多个人用逗号隔开

    如上

    url

    url地址

    通知的地址,必填项

    如上

    level

    short|full

    short

    通知信息是否缩短

    short:通知内容最长500个字符

    full:通知内容不做缩短

    建议默认值

    capacity

    整数

    100

    存储异常信息个数,超过阈值不进行推送

    建议默认值

    pull-interval

    整数

    5000

    报警时间间隔(ms)

    可自定义修改

    at-all

    true| false

    false

    组内所有都会被通知

    建议默认值

    env

    字符串

    Spring激活环境

    dev|test|pro等

    可自定义修改

    applicationName

    字符串

    Spring应用名称

    order-service|user-service等

    可自定义修改

          4、接入方式(jar包引入)

               告警通知需要满足条件:

      •  @AccessService注解的类或方法中抛出的异常
      •   配置文件中启用了监控(即enable:true)

           5、通知效果

                 

                 

  • 相关阅读:
    【转】Hive Data Manipulation Language
    【转】Vim显示中文乱码
    【转】Twitter算法面试题详解(Java实现)
    【转】判断单链表中是否存在环及查找环的入口点
    【转】SQL语句面试题
    【转】经典的SQL语句面试题
    【转】Java实现折半查找(二分查找)的递归和非递归算法
    【转】[IT综合面试]牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
    【笔试/面试题】中科创达——9.28(持续更新ing)
    百度2014校园招聘笔试题(成都站,软件研发岗)——2014.09.21
  • 原文地址:https://www.cnblogs.com/mxmbk/p/9491558.html
Copyright © 2011-2022 走看看