book
Article ID: 105643
calendar_today
Updated On:
Issue/Introduction
Management needs to have the list of all critical alarms generated in last 3 months. How to obtain this list without using Spectrum Jaspersoft Report?
How can all critical alarms generated in a specific interval time be extracted from the reporting db?
Environment
Any Spectrum version with Spectrum Report Manager (SRM) installed.
Resolution
To manually extract all critical alarms for a specific interval time you can run the following select SQL on the reporting database.
1. Log into the SRM system as the user that owns the Spectrum installation
2. If on Windows, start a bash shell by running "bash -login"
3. cd to the $SPECROOT/mysql/bin directory and enter the following command to log into mysql:
./mysql --defaults-file=../my-spectrum.cnf -uroot -proot reporting
4. Enter the following command at the mysql prompt, changing the "set_time" parameters to meet your needs:
SELECT `landscape`.`domain_name`,
`alarminfo`.`alarm_key`,
`alarminfo`.`landscape_h`,
`model`.`model_name`,
`alarminfo`.`condition_id`,
`alarminfo`.`set_time`
FROM ((`reporting`.`alarminfo` `alarminfo`
INNER JOIN `reporting`.`landscape` `landscape`
ON `alarminfo`.`landscape_h` = `landscape`.`landscape_h`)
INNER JOIN `reporting`.`model` `model`
ON `alarminfo`.`model_key` = `model`.`model_key`) WHERE (`alarminfo`.`set_time` >={ts '2018-04-01 00:00:00'} AND `alarminfo`.`set_time`<{ts '2018-07-01 00:00:00'} AND `alarminfo`.`condition_id` = 3);
The condition_id = 3 identifies the Critical alarms, You will need to specify the interval time you want in the WHERE statement (in my sample from 1 Apr to 1 July of 2018).
You can also use the following more complex select extracted from the Jaspersoft Alarm-Log all report that considers only the alarms outages longer than 5 minutes.
SELECT
`alarminfo`.`condition_id`,
`alarminfo`.`landscape_h`,
`landscape`.`domain_name`,
`model`.`model_name`,
`alarminfo`.`set_time`,
`alarminfo`.`clear_time` ,
`alarminfo`.`alarm_key`,
`alarmtitle`.`title`,
TIMESTAMPDIFF(SECOND,alarminfo.set_time ,alarminfo.clear_time) seconds_to_clear,
TIMESTAMPDIFF(SECOND,alarminfo.set_time ,"2018-04-01 00:00:00.0") alerttime
FROM alarminfo
INNER JOIN landscape ON (alarminfo.landscape_h=landscape.landscape_h)
INNER JOIN alarmtitle ON (alarminfo.alarm_title_id=alarmtitle.alarm_title_id)
INNER JOIN model ON (alarminfo.model_key=model.model_key)
INNER JOIN alarmcondition on (alarminfo.condition_id=alarmcondition.condition_id)
WHERE
(((alarminfo.set_time>="2018-04-01 00:00:00.0" AND alarminfo.set_time<"2018-07-01 00:00:00.0") AND
(alarminfo.clear_time>="2018-04-01 00:00:00.0" AND alarminfo.clear_time<"2018-07-01 00:00:00.0")) OR
(alarminfo.set_time<"2018-04-01 00:00:00.0" and (alarminfo.clear_time>="2018-04-01 00:00:00.0" AND alarminfo.clear_time<"2018-07-01 00:00:00.0")) OR
((alarminfo.set_time>="2018-04-01 00:00:00.0" AND alarminfo.set_time<"2018-07-01 00:00:00.0") AND (alarminfo.clear_time IS NULL OR alarminfo.clear_time>"2018-07-01 00:00:00.0"))) AND
(alarmcondition.condition_name IN ("Critical")) AND ( alarminfo.clear_time is null or TIMESTAMPDIFF(SECOND,alarminfo.set_time ,alarminfo.clear_time)>60*5 )
order by `alarminfo`.`landscape_h`, `alarminfo`.`condition_id`,`alarminfo`.`set_time`;
Additional Information
Please reference the "Sample reporting DB queries" section of the documentation for additional examples.