SLS告警通知到Line

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
对象存储 OSS,内容安全 1000次 1年
简介: Line是一款由NHN Japan(韩国Naver Corporation公司的子公司)在日本推出的即时通信软件,在日韩拥有较大的用户规模。Line支持构建机器人,并且通过API给机器人推送消息,添加了机器人的用户以及群聊就可以接收到机器人推送的消息。但是由于Line的服务器位于海外,SLS的告警无法直接发送通知。因此本文介绍了如何利用阿里云的其他服务来将SLS的告警通知到Line。

日志服务告警是SLS提供的一站式告警监控、降噪、事务管理、通知分派的智能运维平台,能够完美地支持开发运维、IT运维、安全运维、智能运维以及商务运维等场景下监控告警的需求。SLS的告警包含了语音、短信、邮件、钉钉、通用Webhook以及函数计算等通知渠道。

背景

Line是一款由NHN Japan(韩国Naver Corporation公司的子公司在日本推出的即时通信软件,在日韩拥有较大的用户规模。Line支持构建机器人,并且通过API给机器人推送消息,添加了机器人的用户以及群聊就可以接收到机器人推送的消息。但是由于Line的服务器位于海外,SLS的告警无法直接发送通知。

对于这样的需求,用户往往需要自己提供一个Webhook服务,一方面这个服务可以对于告警消息进行二次加工处理,另一方面这个服务也可以转发SLS发送的请求。阿里云的FC(函数计算)服务可以很好地满足上述场景,用户可以在海外区域创建FC函数,在函数中进行简单地开发就可以完成上述需求。

FC可以拓展SLS支持的通用Webhook通知渠道的一些能力,包括以下两点:

  • 对告警通知内容定制化强烈,有较为复杂的加工处理需求
  • 海外网络不通,SLS无法直接发送告警通知到海外的一些webhook服务

操作步骤

1.在Line开发者平台构建机器人

Line有两种自定义的通知方式,一种是Line Notify(官方的一个通知服务),一种是自定义机器人。下面分别说明这两种方式的设置步骤。

  • Line Notify

登录Line Notify配置平台,点击Generate token。填写服务名称后生成访问Token,复制并保存好Token。

  • Line自定义机器人

具体可以参考构建Line机器人。构建好了以后,生成一个Channel access token,建议设置成长期有效。然后将机器人添加为某个用户的好友或者加入某个群聊。

2.创建FC函数

在函数计算控制台创建函数,参考创建函数,注意选择海外的区域。在创建函数的过程中,函数的名称必须以sls-ops开头,具体可以参考告警通知渠道,请求处理程序类型选择处理事件请求。该函数只是将SLS的通知转发到海外的Line的服务器,示例代码如下。如果是Line Notify这种通知形式,那么转发通知的目标服务器地址为https://notify-api.line.me/api/notify。另外,代码中的token需要替换为创建Line机器人时获取到的token。

# -*- coding: utf-8 -*-importloggingimportrequests# url = 'https://notify-api.line.me/api/notify'url='https://api.line.me/v2/bot/message/broadcast'token='Your token'headers= {'Content-Type' : 'application/x-www-form-urlencoded', 'Authorization' : 'Bearer '+token}
defhandler(event, context):
resp=requests.post(url, headers=headers, data= {'message': event})
logger=logging.getLogger()
ifresp.status_code==200:
logger.info('Send message successfully: '+resp.text )
else:
logger.error('Failed to send message: '+resp.text)
return

3.创建内容模板

在SLS告警中心添加一个内容模板,渠道选择函数计算,发送方式选择逐条发送

内容模板需要设置为Line接受的固定格式,其中使用到的模板函数可以参考内置模板函数。Line的两种通知方式对应的内容模板分别如下。

  • Line Notify

Line Notify是通过官方的一个通知服务发送的消息,对于消息的长度限制为1000个字符,效果如下所示:

对应的内容模板如下:

Project: {{ alert.project }}
Alert Name: {{ alert.alert_name }}
Fire Time: {{ alert.fire_time | format_date }}
Alert Time: {{ alert.alert_time | format_date }}
Status: {{ alert.status | format_status }}
Severity : {{ alert.severity | format_severity }}
Labels:
{{ alert.labels | to_list | blockquote }}
{% if alert.dashboard_url -%}
Dashboard: {{ alert.dashboard_url }}
{% endif -%}
{% if alert.query_url -%}
Query Detail: {{ alert.query_url }}
{% endif -%}
  • Line机器人

Line机器人的消息类型有多种,适用于告警通知的有两种类型,这两种类型对应的内容模板分别如下。

  • Text message

这种消息类型是将所有的数据当成一个字符串发送给Line用户,效果如下图所示:

对应的内容模板如下:

{
"messages": [
        {
"text": {{ quote("Project: "+alert.project+"\n"+"Alert Name: "+alert.alert_name+"\n"+"Fire Time: "+format_date(alert.fire_time, tz="UTC") +"\n"+"Alert Time: "+format_date(alert.alert_time, tz="UTC")+"\n"+"Status: "+alert.status+"\n"+"Severity: "+string(alert.severity) +"\n"+"Labels: "+string(alert.labels) +"\n"+"Query Url: "+alert.query_url) }},
"type": "text"        }
    ]
}
  • Template messages

这种消息类型是支持预定义的布局,效果如下图所示。由于告警通知中常包含查询链接、免登链接等 URL,所以使用这种消息格式时可以将链接隐藏在按钮后面,但是这种类型的消息对文本长度限制为160个字符。

对应的内容模板如下:

{
"messages": [
        {
"type": "template",
"altText": "SLS Alert",
"template": {
"type": "buttons",
"text":  {{ quote( truncate("Project: "+alert.project+"\n"+"Alert Name: "+alert.alert_name+"\n"+"Fire Time: "+format_date(alert.fire_time, tz="UTC") +"\n"+"Alert Time: "+format_date(alert.alert_time, tz="UTC")+"\n"+"Status: "+alert.status+"\n"+"Severity: "+string(alert.severity) +"\n"+"Labels: "+string(alert.labels), 160)) }}, 
"actions": [
                    {
"type": "uri",
"label": "View detail",
"uri": {{alert.query_url|quote}}
                    }
                ]
            }
        }
    ]
}

4.创建并使用行动策略

创建好了内容模板后,新创建一个行动策略(可以参考创建行动策略),选择第2步创建好的FC函数,内容模板选择第3步创建好的,然后再目标告警种应用创建好的行动策略。告警触发后就可以在Line客户端接受到SLS的告警消息。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
5月前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之sls日志告警调用函数计算,出现抛出的结果异常,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
存储 运维 Serverless
函数计算产品使用问题之日志告警不生效,一般是由于什么造成的
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
Web App开发 存储 监控
日志服务之告警接入与管理
本教程介绍如何使用日志服务接入NGINX模拟数据,并配置告警规则来对NGINX访问错误进行监控。
|
6月前
|
JSON Prometheus Cloud Native
Grafana 系列 -Loki- 基于日志实现告警
Grafana 系列 -Loki- 基于日志实现告警
|
监控 数据库
136 日志监控告警系统案例(代码实现)
136 日志监控告警系统案例(代码实现)
116 0
|
监控
135 日志监控告警系统案例(数据模型设计)
135 日志监控告警系统案例(数据模型设计)
162 0
|
消息中间件 监控 关系型数据库
134 日志监控告警系统案例(功能架构分析)
134 日志监控告警系统案例(功能架构分析)
141 0
|
分布式计算 监控 前端开发
133 日志监控告警系统案例(需求分析)
133 日志监控告警系统案例(需求分析)
101 0
|
6月前
|
机器学习/深度学习 运维 监控
用SLS配置日志关键字告警的N种方法
本文由日志关键词告警出发,介绍了使用SLS进行关键词监控告警配置,并且介绍了几种常见的配置方法,可以覆盖关键词监控的大部分场景。
356 0
用SLS配置日志关键字告警的N种方法
|
6月前
|
存储 运维 监控
使用Terraform玩转SLS告警
本文主要介绍使用Terraform来操作SLS告警监控,告警管理。
105 0
使用Terraform玩转SLS告警

相关产品

  • 日志服务