我正在尝试为Icinga2数据库生成报告。
我想查看每个服务每个主机每天的状态时间。
我有以下数据结构:
列:
State_Time>监视对象的状态从A变为B
的时间状态>对象现在具有的状态(A,B ..)
Last_State>对象在当前时间之前的状态
主机名>主机对象的名称
Servicename>服务对象的名称
我希望报告看起来像:
host | service | day | State A % | State B %
a.b.c | srvxyz |1.1.1| 70 | 30
所以我基本上可以看到可用性的百分比。
根据我的想法我需要:
到目前为止我所拥有的是:
select
sum(state_time_usec),
max(name1),
max(name2),
max(date(state_time)),
max(state)
from
icinga_statehistory
inner join icinga_objects on icinga_objects.object_id = icinga_statehistory.object_id
group by icinga_objects.object_id,date(state_time),state
order by state_time desc
但我不知道如何开始计算前一行。你能指出我的方向还是有什么想法? 谢谢!
答案 0 :(得分:0)
您可以为表创建排名,例如:
@curRank := @curRank + 1 AS rank
使用
连接到同一个表 @curRank := @curRank + 2 AS rank
所以你将拥有之前的价值。通过这个表,您将能够计算出您需要的东西。