赞
踩
skywalking的告警模块属于 可视化三个模块(metric、log、trace)中的metric的功能扩展,是以度量为基础。skywalking自己定义的可视化语言OAL,基于OAL(Observability Analysis Language) 来分析上报的数据。OAL语法
skywalking将上报的服务数据按照领域划分,通过不同领域的数据记录服务不同层次状态。而oal就是作用于领域对象的语言,oal是按照指定规则写出的数据模型,skywalking内部会根据模型作用的领域实例id进行聚合。告警是以聚合结果为基础,按照指定的触发规则。
下载好的skywalking中的tar包,文件夹如下路径:
├── bin
├── config
│ ├── envoy-metrics-rules
│ ├── fetcher-prom-rules
│ ├── lal //日志分析语言
│ ├── log-mal-rules
│ ├── meter-analyzer-config
│ ├── oal //可视化分析语言配置
在oal文件夹有一些几个配置文件:
├── application.oal
├── browser.oal
├── core.oal //核心的聚合规则
├── disable.oal
├── dotnet-agent.oal
├── java-agent.oal //对agent实例上报的jvm数据聚合规则
├── mesh.oal
└── tcp.oal
根据不同的文件来做区分,便于管理,Java应用常用到的core.oal、application.oal 这两个文件多些,这些文件在启动skywalking oapServer时会被加载,也支持分布式配置的方式进行加载。
告警配置所在:
├── bin
│ ├── oapService.bat
├── config
│ ├── alarm-settings.yml
所有的告警规则,都在alarm-settings.yml中。
所演示的skywalking告警示例,是对我们服务的一个http 协议的web接口访问量进行监控,并且访问量达到一定的数量时进行钉钉发群消息告警。
我们可以通过skywalking的可视化控制面板,找到我们需要监控的接口,具体如何使用控制面板可以参考一下文档:skywalking使用文档中控制面板模块。
如下图我们找到对应的接口:
可以找的我们的领域对象是 endpoint,对应的endpointName是POST:/account/login,关于http如何在定义endpoint可以参考一下文档:Group Parameterized Endpoints。
我们寻找所需要的oal规则模型,示例所需要的在core.oal中(实现并非唯一模型):
endpoint_cpm = from(Endpoint.*).cpm();
说明:cpm(call per minutes)是 吞吐量指标。
对应的告警规则配置如下:
endpoint_post-paas-login_cpm_rule:
metrics-name: endpoint_cpm
include-names:
- POST:/account/login in paas-acccount|test|env1
threshold: 2
op: ">"
period: 1
count: 1
silence-period: 1
message: call per minute api {name} is more than 2 in 2 minutes of last 1 minutes
通过include-names选择作用的endpoint,include-names配置参数规则参考如下:alarm的Entity name模块的说明。
特别说明:include-names 下的参数配置,需要按照规则配置
告警规则以后重启oapServer服务,然后调用测试接口(服务已经接入Javagent skywalking代理上报),然后是测试接口触发告警阈值。告警结果我们可以通过skywalking可视化的dashboard界面的告警、事情导航栏查看,也可以通过配置好的钉钉群消息查看。
dashboard 界面结果:
钉钉群消息:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。