Retire repository

Fuel repositories are all retired in openstack namespace, retire
remaining fuel repos in x namespace since they are unused now.

This change removes all content from the repository and adds the usual
README file to point out that the repository is retired following the
process from
https://docs.openstack.org/infra/manual/drivers.html#retiring-a-project

See also
http://lists.openstack.org/pipermail/openstack-discuss/2019-December/011675.html

A related change is: https://review.opendev.org/699752 .

Change-Id: If072ce6004500d5cfabba8eb947f15e2a6be29b7
This commit is contained in:
Andreas Jaeger 2019-12-18 19:37:15 +01:00
parent b89ccefe80
commit 33d9f406ee
207 changed files with 10 additions and 28035 deletions

9
.gitignore vendored
View File

@ -1,9 +0,0 @@
.build/
zabbix_monitoring*.noarch.rpm
repositories/centos/*.rpm
repositories/ubuntu/*.deb
repositories/ubuntu/*/*.deb
.bundled_gems/
.bundle/
Gemfile.lock
.tox/

176
LICENSE
View File

@ -1,176 +0,0 @@
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.

View File

@ -1,76 +0,0 @@
Zabbix Plugin for Fuel
=======================
Zabbix plugin
--------------
Zabbix plugin for Fuel extends Mirantis OpenStack functionality by adding
Zabbix monitoring system. It installs Zabbix server, frontend and agent
components. The plugin configures Zabbix by adding templates to monitor nodes
and OpenStack services and APIs.
Requirements
------------
| Requirement | Version/Comment |
|:---------------------------------|:------------------------------|
| Mirantis OpenStack compatibility | 7.0, 8.0, 9.0, 9.1, 9.2, 10.0 |
Installation Guide
==================
Zabbix plugin installation
---------------------------
To install Zabbix plugin, follow these steps:
1. Download the plugin from
[Fuel Plugins Catalog](https://software.mirantis.com/fuel-plugins)
2. Copy the plugin on already installed Fuel Master node; ssh can be used for
that. If you do not have the Fuel Master node yet, see
[Quick Start Guide](https://software.mirantis.com/quick-start/) :
# scp zabbix_monitoring-<version>.noarch.rpm root@<Fuel_Master_ip>:/tmp
3. Install the plugin:
# cd /tmp
# fuel plugins --install zabbix_monitoring-<version>.noarch.rpm
4. Check if the plugin was installed successfully:
# fuel plugins
id | name | version | package_version
---|-------------------|---------|----------------
1 | zabbix_monitoring | 2.5.3 | 3.0.0
For further details see the Zabbix Plugin Guide in the
[Fuel Plugins Catalog](https://software.mirantis.com/fuel-plugins)
Zabbix plugin configuration
----------------------------
1. Create an environment.
2. Enable the plugin on the Settings tab of the Fuel web UI.
3. Optionally, change values in the form:
* username/password - access credentials for Zabbix Administrator
* database password - password for Zabbix database in MySQL
4. Deploy the environment.
5. Zabbix frontend is available at: http://<public_VIP>/zabbix
For more information and instructions, see the Zabbix Plugin Guide in the
[Fuel Plugins Catalog](https://software.mirantis.com/fuel-plugins)
Contributors
------------
Dmitry Klenov <dklenov@mirantis.com> (PM)
Piotr Misiak <pmisiak@mirantis.com> (developer)
Szymon Bańka <sbanka@mirantis.com> (developer)
Bartosz Kupidura <bkupidura@mirantis.com> (developer)
Alexander Zatserklyany <azatserklyany@mirantis.com> (QA engineer)
Maciej Relewicz <mrelewicz@mirantis.com> (developer)
Swann Croiset <scroiset@mirantis.com> (developer)
Olivier Bourdon <obourdon@mirantis.com> (developer)

10
README.rst Normal file
View File

@ -0,0 +1,10 @@
This project is no longer maintained.
The contents of this repository are still available in the Git
source code management system. To see the contents of this
repository before it reached its end of life, please check out the
previous commit with "git checkout HEAD^1".
For any further questions, please email
openstack-discuss@lists.openstack.org or join #openstack-dev on
Freenode.

View File

@ -1,21 +0,0 @@
# Copyright 2015 Mirantis, Inc.
#
# 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.
source 'https://rubygems.org'
group :development, :test do
gem 'rake'
gem "puppet", ENV['PUPPET_VERSION'] || '~> 3.4.0'
gem 'puppetlabs_spec_helper'
gem 'puppet-lint'
end

View File

@ -1,13 +0,0 @@
require 'puppet-lint/tasks/puppet-lint'
require 'puppet-syntax/tasks/puppet-syntax'
PuppetLint.configuration.fail_on_warnings = true
PuppetLint.configuration.send('disable_80chars')
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
PuppetLint.configuration.send('disable_class_parameter_defaults')
desc "Run lint, and syntax tests."
task :test => [
:lint,
:syntax,
]

View File

@ -1,52 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
notice('fuel-plugin-external-zabbix: agent.pp')
$fuel_version = 0 + hiera('fuel_version')
$network_metadata = hiera_hash('network_metadata')
$primary_controller_nodes = get_nodes_hash_by_roles($network_metadata, ['primary-controller'])
$controllers = get_nodes_hash_by_roles($network_metadata, ['primary-controller', 'controller'])
$controller_internal_addresses = get_node_to_ipaddr_map_by_network_role($controllers, 'management')
$controller_nodes = ipsort(values($controller_internal_addresses))
$uid = hiera('uid')
$node_hostname = "node-${uid}"
$hostinfo = $network_metadata['nodes'][$node_hostname]
$netinfo = $hostinfo['network_roles']
$internal_address = $netinfo['management']
$public_address = $netinfo['ex']
$swift_address = $netinfo['storage']
if $fuel_version < 8.0 {
$cur_node_roles = node_roles(hiera_array('nodes'), hiera('uid'))
$is_base_os = member($cur_node_roles, 'base-os')
$is_virt = member($cur_node_roles, 'virt')
$is_controller = member($cur_node_roles, 'controller') or
member($cur_node_roles, 'primary-controller')
$roles_nb = size($cur_node_roles)
} else {
$is_base_os = roles_include(['base-os'])
$is_virt = roles_include(['virt'])
$is_controller = roles_include(['controller', 'primary-controller'])
$roles_nb = size($network_metadata['nodes'][$node_hostname]['node_roles'])
}
class { 'plugin_zabbix::monitoring':
server_ips => $controller_nodes,
roles_nb => $roles_nb,
has_role_baseos => $is_base_os,
has_role_virt => $is_virt,
has_role_controller => $is_controller,
}

View File

@ -1,26 +0,0 @@
# Copyright 2016 Mirantis, Inc.
#
# 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.
notice('fuel-plugin-external-zabbix: cleanup_apt_config.pp')
case $::osfamily {
'Debian': {
file { '/etc/apt/apt.conf.d/99norecommends':
ensure => absent,
}
}
default: {
# Currently only Debian like distributions need specific configuration.
}
}

View File

@ -1,53 +0,0 @@
# Copyright 2016 Mirantis, Inc.
#
# 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.
notice('fuel-plugin-external-zabbix: configure_apt.pp')
$str = 'APT::Install-Suggests "0";
APT::Install-Recommends "0";
'
case $::osfamily {
'Debian': {
file { '/etc/apt/apt.conf.d/99norecommends':
ensure => file,
content => $str,
}
}
default: {
# Currently only Debian like distributions need specific configuration.
}
}
$fuel_version = 0 + hiera('fuel_version')
if $fuel_version < 8.0 {
$cur_node_roles = node_roles(hiera_array('nodes'), hiera('uid'))
$is_controller = member($cur_node_roles, 'controller') or
member($cur_node_roles, 'primary-controller')
} else {
$is_controller = roles_include(['controller', 'primary-controller'])
}
if $is_controller {
# The OCF script should exist before any node tries to configure the
# Zabbix with Pacemaker. This is why it is shipped by this manifest.
file { 'zabbix-server-ocf' :
ensure => present,
path => '/usr/lib/ocf/resource.d/fuel/zabbix-server',
mode => '0755',
owner => 'root',
group => 'root',
source => 'puppet:///modules/plugin_zabbix/zabbix-server.ocf',
}
}

View File

@ -1,18 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
notice('fuel-plugin-external-zabbix: controller.pp')
include plugin_zabbix::controller

View File

@ -1,10 +0,0 @@
notice('zabbix_monitoring/override_configuration')
file { '/etc/hiera/plugins/zabbix_monitoring.yaml':
ensure => present,
content => template('plugin_zabbix/config_override.erb'),
owner => root,
group => root,
mode => '0644',
}

View File

@ -1,18 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
notice('fuel-plugin-external-zabbix: primary_controller.pp')
include plugin_zabbix::primary_controller

View File

@ -1,18 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
notice('fuel-plugin-external-zabbix: zabbix_server_config.pp')
include plugin_zabbix::server::config

View File

@ -1,6 +0,0 @@
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>

View File

@ -1,22 +0,0 @@
# Copyright 2015 Mirantis, Inc.
#
# 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.
source 'https://rubygems.org'
group :development, :test do
gem 'rake'
gem "puppet", ENV['PUPPET_VERSION'] || '~> 3.4.0'
gem 'puppetlabs_spec_helper'
gem 'puppet-lint'
end

View File

@ -1,17 +0,0 @@
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-lint/tasks/puppet-lint'
require 'puppet-syntax/tasks/puppet-syntax'
PuppetLint.configuration.fail_on_warnings = true
PuppetLint.configuration.send('disable_80chars')
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
PuppetLint.configuration.send('disable_class_parameter_defaults')
PuppetLint.configuration.send('disable_autoloader_layout')
desc "Run lint, and syntax and spec tests."
task :test => [
:lint,
:syntax,
:spec,
]

View File

@ -1,102 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2015-10-30T15:18:12Z</date>
<screens>
<screen>
<name>Ceph</name>
<hsize>2</hsize>
<vsize>2</vsize>
<screen_items>
<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>PG breakdown by state</name>
<host>CephCluster</host>
</resource>
<max_columns>3</max_columns>
<application/>
</screen_item>
<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>PG number vs Object number</name>
<host>CephCluster</host>
</resource>
<max_columns>3</max_columns>
<application/>
</screen_item>
<screen_item>
<resourcetype>0</resourcetype>
<width>500</width>
<height>100</height>
<x>1</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>Storage capacity</name>
<host>CephCluster</host>
</resource>
<max_columns>3</max_columns>
<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>OSD breakdown by state</name>
<host>CephCluster</host>
</resource>
<max_columns>3</max_columns>
<application/>
</screen_item>
</screen_items>
</screen>
</screens>
</zabbix_export>

View File

@ -1,137 +0,0 @@
<?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>

View File

@ -1,482 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2013-07-10T21:14:51Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template App Iptables Stats</template>
<name>Template App Iptables Stats</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Iptables Stats</name>
</application>
</applications>
<items>
<item>
<name>tcp close</name>
<type>0</type>
<snmp_community>public</snmp_community>
<multiplier>0</multiplier>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>iptstate.tcp.close</key>
<delay>60</delay>
<history>90</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>Packets</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>Iptables Stats</name>
</application>
</applications>
<valuemap/>
</item>
<item>
<name>tcp established</name>
<type>0</type>
<snmp_community>public</snmp_community>
<multiplier>0</multiplier>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>iptstate.tcp.established</key>
<delay>60</delay>
<history>90</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>Packets</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>Iptables Stats</name>
</application>
</applications>
<valuemap/>
</item>
<item>
<name>tcp syn</name>
<type>0</type>
<snmp_community>public</snmp_community>
<multiplier>0</multiplier>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>iptstate.tcp.syn</key>
<delay>60</delay>
<history>90</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>Packets</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>Iptables Stats</name>
</application>
</applications>
<valuemap/>
</item>
<item>
<name>tcp timewait</name>
<type>0</type>
<snmp_community>public</snmp_community>
<multiplier>0</multiplier>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>iptstate.tcp.timewait</key>
<delay>60</delay>
<history>90</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>Packets</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>Iptables Stats</name>
</application>
</applications>
<valuemap/>
</item>
<item>
<name>total icmp</name>
<type>0</type>
<snmp_community>public</snmp_community>
<multiplier>0</multiplier>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>iptstate.icmp</key>
<delay>60</delay>
<history>90</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>Packets</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>Iptables Stats</name>
</application>
</applications>
<valuemap/>
</item>
<item>
<name>total other</name>
<type>0</type>
<snmp_community>public</snmp_community>
<multiplier>0</multiplier>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>iptstate.other</key>
<delay>60</delay>
<history>90</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>Packets</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>Iptables Stats</name>
</application>
</applications>
<valuemap/>
</item>
<item>
<name>total tcp</name>
<type>0</type>
<snmp_community>public</snmp_community>
<multiplier>0</multiplier>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>iptstate.tcp</key>
<delay>60</delay>
<history>90</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>Packets</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>Iptables Stats</name>
</application>
</applications>
<valuemap/>
</item>
<item>
<name>total udp</name>
<type>0</type>
<snmp_community>public</snmp_community>
<multiplier>0</multiplier>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>iptstate.udp</key>
<delay>60</delay>
<history>90</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>Packets</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>Iptables Stats</name>
</application>
</applications>
<valuemap/>
</item>
</items>
<discovery_rules/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<graphs>
<graph>
<name>FLUX</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>1</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>3</sortorder>
<drawtype>1</drawtype>
<color>00CC00</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template App Iptables Stats</host>
<key>iptstate.udp</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>1</drawtype>
<color>FFFF00</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template App Iptables Stats</host>
<key>iptstate.icmp</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>1</drawtype>
<color>FF3333</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template App Iptables Stats</host>
<key>iptstate.other</key>
</item>
</graph_item>
<graph_item>
<sortorder>4</sortorder>
<drawtype>1</drawtype>
<color>0000CC</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template App Iptables Stats</host>
<key>iptstate.tcp</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>TCP</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>1</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>1</sortorder>
<drawtype>1</drawtype>
<color>0000CC</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template App Iptables Stats</host>
<key>iptstate.tcp.established</key>
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<drawtype>1</drawtype>
<color>FFFF00</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template App Iptables Stats</host>
<key>iptstate.tcp.syn</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>1</drawtype>
<color>009999</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template App Iptables Stats</host>
<key>iptstate.tcp.timewait</key>
</item>
</graph_item>
<graph_item>
<sortorder>4</sortorder>
<drawtype>1</drawtype>
<color>666666</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template App Iptables Stats</host>
<key>iptstate.tcp.close</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>

View File

@ -1,430 +0,0 @@
<?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[,ceilometer,,bin/python.*bin/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[,ceilometer,,bin/python.*bin/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[,ceilometer,,bin/python.*bin/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[,ceilometer,,bin/python.*bin/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[,ceilometer,,bin/python.*bin/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[,ceilometer,,bin/python.*bin/ceilometer-agent-central].last(0)}=0 &amp; {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[,ceilometer,,bin/python.*bin/ceilometer-alarm-evaluator].last(0)}=0 &amp; {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[,ceilometer,,bin/python.*bin/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[,ceilometer,,bin/python.*bin/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[,ceilometer,,bin/python.*bin/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>

View File

@ -1,86 +0,0 @@
<?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[,ceilometer,,bin/python.*bin/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[,ceilometer,,bin/python.*bin/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>

View File

@ -1,86 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2014-12-04T13:12:00Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template App OpenStack Ceph</template>
<name>Template App OpenStack Ceph</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Ceph</name>
</application>
</applications>
<items>
<item>
<name>Ceph health is OK</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>ceph.health</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>3</data_type>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Ceph</name>
</application>
</applications>
<valuemap/>
</item>
</items>
<discovery_rules/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template App OpenStack Ceph:ceph.health.last(0)}=0</expression>
<name>Ceph health is not OK from {HOST.NAME}</name>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<dependencies/>
</trigger>
</triggers>
</zabbix_export>

View File

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2013-02-25T14:34:53Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template App OpenStack Ceph MON</template>
<name>Template App OpenStack Ceph MON</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Ceph MON</name>
</application>
</applications>
<items>
<item>
<name>Number of ceph-mon processes</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>proc.num[,,,/usr/bin/ceph-mon]</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/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Ceph MON</name>
</application>
</applications>
<valuemap/>
</item>
</items>
<discovery_rules/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template App OpenStack Ceph MON:proc.num[,,,/usr/bin/ceph-mon].last(0)}=0</expression>
<name>Ceph MON is not running on {HOSTNAME}</name>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<dependencies/>
</trigger>
</triggers>
</zabbix_export>

View File

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2015-10-26T16:42:00Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template App OpenStack Ceph OSD</template>
<name>Template App OpenStack Ceph OSD</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Ceph OSD</name>
</application>
</applications>
<items>
<item>
<name>Number of running Ceph OSD processes</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>proc.num[,,,/usr/bin/ceph-osd]</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>Ceph OSD</name>
</application>
</applications>
<valuemap/>
</item>
</items>
<discovery_rules/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template App OpenStack Ceph OSD:proc.num[,,,/usr/bin/ceph-osd].last(0)}=0</expression>
<name>Ceph OSD process is not running on {HOST.NAME}</name>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<dependencies/>
</trigger>
</triggers>
</zabbix_export>

View File

@ -1,132 +0,0 @@
<?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[,cinder,,bin/python.*bin/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[,cinder,,bin/python.*bin/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>

View File

@ -1,83 +0,0 @@
<?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>

View File

@ -1,83 +0,0 @@
<?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[,cinder,,bin/python.*bin/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[,cinder,,bin/python.*bin/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>

View File

@ -1,86 +0,0 @@
<?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[,cinder,,bin/python.*bin/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[,cinder,,bin/python.*bin/cinder-volume].last(0)}=0</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>

View File

@ -1,132 +0,0 @@
<?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[,glance,,bin/python.*bin/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[,glance,,bin/python.*bin/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>

View File

@ -1,83 +0,0 @@
<?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>

View File

@ -1,132 +0,0 @@
<?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[,glance,,bin/python.*bin/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[,glance,,bin/python.*bin/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>

View File

@ -1,181 +0,0 @@
<?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_USER},,/usr/sbin/{$APACHE_NAME}]</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_USER},,/usr/sbin/{$APACHE_NAME}].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>

View File

@ -1,230 +0,0 @@
<?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 Main Server process is running</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>proc.num[,keystone,,keystone-main]</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 Admin Server process is running</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>proc.num[,keystone,,keystone-admin]</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[,keystone,,keystone-main].last(0)}=0</expression>
<name>Keystone Main 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 Keystone:proc.num[,keystone,,keystone-admin].last(0)}=0</expression>
<name>Keystone Admin 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>

View File

@ -1,132 +0,0 @@
<?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>

View File

@ -1,83 +0,0 @@
<?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>

View File

@ -1,83 +0,0 @@
<?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>

View File

@ -1,86 +0,0 @@
<?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[,neutron,,bin/python.*bin/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[,neutron,,bin/python.*bin/neutron-dhcp-agent].last(0)}=0</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>

View File

@ -1,86 +0,0 @@
<?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[,neutron,,bin/python.*bin/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[,neutron,,bin/python.*bin/neutron-l3-agent].last(0)}=0</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>

View File

@ -1,83 +0,0 @@
<?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[,neutron,,bin/python.*bin/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[,neutron,,bin/python.*bin/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>

View File

@ -1,83 +0,0 @@
<?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[,neutron,,bin/python.*bin/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[,neutron,,bin/python.*bin/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>

View File

@ -1,138 +0,0 @@
<?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[,neutron,,bin/python.*bin/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[,neutron,,bin/python.*bin/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>

View File

@ -1,83 +0,0 @@
<?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[,nova,,bin/python.*bin/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[,nova,,bin/python.*bin/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>

View File

@ -1,83 +0,0 @@
<?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>

View File

@ -1,83 +0,0 @@
<?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>

View File

@ -1,83 +0,0 @@
<?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>

View File

@ -1,83 +0,0 @@
<?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>

View File

@ -1,83 +0,0 @@
<?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[,nova,,bin/python.*bin/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[,nova,,bin/python.*bin/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>

View File

@ -1,83 +0,0 @@
<?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[,nova,,bin/python.*bin/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[,nova,,bin/python.*bin/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>

View File

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2015-10-22T13:53:19Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template App OpenStack Nova Conductor</template>
<name>Template App OpenStack Nova Conductor</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Nova Conductor</name>
</application>
</applications>
<items>
<item>
<name>Nova Conductor Server process is running</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>proc.num[,nova,,bin/python.*bin/nova-conductor]</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 Conductor</name>
</application>
</applications>
<valuemap/>
</item>
</items>
<discovery_rules/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template App OpenStack Nova Conductor:proc.num[,nova,,bin/python.*bin/nova-conductor].last(0)}=0</expression>
<name>Nova Conductor process is not running on {HOST.NAME}</name>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<dependencies/>
</trigger>
</triggers>
</zabbix_export>

View File

@ -1,83 +0,0 @@
<?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[,nova,,bin/python.*bin/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[,nova,,bin/python.*bin/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>

View File

@ -1,83 +0,0 @@
<?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[,nova,,bin/python.*bin/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[,nova,,bin/python.*bin/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>

View File

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2015-10-22T13:53:19Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template App OpenStack Nova novncproxy</template>
<name>Template App OpenStack Nova novncproxy</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Nova novncproxy</name>
</application>
</applications>
<items>
<item>
<name>Nova novncproxy Server process is running</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>proc.num[,nova,,bin/python.*bin/nova-novncproxy]</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 novncproxy</name>
</application>
</applications>
<valuemap/>
</item>
</items>
<discovery_rules/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template App OpenStack Nova novncproxy:proc.num[,nova,,bin/python.*bin/nova-novncproxy].last(0)}=0</expression>
<name>Nova novncproxy process is not running on {HOST.NAME}</name>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<dependencies/>
</trigger>
</triggers>
</zabbix_export>

View File

@ -1,83 +0,0 @@
<?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[,nova,,bin/python.*bin/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[,nova,,bin/python.*bin/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>

View File

@ -1,132 +0,0 @@
<?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>

View File

@ -1,494 +0,0 @@
<?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[,,,epmd -(daemon|systemd)]</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 BEAM 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:rabbitmq.unmirror.queues.last(0)}&gt;0</expression>
<name>RabbitMQ queues are not mirrored</name>
<url/>
<status>0</status>
<priority>3</priority>
<description/>
<type>0</type>
<dependencies/>
</trigger>
<trigger>
<expression>{Template App OpenStack HA RabbitMQ:rabbitmq.missing.nodes.last(0)}&gt;0</expression>
<name>RabbitMQ nodes missing from cluster</name>
<url/>
<status>0</status>
<priority>3</priority>
<description/>
<type>0</type>
<dependencies/>
</trigger>
<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[,,,epmd -(daemon|systemd)].last(0)}=0</expression>
<name>RabbitMQ EPMD 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 BEAM 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>

View File

@ -1,181 +0,0 @@
<?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[,swift,,bin/python.*bin/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[,swift,,bin/python.*bin/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[,swift,,bin/python.*bin/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[,swift,,bin/python.*bin/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>

View File

@ -1,181 +0,0 @@
<?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[,swift,,bin/python.*bin/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>0</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[,swift,,bin/python.*bin/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[,swift,,bin/python.*bin/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[,swift,,bin/python.*bin/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>

View File

@ -1,181 +0,0 @@
<?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[,swift,,bin/python.*bin/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[,swift,,bin/python.*bin/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[,swift,,bin/python.*bin/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[,swift,,bin/python.*bin/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>

View File

@ -1,132 +0,0 @@
<?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[,swift,,bin/python.*bin/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[,swift,,bin/python.*bin/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>

View File

@ -1,183 +0,0 @@
<?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)}&gt;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)}&gt;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>

View File

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2014-12-11T12:21:22Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template NTP binding</template>
<name>Template NTP binding</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Core Services</name>
</application>
</applications>
<items>
<item>
<name>NTP Server is listening on port</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>net.udp.listen[123]</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>Core Services</name>
</application>
</applications>
<valuemap/>
</item>
</items>
<discovery_rules />
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template NTP binding:net.udp.listen[123].last(0)}=0</expression>
<name>NTP Server service is down on {HOST.NAME}</name>
<url/>
<status>0</status>
<priority>2</priority>
<description/>
<type>0</type>
<dependencies/>
</trigger>
</triggers>
<graphs/>
</zabbix_export>

View File

@ -1,87 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2014-12-11T12:21:22Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template OS Controller</template>
<name>Template OS Controller</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Core Services</name>
</application>
</applications>
<items>
<item>
<name>NTP Server is listening on port</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>netns.udp.listen[vrouter,123]</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>Core Services</name>
</application>
</applications>
<valuemap/>
</item>
</items>
<discovery_rules />
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template OS Controller:netns.udp.listen[vrouter,123].last(0)}=0</expression>
<name>NTP Server service is down on {HOST.NAME}</name>
<url/>
<status>0</status>
<priority>2</priority>
<description/>
<type>0</type>
<dependencies/>
</trigger>
</triggers>
<graphs/>
</zabbix_export>

View File

@ -1,135 +0,0 @@
#!/usr/bin/python
# Copyright 2015 Mirantis, Inc.
#
# 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.
import json
import logging
import re
import subprocess
import time
import traceback
ERROR_RE = "[Ff]ailed: (\d+);"
OK_RE = "[Pp]rocessed: (\d+);"
class ZabbixSender(object):
""" Base class for writing Python plugins.
"""
def __init__(self, zbx_server_ip, zbx_hostname, zbx_server_port=10051,
timeout=5, debug=False, log_file='/var/log/zabbix/sender.log'):
self.timeout = timeout
self.debug = debug
if debug:
level = logging.DEBUG
else:
level = logging.INFO
logging.basicConfig(filename=log_file, level=level)
self.logger = logging
self.server_port = zbx_server_port
self.server_ip = zbx_server_ip
self.hostname = zbx_hostname
def execute(self, cmd, shell=True, cwd=None, outputs_on_error=False):
"""
Executes a program with arguments.
Args:
cmd: a list of program arguments where the first item is the
program name.
shell: whether to use the shell as the program to execute (default=
True).
cwd: the directory to change to before running the program
(default=None).
Returns:
A tuple containing the standard output and error strings if the
program execution has been successful.
("foobar\n", "")
None if the command couldn't be executed or returned a non-zero
status code unless outputs_on_error is True
"""
start_time = time.time()
try:
proc = subprocess.Popen(
cmd,
cwd=cwd,
shell=shell,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
(stdout, stderr) = proc.communicate()
stdout = stdout.rstrip('\n')
except Exception as e:
self.logger.error("Cannot execute command '%s': %s : %s" %
(cmd, str(e), traceback.format_exc()))
return None
returncode = proc.returncode
if returncode != 0:
self.logger.error("Command '%s' failed (return code %d): %s %s" %
(cmd, returncode, stderr, stdout))
if not outputs_on_error:
return None
elapsedtime = time.time() - start_time
if self.debug:
self.logger.info("Command '%s' returned %s in %0.3fs" %
(cmd, returncode, elapsedtime))
if not stdout and self.debug:
self.logger.info("Command '%s' returned no output!", cmd)
return (stdout, stderr)
def execute_to_json(self, *args, **kwargs):
"""
Executes a program and decodes the output as a JSON string.
See execute().
Returns:
A Python object or None if the execution of the program failed.
"""
outputs = self.execute(*args, **kwargs)
if outputs:
return json.loads(outputs[0])
return
def _response_has_error(self, response):
err = re.findall(ERROR_RE, response)
ok = re.findall(OK_RE, response)
if (len(err) > 0 and err[0] != '0') or (len(ok) > 0 and int(ok[0]) == 0):
return True
return False
def zabbix_sender(self, key, value):
""" Use zabbix_sender to send metrics to zabbix server.
Return True if successfully processed else False
"""
#TODO(scroiset): implement zabbix_sender in pure python to avoid forking process
cmd = "zabbix_sender -z {server_ip} -p {server_port} -s {hostname} "\
"-k {key} -o {value}".format(
server_ip=self.server_ip, hostname=self.hostname,
server_port= self.server_port, key = key, value= value
)
resp = self.execute(cmd, outputs_on_error=True)
return self._response_has_error(resp[0])

View File

@ -1,266 +0,0 @@
#!/usr/bin/python
# Copyright 2015 Mirantis, Inc.
#
# 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.
import base
import socket
import sys
class CephMonPlugin(base.ZabbixSender):
""" Collect states and information about ceph cluster and placement groups.
"""
def itermetrics_status(self):
status = self.execute_to_json('ceph -s --format json')
if not status:
return
if 'mons' in status['monmap']:
monitor_nb = len(status['monmap']['mons'])
else:
monitor_nb = 0
yield {
'type': 'monitor_count',
'value': monitor_nb
}
yield {
'type': 'quorum_count',
'value': len(status.get('quorum', []))
}
pgmap = status['pgmap']
yield {
'type': 'pg_bytes_used',
'value': pgmap['bytes_used'],
}
yield {
'type': 'pg_bytes_free',
'value': pgmap['bytes_avail'],
}
yield {
'type': 'pg_bytes_total',
'value': pgmap['bytes_total'],
}
yield {
'type': 'pg_data_bytes',
'value': pgmap['data_bytes']
}
yield {
'type': 'pg_count',
'value': pgmap['num_pgs']
}
# see: http://ceph.com/docs/master/rados/operations/pg-states/
pg_states = {
'creating': 0,
'active': 0,
'clean': 0,
'down': 0,
'replay': 0,
'splitting': 0,
'scrubbing': 0,
'deep': 0,
'degraded': 0,
'inconsistent': 0,
'peering': 0,
'repair': 0,
'recovering': 0,
'backfill': 0,
'waitbackfill': 0,
'backfilltoofull': 0,
'incomplete': 0,
'stale': 0,
'remapped': 0,
'undersized': 0,
'peered': 0,
}
for state in pgmap['pgs_by_state']:
if '+' in state['state_name']:
states = state['state_name'].split('+')
else:
states = [state['state_name']]
if not states:
self.logger.error("Unknown state {}".format(state['state_name']))
continue
for s in states:
if s in pg_states:
pg_states[s] += state['count']
else:
self.logger.warning("PG state not known {}".format(s))
for n, num in pg_states.iteritems():
yield {
'type': 'pg_state_count_{}'.format(n),
'value': num
}
def itermetrics_df(self):
df = self.execute_to_json('ceph df --format json')
if not df:
return
objects_count = 0
for pool in df['pools']:
objects_count += pool['stats'].get('objects', 0)
# TODO(scroiset): add low level discovery for pool names
#for m in ('bytes_used', 'max_avail', 'objects'):
# yield {
# 'type': 'pool_%s' % m,
# 'type_instance': pool['name'],
# 'value': pool['stats'].get(m, 0),
# }
yield {
'type': 'objects_count',
'value': objects_count
}
yield {
'type': 'pool_count',
'value': len(df['pools'])
}
if 'total_bytes' in df['stats']:
# compatibility with 0.84+
total = df['stats']['total_bytes']
used = df['stats']['total_used_bytes']
avail = df['stats']['total_avail_bytes']
else:
# compatibility with <0.84
total = df['stats']['total_space'] * 1024
used = df['stats']['total_used'] * 1024
avail = df['stats']['total_avail'] * 1024
yield {
'type': 'pool_total_bytes_used',
'value': used
}
yield {
'type': 'pool_total_bytes_free',
'value': avail
}
yield {
'type': 'pool_total_bytes_total',
'value': total
}
yield {
'type': 'pool_total_percent_used',
'value': 100.0 * used / total
}
yield {
'type': 'pool_total_percent_free',
'value': 100.0 * avail / total
}
# TODO(scroiset): add low level discovery for pool names
#def itermetrics_pool(self):
# stats = self.execute_to_json('ceph osd pool stats --format json')
# if not stats:
# return
# for pool in stats:
# client_io_rate = pool.get('client_io_rate', {})
# yield {
# 'type': 'pool_bytes_rate',
# 'type_instance': pool['pool_name'],
# 'value': [client_io_rate.get('read_bytes_sec', 0),
# client_io_rate.get('write_bytes_sec', 0)]
# }
# yield {
# 'type': 'pool_ops_rate',
# 'type_instance': pool['pool_name'],
# 'value': client_io_rate.get('op_per_sec', 0)
# }
def itermetrics_osd(self):
osd = self.execute_to_json('ceph osd dump --format json')
if not osd:
return
# TODO(scroiset): add low level discovery for pool names
#for pool in osd['pools']:
# for name in ('size', 'pg_num', 'pg_placement_num'):
# yield {
# 'type': 'pool_%s' % name,
# 'type_instance': pool['pool_name'],
# 'value': pool[name]
# }
_up, _down, _in, _out = (0, 0, 0, 0)
for osd in osd['osds']:
if osd['up'] == 1:
_up += 1
else:
_down += 1
if osd['in'] == 1:
_in += 1
else:
_out += 1
yield {
'type': 'osd_count_up',
'value': _up
}
yield {
'type': 'osd_count_down',
'value': _down
}
yield {
'type': 'osd_count_in',
'value': _in
}
yield {
'type': 'osd_count_out',
'value': _out
}
def send(self):
has_error = False
for m in plugin.itermetrics_status():
has_error = self.zabbix_sender(m['type'], m['value'])
for m in plugin.itermetrics_df():
has_error = self.zabbix_sender(m['type'], m['value'])
for m in plugin.itermetrics_osd():
has_error = self.zabbix_sender(m['type'], m['value'])
return has_error
# print and return codes:
# 0: no error
# 1: failed to send some/all metrics
# 2: exception occured while retrieving metrics
# 3: missing arguments
if not len(sys.argv) == 3:
# missing arguments!
print 3
sys.exit(3)
hostname = sys.argv[1]
server_ip = sys.argv[2]
plugin = CephMonPlugin(zbx_server_ip=server_ip, zbx_hostname=hostname)
try:
has_error = plugin.send()
if has_error:
print 1
sys.exit(1)
else:
print 0
except Exception as e:
plugin.logger.error(e)
print 2
sys.exit(2)

View File

@ -1,22 +0,0 @@
#!/bin/sh
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
sudo ceph health | grep -q HEALTH_OK;
if [ $? -eq 0 ]; then
echo 1
else
echo 0
fi

View File

@ -1,114 +0,0 @@
#!/usr/bin/python
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
import urllib2
import sys
import simplejson as json
import ConfigParser
from zabbix_checks_logger import get_logger
CONF_FILE = '/etc/zabbix/check_api.conf'
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:
return 1
def get_token(self):
data = json.dumps({
"auth":
{
'tenantName': self.tenant_name,
'passwordCredentials':
{
'username': self.username,
'password': self.password
}
}
})
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)
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()

View File

@ -1,134 +0,0 @@
#!/usr/bin/python
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
import urllib2
import simplejson as json
import sys
import base64
import ConfigParser
from zabbix_checks_logger import get_logger
CONF_FILE = '/etc/zabbix/check_rabbit.conf'
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 ('consumers' in queue and
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('nodes')
if (len(response) < 2):
self.logger.critical(0)
return
response = self.get_http('queues')
unmirror_queues = 0
for queue in response:
if ('policy' in queue and
queue['policy'] == 'ha-all'):
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()

View File

@ -1,27 +0,0 @@
#!/bin/bash
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
NODES=$(/usr/bin/sudo /usr/sbin/crm_resource --locate --quiet --resource $1)
HOSTNAME=$(/bin/hostname)
for NODE in $NODES
do
if [ "$NODE" == "$HOSTNAME" ]; then
echo 1
exit
fi
done
echo 0

View File

@ -1,100 +0,0 @@
#!/bin/bash
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
# This script is a wrapper to HAproxy statistics which are in a CSV format.
# Output format is compatible with Zabbix.
# It can be used for HAproxy frontends and/or backends discovery and for
# gathering statistics about particular frontend,backend or server.
case $1 in
"-f")
OPER='discovery'
FESQ='grep FRONTEND'
;;
"-b")
OPER='discovery'
FESQ='grep BACKEND'
;;
"-s")
OPER='discovery'
FESQ='grep -v FRONTEND\|BACKEND\|^$\|^#'
;;
"-v")
OPER='value'
HAPX=$2
HASV=$3
ITEM=$4
FESQ="grep ^${HAPX},${HASV},"
;;
*)
echo "Wrong arguments supplied, exiting...
Usage:
$0 -f|-b|-s|-v <group>.<server>.<item>
-f frontend discovery
-b backend discovery
-s server discovery
-v <group>.<server>.<item> get particular item value, for example:
-v zabbix-agent.node-1.smax
will print smax item value for server node-1 in group zabbix-agent
-v zabbix-agent.FRONTEND.smax
will print smax item value for FRONTEND part of zabbix-agent group
-v zabbix-agent.BACKEND.smax
will print smax item value for BACKEND part of zabbix-agent group
"
exit 1
esac
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

View File

@ -1,31 +0,0 @@
#!/bin/bash
PROTO=$1
NS=$2
PORT=$3
IP=$4
if test -z "$NS"; then
echo 0
exit 1
fi
if test -z "$PROTO" -o -z "$PORT"; then
echo 0
exit 1
fi
if [ -n "$IP" ]; then
ADDRESS="$PROTO""@""$IP:$PORT"
else
ADDRESS="$PROTO"":$PORT"
fi
num=$(/bin/ip netns exec "$NS" /usr/bin/lsof -i"$ADDRESS" 2>/dev/null|wc -l)
if [ "$num" -gt 0 ]; then
echo 1
else
echo 0
fi
exit 0

View File

@ -1,57 +0,0 @@
#!/usr/bin/python
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
import ConfigParser
import sys
import sqlalchemy
from zabbix_checks_logger import get_logger
CONF_FILE = '/etc/zabbix/check_db.conf'
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))

View File

@ -1,31 +0,0 @@
#!/bin/bash
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
#Zabbix vfs.dev.discovery implementation
echo -e "{\n\t\"data\" : ["
# we have to end each line with a comma except the last one (JSON SIC!)
# so we have to manage the line separator manually in awk :/
egrep -v 'major|^$|dm-|[0-9]$' /proc/partitions | awk '
BEGIN{ORS="";n=0}
{
if (n++) print ",\n";
print "\t{ \"{#DEVNAME}\" : \""$4"\" }"
}
'
echo -e "\n\t]\n}"

View File

@ -1,32 +0,0 @@
#!/bin/bash
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
#Zabbix vfs.mdadm.discovery implementation
echo -e "{\n\t\"data\" : ["
# we have to end each line with a comma except the last one (JSON SIC!)
# so we have to manage the line separator manually in awk :/
awk -F: '
BEGIN{ORS="";n=0}
$1 ~ /^md.?/ {
gsub(" *$","",$1);
if (n++) print ",\n";
print "\t{ \"{#MDEVICE}\" : \""$1"\" }"
}
' /proc/mdstat
echo -e "\n\t]\n}"

View File

@ -1,32 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
import sys
import logging
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

View File

@ -1,2 +0,0 @@
dbc_install='false'
dbc_upgrade='false'

View File

@ -1,273 +0,0 @@
#!/bin/sh
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
# Zabbix server OCF script
#
# Description: Manages Zabbix server process as a HA resource
#
# Authors: Mirantis inc.
#
# Support: openstack@lists.launchpad.net
#
# 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
# OCF_RESKEY_namespace
#######################################################################
# 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_namespace_default="zabbix"
: ${OCF_RESKEY_binary=${OCF_RESKEY_binary_default}}
: ${OCF_RESKEY_pid=${OCF_RESKEY_pid_default}}
: ${OCF_RESKEY_namespace=${OCF_RESKEY_namespace_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>
<parameter name="namespace" unique="0" required="0">
<longdesc lang="en">
The namespace in which this process should be run
</longdesc>
<shortdesc lang="en">zabbix-server namespace</shortdesc>
<content type="string" default="${OCF_RESKEY_namespace_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
ip netns exec ${OCF_RESKEY_namespace} ${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

View File

@ -1,6 +0,0 @@
Defaults:zabbix !requiretty
zabbix ALL = NOPASSWD: /usr/bin/socat /var/lib/haproxy/stats stdio
zabbix ALL = NOPASSWD: /usr/sbin/iptstate
zabbix ALL = NOPASSWD: /usr/sbin/crm_resource --locate --quiet --resource *
zabbix ALL = NOPASSWD: /usr/bin/ceph health
zabbix ALL = NOPASSWD: /etc/zabbix/scripts/netns.listen.sh

View File

@ -1,28 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
# check_zabbix_pacemaker.rb
Facter.add('check_zabbix_pacemaker') do
setcode do
crm_cmd = Facter::Util::Resolution.exec('/bin/which crm')
if crm_cmd.nil? then
''
else
crm_res = Facter::Util::Resolution.exec(crm_cmd + ' status | grep zabbix' )
end
end
end

View File

@ -1,36 +0,0 @@
#
# Copyright 2017 Mirantis, Inc.
#
# 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.
#
# check_zabbix_version.rb
Facter.add("check_zabbix_version") do
setcode do
qcmd = "/usr/bin/apt-cache"
if FileTest.exists?(qcmd) then
q = qcmd + ' policy zabbix-agent 2>/dev/null'
filter = "egrep 'Installed:|Candidate:' | grep -v 'Installed: (none)' | head -1"
parse = 'cut -d " " -f4 | cut -d: -f2 | cut -d. -f1,2'
res = Facter::Util::Resolution.exec(q + '|' + filter + '|' + parse)
if res.nil? then
'100.0'
else
res
end
else
'100.0'
end
end
end

View File

@ -1,39 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
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

View File

@ -1,30 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
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

View File

@ -1,130 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
require 'puppet'
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)
http.use_ssl = uri.scheme == 'https'
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
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)
Puppet::debug("request = #{request.body}")
Puppet::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 - 1
Puppet.warning("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)
Puppet::debug("gethost #{name}")
api_request(api,
{:method => "host.get",
:params => {:filter => {:name => [name]}}})
end
def self.get_hostgroup(api, name)
Puppet::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

View File

@ -1,116 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
$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},
:templateLinkage => {:createMissing => true},
:templates => {:createMissing => true,
:updateExisting => true},
:templateScreens => {:createMissing => true,
:updateExisting => true},
:triggers => {:createMissing => true,
:updateExisting => true}}}})
xml_file_checksum
end
end

View File

@ -1,67 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
$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

View File

@ -1,40 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
$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

View File

@ -1,66 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
$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

View File

@ -1,131 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
$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

View File

@ -1,74 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
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

View File

@ -1,123 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
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?
if value.kind_of?(String) then
value = [value]
end
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.'
validate do |value|
raise(Puppet::Error, 'Invalid value') unless value.kind_of?(String)
end
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

View File

@ -1,46 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
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

View File

@ -1,59 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
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

View File

@ -1,79 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
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

View File

@ -1,112 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
class plugin_zabbix::agent(
$api_hash = undef,
) {
include plugin_zabbix::params
$fuel_version = 0 + hiera('fuel_version')
if $fuel_version < 8.0 {
$cur_node_roles = node_roles(hiera_array('nodes'), hiera('uid'))
$is_controller = member($cur_node_roles, 'controller') or
member($cur_node_roles, 'primary-controller')
} else {
$is_controller = roles_include(['controller', 'primary-controller'])
}
$zabbix_agent_port = $plugin_zabbix::params::zabbix_ports['backend_agent'] ? {
unset=>$plugin_zabbix::params::zabbix_ports['agent'],
default=>$plugin_zabbix::params::zabbix_ports['backend_agent'],
}
firewall { '997 zabbix agent':
port => $zabbix_agent_port,
proto => 'tcp',
action => 'accept'
}
package { $plugin_zabbix::params::agent_pkg:
ensure => present
} ->
package { $plugin_zabbix::params::sender_pkg:
ensure => present
} ->
package { $plugin_zabbix::params::get_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 $is_controller {
$groups = union($plugin_zabbix::params::host_groups_base, $plugin_zabbix::params::host_groups_controller)
} elsif defined_in_state(Class['nova::compute']) {
$groups = union($plugin_zabbix::params::host_groups_base, $plugin_zabbix::params::host_groups_compute)
} else {
$groups = $plugin_zabbix::params::host_groups_base
}
if defined_in_state(Class['ceph::osds']){
$ceph_osd_group = $plugin_zabbix::params::host_groups_ceph_osd
$ceph_osd_used = true
} else {
$ceph_osd_group = []
$ceph_osd_used = false
}
if defined_in_state(Class['ceph::mon']){
$ceph_mon_group = $plugin_zabbix::params::host_groups_ceph_mon
$ceph_mon_used = true
} else {
$ceph_mon_group = []
$ceph_mon_used = false
}
if $ceph_osd_used or $ceph_mon_used {
$ceph_cluster_group = $plugin_zabbix::params::host_groups_ceph_cluster
} else {
$ceph_cluster_group = []
}
if ! empty($ceph_cluster_group){
$all_groups = parseyaml(
inline_template('<%= @groups.concat(@ceph_mon_group).concat(@ceph_osd_group).concat(@ceph_cluster_group).to_yaml %>')
)
} else {
$all_groups = $groups
}
plugin_zabbix_host { $plugin_zabbix::params::host_name:
host => $plugin_zabbix::params::host_name,
ip => $plugin_zabbix::params::host_ip,
groups => $all_groups,
api => $api_hash
}
}

View File

@ -1,58 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
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'),
}
if ! defined(Package['sudo']) {
package { 'sudo':
ensure => installed
}
}
file { 'zabbix_no_requiretty':
path => '/etc/sudoers.d/zabbix',
mode => '0440',
owner => root,
group => root,
source => 'puppet:///modules/plugin_zabbix/zabbix-sudo',
require => Package['sudo'],
}
}

View File

@ -1,47 +0,0 @@
#
# Copyright 2015 Mirantis, Inc.
#
# 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.
#
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]
}
}

Some files were not shown because too many files have changed in this diff Show More