基于skywalking、es watcher 告警的webhook

这篇具有很好参考价值的文章主要介绍了基于skywalking、es watcher 告警的webhook。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

paas-alert design

概要

为了线上服务的稳定性、可用性,引入skywalking 针对trace、metric可视化,EFK做日志可视化。基于业务层现在可视化信息,我们采用skywalking服务度量信息和日志系统中日志进行监控,从而达到对部署环境中实例运行状况进行监控。paas-alert为了可以提供多种灵活配置告警通知方式和告警信息的统一管理。

监控架构图

基于skywalking、es watcher 告警的webhook

paas-alert 流程图

基于skywalking、es watcher 告警的webhook

Paas-alert数据库设计

数据库一共有两种表:paas_alert_info(存储 告警信息);paas_alert_rule_config(告警配置)

paas_alert_info字段设计:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `paas_alert_info`;
CREATE TABLE `paas_alert_info` (
  `id` varchar(128) COLLATE utf8mb4_general_ci NOT NULL,
  `alert_rule_config_id` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '告警规则配置id',
  `alert_rule_name` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '告警规则名',
  `alert_service_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发生告警的服务名',
  `alert_scope` varchar(16) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '业务类型,如服务、接口、调用关系',
  `alert_extent_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '告警第三方扩展id,用于记录有id的源告警id',
  `alert_message` varchar(1024) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '告警信息',
  `alert_handlers` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '告警处理人列表',
  `alert_env` varchar(16) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '服务所在环境',
  `alert_source` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '告警来源',
  `alert_notify_type` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '告警通知类型 dingDingRobot email',
  `alert_trigger_time` datetime DEFAULT NULL COMMENT '告警触发时间',
  `valid` int DEFAULT NULL,
  `alert_status` bigint DEFAULT '1' COMMENT '告警通知发送状态 0失败 1成功',
  `creator` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `creation_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

SET FOREIGN_KEY_CHECKS = 1;

paas_alert_rule_config字段设计:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for paas_alert_rule_config
-- ----------------------------
DROP TABLE IF EXISTS `paas_alert_rule_config`;
CREATE TABLE `paas_alert_rule_config` (
  `id` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `alert_rule_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `alert_env` varchar(16) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '告警环境',
  `alert_source` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'skywalking、es_watcher',
  `alert_notify_type` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '通知类型  dingDingRobot、email   。以逗号分开,如果设置对应通知类型,就要再alert_handlers_email和alert_handlers_phone设置对应数据',
  `alert_handlers_email` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '告警处理人邮箱',
  `alert_handlers_phone` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '告警处理人手机号',
  `alert_url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支持告警类型中发送通知的url,比如钉钉自定义机器人发送通知',
  `alert_rule_description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '规则描述',
  `valid` bigint DEFAULT '1' COMMENT '告警规则状态',
  `creation_time` datetime DEFAULT NULL,
  `creator` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `modified_time` datetime DEFAULT NULL,
  `modifier` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
  UNIQUE KEY `ruleName_source_index` (`alert_source`,`alert_rule_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- ----------------------------
-- Records of paas_alert_rule_config
-- ----------------------------


特说说明:现在的paas_alert_rule_config信息是直接录入到数据库的,没有对应的可视化控制台

告警信息格式

告警信息格式:

环境名:dev

告警规则名:123456

告警服务名:service nn

告警信息:this is alert message

告警字段映射表

告警信息字段 skywalking对应字段 es watcer 对应字段
环境名 skywalking对应的是告警配置中的tags env字段 watcher的metadata env字段
告警规则名 对应skywalking中alarm.yml中以_rule结尾的告警规则名 对应es watcher 日志告警 是watcher id
告警服务名 skywalking webhook上报的service字段 watcher的metadata serviceName
告警信息 对应skywalking中告警配置的中信息 es watcher 中webhook请求中的body种的字段alertMessage

适配skywalking alert

适配skywalking告警详细见官网文档中的webhook模块。

适配es watcher 日志告警

示例:

es watcher 如下:文章来源地址https://www.toymoban.com/news/detail-421007.html

PUT _watcher/watch/123456
{

"metadata" : { # 调用paas-alert原始数据
    "env" : "dev",
    "serviceName" : "consumer",
    "scope":"service"
  },
  "trigger": {
    "schedule": {
      "interval": "1m"
    }
  },
  "input": {
    "search": {
      "request": {
        "body": {
          "size": 0,
          "query": {
            "bool": {
              "filter": {
                "range": {
                  "@timestamp": {
                    "gte": "{{ctx.trigger.scheduled_time}}||-50m",
                    "lte": "{{ctx.trigger.scheduled_time}}",
                    "format": "strict_date_optional_time||epoch_millis"
                  }
                }
              },
              "must": [{"term":{"loglevel":"WARN"}}]
            }
          }
        },
        "indices": [
          "<paas-cloud-log_dmp-rwd_dmp-dev_{now/d}>"
        ]
      }
    }
  },
  "condition" : {
    "compare" : { "ctx.payload.hits.total" : { "gt" : 5 }}
  },
  "actions" : {
  "my_webhook" : {
    "throttle_period" : "1m",
    "webhook" : {
      "method" : "POST",
      "scheme" : "http",
      "host" : "127.0.0.1",  # paas-alert host
      "port" : 9910,     # paas-alert port
      "path": "/paas/alert/es/watcher", # 对应paas-alert 针对es watcer 告警接口
      "headers" : {
        "Content-Type" : "application/json" 
      },
      "body" : """{
         "env":"{{ctx.metadata.env}}", # 对应metadata数据
         "alertName":"{{ctx.watch_id}}",
         "alertServiceName":"{{ctx.metadata.serviceName}}",
         "scope":"{{ctx.metadata.scope}}",
         "startTime":"{{ctx.trigger.triggered_time}}",
         "alertMessage":"There are {{ctx.payload.hits.total}} documents in your index. Threshold is 5 in last 50 minutes"
      }"""
      }
    }
  }
}

到了这里,关于基于skywalking、es watcher 告警的webhook的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警

    1、服务端口规划: 服务 端口 Prometheus 59090 Node_exporter 59100 Alertanager 9093 Webhook-dingtalk 8060 2、本次实验架构调用图如下: 3、钉钉创建机器人保存Webhook地址: 总共需要保存两项,我们后续会用到: 1、加签后的秘钥 2、webhook地址 安装配置只涉及到安装及正常启动无误,并不涉及

    2024年02月11日
    浏览(31)
  • 利用钉钉机器人Webhook向钉钉群推送告警通知

    一、配置钉钉群 1、新建一个接收通知的钉钉群 如下图,创建一个接收通知的钉钉群   选择项目群,点创建   输入群名称,右侧选择群成员,最后点击右下角的创建   2、对群进行设置 点群右上角的设置按钮    点击 “智能群助手”   点 “添加机器人”   点 添加机器人

    2023年04月15日
    浏览(52)
  • Java项目中利用飞书自定义机器人Webhook向飞书群推送告警通知

    今天来看一下如何在Java项目中利用飞书的自定义机器人Webhook向飞书群推送告警通知         企业存在给 特定群组 自动推送消息的需求,比如:监控报警推送、销售线索推送、运营内容推送等。        你可以在群聊中添加一个 自定义机器人 ,通过服务端调用  webh

    2023年04月14日
    浏览(90)
  • SkyWalking 部署(包含ES)

    首先SkyWalking主要需要oapService、webApp、Elasticsearch(可选存储)三个,接下来讲一下这三个的安装步骤,安装过程中出现了一些细小的配置错误,导致用了快两天才弄好,麻木了(主要是不同版本有差异性)。 版本及对应下载: 名称 版本 下载地址(个人存放地址,不稳定) Sk

    2024年02月13日
    浏览(36)
  • docker部署SkyWalking+ES

    1.1去dockerHub官网(https://hub.docker.com/)搜索镜像 1.2 镜像拉取 1.3镜像运行 视图切换到Overview 一直往下翻,就能看到启动命令: --net somenetwork是自定义网络,暂时用不到。tag替换成自己需要的,我们这边是7.5.1。 我的linux内存比较小,所以加了启动参数  -e ES_JAVA_OPTS=\\\"-Xms512m -X

    2024年04月14日
    浏览(40)
  • ES告警之ElastAlert

    ElastAlert是一个简单易用的框架,用于从Elasticsearch中的数据发现异常,或其他感兴趣的模式的警报。如果有近乎实时的数据写入Elasticsearch,并且想要在数据与某些模式匹配时收到警报,则ElasticAlert是个不错的工具。 ElastAlert包含几种具有常见监视范例的规则类型: “匹配Y时间

    2024年02月09日
    浏览(37)
  • k8s部署es和skywalking

    使用k8s部署es和skywalking skywalking架构 整个架构,分成上、下、左、右四部分: 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传

    2024年02月03日
    浏览(37)
  • Skywalking8.5.0-ES7 Rancher部署及ES高可用部署过程记录

    近期本司内部需要用到Skywalking进行链路追踪和日志收集,故记录下部署过程,方便后期学习与查询。 ## 1.docker启动elasticsearch,并将内存设置的稍微大一些,然后进行端口和配置文件映射 docker exec -it elasticsearch bash进入到容器内 进入/usr/share/elasticsearch/bin目录 ./elasticsearch-setup-

    2024年02月11日
    浏览(39)
  • skywalking日志落到es字段timestamp不为date问题解决

    在通过skywalking将日志收集到es后,由于skywalking收集的日志(skywalking_log索引)没有date类型的字段导致在es上再索引模式中没有时间范围的查询。 skywalking收集的日志有时间戳字段timestamp,只是默认为long类型 于是我们可以通过提前定义字段类型为data来解决这个问题 以下解决方案

    2024年02月15日
    浏览(65)
  • k8s 部署 skywalking 并持久化到es

    skywalking集群情况下需要保证用同一数据源,这里我们存储方式改为es https://skywalking.apache.org/downloads/#Agents 2.2.1 创建项目server-order 并创建web控制层 2.2.2 创建项目web-monitor 并创建feign和monitor的控制层 2.2.3 增加环境变量 2.2.3 查看skywalking-ui链路 2.3.1 构建镜像 2.3.2 创建k8s无状态服

    2024年02月02日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包