MySQL 查询

夜莺( Nightingale )MySQL 日志告警规则

场景一:配置MySQL单条件告警规则

值字段

在查询条件 SQL 语句中,选择你想要的列名作为查询结果的值字段。如下图所示,我将 count(*) 起个别名 count ,将别名 count 作为值字段取 A 这个查询条件的结果。

mysql001

标签字段

使用 GROUP BY 字段作为标签字段,告警将以此字段进行分组告警。

场景二:将过滤字段放在 where 进行过滤

如下面的查询语句:计算 severity 等级为 1、2、3的活跃告警数量。

SELECT COUNT(*) AS count FROM n9e_v6.alert_cur_event WHERE severity IN (1,2,3);

mysql002

最终产生告警时,只会展现 count 值。

mysql003

场景三:将过滤字段放在 where 进行过滤并分组告警

查询条件设置为以 severity 分组,并将 severity 设定为标签字段

SELECT severity as severity,COUNT(*) AS count FROM n9e_v6.alert_cur_event WHERE severity IN (1,2,3) GROUP BY severity;

mysql004

通过报警时间与数据预览对比发现,使用 severity 分组后,告警会根据标签字段进行分组告警。

mysql005

mysql006

场景四:多查询条件表达式模式

配置多条查询条件 sql ,并将两个查询条件的结果进行阈值告警。

mysql007

mysql008

场景五:根据时间分表的查询

在实际业务中,为了提高查询性能和便于数据管理,经常会对数据表按时间进行分表。Nightingale 支持在 SQL 语句中使用 Go 模板语法,可以动态生成表名来查询时间分表。

5.1 按日分表查询

假设日志表按天分表,表名格式为 logs_20260119logs_20260120 等。可以使用 Timestamp 函数动态生成今天的表名:

SELECT COUNT(*) AS count FROM logs_{{Timestamp "20060102"}} WHERE level = 'error';
  • {{Timestamp "20060102"}} 会被渲染为当前日期,格式为 yyyyMMdd
  • 例如今天是 2026年1月19日,SQL 会被渲染为:SELECT COUNT(*) AS count FROM logs_20260119 WHERE level = 'error';

5.2 按月分表查询

如果表按月分表,表名格式为 orders_202601orders_202602 等:

SELECT SUM(amount) AS total_amount FROM orders_{{Timestamp "200601"}} WHERE status = 'completed';
  • {{Timestamp "200601"}} 会被渲染为当前年月,格式为 yyyyMM
  • 例如今天是 2026年1月,SQL 会被渲染为:SELECT SUM(amount) AS total_amount FROM orders_202601 WHERE status = 'completed';

5.3 按年分表查询

对于按年分表的场景,表名格式为 archive_2026archive_2025 等:

SELECT COUNT(*) AS record_count FROM archive_{{Timestamp "2006"}} GROUP BY category;
  • {{Timestamp "2006"}} 会被渲染为当前年份
  • 例如今天是 2026年,SQL 会被渲染为:SELECT COUNT(*) AS record_count FROM archive_2026 GROUP BY category;

注意事项

  1. 时间格式说明:Go 语言的时间格式化使用特殊的参考时间 2006-01-02 15:04:05,不同于其他语言的格式化方式

    • 2006 - 年份(4位)
    • 01 - 月份(2位)
    • 02 - 日期(2位)
    • 15 - 小时(24小时制)
    • 04 - 分钟
    • 05 - 秒
  2. 表不存在的情况:如果分表不存在(例如当月第一天查询上月的表),查询会失败并产生告警,需要在 SQL 中做好容错处理

更新时间 2025-03-13

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云