Skip to content

Instantly share code, notes, and snippets.

@skarllot
Created April 19, 2012 19:17
Show Gist options
  • Save skarllot/2423329 to your computer and use it in GitHub Desktop.
Save skarllot/2423329 to your computer and use it in GitHub Desktop.
Extract trends from zabbix database cropping not workday, holidays (from GLPI) and not business hours
CREATE VIEW `zabbix_dw`.`utrends_businesshours` AS
SELECT h.host,
i.key_,
FROM_UNIXTIME(tu.clock) AS `time`,
tu.value_min,
tu.value_avg,
tu.value_max
FROM `zabbix`.`hosts` h
INNER JOIN `zabbix`.`items` i ON i.hostid = h.hostid
INNER JOIN `zabbix`.`trends_uint` tu ON tu.itemid = i.itemid
WHERE WEEKDAY(FROM_UNIXTIME(tu.clock)) < 5
AND FROM_UNIXTIME(tu.clock, '%Y-%m-%d') NOT IN (
SELECT DATE_FORMAT(`begin_date`, '%Y-%m-%d')
FROM `glpi`.`glpi_holidays`)
AND ((HOUR(FROM_UNIXTIME(tu.clock)) >= 8
AND HOUR(FROM_UNIXTIME(tu.clock)) < 12)
OR (HOUR(FROM_UNIXTIME(tu.clock)) >= 14
AND HOUR(FROM_UNIXTIME(tu.clock)) < 18));
CREATE VIEW `zabbix_dw`.`utrends_businesshours_2` AS
SELECT tu1.`itemid`,
FROM_UNIXTIME(tu1.`clock`) AS `time`,
tu1.`value_min` AS `value_min_1`,
tu1.`value_avg` AS `value_avg_1`,
tu1.`value_max` AS `value_max_1`,
tu2.`value_min` AS `value_min_2`,
tu2.`value_avg` AS `value_avg_2`,
tu2.`value_max` AS `value_max_2`
FROM `zabbix`.`trends_uint` tu1
INNER JOIN `zabbix`.`trends_uint` tu2 ON (tu2.`clock` = tu1.`clock`)
WHERE WEEKDAY(FROM_UNIXTIME(tu1.`clock`)) < 5
AND FROM_UNIXTIME(tu1.`clock`, '%Y-%m-%d') NOT IN (
SELECT DATE_FORMAT(`begin_date`, '%Y-%m-%d')
FROM `glpi`.`glpi_holidays`)
AND ((HOUR(FROM_UNIXTIME(tu1.`clock`)) >= 8
AND HOUR(FROM_UNIXTIME(tu1.`clock`)) < 12)
OR (HOUR(FROM_UNIXTIME(tu1.`clock`)) >= 14
AND HOUR(FROM_UNIXTIME(tu1.`clock`)) < 18));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment