使用CloudLens for SLS监控Project资源配额最佳实践

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文主要介绍如何使用CloudLens for SLS中全局错误日志、监控指标做Project 资源配额的水位监控 、超限监控 以及 如何提交资源配额提升申请。

背景介绍

Alibaba Cloud Lens 基于 SLS 构建统一云产品可观测能力,支持一键开启实例日志(重要日志、详细日志、作业运行日志)和全局日志(审计日志、计费日志、错误日志、监控指标)的采集功能。

日志分类

子分类

监控场景说明

实例日志

详细日志(收费)

访问流量监控

访问异常监控

重要日志(免费)

消费组监控

Logtail采集监控

作业运行日志(免费)

数据加工(新版)监控

定时SQL任务监控

全局日志

审计日志(免费)

资源操作监控

错误日志(免费)

额度超限监控

访问异常监控

操作异常监控

监控指标(免费)

访问流量监控

访问异常监控

资源配额水位监控

计费日志(免费)

资源用量跟踪

各日志说明参考CloudLens日志索引表

使用场景

本文主要介绍如何使用CloudLens for SLS中全局错误日志、监控指标做Project 资源配额的水位监控超限监控 以及 如何提交资源配额提升申请。

使用前提

1.开通CloudLens for SLS 以及全局错误日志、监控指标

2.全局监控日志需存储在同一个Project下

为了构建实时资源配额水位监控,全局日志的几种监控日志(错误日志、指标监控)需存放在相同的Project下。同时为了避免监控日志存放在业务Project导致监控占用Project的Quota,可直接挑选一个固定地域的目标Project,如杭州地域:log-service-{用户ID}-cn-hangzhou。

CloudLens for SLS 额度监控大盘

资源配额预警概览

报表提供资源配额预警概览 (水位超过80%)以及 额度超限分布

Project重点资源配额实时水位详情

包含Project部分基础资源配额以及数据读写资源配额的实时水位详情

Project资源配额超限详情

监控实践

1.额度监控监控项分类说明:

分类

监控项

说明

实时水位监控

基础资源配额水位监控

  • 监控Project 内LogStore数、机器组数、Logtail采集配置水位是否超阈值预期百分比
  • 依赖时序库:internal-monitor-metric

数据读写配额水位监控

  • 监控Project写入流量、Project写入次数超配额次数
  • 依赖时序库:internal-monitor-metric

额度超限监控

资源配额超限次数监控

  • 监控基础配额、数据读写超配额次数
  • 依赖日志库:internal-error_log

2.高级监控项细分说明如下:

分类

场景

监控项

说明

基础资源配额

LogStore

实时水位监控

  • 监控Project下LogStore数水位是否超阈值预期百分比
  • 依赖时序库:internal-monitor-metric

额度超限监控

  • 监控Project下LogStore数超配额次数
  • 依赖日志库:internal-error_log

机器组

水位监控

  • 监控Project下机器组数水位是否超阈值预期百分比
  • 依赖时序库:internal-monitor-metric

额度超限监控

  • 监控Project下机器组数超配额次数
  • 依赖日志库:internal-error_log

Logtail采集配置

水位监控

  • 监控Project下Logtail采集配置数水位是否超阈值预期百分比
  • 依赖时序库:internal-monitor-metric

额度超限监控

  • 监控Project下Logtail采集配置数超配额次数
  • 依赖日志库:internal-error_log

数据读写资源配额

Project写入流量

水位监控

  • 监控Project写入流量水位是否超阈值预期百分比
  • 依赖时序库:internal-monitor-metric

额度超限监控

  • 监控Project写入流量超配额次数
  • 依赖日志库:internal-error_log

Project写入次数

水位监控

  • 监控Project写入次数水位是否超阈值预期百分比
  • 依赖时序库:internal-monitor-metric

额度超限监控

  • 监控Project写入次数超配额次数
  • 依赖日志库:internal-error_log

基础监控

基础资源配额水位监控

1、确认告警SQL:15min定时检查LogStore数、机器组数、Logtail采集配置水位是否达到告警阈值。

注意:查询SQL默认返回100条数据,如需返回全部查询结果SQL结尾可添加 limit 1000,代表可返回1000条查询结果

查询SQL如下:(注意:告警只能对比结果中最多1000条数据是否满足告警条件,建议告警SQL内先针对水位做下筛选,比如此处logstore_ratio > 80 or machine_group_ratio > 80 or logtail_config_ratio > 80 )

*|select Project, region, logstore_ratio, machine_group_ratio, logtail_config_ratio from(SELECT A.idas Project , A.regionas region,round(COALESCE(SUM(B.count_logstore),0)/cast(json_extract(A.quota,'$.logstore')asdouble)*100,3)as logstore_ratio,  cast(json_extract(A.quota,'$.logstore')asdouble)as quota_logstore,round(COALESCE(SUM(C.count_machine_group),0)/cast(json_extract(A.quota,'$.machine_group')asdouble)*100,3)as machine_group_ratio, cast(json_extract(A.quota,'$.machine_group')asdouble)as quota_machine_group,round(COALESCE(SUM(D.count_logtail_config),0)/cast(json_extract(A.quota,'$.config')asdouble)*100,3)as logtail_config_ratio, cast(json_extract(A.quota,'$.config')asdouble)as quota_logtail_config
FROM"resource.sls.cmdb.project"as A
LEFT JOIN(SELECT project,COUNT(*)AS count_logstore
FROM"resource.sls.cmdb.logstore"as B
GROUPBY project
)AS B ON A.id= B.projectLEFT JOIN(SELECT project,COUNT(*)AS count_machine_group
FROM"resource.sls.cmdb.machine_group"as C
GROUPBY project
)AS C ON A.id= C.projectLEFT JOIN(SELECT project,COUNT(*)AS count_logtail_config
FROM"resource.sls.cmdb.logtail_config"as D
GROUPBY project
)AS D ON A.id= D.projectgroupby  A.id, A.quota, A.region)where quota_logstore isnotnulland quota_machine_group isnotnulland quota_logtail_config isnotnulland(logstore_ratio >80or machine_group_ratio >80or logtail_config_ratio >80)limit10000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project的LogStore数、机器组数、Logtail采集配置其中一个水位超过额度的90%时告警级别为严重
  • 当有Project的LogStore数、机器组数、Logtail采集配置其中一个水位超过额度的80%时告警级别为中

数据读写配额水位监控

1、确认告警SQL:每分钟定时检查Project写入流量、写入次数水位是否达到告警阈值。

注意:查询SQL默认返回100条数据,如需返回全部查询结果SQL结尾可添加 limit 1000,代表可返回1000条查询结果

查询SQL:(注意:告警只能对比结果中最多1000条数据是否满足告警条件,建议告警SQL内先针对写入流量/写入次数做下筛选,比如此处where inflow_ratio > 80 or write_cnt_ratio > 80

(*)|select Project, region, inflow_ratio, write_cnt_ratio from(SELECT cmdb.idas Project, cmdb.regionas region, round(COALESCE(M.name1,0)/round(cast(json_extract(cmdb.quota,'$.inflow_per_min')asdouble)/1000000000,3)*100,3)as inflow_ratio, round(COALESCE(M.name2,0)/cast(json_extract(cmdb.quota,'$.write_cnt_per_min')asdouble)*100,3)as write_cnt_ratio
from"resource.sls.cmdb.project"as cmdb  
LEFT JOIN(select project,  round(MAX(name1)/1000000000,3)as name1, MAX(name2)as name2 from(SELECT __time_nano__ astime, element_at( split_to_map(__labels__,'|','#$#'),'project')as project,   sum(CASE WHEN __name__ ='logstore_origin_inflow_bytes' THEN __value__ ELSE NULL END)AS name1,  sum(CASE WHEN __name__ ='logstore_write_count' THEN __value__ ELSE NULL END)AS name2
FROM"internal-monitor-metric.prom"where __name__ in('logstore_origin_inflow_bytes','logstore_write_count')and regexp_like(element_at( split_to_map(__labels__,'|','#$#'),'project'),'.*')groupby project,time)groupby project)AS M ON cmdb.id= M.project)where inflow_ratio >80or write_cnt_ratio >80limit10000

2、告警配置

查询区间选择相对5分钟,依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project的Project写入流量、写入次数其中一个水位超过额度的90%时告警级别为严重
  • 当有Project的Project写入流量、写入次数其中一个水位超过额度的80%时告警级别为中

资源配额超限次数监控

1、确认告警SQL:15min定时检查是否有额度超限发生。

查询SQL:

((*and(ErrorCode: ExceedQuota or ErrorCode: QuotaExceed or ErrorCode: ProjectQuotaExceed or ErrorCode:WriteQuotaExceed or ErrorCode: ShardWriteQuotaExceed or ErrorCode: ShardReadQuotaExceed)))|SELECT Project,CASE 
WHEN ErrorMsg like'%Project write quota exceed: inflow%' then 'Project写入流量超限'WHEN ErrorMsg like'%Project write quota exceed: qps%' then 'Project写入次数超限'WHEN ErrorMsg like'%dashboard quota exceed%' then '报表额度超限'WHEN ErrorMsg like'%config count%' then 'Logtail采集配置超限'WHEN ErrorMsg like'%machine group count%' then '机器组超限'WHEN ErrorMsg like'%Alert count %' then '告警超限'WHEN ErrorMsg like'%logstore count %' then 'LogStore数超限'WHEN ErrorMsg like'%shard count%' then 'Shard数超限'WHEN ErrorMsg like'%shard write bytes%' then 'Shard写入超限'WHEN ErrorMsg like'%shard write quota%' then 'Shard写入超限'WHEN ErrorMsg like'%user can only run%' then 'SQL分析操作并发数超限'    ELSE ErrorMsg
  END AS ErrorMsg,COUNT(1)AScountGROUPBY Project, ErrorMsg Limit1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  1. 当有任意额度超限10次错误告警级别为严重
  2. 当有任意额度发生超限1次错误时告警级别为中

高级监控

以下是基础监控的细分项,一般情况下不需要,如果需更精细的告警监控,可以参考。

LogStore监控

水位监控

1、确认告警SQL:15min定时检查LogStore数水位是否达到告警阈值。

注意:查询SQL默认返回100条数据,如需返回全部查询结果SQL结尾可添加 limit 1000,代表可返回1000条查询结果

查询SQL:

*|select Project, region, round(count_logstore/quota_logstore *100,3)as logstore_ratio from(SELECT A.idas Project , A.regionas region, COALESCE(SUM(B.count_logstore),0)AS count_logstore , cast(json_extract(A.quota,'$.logstore')asdouble)as quota_logstore
FROM"resource.sls.cmdb.project"as A
LEFT JOIN(SELECT project,COUNT(*)AS count_logstore
FROM"resource.sls.cmdb.logstore"as B
GROUPBY project
)AS B ON A.id= B.projectgroupby A.id, A.quota, A.region)where  quota_logstore isnotnullorderby logstore_ratio desclimit1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project的LogStore数超过额度的90%时告警级别为严重
  • 当有Project的LogStore数超过额度的80%时告警级别为中

此处需注意,告警触发条件配置多个时,判断顺序是从上至下,因此logstore_ratio>90需配置在logstore_ratio>80的上面。

超限监控

1、确认告警SQL:15min定时检查LogStore是否发生超限现象。

查询SQL:

*and(ErrorCode: ExceedQuota or ErrorCode: QuotaExceed or ErrorCode: ProjectQuotaExceed or ErrorCode:WriteQuotaExceed)|SELECT Project,COUNT(1)AScountwhere ErrorMsg like'%logstore count %'GROUPBY Project ORDERBYcountDESCLIMIT1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project的LogStore发生超限10次错误告警级别为严重
  • 当有Project的LogStore发生超限1次错误时告警级别为中

机器组监控

水位监控

1、确认告警SQL:15min定时检查机器组数水位是否达到告警阈值。

注意:查询SQL默认返回100条数据,如需返回全部查询结果SQL结尾可添加 limit 1000,代表可返回1000条查询结果

查询SQL:

*|select Project, region, round(count_machine_group/quota_machine_group *100,3)as machine_group_ratio from(SELECT A.idas Project , A.regionas region, COALESCE(SUM(B.count_machine_group),0)AS count_machine_group , cast(json_extract(A.quota,'$.machine_group')asdouble)as quota_machine_group
FROM"resource.sls.cmdb.project"as A
LEFT JOIN(SELECT project,COUNT(*)AS count_machine_group
FROM"resource.sls.cmdb.machine_group"as B
GROUPBY project
)AS B ON A.id= B.projectgroupby A.id, A.quota, A.region)where  quota_machine_group isnotnullorderby machine_group_ratio desclimit1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project的机器组超过额度的90%时告警级别为严重
  • 当有Project的机器组超过额度的80%时告警级别为中

超限监控

1、确认告警SQL:15min定时检查机器组是否发生超限现象。

查询SQL:

*and(ErrorCode: ExceedQuota or ErrorCode: QuotaExceed or ErrorCode: ProjectQuotaExceed or ErrorCode:WriteQuotaExceed)|SELECT Project,COUNT(1)AScountwhere ErrorMsg like'%machine group count%'GROUPBY Project ORDERBYcountDESCLIMIT1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

● 当有Project的机器组发生超限10次错误告警级别为严重

● 当有Project的机器组发生超限1次错误时告警级别为中

Logtail采集配置

水位监控

1、确认告警SQL:15min定时检查Logtail采集配置数水位是否达到告警阈值。

注意:查询SQL默认返回100条数据,如需返回全部查询结果SQL结尾可添加 limit 1000,代表可返回1000条查询结果

查询SQL:

*|select Project, region, round(count_logtail_config/quota_logtail_config *100,3)as logtail_config_ratio from(SELECT A.idas Project , A.regionas region, COALESCE(SUM(B.count_logtail_config),0)AS count_logtail_config , cast(json_extract(A.quota,'$.config')asdouble)as quota_logtail_config
FROM"resource.sls.cmdb.project"as A
LEFT JOIN(SELECT project,COUNT(*)AS count_logtail_config
FROM"resource.sls.cmdb.logtail_config"as B
GROUPBY project
)AS B ON A.id= B.projectgroupby A.id, A.quota, A.region)where  quota_logtail_config isnotnullorderby logtail_config_ratio desclimit1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project的Logtail采集配置数超过额度的90%时告警级别为严重
  • 当有Project的Logtail采集配置数超过额度的80%时告警级别为中

超限监控

1、确认告警SQL:15min定时检查LogStore是否发生超限现象。

查询SQL:

*and(ErrorCode: ExceedQuota or ErrorCode: QuotaExceed or ErrorCode: ProjectQuotaExceed or ErrorCode:WriteQuotaExceed)|SELECT Project,COUNT(1)AScountwhere ErrorMsg like'%config count%'GROUPBY Project ORDERBYcountDESCLIMIT1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project的Logtail采集配置发生超限10次错误告警级别为严重
  • 当有Project的Logtail采集配置发生超限1次错误时告警级别为中

Project写入流量监控

水位监控

1、确认告警SQL:每分钟定时检查相对5分钟内Project写入流量水位是否达到告警阈值

SQL详情:

(*)|SELECT Project, region , round(count_inflow/cast(quota_inflow asdouble)*100,3)as inflow_ratio
FROM(SELECT cmdb.idas Project, cmdb.regionas region, COALESCE(M.name1,0)as count_inflow, round(cast(json_extract(cmdb.quota,'$.inflow_per_min')asdouble)/1000000000,3)as quota_inflow  from"resource.sls.cmdb.project"as cmdb  
LEFT JOIN(select project,  round(MAX(name1)/1000000000,3)as name1 from(SELECT __time_nano__ astime, element_at( split_to_map(__labels__,'|','#$#'),'project')as project,   sum(CASE WHEN __name__ ='logstore_origin_inflow_bytes' THEN __value__ ELSE NULL END)AS name1
FROM"internal-monitor-metric.prom"where __name__ ='logstore_origin_inflow_bytes'and regexp_like(element_at( split_to_map(__labels__,'|','#$#'),'project'),'.*')groupby project,time)groupby project)AS M ON cmdb.id= M.project)orderby inflow_ratio desclimit1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project写入流量超过额度的90%时告警级别为严重
  • 当有Project写入流量超过额度的80%时告警级别为中

超限监控

1、确认告警SQL:15min定时检查Project写入流量是否发生超限现象。

查询SQL:

*and(ErrorCode: ExceedQuota or ErrorCode: QuotaExceed or ErrorCode: ProjectQuotaExceed or ErrorCode:WriteQuotaExceed)|SELECT Project,COUNT(1)AScountwhere ErrorMsg like'%Project write quota exceed: inflow%'GROUPBY Project ORDERBYcountDESCLIMIT1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project写入流量发生超限10次错误告警级别为严重
  • 当有Project写入流量发生超限1次错误时告警级别为中

Project写入次数监控

水位监控

1、确认告警SQL:每分钟定时检查相对5分钟内Project写入次数水位是否达到告警阈值

查询SQL:

(*)|SELECT Project, region,  round(count_write_cnt/cast(quota_write_cnt asdouble)*100,3)as write_cnt_ratio
FROM(SELECT cmdb.idas Project, cmdb.regionas region, COALESCE(M.name1,0)as count_write_cnt,cast(json_extract(cmdb.quota,'$.write_cnt_per_min')asbigint)as quota_write_cnt from"resource.sls.cmdb.project"as cmdb  
LEFT JOIN(select project,  MAX(name1)as name1 from(SELECT __time_nano__ astime, element_at( split_to_map(__labels__,'|','#$#'),'project')as project,  sum(CASE WHEN __name__ ='logstore_write_count' THEN __value__ ELSE NULL END)AS name1
FROM"internal-monitor-metric.prom"where __name__  ='logstore_write_count'and regexp_like(element_at( split_to_map(__labels__,'|','#$#'),'project'),'.*')groupby project,time)groupby project)AS M ON cmdb.id= M.project)orderby write_cnt_ratio desclimit1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project写入次数超过额度的90%时告警级别为严重
  • 当有Project写入次数超过额度的80%时告警级别为中

超限监控

1、确认告警SQL:15min定时检查Project写入次数是否发生超限现象。

查询SQL:

*and(ErrorCode: ExceedQuota or ErrorCode: QuotaExceed or ErrorCode: ProjectQuotaExceed or ErrorCode:WriteQuotaExceed)|SELECT Project,COUNT(1)AScountwhere ErrorMsg like'%Project write quota exceed: qps%'GROUPBY Project ORDERBYcountDESCLIMIT1000

2、告警配置

依据业务场景配置告警触发条件、以及告警策略:

  • 当有Project写入次数发生超限10次错误告警级别为严重
  • 当有Project写入次数发生超限1次错误时告警级别为中

资源配额调整申请

操作步骤

1.登录日志服务控制台

2.在Project列表区域,单击目标Project。

3.单击图标。

4.单击资源配额对应的管理

5.在资源配额面板中,调整目标资源的配额,然后单击保存

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
存储 Prometheus 监控
程序开发中的监控和日志分析
监控和日志分析在软件开发中至关重要,它们帮助实时了解应用状态、及时发现并解决问题。监控确保系统稳定运行,优化性能和资源;日志分析则助于追踪问题根源、监测用户行为并提供安全审计。利用如Prometheus、ELK Stack等工具可实现高效监控与日志管理,从而优化应用性能和用户体验。
194 0
|
2月前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
65 1
|
2月前
|
存储 监控 固态存储
如何监控和优化 WAL 日志文件的存储空间使用?
如何监控和优化 WAL 日志文件的存储空间使用?
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
57 2
|
2月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
3月前
|
开发者 Python
基于Python的日志管理与最佳实践
日志是开发和调试过程中的重要工具,然而,如何高效地管理和利用日志常常被忽略。本文通过Python中的logging模块,探讨如何使用日志来进行调试、分析与问题排查,并提出了一些实际应用中的优化建议和最佳实践。
|
4月前
|
JSON Java fastjson
Java日志通关(五) - 最佳实践
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第五篇。
|
4月前
|
存储 运维 监控
监控与日志管理:保障系统稳定运行与高效运维的基石
【8月更文挑战第16天】监控与日志管理是保障系统稳定运行和高效运维的基石。它们不仅能够帮助企业及时发现并解决问题,还能够为性能调优、资源优化和业务决策提供有力支持。因此,在构建系统架构时,企业应高度重视监控与日志管理的规划和实施,确保它们能够充分发挥作用,为企业的发展保驾护航。同时,随着技术的不断进步和应用场景的不断拓展,监控与日志管理也将持续演进和创新,为企业带来更多的价值和便利。
|
3月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
412 0
|
4月前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
55 0

相关产品

  • 日志服务