~james-page/charms/trusty/rabbitmq-server/network-splits

« back to all changes in this revision

Viewing changes to hooks/charmhelpers/contrib/charmsupport/nrpe.py

  • Committer: james.page at ubuntu
  • Date: 2015-01-23 08:23:05 UTC
  • mfrom: (52.2.27 rabbitmq-server)
  • Revision ID: james.page@ubuntu.com-20150123082305-5uf1uk14iov78hl2
Rebase on next branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
54
54
#            juju-myservice-0
55
55
#        If you're running multiple environments with the same services in them
56
56
#        this allows you to differentiate between them.
 
57
#    nagios_servicegroups:
 
58
#      default: ""
 
59
#      type: string
 
60
#      description: |
 
61
#        A comma-separated list of nagios servicegroups.
 
62
#        If left empty, the nagios_context will be used as the servicegroup
57
63
#
58
64
# 3. Add custom checks (Nagios plugins) to files/nrpe-external-master
59
65
#
138
144
        log('Check command not found: {}'.format(parts[0]))
139
145
        return ''
140
146
 
141
 
    def write(self, nagios_context, hostname):
 
147
    def write(self, nagios_context, hostname, nagios_servicegroups=None):
142
148
        nrpe_check_file = '/etc/nagios/nrpe.d/{}.cfg'.format(
143
149
            self.command)
144
150
        with open(nrpe_check_file, 'w') as nrpe_check_config:
150
156
            log('Not writing service config as {} is not accessible'.format(
151
157
                NRPE.nagios_exportdir))
152
158
        else:
153
 
            self.write_service_config(nagios_context, hostname)
 
159
            self.write_service_config(nagios_context, hostname,
 
160
                                      nagios_servicegroups)
154
161
 
155
 
    def write_service_config(self, nagios_context, hostname):
 
162
    def write_service_config(self, nagios_context, hostname,
 
163
                             nagios_servicegroups=None):
156
164
        for f in os.listdir(NRPE.nagios_exportdir):
157
165
            if re.search('.*{}.cfg'.format(self.command), f):
158
166
                os.remove(os.path.join(NRPE.nagios_exportdir, f))
159
167
 
 
168
        if not nagios_servicegroups:
 
169
            nagios_servicegroups = nagios_context
 
170
 
160
171
        templ_vars = {
161
172
            'nagios_hostname': hostname,
162
 
            'nagios_servicegroup': nagios_context,
 
173
            'nagios_servicegroup': nagios_servicegroups,
163
174
            'description': self.description,
164
175
            'shortname': self.shortname,
165
176
            'command': self.command,
183
194
        super(NRPE, self).__init__()
184
195
        self.config = config()
185
196
        self.nagios_context = self.config['nagios_context']
 
197
        if 'nagios_servicegroups' in self.config:
 
198
            self.nagios_servicegroups = self.config['nagios_servicegroups']
 
199
        else:
 
200
            self.nagios_servicegroups = 'juju'
186
201
        self.unit_name = local_unit().replace('/', '-')
187
202
        if hostname:
188
203
            self.hostname = hostname
208
223
        nrpe_monitors = {}
209
224
        monitors = {"monitors": {"remote": {"nrpe": nrpe_monitors}}}
210
225
        for nrpecheck in self.checks:
211
 
            nrpecheck.write(self.nagios_context, self.hostname)
 
226
            nrpecheck.write(self.nagios_context, self.hostname,
 
227
                            self.nagios_servicegroups)
212
228
            nrpe_monitors[nrpecheck.shortname] = {
213
229
                "command": nrpecheck.command,
214
230
            }