监控告警02--夜莺飞书告警-v4版本

2023-11-13

监控告警02--夜莺飞书告警-v4版本

1 介绍

v4版本的夜莺集成了shell、api、wechat、wechat_robot、dingtalk_robot 等5中常见的告警,然而没有集成飞书告警。当前飞书已经被很多企业采纳,因此做企业运维平台的时候很有必要将告警通知发送到飞书。
使用过钉钉和飞书的小伙伴肯定都知道,可以通过群机器人的webhook来发送告警,基于这种方式我们只需要改动源码中 send_im模块,去掉多余的参数和数据结构,将钉钉相关的接口更改为飞书接口,然后重新编译生成server即可。
本文基于v4源码dingtalk模块,将其改动为支持飞书告警。笔者会在下一篇博文参考dingtalk模块追加一个feishu模块,使其能同时保持飞书和钉钉告警通知功能。

2 方法

笔者在之前的博文 监控告警01–夜莺部署与接入 已经介绍了夜莺的基础安装方法,此处不再重复,本文主要介绍一种快速让夜莺v4向飞书发送告警的方式,具体改动如下。

2.1 源码改动

  1. 修改 src/modules/server/dingtalk/dingtalk.go
    此处修改了部分原有的数据结构,去掉了不必要的参数,也调整了RobotSend 的参数,具体如下:
    package dingtalk
    
    import (
    	   "bytes"
    	   "encoding/json"
    	   "fmt"
        "io/ioutil"
        "net/http"
    )
    
    type Result struct {
        ErrCode int    `json:"errcode"`
        ErrMsg  string `json:"errmsg"`
    }
    
    type dingReqData struct {
        Msgtype string       `json:"msg_type"`
        Content *textContent `json:"content"`
    }
    
    type textContent struct {
        Text string `json:"text"`
    }
    
    // RobotSend robot发送信息
    func RobotSend(tokenUser, sendContent string) error {
        url := "https://open.feishu.cn/open-apis/bot/v2/hook/" + tokenUser
        dingReqData := new(dingReqData)
        dingReqData.Msgtype = "text"
        reqContent := new(textContent)
        reqContent.Text = sendContent
        dingReqData.Content = reqContent
        // fmt.Println(dingReqData)
    
    	   content, err := json.Marshal(dingReqData)
        if err != nil {
     	   return fmt.Errorf("dingtalk marshal req data err: %v", err)
        }
    
        data := bytes.NewReader(content)
        req, err := http.NewRequest("POST", url, data)
        if err != nil {
     	   return fmt.Errorf("dingtalk create new req err: %v", err)
        }
        req.Header.Set("Content-Type", "application/json")
    
        r, err := http.DefaultClient.Do(req)
        if err != nil {
     	   return fmt.Errorf("dingtalk do req err: %v", err)
        }
        defer r.Body.Close()
    
        resp, err := ioutil.ReadAll(r.Body)
        if err != nil {
     	   return fmt.Errorf("dingtalk read req body err: %v", err)
        }
    
        result := Result{}
        err = json.Unmarshal(resp, &result)
        if err != nil {
     	   return fmt.Errorf("dingtalk unmarshal req content err: %v", err)
        }
    
        if result.ErrCode != 0 {
     	   err = fmt.Errorf("dingtalk req return ErrCode = %d ErrMsg = %s", result.ErrCode, result.ErrMsg)
        }
        return err
    }
    
    //func main() {
    //	ret := RobotSend("********-change to your webhook code-************", "This is a test")
    //	fmt.Println(ret)
    //}
    
  2. 修改 src/modules/server/cron/sender_im.go
    需要同步修改sendImByDingTalkRobot 函数中的 dingtalk.RobotSend 调用
    func sendImByDingTalkRobot(message *dataobj.Message) {
        ......
        for _, u := range tokenUser {
     	   err := dingtalk.RobotSend(u, message.Content)
     	   if err != nil {
     		   logger.Warningf("im dingtalk_robot send to %s fail: %v", u, err)
     	   } else {
     		   logger.Infof("im dingtalk_robot send to %s succ", u)
     	   }
        }
    }
    

2.2 测试效果

修改代码后,直接在src/modules/server 执行go build 就会生成server可执行文件,此时将该文件拷贝到之前安装的目录,覆盖已有的二进制文件,然后重启server即可。
此处为测试的告警信息:
在这里插入图片描述

3 说明

nightingale github
监控告警01–夜莺部署与接入

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

监控告警02--夜莺飞书告警-v4版本 的相关文章

  • DEVOPS 持续部署的例子:IMVU

    持续部署的例子 IMVU IMVU是一家社交娱乐公司 它的产品允许用户以一种3D阿凡达式的体验互相连接起来 本节内容改编自一位IMVU工程师所写的博客 IMVU采用了持续集成 开发人员尽早提交并经常提交 每次提交都触发测试套件的执行 IMV
  • 如何部署到现有的powerBI工作区?

    我正在尝试实施 powerBI部署管道 https learn microsoft com en us power bi create reports deployment pipelines overview 我已经为每个环境 开发 测试
  • 如何计算 docker 限制

    我创建了我的码头工人 Python Flask 如何计算内存和 CPU 的限制 我们是否有一些工具可以在具有不同限制的 docker 上运行性能测试 然后建议设置的最佳限制数字是多少 对于已经在容器内运行的应用程序 您可以使用docker
  • 2024年度 ROTS - 实时操作系统 Top 15

    RTOS 实时操作系统 这里说的 RTOS 并非新星球大战电影中的机器人 而是物联网设备 航空系统 空中交通管制等背后的无声协调者 就在地球上 RTOS 或称实时操作系统 设计它们是为了更好的管理资源 以及为一些对时间点有精确要求的应用运行
  • 这套Go语言开发框架组合真的非常高效

    我尝试过很多框架 从Django Flask和Laravel到NextJS和SvelteKit 到目前为止 这是我唯一可以使用的不会让我感到疯狂或者放弃项目的堆栈 框架 我喜欢所有这些框架 但我只是不太适应它们的设计方式 实际上 我是一个弱
  • GitLab Pipeline 无法连接到 Kubernetes

    当我执行视频显示的管道作业时 它失败并给出一条消息 错误 准备失败 连接到 Kubernetes 时出错 配置无效 未提供配置 这是故意的吗 我错过了任何配置吗 kubernetes 是为我的跑步者和我正在处理的项目配置的 但我没有看到任何
  • 错误:服务“xxx”使用未定义的网络“xxx”

    它一直对我说网络是不明确的 错误 服务frontend network使用未定义的网络frontend network 然而 我看到已经有这样一个网络 docker网络ls 我错过了什么 我需要你的帮助 我在谷歌上读了很多相关内容 但找不到
  • Greenlet 运行时错误和在 docker 中部署的应用程序不断启动所有工作人员

    RuntimeWarning greenlet greenlet 大小已更改 可能表示二进制 不兼容 预期来自 C 标头的 144 从 PyObject 得到的为 152 所有的工人都被解雇了 2020 09 28T14 09 41 864
  • 在 Premesis 或 Bluemix 等 PaaS 上使用 XPage 进行 DevOps

    使用 XPage 实现 DevOps 的最佳方式是什么 多个开发人员作为一个团队工作 本地服务器 Dev QA Prod 我们可以复制到 Bluemix 吗 源代码控制自动化测试 UI 应用程序 使用测试框架对业务逻辑进行单元测试 自动化部
  • 在开发与生产版本中自动更改 Vite 代理位置?

    在我正在开发的单页应用程序中 我正在使用 Vite 并在我的vite config ts文件我有以下代理 proxy v1 target https 127 0 0 1 8080 changeOrigin true secure false
  • Kubernetes 集群未将外部 IP 公开为

    这是我的 service yaml 代码 kind Service apiVersion v1 metadata name login spec selector app login ports protocol TCP name http
  • 在 VSTS 中执行运行功能测试任务时出错

    在 VSTS 2015 中 我们在使用 NUnit 测试框架的项目中构建和发布管道设置 我们正在尝试使用 运行功能任务 配置集成测试用例执行 任务配置如下面的屏幕截图所示 可视化测试代理部署任务用于在目标计算机中部署 NUnit 测试代理
  • Terraform - 我应该使用 user_data 还是 Provisioner 来引导资源?

    看来我可以使用user data使用模板文件或 远程执行 provisioner使用内联命令进行引导 那么哪一个被认为更惯用呢 你应该使用user data The 用户数据 http docs aws amazon com AWSEC2
  • Docker 守护进程未运行

    这方面的新手 我已经在我的 Windows PC 上安装了新版本的 Docker 我使用的是 Windows 10 专业版 我已经尝试了非常基本的 docker 命令 但它不起作用 我还以管理员身份运行 docker 总是出现以下错误 do
  • 如何将 GitLab CI 文件变量传递给 Dockerfile 和 docker 容器?

    GitLab CI 允许向项目添加自定义变量 它允许使用类型的秘密变量file我指定的键是变量名称 值是文件的内容 例如证书的内容 然后在管道执行期间 内容将被保存为临时文件 调用变量名称将返回创建文件的路径 最终我需要将此文件复制到构建项
  • 如何从 docker 容器运行 webpack 构建?

    我正在制作的应用程序是用 ES6 编写的 其他好东西是由 Docker 容器内的 webpack 转译的 目前 一切工作从创建内部目录 安装依赖项到创建编译的捆绑文件 当运行容器时 它说 dist bundle js 不存在 除非我在主机目
  • 为 Azure Bot 服务设置插槽或多个环境

    我正在使用 Azure Bot 服务开发 Microsoft Bot 希望为 QA 开发 暂存设置不同的环境或插槽 就像我们在 azure 应用程序服务中所做的那样 在设置中 我没有找到 部署槽位 选项 但在设置下 每个设置都有 槽位设置
  • 如何对私有 jelastic 环境进行版本控制

    为了跟踪 Jelastic 托管环境的配置 我想在 git 存储库中对其进行版本控制 该存储库应该是私有的 并包含多个具有不同版本的不同分支 例如master abc123 v1 1 我的第一次尝试是创建一个私有 github 存储库 其中
  • 如何在 Jenkins 控制台输出中隐藏 checkout scm 步骤输出

    我在 Jenkinsfile 脚本化管道 中的第一个阶段是 checkout scm 它简要描述了 GitHub checkouts 和所有修订相关的内容我不想在 Jenkins 控制台输出中显示 是否可以将其隐藏在 Jenkins 的控制
  • Azure Devops Pipeline 环境资源代理安装问题

    我一直在尝试在 azure devops 中向我们的管道添加环境资源 但每次我使用他们提供的 powershell 脚本安装它时 它都会要求我提供标签 如果我不想输入标签 则会出错 如果我选择放入标签 则会出错 无论哪种方式 它每次都会重新

随机推荐

  • android刘海屏之终极适配

    前言 作为安卓开发 也得承认苹果设计一直在引领潮流 所以自从 iPhone X 发布之后 刘海屏 就一直被热议 作为我自己必须先吐槽一下 真没觉得刘海屏好看 但是作为苦逼的开发者 还是要必须去适配刘海屏的 自然而然的在吐槽完毕以后还是有了这
  • Python爬虫技巧:使用代理IP和User-Agent应对反爬虫机制

    在当今的网络环境中 反爬虫机制广泛应用于各个网站 为爬虫程序增加了困难 然而 作为一名Python爬虫开发者 我们可以利用一些技巧应对这些反爬虫措施 本文将分享一个重要的爬虫技巧 使用代理IP和User Agent来应对反爬虫机制 帮助您更
  • JAVA中的异常和错误

    异常 Exception 异常可分为两类 运行期异常 RuntimeException 和受检异常 CheckedException 运行期异常 定义 RuntimeException及其子类都被称为运行时异常 特点 Java编译器不会检查
  • cocos命令编译Android平台,sdk版本错误解决方案

    cocos compile p android运行以后出现the android platform should be equal larger than 10的解决方案 可以使用以下命令 解决此问题 cocos compile p and
  • 【论文翻译】【剪枝】Pruning filters for efficient convnets修剪滤波以实现高效卷积网络

    摘要 神经网络在各种应用中的成功伴随着计算和参数存储成本的显著增加 最近为减少这些开销所做的努力包括在不损害原始精度的情况下修剪和压缩各个层的权重 然而 基于大小的权重修剪减少了来自全连接层的大量参数 并且由于修剪后的网络中的不规则稀疏性
  • 关于vue轮播vue-seamless-scroll自动滚动插件复制出来的数据点击事件无效

    关于vue轮播vue seamless scroll自动滚动插件复制出来的数据点击事件无效 关于vue seamless scroll 我的问题 然后又又又有新的问题了 改变插件 使用 vue j scroll总结 关于vue seamle
  • 100道Python基础入门练习题(附答案)

    我们都知道实践是检验真理的唯一标准 想知道自己学会了多少 不妨来做题检验一下吧 今天给大家分享的100道Python基础练习题 因为篇幅有限 先给大家准备了前10道例题 需要全部习题 这些知识部分习题 篇幅还是比较多的 这份完整版的Pyth
  • Linux下ffmpeg的卸载与安装

    ubuntu下比较容易安装会自动安装依赖 sudo add apt repository ppa kirillshkrogalev ffmpeg next sudo apt get update sudo apt get install f
  • FFmpeg av_interleaved_write_frame错误

    av interleaved write frame 1 av interleaved write frame 崩溃 检查 传入的AVPacket中的pts和dts AVFormatContext中的AVStream中的time base
  • 3分钟学会在C ++中以编程方式合并Excel工作表中的单元格

    合并和取消合并单元格是Microsoft Excel的一项简单且常用功能 合并单元格可能会在某些情况下很有用 例如 当工作表中有多个列共享相同的标题时 可以合并列上方的单元格以使其具有共同的标题 如果不再需要合并的单元格 则可以轻松地取消合
  • (五十一)时间序列分析二:平稳时间序列分析(ARMA)

    平稳时间序列 平稳时间序列分为严平稳时间序列与宽平稳时间序列 如果在一个时间序列中 各期数据的联合概零分布与时间 t 无关 则该序列为严平稳时间序列 实际中讨论的平稳时间序列是宽平稳时间序列 指对任意时间下 序列的均值 方差存在并为常数 且
  • 超声波模块详细介绍(stm32循迹小车中超声波的介绍)

    超声波模块详细介绍 stm32循迹小车中超声波的介绍 超声波模块是非常重要的一个模块 今天给大家全面介绍一下超声波模块的原理以及用法 代码的编写 1 超声波模块的认识 首先 市面上的常见超声波模块主要分为以下几种 HC SR04超音波模块
  • 你一无所有,你拥有一切

    你一无所有 你拥有一切 当看到这一篇文章标题的时候 会引起你怎样的共鸣呢 人总是需要从别处获得力量的 我想与更多的人分享 以此勉励我们自己 一 嘴上说说的人生 那年我在离家的时候一个劲地往自己的硬盘里塞 灌篮高手 我妈一副嗤之以鼻的表情看着
  • VMware16安装步骤与初步使用避免踩坑的安装教程

    VMware16安装步骤与初步使用避免踩坑的安装教程 一 软件介绍 VMware Workstation 中文名 威睿工作站 是一款功能强大的桌面虚拟计算机软件 提供用户可在单一的桌面上同时运行不同的操作系统 和进行开发 测试 部署新的应用
  • Fisco Bcos区块链三(WeBASE中间件平台一键部署)

    文章目录 区块链开荒 技术文档 https webasedoc readthedocs io zh CN latest index html 二 WeBASE一键部署 1 前提条件 1 检查环境 1 平台要求 2 检查Java 3 检查my
  • EfficientNet详解

    EfficientNets EfficientNets NAS neural architecture search Single Scaling Compound Scaling EfficientNet Rethinking Model
  • TheDAO被攻击事件考察报告

    作者 ChinaLedge联盟 段玺 Andy Dan 简介 北京时间2016年6月17日发生了在区块链历史上留下沉重一笔的攻击事件 由于 其编写的智能合约存在着重大缺陷 区块链业界最大的众筹项目TheDAO 被攻击前 拥有1亿美元左右资产
  • Android-Notes|BottomNavigationView-爱上-Lottie,android高级开发面试题

    复制代码 封装个 BasicData 存放 App 内置的一些基本数据 这里主要针对 Lottie 文件 val mNavigationAnimationList arrayListOf LottieAnimation HOME Lotti
  • ORA-16009 remote archive log destination must be a STANDBY database

    ORA 16009错误处理 问题描述 主备在做Switchover切换时 在切换后的备库报如下错误 Wed Jul 22 04 49 02 2015 Errors in file u01 app oracle admin orcl bdum
  • 监控告警02--夜莺飞书告警-v4版本

    监控告警02 夜莺飞书告警 v4版本 1 介绍 2 方法 2 1 源码改动 2 2 测试效果 3 说明 1 介绍 v4版本的夜莺集成了shell api wechat wechat robot dingtalk robot 等5中常见的告警