1 %define mod_path
/opt
/monitor
/op5
/reports
/module
2 %define old_mod_path
/opt
/monitor
/op5
/ndbneb
4 %define latest_db_version
2
5 # prevent stripping of binaries
6 %define __spec_install_post
/usr
/lib
/rpm
/brp
-compress
8 %{?dgroup:%define daemon_group %{dgroup}}
10 Name: monitor
-reports
-module
11 Summary: %name is a database logging event broker module
for op5 Monitor
16 URL: http
://www.op5.se
17 Source0: %name-%version.tar.gz
19 Requires: monitor
>= 4.0, mysql
20 BuildRequires
: mysql
-devel
21 BuildRoot: /override
/%name-%version
22 PreReq
: monitor
-nacoma
>= 3.3.0
25 %name is an event broker module running inside op5 Monitor. It gets
26 called when a host or service check has been processed
, when host or
27 service downtime starts and stops
, and when the op5 Monitor process
28 is stopped or started. It inserts information about these events into
29 a database
, where it is later used by the monitor
-reports package to
30 generate accurate and pretty reports very quickly.
37 CFLAGS
="
%optflags"
make
41 make DESTDIR
=%buildroot%mod_path install
42 # we create this link for backwards compatibility with
43 # pre-1.0.1 backups of the reports-module package (when it
44 # was installed in a different directory)
45 ln
-s reports
/module
%buildroot%prefix/op5
/ndbneb
47 #mkdir -p %buildroot/etc/op5-backup/modules
48 #install -m 644 report-data.backup %buildroot/etc/op5-backup/modules/monitor-report-data
51 # If we're upgrading the module while Nagios makes a call
52 # into it, we'll end up with a core-dump due to some weirdness
53 # in dlopen(). If we're installing anew, we need to update the
54 # config and then restart. Either way, it's safe to stop it
55 # unconditionally here
56 sh
/etc
/rc.d
/init.d
/monitor stop ||
:
57 sh
/etc
/rc.d
/init.d
/monitor slay ||
:
58 # This is required when we're updating from 1.0.0 of this
59 # package, which was named ndbneb and installed to
60 # %prefix/op5/ndbneb. Since we're creating a linko where
61 # the old package used to be installed, we need to remove
62 # that old package first, or we'll get a cpio error when
63 # our files are being installed. This only happens when
64 # we're being installed over reports-module-1.0.0.
65 rm -rf
%prefix/op5
/ndbneb
70 # removing the ndbneb module entirely
71 sh
/etc
/rc.d
/init.d
/monitor stop ||
:
72 sh
/etc
/rc.d
/init.d
/monitor slay ||
:
73 sed
-i
/ndbneb.so
/d
%prefix/etc
/nagios.cfg
74 sh
/etc
/rc.d
/init.d
/monitor start ||
:
78 # first fix database permissions. We do this unconditionally
80 'GRANT ALL ON monitor_reports.
* TO monitor@localhost IDENTIFIED BY "monitor"'
81 mysql
-e 'FLUSH PRIVILEGES'
83 # next we check if we need to create the database
84 query
="SELECT id FROM report_data LIMIT
1"
85 mysql monitor_reports
-Be "$query"
>/dev
/null
2>&1 ||
{
86 echo "Creating database"
87 mysqladmin create monitor_reports
>/dev
/null
2>&1 ||
:
88 mysql monitor_reports
< %mod_path/scripts
/monitor_reports.sql
91 # since "import" supports incremental imports, we might as well
92 # always run it. It will never import anything if we're already
93 # up to date, and it will make retroactively fixing a broken module
94 # as simple as updating the package
95 php
%mod_path/find_configured.php
> /tmp
/%name.interesting
98 # now try to find out if there are any files. This is
99 # trivial to do in shell, but hard to know if it's a
100 # user-error or just missing files in import.c
101 archived
="
/opt
/monitor
/var
/archives
/nagios
-*.log"
102 for f
in $archived
; do
103 if ! [ -f "$f"
]; then
107 nagioslog
=/opt
/monitor
/var
/nagios.log
108 test -f $nagioslog || nagioslog
=
111 query
="SELECT version FROM db_version"
112 current_db_version
=$
(mysql monitor_reports
-Be "$query"
-N
2>/dev
/null
)
114 # if lower version than 2, run full import, set version=2
115 if [ %latest_db_version -eq
2 ] && [ $current_db_version
-lt
%latest_db_version ]; then
116 echo -n "Running full database import ... "
;
117 test "$nagioslog$archived"
&& \
118 %mod_path/import
--truncate
-db \
120 mysql monitor_reports
-Be "UPDATE db_version SET version
=%latest_db_version"
123 echo -n "Run incremental database import ... "
;
124 # only run the import if there are any files
125 test "$nagioslog$archived"
&& \
126 %mod_path/import
--incremental \
127 --interesting
/tmp
/%name.interesting \
133 rm -f
/tmp
/%name.interesting
136 # On upgrade, make sure to point Nagios to the new module
137 # location, since it changed between 1.0.0 and 1.0.1
138 sed
-i 's
,%old_mod_path,%mod_path,g'
%prefix/etc
/nagios.cfg
140 # Add the module to the nagios configuration
141 grep
-q ndbneb.so
%prefix/etc
/nagios.cfg || \
142 sed
-i 's
#^log_file.*#broker_module=%mod_path/ndbneb.so %mod_path/ndbneb.conf\n\n&#' \
143 %prefix/etc
/nagios.cfg
145 # now start monitor again
146 /etc
/rc.d
/init.d
/monitor start
150 %defattr(-,root
,root
)
153 #/etc/op5-backup/modules/monitor-report-data
161 * Wed May
7 2008 Andreas Ericsson
<ae@op5.se
>
162 - Relocated module to
%mod_path
164 * Fri Nov
30 2007 Andreas Ericsson
<ae@op5.se
>
165 - Semi
-fleshed spec
-file skeleton created