夜莺-Nightingale
夜莺V7
夜莺V6
项目介绍
架构介绍
快速开始
黄埔营
安装部署
升级
采集器
使用手册
API
数据库表结构
users
target
user_group
user_group_member
task_tpl
task_tpl_host
task_record
sso_config
role
role_operation
recording_rule
notify_tpl
metric_view
datasource
configs
chart_share
busi_group
busi_group_member
builtin_cate
board
board_payload
alerting_engines
alert_subscribe
alert_rule
alert_mute
alert_his_event
alert_cur_event
alert_aggr_view
FAQ
转发数据给多个时序库
机器列表数据异常
数据流图
监控数据时有时无
查询原始监控数据
快捷视图详解
告警自愈模块使用
仪表盘里只展示我的机器
仪表盘里图表数据缺失
设置自定义告警通知方式
target_up指标的问题
夜莺可以监控 x 么
告警和恢复的判断逻辑
容量规划问题
connection refused
登录与认证
数据采集器Categraf
日志写到`/var/log/messages`
告警规则&告警模板如何引用变量
采集到的数据是字符串怎么处理
管理员密码忘记了
制作大盘如何添加图片
添加loki数据源报错
v6小版本升级有什么 sql 要执行吗
机器列表有展示,但采集数据查询不到
n9e 启动异常报错
n9e集群部署配置修改
推送 Promethus 报错 OOO
机器列表怎么忽略云资源
告警规则仅在本业务组生效失败
categraf 启动 oracle 插件报错
告警自愈不生效
n9e查询时序库EOF报错
手动编译项目报错
promQL 使用函数标签信息丢失
内存使用率+可用率不等于100
夜莺仪表盘有哪些内置变量
categraf配置文件支持热加载吗
导入 Grafana 仪表盘无效数据源
如何查看报错消息
采集器-Categraf
开源生态
Telegraf
Prometheus
版权声明
第1章:天降奇兵
第2章:探索PromQL
开篇
理解时间序列
Metrics类型
初识PromQL
PromQL操作符
PromQL聚合操作
PromQL内置函数
在HTTP API中使用PromQL
最佳实践:4个黄金指标和USE方法
小结
第3章:Prometheus告警处理
开篇
Prometheus告警简介
自定义Prometheus告警规则
部署Alertmanager
Alertmanager配置概述
基于标签的告警处理路由
使用Receiver接收告警信息
告警模板详解
屏蔽告警通知
使用Recoding Rules优化性能
小结
第4章:Exporter详解
第5章:数据与可视化
第6章:集群与高可用
第7章:Prometheus服务发现
第8章:监控Kubernetes
开篇
初识Kubernetes
在Kubernetes下部署Prometheus
Kubernetes下的服务发现
使用Prometheus监控Kubernetes集群
基于Prometheus的弹性伸缩
小结
第9章:Prometheus Operator
参考资料
查詢表格
和在終端登錄 MySQL 之後,輸入 SQL 查詢類似,例如查詢整個表的數據:
select * from database_name.table_name limit 10
查詢時序圖
- 必須在 SQL 中使用
as time
的語法指定哪一列是時間列,然後group by time order by time desc
對時間進行排序,例如:
select count(*) as count, trigger_time as time
from n9e_v6_plus.alert_his_event
group by time
order by time
desc LIMIT 100
- 可以使用
where
條件,查詢某一個時間段的數據,樣例如下:
2.1 查詢最近一分鐘的數據,也可以將 WEEK
替換成 MINUTE
、SECOND
、HOUR
、DAY
、MONTH
等。
SELECT count(*) AS count, trigger_time AS time FROM n9e_v6_plus.alert_his_event WHERE FROM_UNIXTIME(trigger_time) >= DATE_SUB(NOW(), INTERVAL 1 WEEK)
2.2 查詢某一個時間段的數據,如果 trigger_time
是 Unix 時間戳(1720061167),WHERE
語句可以直接寫 WHERE trigger_time >= 1720060214 AND trigger_time < 1720061214
或者 trigger_time >= $__unixEpochFrom() AND trigger_time < $__unixEpochTo()
,$__unixEpochFrom()
表示開始的 Unix 時間戳,$__unixEpochTo()
表示結束的 Unix 時間戳。
SELECT count(*) AS count, trigger_time AS time
FROM n9e_v6_plus.alert_his_event
WHERE trigger_time >= $__unixEpochFrom() AND trigger_time < $__unixEpochTo()
GROUP BY time
ORDER BY time DESC
2.3 查詢最近 7 天每分鐘產生的告警數量
SELECT FROM_UNIXTIME(trigger_time, '%Y-%m-%d %H:%i:00') AS alert_minute,COUNT(*) AS alert_count
FROM n9e_v6_plus.alert_his_event
WHERE trigger_time >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY))
GROUP BY alert_minute
ORDER BY alert_minute DESC LIMIT 100;
2.4 查詢最近 7 天每分鐘產生的告警數量
SELECT FROM_UNIXTIME(trigger_time, '%Y-%m-%d %H:%i:00') AS alert_minute,COUNT(*) AS alert_count
FROM n9e_v6_plus.alert_his_event
WHERE trigger_time >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY))
GROUP BY alert_minute
ORDER BY alert_minute DESC;
2.5 alert_his_event
樣例表結構如下
CREATE TABLE `alert_his_event` (
`id` bigint unsigned not null AUTO_INCREMENT,
`cate` varchar(128) not null,
`rule_id` bigint unsigned not null,
`rule_name` varchar(255) not null,
`prom_ql` varchar(8192) not null comment 'promql',
`first_trigger_time` bigint,
`trigger_time` bigint not null,
`trigger_value` varchar(255) not null,
PRIMARY KEY (`id`),
KEY (`trigger_time`, `rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET = utf8mb4;
宏變量使用
在配置儀表盤的時候,一般我們要查詢數據的時間範圍不是固定的,需要隨著儀表盤右上角的時間範圍變化而變化,這時候就需要使用和時間相關的宏變量了,下面是我們目前支持的宏變量以及使用說明(備註:下面說明中的 1494410783
是前端傳的 start_time
,1494410983
是前端傳的 end_time
):
宏變量 | 描述 |
---|---|
$__timeFilter(dateColumn) |
如果 dateColumn 格式是 %Y-%m-%d %H:%i:%s ,可以使用此宏變量,將被替換為 dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983) |
$__timeFrom() |
如果時間列格式是 %Y-%m-%d %H:%i:%s ,可以使用此宏變量,將被替換為當前時間選擇的開始時間。FROM_UNIXTIME(1494410783) |
$__timeTo() |
如果時間列格式是 %Y-%m-%d %H:%i:%s ,可以使用此宏變量,將被替換為當前時間選擇的結束時間。FROM_UNIXTIME(1494410983) |
$__unixEpochFilter(dateColumn) |
如果 dateColumn 格式是 Unix 時間戳,將會被替換為 dateColumn > 1494410783 AND dateColumn < 1494497183 |
$__unixEpochFrom() |
將被替換為當前活動時間選擇的開始時間,以 Unix 時間戳表示。例如,1494410783 |
$__unixEpochTo() |
將被替換為當前活動時間選擇的結束時間,以 Unix 時間戳表示。例如,1494497183 |
$__unixEpochNanoFilter(dateColumn) |
如果 dateColumn 格式是以納秒時間戳表示,將會被替換為 dateColumn > 1494410783152415214 AND dateColumn < 1494410983142514872 |
$__unixEpochNanoFrom() |
將被替換為當前活動時間選擇的開始時間,以納秒時間戳表示。例如,1494410783152415214 |
$__unixEpochNanoTo() |
將被替換為當前活動時間選擇的結束時間,以納秒時間戳表示。例如,1494410983142514872 |
$__timeGroup(dateColumn,'5m') |
在 group by 的時候使用,以 5 分鐘為分組粒度,對數據進行計算 |
$__unixEpochGroup(dateColumn,'5m') |
在 group by 的時候使用,以 5 分鐘為分組粒度,對數據進行計算 |
宏變量使用示例
以上面的 alert_his_event
表為例,查詢一段時間範圍內每分鐘的告警數量的 SQL 如下:
SELECT
$__unixEpochGroup(trigger_time, '1m') AS time,
COUNT(*) AS alert_count
FROM
n9e_v6_plus.alert_his_event
WHERE
$__unixEpochFilter(trigger_time)
GROUP BY
time
ORDER BY
time