阿里云容器服务Kubernetes(简称ACK)支持一键部署Istio,可以参考文档在ACK上部署使用Isito。Istio on ACK提供了丰富的监控能力,为网格中的服务收集遥测数据,其中Mixer是负责提供策略控制和遥测收集的Istio组件。使用Prometheus进行监控是Istio提供的监控能力之一。

告警能力在Prometheus的架构中被划分成两个独立的部分:Prometheus负责产生告警,而Alertmanager负责告警产生后的后续处理。如下所示,通过在Prometheus中定义告警规则,Prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向Alertmanager发送告警信息。

Alertmanager作为一个独立的组件,负责接收并处理来自Prometheus Server(也可以是其它的客户端程序)的告警信息。Alertmanager可以对这些告警信息进行进一步的处理,比如当接收到大量重复告警时能够消除重复的告警信息,同时对告警信息进行分组并且路由到正确的通知方,Prometheus内置了对邮件、Slack等多种通知方式的支持,同时还支持与Webhook的集成,以支持更多定制化的场景。例如,完全可以通过Webhook与钉钉机器人进行集成,从而通过钉钉接收告警信息。同时AlertManager还提供了静默和告警抑制机制来对告警通知行为进行优化。

以下介绍如何扩展AlertManager集成钉钉,并通过AlertManager帮助实现Istio on ACK在可观测性监控方面的能力。

通过Webhook集成钉钉
单击钉钉群右上角群设置图标,进入群设置页面。单击群机器人,进入群机器人页面,选择需要添加的机器人。此处选择自定义机器人。
在机器人详情页面,单击添加,进入添加机器人页面。

填写完配置群机器人信息后,单击完成添加。
单击复制,复制webhook地址。

部署AlertManager并对接钉钉
登录容器服务管理控制台。 在Kubernetes菜单下,单击左侧导航栏中的应用 > 无状态,进入 无状态(Deployment)页面。
选择目标集群,命名空间选为istio-system,单击右上角使用模板创建。
根据以下信息配置模板,完成后单击创建。

自定义YAML内容如下:

apiVersion: v1
kind: Service
metadata:
name: dingtalkservice
labels:
app: dingtalkservice
service: dingtalkservice
spec:
ports:

  • port: 8060
    name: http
    selector:
    app: dingtalkservice

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: dingtalkservice
    labels:
    app: dingtalkservice
    version: v1
    spec:
    replicas: 1
    template:
    metadata:
    labels:
    app: dingtalkservice
    version: v1
    spec:
    containers:

    • name: prometheus-webhook-dingtalk
      image: timonwong/prometheus-webhook-dingtalk
      imagePullPolicy: IfNotPresent
      args:

      • --ding.profile=webhook1={替换为上述步骤中复制的webhook地址}
        ports:
      • containerPort: 8060

        kind: ConfigMap
        apiVersion: v1
        metadata:
        name: alertmanager
        data:
        config.yml: |-
        global:
        resolve_timeout: 5m
        templates:

      • '/etc/alertmanager-templates/*.tmpl'
        route:
        group_by: ['alertname', 'cluster', 'service']
        group_wait: 30s
        group_interval: 5m
        repeat_interval: 1m
        receiver: webhook_alert
        routes:
    • match:
      severity: info
      receiver: webhook_alert
    • match:
      severity: warning
      receiver: webhook_alert
      receivers:

      • name: webhook_alert
        webhook_configs:
    • url: 'http://dingtalkservice:8060/dingtalk/webhook1/send'
      send_resolved: false

      apiVersion: v1
      kind: Service
      metadata:
      annotations:
      prometheus.io/scrape: 'true'
      prometheus.io/path: '/metrics'
      labels:
      name: alertmanager
      name: alertmanager
      spec:
      selector:
      app: alertmanager
      type: ClusterIP
      ports:

  • name: alertmanager
    protocol: TCP
    port: 9093
    targetPort: 9093

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: alertmanager
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: alertmanager
    template:
    metadata:
    name: alertmanager
    labels:
    app: alertmanager
    spec:
    containers:

    • name: alertmanager
      image: prom/alertmanager:v0.15.0
      args:

      • '--config.file=/etc/alertmanager/config.yml'
      • '--storage.path=/alertmanager'
        ports:

        • name: alertmanager
          containerPort: 9093
          volumeMounts:
        • name: config-volume
          mountPath: /etc/alertmanager
        • name: alertmanager
          mountPath: /alertmanager
          serviceAccountName: prometheus
          volumes:
    • name: config-volume
      configMap:
      name: alertmanager
    • name: alertmanager
      emptyDir: {}
      创建成功之后,单击左侧导航栏中的应用 > 容器组,选择相应的集群和命名空间istio-system, 可以看到如下类似的运行中的alertmanager和dingtalkservice容器组。

      创建Prometheus告警规则配置项
      登录 容器服务管理控制台。在Kubernetes菜单下,单击左侧导航栏中的应用配置 > 配置项,选择相应的集群与命名空间istio-system,点击右上角的创建按钮,进入创建配置项页面。
      输入配置项名称:prom-rules1。
      添加配置项,名称为rule1.yaml,值为如下内容:
      groups:

      • name: fake
        rules:
      • alert: rules-alert
        expr: |
        histogram_quantile(0.99, sum by(source_app, source_version, destination_service, destination_version, le) (irate(istio_request_duration_seconds_bucket[1m])) ) > 3
        for: 1m
        labels:
        alertname: "request-duration-3"
        annotations:
        summary: "Request duration gt 3"
        from: "{{ $labels.source_app }}:{{ $labels.source_version }}"
        to: "{{ $labels.destination_service }}:{{ $labels.destination_version }}"
        该规则描述过去1分钟内99%请求时延超过3s时会发出告警。

点击确定按钮。
集成AlertManager到Istio中
阿里云容器服务Kubernetes(简称ACK)支持一键部署Istio,可以参考文档在ACK上部署Isito。
默认部署中的Prometheus服务没有对接AlertManager,需要按照如下步骤进行配置。

登录容器服务管理控制台。
在 Kubernetes 菜单下,单击左侧导航栏的应用 > 发布,进入发布页面。
单击Helm,选择所需的集群,选择待更新的Istio,单击操作列的更新。

在弹出的对话框中,对Istio的Prometheus参数进行修改:

| 配置 | 说明 |


alerting:
alertmanagers:

  • static_configs:

    • targets: ["alertmanager:9093"]

修改完毕之后,单击更新。
告警规则触发验证
当你的应用服务调用满足触发条件时,在Prometheus控制台上,点击Alerts页签,可以看到如下类似内容。

同时,相应的钉钉群也会收到类似的告警信息,如下所示。

总结
在阿里云Kubernetes容器服务基础之上,快速搭建一套用于连接、管理以及安全化微服务的开放平台Istio,为应用引入和配置多个相关服务。使用Prometheus进行监控是Istio提供的监控能力之一,通过扩展AlertManager集成钉钉助力Istio on ACK可观测性监控能力。

转载于:https://blog.51cto.com/14031893/2411068

Istio on ACK集成生态(2): 扩展AlertManager集成钉钉助力可观测性监控能力相关推荐

  1. 融云 uni-app 原生插件,生态丰富、高效集成

    uni-app 作为业内最风靡的应用框架之一,支撑着 12 亿活跃手机用户的庞大生态.关注[融云全球互联网通信云]了解更多 这个框架因在小程序端的舒爽构建体验和丰富的开发生态而备受开发者青睐,同时可用 ...

  2. RTI路由服务---跨多个平台,系统和网络扩展和集成DDS系统

    RTI路由服务是一种开箱即用的解决方案,允许开发人员快速扩展和集成不同或地理位置分散的实时系统. 路由服务可用于跨不同域桥接DDS应用程序,以支持系统系统架构,互操作新旧应用程序,以支持新产品推出,同 ...

  3. Prometheus学习笔记(三)Alertmanager报警模块集成钉钉/企业微信机器人

    文章目录 一.简介 二.安装Alertmanager 三.报警规则 四.通知规则 4.1 钉钉告警 4.2 企业微信告警 一.简介 Alertmanager是Prometheus的一个报警通知组件,需 ...

  4. 金蝶云星空与钉钉对接集成采购订单查询打通发起审批实例(官方)

    来源系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台.金蝶K/3Cloud围绕着"生态.人人.体验&quo ...

  5. JeecgBoot低代码平台 2.4.5 版本发布,钉钉与企业微信集成版本

    项目介绍 JeecgBoot是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shi ...

  6. 钉钉宣布品牌全新升级 首次明确回答了自身和生态的关系

    3月22日消息,钉钉今天对外公布了品牌升级后的全新Slogan.Logo及品牌片,同时发布了体现钉钉深度开放能力的"酷应用".全新升级的钉钉6.5版本.钉闪会2.0版.钉钉F2视频 ...

  7. 1小时学会jenkins集成邮件/微信/钉钉通知

    01 邮件通知 邮件扩展插件安装Email Extension Plugin,如果已经安装了则不需要再装 该插件可以提供更详细的邮件发送设置 QQ邮箱准备 公司里会用企业邮箱作为发件人,相关信息找邮箱 ...

  8. xxl-job集成钉钉群告警

    xxl-job集成钉钉群告警 1.申请钉钉群机器人webhook 钉钉群里添加智能群助手 添加机器人 选择自定义(通过webhook接入自定义服务) 给机器人起个名字,再进行下安全设置,我选择的是自定 ...

  9. 集成开发项目与开发集成项目的区别

    近期,公司承接了一些大型项目,虽说都可以算做集成项目,但在本质上却存在着差异,最终我们把这些项目统一划分为集成开发项目和开发集成项目.在项目前期,本人有幸参与了一些项目方案的撰写工作,起初对两种项目的 ...

最新文章

  1. java 常用正则表达式
  2. 牛客第四次多校Maximum Mode
  3. 2017.10.28 压缩 思考记录
  4. Scrapy选择器和持久化
  5. python电脑下载安装-Python的下载安装与Python编辑器的安装
  6. python Udp与Tcp
  7. 中国IT前线战士:蚂蚁雄兵
  8. 2022年信息安全工程师考试知识点:信息系统安全测评
  9. 拓扑图是什么?常见网络逻辑拓扑结构
  10. 停车还能360全方位影像_揭秘360度全景泊车影像系统!
  11. html实现播放暂停,html如何实现播放和暂停
  12. 均质机工作原理动画_高压均质机结构图.doc
  13. 回溯法解决部落冲突问题
  14. hdwiki上传附件不显示bug解决办法
  15. 基于javascript扫雷小游戏,以前上学经常玩
  16. 003 愚人节的“礼物”
  17. pn532写入手机nfc_STM32f103(mini板)控制NFC模块(PN532)对NFC标签进行读写
  18. python -- 字符串练习题
  19. 郭德纲恶心别人的台词大全
  20. 12-类和对象的概念

热门文章

  1. WPF中的动画——(五)路径动画
  2. 有理贝塞尔曲线(Rational Bezier Curves)
  3. LeetCode算法题12:递归和回溯-字符串中的回溯问题
  4. spawn-fcgi启动的一些报错问题
  5. mongodb系列~mongodb慢语句(2)
  6. Python学习笔记__4章 函数式编程
  7. java-vector hashtable过时?
  8. jpgraph 实例文档
  9. 完美世界第二题:模拟读数字
  10. Matlab的部分文件操作