• Alertmanager结合Slack使用


    Slack作为一款即时通讯工具,协作沟通主要通过Channel(平台)来完成,用户可以在企业中根据用途添加多个Channel,并且通过Channel来集成各种第三方工具。
    例如,我们可以为监控建立一个单独的Channel用于接收各种监控信息:

    通过一个独立的Channle可以减少信息对用户工作的干扰,并且将相关信息聚合在一起:

    Slack的强大之处在于在Channel中添加各种第三方服务的集成,用户也可以基于Slack开发自己的聊天机器人来实现一些更高级的能力,例如自动化运维,提高开发效率等。

    添加应用:Incomming Webhooks

    为了能够在Monitoring中接收来自Alertmanager的消息,在Channel的设置选项中使用"Add an App"为Monitoring channel添加一个名为Incoming WebHooks的应用:



    添加成功后Slack会显示Incoming WebHooks配置和使用方式:

    Incomming Webhook的工作方式很简单,Slack为当前Channel创建了一个用于接收消息的API地址:

    用户只需要使用Post方式向Channel发送需要通知的消息即可.,例如,我们可以在命令行中通过curl模拟一次消息通知:

    curl -X POST --data-urlencode "payload={"channel": "#monitoring", "username": "webhookbot", "text": "This is posted to #monitoring and comes from a bot named webhookbot.", "icon_emoji": ":ghost:"}" https://hooks.slack.com/services/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
    

    除了发送纯文本以外,slack还支持在文本内容中添加链接,例如:

    payload={"text": "A very important thing has occurred! <https://alert-system.com/alerts/1234|Click here> for details!"}
    

    此时接收到的消息中还包含一个可点击的超链接地址。除了payload以外,Incomming Webhhook还支持一些其他的参数:

    例如,使用以上参数发送一条更有趣的消息:

    curl -X POST --data-urlencode "payload={'channel': '#monitoring', 'username': 'webhookbot', 'text': 'This is posted to #monitoring and comes from a bot named webhookbot.', 'icon_emoji': ':ghost:'}" https://hooks.slack.com/services/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
    

    在网络正常的情况下,在Channel中会显示新的通知信息,如下所示:

    结合AlertManager使用

    在Alertmanager的全局配置中,将Incomming Webhhook地址作为slack_api_url添加到全局配置中即可:

    global:
      slack_api_url: https://hooks.slack.com/services/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
    

    也可以在每个receiver中单独定义自己的slack_configs即可:

    receivers:
    - name: slack
      slack_configs:
        - channel: '#monitoring'
          send_resolved: true
    

    收到的告警示例:

    对于Incomming Webhhook支持的其它自定义参数,也可以在slack_config中进行定义,slack_config的主要配置如下:

    channel: <tmpl_string>
    [ send_resolved: <boolean> | default = false ]
    [ api_url: <secret> | default = global.slack_api_url ]
    [ icon_emoji: <tmpl_string> ]
    [ icon_url: <tmpl_string> ]
    [ link_names: <boolean> | default = false ]
    [ username: <tmpl_string> | default = '{{ template "slack.default.username" . }}' ]
    [ color: <tmpl_string> | default = '{{ if eq .Status "firing" }}danger{{ else }}good{{ end }}' ]
    [ footer: <tmpl_string> | default = '{{ template "slack.default.footer" . }}' ]
    [ pretext: <tmpl_string> | default = '{{ template "slack.default.pretext" . }}' ]
    [ text: <tmpl_string> | default = '{{ template "slack.default.text" . }}' ]
    [ title: <tmpl_string> | default = '{{ template "slack.default.title" . }}' ]
    [ title_link: <tmpl_string> | default = '{{ template "slack.default.titlelink" . }}' ]
    [ image_url: <tmpl_string> ]
    [ thumb_url: <tmpl_string> ]
    

    如果要覆盖默认的告警内容,直接使用Go Template即可。例如:

    color: '{{ if eq .Status "firing" }}danger{{ else }}good{{ end }}'
    
  • 相关阅读:
    C语言 汉诺塔问题
    指向函数的指针 linux中常见的函数指针应用及函数指针数组
    C语言 折半/二分法查找
    C语言 stdlib.h自带函数库:qsort()排序,简称"快排"
    几种排序算法的稳定性归纳
    C语言 归并排序
    c语言 堆排序 多函数处理法
    C语言 递归方法实现快速排序
    C语言 通过输出排序次数来比较希尔排序和插入排序的优劣
    c语言 希尔排序简化函数版
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13590963.html
Copyright © 2020-2023  润新知