【发布时间】:2018-04-27 11:53:57
【问题描述】:
我正在尝试为 Icinga2 数据库生成报告。
我想查看每个主机每个服务每天的状态时间。
我有以下数据结构:
列:
State_Time > 监控对象状态从A变为B的时间
State > 对象现在的状态(A, B..)
Last_State > 对象在当前时间之前的状态
Hostname > 主机对象的名称
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
但我不知道如何从上一行的计算开始。你能给我指出一个方向还是你有什么想法? 谢谢!
【问题讨论】:
标签: mysql group-by row summary icinga2