add Zabbix plugin code
Change-Id: I9e1c1073453a4f49f660ad992df1e861c6e45373
This commit is contained in:
parent
40b96dcb76
commit
9c07018739
|
@ -0,0 +1,22 @@
|
|||
$zabbix_hash = hiera('zabbix_monitoring')
|
||||
$nodes_hash = hiera('nodes')
|
||||
|
||||
$primary_controller_nodes = filter_nodes($nodes_hash,'role','primary-controller')
|
||||
$controllers = concat($primary_controller_nodes, filter_nodes($nodes_hash,'role','controller'))
|
||||
$controller_internal_addresses = nodes_to_hash($controllers,'name','internal_address')
|
||||
$controller_nodes = ipsort(values($controller_internal_addresses))
|
||||
|
||||
$node_data = filter_nodes($nodes_hash,'fqdn',$::fqdn)
|
||||
$internal_address = join(values(nodes_to_hash($node_data,'name','internal_address')))
|
||||
$public_address = join(values(nodes_to_hash($node_data,'name','public_address')))
|
||||
$swift_address = join(values(nodes_to_hash($node_data,'name','storage_address')))
|
||||
|
||||
class { 'plugin_zabbix::monitoring':
|
||||
api_ip => hiera('management_vip'),
|
||||
server_vip => hiera('management_vip'),
|
||||
db_ip => hiera('management_vip'),
|
||||
server_ips => $controller_nodes,
|
||||
username => $zabbix_hash['username'],
|
||||
password => $zabbix_hash['password'],
|
||||
db_password => $zabbix_hash['db_password'],
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
$zabbix_hash = hiera('zabbix_monitoring')
|
||||
$nodes_hash = hiera('nodes')
|
||||
$primary_controller_nodes = filter_nodes($nodes_hash,'role','primary-controller')
|
||||
$controllers = concat($primary_controller_nodes, filter_nodes($nodes_hash,'role','controller'))
|
||||
$primary_controller = hiera('role') ? { 'primary-controller'=>true, default=>false }
|
||||
|
||||
class { 'plugin_zabbix':
|
||||
server_ip => hiera('management_vip'),
|
||||
db_ip => hiera('management_vip'),
|
||||
primary_controller => $primary_controller,
|
||||
username => $zabbix_hash['username'],
|
||||
password => $zabbix_hash['password'],
|
||||
db_password => $zabbix_hash['db_password'],
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
include plugin_zabbix::params
|
||||
|
||||
$zabbix_hash = hiera('zabbix_monitoring')
|
||||
$api_ip = hiera('management_vip')
|
||||
$api_url = "http://${api_ip}:${plugin_zabbix::params::zabbix_ports['api']}${plugin_zabbix::params::frontend_base}/api_jsonrpc.php"
|
||||
$api_hash = {
|
||||
endpoint => $api_url,
|
||||
username => $zabbix_hash['username'],
|
||||
password => $zabbix_hash['password'],
|
||||
}
|
||||
|
||||
class { 'plugin_zabbix::server::config':
|
||||
api_hash => $api_hash,
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
Damian Szeluga <dszeluga@mirantis.com>
|
||||
Kamil Swiatkowski <kswiatkowski@mirantis.com>
|
||||
Szymon Banka <sbanka@mirantis.com>
|
||||
Tomasz 'Zen' Napierala <tomasz@napierala.org>
|
||||
Dmitry Nikishov <dnikishov@mirantis.com>
|
||||
Piotr Misiak <pmisiak@mirantis.com>
|
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,6 @@
|
|||
name 'puppet-zabbix'
|
||||
version '0.1.0'
|
||||
|
||||
license 'Apache'
|
||||
summary 'Zabbix puppet module'
|
||||
description "This module installs and manages Zabbix. It is intended to work within fuel-library. It is a reimplementation of the old module by PL team."
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
mysql zabbix -e "
|
||||
update triggers set value=0,error='' where triggerid in (
|
||||
select ee.objectid from events ee
|
||||
inner join
|
||||
(select objectid,MAX(eventid) as maxid
|
||||
from events
|
||||
group by objectid)
|
||||
ee2 on ee.objectid=ee2.objectid and ee.eventid=ee2.maxid
|
||||
where
|
||||
ee.acknowledged=1) and value=1 and description in ('SNMPtrigger Critical: {ITEM.VALUE1}', 'SNMPtrigger Error: {ITEM.VALUE1}', 'SNMPtrigger Warning: {ITEM.VALUE1}', 'SNMPtrigger Information: {ITEM.VALUE1}');"
|
|
@ -0,0 +1,137 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2014-12-10T10:36:40Z</date>
|
||||
<screens>
|
||||
<screen>
|
||||
<name>Openstack Cluster</name>
|
||||
<hsize>2</hsize>
|
||||
<vsize>3</vsize>
|
||||
<screen_items>
|
||||
<screen_item>
|
||||
<resourcetype>0</resourcetype>
|
||||
<width>500</width>
|
||||
<height>100</height>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<colspan>1</colspan>
|
||||
<rowspan>1</rowspan>
|
||||
<elements>0</elements>
|
||||
<valign>0</valign>
|
||||
<halign>0</halign>
|
||||
<style>0</style>
|
||||
<url/>
|
||||
<dynamic>0</dynamic>
|
||||
<sort_triggers>0</sort_triggers>
|
||||
<resource>
|
||||
<name>Cluster CPU Load</name>
|
||||
<host>OpenStackCluster</host>
|
||||
</resource>
|
||||
<application/>
|
||||
</screen_item>
|
||||
<screen_item>
|
||||
<resourcetype>0</resourcetype>
|
||||
<width>500</width>
|
||||
<height>100</height>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<colspan>1</colspan>
|
||||
<rowspan>1</rowspan>
|
||||
<elements>0</elements>
|
||||
<valign>0</valign>
|
||||
<halign>0</halign>
|
||||
<style>0</style>
|
||||
<url/>
|
||||
<dynamic>0</dynamic>
|
||||
<sort_triggers>0</sort_triggers>
|
||||
<resource>
|
||||
<name>CPUs in Cluster</name>
|
||||
<host>OpenStackCluster</host>
|
||||
</resource>
|
||||
<application/>
|
||||
</screen_item>
|
||||
<screen_item>
|
||||
<resourcetype>0</resourcetype>
|
||||
<width>500</width>
|
||||
<height>100</height>
|
||||
<x>1</x>
|
||||
<y>1</y>
|
||||
<colspan>1</colspan>
|
||||
<rowspan>1</rowspan>
|
||||
<elements>0</elements>
|
||||
<valign>0</valign>
|
||||
<halign>0</halign>
|
||||
<style>0</style>
|
||||
<url/>
|
||||
<dynamic>0</dynamic>
|
||||
<sort_triggers>0</sort_triggers>
|
||||
<resource>
|
||||
<name>RAM in Cluster</name>
|
||||
<host>OpenStackCluster</host>
|
||||
</resource>
|
||||
<application/>
|
||||
</screen_item>
|
||||
<screen_item>
|
||||
<resourcetype>13</resourcetype>
|
||||
<width>500</width>
|
||||
<height>100</height>
|
||||
<x>1</x>
|
||||
<y>0</y>
|
||||
<colspan>1</colspan>
|
||||
<rowspan>1</rowspan>
|
||||
<elements>10</elements>
|
||||
<valign>0</valign>
|
||||
<halign>0</halign>
|
||||
<style>0</style>
|
||||
<url/>
|
||||
<dynamic>0</dynamic>
|
||||
<sort_triggers>0</sort_triggers>
|
||||
<resource>0</resource>
|
||||
<application/>
|
||||
</screen_item>
|
||||
<screen_item>
|
||||
<resourcetype>0</resourcetype>
|
||||
<width>500</width>
|
||||
<height>100</height>
|
||||
<x>0</x>
|
||||
<y>2</y>
|
||||
<colspan>1</colspan>
|
||||
<rowspan>1</rowspan>
|
||||
<elements>0</elements>
|
||||
<valign>0</valign>
|
||||
<halign>0</halign>
|
||||
<style>0</style>
|
||||
<url/>
|
||||
<dynamic>0</dynamic>
|
||||
<sort_triggers>0</sort_triggers>
|
||||
<resource>
|
||||
<name>Number of instances</name>
|
||||
<host>OpenStackCluster</host>
|
||||
</resource>
|
||||
<application/>
|
||||
</screen_item>
|
||||
<screen_item>
|
||||
<resourcetype>0</resourcetype>
|
||||
<width>500</width>
|
||||
<height>100</height>
|
||||
<x>1</x>
|
||||
<y>2</y>
|
||||
<colspan>1</colspan>
|
||||
<rowspan>1</rowspan>
|
||||
<elements>0</elements>
|
||||
<valign>0</valign>
|
||||
<halign>0</halign>
|
||||
<style>0</style>
|
||||
<url/>
|
||||
<dynamic>0</dynamic>
|
||||
<sort_triggers>0</sort_triggers>
|
||||
<resource>
|
||||
<name>Openstack Offline Services</name>
|
||||
<host>OpenStackCluster</host>
|
||||
</resource>
|
||||
<application/>
|
||||
</screen_item>
|
||||
</screen_items>
|
||||
</screen>
|
||||
</screens>
|
||||
</zabbix_export>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,798 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:15:06Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App MySQL</template>
|
||||
<name>Template App MySQL</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>MySQL begin operations per second</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Com_begin]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>0</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>qps</units>
|
||||
<delta>1</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.status[*], which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL bytes received per second</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Bytes_received]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>0</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>Bps</units>
|
||||
<delta>1</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>The number of bytes received from all clients.
|
||||
|
||||
It requires user parameter mysql.status[*], which is defined in
|
||||
userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL bytes sent per second</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Bytes_sent]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>0</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>Bps</units>
|
||||
<delta>1</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>The number of bytes sent to all clients.
|
||||
|
||||
It requires user parameter mysql.status[*], which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL commit operations per second</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Com_commit]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>0</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>qps</units>
|
||||
<delta>1</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.status[*], which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL delete operations per second</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Com_delete]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>0</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>qps</units>
|
||||
<delta>1</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.status[*], which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL insert operations per second</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Com_insert]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>0</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>qps</units>
|
||||
<delta>1</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.status[*], which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL queries per second</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Questions]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>0</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>qps</units>
|
||||
<delta>1</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.status[*], which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL rollback operations per second</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Com_rollback]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>0</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>qps</units>
|
||||
<delta>1</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.status[*], which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL select operations per second</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Com_select]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>0</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>qps</units>
|
||||
<delta>1</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.status[*], which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL slow queries</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Slow_queries]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.status[*], which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL status</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.ping</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.ping, which is defined in userparameter_mysql.conf
|
||||
|
||||
0 - MySQL server is down
|
||||
1 - MySQL server is up</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap>
|
||||
<name>Service state</name>
|
||||
</valuemap>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL update operations per second</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Com_update]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>0</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>qps</units>
|
||||
<delta>1</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.status[*], which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL uptime</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.status[Uptime]</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>uptime</units>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.status, which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>MySQL version</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>mysql.version</key>
|
||||
<delay>3600</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>1</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>It requires user parameter mysql.uptime, which is defined in userparameter_mysql.conf.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>MySQL</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens>
|
||||
<screen>
|
||||
<name>MySQL performance</name>
|
||||
<hsize>2</hsize>
|
||||
<vsize>1</vsize>
|
||||
<screen_items>
|
||||
<screen_item>
|
||||
<resourcetype>0</resourcetype>
|
||||
<width>500</width>
|
||||
<height>200</height>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<colspan>1</colspan>
|
||||
<rowspan>1</rowspan>
|
||||
<elements>0</elements>
|
||||
<valign>1</valign>
|
||||
<halign>0</halign>
|
||||
<style>0</style>
|
||||
<url/>
|
||||
<dynamic>0</dynamic>
|
||||
<sort_triggers>0</sort_triggers>
|
||||
<resource>
|
||||
<name>MySQL operations</name>
|
||||
<host>Template App MySQL</host>
|
||||
</resource>
|
||||
</screen_item>
|
||||
<screen_item>
|
||||
<resourcetype>0</resourcetype>
|
||||
<width>500</width>
|
||||
<height>270</height>
|
||||
<x>1</x>
|
||||
<y>0</y>
|
||||
<colspan>1</colspan>
|
||||
<rowspan>1</rowspan>
|
||||
<elements>0</elements>
|
||||
<valign>1</valign>
|
||||
<halign>0</halign>
|
||||
<style>0</style>
|
||||
<url/>
|
||||
<dynamic>0</dynamic>
|
||||
<sort_triggers>0</sort_triggers>
|
||||
<resource>
|
||||
<name>MySQL bandwidth</name>
|
||||
<host>Template App MySQL</host>
|
||||
</resource>
|
||||
</screen_item>
|
||||
</screen_items>
|
||||
</screen>
|
||||
</screens>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App MySQL:mysql.ping.last(0)}=0</expression>
|
||||
<name>MySQL is down</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>2</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
<graphs>
|
||||
<graph>
|
||||
<name>MySQL bandwidth</name>
|
||||
<width>900</width>
|
||||
<height>200</height>
|
||||
<yaxismin>0.0000</yaxismin>
|
||||
<yaxismax>100.0000</yaxismax>
|
||||
<show_work_period>1</show_work_period>
|
||||
<show_triggers>1</show_triggers>
|
||||
<type>0</type>
|
||||
<show_legend>1</show_legend>
|
||||
<show_3d>0</show_3d>
|
||||
<percent_left>0.0000</percent_left>
|
||||
<percent_right>0.0000</percent_right>
|
||||
<ymin_type_1>0</ymin_type_1>
|
||||
<ymax_type_1>0</ymax_type_1>
|
||||
<ymin_item_1>0</ymin_item_1>
|
||||
<ymax_item_1>0</ymax_item_1>
|
||||
<graph_items>
|
||||
<graph_item>
|
||||
<sortorder>0</sortorder>
|
||||
<drawtype>5</drawtype>
|
||||
<color>00AA00</color>
|
||||
<yaxisside>0</yaxisside>
|
||||
<calc_fnc>2</calc_fnc>
|
||||
<type>0</type>
|
||||
<item>
|
||||
<host>Template App MySQL</host>
|
||||
<key>mysql.status[Bytes_received]</key>
|
||||
</item>
|
||||
</graph_item>
|
||||
<graph_item>
|
||||
<sortorder>1</sortorder>
|
||||
<drawtype>5</drawtype>
|
||||
<color>3333FF</color>
|
||||
<yaxisside>0</yaxisside>
|
||||
<calc_fnc>2</calc_fnc>
|
||||
<type>0</type>
|
||||
<item>
|
||||
<host>Template App MySQL</host>
|
||||
<key>mysql.status[Bytes_sent]</key>
|
||||
</item>
|
||||
</graph_item>
|
||||
</graph_items>
|
||||
</graph>
|
||||
<graph>
|
||||
<name>MySQL operations</name>
|
||||
<width>900</width>
|
||||
<height>200</height>
|
||||
<yaxismin>0.0000</yaxismin>
|
||||
<yaxismax>100.0000</yaxismax>
|
||||
<show_work_period>1</show_work_period>
|
||||
<show_triggers>1</show_triggers>
|
||||
<type>0</type>
|
||||
<show_legend>1</show_legend>
|
||||
<show_3d>0</show_3d>
|
||||
<percent_left>0.0000</percent_left>
|
||||
<percent_right>0.0000</percent_right>
|
||||
<ymin_type_1>0</ymin_type_1>
|
||||
<ymax_type_1>0</ymax_type_1>
|
||||
<ymin_item_1>0</ymin_item_1>
|
||||
<ymax_item_1>0</ymax_item_1>
|
||||
<graph_items>
|
||||
<graph_item>
|
||||
<sortorder>0</sortorder>
|
||||
<drawtype>0</drawtype>
|
||||
<color>C8C800</color>
|
||||
<yaxisside>0</yaxisside>
|
||||
<calc_fnc>2</calc_fnc>
|
||||
<type>0</type>
|
||||
<item>
|
||||
<host>Template App MySQL</host>
|
||||
<key>mysql.status[Com_begin]</key>
|
||||
</item>
|
||||
</graph_item>
|
||||
<graph_item>
|
||||
<sortorder>1</sortorder>
|
||||
<drawtype>0</drawtype>
|
||||
<color>006400</color>
|
||||
<yaxisside>0</yaxisside>
|
||||
<calc_fnc>2</calc_fnc>
|
||||
<type>0</type>
|
||||
<item>
|
||||
<host>Template App MySQL</host>
|
||||
<key>mysql.status[Com_commit]</key>
|
||||
</item>
|
||||
</graph_item>
|
||||
<graph_item>
|
||||
<sortorder>2</sortorder>
|
||||
<drawtype>0</drawtype>
|
||||
<color>C80000</color>
|
||||
<yaxisside>0</yaxisside>
|
||||
<calc_fnc>2</calc_fnc>
|
||||
<type>0</type>
|
||||
<item>
|
||||
<host>Template App MySQL</host>
|
||||
<key>mysql.status[Com_delete]</key>
|
||||
</item>
|
||||
</graph_item>
|
||||
<graph_item>
|
||||
<sortorder>3</sortorder>
|
||||
<drawtype>0</drawtype>
|
||||
<color>0000EE</color>
|
||||
<yaxisside>0</yaxisside>
|
||||
<calc_fnc>2</calc_fnc>
|
||||
<type>0</type>
|
||||
<item>
|
||||
<host>Template App MySQL</host>
|
||||
<key>mysql.status[Com_insert]</key>
|
||||
</item>
|
||||
</graph_item>
|
||||
<graph_item>
|
||||
<sortorder>4</sortorder>
|
||||
<drawtype>0</drawtype>
|
||||
<color>640000</color>
|
||||
<yaxisside>0</yaxisside>
|
||||
<calc_fnc>2</calc_fnc>
|
||||
<type>0</type>
|
||||
<item>
|
||||
<host>Template App MySQL</host>
|
||||
<key>mysql.status[Com_rollback]</key>
|
||||
</item>
|
||||
</graph_item>
|
||||
<graph_item>
|
||||
<sortorder>5</sortorder>
|
||||
<drawtype>0</drawtype>
|
||||
<color>00C800</color>
|
||||
<yaxisside>0</yaxisside>
|
||||
<calc_fnc>2</calc_fnc>
|
||||
<type>0</type>
|
||||
<item>
|
||||
<host>Template App MySQL</host>
|
||||
<key>mysql.status[Com_select]</key>
|
||||
</item>
|
||||
</graph_item>
|
||||
<graph_item>
|
||||
<sortorder>6</sortorder>
|
||||
<drawtype>0</drawtype>
|
||||
<color>C800C8</color>
|
||||
<yaxisside>0</yaxisside>
|
||||
<calc_fnc>2</calc_fnc>
|
||||
<type>0</type>
|
||||
<item>
|
||||
<host>Template App MySQL</host>
|
||||
<key>mysql.status[Com_update]</key>
|
||||
</item>
|
||||
</graph_item>
|
||||
</graph_items>
|
||||
</graph>
|
||||
</graphs>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,430 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2014-05-23T15:04:32Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Ceilometer</template>
|
||||
<name>Template App OpenStack Ceilometer</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Ceilometer Agent Central process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,ceilometer,,ceilometer-agent-central]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Ceilometer Agent Central should run on this node</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>crm.node.check[p_openstack-ceilometer-agent-central]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Ceilometer Alarm Evaluator process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,ceilometer,,ceilometer-alarm-evaluator]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Ceilometer Alarm Evaluator should run on this node</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>crm.node.check[p_openstack-ceilometer-alarm-evaluator]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Ceilometer Alarm Notifier process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,ceilometer,,ceilometer-alarm-notifier]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Ceilometer API process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,ceilometer,,ceilometer-api]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Ceilometer API Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},8777]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Ceilometer Collector process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,ceilometer,,ceilometer-collector]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Ceilometer:proc.num[python,ceilometer,,ceilometer-agent-central].last(0)}=0 & {Template App OpenStack Ceilometer:crm.node.check[p_openstack-ceilometer-agent-central].last(0)}=1</expression>
|
||||
<name>Ceilometer Alarm Agent Central service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Ceilometer:proc.num[python,ceilometer,,ceilometer-alarm-evaluator].last(0)}=0 & {Template App OpenStack Ceilometer:crm.node.check[p_openstack-ceilometer-alarm-evaluator].last(0)}=1</expression>
|
||||
<name>Ceilometer Alarm Alarm Evaluator service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Ceilometer:proc.num[python,ceilometer,,ceilometer-alarm-notifier].last(0)}=0</expression>
|
||||
<name>Ceilometer Alarm Notifier service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Ceilometer:proc.num[python,ceilometer,,ceilometer-api].last(0)}=0</expression>
|
||||
<name>Ceilometer API Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Ceilometer:net.tcp.service[http,{$IP_MANAGEMENT},8777].last()}=0</expression>
|
||||
<name>Ceilometer API Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Ceilometer:proc.num[python,ceilometer,,ceilometer-collector].last(0)}=0</expression>
|
||||
<name>Ceilometer Collector service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,86 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2014-06-27T08:32:31Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Ceilometer Compute</template>
|
||||
<name>Template App OpenStack Ceilometer Compute</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Ceilometer Agent Compute process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,ceilometer,,ceilometer-agent-compute]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Ceilometer</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Ceilometer Compute:proc.num[python,ceilometer,,ceilometer-agent-compute].last(0)}=0</expression>
|
||||
<name>Ceilometer Agent Compute service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,132 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:15:29Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Cinder API</template>
|
||||
<name>Template App OpenStack Cinder API</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Cinder API</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Cinder API Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},8776]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Cinder API</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Cinder API server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,cinder,,cinder-api]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Cinder API</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Cinder API:proc.num[python,cinder,,cinder-api].last(0)}=0</expression>
|
||||
<name>Cinder API Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Cinder API:net.tcp.service[http,{$IP_MANAGEMENT},8776].last(0)}=0</expression>
|
||||
<name>Cinder API Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:15:49Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Cinder API check</template>
|
||||
<name>Template App OpenStack Cinder API check</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Cinder API check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Cinder API test succeeded</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>cinder.api.status</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Cinder API check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Cinder API check:cinder.api.status.last(0)}=0</expression>
|
||||
<name>Cinder API test failed</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:16:07Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Cinder Scheduler</template>
|
||||
<name>Template App OpenStack Cinder Scheduler</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Cinder Scheduler</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Cinder Scheduler Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,cinder,,cinder-scheduler]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Cinder Scheduler</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Cinder Scheduler:proc.num[python,cinder,,cinder-scheduler].last(0)}=0</expression>
|
||||
<name>Cinder Scheduler process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,128 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2014-12-11T12:22:08Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Cinder Volume</template>
|
||||
<name>Template App OpenStack Cinder Volume</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Cinder Volume</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Cinder Volume process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,cinder,,cinder-volume]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Cinder Volume</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Cinder volume should run on this node</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>crm.node.check[p_cinder-volume]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Cinder Volume</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Cinder Volume:proc.num[python,cinder,,cinder-volume].last(0)}=0 & {Template App OpenStack Cinder Volume:crm.node.check[p_cinder-volume].last(0)}=1</expression>
|
||||
<name>Cinder Volume process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,132 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:16:32Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Glance API</template>
|
||||
<name>Template App OpenStack Glance API</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Glance API</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Glance API Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},9292]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Glance API</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Glance API Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,glance,,glance-api]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Glance API</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Glance API:proc.num[python,glance,,glance-api].last(0)}=0</expression>
|
||||
<name>Glance API Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Glance API:net.tcp.service[http,{$IP_MANAGEMENT},9292].last(0)}=0</expression>
|
||||
<name>Glance API Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:16:53Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Glance API check</template>
|
||||
<name>Template App OpenStack Glance API check</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Glance API check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Glance API test succeeded</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>glance.api.status</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Glance API check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Glance API check:glance.api.status.last(0)}=0</expression>
|
||||
<name>Glance API test failed on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,132 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:17:07Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Glance Registry</template>
|
||||
<name>Template App OpenStack Glance Registry</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Glance Registry</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Glance Registry Server is listening on port</name>
|
||||
<type>3</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},9191]</key>
|
||||
<delay>60</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Glance Registry</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Glance Registry Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,glance,,glance-registry]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Glance Registry</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Glance Registry:proc.num[python,glance,,glance-registry].last(0)}=0</expression>
|
||||
<name>Glance Registry Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Glance Registry:net.tcp.service[http,{$IP_MANAGEMENT},9191].last(0)}=0</expression>
|
||||
<name>Glance Registry Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,181 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:17:23Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Horizon</template>
|
||||
<name>Template App OpenStack Horizon</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Horizon</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Horizon HTTP Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},80]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Horizon</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Horizon HTTP Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[,apache,,/usr/sbin/httpd]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Horizon</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Horizon HTTPS Server is listening on port</name>
|
||||
<type>3</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[https,{$IP_MANAGEMENT},443]</key>
|
||||
<delay>60</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>1</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Horizon</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Horizon:proc.num[,apache,,/usr/sbin/httpd].last(0)}=0</expression>
|
||||
<name>Horizon HTTP Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Horizon:net.tcp.service[http,{$IP_MANAGEMENT},80].last(0)}=0</expression>
|
||||
<name>Horizon HTTP Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Horizon:net.tcp.service[https,{$IP_MANAGEMENT},443].last(0)}=0</expression>
|
||||
<name>Horizon HTTPS Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,181 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:17:37Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Keystone</template>
|
||||
<name>Template App OpenStack Keystone</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Keystone</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Keystone Admin API Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},35357]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Keystone</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Keystone API Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},5000]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Keystone</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Keystone Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,keystone,,keystone-all]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Keystone</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Keystone:net.tcp.service[http,{$IP_MANAGEMENT},35357].last(0)}=0</expression>
|
||||
<name>Keystone Admin API Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Keystone:net.tcp.service[http,{$IP_MANAGEMENT},5000].last(0)}=0</expression>
|
||||
<name>Keystone API Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Keystone:proc.num[python,keystone,,keystone-all].last(0)}=0</expression>
|
||||
<name>Keystone Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,132 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:17:50Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Keystone API check</template>
|
||||
<name>Template App OpenStack Keystone API check</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Keystone API check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Keystone API test succeeded</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>keystone.api.status</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Keystone API check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Keystone Service API test succeeded</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>keystone.service.api.status</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Keystone API check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Keystone API check:keystone.api.status.last(0)}=0</expression>
|
||||
<name>Keystone API test failed on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Keystone API check:keystone.service.api.status.last(0)}=0</expression>
|
||||
<name>Keystone Service API test failed on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:18:03Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Libvirt</template>
|
||||
<name>Template App OpenStack Libvirt</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Libvirt</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Libvirtd process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[libvirtd,root,,]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Libvirt</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Libvirt:proc.num[libvirtd,root,,].last(0)}=0</expression>
|
||||
<name>Libvirtd process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:19:34Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Neutron API check</template>
|
||||
<name>Template App OpenStack Neutron API check</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron API check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Neutron API test succeeded</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>neutron.api.status</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron API check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Neutron API check:neutron.api.status.last(0)}=0</expression>
|
||||
<name>Neutron API test failed on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,128 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2014-05-23T08:33:55Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Neutron DHCP Agent</template>
|
||||
<name>Template App OpenStack Neutron DHCP Agent</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron DHCP Agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Neutron DHCP Agent process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,neutron,,neutron-dhcp-agent]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron DHCP Agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Neutron DHCP Agent should run on this node</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>crm.node.check[p_neutron-dhcp-agent]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron DHCP Agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Neutron DHCP Agent:proc.num[python,neutron,,neutron-dhcp-agent].last(0)}=0 & {Template App OpenStack Neutron DHCP Agent:crm.node.check[p_neutron-dhcp-agent].last(0)}=1</expression>
|
||||
<name>Neutron DHCP Agent process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,128 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2014-05-23T08:53:02Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Neutron L3 Agent</template>
|
||||
<name>Template App OpenStack Neutron L3 Agent</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron L3 Agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Neutron L3 Agent process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,neutron,,neutron-l3-agent]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron L3 Agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Neutron L3 Agent should run on this node</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>crm.node.check[p_neutron-l3-agent]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron L3 Agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Neutron L3 Agent:proc.num[python,neutron,,neutron-l3-agent].last(0)}=0 & {Template App OpenStack Neutron L3 Agent:crm.node.check[p_neutron-l3-agent].last(0)}=1</expression>
|
||||
<name>Neutron L3 Agent process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-15T21:42:33Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Neutron Metadata Agent</template>
|
||||
<name>Template App OpenStack Neutron Metadata Agent</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron Metadata Agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Neutron Metadata Agent process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,neutron,,neutron-metadata-agent]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron Metadata Agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Neutron Metadata Agent:proc.num[python,neutron,,neutron-metadata-agent].last(0)}=0</expression>
|
||||
<name>Neutron Metadata Agent process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-15T21:42:33Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Neutron OVS Agent</template>
|
||||
<name>Template App OpenStack Neutron OVS Agent</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron OVS Agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Neutron OVS Agent process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,neutron,,neutron-openvswitch-agent]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron OVS Agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Neutron OVS Agent:proc.num[python,neutron,,neutron-openvswitch-agent].last(0)}=0</expression>
|
||||
<name>Neutron OVS Agent process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,138 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2014-04-24T19:16:37Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Neutron Server</template>
|
||||
<name>Template App OpenStack Neutron Server</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron Server</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Neutron Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},9696]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron Server</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Neutron Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,neutron,,neutron-server]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Neutron Server</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Neutron Server:proc.num[python,neutron,,neutron-server].last(0)}=0</expression>
|
||||
<name>Neutron Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Neutron Server:net.tcp.service[http,{$IP_MANAGEMENT},9696].last(0)}=0</expression>
|
||||
<name>Neutron Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:18:18Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Nova API</template>
|
||||
<name>Template App OpenStack Nova API</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova API</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Nova API Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,nova,,nova-api]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova API</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Nova API:proc.num[python,nova,,nova-api].last(0)}=0</expression>
|
||||
<name>Nova API process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:18:30Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Nova API EC2</template>
|
||||
<name>Template App OpenStack Nova API EC2</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova API EC2</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Nova API EC2 Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},8773]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova API EC2</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Nova API EC2:net.tcp.service[http,{$IP_MANAGEMENT},8773].last(0)}=0</expression>
|
||||
<name>Nova API EC2 Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:18:50Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Nova API Metadata</template>
|
||||
<name>Template App OpenStack Nova API Metadata</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova API Metadata</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Nova API Metadata Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},8775]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova API Metadata</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Nova API Metadata:net.tcp.service[http,{$IP_MANAGEMENT},8775].last(0)}=0</expression>
|
||||
<name>Nova API Metadata Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:19:04Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Nova API OSAPI</template>
|
||||
<name>Template App OpenStack Nova API OSAPI</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova API OSAPI</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Nova API OSAPI Compute Server is listening on port</name>
|
||||
<type>3</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_MANAGEMENT},8774]</key>
|
||||
<delay>60</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova API OSAPI</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Nova API OSAPI:net.tcp.service[http,{$IP_MANAGEMENT},8774].last(0)}=0</expression>
|
||||
<name>Nova API OSAPI Compute Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:19:34Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Nova API OSAPI check</template>
|
||||
<name>Template App OpenStack Nova API OSAPI check</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova API OSAPI check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Nova API test succeeded</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>nova.api.status</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova API OSAPI check</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Nova API OSAPI check:nova.api.status.last(0)}=0</expression>
|
||||
<name>Nova API test failed on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-15T21:42:33Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Nova Cert</template>
|
||||
<name>Template App OpenStack Nova Cert</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova Cert</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Nova Cert Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,nova,,nova-cert]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova Cert</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Nova Cert:proc.num[python,nova,,nova-cert].last(0)}=0</expression>
|
||||
<name>Nova Cert process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-15T21:55:39Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Nova Compute</template>
|
||||
<name>Template App OpenStack Nova Compute</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova Compute</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Nova Compute Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,nova,,nova-compute]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova Compute</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Nova Compute:proc.num[python,nova,,nova-compute].last(0)}=0</expression>
|
||||
<name>Nova Compute process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-15T21:36:18Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Nova ConsoleAuth</template>
|
||||
<name>Template App OpenStack Nova ConsoleAuth</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova ConsoleAuth</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Nova ConsoleAuth Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,nova,,nova-consoleauth]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova ConsoleAuth</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Nova ConsoleAuth:proc.num[python,nova,,nova-consoleauth].last(0)}=0</expression>
|
||||
<name>Nova ConsoleAuth process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-18T07:47:28Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Nova Network</template>
|
||||
<name>Template App OpenStack Nova Network</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova Network</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Nova Network Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,nova,,nova-network]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova Network</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Nova Network:proc.num[python,nova,,nova-network].last(0)}=0</expression>
|
||||
<name>Nova Network process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,83 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-15T22:01:03Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Nova Scheduler</template>
|
||||
<name>Template App OpenStack Nova Scheduler</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova Scheduler</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Nova Scheduler Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,nova,,nova-scheduler]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Nova Scheduler</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Nova Scheduler:proc.num[python,nova,,nova-scheduler].last(0)}=0</expression>
|
||||
<name>Nova Scheduler process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,132 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:21:22Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Open vSwitch</template>
|
||||
<name>Template App OpenStack Open vSwitch</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Open vSwitch</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Open vSwitch DB Server server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[,root,,ovsdb-server]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Open vSwitch</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Open vSwitch Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[,root,,ovs-vswitchd]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Open vSwitch</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Open vSwitch:proc.num[,root,,ovsdb-server].last(0)}=0</expression>
|
||||
<name>Open vSwitch DB Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Open vSwitch:proc.num[,root,,ovs-vswitchd].last(0)}=0</expression>
|
||||
<name>Open vSwitch Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,474 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-18T13:46:42Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack HA RabbitMQ</template>
|
||||
<name>Template App OpenStack HA RabbitMQ</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>RabbitMQ AMQP is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.port[{$IP_MANAGEMENT},5673]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>RabbitMQ EPMD is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.port[,4369]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>RabbitMQ EPMD process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[,rabbitmq,,bin/epmd]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>RabbitMQ missing nodes</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>rabbitmq.missing.nodes</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>RabbitMQ missing queues</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>rabbitmq.missing.queues</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>RabbitMQ queue items</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>rabbitmq.queue.items</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>RabbitMQ queues without consumers</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>rabbitmq.queues.without.consumers</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>RabbitMQ Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.port[,41055]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>RabbitMQ Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[,rabbitmq,,bin/beam]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>RabbitMQ unmirrored queues</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>rabbitmq.unmirror.queues</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>RabbitMQ</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack HA RabbitMQ:net.tcp.port[,4369].last(0)}=0</expression>
|
||||
<name>RabbitMQ EPMD service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack HA RabbitMQ:proc.num[,rabbitmq,,bin/epmd].last(0)}=0</expression>
|
||||
<name>RabbitMQ Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack HA RabbitMQ:proc.num[,rabbitmq,,bin/beam].last(0)}=0</expression>
|
||||
<name>RabbitMQ Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack HA RabbitMQ:net.tcp.port[{$IP_MANAGEMENT},5673].last(0)}=0</expression>
|
||||
<name>RabbitMQ Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack HA RabbitMQ:net.tcp.port[,41055].last(0)}=0</expression>
|
||||
<name>RabbitMQ Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,181 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:22:14Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Swift Account</template>
|
||||
<name>Template App OpenStack Swift Account</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Account</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Swift Account Replicator process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,swift,,swift-account-replicator]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Account</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Swift Account Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_STORAGE},6002]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Account</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Swift Account Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,swift,,swift-account-server]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Account</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Account:proc.num[python,swift,,swift-account-replicator].last(0)}=0</expression>
|
||||
<name>Swift Account Replicator process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Account:proc.num[python,swift,,swift-account-server].last(0)}=0</expression>
|
||||
<name>Swift Account Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Account:net.tcp.service[http,{$IP_STORAGE},6002].last(0)}=0</expression>
|
||||
<name>Swift Account Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,181 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:22:26Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Swift Container</template>
|
||||
<name>Template App OpenStack Swift Container</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Container</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Swift Container Replicator process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,swift,,swift-container-replicator]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Container</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Swift Container Server is listening on port</name>
|
||||
<type>3</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_STORAGE},6001]</key>
|
||||
<delay>60</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Container</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Swift Container Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,swift,,swift-container-server]</key>
|
||||
<delay>60</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Container</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Container:proc.num[python,swift,,swift-container-replicator].last(0)}=0</expression>
|
||||
<name>Swift Container Replicator process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Container:proc.num[python,swift,,swift-container-server].last(0)}=0</expression>
|
||||
<name>Swift Container Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Container:net.tcp.service[http,{$IP_STORAGE},6001].last(0)}=0</expression>
|
||||
<name>Swift Container Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,181 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:22:38Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Swift Object</template>
|
||||
<name>Template App OpenStack Swift Object</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Object</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Swift Object Replicator process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,swift,,swift-object-replicator]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Object</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Swift Object Server is listening on port</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_STORAGE},6000]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Object</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Swift Object Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,swift,,swift-object-server]</key>
|
||||
<delay>30</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Object</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Object:proc.num[python,swift,,swift-object-replicator].last(0)}=0</expression>
|
||||
<name>Swift Object Replicator process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Object:proc.num[python,swift,,swift-object-server].last(0)}=0</expression>
|
||||
<name>Swift Object Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Object:net.tcp.service[http,{$IP_STORAGE},6000].last(0)}=0</expression>
|
||||
<name>Swift Object Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,132 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:22:52Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App OpenStack Swift Proxy</template>
|
||||
<name>Template App OpenStack Swift Proxy</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Proxy</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Swift Proxy Server is listening on port</name>
|
||||
<type>3</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>net.tcp.service[http,{$IP_STORAGE},8080]</key>
|
||||
<delay>60</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>1</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Proxy</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Swift Proxy Server process is running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>proc.num[python,swift,,swift-proxy-server]</key>
|
||||
<delay>60</delay>
|
||||
<history>90</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Swift Proxy</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Proxy:proc.num[python,swift,,swift-proxy-server].last(0)}=0</expression>
|
||||
<name>Swift Proxy Server process is not running on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App OpenStack Swift Proxy:net.tcp.service[http,{$IP_STORAGE},8080].last(0)}=0</expression>
|
||||
<name>Swift Proxy Server service is down on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
|
@ -0,0 +1,183 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>2.0</version>
|
||||
<date>2013-07-10T21:23:38Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template App Zabbix Agent</template>
|
||||
<name>Template App Zabbix Agent</name>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Zabbix agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items>
|
||||
<item>
|
||||
<name>Agent ping</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>agent.ping</key>
|
||||
<delay>60</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description>The agent always returns 1 for this item. It could be used in combination with nodata() for availability check.</description>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Zabbix agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap>
|
||||
<name>Zabbix agent ping status</name>
|
||||
</valuemap>
|
||||
</item>
|
||||
<item>
|
||||
<name>Host name of zabbix_agentd running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>agent.hostname</key>
|
||||
<delay>3600</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>1</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Zabbix agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
<item>
|
||||
<name>Version of zabbix_agent(d) running</name>
|
||||
<type>0</type>
|
||||
<snmp_community/>
|
||||
<multiplier>0</multiplier>
|
||||
<snmp_oid/>
|
||||
<key>agent.version</key>
|
||||
<delay>3600</delay>
|
||||
<history>7</history>
|
||||
<trends>365</trends>
|
||||
<status>0</status>
|
||||
<value_type>1</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<delta>0</delta>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privpassphrase/>
|
||||
<formula>1</formula>
|
||||
<delay_flex/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<data_type>0</data_type>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Zabbix agent</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
</item>
|
||||
</items>
|
||||
<discovery_rules/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
<triggers>
|
||||
<trigger>
|
||||
<expression>{Template App Zabbix Agent:agent.hostname.diff(0)}>0</expression>
|
||||
<name>Host name of zabbix_agentd was changed on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>1</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App Zabbix Agent:agent.version.diff(0)}>0</expression>
|
||||
<name>Version of zabbix_agent(d) was changed on {HOST.NAME}</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>1</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
<trigger>
|
||||
<expression>{Template App Zabbix Agent:agent.ping.nodata(5m)}=1</expression>
|
||||
<name>Zabbix agent on {HOST.NAME} is unreachable for 5 minutes</name>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>3</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<dependencies/>
|
||||
</trigger>
|
||||
</triggers>
|
||||
</zabbix_export>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,109 @@
|
|||
#!/usr/bin/python
|
||||
import time
|
||||
import urllib2
|
||||
import sys
|
||||
import simplejson as json
|
||||
import ConfigParser
|
||||
import logging
|
||||
|
||||
CONF_FILE = '/etc/zabbix/check_api.conf'
|
||||
LOGGING_LEVELS = {
|
||||
'CRITICAL': logging.CRITICAL,
|
||||
'WARNING': logging.WARNING,
|
||||
'INFO': logging.INFO,
|
||||
'DEBUG': logging.DEBUG
|
||||
}
|
||||
|
||||
def get_logger(level):
|
||||
logger = logging.getLogger()
|
||||
ch = logging.StreamHandler(sys.stdout)
|
||||
logger.setLevel(LOGGING_LEVELS[level])
|
||||
logger.addHandler(ch)
|
||||
return logger
|
||||
|
||||
class OSAPI(object):
|
||||
"""Openstack API"""
|
||||
|
||||
def __init__(self, logger, config):
|
||||
self.logger = logger
|
||||
self.config = config
|
||||
self.username = self.config.get('api', 'user')
|
||||
self.password = self.config.get('api', 'password')
|
||||
self.tenant_name = self.config.get('api', 'tenant')
|
||||
self.endpoint_keystone = self.config.get('api', 'keystone_endpoints').split(',')
|
||||
self.token = None
|
||||
self.tenant_id = None
|
||||
self.get_token()
|
||||
|
||||
def get_timeout(self, service):
|
||||
try:
|
||||
return int(self.config.get('api', '%s_timeout' % service))
|
||||
except ConfigParser.NoOptionError as e:
|
||||
return 1
|
||||
|
||||
def get_token(self):
|
||||
data = json.dumps({
|
||||
"auth":
|
||||
{
|
||||
'tenantName': self.tenant_name,
|
||||
'passwordCredentials':
|
||||
{
|
||||
'username': self.username,
|
||||
'password': self.password
|
||||
}
|
||||
}
|
||||
})
|
||||
fail_services = 0
|
||||
for keystone in self.endpoint_keystone:
|
||||
self.logger.info("Trying to get token from '%s'" % keystone)
|
||||
try:
|
||||
request = urllib2.Request('%s/tokens' % keystone,
|
||||
data=data,
|
||||
headers={
|
||||
'Content-type': 'application/json'
|
||||
})
|
||||
data = json.loads(urllib2.urlopen(request, timeout=self.get_timeout('keystone')).read())
|
||||
self.token = data['access']['token']['id']
|
||||
self.tenant_id = data['access']['token']['tenant']['id']
|
||||
self.logger.debug("Got token '%s'" % self.token)
|
||||
return
|
||||
except Exception as e:
|
||||
self.logger.debug("Got exception '%s'" % e)
|
||||
fail_services += 1
|
||||
if fail_services == len(self.endpoint_keystone):
|
||||
self.logger.critical(0)
|
||||
sys.exit(1)
|
||||
|
||||
def check_api(self, url, service):
|
||||
self.logger.info("Trying '%s' on '%s'" % (service, url))
|
||||
try:
|
||||
request = urllib2.Request(url,
|
||||
headers={
|
||||
'X-Auth-Token': self.token,
|
||||
})
|
||||
urllib2.urlopen(request, timeout=self.get_timeout(service))
|
||||
except Exception as e:
|
||||
self.logger.debug("Got exception from '%s' '%s'" % (service, e))
|
||||
self.logger.critical(0)
|
||||
sys.exit(1)
|
||||
self.logger.critical(1)
|
||||
|
||||
def main():
|
||||
config = ConfigParser.RawConfigParser()
|
||||
config.read(CONF_FILE)
|
||||
logger = get_logger(config.get('api', 'log_level'))
|
||||
|
||||
API = OSAPI(logger, config)
|
||||
|
||||
if len(sys.argv) < 5:
|
||||
logger.critical('No argvs, dunno what to do')
|
||||
sys.exit(1)
|
||||
map = config.get('api', '%s_map' % sys.argv[1])
|
||||
|
||||
url = '%s://%s:%s/%s' % (sys.argv[2], sys.argv[3], sys.argv[4], map)
|
||||
url = url % API.__dict__
|
||||
|
||||
API.check_api(url, sys.argv[1])
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -0,0 +1,119 @@
|
|||
#!/usr/bin/python
|
||||
import urllib2
|
||||
import simplejson as json
|
||||
import sys
|
||||
import base64
|
||||
import ConfigParser
|
||||
import logging
|
||||
|
||||
CONF_FILE = '/etc/zabbix/check_rabbit.conf'
|
||||
LOGGING_LEVELS = {
|
||||
'CRITICAL': logging.CRITICAL,
|
||||
'WARNING': logging.WARNING,
|
||||
'INFO': logging.INFO,
|
||||
'DEBUG': logging.DEBUG
|
||||
}
|
||||
|
||||
def get_logger(level):
|
||||
logger = logging.getLogger()
|
||||
ch = logging.StreamHandler(sys.stdout)
|
||||
logger.setLevel(LOGGING_LEVELS[level])
|
||||
logger.addHandler(ch)
|
||||
return logger
|
||||
|
||||
class RabbitmqAPI(object):
|
||||
def __init__(self, logger, config):
|
||||
self.logger = logger
|
||||
self.login = config.get('rabbitmq', 'user')
|
||||
self.password = config.get('rabbitmq', 'password')
|
||||
self.host = config.get('rabbitmq', 'host')
|
||||
self.auth_string = base64.encodestring('%s:%s' % (self.login, self.password)).replace('\n', '')
|
||||
self.max_queues = int(config.get('rabbitmq', 'max_queues'))
|
||||
|
||||
def get_http(self, url):
|
||||
try:
|
||||
request = urllib2.Request('%s/api/%s' % (self.host, url))
|
||||
request.add_header("Authorization", "Basic %s" % self.auth_string)
|
||||
return json.loads(urllib2.urlopen(request, timeout=2).read())
|
||||
except urllib2.URLError as e:
|
||||
self.logger.error("URL error: '%s'" % e)
|
||||
sys.exit(1)
|
||||
except ValueError as e:
|
||||
self.logger.error("Value error: '%s'" % e)
|
||||
sys.exit(1)
|
||||
|
||||
def get_queues_items(self):
|
||||
response = self.get_http('overview')
|
||||
if 'queue_totals' in response:
|
||||
self.logger.critical(response['queue_totals']['messages'])
|
||||
else:
|
||||
self.logger.error('No queue_totals in response')
|
||||
|
||||
def get_missing_queues(self):
|
||||
queues = 0
|
||||
response = self.get_http('queues')
|
||||
for queue in response:
|
||||
queues += 1
|
||||
self.logger.critical(self.max_queues-queues)
|
||||
|
||||
def get_queues_without_consumers(self):
|
||||
queues_without_consumers = 0
|
||||
response = self.get_http('queues')
|
||||
for queue in response:
|
||||
queues_without_consumers += 1
|
||||
if queue['consumers'] > 0:
|
||||
queues_without_consumers -= 1
|
||||
self.logger.critical(queues_without_consumers)
|
||||
|
||||
def get_missing_nodes(self):
|
||||
missing_nodes = 0
|
||||
response = self.get_http('nodes')
|
||||
for node in response:
|
||||
if not node['running']:
|
||||
missing_nodes += 1
|
||||
self.logger.critical(missing_nodes)
|
||||
|
||||
def get_unmirror_queues(self):
|
||||
response = self.get_http('queues')
|
||||
unmirror_queues = 0
|
||||
for queue in response:
|
||||
if 'x-ha-policy' in queue['arguments']:
|
||||
unmirror_queues += 1
|
||||
if 'synchronised_slave_nodes' in queue and len(queue['synchronised_slave_nodes']) > 0:
|
||||
unmirror_queues -= 1
|
||||
self.logger.critical(unmirror_queues)
|
||||
|
||||
def usage():
|
||||
print("check_rabbit.py usage:\n \
|
||||
queues-items - item count in queues\n \
|
||||
queues-without-consumers - count queues without consumers\n \
|
||||
missing-nodes - count missing nodes from rabbitmq cluster\n \
|
||||
unmirror-queues - count unmirrored queues\n \
|
||||
missing-queues max_queues - compare queues count to max_queues\n")
|
||||
|
||||
def main():
|
||||
config = ConfigParser.RawConfigParser()
|
||||
config.read(CONF_FILE)
|
||||
logger = get_logger(config.get('rabbitmq', 'log_level'))
|
||||
|
||||
API = RabbitmqAPI(logger, config)
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
logger.critical('No argvs, dunno what to do')
|
||||
sys.exit(1)
|
||||
|
||||
if sys.argv[1] == 'missing-queues':
|
||||
API.get_missing_queues()
|
||||
elif sys.argv[1] == 'queues-items':
|
||||
API.get_queues_items()
|
||||
elif sys.argv[1] == 'queues-without-consumers':
|
||||
API.get_queues_without_consumers()
|
||||
elif sys.argv[1] == 'missing-nodes':
|
||||
API.get_missing_nodes()
|
||||
elif sys.argv[1] == 'unmirror-queues':
|
||||
API.get_unmirror_queues()
|
||||
else:
|
||||
usage()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
NODES=$(/usr/bin/sudo /usr/sbin/crm_resource --locate --quiet --resource $1)
|
||||
HOSTNAME=$(/bin/hostname)
|
||||
STATUS=0
|
||||
|
||||
for NODE in $NODES
|
||||
do
|
||||
if [ "$NODE" == "$HOSTNAME" ]; then
|
||||
STATUS=1
|
||||
fi
|
||||
done
|
||||
echo $STATUS
|
|
@ -0,0 +1,62 @@
|
|||
#!/bin/bash
|
||||
if [ -z "$1" ]; then
|
||||
echo "No argument supplied"
|
||||
exit 1
|
||||
elif [ "$1" == "-f" ]; then
|
||||
OPER='discovery'
|
||||
FESQ='grep FRONTEND'
|
||||
elif [ "$1" == "-b" ]; then
|
||||
OPER='discovery'
|
||||
FESQ='grep BACKEND'
|
||||
elif [ "$1" == "-s" ]; then
|
||||
OPER='discovery'
|
||||
FESQ='grep -v FRONTEND\|BACKEND\|^$\|^#'
|
||||
elif [ "$1" == "-v" ]; then
|
||||
OPER='value'
|
||||
IFS=$'.'
|
||||
QA=($2)
|
||||
unset IFS
|
||||
HAPX=${QA[0]}
|
||||
HASV=${QA[1]}
|
||||
ITEM=${QA[2]}
|
||||
FESQ="grep ^${HAPX},${HASV},"
|
||||
fi
|
||||
STATHEAD=( pxname svname qcur qmax scur smax slim stot bin bout dreq \
|
||||
dresp ereq econ eresp wretr wredis status weight act bck chkfail \
|
||||
chkdown lastchg downtime qlimit pid iid sid throttle lbtot tracked \
|
||||
type rate rate_lim rate_max check_status check_code check_duration \
|
||||
hrsp_1xx hrsp_2xx hrsp_3xx hrsp_4xx hrsp_5xx hrsp_other hanafail \
|
||||
req_rate req_rate_max req_tot cli_abrt srv_abrt )
|
||||
|
||||
FES=`echo "show stat" | sudo socat /var/lib/haproxy/stats stdio | sed 's/ /_/g' |grep -v -i 'zabbix-server' | $FESQ`
|
||||
if [ "$OPER" == "discovery" ]; then
|
||||
POSITION=1
|
||||
echo "{"
|
||||
echo " \"data\":["
|
||||
for FE in $FES
|
||||
do
|
||||
IFS=$','
|
||||
FEA=($FE)
|
||||
unset IFS
|
||||
HAPX=${FEA[0]}
|
||||
HASV=${FEA[1]}
|
||||
HASTAT=${HAPX}-${HASV}
|
||||
if [ $POSITION -gt 1 ]
|
||||
then
|
||||
echo ","
|
||||
fi
|
||||
echo -n " { \"{#HAPX}\": \"$HAPX\", \"{#HASTAT}\": \"$HASTAT\", \"{#HASV}\": \"$HASV\" }"
|
||||
POSITION=$[POSITION+1]
|
||||
done
|
||||
echo ""
|
||||
echo " ]"
|
||||
echo "}"
|
||||
elif [ "$OPER" == "value" ]; then
|
||||
IFS=$','
|
||||
FEA=($FES)
|
||||
unset IFS
|
||||
cnt=0; for el in "${STATHEAD[@]}"; do
|
||||
[[ "$el" == "$ITEM" ]] && echo ${FEA[$cnt]} && break
|
||||
((++cnt))
|
||||
done
|
||||
fi
|
|
@ -0,0 +1,60 @@
|
|||
[api]
|
||||
log_level=DEBUG
|
||||
user=admin
|
||||
password=nova
|
||||
tenant=nova
|
||||
keystone_endpoints=http://127.0.0.1:5000/v2.0
|
||||
nova_os_map=v2/%(tenant_id)s/flavors
|
||||
glance_map=v1/images
|
||||
keystone_service_map=v2.0/tenants
|
||||
keystone_map=v2.0/tenants
|
||||
cinder_map=v1/%(tenant_id)s/volumes
|
||||
nova_os_timeout=1
|
||||
glance_timeout=1
|
||||
keystone_service_timeout=1
|
||||
keystone_timeout=1
|
||||
cinder_timeout=1
|
||||
|
||||
[rabbitmq]
|
||||
log_level=DEBUG
|
||||
user=guest
|
||||
password=guest
|
||||
host=http://127.0.0.1:15672
|
||||
|
||||
[query_db]
|
||||
log_level=DEBUG
|
||||
#Count tokens in keystone db
|
||||
token_count_connection=mysql://root:qwqwqw@127.0.0.1/keystone
|
||||
token_count_query=select count(*) from token
|
||||
|
||||
#Count instances in error state
|
||||
instance_error_connection=mysql://root:qwqwqw@127.0.0.1/nova
|
||||
instance_error_query=select count(*) from instances where vm_state='error' and deleted=0
|
||||
|
||||
#Count offline services - nova
|
||||
services_offline_nova_connection=mysql://root:qwqwqw@127.0.0.1/nova
|
||||
services_offline_nova_query=select count(*) from services where disabled=0 and deleted=0 and timestampdiff(SECOND,updated_at,utc_timestamp())>60
|
||||
|
||||
#Count running instances
|
||||
instance_count_connection=mysql://root:qwqwqw@127.0.0.1/nova
|
||||
instance_count_query=select count(*) from instances where deleted=0 and vm_state='active'
|
||||
|
||||
#Sum all vcpus in cluster
|
||||
cpu_total_connection=mysql://root:qwqwqw@127.0.0.1/nova
|
||||
cpu_total_query=select ifnull(sum(vcpus), 0) from compute_nodes where deleted=0
|
||||
|
||||
#Sum used vcpus in cluster
|
||||
cpu_used_connection=mysql://root:qwqwqw@127.0.0.1/nova
|
||||
cpu_used_query=select ifnull(sum(vcpus), 0) from instances where deleted=0 and vm_state='active'
|
||||
|
||||
#Sum all memory in cluster
|
||||
ram_total_connection=mysql://root:qwqwqw@127.0.0.1/nova
|
||||
ram_total_query=select ifnull(sum(memory_mb), 0) from compute_nodes where deleted=0
|
||||
|
||||
#Sum used memory in cluster
|
||||
ram_used_connection=mysql://root:qwqwqw@127.0.0.1/nova
|
||||
ram_used_query=select ifnull(sum(memory_mb), 0) from instances where deleted=0 and vm_state='active'
|
||||
|
||||
#Count offline services - cinder
|
||||
services_offline_cinder_connection=mysql://root:qwqwqw@127.0.0.1/cinder
|
||||
services_offline_cinder_query=select count(*) from services where disabled=0 and deleted=0 and timestampdiff(SECOND,updated_at,utc_timestamp())>60
|
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/python
|
||||
import ConfigParser
|
||||
import sys
|
||||
import logging
|
||||
import sqlalchemy
|
||||
|
||||
|
||||
CONF_FILE = '/etc/zabbix/check_db.conf'
|
||||
LOGGING_LEVELS = {
|
||||
'CRITICAL': logging.CRITICAL,
|
||||
'WARNING': logging.WARNING,
|
||||
'INFO': logging.INFO,
|
||||
'DEBUG': logging.DEBUG
|
||||
}
|
||||
|
||||
def get_logger(level):
|
||||
logger = logging.getLogger()
|
||||
ch = logging.StreamHandler(sys.stdout)
|
||||
logger.setLevel(LOGGING_LEVELS[level])
|
||||
logger.addHandler(ch)
|
||||
return logger
|
||||
|
||||
def query_db(logger, connection_string, query_string):
|
||||
try:
|
||||
engine = sqlalchemy.create_engine(connection_string)
|
||||
res = engine.execute(query_string).first()
|
||||
except sqlalchemy.exc.OperationalError as e:
|
||||
logger.critical("Operational error '%s'" % e)
|
||||
except sqlalchemy.exc.ProgrammingError as e:
|
||||
logger.critical("Programming error '%s'" % e)
|
||||
else:
|
||||
return res[0]
|
||||
|
||||
config = ConfigParser.RawConfigParser()
|
||||
config.read(CONF_FILE)
|
||||
|
||||
logger = get_logger(config.get('query_db', 'log_level'))
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) < 2:
|
||||
logger.critical('No argvs, dunno what to do')
|
||||
sys.exit(1)
|
||||
|
||||
item = sys.argv[1]
|
||||
try:
|
||||
sql_connection = config.get('query_db', '%s_connection' % item)
|
||||
sql_query = config.get('query_db', '%s_query' % item)
|
||||
except ConfigParser.NoOptionError as e:
|
||||
logger.critical("Item '%s' not configured" % item)
|
||||
sys.exit(2)
|
||||
|
||||
logger.info("Get request for item '%s'" % item)
|
||||
logger.debug("Sql connection: '%s', sql query: '%s'" % (sql_connection, sql_query))
|
||||
logger.critical(query_db(logger, sql_connection, sql_query))
|
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
#Zabbix vfs.dev.discovery implementation
|
||||
#Send beer to <admin@fluda.net>
|
||||
DEVS=`grep -v "major\|^$\|dm-\|[0-9]$" /proc/partitions | awk '{print $4}'`
|
||||
POSITION=1
|
||||
echo "{"
|
||||
echo " \"data\":["
|
||||
for DEV in $DEVS
|
||||
do
|
||||
if [ $POSITION -gt 1 ]
|
||||
then
|
||||
echo ","
|
||||
fi
|
||||
echo -n " { \"{#DEVNAME}\": \"$DEV\"}"
|
||||
POSITION=$[POSITION+1]
|
||||
done
|
||||
echo ""
|
||||
echo " ]"
|
||||
echo "}"
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
|
||||
COUNT=`cat /proc/mdstat | awk {'print $1;'} | egrep -e 'md?' | wc -l | sed -e 's/^ *//g' -e 's/ *$//g'`
|
||||
|
||||
#echo Quantity: $COUNT
|
||||
|
||||
echo "{"
|
||||
echo -e "\t\"data\":[\n"
|
||||
|
||||
i=1
|
||||
let COUNT=COUNT+1
|
||||
|
||||
while [ $i -lt $COUNT ]; do
|
||||
#echo Item: $i
|
||||
MDEV=`cat /proc/mdstat | awk {'print $1;'} | egrep -e 'md?' | sort -n | head -$i | tail -fn 1`
|
||||
let CHECK=COUNT-1
|
||||
if [ $i == $CHECK ]; then echo -e "\t{ \"{#MDEVICE}\":\"$MDEV\" }"
|
||||
else echo -e "\t{ \"{#MDEVICE}\":\"$MDEV\" },"
|
||||
fi
|
||||
let i=i+1
|
||||
done
|
||||
|
||||
echo -e "\n\t]"
|
||||
echo "}"
|
|
@ -0,0 +1,2 @@
|
|||
INSERT INTO `regexps` (`regexpid`,`name`,`test_string`) values ('10','Block devices for discovery','vda');
|
||||
INSERT INTO `expressions` (`expressionid`,`regexpid`,`expression`,`expression_type`,`exp_delimiter`,`case_sensitive`) values ('10','10','^(vd.|sd.)$','3',',','0');
|
|
@ -0,0 +1,2 @@
|
|||
dbc_install='false'
|
||||
dbc_upgrade='false'
|
|
@ -0,0 +1,249 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Zabbix server OCF script
|
||||
#
|
||||
# Description: Manages Zabbix server process as a HA resource
|
||||
#
|
||||
# Authors: Mirantis inc.
|
||||
#
|
||||
# Support: openstack@lists.launchpad.net
|
||||
# License: Apache Software License (ASL) 2.0
|
||||
#
|
||||
# See usage() function below for more details ...
|
||||
#
|
||||
# OCF instance parameters:
|
||||
# OCF_RESKEY_binary
|
||||
# OCF_RESKEY_config
|
||||
# OCF_RESKEY_user
|
||||
# OCF_RESKEY_pid
|
||||
# OCF_RESKEY_additional_parameters
|
||||
#######################################################################
|
||||
# Initialization:
|
||||
|
||||
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
|
||||
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
|
||||
|
||||
#######################################################################
|
||||
|
||||
# Fill in some defaults if no values are specified
|
||||
|
||||
SERVICE_NAME="Zabbix-server"
|
||||
|
||||
OCF_RESKEY_binary_default="/usr/sbin/zabbix_server"
|
||||
OCF_RESKEY_pid_default="/var/run/zabbix/zabbix_server.pid"
|
||||
|
||||
: ${OCF_RESKEY_binary=${OCF_RESKEY_binary_default}}
|
||||
: ${OCF_RESKEY_pid=${OCF_RESKEY_pid_default}}
|
||||
|
||||
#######################################################################
|
||||
|
||||
usage() {
|
||||
cat <<UEND
|
||||
usage: $0 (start|stop|validate-all|meta-data|status|monitor)
|
||||
|
||||
$0 manages the ${SERVICE_NAME} process as an HA resource
|
||||
|
||||
The 'start' operation starts the ${SERVICE_NAME}
|
||||
The 'stop' operation stops the ${SERVICE_NAME}
|
||||
The 'validate-all' operation reports whether the parameters are valid
|
||||
The 'meta-data' operation reports this RA's meta-data information
|
||||
The 'status' operation reports whether the ${SERVICE_NAME} is running
|
||||
The 'monitor' operation reports whether the ${SERVICE_NAME} is running
|
||||
|
||||
UEND
|
||||
}
|
||||
|
||||
meta_data() {
|
||||
cat <<END
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
|
||||
<resource-agent name="zabbix-server">
|
||||
<version>1.0</version>
|
||||
|
||||
<longdesc lang="en">
|
||||
Manages Zabbix server daemon as a Pacemaker Resource.
|
||||
</longdesc>
|
||||
<shortdesc lang="en">Manages Zabbix server</shortdesc>
|
||||
<parameters>
|
||||
|
||||
<parameter name="binary" unique="0" required="0">
|
||||
<longdesc lang="en">
|
||||
Name of zabbix-server file that will be run.
|
||||
</longdesc>
|
||||
<shortdesc lang="en">zabbix-server binary file</shortdesc>
|
||||
<content type="string" default="${OCF_RESKEY_binary_default}" />
|
||||
</parameter>
|
||||
|
||||
<parameter name="pid" unique="0" required="0">
|
||||
<longdesc lang="en">
|
||||
The pid file to use for this process
|
||||
</longdesc>
|
||||
<shortdesc lang="en">zabbix-server pid file</shortdesc>
|
||||
<content type="string" default="${OCF_RESKEY_pid_default}" />
|
||||
</parameter>
|
||||
|
||||
</parameters>
|
||||
|
||||
<actions>
|
||||
<action name="start" timeout="20" />
|
||||
<action name="stop" timeout="20" />
|
||||
<action name="status" timeout="20" />
|
||||
<action name="monitor" timeout="30" interval="20" />
|
||||
<action name="validate-all" timeout="5" />
|
||||
<action name="meta-data" timeout="5" />
|
||||
</actions>
|
||||
</resource-agent>
|
||||
END
|
||||
}
|
||||
|
||||
#######################################################################
|
||||
# Functions invoked by resource manager actions
|
||||
|
||||
service_validate() {
|
||||
local rc
|
||||
|
||||
check_binary $OCF_RESKEY_binary
|
||||
|
||||
# A config file on shared storage that is not available
|
||||
# during probes is OK.
|
||||
#if [ ! -f $OCF_RESKEY_config ]; then
|
||||
# if ! ocf_is_probe; then
|
||||
# ocf_log err "Config $OCF_RESKEY_config doesn't exist"
|
||||
# return $OCF_ERR_INSTALLED
|
||||
# fi
|
||||
# ocf_log_warn "Config $OCF_RESKEY_config not available during a probe"
|
||||
#fi
|
||||
|
||||
true
|
||||
}
|
||||
|
||||
service_status() {
|
||||
local pid
|
||||
local rc
|
||||
|
||||
if [ ! -f $OCF_RESKEY_pid ]; then
|
||||
ocf_log info "${SERVICE_NAME} is not running"
|
||||
return $OCF_NOT_RUNNING
|
||||
else
|
||||
pid=`cat $OCF_RESKEY_pid`
|
||||
fi
|
||||
|
||||
ocf_run -warn kill -s 0 $pid
|
||||
rc=$?
|
||||
if [ $rc -eq 0 ]; then
|
||||
return $OCF_SUCCESS
|
||||
else
|
||||
ocf_log info "Old PID file found, but ${SERVICE_NAME} is not running"
|
||||
return $OCF_NOT_RUNNING
|
||||
fi
|
||||
}
|
||||
|
||||
service_monitor() {
|
||||
service_status
|
||||
}
|
||||
|
||||
service_start() {
|
||||
local rc
|
||||
|
||||
service_status
|
||||
rc=$?
|
||||
if [ $rc -eq $OCF_SUCCESS ]; then
|
||||
ocf_log info "${SERVICE_NAME} is already running"
|
||||
return $OCF_SUCCESS
|
||||
fi
|
||||
|
||||
${OCF_RESKEY_binary}
|
||||
|
||||
# Spin waiting for the server to come up.
|
||||
# Let the CRM/LRM time us out if required
|
||||
while true; do
|
||||
service_monitor
|
||||
rc=$?
|
||||
[ $rc -eq $OCF_SUCCESS ] && break
|
||||
if [ $rc -ne $OCF_NOT_RUNNING ]; then
|
||||
ocf_log err "${SERVICE_NAME} start failed"
|
||||
exit $OCF_ERR_GENERIC
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
ocf_log info "${SERVICE_NAME} started"
|
||||
return $OCF_SUCCESS
|
||||
}
|
||||
|
||||
service_stop() {
|
||||
local rc
|
||||
local pid
|
||||
|
||||
service_status
|
||||
rc=$?
|
||||
if [ $rc -eq $OCF_NOT_RUNNING ]; then
|
||||
ocf_log info "${SERVICE_NAME} is already stopped"
|
||||
return $OCF_SUCCESS
|
||||
fi
|
||||
|
||||
# Try SIGTERM
|
||||
pid=`cat $OCF_RESKEY_pid`
|
||||
ocf_run kill -s TERM $pid
|
||||
rc=$?
|
||||
if [ $rc -ne 0 ]; then
|
||||
ocf_log err "${SERVICE_NAME} couldn't be stopped"
|
||||
exit $OCF_ERR_GENERIC
|
||||
fi
|
||||
|
||||
# stop waiting
|
||||
shutdown_timeout=15
|
||||
if [ -n "$OCF_RESKEY_CRM_meta_timeout" ]; then
|
||||
shutdown_timeout=$((($OCF_RESKEY_CRM_meta_timeout/1000)-5))
|
||||
fi
|
||||
count=0
|
||||
while [ $count -lt $shutdown_timeout ]; do
|
||||
service_status
|
||||
rc=$?
|
||||
if [ $rc -eq $OCF_NOT_RUNNING ]; then
|
||||
break
|
||||
fi
|
||||
count=`expr $count + 1`
|
||||
sleep 1
|
||||
ocf_log debug "${SERVICE_NAME} still hasn't stopped yet. Waiting ..."
|
||||
done
|
||||
|
||||
service_status
|
||||
rc=$?
|
||||
if [ "${rc}" -ne "${OCF_NOT_RUNNING}" ]; then
|
||||
# SIGTERM didn't help either, try SIGKILL
|
||||
ocf_log info "${SERVICE_NAME} failed to stop after ${shutdown_timeout}s using SIGTERM. Trying SIGKILL ..."
|
||||
ocf_run kill -s KILL "${pid}"
|
||||
fi
|
||||
|
||||
ocf_log info "${SERVICE_NAME} stopped"
|
||||
|
||||
rm -f "${OCF_RESKEY_pid}"
|
||||
|
||||
return "${OCF_SUCCESS}"
|
||||
}
|
||||
|
||||
#######################################################################
|
||||
|
||||
case "$1" in
|
||||
meta-data) meta_data
|
||||
exit $OCF_SUCCESS;;
|
||||
usage|help) usage
|
||||
exit $OCF_SUCCESS;;
|
||||
esac
|
||||
|
||||
# Anything except meta-data and help must pass validation
|
||||
service_validate || exit $?
|
||||
|
||||
# What kind of method was invoked?
|
||||
case "$1" in
|
||||
start) service_start;;
|
||||
stop) service_stop;;
|
||||
status) service_status;;
|
||||
monitor) service_monitor;;
|
||||
validate-all) ;;
|
||||
*) usage
|
||||
exit $OCF_ERR_UNIMPLEMENTED;;
|
||||
esac
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
Defaults:zabbix !requiretty
|
||||
zabbix ALL = NOPASSWD: /usr/bin/mysql
|
||||
zabbix ALL = NOPASSWD: /usr/bin/mysqladmin
|
||||
zabbix ALL = NOPASSWD: /usr/bin/socat
|
||||
zabbix ALL = NOPASSWD: /usr/sbin/iptstate
|
||||
zabbix ALL = NOPASSWD: /usr/sbin/crm_resource
|
|
@ -0,0 +1,24 @@
|
|||
Puppet::Parser::Functions::newfunction(
|
||||
:defined_in_state,
|
||||
:type => :rvalue,
|
||||
:doc => 'Returns True when resource is defined in state.yaml file'
|
||||
) do |args|
|
||||
|
||||
yaml_file = '/var/lib/puppet/state/state.yaml'
|
||||
|
||||
raise(Puppet::ParseError, "defined_in_state(): Wrong number of arguments " +
|
||||
"given (#{args.size} for 1)") if args.size != 1
|
||||
|
||||
resource = args[0]
|
||||
|
||||
begin
|
||||
yaml = YAML.load_file(yaml_file)
|
||||
if ! yaml["#{resource}"].nil?
|
||||
return true
|
||||
end
|
||||
rescue Exception => e
|
||||
Puppet.warning("#{e}")
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
|
@ -0,0 +1,15 @@
|
|||
Puppet::Parser::Functions::newfunction(
|
||||
:get_server_by_role,
|
||||
:type => :rvalue,
|
||||
:doc => 'Returns server node hash by role'
|
||||
) do |args|
|
||||
fuel_nodes = args[0]
|
||||
requested_roles = args[1]
|
||||
server = ""
|
||||
fuel_nodes.each do |node|
|
||||
next unless requested_roles.include?(node['role'])
|
||||
server = node
|
||||
end
|
||||
server
|
||||
end
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
require 'json'
|
||||
require 'net/http'
|
||||
class Puppet::Provider::Plugin_zabbix < Puppet::Provider
|
||||
|
||||
@@auth_hash = ""
|
||||
|
||||
def self.message_json(body)
|
||||
if body[:method] == "user.login"
|
||||
message = {
|
||||
:method => body[:method],
|
||||
:params => body[:params],
|
||||
:id => rand(9000),
|
||||
:jsonrpc => '2.0'
|
||||
}
|
||||
else
|
||||
message = {
|
||||
:method => body[:method],
|
||||
:params => body[:params],
|
||||
:auth => auth_hash,
|
||||
:id => rand(9000),
|
||||
:jsonrpc => '2.0'
|
||||
}
|
||||
end
|
||||
JSON.generate(message)
|
||||
end
|
||||
|
||||
def self.make_request(api, body)
|
||||
uri = URI.parse(api["endpoint"])
|
||||
http = Net::HTTP.new(uri.host, uri.port)
|
||||
request = Net::HTTP::Post.new(uri.request_uri)
|
||||
request.add_field("Content-Type", "application/json-rpc")
|
||||
request.body = message_json(body)
|
||||
response = http.request(request)
|
||||
puts "DEBUG request = #{request.body}"
|
||||
puts "DEBUG response = #{response.body}"
|
||||
response.value
|
||||
result = JSON.parse(response.body)
|
||||
result
|
||||
end
|
||||
|
||||
def self.api_request(api, body)
|
||||
retries = 10
|
||||
cooldown = 1
|
||||
Puppet.info("Trying to make a request to zabbix server, will try #{retries} times with #{cooldown} seconds between tries")
|
||||
retries.times do |r|
|
||||
begin
|
||||
Puppet.info("Retry ##{r}/#{retries}:")
|
||||
result = make_request(api, body)
|
||||
|
||||
if result.has_key? "error"
|
||||
raise(Puppet::Error, "Zabbix API returned error code #{result["error"]["code"]}: #{result["error"]["message"]}, #{result["error"]["data"]}")
|
||||
end
|
||||
|
||||
return result["result"]
|
||||
|
||||
rescue => e
|
||||
if r == retries
|
||||
Puppet.error("Out of retries to make a request to zabbix server (#{retries})")
|
||||
raise e
|
||||
else
|
||||
Puppet.warning("Could not make request to zabbix: #{e}, sleeping #{cooldown*r} (retry (##{r}/#{retries}))")
|
||||
sleep(cooldown*r)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.auth(api)
|
||||
body = {:method => "user.login",
|
||||
:params => {:user => api["username"],
|
||||
:password => api["password"]}}
|
||||
@@auth_hash = api_request(api, body)
|
||||
end
|
||||
|
||||
def auth(api)
|
||||
self.class.auth(api)
|
||||
end
|
||||
|
||||
def api_request(api, body)
|
||||
self.class.api_request(api, body)
|
||||
end
|
||||
|
||||
def self.auth_hash
|
||||
@@auth_hash
|
||||
end
|
||||
|
||||
def auth_hash
|
||||
self.class.auth_hash
|
||||
end
|
||||
|
||||
def self.get_host(api, name)
|
||||
puts "DEBUG gethost #{name}"
|
||||
api_request(api,
|
||||
{:method => "host.get",
|
||||
:params => {:filter => {:name => [name]}}})
|
||||
end
|
||||
|
||||
def self.get_hostgroup(api, name)
|
||||
puts "DEBUG gethostgroup #{name}"
|
||||
api_request(api,
|
||||
{:method => "hostgroup.get",
|
||||
:params => {:filter => {:name => [name]}}})
|
||||
end
|
||||
|
||||
def get_host(api, name)
|
||||
self.class.get_host(api, name)
|
||||
end
|
||||
|
||||
def get_hostgroup(api, name)
|
||||
self.class.get_hostgroup(api, name)
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,100 @@
|
|||
$LOAD_PATH.push(File.join(File.dirname(__FILE__), '..', '..', '..'))
|
||||
require 'puppet/provider/plugin_zabbix'
|
||||
require 'digest/md5'
|
||||
|
||||
Puppet::Type.type(:plugin_zabbix_configuration_import).provide(:ruby,
|
||||
:parent => Puppet::Provider::Plugin_zabbix) do
|
||||
|
||||
def exists?
|
||||
auth(resource[:api])
|
||||
macroname = '{$TMPL_' + Pathname.new(resource[:xml_file]).basename.to_s.gsub('.', '_').upcase + '}'
|
||||
macroid = nil
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {:globalmacro => true,
|
||||
:output => 'extend'}})
|
||||
result.each { |macro| macroid = macro['globalmacroid'] if macro['macro'] == macroname }
|
||||
not macroid.nil?
|
||||
end
|
||||
|
||||
def create
|
||||
macroname = '{$TMPL_' + Pathname.new(resource[:xml_file]).basename.to_s.gsub('.', '_').upcase + '}'
|
||||
xml_file_checksum = config_import(resource[:xml_file])
|
||||
api_request(resource[:api],
|
||||
{:method => 'usermacro.createglobal',
|
||||
:params => {:macro => macroname,
|
||||
:value => xml_file_checksum}})
|
||||
end
|
||||
|
||||
def destroy
|
||||
macroname = '{$TMPL_' + Pathname.new(resource[:xml_file]).basename.to_s.gsub('.', '_').upcase + '}'
|
||||
macroid = nil
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {:globalmacro => true,
|
||||
:output => 'extend'}})
|
||||
result.each { |macro| macroid = macro['globalmacroid'] if macro['macro'] == macroname }
|
||||
api_request(resource[:api],
|
||||
{:method => 'usermacro.deleteglobal',
|
||||
:params => [macroid]})
|
||||
end
|
||||
|
||||
def xml_file
|
||||
macrovalue = nil
|
||||
macroname = '{$TMPL_' + Pathname.new(resource[:xml_file]).basename.to_s.gsub('.', '_').upcase + '}'
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {:globalmacro => true,
|
||||
:output => 'extend'}})
|
||||
result.each { |macro| macrovalue = macro['value'] if macro['macro'] == macroname }
|
||||
macrovalue
|
||||
end
|
||||
|
||||
def xml_file=(v)
|
||||
macroid = nil
|
||||
xml_file_checksum = config_import(resource[:xml_file])
|
||||
macroname = '{$TMPL_' + Pathname.new(resource[:xml_file]).basename.to_s.gsub('.', '_').upcase + '}'
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {:globalmacro => true,
|
||||
:output => 'extend'}})
|
||||
result.each { |macro| macroid = macro['globalmacroid'] if macro['macro'] == macroname }
|
||||
api_request(resource[:api],
|
||||
{:method => 'usermacro.updateglobal',
|
||||
:params => {:globalmacroid => macroid,
|
||||
:value => xml_file_checksum}})
|
||||
end
|
||||
|
||||
def config_import(xml_file)
|
||||
xml_file_content = Puppet::Util::FileType.filetype(:flat).new(xml_file).read
|
||||
xml_file_checksum = Digest::MD5.hexdigest(xml_file_content)
|
||||
api_request(resource[:api],
|
||||
{:method => 'configuration.import',
|
||||
:params => {:format => 'xml',
|
||||
:source => xml_file_content,
|
||||
:rules => {:applications => {:createMissing => true,
|
||||
:updateExisting => true},
|
||||
:discoveryRules => {:createMissing => true,
|
||||
:updateExisting => true},
|
||||
:graphs => {:createMissing => true,
|
||||
:updateExisting => true},
|
||||
:groups => {:createMissing => true,
|
||||
:updateExisting => true},
|
||||
:images => {:createMissing => true,
|
||||
:updateExisting => true},
|
||||
:items => {:createMissing => true,
|
||||
:updateExisting => true},
|
||||
:maps => {:createMissing => true,
|
||||
:updateExisting => true},
|
||||
:screens => {:createMissing => true,
|
||||
:updateExisting => true},
|
||||
:templates => {:createMissing => true,
|
||||
:updateExisting => true},
|
||||
:templateScreens => {:createMissing => true,
|
||||
:updateExisting => true},
|
||||
:triggers => {:createMissing => true,
|
||||
:updateExisting => true}}}})
|
||||
xml_file_checksum
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,52 @@
|
|||
$LOAD_PATH.push(File.join(File.dirname(__FILE__), '..', '..', '..'))
|
||||
require 'puppet/provider/plugin_zabbix'
|
||||
|
||||
Puppet::Type.type(:plugin_zabbix_host).provide(:ruby,
|
||||
:parent => Puppet::Provider::Plugin_zabbix) do
|
||||
|
||||
def exists?
|
||||
auth(resource[:api])
|
||||
result = get_host(resource[:api], resource[:name])
|
||||
not result.empty?
|
||||
end
|
||||
|
||||
def create
|
||||
groups = Array.new
|
||||
resource[:groups].each do |group|
|
||||
group_id = get_hostgroup(resource[:api], group)
|
||||
raise(Puppet::Error, "Group #{group} does not exist") unless not group_id.empty?
|
||||
groups.push({
|
||||
:groupid => group_id[0]["groupid"]
|
||||
})
|
||||
end
|
||||
|
||||
params = {:host => resource[:host],
|
||||
:status => resource[:status],
|
||||
:interfaces => [{:type => resource[:type] == nil ? "1" : resource[:type],
|
||||
:main =>1,
|
||||
:useip => resource[:ip] == nil ? 0 : 1,
|
||||
:usedns => resource[:ip] == nil ? 1 : 0,
|
||||
:dns => resource[:host],
|
||||
:ip => resource[:ip] == nil ? "" : resource[:ip],
|
||||
:port => resource[:port] == nil ? "10050" : resource[:port],}],
|
||||
:proxy_hostid => resource[:proxy_hostid] == nil ? 0 : resource[:proxy_hostid],
|
||||
:groups => groups}
|
||||
|
||||
api_request(resource[:api],
|
||||
{:method => "host.create",
|
||||
:params => params})
|
||||
end
|
||||
|
||||
def destroy
|
||||
hostid = get_host(resource[:api], resource[:name])[0]["hostid"]
|
||||
# deactivate before removing
|
||||
api_request(resource[:api],
|
||||
{:method => 'host.update',
|
||||
:params => {:hostid => hostid,
|
||||
:status => 1}})
|
||||
|
||||
api_request(resource[:api],
|
||||
{:method => 'host.delete',
|
||||
:params => [{:hostid => hostid}]})
|
||||
end
|
||||
end
|
|
@ -0,0 +1,25 @@
|
|||
$LOAD_PATH.push(File.join(File.dirname(__FILE__), '..', '..', '..'))
|
||||
require 'puppet/provider/plugin_zabbix'
|
||||
|
||||
Puppet::Type.type(:plugin_zabbix_hostgroup).provide(:ruby,
|
||||
:parent => Puppet::Provider::Plugin_zabbix) do
|
||||
|
||||
def exists?
|
||||
auth(resource[:api])
|
||||
result = get_hostgroup(resource[:api], resource[:name])
|
||||
not result.empty?
|
||||
end
|
||||
|
||||
def create
|
||||
api_request(resource[:api],
|
||||
{:method => "hostgroup.create",
|
||||
:params => {:name => resource[:name]}})
|
||||
end
|
||||
|
||||
def destroy
|
||||
groupid = get_hostgroup(resource[:api], resource[:name])[0]["groupid"]
|
||||
api_request(resource[:api],
|
||||
{:method => "hostgroup.delete",
|
||||
:params => [groupid]})
|
||||
end
|
||||
end
|
|
@ -0,0 +1,51 @@
|
|||
$LOAD_PATH.push(File.join(File.dirname(__FILE__), '..', '..', '..'))
|
||||
require 'puppet/provider/plugin_zabbix'
|
||||
require 'digest/md5'
|
||||
|
||||
Puppet::Type.type(:plugin_zabbix_template_link).provide(:ruby,
|
||||
:parent => Puppet::Provider::Plugin_zabbix) do
|
||||
|
||||
def get_ids_by_host(hostid)
|
||||
results = []
|
||||
api_request(resource[:api],
|
||||
{:method => "template.get",
|
||||
:params => {:hostids => [hostid]}}).each do |template|
|
||||
results << template["templateid"]
|
||||
end
|
||||
results
|
||||
end
|
||||
|
||||
def exists?
|
||||
auth(resource[:api])
|
||||
hostid = get_host(resource[:api], resource[:host])
|
||||
raise(Puppet::Error, "Host #{resource[:host]} does not exist") unless not hostid.empty?
|
||||
templateid = api_request(resource[:api],
|
||||
{:method => "template.get",
|
||||
:params => {:filter => {:host => [resource[:template]]}}})
|
||||
raise(Puppet::Error, "Template #{resource[:template]} does not exist") unless not templateid.empty?
|
||||
|
||||
get_ids_by_host(hostid[0]["hostid"]).include?(templateid[0]["templateid"])
|
||||
end
|
||||
|
||||
def create
|
||||
hostid = get_host(resource[:api], resource[:host])
|
||||
templateid = api_request(resource[:api],
|
||||
{:method => "template.get",
|
||||
:params => {:filter => {:host => [resource[:template]]}}})
|
||||
api_request(resource[:api],
|
||||
{:method => "template.massAdd",
|
||||
:params => {:hosts => [{:hostid => hostid[0]["hostid"]}],
|
||||
:templates => [{:templateid => templateid[0]["templateid"]}]}})
|
||||
end
|
||||
|
||||
def destroy
|
||||
hostid = get_host(resource[:api], resource[:host])
|
||||
templateid = api_request(resource[:api],
|
||||
{:method => "template.get",
|
||||
:params => {:filter => {:host => [resource[:template]]}}})
|
||||
api_request(resource[:api],
|
||||
{:method => "template.massRemove",
|
||||
:params => {:hostids => [hostid[0]["hostid"]],
|
||||
:templateids => templateid[0]["templateid"]}})
|
||||
end
|
||||
end
|
|
@ -0,0 +1,116 @@
|
|||
$LOAD_PATH.push(File.join(File.dirname(__FILE__), '..', '..', '..'))
|
||||
require 'puppet/provider/plugin_zabbix'
|
||||
|
||||
Puppet::Type.type(:plugin_zabbix_usermacro).provide(:ruby,
|
||||
:parent => Puppet::Provider::Plugin_zabbix) do
|
||||
|
||||
def exists?
|
||||
auth(resource[:api])
|
||||
macroid = nil
|
||||
if resource[:global] == :true
|
||||
result = api_request(resource[:api],
|
||||
{:method => "usermacro.get",
|
||||
:params => {:globalmacro => true,
|
||||
:output => "extend"}})
|
||||
result.each { |macro| macroid = macro["globalmacroid"] if macro['macro'] == resource[:macro] }
|
||||
else
|
||||
hostid = get_host(resource[:api], resource[:host])
|
||||
raise(Puppet::Error, "Host #{resource[:host]} does not exist") unless not hostid.empty?
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {"hostids" => hostid[0]["hostid"],
|
||||
:output => "extend"}})
|
||||
macroid = nil
|
||||
result.each { |macro| macroid = macro['hostmacroid'] if macro['macro'] == resource[:macro] }
|
||||
end
|
||||
not macroid.nil?
|
||||
end
|
||||
|
||||
def create
|
||||
if resource[:global] == :true
|
||||
api_request(resource[:api],
|
||||
{:method => 'usermacro.createglobal',
|
||||
:params => {:macro => resource[:macro],
|
||||
:value => resource[:value]}})
|
||||
else
|
||||
hostid = get_host(resource[:api], resource[:host])
|
||||
api_request(resource[:api],
|
||||
{:method => 'usermacro.create',
|
||||
:params => {:macro => resource[:macro],
|
||||
:value => resource[:value],
|
||||
:hostid => hostid[0]["hostid"]}})
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
macroid = nil
|
||||
if resource[:global] == :true
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {:globalmacro => true,
|
||||
:output => "extend"}})
|
||||
result.each { |macro| macroid = macro['globalmacroid'] if macro['macro'] == resource[:macro] }
|
||||
api_request(resource[:api],
|
||||
{:method => 'usermacro.deleteglobal',
|
||||
:params => [macroid]})
|
||||
else
|
||||
hostid = get_host(resource[:api], resource[:host])
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {:hostids => hostid[0]["hostid"],
|
||||
:output => "extend"}})
|
||||
result.each { |macro| macroid = macro['hostmacroid'] if macro['macro'] == resource[:macro] }
|
||||
api_request(resource[:api],
|
||||
{:method => 'usermacro.delete',
|
||||
:params => [macroid]})
|
||||
end
|
||||
end
|
||||
|
||||
def value
|
||||
#get value
|
||||
macrovalue = nil
|
||||
if resource[:global] == :true
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {:globalmacro => true,
|
||||
:output => "extend"}})
|
||||
result.each { |macro| macrovalue = macro['value'] if macro['macro'] == resource[:macro] }
|
||||
else
|
||||
hostid = get_host(resource[:api], resource[:host])
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {:hostids => hostid[0]["hostid"],
|
||||
:output => "extend"}})
|
||||
result.each { |macro| macrovalue = macro['value'] if macro['macro'] == resource[:macro] }
|
||||
end
|
||||
macrovalue
|
||||
end
|
||||
|
||||
def value=(v)
|
||||
#set value
|
||||
macroid = nil
|
||||
if resource[:global] == :true
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {:globalmacro => true,
|
||||
:output => "extend"}})
|
||||
result.each { |macro| macroid = macro['globalmacroid'].to_i if macro['macro'] == resource[:macro] }
|
||||
api_request(resource[:api],
|
||||
{:method => 'usermacro.updateglobal',
|
||||
:params => {:globalmacroid => macroid,
|
||||
:value => resource[:value]}})
|
||||
else
|
||||
hostid = get_host(resource[:api], resource[:host])
|
||||
result = api_request(resource[:api],
|
||||
{:method => 'usermacro.get',
|
||||
:params => {:hostids => hostid[0]["hostid"],
|
||||
:output => "extend"}})
|
||||
result.each { |macro| macroid = macro['hostmacroid'].to_i if macro['macro'] == resource[:macro] }
|
||||
api_request(resource[:api],
|
||||
{:method => 'usermacro.update',
|
||||
:params => {:hostmacroid => macroid,
|
||||
:value => resource[:value]}})
|
||||
end
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,59 @@
|
|||
require 'puppet/util/filetype'
|
||||
require 'digest/md5'
|
||||
|
||||
Puppet::Type.newtype(:plugin_zabbix_configuration_import) do
|
||||
desc <<-EOT
|
||||
Import Zabbix configuration from a file.
|
||||
EOT
|
||||
|
||||
ensurable
|
||||
# do
|
||||
# defaultvalues
|
||||
# defaultto :present
|
||||
# end
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'Name of import.'
|
||||
end
|
||||
|
||||
newparam(:api) do
|
||||
desc 'Zabbix api info: endpoint, username, password.'
|
||||
isrequired
|
||||
|
||||
validate do |value|
|
||||
fail("api is not a hash") unless value.kind_of?(Hash)
|
||||
fail("api hash does not contain username") unless value.has_key?("username")
|
||||
fail("username is not valid") unless value['username'] =~ /.+/
|
||||
fail("api hash does not contain password") unless value.has_key?("password")
|
||||
fail("password is not valid") unless value['password'] =~ /.+/
|
||||
fail("api hash does not contain endpoint") unless value.has_key?("endpoint")
|
||||
fail("endpoint is not valid") unless value['endpoint'] =~ /http(s)?:\/\/.+/
|
||||
end
|
||||
end
|
||||
|
||||
newproperty(:xml_file) do
|
||||
desc 'xml file'
|
||||
isrequired
|
||||
|
||||
validate do |value|
|
||||
unless Pathname.new(value).absolute?
|
||||
fail("Invalid xml_file path #{value}")
|
||||
end
|
||||
end
|
||||
|
||||
def insync?(is)
|
||||
xml_file_content = Puppet::Util::FileType.filetype(:flat).new(value).read
|
||||
if is == Digest::MD5.hexdigest(xml_file_content)
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
autorequire(:file) do
|
||||
[@parameters[:xml_file]]
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,101 @@
|
|||
|
||||
Puppet::Type.newtype(:plugin_zabbix_host) do
|
||||
desc <<-EOT
|
||||
Manage a host in Zabbix
|
||||
EOT
|
||||
|
||||
ensurable do
|
||||
defaultvalues
|
||||
defaultto :present
|
||||
end
|
||||
|
||||
newparam(:host, :namevar => true) do
|
||||
desc 'Technical name of the host.'
|
||||
newvalues(/.+/)
|
||||
end
|
||||
|
||||
newparam(:ip) do
|
||||
desc <<-EOT
|
||||
IP of the host.
|
||||
|
||||
Set this for the default interface to be
|
||||
ip based. Use zabbix_host_interface to add
|
||||
additional interfaces if you want dns on
|
||||
the main agent and an ip for others.
|
||||
EOT
|
||||
isrequired
|
||||
newvalues(/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/)
|
||||
end
|
||||
|
||||
newparam(:type) do
|
||||
desc <<-EOT
|
||||
Zabbix host type.
|
||||
1 - ip interface
|
||||
2 - snmp interface
|
||||
...
|
||||
EOT
|
||||
end
|
||||
|
||||
newparam(:port) do
|
||||
desc <<-EOT
|
||||
Port of the host.
|
||||
|
||||
EOT
|
||||
newvalues(/^[0-9]{1,5}$/)
|
||||
end
|
||||
|
||||
newparam(:groups) do
|
||||
desc 'Host groups to add the host to.'
|
||||
isrequired
|
||||
|
||||
validate do |value|
|
||||
fail("groups is not an array") unless value.kind_of?(Array) or value.kind_of?(String)
|
||||
fail("groups array is empty") if value.empty?
|
||||
value.each do |item|
|
||||
fail("group name is not a string") unless item.kind_of?(String)
|
||||
fail("group name is empty") unless item =~ /.+/
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:hostname) do
|
||||
desc 'Visible name of the host.'
|
||||
newvalues(/.+/)
|
||||
end
|
||||
|
||||
newparam(:proxy_hostid) do
|
||||
desc 'ID of the proxy that is used to monitor the host.'
|
||||
|
||||
validate do |value|
|
||||
fail("proxy_hostid is not an integer or integer string") unless value.kind_of?(Integer) or value =~ /[0-9]+/
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:status) do
|
||||
desc <<-EOT
|
||||
Status and function of the host.
|
||||
|
||||
Possible values are:
|
||||
* 0 - (default) monitored host;
|
||||
* 1 - unmonitored host.
|
||||
EOT
|
||||
newvalues(0, 1)
|
||||
defaultto 0
|
||||
end
|
||||
|
||||
newparam(:api) do
|
||||
desc 'Zabbix api info: endpoint, username, password.'
|
||||
isrequired
|
||||
|
||||
validate do |value|
|
||||
fail("api is not a hash") unless value.kind_of?(Hash)
|
||||
fail("api hash does not contain username") unless value.has_key?("username")
|
||||
fail("username is not valid") unless value['username'] =~ /.+/
|
||||
fail("api hash does not contain password") unless value.has_key?("password")
|
||||
fail("password is not valid") unless value['password'] =~ /.+/
|
||||
fail("api hash does not contain endpoint") unless value.has_key?("endpoint")
|
||||
fail("endpoint is not valid") unless value['endpoint'] =~ /http(s)?:\/\/.+/
|
||||
end
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
Puppet::Type.newtype(:plugin_zabbix_hostgroup) do
|
||||
desc <<-EOT
|
||||
Manage a host group in Zabbix
|
||||
EOT
|
||||
|
||||
ensurable do
|
||||
defaultvalues
|
||||
defaultto :present
|
||||
end
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'Name of the host group.'
|
||||
newvalues(/.+/)
|
||||
end
|
||||
|
||||
newparam(:api) do
|
||||
desc 'Zabbix api info: endpoint, username, password.'
|
||||
isrequired
|
||||
|
||||
validate do |value|
|
||||
fail("api is not a hash") unless value.kind_of?(Hash)
|
||||
fail("api hash does not contain username") unless value.has_key?("username")
|
||||
fail("username is not valid") unless value['username'] =~ /.+/
|
||||
fail("api hash does not contain password") unless value.has_key?("password")
|
||||
fail("password is not valid") unless value['password'] =~ /.+/
|
||||
fail("api hash does not contain endpoint") unless value.has_key?("endpoint")
|
||||
fail("endpoint is not valid") unless value['endpoint'] =~ /http(s)?:\/\/.+/
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,44 @@
|
|||
|
||||
Puppet::Type.newtype(:plugin_zabbix_template_link) do
|
||||
desc <<-EOT
|
||||
Manage a template link in Zabbix
|
||||
EOT
|
||||
|
||||
ensurable do
|
||||
defaultvalues
|
||||
defaultto :present
|
||||
end
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'Template link name.'
|
||||
newvalues(/.+/)
|
||||
end
|
||||
|
||||
newparam(:host) do
|
||||
desc 'Technical name of the host.'
|
||||
newvalues(/.+/)
|
||||
isrequired
|
||||
end
|
||||
|
||||
newparam(:template) do
|
||||
desc 'Template name to link the host to.'
|
||||
newvalues(/.+/)
|
||||
isrequired
|
||||
end
|
||||
|
||||
newparam(:api) do
|
||||
desc 'Zabbix api info: endpoint, username, password.'
|
||||
isrequired
|
||||
|
||||
validate do |value|
|
||||
fail("api is not a hash") unless value.kind_of?(Hash)
|
||||
fail("api hash does not contain username") unless value.has_key?("username")
|
||||
fail("username is not valid") unless value['username'] =~ /.+/
|
||||
fail("api hash does not contain password") unless value.has_key?("password")
|
||||
fail("password is not valid") unless value['password'] =~ /.+/
|
||||
fail("api hash does not contain endpoint") unless value.has_key?("endpoint")
|
||||
fail("endpoint is not valid") unless value['endpoint'] =~ /http(s)?:\/\/.+/
|
||||
end
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,64 @@
|
|||
Puppet::Type.newtype(:plugin_zabbix_usermacro) do
|
||||
desc <<-EOT
|
||||
Manage a macro in Zabbix.
|
||||
EOT
|
||||
|
||||
ensurable do
|
||||
defaultvalues
|
||||
defaultto :present
|
||||
end
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'namevar'
|
||||
newvalues(/.+/)
|
||||
end
|
||||
|
||||
newparam(:api) do
|
||||
desc 'Zabbix api info: endpoint, username, password.'
|
||||
isrequired
|
||||
|
||||
validate do |value|
|
||||
fail("api is not a hash") unless value.kind_of?(Hash)
|
||||
fail("api hash does not contain username") unless value.has_key?("username")
|
||||
fail("username is not valid") unless value['username'] =~ /.+/
|
||||
fail("api hash does not contain password") unless value.has_key?("password")
|
||||
fail("password is not valid") unless value['password'] =~ /.+/
|
||||
fail("api hash does not contain endpoint") unless value.has_key?("endpoint")
|
||||
fail("endpoint is not valid") unless value['endpoint'] =~ /http(s)?:\/\/.+/
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:macro) do
|
||||
desc 'Macro name'
|
||||
isrequired
|
||||
newvalues(/.+/)
|
||||
end
|
||||
|
||||
newproperty(:value) do
|
||||
desc 'Macro value'
|
||||
isrequired
|
||||
newvalues(/.+/)
|
||||
end
|
||||
|
||||
newparam(:global) do
|
||||
desc <<-EOT
|
||||
Macro global flag. If true macro is global.
|
||||
If false macro belongs to host/template.
|
||||
EOT
|
||||
defaultto(:false)
|
||||
newvalues(:true, :false)
|
||||
end
|
||||
|
||||
newparam(:host) do
|
||||
desc 'Host'
|
||||
newvalues(/.+/)
|
||||
end
|
||||
|
||||
validate do
|
||||
fail('host should not be provided when global is true') if
|
||||
self[:global] == :true and not self[:host].nil?
|
||||
fail('host is required when global is false') if
|
||||
self[:global] == :false and self[:host].nil?
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
class plugin_zabbix::agent(
|
||||
$api_hash = undef,
|
||||
) {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
$zabbix_agent_port = $plugin_zabbix::monitoring::ports['backend_agent'] ? { unset=>$plugin_zabbix::monitoring::ports['agent'], default=>$plugin_zabbix::monitoring::ports['backend_agent'] }
|
||||
|
||||
firewall { '997 zabbix agent':
|
||||
port => $zabbix_agent_port,
|
||||
proto => 'tcp',
|
||||
action => 'accept'
|
||||
}
|
||||
|
||||
package { $plugin_zabbix::params::agent_pkg:
|
||||
ensure => present
|
||||
}
|
||||
->
|
||||
file { $plugin_zabbix::params::agent_include:
|
||||
ensure => directory,
|
||||
mode => '0500',
|
||||
owner => 'zabbix',
|
||||
group => 'zabbix'
|
||||
}
|
||||
->
|
||||
file { $plugin_zabbix::params::agent_config:
|
||||
ensure => present,
|
||||
content => template($plugin_zabbix::params::agent_config_template),
|
||||
notify => Service[$plugin_zabbix::params::agent_service]
|
||||
}
|
||||
->
|
||||
service { $plugin_zabbix::params::agent_service:
|
||||
ensure => running,
|
||||
enable => true,
|
||||
}
|
||||
|
||||
if defined_in_state(Class['openstack::controller']){
|
||||
$groups = union($plugin_zabbix::params::host_groups_base, $plugin_zabbix::params::host_groups_controller)
|
||||
} elsif defined_in_state(Class['openstack::compute']) {
|
||||
$groups = union($plugin_zabbix::params::host_groups_base, $plugin_zabbix::params::host_groups_compute)
|
||||
} else {
|
||||
$groups = $plugin_zabbix::params::host_groups_base
|
||||
}
|
||||
|
||||
plugin_zabbix_host { $plugin_zabbix::params::host_name:
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
ip => $plugin_zabbix::params::host_ip,
|
||||
groups => $groups,
|
||||
api => $api_hash
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
class plugin_zabbix::agent::scripts {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
file { $plugin_zabbix::params::agent_scripts:
|
||||
ensure => directory,
|
||||
recurse => true,
|
||||
purge => true,
|
||||
force => true,
|
||||
mode => '0755',
|
||||
source => 'puppet:///modules/plugin_zabbix/scripts',
|
||||
}
|
||||
|
||||
file { '/etc/zabbix/check_api.conf':
|
||||
ensure => present,
|
||||
content => template('plugin_zabbix/check_api.conf.erb'),
|
||||
}
|
||||
|
||||
file { '/etc/zabbix/check_rabbit.conf':
|
||||
ensure => present,
|
||||
content => template('plugin_zabbix/check_rabbit.conf.erb'),
|
||||
}
|
||||
|
||||
file { '/etc/zabbix/check_db.conf':
|
||||
ensure => present,
|
||||
content => template('plugin_zabbix/check_db.conf.erb'),
|
||||
}
|
||||
|
||||
file { '/etc/sudoers.d':
|
||||
ensure => directory
|
||||
}
|
||||
|
||||
file { 'zabbix_no_requiretty':
|
||||
path => '/etc/sudoers.d/zabbix',
|
||||
mode => '0440',
|
||||
owner => root,
|
||||
group => root,
|
||||
source => 'puppet:///modules/plugin_zabbix/zabbix-sudo',
|
||||
}
|
||||
|
||||
if ! defined(Package['sudo']) {
|
||||
package { 'sudo':
|
||||
ensure => installed
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
define plugin_zabbix::agent::userparameter (
|
||||
$ensure = present,
|
||||
$command = undef,
|
||||
$key = undef,
|
||||
$index = undef,
|
||||
$file = undef,
|
||||
$template = 'plugin_zabbix/zabbix_agent_userparam.conf.erb'
|
||||
) {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
$key_real = $key ? {
|
||||
undef => $name,
|
||||
default => $key
|
||||
}
|
||||
|
||||
$index_real = $index ? {
|
||||
undef => '',
|
||||
default => "${index}_",
|
||||
}
|
||||
|
||||
$file_real = $file ? {
|
||||
undef => "${::plugin_zabbix::params::agent_include}/${index_real}${name}.conf",
|
||||
default => $file,
|
||||
}
|
||||
|
||||
file { $file_real:
|
||||
ensure => $ensure,
|
||||
content => template($template),
|
||||
notify => Service[$plugin_zabbix::params::agent_service]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
class plugin_zabbix::db(
|
||||
$db_ip = undef,
|
||||
$db_password = 'zabbix',
|
||||
$sync_db = false
|
||||
) {
|
||||
#stub for multiple possible db backends
|
||||
class { 'plugin_zabbix::db::mysql':
|
||||
db_ip => $db_ip,
|
||||
db_password => $db_password,
|
||||
sync_db => $sync_db,
|
||||
}
|
||||
anchor { 'zabbix_mysql_start': } -> Class['plugin_zabbix::db::mysql'] -> anchor { 'zabbix_mysql_end': }
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
class plugin_zabbix::db::mysql(
|
||||
$db_ip = undef,
|
||||
$db_password = 'zabbix',
|
||||
$sync_db = false,
|
||||
) {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
file { '/tmp/zabbix':
|
||||
ensure => directory,
|
||||
mode => '0755',
|
||||
}
|
||||
|
||||
file { '/tmp/zabbix/parts':
|
||||
ensure => directory,
|
||||
purge => true,
|
||||
force => true,
|
||||
recurse => true,
|
||||
mode => '0755',
|
||||
source => 'puppet:///modules/plugin_zabbix/sql',
|
||||
require => File['/tmp/zabbix']
|
||||
}
|
||||
|
||||
file { '/tmp/zabbix/parts/data_clean.sql':
|
||||
ensure => present,
|
||||
require => File['/tmp/zabbix/parts'],
|
||||
content => template('plugin_zabbix/data_clean.erb'),
|
||||
}
|
||||
|
||||
exec { 'prepare-schema-1':
|
||||
command => $plugin_zabbix::params::prepare_schema_cmd,
|
||||
creates => '/tmp/zabbix/schema.sql',
|
||||
path => ['/usr/sbin', '/usr/bin', '/sbin', '/bin'],
|
||||
require => [File['/tmp/zabbix'], Package[$plugin_zabbix::params::server_pkg]],
|
||||
notify => Exec['prepare-schema-2'],
|
||||
}
|
||||
|
||||
exec { 'prepare-schema-2':
|
||||
command => 'cat /tmp/zabbix/parts/*.sql >> /tmp/zabbix/schema.sql',
|
||||
path => ['/usr/sbin', '/usr/bin', '/sbin', '/bin'],
|
||||
refreshonly => true,
|
||||
require => File['/tmp/zabbix/parts/data_clean.sql'],
|
||||
}
|
||||
|
||||
plugin_zabbix::db::mysql_db { $plugin_zabbix::params::db_name:
|
||||
user => $plugin_zabbix::params::db_user,
|
||||
password => $db_password,
|
||||
host => $db_ip,
|
||||
require => Exec['prepare-schema-2'],
|
||||
}
|
||||
|
||||
if $sync_db {
|
||||
exec{ "${plugin_zabbix::params::db_name}-import":
|
||||
command => "/usr/bin/mysql ${plugin_zabbix::params::db_name} < /tmp/zabbix/schema.sql && touch /tmp/zabbix/imported",
|
||||
creates => '/tmp/zabbix/imported',
|
||||
logoutput => true,
|
||||
require => Database[$plugin_zabbix::params::db_name],
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
define plugin_zabbix::db::mysql_db (
|
||||
$user,
|
||||
$password,
|
||||
$charset = 'utf8',
|
||||
$host = 'localhost',
|
||||
$grant = 'all',
|
||||
$sql = '',
|
||||
$enforce_sql = false
|
||||
) {
|
||||
|
||||
database { $name:
|
||||
ensure => present,
|
||||
charset => $charset,
|
||||
provider => 'mysql',
|
||||
}
|
||||
|
||||
database_user { "${user}@${host}":
|
||||
ensure => present,
|
||||
password_hash => mysql_password($password),
|
||||
provider => 'mysql',
|
||||
require => Database[$name],
|
||||
}
|
||||
|
||||
database_grant { "${user}@${host}/${name}":
|
||||
privileges => $grant,
|
||||
provider => 'mysql',
|
||||
require => Database_user["${user}@${host}"],
|
||||
}
|
||||
|
||||
$refresh = ! $enforce_sql
|
||||
|
||||
if $sql {
|
||||
exec{ "${name}-import":
|
||||
command => "/usr/bin/mysql ${name} < ${sql}",
|
||||
logoutput => true,
|
||||
refreshonly => $refresh,
|
||||
require => Database_grant["${user}@${host}/${name}"],
|
||||
subscribe => Database[$name],
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
class plugin_zabbix::frontend {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
service { $plugin_zabbix::params::frontend_service:
|
||||
ensure => 'running',
|
||||
enable => true,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
}
|
||||
|
||||
package { $plugin_zabbix::params::frontend_pkg:
|
||||
ensure => present,
|
||||
}
|
||||
|
||||
file { $plugin_zabbix::params::frontend_config:
|
||||
ensure => present,
|
||||
content => template($plugin_zabbix::params::frontend_config_template),
|
||||
notify => Service[$plugin_zabbix::params::frontend_service],
|
||||
require => Package[$plugin_zabbix::params::frontend_pkg],
|
||||
}
|
||||
|
||||
file_line { 'php timezone':
|
||||
path => $plugin_zabbix::params::frontend_service_config,
|
||||
line => ' php_value date.timezone UTC',
|
||||
match => 'php_value date.timezone',
|
||||
notify => Service[$plugin_zabbix::params::frontend_service],
|
||||
require => Package[$plugin_zabbix::params::frontend_pkg],
|
||||
}
|
||||
|
||||
# disable worker MPM, use prefork MPM which is required by mod_php:
|
||||
case $::osfamily {
|
||||
'RedHat': {
|
||||
file_line { 'httpd_mpm_prefork':
|
||||
path => '/etc/sysconfig/httpd',
|
||||
line => 'HTTPD=/usr/sbin/httpd',
|
||||
match => '^HTTPD=/usr/sbin/httpd',
|
||||
notify => Service[$plugin_zabbix::params::frontend_service],
|
||||
require => Package[$plugin_zabbix::params::frontend_pkg],
|
||||
}
|
||||
}
|
||||
'Debian': {
|
||||
file { '/etc/apache2/mods-enabled/worker.conf':
|
||||
ensure => absent,
|
||||
notify => Service[$plugin_zabbix::params::frontend_service],
|
||||
require => Package[$plugin_zabbix::params::frontend_pkg],
|
||||
}
|
||||
file { '/etc/apache2/mods-enabled/worker.load':
|
||||
ensure => absent,
|
||||
notify => Service[$plugin_zabbix::params::frontend_service],
|
||||
require => Package[$plugin_zabbix::params::frontend_pkg],
|
||||
}
|
||||
}
|
||||
default: {}
|
||||
}
|
||||
|
||||
# postinst script in zabbix-frontend-php package creates an invalid symlink
|
||||
# hack: in debconf disable apache configuration and restarting
|
||||
# and create the symlink manually then restart apache
|
||||
case $::osfamily {
|
||||
'Debian': {
|
||||
exec { 'configure zabbix-frontend-php package':
|
||||
command => 'echo "zabbix-frontend-php zabbix-frontend-php/configure-apache boolean false\nzabbix-frontend-php zabbix-frontend-php/restart-webserver boolean false" | debconf-set-selections',
|
||||
provider => 'shell',
|
||||
before => Package[$plugin_zabbix::params::frontend_pkg],
|
||||
}
|
||||
file { '/etc/apache2/conf.d/zabbix.conf':
|
||||
ensure => link,
|
||||
target => $plugin_zabbix::params::frontend_service_config,
|
||||
notify => Service[$plugin_zabbix::params::frontend_service],
|
||||
require => Package[$plugin_zabbix::params::frontend_pkg],
|
||||
}
|
||||
}
|
||||
default: {}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
class plugin_zabbix::ha::haproxy {
|
||||
|
||||
Haproxy::Service { use_include => true }
|
||||
Haproxy::Balancermember { use_include => true }
|
||||
|
||||
$public_vip = hiera('public_vip')
|
||||
$management_vip = hiera('management_vip')
|
||||
|
||||
Plugin_zabbix::Ha::Haproxy_service {
|
||||
server_names => filter_hash($::controllers, 'name'),
|
||||
ipaddresses => filter_hash($::controllers, 'internal_address'),
|
||||
public_virtual_ip => $public_vip,
|
||||
internal_virtual_ip => $management_vip,
|
||||
}
|
||||
|
||||
plugin_zabbix::ha::haproxy_service { 'zabbix-agent':
|
||||
order => '210',
|
||||
listen_port => $plugin_zabbix::ports['agent'],
|
||||
balancermember_port => $plugin_zabbix::ports['backend_agent'],
|
||||
|
||||
haproxy_config_options => {
|
||||
'option' => ['tcpka'],
|
||||
'timeout client' => '48h',
|
||||
'timeout server' => '48h',
|
||||
'balance' => 'roundrobin',
|
||||
'mode' => 'tcp'
|
||||
},
|
||||
|
||||
balancermember_options => 'check inter 5000 rise 2 fall 3',
|
||||
}
|
||||
|
||||
plugin_zabbix::ha::haproxy_service { 'zabbix-server':
|
||||
order => '200',
|
||||
listen_port => $plugin_zabbix::ports['server'],
|
||||
balancermember_port => $plugin_zabbix::ports['backend_server'],
|
||||
|
||||
haproxy_config_options => {
|
||||
'option' => ['tcpka'],
|
||||
'timeout client' => '48h',
|
||||
'timeout server' => '48h',
|
||||
'balance' => 'roundrobin',
|
||||
'mode' => 'tcp'
|
||||
},
|
||||
|
||||
balancermember_options => 'check inter 5000 rise 2 fall 3',
|
||||
}
|
||||
|
||||
file_line { 'add binding to management VIP for horizon and zabbix':
|
||||
path => '/etc/haproxy/conf.d/015-horizon.cfg',
|
||||
after => 'listen horizon',
|
||||
line => " bind ${management_vip}:80",
|
||||
before => Exec['haproxy reload'],
|
||||
}
|
||||
|
||||
exec { 'haproxy reload':
|
||||
command => 'export OCF_ROOT="/usr/lib/ocf"; (ip netns list | grep haproxy) && ip netns exec haproxy /usr/lib/ocf/resource.d/fuel/ns_haproxy reload',
|
||||
path => '/usr/bin:/usr/sbin:/bin:/sbin',
|
||||
logoutput => true,
|
||||
provider => 'shell',
|
||||
tries => 10,
|
||||
try_sleep => 10,
|
||||
returns => [0, ''],
|
||||
}
|
||||
|
||||
Haproxy::Listen <||> -> Exec['haproxy reload']
|
||||
Haproxy::Balancermember <||> -> Exec['haproxy reload']
|
||||
|
||||
firewall { '998 zabbix agent vip':
|
||||
proto => 'tcp',
|
||||
action => 'accept',
|
||||
port => $plugin_zabbix::ports['agent'],
|
||||
}
|
||||
|
||||
firewall { '998 zabbix server vip':
|
||||
proto => 'tcp',
|
||||
action => 'accept',
|
||||
port => $plugin_zabbix::ports['server'],
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
# Register a service with HAProxy
|
||||
define plugin_zabbix::ha::haproxy_service (
|
||||
$order,
|
||||
$server_names,
|
||||
$ipaddresses,
|
||||
$listen_port,
|
||||
$public_virtual_ip,
|
||||
$internal_virtual_ip,
|
||||
|
||||
$mode = undef,
|
||||
$haproxy_config_options = { 'option' => ['httplog'], 'balance' => 'roundrobin' },
|
||||
$balancermember_options = 'check',
|
||||
$balancermember_port = $listen_port,
|
||||
$define_cookies = false,
|
||||
|
||||
# use active-passive failover, mark all backends except the first one
|
||||
# as backups
|
||||
$define_backups = false,
|
||||
|
||||
# by default, listen only on internal VIP
|
||||
$public = false,
|
||||
$internal = true,
|
||||
|
||||
# if defined, restart this service before registering it with HAProxy
|
||||
$require_service = undef,
|
||||
|
||||
# if true, configure this service before starting the haproxy service;
|
||||
# HAProxy will refuse to start with no listening services defined
|
||||
$before_start = false,
|
||||
) {
|
||||
|
||||
if $public and $internal {
|
||||
$virtual_ips = [$public_virtual_ip, $internal_virtual_ip]
|
||||
} elsif $internal {
|
||||
$virtual_ips = [$internal_virtual_ip]
|
||||
} elsif $public {
|
||||
$virtual_ips = [$public_virtual_ip]
|
||||
}
|
||||
|
||||
haproxy::listen { $name:
|
||||
order => $order,
|
||||
ipaddress => $virtual_ips,
|
||||
ports => $listen_port,
|
||||
options => $haproxy_config_options,
|
||||
mode => $mode,
|
||||
}
|
||||
|
||||
haproxy::balancermember { $name:
|
||||
order => $order,
|
||||
listening_service => $name,
|
||||
server_names => $server_names,
|
||||
ipaddresses => $ipaddresses,
|
||||
ports => $balancermember_port,
|
||||
options => $balancermember_options,
|
||||
define_cookies => $define_cookies,
|
||||
define_backups => $define_backups,
|
||||
}
|
||||
|
||||
if $require_service {
|
||||
Service[$require_service] -> Haproxy::Listen[$name]
|
||||
Service[$require_service] -> Haproxy::Balancermember[$name]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
class plugin_zabbix(
|
||||
$server_ip = undef,
|
||||
$db_ip = undef,
|
||||
$primary_controller = false,
|
||||
$username = 'admin',
|
||||
$password = 'zabbix',
|
||||
$db_password = 'zabbix',
|
||||
) {
|
||||
include plugin_zabbix::params
|
||||
|
||||
$ports = $plugin_zabbix::params::zabbix_ports
|
||||
|
||||
$password_hash = md5($password)
|
||||
|
||||
anchor { 'zabbix_server_start': } ->
|
||||
class { 'plugin_zabbix::server':
|
||||
db_ip => $db_ip,
|
||||
primary_controller => $primary_controller,
|
||||
db_password => $db_password,
|
||||
} ->
|
||||
anchor { 'zabbix_server_end': }
|
||||
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
class plugin_zabbix::monitoring(
|
||||
$api_ip = undef,
|
||||
$server_vip = undef,
|
||||
$server_ips = undef,
|
||||
$db_ip = undef,
|
||||
$username = 'admin',
|
||||
$password = 'zabbix',
|
||||
$db_password = 'zabbix',
|
||||
) {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
$ports = $plugin_zabbix::params::zabbix_ports
|
||||
|
||||
$api_url = "http://${api_ip}:${ports['api']}${plugin_zabbix::params::frontend_base}/api_jsonrpc.php"
|
||||
$api_hash = { endpoint => $api_url,
|
||||
username => $username,
|
||||
password => $password }
|
||||
|
||||
if is_ip_address($::public_address) {
|
||||
plugin_zabbix_usermacro { "${plugin_zabbix::params::host_name} IP_PUBLIC":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
macro => '{$IP_PUBLIC}',
|
||||
value => $::public_address,
|
||||
api => $api_hash,
|
||||
}
|
||||
}
|
||||
|
||||
if is_ip_address($::internal_address) {
|
||||
plugin_zabbix_usermacro { "${plugin_zabbix::params::host_name} IP_MANAGEMENT":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
macro => '{$IP_MANAGEMENT}',
|
||||
value => $::internal_address,
|
||||
api => $api_hash,
|
||||
}
|
||||
}
|
||||
|
||||
if is_ip_address($::swift_address) {
|
||||
plugin_zabbix_usermacro { "${plugin_zabbix::params::host_name} IP_STORAGE":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
macro => '{$IP_STORAGE}',
|
||||
value => $::swift_address,
|
||||
api => $api_hash,
|
||||
}
|
||||
}
|
||||
|
||||
Anchor<| title == 'zabbix_agent_end' |> -> Anchor<| title == 'zabbix_agent_scripts_begin' |>
|
||||
|
||||
class { 'plugin_zabbix::agent':
|
||||
api_hash => $api_hash,
|
||||
}
|
||||
anchor { 'zabbix_agent_begin': } -> Class['plugin_zabbix::agent'] -> anchor { 'zabbix_agent_end': }
|
||||
|
||||
class { 'plugin_zabbix::agent::scripts': }
|
||||
anchor { 'zabbix_agent_scripts_begin': } -> Class['plugin_zabbix::agent::scripts'] -> anchor { 'zabbix_agent_scripts_end': }
|
||||
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'vfs.dev.discovery':
|
||||
ensure => 'present',
|
||||
command => '/etc/zabbix/scripts/vfs.dev.discovery.sh';
|
||||
'vfs.mdadm.discovery':
|
||||
ensure => 'present',
|
||||
command => '/etc/zabbix/scripts/vfs.mdadm.discovery.sh';
|
||||
'proc.vmstat':
|
||||
key => 'proc.vmstat[*]',
|
||||
command => 'grep \'$1\' /proc/vmstat | awk \'{print $$2}\'';
|
||||
'crm.node.check':
|
||||
key => 'crm.node.check[*]',
|
||||
command => '/etc/zabbix/scripts/crm_node_check.sh $1';
|
||||
}
|
||||
|
||||
#Linux
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template Fuel OS Linux":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template Fuel OS Linux',
|
||||
api => $api_hash,
|
||||
}
|
||||
|
||||
#Zabbix Agent
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App Zabbix Agent":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App Zabbix Agent',
|
||||
api => $api_hash,
|
||||
}
|
||||
|
||||
Plugin_zabbix_usermacro { require => Class['plugin_zabbix::agent'] }
|
||||
Plugin_zabbix_template_link { require => Class['plugin_zabbix::agent'] }
|
||||
|
||||
# Auto-registration
|
||||
include plugin_zabbix::monitoring::nova_mon
|
||||
include plugin_zabbix::monitoring::keystone_mon
|
||||
include plugin_zabbix::monitoring::glance_mon
|
||||
include plugin_zabbix::monitoring::cinder_mon
|
||||
include plugin_zabbix::monitoring::swift_mon
|
||||
include plugin_zabbix::monitoring::rabbitmq_mon
|
||||
include plugin_zabbix::monitoring::horizon_mon
|
||||
include plugin_zabbix::monitoring::mysql_mon
|
||||
include plugin_zabbix::monitoring::memcached_mon
|
||||
include plugin_zabbix::monitoring::haproxy_mon
|
||||
include plugin_zabbix::monitoring::zabbixserver_mon
|
||||
include plugin_zabbix::monitoring::openstack_virtual_mon
|
||||
include plugin_zabbix::monitoring::neutron_mon
|
||||
include plugin_zabbix::monitoring::openvswitch_mon
|
||||
include plugin_zabbix::monitoring::ceilometer_mon
|
||||
include plugin_zabbix::monitoring::ceilometer_compute_mon
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
class plugin_zabbix::monitoring::ceilometer_compute_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
#Ceilometer
|
||||
if defined_in_state(Class['Ceilometer::Agent::Compute']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Ceilometer Compute":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Ceilometer Compute',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
class plugin_zabbix::monitoring::ceilometer_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
#Ceilometer
|
||||
if defined_in_state(Class['Ceilometer']) and defined_in_state(Class['Openstack::Controller']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Ceilometer":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Ceilometer',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
class plugin_zabbix::monitoring::cinder_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
#Cinder
|
||||
if defined_in_state(Class['cinder::api']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Cinder API":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Cinder API',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Cinder API check":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Cinder API check',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'cinder.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py cinder http ${::internal_address} 8776";
|
||||
}
|
||||
}
|
||||
|
||||
if defined_in_state(Class['cinder::scheduler']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Cinder Scheduler":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Cinder Scheduler',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
|
||||
if defined_in_state(Class['cinder::volume']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Cinder Volume":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Cinder Volume',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
class plugin_zabbix::monitoring::glance_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
#Glance
|
||||
if defined_in_state(Class['glance::api']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Glance API":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Glance API',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Glance API check":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Glance API check',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'glance.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py glance http ${::internal_address} 9292";
|
||||
}
|
||||
}
|
||||
|
||||
if defined_in_state(Class['glance::registry']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Glance Registry":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Glance Registry',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
class plugin_zabbix::monitoring::haproxy_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
if defined_in_state(Class[Cluster::Haproxy]) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App HAProxy":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App HAProxy',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'haproxy.be.discovery':
|
||||
key => 'haproxy.be.discovery',
|
||||
command => '/etc/zabbix/scripts/haproxy.sh -b';
|
||||
'haproxy.be':
|
||||
key => 'haproxy.be[*]',
|
||||
command => '/etc/zabbix/scripts/haproxy.sh -v $1';
|
||||
'haproxy.fe.discovery':
|
||||
key => 'haproxy.fe.discovery',
|
||||
command => '/etc/zabbix/scripts/haproxy.sh -f';
|
||||
'haproxy.fe':
|
||||
key => 'haproxy.fe[*]',
|
||||
command => '/etc/zabbix/scripts/haproxy.sh -v $1';
|
||||
'haproxy.sv.discovery':
|
||||
key => 'haproxy.sv.discovery',
|
||||
command => '/etc/zabbix/scripts/haproxy.sh -s';
|
||||
'haproxy.sv':
|
||||
key => 'haproxy.sv[*]',
|
||||
command => '/etc/zabbix/scripts/haproxy.sh -v $1';
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
class plugin_zabbix::monitoring::horizon_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
#Horizon
|
||||
if defined_in_state(Class['horizon']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Horizon":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Horizon',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
class plugin_zabbix::monitoring::keystone_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
#Keystone
|
||||
if defined_in_state(Class['keystone']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Keystone":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Keystone',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Keystone API check":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Keystone API check',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'keystone.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py keystone http ${::internal_address} 5000";
|
||||
'keystone.service.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py keystone_service http ${::internal_address} 35357";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
class plugin_zabbix::monitoring::memcached_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
if defined_in_state(Class['memcached']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App Memcache":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App Memcache',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'memcache':
|
||||
key => 'memcache[*]',
|
||||
command => "/bin/echo -e \"stats\\nquit\" | nc ${plugin_zabbix::params::host_ip} 11211 | grep \"STAT \$1 \" | awk \'{print \$\$3}\'"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
class plugin_zabbix::monitoring::mysql_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
if defined_in_state(Class['mysql::server']) {
|
||||
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App MySQL":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App MySQL',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'mysql.status':
|
||||
key => 'mysql.status[*]',
|
||||
command => 'echo "show global status where Variable_name=\'$1\';" | sudo mysql -N | awk \'{print $$2}\'';
|
||||
'mysql.size':
|
||||
key => 'mysql.size[*]',
|
||||
command =>'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\'$1\'")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\'$2\'");" | sudo mysql -N';
|
||||
'mysql.ping':
|
||||
command => 'sudo mysqladmin ping | grep -c alive';
|
||||
'mysql.version':
|
||||
command => 'mysql -V';
|
||||
}
|
||||
|
||||
file { "${::plugin_zabbix::params::agent_include}/userparameter_mysql.conf":
|
||||
ensure => absent,
|
||||
}
|
||||
|
||||
file { '/var/lib/zabbix':
|
||||
ensure => directory,
|
||||
}
|
||||
|
||||
file { '/var/lib/zabbix/.my.cnf':
|
||||
ensure => present,
|
||||
content => template('plugin_zabbix/.my.cnf.erb'),
|
||||
require => File['/var/lib/zabbix'],
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
class plugin_zabbix::monitoring::neutron_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
# Neutron server
|
||||
if defined_in_state(Class['::neutron']) and !defined_in_state(Class['openstack::compute']) {
|
||||
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Neutron Server":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Neutron Server',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Neutron API check":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Neutron API check',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'neutron.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py neutron http ${::internal_address} 9696";
|
||||
}
|
||||
}
|
||||
|
||||
# Neutron OVS agent
|
||||
if defined_in_state(Class[Neutron::Agents::Ml2::Ovs]) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Neutron OVS Agent":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Neutron OVS Agent',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
|
||||
# Neutron Metadata agent
|
||||
if defined_in_state(Class['::neutron::agents::metadata']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Neutron Metadata Agent":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Neutron Metadata Agent',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
|
||||
# Neutron L3 agent
|
||||
if defined_in_state(Class['::neutron::agents::l3']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Neutron L3 Agent":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Neutron L3 Agent',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
|
||||
# Neutron DHCP agent
|
||||
if defined_in_state(Class['::neutron::agents::dhcp']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Neutron DHCP Agent":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Neutron DHCP Agent',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,94 @@
|
|||
class plugin_zabbix::monitoring::nova_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
# Nova (controller)
|
||||
if defined_in_state(Class['openstack::controller']) {
|
||||
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Nova API":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Nova API',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Nova API OSAPI":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Nova API OSAPI',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Nova API OSAPI check":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Nova API OSAPI check',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Nova API EC2":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Nova API EC2',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Nova Cert":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Nova Cert',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'nova.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py nova_os http ${::internal_address} 8774";
|
||||
}
|
||||
}
|
||||
|
||||
#Nova (compute)
|
||||
if defined_in_state(Class['openstack::compute']) {
|
||||
|
||||
if ! hiera('quantum',false) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Nova API Metadata":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Nova API Metadata',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Nova Network":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Nova Network',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if defined_in_state(Class['nova::consoleauth']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Nova ConsoleAuth":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Nova ConsoleAuth',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
|
||||
if defined_in_state(Class['nova::scheduler']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Nova Scheduler":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Nova Scheduler',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
|
||||
#Nova compute
|
||||
if defined_in_state(Class['nova::compute']) {
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Nova Compute":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Nova Compute',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
|
||||
#Libvirt
|
||||
if defined_in_state(Class['nova::compute::libvirt']) {
|
||||
plugin_zabbix_template_link { "${::fqdn} Template App OpenStack Libvirt":
|
||||
host => $::fqdn,
|
||||
template => 'Template App OpenStack Libvirt',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
class plugin_zabbix::monitoring::openstack_virtual_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
|
||||
if hiera('role') == 'primary-controller' {
|
||||
plugin_zabbix_host { $plugin_zabbix::params::openstack::virtual_cluster_name:
|
||||
host => $plugin_zabbix::params::openstack::virtual_cluster_name,
|
||||
ip => $plugin_zabbix::monitoring::server_vip,
|
||||
port => $plugin_zabbix::monitoring::ports['agent'],
|
||||
groups => $plugin_zabbix::params::host_groups_base,
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::openstack::virtual_cluster_name} Template OpenStack Cluster":
|
||||
host => $plugin_zabbix::params::openstack::virtual_cluster_name,
|
||||
template => 'Template OpenStack Cluster',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
require => Plugin_zabbix_host[$plugin_zabbix::params::openstack::virtual_cluster_name],
|
||||
}
|
||||
# Screen
|
||||
plugin_zabbix_configuration_import { 'Template_Screens_OpenStack_Cluster.xml Import':
|
||||
ensure => present,
|
||||
xml_file => '/etc/zabbix/import/Screens_OpenStack_Cluster.xml',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
require => Plugin_zabbix_template_link["${plugin_zabbix::params::openstack::virtual_cluster_name} Template OpenStack Cluster"],
|
||||
}
|
||||
}
|
||||
|
||||
if defined_in_state(Class['openstack::controller']) {
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'db.token.count.query':
|
||||
command => '/etc/zabbix/scripts/query_db.py token_count';
|
||||
'db.instance.error.query':
|
||||
command => '/etc/zabbix/scripts/query_db.py instance_error';
|
||||
'db.services.offline.nova.query':
|
||||
command => '/etc/zabbix/scripts/query_db.py services_offline_nova';
|
||||
'db.instance.count.query':
|
||||
command => '/etc/zabbix/scripts/query_db.py instance_count';
|
||||
'db.cpu.total.query':
|
||||
command => '/etc/zabbix/scripts/query_db.py cpu_total';
|
||||
'db.cpu.used.query':
|
||||
command => '/etc/zabbix/scripts/query_db.py cpu_used';
|
||||
'db.ram.total.query':
|
||||
command => '/etc/zabbix/scripts/query_db.py ram_total';
|
||||
'db.ram.used.query':
|
||||
command => '/etc/zabbix/scripts/query_db.py ram_used';
|
||||
'db.services.offline.cinder.query':
|
||||
command => '/etc/zabbix/scripts/query_db.py services_offline_cinder';
|
||||
'vip.nova.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py nova_os http ${::plugin_zabbix::params::openstack::nova_vip} 8774";
|
||||
'vip.glance.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py glance http ${::plugin_zabbix::params::openstack::glance_vip} 9292";
|
||||
'vip.keystone.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py keystone http ${::plugin_zabbix::params::openstack::keystone_vip} 5000";
|
||||
'vip.keystone.service.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py keystone_service http ${::plugin_zabbix::params::openstack::keystone_vip} 35357";
|
||||
'vip.cinder.api.status':
|
||||
command => "/etc/zabbix/scripts/check_api.py cinder http ${::plugin_zabbix::params::openstack::cinder_vip} 8776";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
class plugin_zabbix::monitoring::openvswitch_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
# Open vSwitch
|
||||
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack Open vSwitch":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack Open vSwitch',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
class plugin_zabbix::monitoring::rabbitmq_mon {
|
||||
|
||||
include plugin_zabbix::params
|
||||
|
||||
#RabbitMQ server
|
||||
if defined_in_state(Class['Rabbitmq']) {
|
||||
|
||||
plugin_zabbix_template_link { "${plugin_zabbix::params::host_name} Template App OpenStack RabbitMQ":
|
||||
host => $plugin_zabbix::params::host_name,
|
||||
template => 'Template App OpenStack HA RabbitMQ',
|
||||
api => $plugin_zabbix::monitoring::api_hash,
|
||||
}
|
||||
|
||||
exec { 'enable rabbitmq management plugin':
|
||||
command => 'rabbitmq-plugins enable rabbitmq_management',
|
||||
path => ['/usr/sbin', '/usr/bin', '/sbin', '/bin' ],
|
||||
unless => 'rabbitmq-plugins list -m -E rabbitmq_management | grep -q rabbitmq_management',
|
||||
environment => 'HOME=/root',
|
||||
}
|
||||
|
||||
firewall {'992 rabbitmq management':
|
||||
port => '15672',
|
||||
proto => 'tcp',
|
||||
action => 'accept',
|
||||
}
|
||||
|
||||
plugin_zabbix::agent::userparameter {
|
||||
'rabbitmq.queue.items':
|
||||
command => '/etc/zabbix/scripts/check_rabbit.py queues-items';
|
||||
'rabbitmq.queues.without.consumers':
|
||||
command => '/etc/zabbix/scripts/check_rabbit.py queues-without-consumers';
|
||||
'rabbitmq.missing.nodes':
|
||||
command => '/etc/zabbix/scripts/check_rabbit.py missing-nodes';
|
||||
'rabbitmq.unmirror.queues':
|
||||
command => '/etc/zabbix/scripts/check_rabbit.py unmirror-queues';
|
||||
'rabbitmq.missing.queues':
|
||||
command => '/etc/zabbix/scripts/check_rabbit.py missing-queues';
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue