Compare commits

...

253 commits

Author SHA1 Message Date
Jan Wagner 701ad1159a check_nwc_health: Update to 10.3 2022-10-20 12:17:41 +02:00
Jan Wagner c9d0bd759b Prepare release 2022-05-02 14:08:07 +02:00
Jan Wagner f20f327eec Auto update of debian/cobtrol 2022-05-02 14:05:48 +02:00
waja db2b665887
Merge pull request #39 from waja/38-check_smart-update-to-6-13-0
check_smart: update to 6.13.0
2022-04-27 16:17:07 +02:00
Jan Wagner caf760b421 check_smart: Update to 6.13.0 2022-04-27 16:07:05 +02:00
Jan Wagner 2e59122227 check_nextcloud: Update watch and version information in control file 2022-04-27 16:05:08 +02:00
Jan Wagner bd8a94bf65 check_nextcloud: adjust d/p/check_nextcloud/shebang 2022-04-26 16:51:46 +02:00
Jan Wagner 7c9978122a check_nextcloud: Update to 2.0 2022-04-26 16:48:45 +02:00
Jan Wagner 236700d78f Prepare release 2022-03-22 19:53:59 +01:00
Jan Wagner a1fcd7829d Auto update of debian/README.Debian.plugins 2022-03-22 19:52:24 +01:00
Jan Wagner 577b3149d7 Auto update of debian/copyright 2022-03-22 19:51:58 +01:00
Jan Wagner 23dc31c8ca Auto update of debian/control 2022-03-22 19:51:36 +01:00
Jan Wagner cd2b375667 check_nwc_health: Update to 10.1.0.1 2022-03-22 18:28:59 +01:00
Jan Wagner c8ae2e0a3d Adding ethMon plugin 2022-03-22 18:28:59 +01:00
waja e384cab2a4
Merge pull request #35 from waja/dependabot-github_actions-actions-checkout-3 2022-03-02 08:02:56 +01:00
dependabot[bot] 07aecaf763
build(deps): bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-02 04:25:02 +00:00
Jan Wagner ed62d581b6 check_nwc_health: Also add libjson-xs-perl as new recommend 2022-02-21 09:51:13 +01:00
waja 139b2d6563
Merge pull request #34 from waja/bugfix/33-libjson-perl-as-recommend-missing
libjson-perl and libfile-slurp-perl as recommend missing
2022-02-20 14:27:59 +01:00
Jan Wagner 12e3504d8a check_nwc_health: Adding libjson-perl and libfile-slurp-perl as recommend 2022-02-20 14:22:42 +01:00
waja 529f82cccd
Merge pull request #32 from waja/bugfix/31-check_sieve-needs-disabled-epn
check_sieve: needs disabled epn
2022-02-20 14:15:05 +01:00
Jan Wagner b8eb749871 check_sieve: disable epn 2022-02-20 14:05:58 +01:00
Jan Wagner a967689263 New changelog 2022-02-20 14:03:33 +01:00
Jan Wagner b0924750e5 Prepare release 2022-02-20 12:47:51 +01:00
Jan Wagner c25f3f271d Auto update of debian/README.Debian.plugins 2022-02-20 12:45:00 +01:00
Jan Wagner 6b2b9a340b Auto update of debian/cobtrol 2022-02-20 12:43:29 +01:00
Jan Wagner bdb03d8a4b Auto update of debian/copyright 2022-02-20 12:43:10 +01:00
Jan Wagner b5bb786dc1 check_vgfree: Fix watch configuration and version in d/control 2022-02-20 11:43:47 +01:00
Jan Wagner 6bebf057c7 check_redis: Fix regular expression for watch 2022-02-20 11:41:08 +01:00
waja 8ccc6c1f15
Merge pull request #29 from waja/feature/28-check_nwc_health-Update-to-10-1
check_nwc_health: Update to 10.1
2022-02-20 10:47:24 +01:00
waja 4b69a0077a
Merge pull request #27 from waja/feature/26-check_esxi_hardware-Update-to-20210809
check_esxi_hardware: Update to 20210809
2022-02-20 10:40:24 +01:00
Jan Wagner 5e1abd1674 check_nwc_health: Update to 10.1 2022-02-20 10:39:00 +01:00
Jan Wagner 9dc411381a check_esxi_hardware: Update to 20210809 2022-02-20 10:32:30 +01:00
Jan Wagner 7661b7ba44 check_esxi_hardware: USe a more exact watch URL 2022-02-20 10:30:20 +01:00
waja 16e37413ed
Merge pull request #25 from waja/feature/lintian-brush
lintian brush
2022-02-20 10:25:55 +01:00
Jan Wagner fe5636a618 Trim trailing whitespace.
Changes-By: lintian-brush
Fixes: lintian: trailing-whitespace
See-also: https://lintian.debian.org/tags/trailing-whitespace.html
2022-02-19 22:41:25 +00:00
Jan Wagner 023a659532 Use canonical URL in Vcs-Git.
Changes-By: lintian-brush
Fixes: lintian: vcs-field-not-canonical
See-also: https://lintian.debian.org/tags/vcs-field-not-canonical.html
2022-02-19 22:32:05 +00:00
Jan Wagner 6ac31e169c Use secure URI in Vcs control headers: Vcs-Browser, Vcs-Git.
Changes-By: lintian-brush
Fixes: lintian: vcs-field-uses-insecure-uri
See-also: https://lintian.debian.org/tags/vcs-field-uses-insecure-uri.html
2022-02-19 22:32:04 +00:00
Jan Wagner 8ce56194cc Update renamed lintian tag names in lintian overrides.
Changes-By: lintian-brush
Fixes: lintian: renamed-tag
See-also: https://lintian.debian.org/tags/renamed-tag.html
2022-02-19 22:32:02 +00:00
Jan Wagner 91b1867309 Change priority extra to priority optional.
Changes-By: lintian-brush
Fixes: lintian: priority-extra-is-replaced-by-priority-optional
See-also: https://lintian.debian.org/tags/priority-extra-is-replaced-by-priority-optional.html
2022-02-19 22:32:01 +00:00
Jan Wagner 8e5d8ec82c Trim trailing whitespace.
Changes-By: lintian-brush
Fixes: lintian: trailing-whitespace
See-also: https://lintian.debian.org/tags/trailing-whitespace.html
2022-02-19 22:32:00 +00:00
waja 179f643a9c
Merge pull request #24 from waja/feature/14-Add-check_es_system
Add check_es_system
2022-02-19 22:02:57 +01:00
Jan Wagner a2422ebd49 check_es_system: Adding new plugin 2022-02-19 22:00:20 +01:00
waja b91fc10fa0
Merge pull request #23 from waja/feature/15-Add-check_vg_size-or-check_vgfree
Add check_vgfree
2022-02-19 20:21:10 +01:00
Jan Wagner 1effd2422a check_vgfree: Adding new plugin 2022-02-19 20:12:22 +01:00
waja 71a9a9e8ad
Merge pull request #22 from waja/feature/16-Add-check_wireguard
Add check_wireguard
2022-02-19 19:14:44 +01:00
Jan Wagner 147a2a6896 check_wireguard: Adding new plugin 2022-02-19 19:12:36 +01:00
Jan Wagner 46c6a102b8 Version v1.5 is way to old 2022-02-19 18:56:13 +01:00
Jan Wagner c874d999e0 check_ipsec: Remove from package 2022-02-19 18:37:24 +01:00
waja 092c3a5435
Merge pull request #20 from waja/feature/5-undefined
Update check_smart
2022-02-19 18:29:59 +01:00
Jan Wagner 8aaac360a1 check_smart: Update to new upstream 2022-02-19 18:25:56 +01:00
Jan Wagner 721aa2c852 Fix version 2022-02-19 18:16:32 +01:00
waja 391557f1b2
Merge pull request #19 from waja/feature/13-Add-check_oom-killer
Add check_oom
2022-02-19 18:12:47 +01:00
Jan Wagner c175581409 Adding check_oom 2022-02-19 17:30:37 +01:00
Jan Wagner bbf8984c1b Better not to autoclose PR 2022-02-19 17:00:28 +01:00
Jan Wagner 66b38cf650 use dedicated version for create-issue-branch 2022-02-19 16:59:14 +01:00
Jan Wagner f476a6f37e Switching to auto mode and close issues with PR 2022-02-19 16:57:08 +01:00
waja 306c791445
Merge pull request #18 from waja/issue_branches
Adding automated issue branches
2022-02-19 16:43:14 +01:00
Jan Wagner b487452577 Adding automated issue branches 2022-02-19 16:40:34 +01:00
waja f41f36154a
Merge pull request #12 from waja/dependabot-github_actions-skx-github-action-publish-binaries-release-2.0
build(deps): bump skx/github-action-publish-binaries from release-0.15 to 2.0
2021-09-28 15:06:59 +02:00
dependabot[bot] 56d37b5b5d
build(deps): bump skx/github-action-publish-binaries
Bumps [skx/github-action-publish-binaries](https://github.com/skx/github-action-publish-binaries) from release-0.15 to 2.0. This release includes the previously tagged commit.
- [Release notes](https://github.com/skx/github-action-publish-binaries/releases)
- [Commits](https://github.com/skx/github-action-publish-binaries/compare/release-0.15...release-2.0)

---
updated-dependencies:
- dependency-name: skx/github-action-publish-binaries
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-27 04:21:41 +00:00
Jan Wagner 82aeb14a25 New changelog 2021-07-21 17:02:48 +02:00
Jan Wagner 17b322f443 Prepare release 2021-07-21 16:02:42 +02:00
Jan Wagner 3c03495e47 Auto update of debian/control 2021-07-21 16:01:04 +02:00
Jan Wagner 8ba8ea8f0d ci: pin action versions 2021-07-21 15:37:44 +02:00
Jan Wagner 0ac7e5c757 check_nwc_health: Update to 8.4 2021-07-21 15:11:26 +02:00
Jan Wagner bfd168f5cd Drop d/patches/check_qnap_health/fix_strPart 2021-07-21 15:11:10 +02:00
Jan Wagner ab5f0b8c7f check_qnap_health: Update to 1.01 2021-07-21 15:03:06 +02:00
Jan Wagner 088dc0d337 Auto update of debian/control 2021-07-21 14:57:25 +02:00
Jan Wagner 9df31e7682 Adding check_keepalived 2021-07-21 13:11:36 +02:00
Jan Wagner c9eab33a18 Adding Dependabot config 2021-07-16 23:07:57 +02:00
Jan Wagner 6660a85f5b d/source/options: Adding .github to diff ignore 2021-02-05 12:36:11 +01:00
Jan Wagner 92f865099d d/control: Bump Standards-Version to 4.5.1, no changes needed 2020-12-29 18:57:56 +01:00
Jan Wagner 0f776a8b12 Enhancing ci builds 2020-12-27 22:55:02 +01:00
Jan Wagner ba9e7aa793 Merge branch 'github_ci_release' into development 2020-11-07 21:14:37 +01:00
waja 0430bdcd47
Merge pull request #7 from waja/github_ci_release
GitHub ci release
2020-11-07 21:07:43 +01:00
Jan Wagner 9e126706cc Adding initial release action 2020-11-06 18:23:00 +01:00
Jan Wagner 9dd1253858 Adding initial release action 2020-11-06 14:01:55 +01:00
Jan Wagner e2d7788c6e Rename job 2020-11-06 00:35:43 +01:00
Jan Wagner 8f7842acf9 Rename yaml file 2020-11-06 00:35:04 +01:00
Jan Wagner 8e92d0691c Remove unneeded code comments 2020-11-06 00:33:04 +01:00
Jan Wagner 2dd4995992 Prepare release 2020-11-06 00:20:55 +01:00
waja 52fd18c887 Merge pull request #6 from waja/github_ci
Adding initial version of packaging test
2020-11-06 00:19:26 +01:00
Jan Wagner c912af176b Adding initial version of packaging test 2020-11-05 23:57:38 +01:00
Jan Wagner b4741c37f2 Prepare release 2020-10-28 09:53:47 +01:00
Jan Wagner 74bdb31bb6 d/control: Update 2020-10-28 09:50:57 +01:00
Jan Wagner 4e5b96d3ee d/copyright: Auto update 2020-10-28 09:50:38 +01:00
Jan Wagner 4dcc659638 Adding check_esxi_hardware 2020-10-28 09:48:05 +01:00
Jan Wagner 634170ac9b check_openvpn/control: Update Homepage and watch 2020-10-28 09:12:24 +01:00
Jan Wagner e58c4069f2 check_sentinel/control: Update Homepage and watch 2020-10-28 09:10:18 +01:00
Jan Wagner 377dd27ee3 Removing symlink for check_qnap3 and adding check_iftraffic64 2020-10-28 08:54:11 +01:00
Jan Wagner aea814e242 Adding check_iftraffic64 2020-10-26 17:42:40 +01:00
Jan Wagner 2889ce6fb6 Addingd/p/check_qnap_health/fix_strPart 2020-10-26 17:02:21 +01:00
Jan Wagner 51da819380 check_qnap3: remove in favout of check_qnap_health 2020-10-26 16:57:11 +01:00
Jan Wagner 126fad709e Prepare release 2020-10-23 13:47:26 +02:00
Jan Wagner 13dd9d8569 d/control: Update 2020-10-23 13:46:40 +02:00
Jan Wagner 8692bf3f37 Update Recommends for check_qnap_health 2020-10-23 13:46:18 +02:00
Jan Wagner b052a862d5 Update check_qnap_health 2020-10-23 13:34:34 +02:00
Jan Wagner 8376586d3f New changelog 2020-10-22 23:36:13 +02:00
Jan Wagner c5f57c694a Prepare release 2020-10-22 21:15:52 +02:00
Jan Wagner c900d80f14 d/copyright: Auto update 2020-10-22 20:27:18 +02:00
Jan Wagner 216bbfb414 d/control: Auto update 2020-10-22 20:27:04 +02:00
Jan Wagner 2914fcb832 Adding link for check_qnap_health 2020-10-22 20:26:43 +02:00
Jan Wagner e553414387 Adding check_qnap_health 2020-10-22 20:26:02 +02:00
Jan Wagner 27e5cd8898 Prepare release 2020-10-22 17:13:15 +02:00
Jan Wagner 8db15a8443 Fixing broken symlink 2020-10-22 17:12:45 +02:00
Jan Wagner 7e40de85ac Prepare release 2020-10-22 16:44:22 +02:00
Jan Wagner 92447f086d Adding link for check_qnap3.sh 2020-10-22 16:43:31 +02:00
Jan Wagner d6ba386327 Prepare release 2020-10-22 15:51:18 +02:00
Jan Wagner 79c1b18711 d/copyright: Auto update 2020-10-22 15:49:59 +02:00
Jan Wagner 34e2aabf84 d/control: Auto update 2020-10-22 15:49:43 +02:00
Jan Wagner 9ff9923971 Adding check_qnap3 2020-10-22 15:48:09 +02:00
Jan Wagner 5218397d0d Adding symlink for check_nwc_health 2020-10-14 20:34:56 +02:00
Jan Wagner 857f689f4c New changelog 2020-09-17 12:40:22 +02:00
Jan Wagner 42c2018d0a Prepare release 2020-09-16 12:06:13 +02:00
Jan Wagner e132732325 Auto update d/control 2020-09-16 12:05:17 +02:00
Jan Wagner f2db6c2265 Update check_nwc_health to 7.12.1.3 2020-09-16 12:02:22 +02:00
Jan Wagner 7d410af3f1 Auto update d/README.Debian.plugins 2020-09-15 12:37:20 +02:00
Jan Wagner 43d5911a57 Auto update d/control 2020-09-15 12:28:38 +02:00
Jan Wagner 1a2be29176 Auto update d/copyright 2020-09-15 12:28:27 +02:00
Jan Wagner f12c75bbbb Adding check_iostats 0.1 2020-09-15 12:07:25 +02:00
Jan Wagner a6b217c8f5 Providing symlink for check_iostat, that icinga2 can find it where it is expected 2020-09-11 14:45:00 +02:00
Jan Wagner a22a9e349b Adding empty check_iostat/copyright 2020-09-11 14:37:05 +02:00
Jan Wagner abeb1ba95b Auto update d/README.Debian.plugins 2020-09-11 14:32:46 +02:00
Jan Wagner 655f76070b Auto update d/control 2020-09-11 14:31:41 +02:00
Jan Wagner db8718849a Adding check_iostat 0.0.9 2020-09-11 14:30:07 +02:00
Jan Wagner 605709f5fe New changelog 2020-09-10 16:52:33 +02:00
Jan Wagner d014bfa386 Prepare release 2020-09-10 16:10:26 +02:00
Jan Wagner c5b434c7ea Auto update of d/control 2020-09-10 16:08:10 +02:00
Jan Wagner 899e09699c Migrating over to python3 2020-09-10 16:07:08 +02:00
Jan Wagner 98a99aa548 Updating d/packaging-helper.py from monitoring-plugins-contrib 2020-09-10 16:01:12 +02:00
Jan Wagner e7b9753fa7 Rename nextcloud.cfg into check_nextcloud.cfg 2019-04-04 12:15:03 +02:00
Jan Wagner ad0bb373da New changelog entry 2019-04-03 17:34:15 +02:00
Jan Wagner eed5d8ac3c Prepare release 2019-04-03 17:30:58 +02:00
Jan Wagner 2b22342316 d/control: Updating 2019-04-03 17:29:57 +02:00
Jan Wagner b4fc1b4188 d/copyright: Updating 2019-04-03 17:29:31 +02:00
Jan Wagner 3f29eabf53 check_nwc_health: Update to 7.6 2019-04-03 17:16:28 +02:00
Jan Wagner 83bc010257 Adding check_nextcloud 2019-04-03 17:03:24 +02:00
Jan Wagner 9205a1b115 travis-ci: Use xenial image 2018-11-08 16:49:34 +01:00
Jan Wagner a718bf03e1 d/changelog: New changelog 2018-09-26 13:33:20 +02:00
Jan Wagner 7d109ffb0d d/changelog: Prepare release 2018-09-26 13:09:20 +02:00
Jan Wagner 36ffda35d3 check_nwc_health: Update to 7.3 2018-09-26 12:58:19 +02:00
Jan Wagner 662d9b1da8 d/changelog: New changelog 2018-07-03 18:49:28 +02:00
Jan Wagner f6af041c32 d/changelog: Prepare release 2018-07-03 18:47:20 +02:00
Jan Wagner e404383817 check_nwc_health: Update to 7.0.1.5 2018-07-03 18:44:25 +02:00
Jan Wagner 109e71da01 d/changelog: Prepare release 2018-05-14 14:01:33 +02:00
Jan Wagner 4512b2bdde check_nwc_health: Update to 7.0.1.3 2018-05-14 13:39:21 +02:00
Jan Wagner 01116e5dbc travis-ci: don't exclude tags starting with 'debian' 2018-03-19 08:56:44 +01:00
Jan Wagner 947398540e New changelog entry 2018-03-19 08:53:44 +01:00
Jan Wagner f724aa6089 Prepare release 2018-03-19 08:23:51 +01:00
Jan Wagner 6d4a73a004 travis-ci: install devscripts 2018-03-19 08:03:42 +01:00
Jan Wagner 2af0f6f917 travis-ci: Make use of travis.d.n 2018-03-19 08:03:42 +01:00
Jan Wagner 0fce1f7ed0 check_nwc_health: Update to 7.0.1.1 2018-03-19 07:59:44 +01:00
Jan Wagner e5a659f339 check_openvpn: Update to ba01f5f 2018-03-19 06:40:11 +01:00
Jan Wagner f134dbfd1c check_apache_balancer_members: Update to 8e1ad17 2018-03-19 06:09:01 +01:00
Jan Wagner 36649d7285 check_apache_balancer_members: Update to cfa70e2 2018-03-15 15:10:56 +01:00
Jan Wagner 2b07b2053d check_sieve: Fixing Bareword 'UNKNOWN' 2017-07-09 21:56:40 +02:00
Jan Wagner 5b545ac648 check_sieve: Add support to detect perl monitoring and nagios plugins 2017-07-09 17:29:17 +02:00
Jan Wagner ba39a8dcef Drop check_ssl_cert, is shipped by nagios-plugins-contib since ages 2017-05-29 15:37:55 +02:00
Jan Wagner fd1164df3f Merge branch 'check_apache_balancer_members' 2017-05-29 15:33:58 +02:00
Jan Wagner 581fc6ce92 Adding check_apache_balancer_members 2017-05-29 15:32:08 +02:00
Jan Wagner 6af92e5dd3 d/changelog: New changelog 2017-01-20 11:49:53 +01:00
Jan Wagner 240073c60f d/changelog: Prepare release 2017-01-20 11:44:07 +01:00
Jan Wagner 74c9bd7381 d/control: Bump Standards-Version to 3.9.8, no changes needed 2017-01-20 11:41:54 +01:00
Jan Wagner fdcad15c3d d/control: Update 2017-01-20 11:31:46 +01:00
Jan Wagner 69d09ac207 check_nwc_health: Update to 5.12 2017-01-20 11:28:59 +01:00
Jan Wagner c6ade244b1 check_sentinal: Fixing control file 2017-01-20 11:24:19 +01:00
Jan Wagner 7b229a851b check_nwc_health: Update to 5.10.0.2 2016-12-24 00:35:52 +01:00
Jan Wagner f5da8826e2 check_phpfpm_status: Update to 1.1 2016-12-23 23:56:11 +01:00
Jan Wagner aee28d7a4f check_ssl_cert: Update to 1.37.0 2016-12-23 23:24:16 +01:00
Jan Wagner 6af6c5412a check_openvpn: Update to 20160803 2016-12-23 23:20:59 +01:00
Jan Wagner b064dda772 Prepare release 2016-07-13 21:17:48 +02:00
Jan Wagner 7ce4ca56fa Update copyright file 2016-07-13 20:43:02 +02:00
Jan Wagner 77bc646aca Update control file 2016-07-13 20:43:02 +02:00
Jan Wagner 2e462377f9 Update README.Debian.plugins 2016-07-13 20:43:01 +02:00
Jan Wagner f07e400fe4 Adding check_ssl_cert 2016-07-13 20:43:01 +02:00
Jan Wagner 4c86b3906b check_nwc_health: Update to 5.7.1.3 2016-07-13 20:43:01 +02:00
Jan Wagner 96914b6c6e check_nwc_health: Update to 5.7.1 2016-07-13 20:43:00 +02:00
Jan Wagner 54a63765e2 check_phpfpm_status: Drop unneeded path patch 2016-07-13 20:43:00 +02:00
Jan Wagner f7e67c0f74 check_phpfpm_status: Update to 0.11 2016-07-13 20:43:00 +02:00
Jan Wagner 7eb6cc05d9 check_openvpn: Update to 20151106 2016-07-13 20:43:00 +02:00
Jan Wagner 3155447fb2 check_openvpn/control: Addjust Recommends 2016-07-13 20:42:59 +02:00
Jan Wagner a2f5e5ed10 check_nginx_status: Updating to 0.20 2016-07-13 20:42:59 +02:00
Jan Wagner 00d5ca9249 check_nginx_status/control: Update Watch detection 2016-07-13 20:42:59 +02:00
Jan Wagner 02dd6a7cc3 travis-ci: automatically install dependencies 2016-07-13 20:42:59 +02:00
Jan Wagner 8a1cb84347 travis-ci: Adding required arguments for trusty 2016-07-13 20:42:26 +02:00
Jan Wagner 04cf19d793 Rebuild debian/control 2015-08-20 13:52:41 +02:00
Jan Wagner cd7660c570 debian/control.in: reformating with warp-and-sort 2015-08-20 13:52:23 +02:00
Jan Wagner 4721bb1268 Updating copyright and author of debian/bin/github-release.sh 2015-03-18 21:30:34 +01:00
Jan Wagner 1bcaa1eee4 Merging upstream changes of github-release.sh 2015-03-16 23:53:26 +01:00
Jan Wagner 1638ce8669 travis-ci: autoreconf check_nwc_health on ubuntu 12.04 2015-03-15 21:33:29 +01:00
Jan Wagner cf95c232f8 Move sync.sh to debian/bin/ 2015-03-15 17:05:32 +01:00
Jan Wagner 3a4746ff4a travis-ci: Initial support for uploading releases to github 2015-03-15 16:53:52 +01:00
Jan Wagner 413e6bb7aa travis-ci: build package with dpkg-buildpackage 2015-03-10 15:17:11 +01:00
Jan Wagner 808b174441 travis-ci: don't install build-deps manual 2015-03-10 15:16:52 +01:00
Jan Wagner de08de4318 check_bgp: Updating Homepage and Watch headers 2015-03-04 15:14:49 +01:00
Jan Wagner 441cc43bc7 Updating debian/changelog 2015-02-21 14:01:34 +01:00
Jan Wagner 608c53e6c1 Fix CR after installing plugins 2015-02-21 13:07:29 +01:00
Jan Wagner 7989df9a75 Updating debian/changelog 2015-02-21 00:21:12 +01:00
Jan Wagner 46aaf767e8 Update watch URL of check_tomcat 2015-02-21 00:14:36 +01:00
Jan Wagner b964123fd1 Update check_nwc_health to 3.4.2.2 2015-02-21 00:04:32 +01:00
Jan Wagner 17038528de Update check_phpfpm_status to 0.10 2015-02-20 23:37:22 +01:00
Jan Wagner 712a20a381 Adding check_mysql_slave 2015-02-20 23:25:26 +01:00
Jan Wagner 7cda3816af Updating debian/changelog 2014-11-11 13:52:29 +01:00
Jan Wagner 21632a6654 Delete backup file 2014-11-11 13:51:28 +01:00
Jan Wagner e8302f9aad Change arch to all 2014-11-11 13:51:09 +01:00
Jan Wagner 623ae4b056 Updating debian/changelog 2014-11-11 13:42:06 +01:00
Jan Wagner a185728bcb check_sieve: Refresh patches 2014-11-11 13:39:28 +01:00
Jan Wagner 7053799ae0 check_nwc_health: Update packaging for latest upstream 2014-11-11 13:39:28 +01:00
Jan Wagner 10325a164b check_nwc_health: Import new upstream 3.1 2014-11-11 13:39:22 +01:00
Jan Wagner 5dba34f0cb check_sieve: Disable epn via debian/patches/check_sieve/epn 2014-11-11 12:31:55 +01:00
Jan Wagner f064fe8e3e Change Architecture to 'all' 2014-10-23 18:10:29 +02:00
Jan Wagner 10a0f4699d Updating debian/changelog 2014-10-23 18:01:30 +02:00
Jan Wagner 4832e74750 check_ipsec: Adding needed patches 2014-10-23 17:42:06 +02:00
Jan Wagner 7978d99a92 Adding check_ipsec 2014-10-23 14:24:07 +02:00
Jan Wagner 1697637249 Adding check_sieve 2014-10-22 17:05:26 +02:00
Jan Wagner 34c5c8f81e check_nwc_health: Prevent running autofoo again 2014-10-11 20:42:58 +02:00
Jan Wagner c44c5ecf05 Add changelog entry, prepare release 2014-10-07 17:15:56 +02:00
Jan Wagner ce030fb41a check_nginx_status: Fix version in control file 2014-10-07 17:14:26 +02:00
Jan Wagner e776f51323 Adding check_smart 2014-10-07 17:00:24 +02:00
Jan Wagner 1b3695de71 Adding monitoring-plugins-common or legacy as Recommend 2014-10-07 16:37:07 +02:00
Jan Wagner 434fe2018d Bump Standards-Version to 3.9.6, no changes needed 2014-10-06 16:37:36 +02:00
Jan Wagner 9c91dfd76e Adding check_sentinel 2014-10-06 16:35:57 +02:00
Jan Wagner 43be123a11 New changelog 2014-09-24 16:36:51 +02:00
Jan Wagner 3370a29669 Updating debian/changelog 2014-09-24 15:44:14 +02:00
Jan Wagner b49136ddfa Generating README.Debian.plugins 2014-09-24 15:38:38 +02:00
Jan Wagner b0ce667dae Adding check_nginx_status 2014-09-24 15:37:37 +02:00
Jan Wagner 36d07c6e58 travis-ci: Install automake 2014-09-22 20:57:18 +02:00
Jan Wagner 552f8d2227 New changelog 2014-09-22 19:47:23 +02:00
Jan Wagner 443c5e1b48 Updating debian/changelog 2014-09-22 19:46:05 +02:00
Jan Wagner 5e81c86471 check_nwc_health: Fixing regex for disabling epn 2014-09-22 19:44:10 +02:00
Jan Wagner 15a3d1f73c check_nwc_health: Updating to 3.0.3.7 2014-09-22 18:38:21 +02:00
Jan Wagner e95e2a8f9a Adding check_nwc_health 2014-08-25 00:07:26 +02:00
Jan Wagner d441fe0ee5 Update changelog 2014-06-27 20:29:49 +02:00
Jan Wagner 166e43eb9d check_kibana: Removed again, cause not compatible against recent kibaba versions 2014-06-27 20:23:18 +02:00
Jan Wagner 8843ede486 check_kibana: propper filename for predefined check 2014-06-05 16:52:43 +02:00
Jan Wagner 7977340482 check_kibana: add missing recommends libjson-xs-perl 2014-06-05 16:39:26 +02:00
Jan Wagner b8b74568a7 Add correct options for hostname to check_redis 2014-06-05 16:36:43 +02:00
Jan Wagner b66f7e6493 Update changelog 2014-06-05 16:36:07 +02:00
Jan Wagner 6d67539e29 Update Vcs headers 2014-06-05 16:07:46 +02:00
Jan Wagner 65e0cc9bab Add check_kibana 2014-06-05 16:05:22 +02:00
Jan Wagner 20369091e7 Update changelog 2014-06-05 15:24:34 +02:00
Jan Wagner 5738aab7f2 Regenerate control and copyright file for check_redis 2014-06-05 15:23:35 +02:00
Jan Wagner 0b013b0b51 Update changelog 2014-06-05 15:10:12 +02:00
Jan Wagner 0659e124a7 Adding check_redis 2014-06-05 12:20:32 +02:00
Jan Wagner cc3665131a Add epn patch for check_tftp 2014-05-02 22:54:58 +02:00
Jan Wagner ea93f67faf Add changelog entry, prepare release 2014-05-02 22:54:58 +02:00
Jan Wagner 726dd5dd3c Regenerate control and copyright file for +check_tftp 2014-05-02 22:54:58 +02:00
Jan Wagner 5b67839877 Add check_tftp 2014-05-02 22:54:48 +02:00
Jan Wagner 2ed4647fa9 Add patch /check_phpfpm_status/10_pathes to make use of utils path 2014-03-21 13:29:35 +01:00
Jan Wagner 2c398c3d8d Fix syntax problem in debian/rules 2014-03-18 00:01:59 +01:00
Jan Wagner 9496de3393 Update release version 2014-03-17 21:13:37 +01:00
Jan Wagner fdeb7716d0 Adding check_phpfpm_status 2014-03-17 11:36:44 +01:00
Jan Wagner 6ea3e5ce5e Add lintian checks after build 2014-02-25 14:03:23 +01:00
665 changed files with 116416 additions and 124 deletions

12
.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,12 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: daily
time: "04:00"
reviewers:
- "waja"
pull-request-branch-name:
separator: "-"
open-pull-requests-limit: 10

20
.github/issue-branch.yml vendored Normal file
View file

@ -0,0 +1,20 @@
mode: auto
branchName: '${issue.number}-${issue.title[0,40]}'
gitSafeReplacementChar: '-'
branches:
- label: question
skip: true
- label: feature
prefix: feature/
- label: bug
prefix: bugfix/
- label: security
prefix: security/
- label: automation
prefix: automation/
openDraftPR: true
copyIssueDescriptionToPR: false
copyIssueLabelsToPR: true
copyIssueAssigneeToPR: true
copyIssueProjectsToPR: false
copyIssueMilestoneToPR: true

View file

@ -0,0 +1,25 @@
name: Tools - Automate Issue Branch
on:
issues:
types: [ assigned ]
issue_comment:
types: [ created ]
jobs:
create_issue_branch_job:
runs-on: ubuntu-latest
permissions:
actions: read
checks: write
contents: write
deployments: none
issues: write
packages: none
pull-requests: write
repository-projects: none
security-events: none
steps:
- name: Create Issue Branch
uses: robvanderleek/create-issue-branch@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

35
.github/workflows/packaging_test.yml vendored Normal file
View file

@ -0,0 +1,35 @@
name: Packaging Test
on:
push:
branches:
- $default-branch
- development
- master
# Run tests for any PRs
pull_request:
env:
SOURCE_DIR: ./
ARTIFACTS_DIR: debian/build/release/
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
env:
DEBIAN_FRONTEND: "noninteractive"
- name: Remove github artefacts
run: |
rm -rf .git*
- name: Adjust distibution in changelog file
run: |
sed -i '0,/restricted/s//stable/' debian/changelog
- name: Build Debian package
uses: dawidd6/action-debian-package@v1.4.0
with:
artifacts_directory: debian/build/release/
- name: Debug
run: |
ls -la

70
.github/workflows/release.yml vendored Normal file
View file

@ -0,0 +1,70 @@
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- 'debian/*' # Push events to matching debian/*, i.e. debian/1.0-2, debian/20.15.10, debian/23.20020326
name: Release Process
env:
SOURCE_DIR: ./
ARTIFACTS_DIR: debian/build/release/
jobs:
create-release:
name: Create Release
runs-on: ubuntu-latest
outputs:
release-id: ${{ steps.create_release.outputs.id }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install needed packages
run: |
if [ $(dpkg -l | grep -c dpkg-dev) -ne 1 ]; then sudo apt-get update && sudo apt-get install -y dpkg-dev; fi
- name: Gather changelog
run: |
ls -la
dpkg-parsechangelog | tail -n +9 > debian.changelog
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
body_path: debian.changelog
draft: false
prerelease: false
build:
name: Build and upload packages
needs: create-release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
env:
DEBIAN_FRONTEND: "noninteractive"
- name: Remove github artefacts
run: |
rm -rf .git*
- name: Adjust distibution in changelog file
run: |
sed -i '0,/restricted/s//stable/' debian/changelog
- name: Build Debian package
uses: dawidd6/action-debian-package@v1.4.0
with:
artifacts_directory: debian/build/release/
# - name: Build Debian package
# uses: pi-top/action-debian-package@v0.2.0
# with:
# artifacts_directory: debian/build/release/
# target_architectures: "amd64,i386"
- name: Upload the artifacts
uses: skx/github-action-publish-binaries@release-2.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
releaseId: ${{ needs.create-release.outputs.release-id }}
args: debian/build/release/*

View file

@ -1,16 +1,40 @@
language: c
dist: xenial
sudo: required
before_install:
# update package list
- sudo apt-get update -qq
env:
global:
# travis encrypt -r waja/monitoring-plugins-cyconet GITHUBTOKEN=XXXXXX (https://help.github.com/articles/creating-an-access-token-for-command-line-use / http://docs.travis-ci.com/user/encryption-keys/)
- secure: "G/f08BKWorfnej6309TiTzESH/HPQlA8AJwpPTWcDkf5X0/9UcpouuajrXBayu0Km3pN0jMzJXOU3S5mQvuebNHCWY1ehVkL4h+z0bDXxFG0SZBLuy0dJ+NPyd7iTp/tlRUfencxymAmaRQQa4zFkLndT0W0MH88NNsYgh/eCBw="
matrix:
- TRAVIS_DEBIAN_DISTRIBUTION=unstable TRAVIS_DEBIAN_MIRROR="http://httpredir.debian.org/debian/" TRAVIS_DEBIAN_SECURITY_UPDATES=false
- TRAVIS_DEBIAN_DISTRIBUTION=testing TRAVIS_DEBIAN_MIRROR="http://httpredir.debian.org/debian/"
- TRAVIS_DEBIAN_DISTRIBUTION=stable TRAVIS_DEBIAN_MIRROR="http://httpredir.debian.org/debian/"
install:
# install build dependencies
- sudo apt-get install -qq --no-install-recommends debhelper devscripts python python-debian quilt autotools-dev
services:
- docker
before_script:
# fetch all tags (not done due travis cloning with depth=50)
- git fetch --tags
script:
# build the debian package
- debuild -uc -us
# build the debian package
- wget -O- http://travis.debian.net/script.sh | sh -
after_script:
# run lintian after build
- sudo add-apt-repository -y ppa:waja/trusty-backports
- sudo apt-get update -qq
- sudo apt-get install -qq --no-install-recommends lintian
- lintian --info --display-info --display-experimental --pedantic --show-overrides ../*.deb && lintian --info --display-info --display-experimental --pedantic --show-overrides ../*.dsc
after_success:
- '[ "$TRAVIS_DEBIAN_DISTRIBUTION" = "stable" ] && sudo apt-get install -qq --no-install-recommends devscripts && mkdir -p debian/build/release/ && for FILE in $(dcmd ../*.changes); do cp ../$(basename $FILE) debian/build/release/; done'
- '[ "$TRAVIS_DEBIAN_DISTRIBUTION" = "stable" ] && debian/bin/github-release.sh "$TRAVIS_REPO_SLUG" "debian/`head -1 debian/changelog | awk -F"[()]" "{print $2}" | awk -F"+" "{print $1}"`" debian/build/release/*'
#notifications:
# email: false
#branches:
# except:
# - /^debian\/\d/

View file

@ -0,0 +1,4 @@
#/usr/bin/make -f
include ../common.mk

View file

@ -0,0 +1,59 @@
#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use Data::Dump qw(dump); #libdata-dump-perl
use Web::Scraper; #libweb-scraper-perl
use Monitoring::Plugin; #libmonitoring-plugin-perl
my $np = Monitoring::Plugin->new(
usage => '',
plugin => $0,
shortname => "Balancer Members",
blurb => 'Apache 2 Load Balancer Manager Members',
timeout => 10
);
$np->add_arg(
spec => 'hostname|h=s',
help => 'hostname of the apache server',
required => 1
);
$np->add_arg(
spec => 'path|p=s',
help => 'path to the balancer url',
required => 1
);
$np->getopts;
my $response = get("http://".$np->opts->hostname."/".$np->opts->path);
my $s = scraper {
process 'table:nth-of-type(2) tr', 'members[]' => scraper {
process 'td:nth-of-type(1)', 'worker' => 'TEXT';
process 'td:nth-of-type(6)', 'status' => 'TEXT';
process 'td:nth-of-type(7)', 'elected' => 'TEXT';
process 'td:nth-of-type(8)', 'busy' => 'TEXT';
process 'td:nth-of-type(9)', 'load' => 'TEXT';
process 'td:nth-of-type(10)', 'to' => 'TEXT';
process 'td:nth-of-type(11)', 'from' => 'TEXT';
}
};
my $results = $s->scrape($response);
my @problemMembers = ();
my $at_least_one_is_ok = 0;
foreach my $member (@{$results->{'members'}})
{
next unless $member->{'worker'};
push @problemMembers, $member->{'worker'} if $member->{'status'} =~ /Err/i;
$at_least_one_is_ok = 1 if $member->{'status'} =~ /Ok\s?$/;
$np->add_perfdata(label => "elected-$member->{'worker'}", value => $member->{'elected'}, uom => 'c');
$np->add_perfdata(label => "busy-$member->{'worker'}", value => $member->{'busy'}, uom => 'rqts');
}
$np->nagios_exit('CRITICAL', "No members are Ok; there is a problem") unless $at_least_one_is_ok;
$np->nagios_exit('CRITICAL', "Members have errors: " . join (", ", @problemMembers)) if (@problemMembers > 0);
$np->nagios_exit('OK', "All members functioning correctly");

View file

@ -0,0 +1,6 @@
Homepage: https://raw.github.com/mintsoft/check_apache_balancer_members/master/check_apache_balancer_members.pl
Watch: https://github.com/mintsoft/check_apache_balancer_members <a class="commit-tease-sha"[^>]*>\s+([0-9a-f]+)\s+</a>
Recommends: libdata-dump-perl, libweb-scraper-perl, libmonitoring-plugin-perl | libnagios-plugin-perl
Version: 8e1ad17
Uploaders: Jan Wagner <waja@cyconet.org>
Description: plugin to monitor Apache2 balancer_manager

View file

@ -0,0 +1,15 @@
Copyright Copyright 2015 Robert Emery/Codeweavers Ltd
License: Apache-2.0
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.

View file

@ -1,6 +1,6 @@
Homepage: https://www.monitoringexchange.org/inventory/Check-Plugins/Software/SNMP/check_bgp
Watch: https://www.monitoringexchange.org/attachment/preview/Check-Plugins/Software/SNMP/check_bgp/check_bgp.0.4.pl Revision: ([0-9.]+)
Homepage: https://exchange.icinga.org/exchange/check_bgp
Watch: https://exchange.icinga.org/exchange/check_bgp/files/657/check_bgp.0.4.pl Revision: ([0-9.]+)
Uploaders: Jan Wagner <waja@cyconet.org>
Description: plugin to check BGP peer status via SNMP.
Recommends: libnet-snmp-perl, nagios-plugins-common
Recommends: libnet-snmp-perl, monitoring-plugins-common | nagios-plugins-common
Version: 0.4

10
check_es_system/Makefile Normal file
View file

@ -0,0 +1,10 @@
#/usr/bin/make -f
PLUGIN = src/check_es_system
CLEANEXTRAFILES = $(PLUGIN)
DOCFILES = src/README.md
include ../common.mk
src/$(PLUGIN): src/$(PLUGIN).sh
cp $< $@

View file

@ -0,0 +1,22 @@
---
sudo: required
dist: focal
language: generic
services:
- elasticsearch
before_install:
- sudo apt-get update -q
- sudo apt-get install curl jq
before_script:
#- sleep 10
script:
- ./check_es_system.sh --help || true
- |
test/test_status.sh
test/test_readonly.sh

View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{description}
Copyright (C) {year} {fullname}
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View file

@ -0,0 +1,15 @@
# check_es_system
This is a monitoring plugin to check the status of an ElasticSearch cluster node. Besides the classical status check (green, yellow, red) this plugin also allows to monitor disk or memory usage of Elasticsearch. This is especially helpful when running Elasticsearch in the cloud (e.g. Elasticsearch as a service) because, as ES does not run on your own server, you cannot monitor the disk or memory usage. This is where this plugin comes in. Just tell the plugin how much resources (diskspace, memory capacity) you have available (-d) and it will alarm you when you reach a threshold.
Besides that, the plugin offers additional (advanced) checks of a Elasticsearch node/cluster (Java Threads, Thread Pool Statistics, Master Verification, Read-Only Indexes, ...).
Please refer to https://www.claudiokuenzler.com/monitoring-plugins/check_es_system.php for full documentation and usage examples.
Requirements
------
- The following commands must be available: `curl`, `expr`
- One of the following json parsers must be available: `jshon` or `jq` (defaults to jq)
Usage
------
./check_es_system.sh -H ESNode [-P port] [-S] [-u user] [-p pass] [-d available] -t check [-o unit] [-i indexes] [-w warn] [-c crit] [-m max_time] [-e node] [-X jq|jshon]

View file

@ -0,0 +1,761 @@
#!/bin/bash
################################################################################
# Script: check_es_system.sh #
# Author: Claudio Kuenzler www.claudiokuenzler.com #
# Purpose: Monitor ElasticSearch Store (Disk) Usage #
# Official doc: www.claudiokuenzler.com/monitoring-plugins/check_es_system.php #
# License: GPLv2 #
# GNU General Public Licence (GPL) http://www.gnu.org/ #
# This program is free software; you can redistribute it and/or #
# modify it under the terms of the GNU General Public License #
# as published by the Free Software Foundation; either version 2 #
# of the License, or (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program; if not, see <https://www.gnu.org/licenses/>. #
# #
# Copyright 2016,2018-2021 Claudio Kuenzler #
# Copyright 2018 Tomas Barton #
# Copyright 2020 NotAProfessionalDeveloper #
# Copyright 2020 tatref #
# Copyright 2020 fbomj #
# Copyright 2021 chicco27 #
# #
# History: #
# 20160429: Started programming plugin #
# 20160601: Continued programming. Working now as it should =) #
# 20160906: Added memory usage check, check types option (-t) #
# 20160906: Renamed plugin from check_es_store to check_es_system #
# 20160907: Change internal referenced variable name for available size #
# 20160907: Output now contains both used and available sizes #
# 20161017: Add missing -t in usage output #
# 20180105: Fix if statement for authentication (@deric) #
# 20180105: Fix authentication when wrong credentials were used #
# 20180313: Configure max_time for Elastic to respond (@deric) #
# 20190219: Fix alternative subject name in ssl (issue 4), direct to auth #
# 20190220: Added status check type #
# 20190403: Check for mandatory parameter checktype, adjust help #
# 20190403: Catch connection refused error #
# 20190426: Catch unauthorized (403) error #
# 20190626: Added readonly check type #
# 20190905: Catch empty cluster health status (issue #13) #
# 20190909: Added jthreads and tps (thread pool stats) check types #
# 20190909: Handle correct curl return codes #
# 20190924: Missing 'than' in tps output #
# 20191104: Added master check type #
# 20200401: Fix/handle 503 errors with curl exit code 0 (issue #20) #
# 20200409: Fix 503 error lookup (issue #22) #
# 20200430: Support both jshon and jq as json parsers (issue #18) #
# 20200609: Fix readonly check on ALL indices (issue #26) #
# 20200723: Add cluster name to status output #
# 20200824: Fix typo in readonly check output #
# 20200916: Internal renaming of -i parameter, use for tps check (issue #28) #
# 20201110: Fix thresholds in jthreads check #
# 20201125: Show names of read_only indexes with jq, set jq as default parser #
# 20210616: Fix authentication bug (#38) and non ES URL responding (#39) #
# 20211202: Added local node (-L), SSL settings (-K, -E), cpu check #
################################################################################
#Variables and defaults
STATE_OK=0 # define the exit code if status is OK
STATE_WARNING=1 # define the exit code if status is Warning
STATE_CRITICAL=2 # define the exit code if status is Critical
STATE_UNKNOWN=3 # define the exit code if status is Unknown
export PATH=$PATH:/usr/local/bin:/usr/bin:/bin # Set path
version=1.12.0
port=9200
httpscheme=http
unit=G
include='_all'
max_time=30
parsers=(jq jshon)
################################################################################
#Functions
help () {
echo -e "$0 $version (c) 2016-$(date +%Y) Claudio Kuenzler and contributors (open source rulez!)
Usage: ./check_es_system.sh -H ESNode [-P port] [-S] [-u user -p pass|-E cert -K key] -t checktype [-o unit] [-w int] [-c int] [-m int] [-e string] [-X parser]
Options:
* -H Hostname or ip address of ElasticSearch Node
-L Run check on local node instead of cluster
-P Port (defaults to 9200)
-S Use https
-E Certs for Authentication
-K Key for Authentication
-u Username if authentication is required
-p Password if authentication is required
* -t Type of check (disk, mem, cpu, status, readonly, jthreads, tps, master)
-o Disk space unit (K|M|G) (defaults to G)
-i Space separated list of included object names to be checked (index names on readonly check, pool names on tps check)
-w Warning threshold (see usage notes below)
-c Critical threshold (see usage notes below)
-m Maximum time in seconds to wait for response (default: 30)
-e Expect master node (used with 'master' check)
-X The json parser to be used jshon or jq (default: jq)
-h Help!
*mandatory options
Threshold format for 'disk', 'mem' and 'cpu': int (for percent), defaults to 80 (warn) and 95 (crit)
Threshold format for 'tps': int,int,int (active, queued, rejected), no defaults
Threshold format for all other check types': int, no defaults
Requirements: curl, expr and one of $(IFS=,; echo "${parsers[*]}")"
exit $STATE_UNKNOWN;
}
authlogic () {
if [[ -z $user ]] && [[ -z $pass ]]; then echo "ES SYSTEM UNKNOWN - Authentication required but missing username and password"; exit $STATE_UNKNOWN
elif [[ -n $user ]] && [[ -z $pass ]]; then echo "ES SYSTEM UNKNOWN - Authentication required but missing password"; exit $STATE_UNKNOWN
elif [[ -n $pass ]] && [[ -z $user ]]; then echo "ES SYSTEM UNKNOWN - Missing username"; exit $STATE_UNKNOWN
fi
}
authlogic_cert () {
if [[ -z $cert ]] && [[ -z $key ]]; then echo "ES SYSTEM UNKNOWN - Authentication required but missing cert and key"; exit $STATE_UNKNOWN
elif [[ -n $cert ]] && [[ -z $key ]]; then echo "ES SYSTEM UNKNOWN - Authentication required but missing key"; exit $STATE_UNKNOWN
elif [[ -n $key ]] && [[ -z $cert ]]; then echo "ES SYSTEM UNKNOWN - Missing cert"; exit $STATE_UNKNOWN
fi
}
unitcalc() {
# ES presents the currently used disk space in Bytes
if [[ -n $unit ]]; then
case $unit in
K) availsize=$(expr $available / 1024); outputsize=$(expr ${size} / 1024);;
M) availsize=$(expr $available / 1024 / 1024); outputsize=$(expr ${size} / 1024 / 1024);;
G) availsize=$(expr $available / 1024 / 1024 / 1024); outputsize=$(expr ${size} / 1024 / 1024 / 1024);;
esac
if [[ -n $warning ]] ; then
warningsize=$(expr $warning \* ${available} / 100)
fi
if [[ -n $critical ]] ; then
criticalsize=$(expr $critical \* ${available} / 100)
fi
usedpercent=$(expr $size \* 100 / $available)
else echo "UNKNOWN - Shouldnt exit here. No units given"; exit $STATE_UNKNOWN
fi
}
thresholdlogic () {
if [ -n $warning ] && [ -z $critical ]; then echo "UNKNOWN - Define both warning and critical thresholds"; exit $STATE_UNKNOWN; fi
if [ -n $critical ] && [ -z $warning ]; then echo "UNKNOWN - Define both warning and critical thresholds"; exit $STATE_UNKNOWN; fi
}
default_percentage_thresholds() {
if [ -z $warning ] || [ "${warning}" = "" ]; then warning=80; fi
if [ -z $critical ] || [ "${critical}" = "" ]; then critical=95; fi
}
json_parse() {
json_parse_usage() { echo "$0: [-r] [-q] [-c] [-a] -x arg1 -x arg2 ..." 1>&2; exit; }
local OPTIND opt r q c a x
while getopts ":rqcax:" opt
do
case "${opt}" in
r) raw=1;;
q) quiet=1;; # only required for jshon
c) continue=1;; # only required for jshon
a) across=1;;
x) args+=("$OPTARG");;
*) json_parse_usage;;
esac
done
case ${parser} in
jshon)
cmd=()
for arg in "${args[@]}"; do
cmd+=(-e $arg)
done
jshon ${quiet:+-Q} ${continue:+-C} ${across:+-a} "${cmd[@]}" ${raw:+-u}
;;
jq)
cmd=()
for arg in "${args[@]}"; do
cmd+=(.$arg)
done
jq ${raw:+-r} $(IFS=; echo ${across:+.[]}"${cmd[*]}")
;;
esac
}
################################################################################
# Check for people who need help - aren't we all nice ;-)
if [ "${1}" = "--help" -o "${#}" = "0" ]; then help; exit $STATE_UNKNOWN; fi
################################################################################
# Get user-given variables
while getopts "H:LP:SE:K:u:p:d:o:i:w:c:t:m:e:X:" Input
do
case ${Input} in
H) host=${OPTARG};;
L) local=true;;
P) port=${OPTARG};;
S) httpscheme=https;;
E) cert=${OPTARG};;
K) key=${OPTARG};;
u) user=${OPTARG};;
p) pass=${OPTARG};;
d) oldavailable=${OPTARG};;
o) unit=${OPTARG};;
i) include=${OPTARG};;
w) warning=${OPTARG};;
c) critical=${OPTARG};;
t) checktype=${OPTARG};;
m) max_time=${OPTARG};;
e) expect_master=${OPTARG};;
X) parser=${OPTARG:=jq};;
*) help;;
esac
done
# Check for mandatory opts
if [[ -z ${host} ]]; then help; exit $STATE_UNKNOWN; fi
if [[ -z ${checktype} ]]; then help; exit $STATE_UNKNOWN; fi
# Check for deprecated opts
if [[ -n ${oldavailable} ]]; then
echo "ES SYSTEM UNKNOWN: -d parameter is now invalid. Capacities are now discovered directly from Elasticsearch."
exit ${STATE_UNKNOWN}
fi
# Local checks are only useful for certain check types
if [[ -n ${local} ]] && ( ! [[ ${checktype} =~ ^(cpu|mem|disk|jthreads)$ ]] ); then
echo "ES SYSTEM UNKNOWN: Node local checks (-L) only work with the following check types: cpu, mem, disk, jthreads"
exit ${STATE_UNKNOWN}
fi
################################################################################
# Check requirements
for cmd in curl expr ${parser}; do
if ! `which ${cmd} >/dev/null 2>&1`; then
echo "UNKNOWN: ${cmd} does not exist, please check if command exists and PATH is correct"
exit ${STATE_UNKNOWN}
fi
done
# Find parser
if [ -z ${parser} ]; then
for cmd in ${parsers[@]}; do
if `which ${cmd} >/dev/null 2>&1`; then
parser=${cmd}
break
fi
done
if [ -z "${parser}" ]; then
echo "UNKNOWN: No JSON parser found. Either one of the following is required: $(IFS=,; echo "${parsers[*]}")"
exit ${STATE_UNKNOWN}
fi
fi
################################################################################
# Retrieve information from Elasticsearch cluster
getstatus() {
if [[ ${local} ]]; then
esurl="${httpscheme}://${host}:${port}/_nodes/_local/stats"
else
esurl="${httpscheme}://${host}:${port}/_cluster/stats"
fi
eshealthurl="${httpscheme}://${host}:${port}/_cluster/health"
if [[ -z $user ]] && [[ -z $cert ]]; then
# Without authentication
esstatus=$(curl -k -s --max-time ${max_time} $esurl)
esstatusrc=$?
if [[ $esstatusrc -eq 7 ]]; then
echo "ES SYSTEM CRITICAL - Failed to connect to ${host} port ${port}: Connection refused"
exit $STATE_CRITICAL
elif [[ $esstatusrc -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
elif [[ "$esstatus" =~ "503 Service Unavailable" ]]; then
echo "ES SYSTEM CRITICAL - Elasticsearch not available: ${host}:${port} return error 503"
exit $STATE_CRITICAL
elif [[ "$esstatus" =~ "Unknown resource" ]]; then
echo "ES SYSTEM CRITICAL - Elasticsearch not available: ${esstatus}"
exit $STATE_CRITICAL
elif ! [[ "$esstatus" =~ "cluster_name" ]]; then
echo "ES SYSTEM CRITICAL - Elasticsearch not available at this address ${host}:${port}"
exit $STATE_CRITICAL
fi
# Additionally get cluster health infos
if [ $checktype = status ]; then
eshealth=$(curl -k -s --max-time ${max_time} $eshealthurl)
if [[ -z $eshealth ]]; then
echo "ES SYSTEM CRITICAL - unable to get cluster health information"
exit $STATE_CRITICAL
fi
fi
fi
if [[ -n $user ]] || [[ -n $(echo $esstatus | grep -i authentication) ]] ; then
# Authentication required
authlogic
esstatus=$(curl -k -s --max-time ${max_time} --basic -u ${user}:${pass} $esurl)
esstatusrc=$?
if [[ $esstatusrc -eq 7 ]]; then
echo "ES SYSTEM CRITICAL - Failed to connect to ${host} port ${port}: Connection refused"
exit $STATE_CRITICAL
elif [[ $esstatusrc -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
elif [[ "$esstatus" =~ "503 Service Unavailable" ]]; then
echo "ES SYSTEM CRITICAL - Elasticsearch not available: ${host}:${port} return error 503"
exit $STATE_CRITICAL
elif [[ "$esstatus" =~ "Unknown resource" ]]; then
echo "ES SYSTEM CRITICAL - Elasticsearch not available: ${esstatus}"
exit $STATE_CRITICAL
elif [[ -n $(echo "$esstatus" | grep -i "unable to authenticate") ]]; then
echo "ES SYSTEM CRITICAL - Unable to authenticate user $user for REST request"
exit $STATE_CRITICAL
elif [[ -n $(echo "$esstatus" | grep -i "unauthorized") ]]; then
echo "ES SYSTEM CRITICAL - User $user is unauthorized"
exit $STATE_CRITICAL
elif ! [[ "$esstatus" =~ "cluster_name" ]]; then
echo "ES SYSTEM CRITICAL - Elasticsearch not available at this address ${host}:${port}"
exit $STATE_CRITICAL
fi
# Additionally get cluster health infos
if [[ $checktype = status ]]; then
eshealth=$(curl -k -s --max-time ${max_time} --basic -u ${user}:${pass} $eshealthurl)
if [[ -z $eshealth ]]; then
echo "ES SYSTEM CRITICAL - unable to get cluster health information"
exit $STATE_CRITICAL
fi
fi
fi
if [[ -n $cert ]] || [[ -n $(echo $esstatus | grep -i authentication) ]] ; then
# Authentication with certificate
authlogic_cert
esstatus=$(curl -k -s --max-time ${max_time} -E ${cert} --key ${key} $esurl)
esstatusrc=$?
if [[ $esstatusrc -eq 7 ]]; then
echo "ES SYSTEM CRITICAL - Failed to connect to ${host} port ${port}: Connection refused"
exit $STATE_CRITICAL
elif [[ $esstatusrc -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
elif [[ "$esstatus" =~ "503 Service Unavailable" ]]; then
echo "ES SYSTEM CRITICAL - Elasticsearch not available: ${host}:${port} return error 503"
exit $STATE_CRITICAL
elif [[ -n $(echo "$esstatus" | grep -i "unable to authenticate") ]]; then
echo "ES SYSTEM CRITICAL - Unable to authenticate user $user for REST request"
exit $STATE_CRITICAL
elif [[ -n $(echo "$esstatus" | grep -i "unauthorized") ]]; then
echo "ES SYSTEM CRITICAL - User $user is unauthorized"
exit $STATE_CRITICAL
fi
# Additionally get cluster health infos
if [[ $checktype = status ]]; then
eshealth=$(curl -k -s --max-time ${max_time} -E ${cert} --key ${key} $eshealthurl)
if [[ -z $eshealth ]]; then
echo "ES SYSTEM CRITICAL - unable to get cluster health information"
exit $STATE_CRITICAL
fi
fi
fi
# Catch empty reply from server (typically happens when ssl port used with http connection)
if [[ -z $esstatus ]] || [[ $esstatus = '' ]]; then
echo "ES SYSTEM UNKNOWN - Empty reply from server (verify ssl settings)"
exit $STATE_UNKNOWN
fi
}
################################################################################
# Do the checks
case $checktype in
disk) # Check disk usage
getstatus
default_percentage_thresholds
if [[ ${local} ]]; then
size=$(echo $esstatus | json_parse -x 'nodes|' -x '[]' -x indices -x store -x size_in_bytes)
available=$(echo $esstatus | json_parse -x 'nodes|' -x '[]' -x fs -x total -x total_in_bytes)
else
size=$(echo $esstatus | json_parse -x indices -x store -x size_in_bytes)
available=$(echo $esstatus | json_parse -x nodes -x fs -x total_in_bytes)
fi
unitcalc
if [ -n "${warning}" ] || [ -n "${critical}" ]; then
# Handle tresholds
thresholdlogic
if [ $size -ge $criticalsize ]; then
echo "ES SYSTEM CRITICAL - Disk usage is at ${usedpercent}% ($outputsize $unit from $availsize $unit)|es_disk=${size}B;${warningsize};${criticalsize};0;${available}"
exit $STATE_CRITICAL
elif [ $size -ge $warningsize ]; then
echo "ES SYSTEM WARNING - Disk usage is at ${usedpercent}% ($outputsize $unit from $availsize $unit)|es_disk=${size}B;${warningsize};${criticalsize};0;${available}"
exit $STATE_WARNING
else
echo "ES SYSTEM OK - Disk usage is at ${usedpercent}% ($outputsize $unit from $availsize $unit)|es_disk=${size}B;${warningsize};${criticalsize};0;${available}"
exit $STATE_OK
fi
else
# No thresholds
echo "ES SYSTEM OK - Disk usage is at ${usedpercent}% ($outputsize $unit from $availsize $unit)|es_disk=${size}B;;;0;${available}"
exit $STATE_OK
fi
;;
mem) # Check memory usage
getstatus
default_percentage_thresholds
if [[ ${local} ]]; then
size=$(echo $esstatus | json_parse -x 'nodes|' -x '[]' -x jvm -x mem -x heap_used_in_bytes)
available=$(echo $esstatus | json_parse -x 'nodes|' -x '[]' -x jvm -x mem -x heap_max_in_bytes)
else
size=$(echo $esstatus | json_parse -x nodes -x jvm -x mem -x heap_used_in_bytes)
available=$(echo $esstatus | json_parse -x nodes -x jvm -x mem -x heap_max_in_bytes)
fi
unitcalc
if [ -n "${warning}" ] || [ -n "${critical}" ]; then
# Handle tresholds
thresholdlogic
if [ $size -ge $criticalsize ]; then
echo "ES SYSTEM CRITICAL - Memory usage is at ${usedpercent}% ($outputsize $unit) from $availsize $unit|es_memory=${size}B;${warningsize};${criticalsize};0;${available}"
exit $STATE_CRITICAL
elif [ $size -ge $warningsize ]; then
echo "ES SYSTEM WARNING - Memory usage is at ${usedpercent}% ($outputsize $unit from $availsize $unit)|es_memory=${size}B;${warningsize};${criticalsize};0;${available}"
exit $STATE_WARNING
else
echo "ES SYSTEM OK - Memory usage is at ${usedpercent}% ($outputsize $unit from $availsize $unit)|es_memory=${size}B;${warningsize};${criticalsize};0;${available}"
exit $STATE_OK
fi
else
# No thresholds
echo "ES SYSTEM OK - Memory usage is at ${usedpercent}% ($outputsize $unit from $availsize $unit)|es_memory=${size}B;;;0;${available}"
exit $STATE_OK
fi
;;
cpu) # Check memory usage
getstatus
default_percentage_thresholds
if [[ ${local} ]]; then
value=$(echo $esstatus | json_parse -x 'nodes|' -x '[]' -x process -x cpu -x percent)
else
value=$(echo $esstatus | json_parse -x nodes -x process -x cpu -x percent)
fi
if [ -n "${warning}" ] || [ -n "${critical}" ]; then
# Handle tresholds
thresholdlogic
if [ $value -ge $critical ]; then
echo "ES SYSTEM CRITICAL - CPU usage is at ${value}% |es_cpu=${value}%;${warning};${critical};0;100"
exit $STATE_CRITICAL
elif [ $value -ge $warning ]; then
echo "ES SYSTEM WARNING - CPU usage is at ${value}% |es_cpu=${value}%;${warning};${critical};0;100"
exit $STATE_WARNING
else
echo "ES SYSTEM OK - CPU usage is at ${value}% |es_cpu=${value}%;${warning};${critical};0;100"
exit $STATE_OK
fi
else
# No thresholds
echo "ES SYSTEM OK - CPU usage is at ${value}% |es_cpu=${value}%;${warning};${critical};0;100"
exit $STATE_OK
fi
;;
status) # Check Elasticsearch status
getstatus
status=$(echo $esstatus | json_parse -r -x status)
clustername=$(echo $esstatus | json_parse -r -x cluster_name)
shards=$(echo $esstatus | json_parse -r -x indices -x shards -x total)
docs=$(echo $esstatus | json_parse -r -x indices -x docs -x count)
nodest=$(echo $esstatus | json_parse -r -x nodes -x count -x total)
nodesd=$(echo $esstatus | json_parse -r -x nodes -x count -x data)
relocating=$(echo $eshealth | json_parse -r -x relocating_shards)
init=$(echo $eshealth | json_parse -r -x initializing_shards)
unass=$(echo $eshealth | json_parse -r -x unassigned_shards)
if [ "$status" = "green" ]; then
echo "ES SYSTEM OK - Elasticsearch Cluster \"$clustername\" is green (${nodest} nodes, ${nodesd} data nodes, ${shards} shards, ${docs} docs)|total_nodes=${nodest};;;; data_nodes=${nodesd};;;; total_shards=${shards};;;; relocating_shards=${relocating};;;; initializing_shards=${init};;;; unassigned_shards=${unass};;;; docs=${docs};;;;"
exit $STATE_OK
elif [ "$status" = "yellow" ]; then
echo "ES SYSTEM WARNING - Elasticsearch Cluster \"$clustername\" is yellow (${nodest} nodes, ${nodesd} data nodes, ${shards} shards, ${relocating} relocating shards, ${init} initializing shards, ${unass} unassigned shards, ${docs} docs)|total_nodes=${nodest};;;; data_nodes=${nodesd};;;; total_shards=${shards};;;; relocating_shards=${relocating};;;; initializing_shards=${init};;;; unassigned_shards=${unass};;;; docs=${docs};;;;"
exit $STATE_WARNING
elif [ "$status" = "red" ]; then
echo "ES SYSTEM CRITICAL - Elasticsearch Cluster \"$clustername\" is red (${nodest} nodes, ${nodesd} data nodes, ${shards} shards, ${relocating} relocating shards, ${init} initializing shards, ${unass} unassigned shards, ${docs} docs)|total_nodes=${nodest};;;; data_nodes=${nodesd};;;; total_shards=${shards};;;; relocating_shards=${relocating};;;; initializing_shards=${init};;;; unassigned_shards=${unass};;;; docs=${docs};;;;"
exit $STATE_CRITICAL
fi
;;
readonly) # Check Readonly status on given indexes
getstatus
icount=0
for index in $include; do
if [[ -z $user ]]; then
# Without authentication
settings=$(curl -k -s --max-time ${max_time} ${httpscheme}://${host}:${port}/$index/_settings)
if [[ $? -eq 7 ]]; then
echo "ES SYSTEM CRITICAL - Failed to connect to ${host} port ${port}: Connection refused"
exit $STATE_CRITICAL
elif [[ $? -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
fi
rocount=$(echo $settings | json_parse -r -q -c -a -x settings -x index -x blocks -x read_only | grep -c true)
roadcount=$(echo $settings | json_parse -r -q -c -a -x settings -x index -x blocks -x read_only_allow_delete | grep -c true)
if [[ $rocount -gt 0 ]]; then
output[${icount}]=" $index is read-only -"
roerror=true
fi
if [[ $roadcount -gt 0 ]]; then
output[${icount}]+=" $index is read-only (allow delete) -"
roerror=true
fi
fi
if [[ -n $user ]] || [[ -n $(echo $esstatus | grep -i authentication) ]] ; then
# Authentication required
authlogic
settings=$(curl -k -s --max-time ${max_time} --basic -u ${user}:${pass} ${httpscheme}://${host}:${port}/$index/_settings)
settingsrc=$?
if [[ $settingsrc -eq 7 ]]; then
echo "ES SYSTEM CRITICAL - Failed to connect to ${host} port ${port}: Connection refused"
exit $STATE_CRITICAL
elif [[ $settingsrc -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
elif [[ -n $(echo $esstatus | grep -i "unable to authenticate") ]]; then
echo "ES SYSTEM CRITICAL - Unable to authenticate user $user for REST request"
exit $STATE_CRITICAL
elif [[ -n $(echo $esstatus | grep -i "unauthorized") ]]; then
echo "ES SYSTEM CRITICAL - User $user is unauthorized"
exit $STATE_CRITICAL
fi
rocount=$(echo $settings | json_parse -r -q -c -a -x settings -x index -x blocks -x read_only | grep -c true)
roadcount=$(echo $settings | json_parse -r -q -c -a -x settings -x index -x blocks -x read_only_allow_delete | grep -c true)
if [[ $rocount -gt 0 ]]; then
if [[ "$index" = "_all" ]]; then
if [[ $parser = "jq" ]]; then
roindexes=$(echo $settings | jq -r '.[].settings.index |select(.blocks.read_only == "true").provided_name')
fi
output[${icount}]=" $rocount index(es) found read-only $roindexes -"
else output[${icount}]=" $index is read-only -"
fi
roerror=true
fi
if [[ $roadcount -gt 0 ]]; then
if [[ "$index" = "_all" ]]; then
if [[ $parser = "jq" ]]; then
roadindexes=$(echo $settings | jq -r '.[].settings.index |select(.blocks.read_only_allow_delete == "true").provided_name' | tr '\n' ' ')
fi
output[${icount}]+=" $roadcount index(es) found read-only (allow delete) $roadindexes"
else output[${icount}]+=" $index is read-only (allow delete) -"
fi
roerror=true
fi
fi
let icount++
done
if [[ $roerror ]]; then
echo "ES SYSTEM CRITICAL - ${output[*]}"
exit $STATE_CRITICAL
else
echo "ES SYSTEM OK - Elasticsearch Indexes ($include) are writeable"
exit $STATE_OK
fi
;;
jthreads) # Check JVM threads
getstatus
if [[ ${local} ]]; then
threads=$(echo $esstatus | json_parse -x 'nodes|' -x '[]' -x jvm -x threads -x count)
else
threads=$(echo $esstatus | json_parse -r -x nodes -x jvm -x "threads")
fi
if [ -n "${warning}" ] || [ -n "${critical}" ]; then
# Handle tresholds
thresholdlogic
if [[ $threads -ge $critical ]]; then
echo "ES SYSTEM CRITICAL - Number of JVM threads is ${threads}|es_jvm_threads=${threads};${warning};${critical};;"
exit $STATE_CRITICAL
elif [[ $threads -ge $warning ]]; then
echo "ES SYSTEM WARNING - Number of JVM threads is ${threads}|es_jvm_threads=${threads};${warning};${critical};;"
exit $STATE_WARNING
else
echo "ES SYSTEM OK - Number of JVM threads is ${threads}|es_jvm_threads=${threads};${warning};${critical};;"
exit $STATE_OK
fi
else
# No thresholds
echo "ES SYSTEM OK - Number of JVM threads is ${threads}|es_jvm_threads=${threads};${warning};${critical};;"
exit $STATE_OK
fi
;;
tps) # Check Thread Pool Statistics
getstatus
if [[ -z $user ]]; then
# Without authentication
threadpools=$(curl -k -s --max-time ${max_time} ${httpscheme}://${host}:${port}/_cat/thread_pool)
threadpoolrc=$?
if [[ $threadpoolrc -eq 7 ]]; then
echo "ES SYSTEM CRITICAL - Failed to connect to ${host} port ${port}: Connection refused"
exit $STATE_CRITICAL
elif [[ $threadpoolrc -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
fi
fi
if [[ -n $user ]] || [[ -n $(echo $esstatus | grep -i authentication) ]] ; then
# Authentication required
authlogic
threadpools=$(curl -k -s --max-time ${max_time} --basic -u ${user}:${pass} ${httpscheme}://${host}:${port}/_cat/thread_pool)
threadpoolrc=$?
if [[ $threadpoolrc -eq 7 ]]; then
echo "ES SYSTEM CRITICAL - Failed to connect to ${host} port ${port}: Connection refused"
exit $STATE_CRITICAL
elif [[ $threadpoolrc -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
elif [[ -n $(echo $esstatus | grep -i "unable to authenticate") ]]; then
echo "ES SYSTEM CRITICAL - Unable to authenticate user $user for REST request"
exit $STATE_CRITICAL
elif [[ -n $(echo $esstatus | grep -i "unauthorized") ]]; then
echo "ES SYSTEM CRITICAL - User $user is unauthorized"
exit $STATE_CRITICAL
fi
fi
if ! [[ $include = "_all" ]]; then
tpsgrep=$(echo "$include" | sed "s/ /|/g")
threadpools=$(echo "$threadpools" | egrep -i "(${tpsgrep})")
if [[ $(echo ${threadpools[*]}) = "" ]]; then
echo "Thread Pool check is critical: No thread pools found with given name(s): ${include}."
exit $STATE_CRITICAL
fi
fi
tpname=($(echo "$threadpools" | awk '{print $1"-"$2}' | sed "s/\n//g"))
tpactive=($(echo "$threadpools" | awk '{print $3}' | sed "s/\n//g"))
tpqueue=($(echo "$threadpools" | awk '{print $4}' | sed "s/\n//g"))
tprejected=($(echo "$threadpools" | awk '{print $5}' | sed "s/\n//g"))
if [ -n "${warning}" ] || [ -n "${critical}" ]; then
# Handle thresholds. They have to come in a special format: n,n,n (active, queue, rejected)
thresholdlogic
wactive=$(echo ${warning} | awk -F',' '{print $1}')
wqueue=$(echo ${warning} | awk -F',' '{print $2}')
wrejected=$(echo ${warning} | awk -F',' '{print $3}')
cactive=$(echo ${critical} | awk -F',' '{print $1}')
cqueue=$(echo ${critical} | awk -F',' '{print $2}')
crejected=$(echo ${critical} | awk -F',' '{print $3}')
i=0; for tp in ${tpname[*]}; do
perfdata[$i]="tp_${tp}_active=${tpactive[$i]};${wactive};${cactive};; tp_${tp}_queue=${tpqueue[$i]};${wqueue};${cqueue};; tp_${tp}_rejected=${tprejected[$i]};${wrejected};${crejected};; "
let i++
done
i=0
for tpa in $(echo ${tpactive[*]}); do
if [[ $tpa -ge $cactive ]]; then
echo "Thread Pool ${tpname[$i]} is critical: Active ($tpa) is equal or higher than threshold ($cactive)|${perfdata[*]}"
exit $STATE_CRITICAL
elif [[ $tpa -ge $wactive ]]; then
echo "Thread Pool ${tpname[$i]} is warning: Active ($tpa) is equal or higher than threshold ($wactive)|${perfdata[*]}"
exit $STATE_WARNING
fi
let i++
done
i=0
for tpq in $(echo ${tpqueue[*]}); do
if [[ $tpq -ge $cqueue ]]; then
echo "Thread Pool ${tpname[$i]} is critical: Queue ($tpq) is equal or higher than threshold ($cqueue)|${perfdata[*]}"
exit $STATE_CRITICAL
elif [[ $tpq -ge $wqueue ]]; then
echo "Thread Pool ${tpname[$i]} is warning: Queue ($tpq) is equal or higher than threshold ($wqueue)|${perfdata[*]}"
exit $STATE_WARNING
fi
let i++
done
i=0
for tpr in $(echo ${tprejected[*]}); do
if [[ $tpr -ge $crejected ]]; then
echo "Thread Pool ${tpname[$i]} is critical: Rejected ($tpr) is equal or higher than threshold ($crejected)|${perfdata[*]}"
exit $STATE_CRITICAL
elif [[ $tpr -ge $wrejected ]]; then
echo "Thread Pool ${tpname[$i]} is warning: Rejected ($tpr) is equal or higher than threshold ($wrejected)|${perfdata[*]}"
exit $STATE_WARNING
fi
let i++
done
echo "ES SYSTEM OK - Found ${#tpname[*]} thread pools in cluster|${perfdata[*]}"
exit $STATE_OK
fi
# No Thresholds
i=0; for tp in ${tpname[*]}; do
perfdata[$i]="tp_${tp}_active=${tpactive[$i]};;;; tp_${tp}_queue=${tpqueue[$i]};;;; tp_${tp}_rejected=${tprejected[$i]};;;; "
let i++
done
echo "ES SYSTEM OK - Found ${#tpname[*]} thread pools in cluster|${perfdata[*]}"
exit $STATE_OK
;;
master) # Check Cluster Master
getstatus
if [[ -z $user ]]; then
# Without authentication
master=$(curl -k -s --max-time ${max_time} ${httpscheme}://${host}:${port}/_cat/master)
masterrc=$?
if [[ $masterrc -eq 7 ]]; then
echo "ES SYSTEM CRITICAL - Failed to connect to ${host} port ${port}: Connection refused"
exit $STATE_CRITICAL
elif [[ $masterrc -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
fi
fi
if [[ -n $user ]] || [[ -n $(echo $esstatus | grep -i authentication) ]] ; then
# Authentication required
authlogic
master=$(curl -k -s --max-time ${max_time} --basic -u ${user}:${pass} ${httpscheme}://${host}:${port}/_cat/master)
masterrc=$?
if [[ $threadpoolrc -eq 7 ]]; then
echo "ES SYSTEM CRITICAL - Failed to connect to ${host} port ${port}: Connection refused"
exit $STATE_CRITICAL
elif [[ $threadpoolrc -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
elif [[ -n $(echo $esstatus | grep -i "unable to authenticate") ]]; then
echo "ES SYSTEM CRITICAL - Unable to authenticate user $user for REST request"
exit $STATE_CRITICAL
elif [[ -n $(echo $esstatus | grep -i "unauthorized") ]]; then
echo "ES SYSTEM CRITICAL - User $user is unauthorized"
exit $STATE_CRITICAL
fi
fi
masternode=$(echo "$master" | awk '{print $NF}')
if [[ -n ${expect_master} ]]; then
if [[ "${expect_master}" = "${masternode}" ]]; then
echo "ES SYSTEM OK - Master node is $masternode"
exit $STATE_OK
else
echo "ES SYSTEM WARNING - Master node is $masternode but expected ${expect_master}"
exit $STATE_WARNING
fi
else
echo "ES SYSTEM OK - Master node is $masternode"
exit $STATE_OK
fi
;;
*) help
esac

View file

@ -0,0 +1,27 @@
#!/bin/bash
echo "Test Elasticsearch status"
./check_es_system.sh -H 127.0.0.1 -P 9200 -t readonly
if [[ $? -eq 0 ]]; then
echo -e "\e[1m\e[32m✔ Test 2.1 OK: Readonly check worked and no read_only indexes were found\e[0m"
exitcode=0
else
echo -e "\e[1m\e[31m✘ Test 2.1 ERROR: Readonly check has not worked or read_only indexes were found\e[0m"
exitcode=1
fi
# Create an index with read_only setting
curl -X PUT "127.0.0.1:9200/my-index-002" -H 'Content-Type: application/json' -d'{ "settings": { "index": { "blocks.read_only": true } } }'
sleep 5
./check_es_system.sh -H 127.0.0.1 -P 9200 -t readonly
if [[ $? -eq 2 ]]; then
echo -e "\e[1m\e[32m✔ Test 2.1 OK: Readonly check worked and detected a read only index\e[0m"
exitcode=0
else
echo -e "\e[1m\e[31m✘ Test 2.1 ERROR: Readonly check has not worked as expected\e[0m"
exitcode=1
fi
exit $exitcode

View file

@ -0,0 +1,27 @@
#!/bin/bash
echo "Test Elasticsearch status"
./check_es_system.sh -H 127.0.0.1 -P 9200 -t status
if [[ $? -eq 0 ]]; then
echo -e "\e[1m\e[32m✔ Test 1.1 OK: Status check worked and shows green\e[0m"
exitcode=0
else
echo -e "\e[1m\e[31m✘ Test 1.1 ERROR: Status check has not worked\e[0m"
exitcode=1
fi
# Create index with a replica, this should result in unassigned shards and yellow status
curl -X PUT "127.0.0.1:9200/my-index-001" -H 'Content-Type: application/json' -d'{ "settings": { "index": { "number_of_shards": 2, "number_of_replicas": 1 } } }'
sleep 5
./check_es_system.sh -H 127.0.0.1 -P 9200 -t status
if [[ $? -eq 1 ]]; then
echo -e "\e[1m\e[32m✔ Test 1.2 OK: Status check worked and shows yellow\e[0m"
exitcode=0
else
echo -e "\e[1m\e[31m✘ Test 1.2 ERROR: Status check has not worked as expected\e[0m"
exitcode=1
fi
exit $exitcode

6
check_es_system/control Normal file
View file

@ -0,0 +1,6 @@
Uploaders: Jan Wagner <waja@cyconet.org>
Recommends: curl, jshon | jq
Version: 1.12.0
Homepage: https://github.com/Napsty/check_es_system/
Watch: https://github.com/Napsty/check_es_system/tags .*/v?(\d\S+)\.tar\.gz
Description: Plugin script to check the status of an ElasticSearch cluster node.

View file

@ -0,0 +1,7 @@
Copyright (c) Claudio Kuenzler <ck@claudiokuenzler.com>
License: GPL v2
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

1
check_es_system/src Symbolic link
View file

@ -0,0 +1 @@
check_es_system-1.12.0/

View file

@ -0,0 +1,14 @@
PLUGIN := check_esxi_hardware
CLEANFILES := check_esxi_hardware
DOCFILES := README.md
include ../common.mk
check_esxi_hardware:
cp $@.py $@
chmod 755 $@
install::
install -d $(DESTDIR)$(PLUGINDIR)
ln -s $(PLUGINDIR)/$(PLUGIN) $(DESTDIR)$(PLUGINDIR)/$(PLUGIN).py

View file

@ -0,0 +1,11 @@
check_esxi_hardware
=========
Monitoring plugin to check the hardware on VMware ESX/ESXi servers.
This is the public git repository for development of the plugin.
Documentation + Production Ready Plugin
-------------
Please refer to https://www.claudiokuenzler.com/monitoring-plugins/check_esxi_hardware.php

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
Uploaders: Jan Wagner <waja@cyconet.org>
Recommends: python3-minimal, python-pywbem
Version: 20210809
Homepage: https://github.com/Napsty/check_esxi_hardware
Watch: https://github.com/Napsty/check_esxi_hardware/tags .*/v?(\d\S+)\.tar\.gz
Description: Plugin for checking global health of VMware ESX/ESXi host

View file

@ -0,0 +1,12 @@
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, see <https://www.gnu.org/licenses/>

View file

@ -0,0 +1,3 @@
#/usr/bin/make -f
include ../common.mk

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,5 @@
Homepage: https://exchange.nagios.org/directory/Plugins/Network-Connections%2C-Stats-and-Bandwidth/check_iftraffic64/details
Uploaders: Jan Wagner <waja@cyconet.org>
Description: plugin for checking network traffic by snmp.
Recommends: libsnmp-perl, libnet-dns-perl
Version: .77

View file

@ -0,0 +1,7 @@
Copyright (C) 2004 Gerd Mueller / Netways GmbH
License: GPL+
On Debian systems, the complete text of the GNU General
Public License can be found in "/usr/share/common-licenses/GPL".

3
check_iostat/Makefile Normal file
View file

@ -0,0 +1,3 @@
#/usr/bin/make -f
include ../common.mk

352
check_iostat/check_iostat Normal file
View file

@ -0,0 +1,352 @@
#!/bin/bash
#----------check_iostat.sh-----------
#
# Version 0.0.2 - Jan/2009
# Changes: added device verification
#
# by Thiago Varela - thiago@iplenix.com
#
# Version 0.0.3 - Dec/2011
# Changes:
# - changed values from bytes to mbytes
# - fixed bug to get traffic data without comma but point
# - current values are displayed now, not average values (first run of iostat)
#
# by Philipp Niedziela - pn@pn-it.com
#
# Version 0.0.4 - April/2014
# Changes:
# - Allow Empty warn/crit levels
# - Can check I/O, WAIT Time, or Queue
#
# by Warren Turner
#
# Version 0.0.5 - Jun/2014
# Changes:
# - removed -y flag from call since iostat doesn't know about it any more (June 2014)
# - only needed executions of iostat are done now (save cpu time whenever you can)
# - fixed the obvious problems of missing input values (probably because of the now unimplemented "-y") with -x values
# - made perfomance data optional (I like to have choice in the matter)
#
# by Frederic Krueger / fkrueger-dev-checkiostat@holics.at
#
# Version 0.0.6 - Jul/2014
# Changes:
# - Cleaned up argument checking, removed excess iostat calls, steamlined if statements and renamed variables to fit current use
# - Fixed all inputs to match current iostat output (Ubuntu 12.04)
# - Changed to take last ten seconds as default (more useful for nagios usage). Will go to "since last reboot" (previous behaviour) on -g flag.
# - added extra comments/whitespace etc to make add readability
#
# by Ben Field / ben.field@concreteplatform.com
#
# Version 0.0.7 - Sep/2014
# Changes:
# - Fixed performance data for Wait check
#
# by Christian Westergard / christian.westergard@gmail.com
#
# Version 0.0.8 - Jan/2019
# Changes:
# - Added Warn/Crit thresholds to performance output
#
# by Danny van Zunderd / danny_vz@live.nl
#
# Version 0.0.9 - Jun/2020
# Changes:
# - Updated to use bash 4.4 mechanisms
#
# by Joseph Waggy / joseph.waggy@gmail.com
iostat=$(which iostat 2>/dev/null)
bc=$(which bc 2>/dev/null)
help()
{
echo -e "
Usage:
-d =
--Device to be checked. Example: \"-d sda\"
Run only one of i, q, W:
-i = IO Check Mode
--Checks Total Transfers/sec, Read IO/Sec, Write IO/Sec, Bytes Read/Sec, Bytes Written/Sec
--warning/critical = Total Transfers/sec,Read IO/Sec,Write IO/Sec,Bytes Read/Sec,Bytes Written/Sec
-q = Queue Mode
--Checks Disk Queue Lengths
--warning/critial = Average size of requests, Queue length of requests
-W = Wait Time Mode
--Check the time for I/O requests issued to the device to be served. This includes the time spent by the requests in queue and the time spent servicing them.
--warning/critical = Avg I/O Wait Time (ms), Avg Read Wait Time (ms), Avg Write Wait Time (ms), Avg Service Wait Time (ms), Avg CPU Utilization
-w,-c = pass warning and critical levels respectively. These are not required, but with out them, all queries will return as OK.
-p = Provide performance data for later graphing
-g = Since last reboot for system (more for debugging that nagios use!)
-h = This help
"
}
# Ensuring we have the needed tools:
if [[ ! -f $iostat ]] || [[ ! -f $bc ]]; then
echo -e "ERROR: You must have iostat and bc installed in order to run this plugin\n\tuse: apt-get install systat bc\n"
exit -1
fi
io=0
queue=0
waittime=0
printperfdata=0
STATE="OK"
samples=2i
status=0
MSG=""
PERFDATA=""
#------------Argument Set-------------
while getopts "d:w:c:ipqWhg" OPT; do
case $OPT in
"d")
disk=$OPTARG
;;
"w")
warning=$OPTARG
;;
"c")
critical=$OPTARG
;;
"i")
io=1
;;
"p")
printperfdata=1
;;
"q")
queue=1
;;
"W")
waittime=1
;;
"g")
samples=1
;;
"h")
echo "help:"
help
exit 0
;;
\?)
echo "Invalid option: -$OPTARG" >&2
help
exit -1
;;
esac
done
# Autofill if parameters are empty
if [[ -z "$disk" ]]; then
disk=sda
fi
#Checks that only one query type is run
if [[ $((io+queue+waittime)) -ne "1" ]]; then
echo "ERROR: select one and only one run mode"
help
exit -1
fi
#set warning and critical to insane value is empty, else set the individual values
if [[ -z "$warning" ]]; then
warning=99999
else
#TPS with IO, Request size with queue
warn_1=$(echo $warning | cut -d, -f1)
#Read/s with IO,Queue Length with queue
warn_2=$(echo $warning | cut -d, -f2)
#Write/s with IO
warn_3=$(echo $warning | cut -d, -f3)
#KB/s read with IO
warn_4=$(echo $warning | cut -d, -f4)
#KB/s written with IO
warn_5=$(echo $warning | cut -d, -f5)
#Crude hack due to integer expression later in the script
warning=1
fi
if [[ -z "$critical" ]]; then
critical=99999
else
#TPS with IO, Request size with queue
crit_1=$(echo $critical | cut -d, -f1)
#Read/s with IO,Queue Length with queue
crit_2=$(echo $critical | cut -d, -f2)
#Write/s with IO
crit_3=$(echo $critical | cut -d, -f3)
#KB/s read with IO
crit_4=$(echo $critical | cut -d, -f4)
#KB/s written with IO
crit_5=$(echo $critical | cut -d, -f5)
#Crude hack due to integer expression later in the script
critical=1
fi
#------------Argument Set End-------------
#------------Parameter Check-------------
#Checks for sane Disk name:
if [[ ! -b "/dev/$disk" ]]; then
echo "ERROR: Device incorrectly specified"
help
exit -1
fi
#Checks for sane warning/critical levels
if [[ $warning -ne "99999" || $critical -ne "99999" ]]; then
if [[ "$warn_1" -gt "$crit_1" || "$warn_2" -gt "$crit_2" ]]; then
echo "ERROR: critical levels must be higher than warning levels"
help
exit -1
elif [[ $io -eq "1" || $waittime -eq "1" ]]; then
if [[ "$warn_3" -gt "$crit_3" || "$warn_4" -gt "$crit_4" || "$warn_5" -gt "$crit_5" ]]; then
echo "ERROR: critical levels must be higher than warning levels"
help
exit -1
fi
fi
fi
#------------Parameter Check End-------------
# iostat parameters:
# -m: megabytes
# -k: kilobytes
# first run of iostat shows statistics since last reboot, second one shows current vaules of hdd
# -d is the duration for second run, -x the rest
TMPX=$($iostat $disk -x -k -d 10 $samples | grep $disk | tail -1)
#------------IO Test-------------
if [[ "$io" == "1" ]]; then
TMPD=$($iostat $disk -k -d 10 $samples | grep $disk | tail -1)
#Requests per second:
tps=$(echo "$TMPD" | awk '{print $2}')
read_sec=$(echo "$TMPX" | awk '{print $4}')
written_sec=$(echo "$TMPX" | awk '{print $5}')
#Kb per second:
kbytes_read_sec=$(echo "$TMPX" | awk '{print $6}')
kbytes_written_sec=$(echo "$TMPX" | awk '{print $7}')
# "Converting" values to float (string replace , with .)
tps=${tps/,/.}
read_sec=${read_sec/,/.}
written_sec=${written_sec/,/.}
kbytes_read_sec=${kbytes_read_sec/,/.}
kbytes_written_sec=${kbytes_written_sec/,/.}
# Comparing the result and setting the correct level:
if [[ "$warning" -ne "99999" ]]; then
if [[ "$(echo "$tps >= $warn_1" | bc)" == "1" || "$(echo "$read_sec >= $warn_2" | bc)" == "1" || "$(echo "$written_sec >= $warn_3" | bc)" == "1" || "$(echo "$kbytes_read_sec >= $warn_4" | bc -q)" == "1" || "$(echo "$kbytes_written_sec >= $warn_5" | bc)" == "1" ]]; then
STATE="WARNING"
status=1
fi
fi
if [[ "$critical" -ne "99999" ]]; then
if [[ "$(echo "$tps >= $crit_1" | bc)" == "1" || "$(echo "$read_sec >= $crit_2" | bc -q)" == "1" || "$(echo "$written_sec >= $crit_3" | bc)" == "1" || "$(echo "$kbytes_read_sec >= $crit_4" | bc -q)" == "1" || "$(echo "$kbytes_written_sec >= $crit_5" | bc)" == "1" ]]; then
STATE="CRITICAL"
status=2
fi
fi
# Printing the results:
MSG="$STATE - I/O stats: Transfers/Sec=$tps Read Requests/Sec=$read_sec Write Requests/Sec=$written_sec KBytes Read/Sec=$kbytes_read_sec KBytes_Written/Sec=$kbytes_written_sec"
PERFDATA=" | total_io_sec'=$tps;$warn_1;$crit_1; read_io_sec=$read_sec;$warn_2;$crit_2; write_io_sec=$written_sec;$warn_3;$crit_3; kbytes_read_sec=$kbytes_read_sec;$warn_4;$crit_4; kbytes_written_sec=$kbytes_written_sec;$warn_5;$crit_5;"
fi
#------------IO Test End-------------
#------------Queue Test-------------
if [[ "$queue" == "1" ]]; then
qsize=$(echo "$TMPX" | awk '{print $8}')
qlength=$(echo "$TMPX" | awk '{print $9}')
# "Converting" values to float (string replace , with .)
qsize=${qsize/,/.}
qlength=${qlength/,/.}
# Comparing the result and setting the correct level:
if [[ "$warning" -ne "99999" ]]; then
if [[ "$(echo "$qsize >= $warn_1" | bc)" == "1" || "$(echo "$qlength >= $warn_2" | bc)" == "1" ]]; then
STATE="WARNING"
status=1
fi
fi
if [[ "$critical" -ne "99999" ]]; then
if [[ "$(echo "$qsize >= $crit_1" | bc)" == "1" || "$(echo "$qlength >= $crit_2" | bc)" == "1" ]]; then
STATE="CRITICAL"
status=2
fi
fi
# Printing the results:
MSG="$STATE - Disk Queue Stats: Average Request Size=$qsize Average Queue Length=$qlength"
PERFDATA=" | qsize=$qsize;$warn_1;$crit_1; queue_length=$qlength;$warn_2;$crit_2;"
fi
#------------Queue Test End-------------
#------------Wait Time Test-------------
#Parse values. Warning - svc time will soon be deprecated and these will need to be changed. Future parser could look at first line (labels) to suggest correct column to return
if [[ "$waittime" == "1" ]]; then
avgwait=$(echo "$TMPX" | awk '{print $10}')
avgrwait=$(echo "$TMPX" | awk '{print $11}')
avgwwait=$(echo "$TMPX" | awk '{print $12}')
avgsvctime=$(echo "$TMPX" | awk '{print $13}')
avgcpuutil=$(echo "$TMPX" | awk '{print $14}')
# "Converting" values to float (string replace , with .)
avgwait=${avgwait/,/.}
avgrwait=${avgrwait/,/.}
avgwwait=${avgwwait/,/.}
avgsvctime=${avgsvctime/,/.}
avgcpuutil=${avgcpuutil/,/.}
# Comparing the result and setting the correct level:
if [[ "$warning" -ne "99999" ]]; then
if [[ "$(echo "$avgwait >= $warn_1" | bc)" == "1" || "$(echo "$avgrwait >= $warn_2" | bc -q)" == "1" || "$(echo "$avgwwait >= $warn_3" | bc)" == "1" || "$(echo "$avgsvctime >= $warn_4" | bc -q)" == "1" || "$(echo "$avgcpuutil >= $warn_5" | bc)" == "1" ]]; then
STATE="WARNING"
status=1
fi
fi
if [[ "$critical" -ne "99999" ]]; then
if [[ "$(echo "$avgwait >= $crit_1" | bc)" == "1" || "$(echo "$avgrwait >= $crit_2" | bc -q)" == "1" || "$(echo "$avgwwait >= $crit_3" | bc)" == "1" || "$(echo "$avgsvctime >= $crit_4" | bc -q)" == "1" || "$(echo "$avgcpuutil >= $crit_5" | bc)" == "1" ]]; then
STATE="CRITICAL"
status=2
fi
fi
# Printing the results:
MSG="$STATE - Wait Time Stats: Avg I/O Wait Time (ms)=$avgwait Avg Read Wait Time (ms)=$avgrwait Avg Write Wait Time (ms)=$avgwwait Avg Service Wait Time (ms)=$avgsvctime Avg CPU Utilization=$avgcpuutil"
PERFDATA=" | avg_io_waittime_ms=$avgwait;$warn_1;$crit_1; avg_r_waittime_ms=$avgrwait;$warn_2;$crit_2; avg_w_waittime_ms=$avgwwait;$warn_3;$crit_3; avg_service_waittime_ms=$avgsvctime;$warn_4;$crit_4; avg_cpu_utilization=$avgcpuutil;$warn_5;$crit_5;"
fi
#------------Wait Time End-------------
# now output the official result
echo -n "$MSG"
if [[ "x$printperfdata" == "x1" ]]; then
echo -n "$PERFDATA"
fi
echo ""
exit $status
#----------/check_iostat.sh-----------

5
check_iostat/control Normal file
View file

@ -0,0 +1,5 @@
Homepage: https://exchange.nagios.org/directory/Plugins/Operating-Systems/Linux/check_iostat--2D-I-2FO-statistics/details
Uploaders: Jan Wagner <waja@cyconet.org>
Description: plugin shows the I/O usage of the specified disk.
Recommends: sysstat, bc
Version: 0.0.9

1
check_iostat/copyright Normal file
View file

@ -0,0 +1 @@

3
check_iostats/Makefile Normal file
View file

@ -0,0 +1,3 @@
#/usr/bin/make -f
include ../common.mk

150
check_iostats/check_iostats Normal file
View file

@ -0,0 +1,150 @@
#!/usr/bin/perl
#
# Version 0.0.2 - Jan/2009
# Changes: added device verification
#
# by Thiago Varela - thiago@iplenix.com
# Version 0.1 - Nov/2011
# by Ruediger Oertel ro@suse.de
# Changes:
# - rewrite in perl, no need for external grep, awk, bc
# - add output for iowait
# - implement using device mapper names, e.g. $vg-$lv
use strict;
use Getopt::Std;
$Getopt::Std::STANDARD_HELP_VERSION = "true";
my $iostat = `which iostat 2>/dev/null`;
chomp($iostat);
my $progname = $0;
# call it VERSION_MESSAGE so that getopts uses it automatically
sub VERSION_MESSAGE {
print "$progname: version 0.1, Nov/2011\n";
}
# call it HELP_MESSAGE so that getopts uses it automatically
sub HELP_MESSAGE {
print "\n\tThis plugin shows the I/O usage of the specified disk, using the iostat external program.\n";
print "\tIt prints three statistics: Transactions per second (tps), Kilobytes per second\n";
print "tread from the disk (KB_read/s) and and written to the disk (KB_written/s)\n\n";
print "$progname:\n\t-d <disk>\t\tDevice to be checked (without the full path, eg. sda)\n";
print "\t\t\t\t(also accepted are device mapper names)\n";
print "\t-c <tps>,<read>,<wrtn>\tSets the CRITICAL level for tps, KB_read/s and KB_written/s, respectively\n";
print "\t-w <tps>,<read>,<wrtn>\tSets the WARNING level for tps, KB_read/s and KB_written/s, respectively\n";
print "\t-C <percent>\t Sets the CRITICAL level for iowait\n";
print "\t-W <percent>\t Sets the WARNING level for iowait\n";
print "\t\t\t(if no level is set for iowait, no warning is set for this value)\n";
exit 1;
}
unless ($iostat && -f $iostat) {
warn "ERROR: You must have iostat installed in order to run this plugin\n";
exit 1;
}
# Getting parameters:
my %opts;
getopts('d:w:c:W:C:hv', \%opts);
my $disk = $opts{'d'};
my $warning = $opts{'w'};
my $critical = $opts{'c'};
my $warning_iowait = $opts{'W'};
my $critical_iowait = $opts{'C'};
VERSION_MESSAGE() if $opts{'v'};
HELP_MESSAGE() if $opts{'h'};
# Adjusting the three warn and crit levels:
my ($crit_tps,$crit_read,$crit_written) = split(',',$critical);
my ($warn_tps,$warn_read,$warn_written) = split(',',$warning);
# Checking parameters:
if (! -b "/dev/$disk") {
if (-b "/dev/mapper/$disk") {
my @f = stat("/dev/mapper/$disk");
$f[6] %= 256;
$disk = "dm-$f[6]";
} else {
warn "ERROR: Device incorrectly specified\n";
HELP_MESSAGE();
}
}
unless ($warn_tps && $warn_read && $warn_written && $crit_tps && $crit_read && $crit_written) {
warn "ERROR: You must specify all warning and critical levels\n";
HELP_MESSAGE();
}
if ($warn_tps > $crit_tps || $warn_read > $crit_read || $warn_written > $crit_written) {
warn "ERROR: critical levels must be highter than warning levels\n";
HELP_MESSAGE();
}
if ($warning_iowait && $critical_iowait && $warning_iowait > $critical_iowait) {
warn "ERROR: critical iowait level must be higher that warning level\n";
HELP_MESSAGE();
}
my ($tps,$kbread,$kbwritten,$iowait);
my $seen_usage = 0;
my $seen_disk = 0;
# Doing the actual check:
open (IOSTAT,"-|","$iostat -k $disk 2 2");
while (<IOSTAT>) {
chomp();
if (/^[0-9\.\ \t]+$/) {
$seen_usage++;
next if $seen_usage < 2;
my (@stats) = split ('\s+', $_);
$iowait = $stats[4];
next;
}
if (/^$disk /) {
$seen_disk++;
next if $seen_disk < 2;
my (@stats) = split ('\s+', $_);
($tps,$kbread,$kbwritten) = @stats[1,2,3];
last;
}
}
close (IOSTAT);
my $msg = "OK";
my $status = 0;
# Comparing the result and setting the correct level:
if ($tps >= $warn_tps || $kbread >= $warn_read || $kbwritten >= $warn_written) {
$msg = "WARNING";
$status = 1;
}
if ($warning_iowait && $iowait >= $warning_iowait) {
$msg = "WARNING";
$status = 1;
}
if ($tps >= $crit_tps || $kbread >= $crit_read || $kbwritten >= $crit_written) {
$msg = "CRITICAL";
$status = 2;
}
if ($critical_iowait && $iowait >= $critical_iowait) {
$msg = "CRITICAL";
$status = 2;
}
# Printing the results:
print "$msg - I/O stats tps=$tps KB_read/s=$kbread KB_written/s=$kbwritten iowait=$iowait | 'tps'=$tps; 'KB_read/s'=$kbread; 'KB_written/s'=$kbwritten; 'iowait'=$iowait\n";
# Bye!
exit $status;

6
check_iostats/control Normal file
View file

@ -0,0 +1,6 @@
Homepage: https://github.com/dnsmichi/icinga-plugins/blob/master/scripts/check_iostats
Watch: https://gitlab.icare.ch/open-source/monitoring-plugins/-/raw/master/check_iostats # Version ([0-9.]+)
Uploaders: Jan Wagner <waja@cyconet.org>
Description: plugin shows the I/O usage of the specified disk, perl implementation.
Recommends: sysstat
Version: 0.1

1
check_iostats/copyright Normal file
View file

@ -0,0 +1 @@

View file

@ -0,0 +1,3 @@
#/usr/bin/make -f
include ../common.mk

View file

@ -0,0 +1,254 @@
#!/bin/bash
# Monitoring plugin to check the keepalived status
usage(){
echo "Check: Is the keepalived service operate as it should.
--status | -s <state> ) Target state of the system (MASTER, BACKUP)
--interface | -i <interface> ) Interface for vrrp instance
--ha-ip | -ip <ip> ) Vrrp-ip
--interface2 | -i2 <interface> ) Interface for 2nd vrrp instance
--ha-ip2 | -ip2 <ip> ) 2nd vrrp-ip
--help | -h ) Usage
"
}
# Exit Codes
OK=0
WARNING=1
CRITICAL=2
UNKNOWN=3
# Command definitions
if [ -x "$(which cat)" ];
then
CAT="$(which cat)"
fi
if [ -x "$(which grep)" ];
then
GREP="$(which grep)"
fi
if [ -x "$(which ip)" ];
then
IP="$(which ip)"
fi
if [ -x "$(which pgrep)" ];
then
PG="$(which pgrep)"
fi
if [ -x "$(which wc)" ];
then
WC="$(which wc)"
fi
if [ "$1" = "" ]
then
echo "CRITICAL: No arguments given. Take a look at the usage:"
usage
exit "${CRITICAL}"
fi
# shifting through our command line arguments and setting our values
while [ "$1" != "" ]; do
case $1 in
--status | -s ) shift
TARGET_STATE="$1"
;;
--interface | -i ) shift
IFACE="$1"
;;
--ha-ip | -ip ) shift
HAIP="$1"
;;
--interface2 | -i2 ) shift
IFACE2="$1"
SEC_IP=true
;;
--ha-ip2 | -ip2 ) shift
HAIP2="$1"
;;
--help | -h ) usage
exit
;;
* ) usage
echo "CRITICAL: No valid arguments given. Take a look at the usage."
exit "${CRITICAL}"
esac
shift
done
# Config and commands
STAT_FILE='/tmp/keepalived.status'
PID_FILE='/run/keepalived.pid'
PID=$("${CAT}" "${PID_FILE}" 2>/dev/null)
SERVICE=$("${PG}" keepalived)
STATUS=(MASTER BACKUP FAULT)
CHECK_HAIP=$("${IP}" 2>/dev/null addr sh "${IFACE}" | "${GREP}" "${HAIP}" | "${WC}" -l)
CHECK_HAIP2=$("${IP}" 2>/dev/null addr sh "${IFACE2}" | "${GREP}" "${HAIP2}" | "${WC}" -l)
# Check files are valid
if [ ! -e "${STAT_FILE}" ]
then
echo "CRITICAL: Generated status file is missing. State could not be determined."
exit "${CRITICAL}"
fi
FILE_CONT=$("${CAT}" "${STAT_FILE}" 2>/dev/null)
if [ ! -e "${PID_FILE}" ]
then
echo "CRITICAL: PID file is missing, keepalived is not running."
exit "${CRITICAL}"
fi
# Check variables exists
if [ -z "${TARGET_STATE}" ]
then
echo "CRITICAL: Parameter 'status' not given. Check usage:"
usage
exit "${CRITICAL}"
fi
if [ -z "${IFACE}" ]
then
echo "CRITICAL: Parameter 'interface' not given. Check usage:"
usage
exit "${CRITICAL}"
fi
if [ -z "${HAIP}" ]
then
echo "CRITICAL: Parameter 'ha-ip' not given. Check usage:"
usage
exit "${CRITICAL}"
fi
# Check service is running
if [[ ! "${SERVICE}" =~ ${PID} ]]
then
echo "CRITICAL: keepalived is not running."
exit "${CRITICAL}"
fi
# Confirm valid STATUS
if [[ ! "${STATUS[*]}" =~ ${FILE_CONT} ]]
then
echo "CRITICAL: Status file contains unknown status or is empty. Take a look at ${STAT_FILE}."
exit "${CRITICAL}"
fi
# Check ha ip and status
if [ "${TARGET_STATE}" = "${STATUS[0]}" ] # Machine is defined as MASTER
then
case "${FILE_CONT}" in
MASTER ) STAT=ok
;;
BACKUP ) STAT=fail
;;
FAULT ) echo "CRITICAL: Machine status is FAULT."
exit "${CRITICAL}"
;;
* ) echo "CRITICAL: Status file contains unknown status or is empty. Take a look at ${STAT_FILE}."
exit "${CRITICAL}"
esac
if [ "${SEC_IP}" == "true" ] # 2nd ha instance
then
if [ "${CHECK_HAIP2}" == 0 ] && [ "${STAT}" == ok ]
then
echo "CRITICAL: 2nd HA IP ${HAIP2} is not up but machine is MASTER according to ${STAT_FILE}."
STAT_SEC_IP=CRIT
elif [ "${CHECK_HAIP2}" == 0 ] && [ "${STAT}" == fail ]
then
echo "CRITICAL: 2nd HA IP ${HAIP2} is not up, machine is BACKUP. Should be MASTER."
elif [ "${CHECK_HAIP2}" == 1 ] && [ "${STAT}" == fail ]
then
echo "CRITICAL: 2nd HA IP ${HAIP2} is up, but machine is BACKUP according to ${STAT_FILE}. Should be MASTER."
else
echo "OK: 2nd HA IP ${HAIP2} is up and machine is MASTER."
fi
fi
if [ "${CHECK_HAIP}" == 0 ] && [ "${STAT}" == ok ] # Target-actual comparison machine state; IP should be up
then
echo "CRITICAL: HA IP ${HAIP} is not up but machine is MASTER according to ${STAT_FILE}."
exit "${CRITICAL}"
elif [ "${CHECK_HAIP}" == 0 ] && [ "${STAT}" == fail ]
then
echo "CRITICAL: HA IP ${HAIP} is not up, machine is BACKUP. Should be MASTER."
exit "${CRITICAL}"
elif [ "${CHECK_HAIP}" == 1 ] && [ "${STAT}" == fail ]
then
echo "CRITICAL: HA IP ${HAIP} is up, but machine is BACKUP according to ${STAT_FILE}. Should be MASTER."
exit "${CRITICAL}"
else
echo "OK: HA IP ${HAIP} is up and machine is MASTER."
if [ "${STAT_SEC_IP}" == CRIT ]
then
exit "${CRITICAL}"
else
exit "${OK}"
fi
fi
elif [ "${TARGET_STATE}" = "${STATUS[1]}" ] # Machine is defined as BACKUP
then
case "${FILE_CONT}" in
MASTER ) STAT=fail
;;
BACKUP ) STAT=ok
;;
FAULT ) echo "CRITICAL: Machine status is FAULT."
exit "${CRITICAL}"
;;
* ) echo "CRITICAL: Status file contains unknown status or is empty."
exit "${CRITICAL}"
esac
if [ "${SEC_IP}" == "true" ] # 2nd ha instance
then
if [ "${CHECK_HAIP2}" == 1 ] && [ "${STAT}" == ok ]
then
echo "CRITICAL: 2nd HA IP ${HAIP2} is up but machine is BACKUP according to ${STAT_FILE}."
STAT_SEC_IP=CRIT
elif [ "${CHECK_HAIP2}" == 1 ] && [ "${STAT}" == fail ]
then
echo "WARNING: 2nd HA IP ${HAIP2} is up, machine is MASTER. Should be BACKUP."
elif [ "${CHECK_HAIP2}" == 0 ] && [ "${STAT}" == fail ]
then
echo "CRITICAL: 2nd HA IP ${HAIP2} is not up but machine is MASTER according to ${STAT_FILE}. Should be BACKUP."
else
echo "OK: 2nd HA IP ${HAIP2} is not up and machine is BACKUP."
fi
fi
if [ "${CHECK_HAIP}" == 1 ] && [ "${STAT}" == ok ] # Target-actual comparison machine state; IP should be down
then
echo "CRITICAL: HA IP ${HAIP} is up but machine is BACKUP according to ${STAT_FILE}."
exit "${CRITICAL}"
elif [ "${CHECK_HAIP}" == 1 ] && [ "${STAT}" == fail ]
then
echo "WARNING: HA IP ${HAIP} is up, machine is MASTER. Should be BACKUP."
exit "${WARNING}"
elif [ "${CHECK_HAIP}" == 0 ] && [ "${STAT}" == fail ]
then
echo "CRITICAL: HA IP ${HAIP} is not up but machine is MASTER according to ${STAT_FILE}. Should be BACKUP."
exit "${CRITICAL}"
else
echo "OK: HA IP ${HAIP} is not up and machine is BACKUP."
if [ "${STAT_SEC_IP}" == CRIT ]
then
exit "${CRITICAL}"
else
exit "${OK}"
fi
fi
else
echo "Unknown: Unknown status given. Check ${STAT_FILE} and script usage."
exit "${UNKNOWN}"
fi

4
check_keepalived/control Normal file
View file

@ -0,0 +1,4 @@
Uploaders: Jan Wagner <waja@cyconet.org>
Description: plugin checking keepalived status
Recommends: procps
Version: 0.0.1

View file

@ -0,0 +1,7 @@
Copyright (C) 2021 Stella Sieber / TMT GmbH & Co. KG
License: GPL+
On Debian systems, the complete text of the GNU General
Public License can be found in "/usr/share/common-licenses/GPL".

View file

@ -0,0 +1,3 @@
#/usr/bin/make -f
include ../common.mk

View file

@ -0,0 +1,402 @@
#!/usr/bin/perl
use strict;
my $VERSION = '0.1.1';
my $COPYRIGHT = 'Copyright (C) 2008 Jonathan Buhacoff <jonathan@buhacoff.net>';
my $LICENSE = 'http://www.gnu.org/licenses/gpl.txt';
my %status = ( 'OK' => 0, 'WARNING' => 1, 'CRITICAL' => 2, 'UNKNOWN' => 3 );
my $SERVICE = "MYSQL SLAVE";
# look for required modules
exit $status{UNKNOWN} unless load_modules(qw/Getopt::Long DBI DBD::mysql/);
Getopt::Long::Configure("bundling");
my $verbose = 0;
my $help = "";
my $help_usage = "";
my $show_version = "";
my $mysql_server = "";
my $default_mysql_port = "3306";
my $mysql_port = "";
my $warntime = 15;
my $criticaltime = 30;
my $timeout = 60;
my $username = "";
my $password = "";
my $ok;
$ok = Getopt::Long::GetOptions(
"V|version"=>\$show_version,
"v|verbose+"=>\$verbose,"h|help"=>\$help,"usage"=>\$help_usage,
"w|warning=i"=>\$warntime,"c|critical=i"=>\$criticaltime,"t|timeout=i"=>\$timeout,
# mysql settings
"H|hostname=s"=>\$mysql_server,"p|port=i"=>\$mysql_port,
"U|username=s"=>\$username,"P|password=s"=>\$password,
);
if( $show_version ) {
print "$VERSION\n";
if( $verbose ) {
print "Default warning threshold: $warntime seconds\n";
print "Default critical threshold: $criticaltime seconds\n";
print "Default timeout: $timeout seconds\n";
}
exit $status{UNKNOWN};
}
if( $help ) {
exec "perldoc", $0 or print "Try `perldoc $0`\n";
exit $status{UNKNOWN};
}
$help_usage = 1 unless $mysql_server and $username;
if( $help_usage ) {
print "Usage: $0 -H host [-p port] [-U username] [-P password] [-w <seconds>] [-c <seconds>]\n";
exit $status{UNKNOWN};
}
# initialize
my $report = new PluginReport;
my $time_start = time;
my $actual_response = undef;
# connect to MySQL server
$mysql_port = $default_mysql_port unless $mysql_port;
eval {
local $SIG{ALRM} = sub { die "exceeded timeout $timeout seconds\n" }; # NB: \n required, see `perldoc -f alarm`
alarm $timeout;
my $dbh = DBI->connect("DBI:mysql:host=$mysql_server;port=$mysql_port",$username,$password);
# get mysql version
my $version = undef;
my $sth_version = $dbh->prepare("SHOW VARIABLES LIKE 'version'");
$sth_version->execute;
while( my ($name,$value) = $sth_version->fetchrow_array) {
$version = $value if $name eq "version";
}
$report->{version} = $version || "";
$sth_version->finish;
# get slave status (should only be 1 result row)
my $sth_status = $dbh->prepare("SHOW SLAVE STATUS");
$sth_status->execute;
while( my $status = $sth_status->fetchrow_hashref) {
if( $verbose > 1 ) {
foreach( keys %$status ) {
print "$_ = $status->{$_} \n";
}
}
# mysql 3.23 has "Slave_Running" while 4.1 and above have "Slave_IO_Running" and "Slave_SQL_Running"
$report->{Running} = "No";
if( $version lt "4" ) {
$report->{Running} = "Yes" if $status->{Slave_Running};
$report->{file} = $status->{Log_File};
$report->{position} = $status->{Pos};
}
else {
$report->{Running} = "Yes" if $status->{Slave_IO_Running} eq "Yes" and $status->{Slave_SQL_Running} eq "Yes";
$report->{file} = $status->{Master_Log_File};
$report->{position} = $status->{Exec_Master_Log_Pos} . '/' . $status->{Read_Master_Log_Pos};
}
$report->{behind} = $status->{Seconds_Behind_Master};
# put the master host and its bin log file and position in the report
foreach( keys %$status ) {
$report->{$_} = $status->{$_};
}
}
$sth_status->finish;
# threshold for seconds behind master etc.
# $report->{behind} = ...
$report->{behind} ||= 0;
# $report->{saomethaisdf} ...
$dbh->disconnect;
};
if( $@ ) {
$@ = $DBI::errstr if $DBI::errstr; # these can be more helpful than "Can't call method prepare on an undefined value"
$@ =~ s/\n/ /g; # the error message can be multiline but we want our output to be just one line
print "$SERVICE CRITICAL - $@\n";
exit $status{CRITICAL};
}
my @warning = ();
my @critical = ();
# overall warnings/critical cerrors
push @critical, "not running $report->{Last_Error}" if $report->{Running} ne "Yes";
push @critical, "$report->{behind} secs behind master" if $report->{behind} > 30;
push @warning, "$report->{behind} secs behind master" if $report->{behind} > 0;
#push @warning, "connection time more than $warntime" if( $time_connected - $time_start > $warntime );
#push @critical, "connection time more than $criticaltime" if( $time_connected - $time_start > $criticaltime );
#push @critical, "response was $actual_response but expected $expect_response" if ( $actual_response ne $expect_response );
# on the number line, we need to test 6 cases:
# 0-----w-----c----->
# 0, 0<lag<w, w, w<lag<c, c, c<lag
# which we simplify to
# lag>=c, w<=lag<c, 0<=lag<warn
# print report and exit with known status
my $short_report = $report->text(qw/file position/);
my $long_report = join("", map { "$_: $report->{$_}\n" } qw/version Master_Host Log_File Pos/ );
if( scalar @critical ) {
my $crit_alerts = join(", ", @critical);
print "$SERVICE CRITICAL - $crit_alerts; $short_report\n";
print $long_report if $verbose;
exit $status{CRITICAL};
}
if( scalar @warning ) {
my $warn_alerts = join(", ", @warning);
print "$SERVICE WARNING - $warn_alerts; $short_report\n";
print $long_report if $verbose;
exit $status{WARNING};
}
print "$SERVICE OK - $short_report\n";
print $long_report if $verbose;
exit $status{OK};
# utility to load required modules. exits if unable to load one or more of the modules.
sub load_modules {
my @missing_modules = ();
foreach( @_ ) {
eval "require $_";
push @missing_modules, $_ if $@;
}
if( @missing_modules ) {
print "Missing perl modules: @missing_modules\n";
return 0;
}
return 1;
}
# NAME
# PluginReport
# SYNOPSIS
# $report = new PluginReport;
# $report->{label1} = "value1";
# $report->{label2} = "value2";
# print $report->text(qw/label1 label2/);
package PluginReport;
sub new {
my ($proto,%p) = @_;
my $class = ref($proto) || $proto;
my $self = bless {}, $class;
$self->{$_} = $p{$_} foreach keys %p;
return $self;
}
sub text {
my ($self,@labels) = @_;
my @report = map { "$_ $self->{$_}" } grep { defined $self->{$_} } @labels;
my $text = join(", ", @report);
return $text;
}
package main;
1;
__END__
=pod
=head1 NAME
check_mysql_slave - connects to a mysql replication slave and checks its status
=head1 SYNOPSIS
check_mysql_slave -H slave.server.net -U nagios -P passwd
check_mysql_slave -H slave.server.net -U nagios -P passwd -p 3306
check_mysql_slave --help
=head1 OPTIONS
=over
=item --warning <seconds>
Currently not used. There are other nagios plugins that will check if a server is responding to connections.
May be used in the future to specify how many bytes or seconds behind the master a slave may be.
Also known as: -w <seconds>
=item --critical <seconds>
Currently not used. There are other nagios plugins that will check if a server is responding to connections.
May be used in the future to specify how many bytes or seconds behind the master a slave may be.
Also known as: -c <seconds>
=item --timeout <seconds>
Abort with critical status if it takes longer than <seconds> to connect to the mysql server. Default is 60 seconds.
Also known as: -t <seconds>
=item --hostname <server>
Address or name of the MySQL slave server. Examples: mysql5.server.net, localhost, 192.168.1.100
Also known as: -H <server>
=item --port <number>
Service port on the MySQL server. Default is 3306.
Also known as: -p <number>
=item --username <username>
=item --password <password>
Username and password to use when connecting to the MySQL server.
Also known as: -U <username> -P <password>
=item --verbose
Display additional information. Useful for troubleshooting. Use together with --version to see the default
warning and critical timeout values.
Also known as: -v
=item --version
Display plugin version and exit.
Also known as: -V
=item --help
Display this documentation and exit. Does not work in the ePN version.
Also known as: -h
=item --usage
Display a short usage instruction and exit.
=back
=head1 EXAMPLES
=head2 Command line example
Check a slave listening on the standard MySQL port from the command line:
$ check_mysql_slave -H slave.server.net -U nagios -P 'password'
MYSQL SLAVE OK - file bin.000003, position 41267/41267
=head2 Nagios configuration example
I prefer to define this service on each slave:
define command {
command_name check_mysql_slave
command_line $USER1$/check_mysql_slave -H $HOSTADDRESS$ -p 3306 -U $ARG1$ -P $ARG2$
}
define service {
use your-service-template
host_name slave.server.net
service_description MySQL Replication Slave
check_command check_mysql_slave!nagios!password
}
But of course you could make the port number an argument and even define all your
slave replication services on the master mysql host and use the slave server's
hostname as an argument instead of HOSTADDRESS, like this:
command_line $USER1$/check_mysql_slave -H $ARG1$ -p $ARG2$ -U $ARG3$ -P $ARG4$
check_command check_mysql_slave!slave.server.net!3306!nagios!password
=head2 Nagios Embedded-Perl (ePN) example
The usage is the same, but use the embedded-perl version of the plugin:
command_line $USER1$/check_mysql_slave_epn -H $ARG1$ -p $ARG2$ -U $ARG3$ -P $ARG4$
=head1 EXIT CODES
This plugin complies with the Nagios plug-in specification:
0 OK The plugin was able to check the service and it appeared to be functioning properly
1 Warning The plugin was able to check the service, but it appeared to be above some "warning" threshold or did not appear to be working properly
2 Critical The plugin detected that either the service was not running or it was above some "critical" threshold
3 Unknown Invalid command line arguments were supplied to the plugin or the plugin was unable to check the status of the given hosts/service
=head1 NAGIOS PLUGIN NOTES
Nagios plugin reference: http://nagiosplug.sourceforge.net/developer-guidelines.html
This plugin does NOT use Nagios DEFAULT_SOCKET_TIMEOUT (provided by utils.pm as $TIMEOUT) because
the path to utils.pm must be specified completely in this program and forces users to edit the source
code if their install location is different (if they realize this is the problem). You can view
the default timeout for this module by using the --verbose and --version options together. The
short form is -vV.
Other than that, it attempts to follow published guidelines for Nagios plugins.
=head1 SECURITY AND MYSQL PRIVILEGES
This section concerns mysql administrators who want to grant only minimal privileges to
the nagios plugin (since its username and password are stored in the nagios config!).
The plugin executes the following commands on slave servers:
SHOW VARIABLES LIKE 'version';
SHOW SLAVE STATUS;
I recommend using the following minimal grants for the nagios plugin:
=head2 MySQL version 3.23
GRANT PROCESS ON *.* TO 'nagios'@'nagios.server.net' identified by 'password';
=head2 MySQL version 4.1
GRANT SUPER,REPLICATION CLIENT ON *.* TO 'nagios'@'nagios.server.net' identified by 'password';
=head2 MySQL version 5.0
GRANT SUPER,REPLICATION CLIENT ON *.* TO 'nagios'@'nagios.server.net' identified by 'password';
=head1 PERL MODULE NOTES
This plugin requires the following perl modules:
Getopt::Long
DBI
DBD::mysql
The manual for DBD::mysql states that a database is required in the connection string.
This is not true if you are only using global privileges such as usage, process, super,
or replication client without trying to open a specific database.
=head1 CHANGES
Tue Aug 19 17:46:02 PDT 2008
+ version 0.1
Wed Aug 20 07:58:16 PDT 2008
+ added helpful DBI error messages (access denied, incompatible versions, etc)
+ version 0.1.1
=head1 AUTHOR
Jonathan Buhacoff <jonathan@buhacoff.net>
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2008 Jonathan Buhacoff
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
http://www.gnu.org/licenses/gpl.txt
=cut

View file

@ -0,0 +1,5 @@
# 'check_mysql_slave' command definition
define command{
command_name check_slave_mysql
command_line /usr/lib/monitoring-plugins/check_mysql_slave -H '$HOSTADDRESS$' -p '$ARG3$' -U '$ARG1$' -P '$ARG2$'
}

View file

@ -0,0 +1,6 @@
Homepage: https://gist.github.com/natedaiger/48457
Watch: https://gist.github.com/natedaiger/48457/raw/check_mysql_slave.pl \$VERSION\ =\ '([0-9.]+)'
Uploaders: Jan Wagner <waja@cyconet.org>
Description: plugin that connects to a mysql replication slave and checks its status
Recommends: libdbd-mysql-perl
Version: 0.1.1

View file

@ -0,0 +1,7 @@
Copyright (c) 2008 Jonathan Buhacoff <jonathan@buhacoff.net>
License: GPL v2
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

14
check_nextcloud/Makefile Normal file
View file

@ -0,0 +1,14 @@
PLUGIN := check_nextcloud
CLEANFILES := check_nextcloud
DOCFILES := README.md
include ../common.mk
check_nextcloud:
cp check/$@.py $@
chmod 755 $@
install::
install -d $(DESTDIR)$(PLUGINDIR)
ln -s $(PLUGINDIR)/$(PLUGIN) $(DESTDIR)$(PLUGINDIR)/$(PLUGIN).py

78
check_nextcloud/README.md Normal file
View file

@ -0,0 +1,78 @@
# check_nextcloud
Nagios/Centreon plugin for nextcloud serverinfo API (https://github.com/nextcloud/serverinfo)
## Syntax / Help
```
./check_nextcloud.py -u username -p password -H cloud.example.com -c [system|storage|shares|webserver|php|database|users]
Options:
-h, --help show this help message and exit
-v, --version Print the version of this script
-u USERNAME, --username=USERNAME
Username of the user with administrative permissions
on the nextcloud server
-p PASSWORD, --password=PASSWORD
Password of the user
-H HOSTNAME, --hostname=HOSTNAME
Nextcloud server address (make sure that the address
is a trusted domain in the config.php)
-c CHECK, --check=CHECK
The thing you want to check
[system|storage|shares|webserver|php|database|activeUsers|uploadFilesize]
--upload-filesize Filesize in MiB, GiB without spaces (default="512.0GiB")
--protocol=PROTOCOL Protocol you want to use [http|https]
(default="https")
--ignore-proxy Ignore any configured proxy server on this system for
this request
--api-url=API_URL Url of the api
(default="/ocs/v2.php/apps/serverinfo/api/v1/info")
```
## Install
* Copy the check (python script) in your nagios/centreon plugins folder
* Create a check with the following command line:
```
$USER1$/plugins_custom/check_nextcloud.py -u $_HOSTCLOUDUSER$ -p $_HOSTCLOUDPWD$ -H $HOSTNAME$ -c $ARG1$ --ignore-proxy
```
or for the check: `uploadFilesize`
```
$USER1$/plugins_custom/check_nextcloud.py -u $_HOSTCLOUDUSER$ -p $_HOSTCLOUDPWD$ -H $HOSTNAME$ -c $ARG1$ --upload-filesize=$ARG2$ --ignore-proxy
```
* Create a service for each thing you want to check (system, storage, etc.) and link it to your host(s)
* Add the credentials of your nextcloud admin user as custom macro (CLOUDUSER, COUDPWD) to your host.
## Example 1
```
./check_nextcloud.py -u adminUser -p secretPassword -H cloud.example.com -c system --ignore-proxy
OK - Nextcloud version: 12.0.3.3
```
## Example 2
```
./check_nextcloud.py -u adminUser -p secretPassword -H cloud.example.com -c activeUsers --ignore-proxy
OK - Last 5 minutes: 3 user(s), last 1 hour: 10 user(s), last 24 hour: 44 user(s) | users_last_5_minutes=3, users_last_1_hour=10, users_last_24_hours=44
```
This will return a status message and create a graph based on the performance data.
## Example 3
```
./check_nextcloud.py -u adminUser -p secretPassword -H cloud.example.com -c uploadFilesize --upload-filesize=2.0GiB --ignore-proxy
OK - Upload max filesize: 2.0GiB
# Or, when changed after an update...
CRITICAL - Upload max filesize is set to 512.0MiB, but should be 2.0GiB
```

View file

@ -0,0 +1,297 @@
#!/usr/bin/python
###############################################################################################################
# Language : Python 3
# Filename : check_nextcloud.py
# Autor : https://github.com/BornToBeRoot
# Description : Nagios/Centreon plugin for nextcloud serverinfo API (https://github.com/nextcloud/serverinfo)
# Repository : https://github.com/BornToBeRoot/check_nextcloud
###############################################################################################################
### Changelog ###
#
# ~~ Version 1.2 ~~
# - Parameter "--ignore-sslcert" added. (Note: If you use an ip address as hostname... you need to add the ip
# address as trusted domain in the config.php)
# - Parameter "--perfdata-format" added [centreon|nagios] (default="centreon")
# ~~ Version 1.3 ~~
# - Check for app updates added (Thanks @thinkl33t)
# ~~ Version 1.4 ~~
# - Parameter "--nc-token" added (Thanks @sblatt)
# ~~ Version 2.0 ~~
# - Migrated from Python 2.7 to 3 (Thanks @waja)
#
#################
import urllib.request, urllib.error, urllib.parse, base64, xml.etree.ElementTree, sys, traceback, ssl, re
# Some helper functions
def calc_size_suffix(num, suffix='B'):
for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']:
if abs(num) < 1024.0:
return "%3.1f%s%s" % (num, unit, suffix)
num /= 1024.0
return "%.1f%s%s" % (num, 'Yi', suffix)
def calc_size_nagios(num, suffix='B'):
for unit in ['','K','M','G','T','P','E','Z']:
if abs(num) < 1000.0:
return "%3.1f%s%s" % (num, unit, suffix)
num /= 1000.0
return "%.1f%s%s" % (num, 'Y', suffix)
# Command line parser
from optparse import OptionParser
parser = OptionParser(usage='%prog -u username -p password -H cloud.example.com -c [system|storage|shares|webserver|php|database|activeUsers|uploadFilesize|apps]')
parser.add_option('-v', '--version', dest='version', default=False, action='store_true', help='Print the version of this script')
parser.add_option('-u', '--username', dest='username', type='string', help='Username of the user with administrative permissions on the nextcloud server')
parser.add_option('-p', '--password', dest='password', type='string', help='Password of the user')
parser.add_option('-t', '--nc-token', dest='nc_token', type='string', help='Token to access the nextcloud serverinfo api. You can generate the token with "occ config:app:set serverinfo token --value yourtoken"; replaces username/password')
parser.add_option('-H', '--hostname', dest='hostname', type='string', help='Nextcloud server address (make sure that the address is a trusted domain in the config.php)')
parser.add_option('-c', '--check', dest='check', choices=['system','storage','shares','webserver','php','database','activeUsers','uploadFilesize','apps'], help='The thing you want to check [system|storage|shares|webserver|php|database|activeUsers|uploadFilesize|apps]')
parser.add_option('--perfdata-format', dest='perfdata_format', default='centreon', choices=['centreon','nagios'], help='Format for the performance data [centreon|nagios] (default="centreon")')
parser.add_option('--upload-filesize', dest='upload_filesize', default='512.0MiB', help='Filesize in MiB, GiB without spaces (default="512.0MiB")')
parser.add_option('--protocol', dest='protocol', choices=['https', 'http'], default='https', help='Protocol you want to use [http|https] (default="https")')
parser.add_option('--ignore-proxy', dest='ignore_proxy', default=False, action='store_true', help='Ignore any configured proxy server on this system for this request (default="false")')
parser.add_option('--ignore-sslcert', dest='ignore_sslcert', default=False, action='store_true', help='Ignore ssl certificate (default="false")')
parser.add_option('--api-url', dest='api_url', type='string', default='/ocs/v2.php/apps/serverinfo/api/v1/info', help='Url of the api (default="/ocs/v2.php/apps/serverinfo/api/v1/info")')
(options, args) = parser.parse_args()
# Print the version of this script
if options.version:
print('Version 2.0')
sys.exit(0)
# Validate the user input...
if not options.username and not options.password and not options.hostname and not options.check:
parser.print_help()
sys.exit(3)
if not options.username and not options.nc_token:
parser.error('Username or nc-token is required, use parameter [-u|--username] or [--nc-token].')
sys.exit(3)
if not options.password and not options.nc_token:
parser.error('Password or nc-token is required, use parameter [-p|--password] or [--nc-token].')
sys.exit(3)
if not options.hostname:
parser.error('Hostname is required, use parameter [-H|--hostname]')
sys.exit(3)
if not options.check:
parser.error('Check is required, use parameter [-c|--check]')
sys.exit(3)
# Re-validate the hostname given by the user (make sure they dont entered a "https://", "http://" or "/")
url_strip = re.compile(r"https?://")
hostname = url_strip.sub('', options.hostname).split('/')[0]
# Re-validate the api_url
if options.api_url.startswith('/'):
api_url = options.api_url
else:
api_url = '/{0}'.format(options.api_url)
# Create the url to access the api
url = '{0}://{1}{2}'.format(options.protocol, hostname, api_url)
# Encode credentials as base64
credential = base64.b64encode(bytes('%s:%s' % (options.username, options.password), 'ascii'))
try:
# Create the request
request = urllib.request.Request(url)
# Add the token header
if options.nc_token:
request.add_header('NC-Token',"%s" % options.nc_token)
else:
# Add the authentication and api request header
request.add_header("Authorization", "Basic %s" % credential.decode('utf-8'))
request.add_header('OCS-APIRequest','true')
# SSL/TLS certificate validation (see: https://stackoverflow.com/questions/19268548/python-ignore-certificate-validation-urllib2)
ctx = ssl.create_default_context()
if(options.ignore_sslcert):
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
# Proxy handler
if(options.ignore_proxy):
proxy_handler = urllib.request.ProxyHandler({})
ctx_handler = urllib.request.HTTPSHandler(context=ctx)
opener = urllib.request.build_opener(proxy_handler, ctx_handler)
response = opener.open(request)
else:
response = urllib.request.urlopen(request, context=ctx)
# Read the content
content = response.read()
except urllib.error.HTTPError as error: # User is not authorized (401)
print('UNKOWN - [WEBREQUEST] {0} {1}'.format(error.code, error.reason))
sys.exit(3)
except urllib.error.URLError as error: # Connection has timed out (wrong url / server down)
print('UNKOWN - [WEBREQUEST] {0}'.format(str(error.reason).split(']')[0].strip()))
sys.exit(3)
try:
# Convert the webrequest response to xml
xml_root = xml.etree.ElementTree.fromstring(content)
except xml.etree.ElementTree.ParseError:
print('UNKOWN - [XML] Content contains no or wrong xml data... check the url and if the api is reachable!')
sys.exit(3)
# Check if the xml is valid and the api gives usefull informations
try:
# Get the meta informations
xml_meta = xml_root.find('meta')
xml_meta_status = str(xml_meta.find('status').text)
xml_meta_statuscode = int(xml_meta.find('statuscode').text)
xml_meta_message = str(xml_meta.find('message').text)
# Check the meta informations
if not (xml_meta_status == 'ok' and xml_meta_statuscode == 200 and xml_meta_message == 'OK'):
print('UNKOWN - [API] invalid meta data... status: {0}, statuscode: {1}, message: {2}'.format(xml_meta_status, xml_meta_statuscode, xml_meta_message))
sys.exit(3)
except AttributeError:
print('UNKOWN - [XML] Content contains no or wrong xml data... check the url and if the api is reachable!')
sys.exit(3)
# Performance data format
perfdata_format = "" # nagios
if(options.perfdata_format == 'centreon'): # centreon
perfdata_format = ","
# Get the nextcloud version...
# [output]
if options.check == 'system':
xml_system = xml_root.find('data').find('nextcloud').find('system')
xml_system_version = str(xml_system.find('version').text)
print('OK - Nextcloud version: {0}'.format(xml_system_version))
sys.exit(0)
# Get informations about the storage
# [output + performance data]
if options.check == 'storage':
xml_storage = xml_root.find('data').find('nextcloud').find('storage')
xml_storage_users = int(xml_storage.find('num_users').text)
xml_storage_files = int(xml_storage.find('num_files').text)
xml_storage_storages = int(xml_storage.find('num_storages').text)
xml_storage_storages_local = int(xml_storage.find('num_storages_local').text)
xml_storage_storages_home = int(xml_storage.find('num_storages_home').text)
xml_storage_storages_other = int(xml_storage.find('num_storages_other').text)
print('OK - Users: {1}, files: {2}, storages: {3}, storages local: {4}, storages home: {5}, storages other: {6} | users={1}{0} files={2}{0} storages={3}{0} storages_local={4}{0} storages_home={5}{0} storage_other={6}'.format(perfdata_format, xml_storage_users, xml_storage_files, xml_storage_storages, xml_storage_storages_local, xml_storage_storages_home, xml_storage_storages_other))
sys.exit(0)
# Get informations about the shares
# [output + performance data]
if options.check == 'shares':
xml_shares = xml_root.find('data').find('nextcloud').find('shares')
xml_shares_shares = int(xml_shares.find('num_shares').text)
xml_shares_shares_user = int(xml_shares.find('num_shares_user').text)
xml_shares_shares_groups = int(xml_shares.find('num_shares_groups').text)
xml_shares_shares_link = int(xml_shares.find('num_shares_link').text)
xml_shares_shares_link_no_password = int(xml_shares.find('num_shares_link_no_password').text)
xml_shares_fed_shares_sent = int(xml_shares.find('num_fed_shares_sent').text)
xml_shares_fed_shares_received = int(xml_shares.find('num_fed_shares_received').text)
print('OK - Shares: {1}, shares user: {2}, shares groups: {3}, shares link: {4}, shares link no password: {5}, shares federation sent: {6}, shares federation received: {7} | shares={1}{0} shares_user={2}{0} shares_groups={3}{0} shares_link={4}{0} shares_link_no_password={5}{0} federation_shares_sent={6}{0} federation_shares_received={7}'.format(perfdata_format, xml_shares_shares, xml_shares_shares_user, xml_shares_shares_groups, xml_shares_shares_link, xml_shares_shares_link_no_password, xml_shares_fed_shares_sent, xml_shares_fed_shares_received))
sys.exit(0)
# Get informations about the webserver
# [output]
if options.check == 'webserver':
xml_webserver = str(xml_root.find('data').find('server').find('webserver').text)
print('OK - Webserver: {0}'.format(xml_webserver))
sys.exit(0)
# Get informations about php
# [output]
if options.check == 'php':
xml_php = xml_root.find('data').find('server').find('php')
xml_php_version = str(xml_php.find('version').text)
xml_php_memory_limit = int(xml_php.find('memory_limit').text)
xml_php_max_execution_time = str(xml_php.find('max_execution_time').text)
xml_php_upload_max_filesize = int(xml_php.find('upload_max_filesize').text)
print('OK - PHP version: {0}, memory limit {1}, max execution time: {2}s, upload max filesize: {3}'.format(xml_php_version, calc_size_suffix(xml_php_memory_limit), xml_php_max_execution_time, calc_size_suffix(xml_php_upload_max_filesize)))
sys.exit(0)
# Get informations about the database
# [output + performance data]
if options.check == 'database':
xml_database = xml_root.find('data').find('server').find('database')
xml_database_type = str(xml_database.find('type').text)
xml_database_version = str(xml_database.find('version').text)
xml_database_size = float(xml_database.find('size').text)
print('OK - Database: {0}, version {1}, size: {2} | database_size={3}'.format(xml_database_type, xml_database_version, calc_size_suffix(xml_database_size), calc_size_nagios(xml_database_size)))
sys.exit(0)
# Check the active users
# [output + performance data]
if options.check == 'activeUsers':
xml_activeUsers = xml_root.find('data').find('activeUsers')
xml_activeUsers_last5minutes = int(xml_activeUsers.find('last5minutes').text)
xml_activeUsers_last1hour = int(xml_activeUsers.find('last1hour').text)
xml_activeUsers_last24hours = int(xml_activeUsers.find('last24hours').text)
print('OK - Last 5 minutes: {1} user(s), last 1 hour: {2} user(s), last 24 hour: {3} user(s) | users_last_5_minutes={1}{0} users_last_1_hour={2}{0} users_last_24_hours={3}'.format(perfdata_format, xml_activeUsers_last5minutes, xml_activeUsers_last1hour, xml_activeUsers_last24hours))
sys.exit(0)
if options.check == 'uploadFilesize':
xml_php = xml_root.find('data').find('server').find('php')
# Get upload max filesize
xml_php_upload_max_filesize = int(xml_php.find('upload_max_filesize').text)
# Convert
upload_max_filesize = calc_size_suffix(xml_php_upload_max_filesize)
if options.upload_filesize == upload_max_filesize:
print('OK - Upload max filesize: {0}'.format(upload_max_filesize))
sys.exit(0)
else:
print('CRITICAL - Upload max filesize is set to {0}, but should be {1}'.format(upload_max_filesize, options.upload_filesize))
sys.exit(2)
# Get informations about any app updates
# [output]
if options.check == 'apps':
xml_apps = xml_root.find('data').find('nextcloud').find('system').find('apps')
xml_apps_num_updates_available = int(xml_apps.find('num_updates_available').text)
if xml_apps_num_updates_available == 0:
print('OK - No apps requiring update')
sys.exit(0)
else:
xml_apps_updates = xml_apps.find('app_updates')
xml_apps_list = []
for app in xml_apps_updates:
xml_apps_list.append('{0}->{1}'.format(app.tag, app.text))
print('WARNING - {0} apps require update: {1}'.format(xml_apps_num_updates_available, ' ,'.join(xml_apps_list)))
sys.exit(1)

View file

@ -0,0 +1,5 @@
# 'check_nextcloud' command definition
define command{
command_name check_nextcloud
command_line /usr/lib/monitoring-plugins/check_nextcloud -H $HOSTADDRESS$ $ARG1$
}

6
check_nextcloud/control Normal file
View file

@ -0,0 +1,6 @@
Uploaders: Jan Wagner <waja@cyconet.org>
Recommends: python3-minimal
Version: 2.0
Homepage: https://github.com/BornToBeRoot/check_nextcloud
Watch: https://raw.githubusercontent.com/BornToBeRoot/check_nextcloud/master/check/check_nextcloud.py # ~~ Version ([0-9.]+) ~~
Description: Plugin script to monitor your nextcloud serverinfo API

13
check_nextcloud/copyright Normal file
View file

@ -0,0 +1,13 @@
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

View file

@ -0,0 +1,3 @@
#/usr/bin/make -f
include ../common.mk

View file

@ -0,0 +1,471 @@
#!/usr/bin/env perl -w
# check_nginx_status.pl
# Author : regis.leroy at makina-corpus.com
# Licence : GPL - http://www.fsf.org/licenses/gpl.txt
#
# help : ./check_nginx_status.pl -h
#
# issues & updates: http://github.com/regilero/check_nginx_status
use strict;
use Getopt::Long;
use LWP::UserAgent;
use Time::HiRes qw(gettimeofday tv_interval);
use Digest::MD5 qw(md5 md5_hex);
use FindBin;
# Nagios specific
use lib $FindBin::Bin;
use utils qw($TIMEOUT);
# Globals
my $Version='0.20';
my $Name=$0;
my $o_host = undef; # hostname
my $o_help= undef; # want some help ?
my $o_port= undef; # port
my $o_url = undef; # url to use, if not the default
my $o_user= undef; # user for auth
my $o_pass= ''; # password for auth
my $o_realm= ''; # password for auth
my $o_version= undef; # print version
my $o_warn_a_level= -1; # Number of active connections that will cause a warning
my $o_crit_a_level= -1; # Number of active connections that will cause an error
my $o_warn_rps_level= -1; # Number of Request per second that will cause a warning
my $o_crit_rps_level= -1; # Number of request Per second that will cause an error
my $o_warn_cps_level= -1; # Number of Connections per second that will cause a warning
my $o_crit_cps_level= -1; # Number of Connections per second that will cause an error
my $o_timeout= 15; # Default 15s Timeout
my $o_warn_thresold= undef; # warning thresolds entry
my $o_crit_thresold= undef; # critical thresolds entry
my $o_debug= undef; # debug mode
my $o_servername= undef; # ServerName (host header in http request)
my $o_https= undef; # SSL (HTTPS) mode
my $o_disable_sslverifyhostname = 0;
my $TempPath = '/tmp/'; # temp path
my $MaxTimeDif = 60*30; # Maximum uptime difference (seconds), default 30 minutes
my $nginx = 'NGINX'; # Could be used to store version also
# functions
sub show_versioninfo { print "$Name version : $Version\n"; }
sub print_usage {
print "Usage: $Name -H <host ip> [-p <port>] [-s servername] [-t <timeout>] [-w <WARN_THRESOLD> -c <CRIT_THRESOLD>] [-V] [-d] [-u <url>] [-U user -P pass -r realm]\n";
}
sub nagios_exit {
my ( $nickname, $status, $message, $perfdata , $silent) = @_;
my %STATUSCODE = (
'OK' => 0
, 'WARNING' => 1
, 'CRITICAL' => 2
, 'UNKNOWN' => 3
, 'PENDING' => 4
);
if(!defined($silent)) {
my $output = undef;
$output .= sprintf('%1$s %2$s - %3$s', $nickname, $status, $message);
if ($perfdata) {
$output .= sprintf('|%1$s', $perfdata);
}
$output .= chr(10);
print $output;
}
exit $STATUSCODE{$status};
}
# Get the alarm signal
$SIG{'ALRM'} = sub {
nagios_exit($nginx,"CRITICAL","ERROR: Alarm signal (Nagios timeout)");
};
sub help {
print "Nginx Monitor for Nagios version ",$Version,"\n";
print "GPL licence, (c)2012 Leroy Regis\n\n";
print_usage();
print <<EOT;
-h, --help
print this help message
-H, --hostname=HOST
name or IP address of host to check
-p, --port=PORT
Http port
-u, --url=URL
Specific URL to use, instead of the default "http://<hostname or IP>/nginx_status"
-s, --servername=SERVERNAME
ServerName, (host header of HTTP request) use it if you specified an IP in -H to match the good Virtualhost in your target
-S, --ssl
Wether we should use HTTPS instead of HTTP
--disable-sslverifyhostname
Disable SSL hostname verification
-U, --user=user
Username for basic auth
-P, --pass=PASS
Password for basic auth
-r, --realm=REALM
Realm for basic auth
-d, --debug
Debug mode (show http request response)
-m, --maxreach=MAX
Number of max processes reached (since last check) that should trigger an alert
-t, --timeout=INTEGER
timeout in seconds (Default: $o_timeout)
-w, --warn=ACTIVE_CONN,REQ_PER_SEC,CONN_PER_SEC
number of active connections, ReqPerSec or ConnPerSec that will cause a WARNING
-1 for no warning
-c, --critical=ACTIVE_CONN,REQ_PER_SEC,CONN_PER_SEC
number of active connections, ReqPerSec or ConnPerSec that will cause a CRITICAL
-1 for no CRITICAL
-V, --version
prints version number
Note :
3 items can be managed on this check, this is why -w and -c parameters are using 3 values thresolds
- ACTIVE_CONN: Number of all opened connections, including connections to backends
- REQ_PER_SEC: Average number of request per second between this check and the previous one
- CONN_PER_SEC: Average number of connections per second between this check and the previous one
Examples:
This one will generate WARNING and CRITICIAL alerts if you reach 10 000 or 20 000 active connection; or
100 or 200 request per second; or 200 or 300 connections per second
check_nginx_status.pl -H 10.0.0.10 -u /foo/nginx_status -s mydomain.example.com -t 8 -w 10000,100,200 -c 20000,200,300
this will generate WARNING and CRITICAL alerts only on the number of active connections (with low numbers for nginx)
check_nginx_status.pl -H 10.0.0.10 -s mydomain.example.com -t 8 -w 10,-1,-1 -c 20,-1,-1
theses two equivalents will not generate any alert (if the nginx_status page is reachable) but could be used for graphics
check_nginx_status.pl -H 10.0.0.10 -s mydomain.example.com -w -1,-1,-1 -c -1,-1,-1
check_nginx_status.pl -H 10.0.0.10 -s mydomain.example.com
EOT
}
sub check_options {
Getopt::Long::Configure ("bundling");
GetOptions(
'h' => \$o_help, 'help' => \$o_help,
'd' => \$o_debug, 'debug' => \$o_debug,
'H:s' => \$o_host, 'hostname:s' => \$o_host,
's:s' => \$o_servername, 'servername:s' => \$o_servername,
'S:s' => \$o_https, 'ssl:s' => \$o_https,
'u:s' => \$o_url, 'url:s' => \$o_url,
'U:s' => \$o_user, 'user:s' => \$o_user,
'P:s' => \$o_pass, 'pass:s' => \$o_pass,
'r:s' => \$o_realm, 'realm:s' => \$o_realm,
'p:i' => \$o_port, 'port:i' => \$o_port,
'V' => \$o_version, 'version' => \$o_version,
'w:s' => \$o_warn_thresold,'warn:s' => \$o_warn_thresold,
'c:s' => \$o_crit_thresold,'critical:s' => \$o_crit_thresold,
't:i' => \$o_timeout, 'timeout:i' => \$o_timeout,
'disable-sslverifyhostname' => \$o_disable_sslverifyhostname,
);
if (defined ($o_help)) {
help();
nagios_exit($nginx,"UNKNOWN","leaving","",1);
}
if (defined($o_version)) {
show_versioninfo();
nagios_exit($nginx,"UNKNOWN","leaving","",1);
};
if (defined($o_warn_thresold)) {
($o_warn_a_level,$o_warn_rps_level,$o_warn_cps_level) = split(',', $o_warn_thresold);
}
if (defined($o_crit_thresold)) {
($o_crit_a_level,$o_crit_rps_level,$o_crit_cps_level) = split(',', $o_crit_thresold);
}
if (defined($o_debug)) {
print("\nDebug thresolds: \nWarning: ($o_warn_thresold) => Active: $o_warn_a_level ReqPerSec :$o_warn_rps_level ConnPerSec: $o_warn_cps_level");
print("\nCritical ($o_crit_thresold) => : Active: $o_crit_a_level ReqPerSec: $o_crit_rps_level ConnPerSec : $o_crit_cps_level\n");
}
if ((defined($o_warn_a_level) && defined($o_crit_a_level)) &&
(($o_warn_a_level != -1) && ($o_crit_a_level != -1) && ($o_warn_a_level >= $o_crit_a_level)) ) {
nagios_exit($nginx,"UNKNOWN","Check warning and critical values for Active Process (1st part of thresold), warning level must be < crit level!");
}
if ((defined($o_warn_rps_level) && defined($o_crit_rps_level)) &&
(($o_warn_rps_level != -1) && ($o_crit_rps_level != -1) && ($o_warn_rps_level >= $o_crit_rps_level)) ) {
nagios_exit($nginx,"UNKNOWN","Check warning and critical values for ReqPerSec (2nd part of thresold), warning level must be < crit level!");
}
if ((defined($o_warn_cps_level) && defined($o_crit_cps_level)) &&
(($o_warn_cps_level != -1) && ($o_crit_cps_level != -1) && ($o_warn_cps_level >= $o_crit_cps_level)) ) {
nagios_exit($nginx,"UNKNOWN","Check warning and critical values for ConnPerSec (3rd part of thresold), warning level must be < crit level!");
}
# Check compulsory attributes
if (!defined($o_host)) {
print_usage();
nagios_exit($nginx,"UNKNOWN","-H host argument required");
}
}
########## MAIN ##########
check_options();
my $override_ip = $o_host;
my $ua = LWP::UserAgent->new(
protocols_allowed => ['http', 'https'],
timeout => $o_timeout
);
if ( $o_disable_sslverifyhostname ) {
$ua->ssl_opts( 'verify_hostname' => 0 );
}
# we need to enforce the HTTP request is made on the Nagios Host IP and
# not on the DNS related IP for that domain
@LWP::Protocol::http::EXTRA_SOCK_OPTS = ( PeerAddr => $override_ip );
# this prevent used only once warning in -w mode
my $ua_settings = @LWP::Protocol::http::EXTRA_SOCK_OPTS;
my $timing0 = [gettimeofday];
my $response = undef;
my $url = undef;
if (!defined($o_url)) {
$o_url='/nginx_status';
} else {
# ensure we have a '/' as first char
$o_url = '/'.$o_url unless $o_url =~ m(^/)
}
my $proto='http://';
if(defined($o_https)) {
$proto='https://';
if (defined($o_port) && $o_port!=443) {
if (defined ($o_debug)) {
print "\nDEBUG: Notice: port is defined at $o_port and not 443, check you really want that in SSL mode! \n";
}
}
}
if (defined($o_servername)) {
if (!defined($o_port)) {
$url = $proto . $o_servername . $o_url;
} else {
$url = $proto . $o_servername . ':' . $o_port . $o_url;
}
} else {
if (!defined($o_port)) {
$url = $proto . $o_host . $o_url;
} else {
$url = $proto . $o_host . ':' . $o_port . $o_url;
}
}
if (defined ($o_debug)) {
print "\nDEBUG: HTTP url: \n";
print $url;
}
my $req = HTTP::Request->new( GET => $url );
if (defined($o_servername)) {
$req->header('Host' => $o_servername);
}
if (defined($o_user)) {
$req->authorization_basic($o_user, $o_pass);
}
if (defined ($o_debug)) {
print "\nDEBUG: HTTP request: \n";
print "IP used (better if it's an IP):" . $override_ip . "\n";
print $req->as_string;
}
$response = $ua->request($req);
my $timeelapsed = tv_interval ($timing0, [gettimeofday]);
my $InfoData = '';
my $PerfData = '';
#my @Time = (localtime); # list context and not scalar as we want the brutal timestamp
my $Time = time;
my $webcontent = undef;
if ($response->is_success) {
$webcontent=$response->decoded_content;
if (defined ($o_debug)) {
print "\nDEBUG: HTTP response:";
print $response->status_line;
print "\n".$response->header('Content-Type');
print "\n";
print $webcontent;
}
if ($response->header('Content-Type') =~ m/text\/html/) {
nagios_exit($nginx,"CRITICAL", "We have a response page for our request, but it's an HTML page, quite certainly not the status report of nginx");
}
# example of response content expected:
#Active connections: 10
#server accepts handled requests
#38500 38500 50690
#Reading: 5 Writing: 5 Waiting: 0
# number of all open connections including connections to backends
my $ActiveConn = 0;
if($webcontent =~ m/Active connections: (.*?)\n/) {
$ActiveConn = $1;
# triming
$ActiveConn =~ s/^\s+|\s+$//g;
}
# 3 counters with a space: accepted conn, handled conn and number of requests
my $counters = '';
my $AcceptedConn = 0;
my $HandledConn = 0;
my $NbRequests = 0;
if($webcontent =~ m/\nserver accepts handled requests\n(.*?)\n/) {
$counters = $1;
# triming
$counters =~ s/^\s+|\s+$//g;
#splitting
($AcceptedConn,$HandledConn,$NbRequests) = split(' ', $counters);
# triming
$AcceptedConn =~ s/^\s+|\s+$//g;
$HandledConn =~ s/^\s+|\s+$//g;
$NbRequests =~ s/^\s+|\s+$//g;
}
# nginx reads request header
my $Reading = 0;
# nginx reads request body, processes request, or writes response to a client
my $Writing = 0;
# keep-alive connections, actually it is active - (reading + writing)
my $Waiting = 0;
if($webcontent =~ m/Reading: (.*?)Writing: (.*?)Waiting: (.*?)$/) {
$Reading = $1;
$Writing = $2;
$Waiting = $3;
# triming
$Reading =~ s/^\s+|\s+$//g;
$Writing =~ s/^\s+|\s+$//g;
$Waiting =~ s/^\s+|\s+$//g;
}
# Debug
if (defined ($o_debug)) {
print ("\nDEBUG Parse results => Active :" . $ActiveConn . "\nAcceptedConn :" . $AcceptedConn . "\nHandledConn :" . $HandledConn . "\nNbRequests :".$NbRequests . "\nReading :" .$Reading . "\nWriting :" . $Writing . "\nWaiting :" . $Waiting . "\n");
}
my $TempFile = $TempPath.$o_host.'_check_nginx_status'.md5_hex($url);
my $FH;
my $LastTime = 0;
my $LastAcceptedConn = 0;
my $LastHandledConn = 0;
my $LastNbRequests = 0;
if ((-e $TempFile) && (-r $TempFile) && (-w $TempFile)) {
open ($FH, '<',$TempFile) or nagios_exit($nginx,"UNKNOWN","unable to read temporary data from :".$TempFile);
$LastTime = <$FH>;
$LastAcceptedConn = <$FH>;
$LastHandledConn = <$FH>;
$LastNbRequests = <$FH>;
close ($FH);
if (defined ($o_debug)) {
print ("\nDebug: data from temporary file: $TempFile\n");
print (" LastTime: $LastTime LastAcceptedConn: $LastAcceptedConn LastHandledConn: $LastHandledConn LastNbRequests: $LastNbRequests \n");
}
}
open ($FH, '>'.$TempFile) or nagios_exit($nginx,"UNKNOWN","unable to write temporary data in :".$TempFile);
#print $FH (@Time),"\n";
print $FH "$Time\n";
print $FH "$AcceptedConn\n";
print $FH "$HandledConn\n";
print $FH "$NbRequests\n";
close ($FH);
my $ConnPerSec = 0;
my $ReqPerSec = 0;
my $RequestsNew = 0;
# by default the average
my $ReqPerConn = 0;
if ($AcceptedConn > 0) {
$ReqPerConn = $NbRequests/$AcceptedConn;
}
my $elapsed = $Time - $LastTime ;
if (defined ($o_debug)) {
print ("\nDebug: pre-computation\n");
print ("Average ReqPerconn: $ReqPerConn, Seconds elapsed Since last check: $elapsed\n");
}
# check only if the counters may have been incremented
# but not if it may have been too much incremented
# if nginx was restarted ($NbRequests is now lower than previous value), just skip
if ( ($elapsed < $MaxTimeDif) && ($elapsed != 0) && ($NbRequests >= $LastNbRequests) ) {
$ConnPerSec = ($AcceptedConn-$LastAcceptedConn)/$elapsed;
$RequestsNew = $NbRequests-$LastNbRequests;
$ReqPerSec = $RequestsNew/$elapsed;
# get finer value
if ( $ConnPerSec!=0 ) {
my $ReqPerConn = $ReqPerSec/$ConnPerSec;
} else {
my $ReqPerConn = 0;
}
}
if (defined ($o_debug)) {
print ("\nDebug: data computed\n");
print ("ConnPerSec: $ConnPerSec ReqPerSec: $ReqPerSec ReqPerConn: $ReqPerConn\n");
}
$InfoData = sprintf (" %.3f sec. response time, Active: %d (Writing: %d Reading: %d Waiting: %d)"
. " ReqPerSec: %.3f ConnPerSec: %.3f ReqPerConn: %.3f"
,$timeelapsed,$ActiveConn,$Writing,$Reading,$Waiting,$ReqPerSec,$ConnPerSec,$ReqPerConn);
# Manage warn and crit values for the perfdata
my $p_warn_a_level = "$o_warn_a_level";
my $p_crit_a_level = "$o_crit_a_level";
my $p_warn_rps_level = "$o_warn_rps_level";
my $p_crit_rps_level = "$o_crit_rps_level";
my $p_warn_cps_level = "$o_warn_cps_level";
my $p_crit_cps_level = "$o_crit_cps_level";
if ($p_warn_a_level == "-1") {
$p_warn_a_level = "";
}
if ($p_crit_a_level == "-1") {
$p_crit_a_level = "";
}
if ($p_warn_rps_level == "-1") {
$p_warn_rps_level = "";
}
if ($p_crit_rps_level == "-1") {
$p_crit_rps_level = "";
}
if ($p_warn_cps_level == "-1") {
$p_warn_cps_level = "";
}
if ($p_crit_cps_level == "-1") {
$p_crit_cps_level = "";
}
$PerfData = sprintf ("Writing=%d;;;; Reading=%d;;;; Waiting=%d;;;; Active=%d;%s;%s;; "
. "ReqPerSec=%f;%s;%s;; ConnPerSec=%f;%s;%s;; ReqPerConn=%f;;;;"
,($Writing),($Reading),($Waiting),($ActiveConn)
,($p_warn_a_level),($p_crit_a_level)
,($ReqPerSec),($p_warn_rps_level),($p_crit_rps_level)
,($ConnPerSec),($p_warn_cps_level),($p_crit_cps_level)
,($ReqPerConn));
# first all critical exists by priority
if (defined($o_crit_a_level) && (-1!=$o_crit_a_level) && ($ActiveConn >= $o_crit_a_level)) {
nagios_exit($nginx,"CRITICAL", "Active Connections are critically high " . $InfoData,$PerfData);
}
if (defined($o_crit_rps_level) && (-1!=$o_crit_rps_level) && ($ReqPerSec >= $o_crit_rps_level)) {
nagios_exit($nginx,"CRITICAL", "Request per second ratios is critically high " . $InfoData,$PerfData);
}
if (defined($o_crit_cps_level) && (-1!=$o_crit_cps_level) && ($ConnPerSec >= $o_crit_cps_level)) {
nagios_exit($nginx,"CRITICAL", "Connection per second ratio is critically high " . $InfoData,$PerfData);
}
# Then WARNING exits by priority
if (defined($o_warn_a_level) && (-1!=$o_warn_a_level) && ($ActiveConn >= $o_warn_a_level)) {
nagios_exit($nginx,"WARNING", "Active Connections are high " . $InfoData,$PerfData);
}
if (defined($o_warn_rps_level) && (-1!=$o_warn_rps_level) && ($ReqPerSec >= $o_warn_rps_level)) {
nagios_exit($nginx,"WARNING", "Requests per second ratio is high " . $InfoData,$PerfData);
}
if (defined($o_warn_cps_level) && (-1!=$o_warn_cps_level) && ($ConnPerSec >= $o_warn_cps_level)) {
nagios_exit($nginx,"WARNING", "Connection per second ratio is high " . $InfoData,$PerfData);
}
nagios_exit($nginx,"OK",$InfoData,$PerfData);
} else {
nagios_exit($nginx,"CRITICAL", $response->status_line);
}

View file

@ -0,0 +1,5 @@
# 'check_nginx_status' command definition
define command{
command_name check_nginx_status
command_line /usr/lib/monitoring-plugins/check_nginx_status -H $HOSTADDRESS$ $ARG1$
}

View file

@ -0,0 +1,8 @@
Homepage: https://raw.github.com/regilero/check_nginx_status/master/check_nginx_status.pl
Watch: https://raw.github.com/regilero/check_nginx_status/master/check_nginx_status.pl \$Version\=\'([0-9.]+)'
Recommends: libwww-perl, monitoring-plugins-common | nagios-plugins-common
Version: 0.20
Uploaders: Jan Wagner <waja@cyconet.org>
Description: plugin checking the nginx_status page report from nginx
Tracking Active connections processes, request per second, connections per
seconds, Connections status.

View file

@ -0,0 +1,7 @@
Copyright (c) regis.leroy at makina-corpus.com
License: GPL v3
On Debian systems, the complete text of the GNU General
Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".

16
check_nwc_health/Makefile Normal file
View file

@ -0,0 +1,16 @@
PLUGIN := check_nwc_health
CLEANFILES := check_nwc_health
include ../common.mk
check_nwc_health:
set -e; for i in guess sub; do if [ ! -e src/config.$$i.bak ]; then cp src/config.$$i src/config.$$i.bak; fi; done
cp /usr/share/misc/config.* src
cd src && ./configure --disable-maintainer-mode --prefix=/usr --with-nagios-user=nagios --with-nagios-group=nagios
make -C src
sed 's,^# nagios: +epn,# nagios: -epn\n,' src/plugins-scripts/check_nwc_health > $@
#cp src/plugins-scripts/check_nwc_health $@
clean::
[ ! -f src/Makefile ] || make -C src distclean
set -e; for i in guess sub; do if [ -e src/config.$$i.bak ]; then mv src/config.$$i.bak src/config.$$i; fi; done

View file

@ -0,0 +1 @@
Gerhard Lausser <gerhard.lausser@consol.de>

View file

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View file

@ -0,0 +1,852 @@
* 2022-07-29 10.3
add mode check-rtt (cisco-rttmon-mib slas)
* 2022-07-21 10.2.1
increase cpu thresholds for linux, separate user/system/etc from iowait
* 2022-07-20 10.2
update glplugin, better get_table fallback handling
* 2022-05-05 10.1.0.3
fix a pull-request. Und das war damit auch der letzte Pull-Request, den ich in meinem Leben angenommen habe.
* 2022-05-04 10.1.0.2
use JSON::XS in Interface.pm to avoid misleading UNKNOWN error message
* 2022-02-23 10.1.0.1
suppress unknown arista sensors which are not marked as faulty
* 2022-02-18 10.1
check filesystems in Arista (full Log/Core stops syslog and accounting)
accept disabled sensors
* 2022-01-13 10.0.0.3
bugfix in arista power supply
* 2022-01-07 10.0.0.2
bugfix in f5 ltm detail output
* 2021-11-22 10.0.0.1
tweak barracuda hardware-health snmp parameters
* 2021-11-16 10.0
use json for temporary files
* 2021-10-13 9.1
add Pulse Secure
* 2021-10-08 9.0.1.2
update git with latest cisco license gedoens
* 2021-09-21 9.0.1.1
remove broken line from Makefile.am
* 2021-09-08 9.0.1
improve cisco license checks
* 2021-09-01 9.0
add Versa Appliance, add HP Aruba
* 2021-08-24 8.5.0.1
tweak barracuda snmp params for interface/route checks
* 2021-07-27 8.5
improve Barracuda cluster-check
* 2021-06-30 8.4
add bgp for huawei
* 2021-06-16 8.3.3.3
bugfix in UCD-MIB memory
* 2021-05-31 8.3.3.2
bugfix in IOS cpu-load for very old models without CISCO-PROCESS-MIB
* 2021-05-31 8.3.3.1
bugfix in f5 memory-usage, correct negative values
* 2021-05-20 8.3.3
Add vpn sessions for Fortigate PR #279
* 2021-05-18 8.3.2.4
optimize etherlike and rmon walks
* 2021-05-12 8.3.2.3
save bgp peer local addresses and show them in the error case
* 2021-04-29 8.3.2.2
Blacklist storage device "junosprocfs" on JunOS (Juniper) devices PR #278
* 2021-04-15 8.3.2.1
bugfix in f5 cpu-load, correct negative values
* 2021-03-23 8.3.2
query LM-SENSORS-MIB only if it exists on Linux (it may hang even if not existing)
* 2021-03-19 8.3.1.2
bugfix in CISCO-ENTITY-SENSOR-MIB. Scale values correctly.
* 2021-03-02 8.3.1.1
bugfix in interface-stack-status (triggered when --name did not match)
* 2021-02-12 8.3.1
add mode license-status for cisco
* 2021-02-08 8.3
split Bluecat in AddressManager and DnsDhcpServer
* 2021-01-28 8.2.0.2
do not use cpmCPUMemoryHCCommitted, except if you want mem usage > 100%
* 2021-01-27 8.2.0.1
check the memory of all members in a cisco stack only if there are > 1 members
* 2021-01-22 8.2
check the memory of all members in a cisco stack
* 2021-01-18 8.1.0.1
bugfix in Bluecat jvm
* 2021-01-18 8.1
add Bluecat Address Manager
* 2021-01-13 8.0.0.2
bugfix in HOST-RESOURCE-MIB memory (Arista triggered)
bugfix in CISCO-ENVMON-MIB, temperatures > 200
* 2021-01-13 8.0.0.1
bugfix in arista bgp, mitigate admin down
* 2020-10-22 8.0
broadcast traffic is now shown as percentage of the overall traffic (...broadcast_in) and percentage of the available bandwitdth (..._broadcast_usage_in).
errors and discards are now calculated as percentage of all received/sent packets.
TenGig-VRF-MPLS-Dingsbums without errors and discard metrics are no longer treated as StackSubs.
* 2020-10-12 7.13
add Vormetric Appliance
* 2020-09-18 7.12.2
add some exceptions to hrDeviceDiskStorage and hrDeviceNetwork
* 2020-09-08 7.12.1.3
fix a bug in mode count-routes, update glplugin
* 2020-07-13 7.12.1.2
improve output for connect-vips
* 2020-07-13 7.12.1.1
bugfix in UCD-MIB swap
* 2020-07-10 7.12.1
try to fallback to ucd if neither sysUptime nor sysDescr exist
* 2020-06-04 7.12
add mode watch-vips and connect-vips for F5
* 2020-06-02 7.11.1
check the number of nodes in a Fortigate cluster
* 2020-05-21 7.11
add bgp4 modes for arista, use 2nd context for cisco bgp4
* 2020-05-19 7.10.4.1
fix a typo
* 2020-05-05 7.10.4
check increase of sessions for Cisco
(detect freeze with --mode vpn-sessions --criticalx sessions_per_sec=0.001:)
add AVM 7580
* 2020-03-20 7.10.3
add mode vpn-sessions (IOS and ASA)
* 2020-03-16 7.10.2.1
blacklist nfs-mounts in hrDeviceDiskStorage
* 2020-03-10 7.10.2
fix HP Aruba checks, add nore from ENTITY-SENSOR-MIB
* 2020-02-20 7.10.1.9
fix a bug in interface-etherstats for OLD-CISCO-INTERFACES-MIB
* 2020-01-21 7.10.1.8
fix a bug in Cisco memory, for Cisco emulation mode of Bel VPN Gate
* 2020-01-18 7.10.1.7
issue #229 fix redundant argument in sprintf
issue #228 fix operstatus in linuxlocal
* 2020-01-16 7.10.1.6
fix a bug in verbose mode if --nosensors is used
* 2019-12-06 7.10.1.5
update GLPlugin, reduce default maxrepetitions to 20
* 2019-12-05 7.10.1.4
reduce maxrepetitions for f5 sysCpuTable and ifTables
* 2019-12-04 7.10.1.3
add --nosensors which skips endless entSensor[Threshold]Table for Nexuses
* 2019-11-25 7.10.1.2
fix a division by 0 for cisco reserved memory
* 2019-10-07 7.10.1.1
fix a bug in cisco wlan accesspoint-modes (InetAddrType)
* 2019-10-04 7.10.1
add session-usage for palo alto
* 2019-08-30 7.10.0.7
update glplugin, more nexus hardware-health improvements
* 2019-08-29 7.10.0.6
reduce runtime for nexus hardware-health
* 2019-08-20 7.10.0.5
fix EIGRP filtering
* 2019-07-29 7.10.0.4.1
fix a bug in fortigate ha-role
* 2019-07-22 7.10.0.4
fix a bug in interface-uptime
* 2019-07-19 7.10.0.3
fix a bug in interface-uptime
* 2019-07-07 7.10.0.2
fix a bug in mode ha-role for Fortigate
* 2019-06-25 7.10.0.1
fix a bug in bgp/route modes for the non-standalone version (InetAddressMaker)
* 2019-06-21 7.10
remove duplicate routes (ip-table + inet-table)
--report long+address shows ip addresses for interfaces
* 2019-06-14 7.9.0.4
finish barracuda ha-role mode
* 2019-06-14 7.9.0.3
detect f5 firmware versions 14+
* 2019-06-12 7.9.0.2
fix routes. inetCidrRouteTable does not really replace ipCidrRouteTable
* 2019-06-12 7.9.0.1
fallback to BGP4-MIB if CISCO-BGP4-MIB is incomplete
* 2019-06-11 7.9
add EIGRP
fix ASA user/connection/session-count
* 2019-06-05 7.8
GLPLugin with better ip4/ip6 handling
fix huawei subclasses
interfaces --name filter expression can contain _adminup_ as a secondary
filter
route modes can handle v6
use OSPFV3-MIB, support v6
add CISCO-BGP4-MIB, support v6
* 2019-04-12 7.7
add Barracuda
* 2019-04-12 7.6.1
add mode count-connections for F5
* 2019-03-20 7.6
add mode watch-ospf-neighbors
* 2019-02-19 7.5.0.1
remove adsl-line-mib
* 2019-02-18 7.5
add Draytek Vigor
* 2019-01-09 7.4.3
add mode interface-security (cisco)
* 2018-12-17 7.4.2.1
finish ha-status for cisco wlc
* 2018-12-12 7.4.2
start ha for cisco wlc
improve paloalto uptime model string
improve ucd memory
* 2018-12-04 7.4.1.2
fix cisco bgp for routers which do not export the proptietary mib, but bgp4
* 2018-12-04 7.4.1.1
fix undefs for Huawei with older Mibs
fix fortigate sensors
* 2018-12-04 7.4.1
detect more Huawei devices
* 2018-12-03 7.4
use proprietary bgp mib for cisco (and add ipv6)
make ospd v6-ready
add servertpe generic_ucd
fix ciscoipsecflow fail timestamps
* 2018-10-22 7.3.1
add modes ha-status/role for fortigate
* 2018-10-22 7.3.0.5
update glplugin (CISCO-STACKWISE-MIB)
* 2018-10-21 7.3.0.4
update glplugin (for go-worker)
* 2018-10-17 7.3.0.3
update glplugin
better fortigate detection
* 2018-09-28 7.3.0.2
update glplugin
* 2018-09-25 7.3.0.1
re-enable Huawei CloudEngine support
* 2018-09-10 7.3
update stack-status
add servertype hostresource
update cisco vpn-status
* 2018-08-13 7.2.0.2
bugfix in interface-modes where --name3 found no match
* 2018-08-10 7.2.0.1
bugfix in ios ha-status, ignore cable "failover" description
* 2018-08-01 7.2
add packet forwarding engine metrics for juniper standby nodes
* 2018-07-26 7.1
add custom thresholds for cisco ccm
detect fritzbox 7490
* 2018-07-13 7.0.2
add interface-uptime
2018-07-05 7.0.1.6
fix a bug in non-map FabOS memory
set thresholds to 100% for cisco asa heapcache memory-usage
* 2018-06-18 7.0.1.5
update glplugin (get_snmp_table_objects waja fix)
* 2018-05-05 7.0.1.4
simplify the cisco memory exceptions
* 2018-04-29 7.0.1.3
bugfix in cisco global shared memory > 9.3.2
* 2018-03-31 7.0.1.2
fix a bug in link-aggregation-availability
* 2018-03-13 7.0.1.1
fix a bug in cisco enhanced mempool mib and posixmem (thx sabedevops)
* 2018-03-07 7.0.1
improve f5, add ha-role, check-config, count-connections
* 2018-03-01 7.0.0.7
update GLPlugin
* 2018-02-26 7.0.0.6
ignore free space of iso mounts in hostresource mib
* 2018-02-06 7.0.0.5
fix a bug in hostresourcesmib memory calc. (arista eos)
* 2018-02-08 7.0.0.5
update glplugn, add modes encode/decode, rfc3986
* 2018-01-23 7.0.0.4
merge pull request #164 (simonmeggle)
add bluecoat asg fix from Stefan Kublik
* 2018-01-12 7.0.0.3
check the clock of checkpoint fw
* 2018-01-11 7.0.0.2
fix a bug in checkpoint vpn-status
* 2018-01-08 7.0.0.1
update glplugin
* 2018-01-05 7.0
code improvements, fix hh3c entities
* 2017-12-27 6.4.4.1
fix f5 versions
* 2017-12-21 6.4.4
add interface-duplex
* 2017-12-15 6.4.3.3
fix a bug in vsx-firewall1-fork
* 2017-12-14 6.4.3.2
update glplugin
* 2017-12-14 6.4.3.1
update glplugin
* 2017-12-12 6.4.3
add checkpoint ha-status, fix checkpoint vpn-status
* 2017-11-27 6.4.2.3
rewrite pretty_sysdesc
* 2017-11-23 6.4.2.2
updateGLPlugin (remove session timeout)
* 2017-11-20 6.4.2.1
updateGLPlugin
* 2017-11-03 6.4.2
implement pool-completeness for f5-gtm-pools (--role gtm)
* 2017-09-29 6.4.1.7
ignore dummy filesystems in HOSTRESOURCEMIBS
* 2017-09-23 6.4.1.6
get ospf table twice if a 2nd contect exists
* 2017-09-22 6.4.1.5
update GLPlugin (use 2nd context for OSPF)
* 2017-09-21 6.4.1.4
fix interface-stack-status, arista's ifStackTable was buggy
* 2017-09-18 6.4.1.3
blacklist l3 routing card (and power supply) if a nexus is used as l2 switch
* 2017-09-16 6.4.1.2
workaround for CSCuv18572
* 2017-09-13 6.4.1.1
fix hostresourcemib, interface sit0 can be down by default
(is disabled in Cisco UC)
* 2017-08-25 6.4.1
add vpn-status for checkpoint
* 2017-08-25 6.4.0.4
fix brocade aliasing in interface-status
* 2017-08-24 6.4.0.3
fix brocade alias aliasing
* 2017-08-24 6.4.0.2
update glplugin, sw-mib fix
* 2017-08-24 6.4.0.1
replace empty ifAlias with swFCPortName for FabOS (Brocade) devices
merge pr #147, thanks arigaud. skip undef temperatured of foundry devices
implement eltex gear (pull request #144)
fix a perl-undef in Juniper BGP (pull request #143)
nsPowerDesc can be null (pullrequest #134)
* 2017-08-07 6.3.0.8
fix C3750 redundant power supplies
* 2017-08-04 6.3.0.7
fix undefined thresholds in arista sensors
* 2017-07-17 6.3.0.6
fix false positives in cisco ethernet service modules SM-ES3G-24-P
allow mitigation of cisco disabled catalyst power supplies
* 2017-06-28 6.3.0.5
allow mitigation of a subLayerDown stack
* 2017-06-20 6.3.0.4
update GLPlugin (lcos-mib)
* 2017-06-19 6.3.0.3
ring redundancy is ok if the stack has only one member
* 2017-06-09 6.3.0.2
fix a bug in f5 member connections (Thanks Yannick Charton)
skip ifIndex in interface-stack-status (makes nexus crash)
* 2017-06-07 6.3.0.1
update glplugin
* 2017-06-01 6.3
update glplugin
add Lancom
* 2017-05-19 6.2.2.3
workaround for ios 12.x and buggy ifstacktable
* 2017-05-17 6.2.2.2
and fix list-interfaces...
* 2017-05-17 6.2.2.1
fix --name for non-uinique indices
* 2017-05-17 6.2.2
add an index to ifDescr which have no unique names
* 2017-05-15 6.2.1.5
GLPlugin update
* 2017-05-12 6.2.1.4
GLPlugin update
* 2017-05-12 6.2.1.3
fix a bug in interface-health
* 2017-05-12 6.2.1.2
fix a bug in interface-availability
* 2017-05-09 6.2.1.1
fix interface etherstats, stacks
add fortigate disks
* 2017-05-03 6.2.0.2
fix a bug in interface-health and 10GE ports.
* 2017-04-26 6.2.0.1
use carrier if operstatus is unknown for linuxlocal interfaces
add dummy speed to linux virtio interfaces
* 2017-04-18 6.2.0
add support for junox bgp with ipv6, thanks dupondje
fix a bug in bluecoat, allow warningx now
* 2017-04-15 6.1.1
support Brocade Ironport and enhance FOUNDRY-SN-AGENT-MIB
* 2017-04-13 6.1.0.3
reverse hrStorage mem thresholds
* 2017-03-30 6.1.0.2
fix a bug in 64bit interface-usage (Thanks Julian)
* 2017-03-27 6.1.0.1
pdate GLPlugin
* 2017-03-25 6.1
update entity-sensor-mib
* 2017-03-24 6.0.2.3
bugfixes in interface etherstats
* 2017-03-22 6.0.2.2
bugfix in etherstats for 32bit
better error message for no access points found
replace continue by next. failed on older distributions
* 2017-03-20 6.0.2.1
fix brocade fabos cpu/memory with MAPS installed
* 2017-03-19 6.0.2
improve interface-etherstats
* 2017-03-10 6.0.1.4
update GLPlugin
* 2017-03-03 6.0.1.3
fix uninitialized-bug
* 2017-03-03 6.0.1.2
special treatment for counterless StackSub interfaces
* 2017-03-03 6.0.1.1
Merge pull request #126 from ciscoqid/patch-1
* 2017-03-02 6.0.1
remove steelhead prettyprint
* 2017-02-24 6.0
cisco chassis check snmp tuning
fix cisco-envmon-mib
nxos hardware check snmp tuning
fix cisco wlan no-ap clustercheck
detect more f5 models
add f5 wide ip check
improve host-resource-mib
speedup interface checks
add interface-etherstats
add ha-status for juniper vsd members
customer release #12.2a
add mode interface-stack-status
add riverbed steelhead
* 2017-02-10 5.13
bugfix in f5 output message
make f5 perfdata labels more consistent
checkpoint multicore. Thanks Peter Hanraets
* 2017-01-28 5.12.0.5
fix pool checks for big-ip 12.x (thanks abzeidler)
* 2017-01-27 5.12.0.4
fallback to ios if cisco wlc has no cpu/mem oids
bugfix in chassis-hardware-health delta of ports
bugfix in chassis-hardware-health duplicate fan output
* 2017-01-27 5.12.0.3
fix cisco wlc ap admin status
* 2017-01-26 5.12.0.2
detect more cisco wireless controllers
* 2017-01-18 5.12.0.1
update GLPlugin (uptime)
* 2017-01-11 5.12
detect checkpoint gaia
* 2016-12-28 5.11.3
detect more hp procurve switches (J9624A etc. may need new firmware revision RA.16.02.0012, ROM RA.15.13)
* 2016-12-19 5.11.2.5
/dev/md on Juniper srx is considered as procfs
* 2016-12-19 5.11.2.4
fix performance labels for HOSTRESOURCESMIB dev filesystems
* 2016-12-14 5.11.2.3
optimize uptime, no bulk for brocade sensors
* 2016-12-12 5.11.2.2
bluecoat disk usage can be overridden with own thresholds
* 2016-12-12 5.11.2.1
add JUNIPER-MIB
* 2016-12-12 5.11.2
fix in cisco asr lsmpi memory
skip thresholds for dev filesystem in HOSTRESOURCESMIB
* 2016-12-06 5.11.1
detect juniper pulse secure
juniper srx temperatures and leds
* 2016-11-29 5.11
reverse usage/free in hostresourcemib memory-usage, so the same thresholds can be use for every kind of device
mv juniper-mib to glplugin
add etherstats
* 2016-11-09 5.10.0.1
fix nexus sensor perfdata, metrics without thresh. were not shown (Thanks Dennis Knecht)
* 2016-10-29 5.10
add smart-home-device-temperature, add Comet DECT
* 2016-10-19 5.9.0.1
fix memory-usage for Catalyst L3 (which have empty CISCO-ENHANCED-MEMPOOL-MIB)
* 2016-10-10 5.9
add arista
add cisco small business
* 2016-09-30 5.8.1
add mode count-accesspoint-clients for cisco wlc
* 2016-09-20 5.8.0.2
don't use | in interface-availability ascii output for notifications
* 2016-09-19 5.8.0.1
fix pull request #107 (this was the last pull request i will accept for this plugin. sorry, if you are not able to test your contributions, go away)
* 2016-09-19 5.8
update ucd-diskio, cumulus
* 2016-08-12 5.7.1.4
update GLPlugin/Extraopts
* 2016-07-07 5.7.1.3
remove trailing Nul from Bintec memories
* 2016-07-07 5.7.1.2
Bintec doesn't like bulk requests
* 2016-06-16 5.7.1.1
repair a pull request.
* 2016-05-30 5.7.1
update GLPlugin
* 2016-05-28 5.7.0.3
bugfix in nortel hardware-checks. (Thanks trentasis)
* 2016-05-17 5.7.0.2
Do not check UCDMIB swap when there is no swap
* 2016-05-14 5.7.0.1
fix a typo in a filename (Thanks vifino)
* 2016-05-10 5.7
add Bintec Bibo (1202)
add Cisco ASA mode ha-role (including cluster-health check)
* 2016-05-10 5.6.1
fix detection of Pulse Secure Gateways
* 2016-05-06 5.6
more dhoffend pull requests (linux ucdmib memory, lmsensors)
* 2016-05-02 5.5
add vrrp-modes
dhoffend pull requests (linux ucdmib, lsmpio bugfix, hsrp multiple roles)
* 2016-03-29 5.4
add CISCO-STACKWISE-MIB
add processor index in cisco enhanced memory
* 2016-03-11 5.3.3
Use 64bit-counters from cisco-enhanced-mempool-mib if available (cisco bug CSCuu46705)
Merge pull request #61 from Napsty/checkpoint-mgmt
Merge pull request #67 from Napsty/list-detail-alias
Simplify interface code
* 2016-02-29 5.3.2
Merge pull request #64 Claudio Kuenzler
* 2016-02-25 5.3.1
bugfix in --ifspeed
* 2016-02-16 5.3
add mode chassis-hardware-health (for cisco)
* 2016-02-16 5.2.2
update checkpoint, use new mib
fallback if no cisco cpu index can be found
* 2016-02-15 5.2.1
refactor interface-usage, bugfix in list-interfaces
bugfix in link-aggregation-availability thresholds
* 2016-02-09 5.2
fix cisco bgp prefix count if no peers were found
small fix in interfaces, add flat_indices
bugfix in entity-sensor-mib
add glplugin submodule (Thanks k0ste)
pr #52 cisco-alarm-mib parse octets (Thanks dhoffend)
* 2015-12-20 5.1
Fix IOS-XE which no longer support the ENVMON MIB. Use FRU MIB instead. (Zhanks Daniel Hoffend, pull request #49)
* 2015-11-24 5.0
introduce new units (based on 1000 instead of 1024), will have an impact on interface perfdata thresholds
* 2015-11-24 4.8
add Huawei CloudEngine
pull request #45 chomp Checkpoint HA state (Thanks Claudio Kuenzler)
pull request #46 Add CheckPoint Power Supply Check (Thanks Claudio Kuenzler)
* 2015-11-18 4.7.1
detect CheckPoint IPSO (Thanks Claudio Kuenzler)
* 2015-11-05 4.7
fix standalone version
* 2015-10-22 4.6.1
add --mode interface-health to linux, solaris, windows
find more bluecoat models
* 2015-10-02 4.6
add --mode interface-health
* 2015-09-29 4.5
merge huawei h3c from lazyfrosch-hh3c-switches
output ifAlias in interface-modes (if it exists and != ifDescr)
* 2015-09-06 4.4
add rapid-city-mib
add entity-mib for cisco asa
* 2015-08-18 4.3.1
add ha-role for Aruba
* 2015-08-17 4.3
add Alcatel OmniAccess (Aruba)
* 2015-08-17 4.2.1
GLPlugin update
* 2015-07-31 4.2
pull request #36. bugfix in cisco asyncos keys (Thanks Frank Meischner)
pull request #25. cisco check-config more useful. (Thanks mhoogveld)
add Nortel S5-CHASSIS-MIB, works for 4526GTX
add OneAccess OneOS
add Solaris local interfaces
GLPlugin update
* 2015-07-03 4.1
add --count-bgp-prefixes for cisco
* 2015-06-28 4.0
--disable-standalone
add --watch-bgp-peers
add --reset for watch-bgp-peers
bugfix in f5-pool-checks, where oids are not available during a transition"
* 2015-06-25 3.5.4
allow --name dest/cidr for mode count-routes
* 2015-06-22 3.5.3
fix a bug in f5 member connection limit noSuchInstance
add mode count-routes (find mpls problems)
add mode count-bgp-peers
* 2015-05-06 3.5.2
add --community2 (necessary if there are different ospf contexts)
raise max-repetitions for table-bulk-requests (large number of interfaces)
* 2015-04-19 3.5.1
add LM-SENSOR-MIB
bugfix in thresholds of morphed performancedata
* 2015-04-09 3.5
implement ospf and modes ospf-neighbor-status and list-ospf-neighbors
* 2015-03-29 3.4.4.3
separate discards from errors in linuxlocal
* 2015-03-03 3.4.4.2
combine pool-connections and pool-completion for f5
finish pool-complections
* 2015-02-28 3.4.4.1
detect (not implement!) netgear
* 2015-02-26 3.4.4
add mode pool-connections for f5
* 2015-02-19 3.4.3
allow mitigation of admin down bgp peer
add morphperfdata
* 2015-01-30 3.4.2.8
bugfix in GLPlugin (multiple --negate)
* 2015-01-28 3.4.2.7
more trailing null cleanup. (Thanks Jörg Linge)
* 2015-01-27 3.4.2.6
bugfix in interface-usage windows+snmp+trailing null in ifDescr. (Thanks Jörg Linge)
* 2015-01-14 3.4.2.5
bugfix in interface-status and snmp-table-get (no more false 64bit interfaces)
* 2015-01-08 3.4.2.4
shorten interface-output with report=short
* 2015-01-05 3.4.2.3
fix a perl-bug in F5 (was introduced in 3.4.2)
* 2015-01-02 3.4.2.2
fix lsmpi_io for cisco asr1000 (Thanks Andreas Schulz)
fix Fritz!Box upnp control url (Thanks Bernd)
* 2014-12-23 3.4.2.1
use fallbacks to find fexes (cefexConfigTable may not be populated)
* 2014-12-16 3.4.2
use cefexConfigTable for mode watch-fexes
bugfix in cisco nexus sensors (had undef perl warnings)
* 2014-12-12 3.4.1
bugfix in bluecoat hardware (skip perfdata of missing psus)
* 2014-12-11 3.4
add vpn-status for cisco asa
* 2014-12-08 3.3
add windowslocal
* 2014-12-06 3.2.2
unique names for cisco cpus pointing to the same physical entity
* 2014-11-29 3.2.1
remove unnecessary use statement
finalize paloalto ha
make list-interfaces and update-cache faster
* 2014-11-18 3.2.0.1
hide some debug printfs
* 2014-11-10 3.2
add palo alto hardware, sensors, ha
make nexus cpu names unique
* 2014-11-02 3.1.1
bugfix my-modes
add paloaltomib
* 2014-09-26 3.1
add Clavister Firewall (Thanks Dirk Goetz)
fix GLPluginSNMP, all timeout-like errors are UNKNOWN
allow warningx/criticalx to override cisco sensor thresholds
* 2014-09-55 3.0.4
bugfix in glplugin (tmp-file-paths wrong under epn) (Thanks Sven Nierlein)
* 2014-09-15 3.0.3.9
bugfix in bgp error states (Thanks Matthias Gallinger)
bugfix in f5 pools (Thanks Sven Nierlein)
* 2014-08-28 3.0.3.8
bugfix in interface-usage/ifspeed (Thanks Matthias Gallinger)
* 2014-08-26 3.0.3.7
bugfix in glpluginsnmp (undef errors with loadbalacer index)
* 2014-08-25 3.0.3.6
bugfix in glpluginsnmp / (fritzbox cpu undef-error)
* 2014-08-22 3.0.3.5
bugfix in glplugin/uptime because of buggy snmpengineuptime
* 2014-08-21 3.0.3.4
bugfix in glplugin/uptime thresholds
* 2014-08-21 3.0.3.3
add a hack with --name2 which allows shortening of stupid interface names (make dmz1 from Adaptive Security Appliance 'dmz1' interface)
* 2014-08-20 3.0.3.2
update GLPluginSNMP (timeout handling)
* 2014-08-20 3.0.3.1
fix interfaces which seem to be 64bit but have no counters
* 2014-08-19 3.0.3
bugfix in offline mode
update GLPlugin
update GLPluginSNMP
* 2014-08-15 3.0.2.2
bugfix in ios memory criticalx/warningx thresholds
* 2014-08-14 3.0.2.1
update GLPluginSNMP
* 2014-08-14 3.0.2
improve interface-usage performance data
detect more brocade models
* 2014-08-13 3.0.1
bugfix in interface-usage temp-files
* 2014-08.01 3.0
jetzt langts mit der ridiseignerei
* 2014-03-17 3.0x
massive rewriting of the plugins structure and modules
repair malformed data returned by Net::SNMP
add interface-nat-rejects and interface-nat-session-count for IOS
add hardware-health for cisco asa
bugfix for old brocade devices and missing cpu/memory oids
bugfix in Cisco Call Manager
bugfix in IOS Memory for ASR 9000 image and reserved pool
bugfix in cisco wlc status
add hardware-health for cisco pix
add mode supportedmibs
last fallback alarm-mib for ios without envmon-mib
bugfix in timeticks for hp
bugfix in Nexus sensor thresholds (Thanks Marcel Fischer)
bugfix in snmp-bulk-gets, more secure fallbacks to get-next
bugfix in 64bit-interfaces
GLPlugin update & cleanup
get uptime from the FRAMEWORK-MIB to prevent rollovers
* 2014-02-07 2.6.5.2
add another cisco unified communication model
* 2014-01-31 2.6.5.1
handle a missing brocade fabric watch license in cpu-load & memory-usage
add CISCO-ENHANCED-MEMPOOL-MIB
* 2014-01-24 2.6.5
add mode --check-config, which finds unsaved (cisco only) configs (Thanks Simon Meggle)
* 2014-01-18 2.6.4.3
bugfix in uptime (Thanks Finn Christiansen)
* 2014-01-15 2.6.4.2
add http connection checks for bluecoat sg
* 2014-01-14 2.6.4
add cisco ccm
* 2014-01-11 2.6.3.1
support more SecureOS devices (i bought Juniper SSG5)
bugfix in upnp-detection
* 2013-12-21 2.6.3
output number of sessions for f5 bigip load balancer pools
deal with obviously wrong values from devices (20000% cpu usage)
foundry server load balancing
bugfix in interface-* for Juniper IVE
filter hsrp groups by name
* 2013-11-08
added support for role based login for Fritz Boxes (available since
FRITZ!OS 5.50). Use --community for password, --username for username if
role based security is switched on.
* 2013-11-09
bugfix for fritzbox
* 2013-11-08 2.6.1
hardware-health for Checkpoint Firewall-1
* 2013-11-07 2.6
finished bgp-peer-status (focus on as numbers with --name2)
admin down with --interface-status can have any level with --mitigation
* 2013-10-31 2.5.4.1
add Fujitsu Intelligent Blade Panel 30/12
* 2013-10-30 2.5.4
add bgp
* 2013-10-01 2.5.3
detect more brocade devices
* 2013-09-26 2.5.2.1
supress double output for html f5 pool members
* 2013-09-25 2.5.2
add html output for f5 pool members
* 2013-09-18 2.5.1.2
removed a leftover Data::Dumper (Thanks Frank Belau)
* 2013-09-17 2.5.1.1
bugfix in lsmpi_io memory pools of Cisco ASR (100% even with --warning/--critical)
* 2013-09-11 2.5.1
set a 100% threshold for lsmpi_io memory pools of Cisco ASR (Thanks James Clark & Perun)
* 2013-09-10 2.5
implemented offline mode with --snmpwalk & --offline
* 2013-09-03 2.4
add Cisco IronPort AsyncOS
* 2013-08-27 2.3
add Juniper IVE (ex. Pulse-Gateway MAG4610)
add count-connections for cisco asa
* 2013-07-11 2.2
add memory-usage for checkpoint
add detection for cpx
* 2013-07-09 2.1.1
skip non-interface files in /sys/class/net for servertype linuxlocal (Thanks Sven Nierlein)
better error handling on unwritable statefiles/dirs
* 2013-06-12 2.1
added "--servertype ifmib" so you can use "--mode interface*" with every kind of ifmib-capable device
* 2013-06-01 2.0
added support for AVM FRITZ!DECT 200 smart plug
* 2013-05-27 1.9.8.1
bugfix for the bugfix in commandline options (Thanks webspace Mario)
* 2013-05-23 1.9.8
add Brocade Communications Systems, Inc. ICX6610-24-HPOE, IronWare
bugfix in commandline options (Thanks TheCry)
* 2013-05-17 1.9.7.4
added another fallback for snmp-get_entries
fixed a bug in uptime (only first minute after reboot)
* 2013-04-20 1.9.7.3
fixed a bug in snmpwalk simulation and savestate
* 2013-04-08 1.9.7.2
bugfix, interfaces were shown twice in list-interfaces
* 2013-03-26 1.9.7.1
set automatic thresholds for link-aggregation-availability
* 2013-03-25 1.9.7
added link-aggregation-availability
* 2013-03-19 1.9.6
fixed a bug in interface-*
speedup in interface-* (with --name and 64bit)
added a hostname/community hash to statefiles
* 2013-02-13 1.9.5.1
fixed a bug deep inside snmp bulkwalks and lots of interfaces (Thanks Uestuen Oender)
* 2013-02-24 1.9.5
add interface-availability
* 2013-02-11 1.9.4
add Cisco Wireless LAN Controller 5500
* 2013-02-11 1.9.3.1
fixed a bug in statefiles with uppercase directory names. (Thanks Matthias Gallinger)
* 2013-02-10 1.9.3
add blue coat sg600
* 2013-02-02 1.9.2
removed my static ip from FRITZ!BOX interface-usage (Thanks Stef)
* 2013-01- 1.9.1
fixed a bug in FFritz!BOX uptime (Thanks Lars Urban)
3013-01 1.9
add uptime and interface-usage for AVM FRITZ!Box 7390
add cpu-load and memory-usage for AVM FRITZ!Box 7390
* 2013-01-13 1.8
-add cpu&memory check for juniper netscreen
* 2013-01-12 1.7.1
add a name caching mechanism for f5 bigip pools
* 2013-01-08 1.7
add f5 bigip pool completeness
add member info for failed f5 pools
* 2012-12-10 1.6
add checkpoint firewall-1
* 2012-11-23 1.5
add 64bit interfaces
* 2012-09-26 1.4.9.1
fix a bug in uptime calculation
* 2012-09-24 1.4.9
add hp procurve cpu-load and memory-usage
fix a bug in cisco memory perfdata
* 2012-08-28 1.4.8
add hp procurve hardware
* 2012-08-21 1.4.7.1
fix a bug in servertype locallinux, interfaces and --name (Thanks Simon Meggle)
* 2012-08-21 1.4.7
add f5 bigip
bugfix in mode uptime
* 2012-08-10 1.4.6
add mode uptime
* 2012-08-10 1.4.5.2
fix a bug in statefilesdir creation under omd
* 2012-08-02 1.4.5.1
add more hardware info for EMC-DS24M2 (McData Sphereon 4500)
* 2012-07-31 1.4.5
add UCD-MIB for SecureOS (McAfee Sidewinder)
* 2012-07-31 1.4.4
add fibre alliance mib sensor table for MeOS/DS-4700M
* 2012-07-20 1.4.3.1
add the index to interface names, if interfaces all have the same name
first experiments with MeOS
* 2012-07-12 1.4.3
fix a bug in the role parameter for hsrp
fix a temperature index where ios doesn't set the counter itself
add mib2-interface-modes to brocade fabos
* 2012-07-05 1.4.2
add mode encode for interface names with ' or "
* 2012-07-05 1.4.1
add --ifspeedin, --ifspeedout, --ifspeed (used for asymmetric mpls)
* 2012-06-22 1.4
add linux local interfaces (interface-usage/errors only) with --servertype linuxlocal
add mode walk
rename brocade300 -> fabos
* 2012-04-23 1.3
add mode list-interfaces-detail (Cisco only)
add brocade300 (hardware-health,memory-usage,cpu-load only)
* 2012-03-29 1.2
add support for Cisco Nexus (cpu, mem, )
add Nexus sensors
add Allied Telesyn (only interfaces so far)
* 2012-03-19 1.1.1.1
bugfix in list-hsrp-groups
--units KBi/MBi/GBi for interface-usage
* 2012-02-22 1.1.1
add mode hsrp-failover (Thanks Munich)
* 2012-02-22 1.1
add mode hsrp-state (Thanks Munich)
* 2012-01-05
some more debug messages
* 2012-01-04 1.0
Nortel devices are recognized. (only interfaces can be queried by now)
no official changes yet

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,613 @@
package Monitoring::GLPlugin::Commandline;
use strict;
use IO::File;
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3, DEPENDENT => 4 };
our %ERRORS = (
'OK' => OK,
'WARNING' => WARNING,
'CRITICAL' => CRITICAL,
'UNKNOWN' => UNKNOWN,
'DEPENDENT' => DEPENDENT,
);
our %STATUS_TEXT = reverse %ERRORS;
our $AUTOLOAD;
sub new {
my ($class, %params) = @_;
require Monitoring::GLPlugin::Commandline::Getopt
if ! grep /BEGIN/, keys %Monitoring::GLPlugin::Commandline::Getopt::;
my $self = {
perfdata => [],
messages => {
ok => [],
warning => [],
critical => [],
unknown => [],
},
args => [],
opts => Monitoring::GLPlugin::Commandline::Getopt->new(%params),
modes => [],
statefilesdir => undef,
};
foreach (qw(shortname usage version url plugin blurb extra
license timeout)) {
$self->{$_} = $params{$_};
}
bless $self, $class;
$self->{plugin} ||= $Monitoring::GLPlugin::pluginname;
$self->{name} = $self->{plugin};
$Monitoring::GLPlugin::plugin = $self;
}
sub AUTOLOAD {
my ($self, @params) = @_;
return if ($AUTOLOAD =~ /DESTROY/);
$self->debug("AUTOLOAD %s\n", $AUTOLOAD)
if $self->{opts}->verbose >= 2;
if ($AUTOLOAD =~ /^.*::(add_arg|override_opt|create_opt)$/) {
$self->{opts}->$1(@params);
}
}
sub DESTROY {
my ($self) = @_;
# ohne dieses DESTROY rennt nagios_exit in obiges AUTOLOAD rein
# und fliegt aufs Maul, weil {opts} bereits nicht mehr existiert.
# Unerklaerliches Verhalten.
}
sub debug {
my ($self, $format, @message) = @_;
if ($self->opts->verbose && $self->opts->verbose > 10) {
printf("%s: ", scalar localtime);
printf($format, @message);
printf "\n";
}
if ($Monitoring::GLPlugin::tracefile) {
my $logfh = IO::File->new();
$logfh->autoflush(1);
if ($logfh->open($Monitoring::GLPlugin::tracefile, "a")) {
$logfh->printf("%s: ", scalar localtime);
$logfh->printf($format, @message);
$logfh->printf("\n");
$logfh->close();
}
}
}
sub opts {
my ($self) = @_;
return $self->{opts};
}
sub getopts {
my ($self) = @_;
$self->opts->getopts();
}
sub add_message {
my ($self, $code, @messages) = @_;
$code = (qw(ok warning critical unknown))[$code] if $code =~ /^\d+$/;
$code = lc $code;
push @{$self->{messages}->{$code}}, @messages;
}
sub selected_perfdata {
my ($self, $label) = @_;
if ($self->opts->can("selectedperfdata") && $self->opts->selectedperfdata) {
my $pattern = $self->opts->selectedperfdata;
return ($label =~ /$pattern/i) ? 1 : 0;
} else {
return 1;
}
}
sub add_perfdata {
my ($self, %args) = @_;
#printf "add_perfdata %s\n", Data::Dumper::Dumper(\%args);
#printf "add_perfdata %s\n", Data::Dumper::Dumper($self->{thresholds});
#
# wenn warning, critical, dann wird von oben ein expliziter wert mitgegeben
# wenn thresholds
# wenn label in
# warningx $self->{thresholds}->{$label}->{warning} existiert
# dann nimm $self->{thresholds}->{$label}->{warning}
# ansonsten thresholds->default->warning
#
my $label = $args{label};
my $value = $args{value};
my $uom = $args{uom} || "";
my $format = '%d';
if ($self->opts->can("morphperfdata") && $self->opts->morphperfdata) {
# 'Intel [R] Interface (\d+) usage'='nic$1'
foreach my $key (keys %{$self->opts->morphperfdata}) {
if ($label =~ /$key/) {
my $replacement = '"'.$self->opts->morphperfdata->{$key}.'"';
my $oldlabel = $label;
$label =~ s/$key/$replacement/ee;
if (exists $self->{thresholds}->{$oldlabel}) {
%{$self->{thresholds}->{$label}} = %{$self->{thresholds}->{$oldlabel}};
}
}
}
}
if ($value =~ /\./) {
if (defined $args{places}) {
$value = sprintf '%.'.$args{places}.'f', $value;
} else {
$value = sprintf "%.2f", $value;
}
} else {
$value = sprintf "%d", $value;
}
my $warn = "";
my $crit = "";
my $min = defined $args{min} ? $args{min} : "";
my $max = defined $args{max} ? $args{max} : "";
if ($args{thresholds} || (! exists $args{warning} && ! exists $args{critical})) {
if (exists $self->{thresholds}->{$label}->{warning}) {
$warn = $self->{thresholds}->{$label}->{warning};
} elsif (exists $self->{thresholds}->{default}->{warning}) {
$warn = $self->{thresholds}->{default}->{warning};
}
if (exists $self->{thresholds}->{$label}->{critical}) {
$crit = $self->{thresholds}->{$label}->{critical};
} elsif (exists $self->{thresholds}->{default}->{critical}) {
$crit = $self->{thresholds}->{default}->{critical};
}
} else {
if ($args{warning}) {
$warn = $args{warning};
}
if ($args{critical}) {
$crit = $args{critical};
}
}
if ($uom eq "%") {
$min = 0;
$max = 100;
}
if (defined $args{places}) {
# cut off excessive decimals which may be the result of a division
# length = places*2, no trailing zeroes
if ($warn ne "") {
$warn = join("", map {
s/\.0+$//; $_
} map {
s/(\.[1-9]+)0+$/$1/; $_
} map {
/[\+\-\d\.]+/ ? sprintf '%.'.2*$args{places}.'f', $_ : $_;
} split(/([\+\-\d\.]+)/, $warn));
}
if ($crit ne "") {
$crit = join("", map {
s/\.0+$//; $_
} map {
s/(\.[1-9]+)0+$/$1/; $_
} map {
/[\+\-\d\.]+/ ? sprintf '%.'.2*$args{places}.'f', $_ : $_;
} split(/([\+\-\d\.]+)/, $crit));
}
if ($min ne "") {
$min = join("", map {
s/\.0+$//; $_
} map {
s/(\.[1-9]+)0+$/$1/; $_
} map {
/[\+\-\d\.]+/ ? sprintf '%.'.2*$args{places}.'f', $_ : $_;
} split(/([\+\-\d\.]+)/, $min));
}
if ($max ne "") {
$max = join("", map {
s/\.0+$//; $_
} map {
s/(\.[1-9]+)0+$/$1/; $_
} map {
/[\+\-\d\.]+/ ? sprintf '%.'.2*$args{places}.'f', $_ : $_;
} split(/([\+\-\d\.]+)/, $max));
}
}
push @{$self->{perfdata}}, sprintf("'%s'=%s%s;%s;%s;%s;%s",
$label, $value, $uom, $warn, $crit, $min, $max)
if $self->selected_perfdata($label);
}
sub add_pandora {
my ($self, %args) = @_;
my $label = $args{label};
my $value = $args{value};
if ($args{help}) {
push @{$self->{pandora}}, sprintf("# HELP %s %s", $label, $args{help});
}
if ($args{type}) {
push @{$self->{pandora}}, sprintf("# TYPE %s %s", $label, $args{type});
}
if ($args{labels}) {
push @{$self->{pandora}}, sprintf("%s{%s} %s", $label,
join(",", map {
sprintf '%s="%s"', $_, $args{labels}->{$_};
} keys %{$args{labels}}),
$value);
} else {
push @{$self->{pandora}}, sprintf("%s %s", $label, $value);
}
}
sub add_html {
my ($self, $line) = @_;
push @{$self->{html}}, $line;
}
sub suppress_messages {
my ($self) = @_;
$self->{suppress_messages} = 1;
}
sub clear_messages {
my ($self, $code) = @_;
$code = (qw(ok warning critical unknown))[$code] if $code =~ /^\d+$/;
$code = lc $code;
$self->{messages}->{$code} = [];
}
sub reduce_messages_short {
my ($self, $message) = @_;
$message ||= "no problems";
if ($self->opts->report && $self->opts->report eq "short") {
$self->clear_messages(OK);
$self->add_message(OK, $message) if ! $self->check_messages();
}
}
sub reduce_messages {
my ($self, $message) = @_;
$message ||= "no problems";
$self->clear_messages(OK);
$self->add_message(OK, $message) if ! $self->check_messages();
}
sub check_messages {
my ($self, %args) = @_;
# Add object messages to any passed in as args
for my $code (qw(critical warning unknown ok)) {
my $messages = $self->{messages}->{$code} || [];
if ($args{$code}) {
unless (ref $args{$code} eq 'ARRAY') {
if ($code eq 'ok') {
$args{$code} = [ $args{$code} ];
}
}
push @{$args{$code}}, @$messages;
} else {
$args{$code} = $messages;
}
}
my %arg = %args;
$arg{join} = ' ' unless defined $arg{join};
# Decide $code
my $code = OK;
$code ||= CRITICAL if @{$arg{critical}};
$code ||= WARNING if @{$arg{warning}};
$code ||= UNKNOWN if @{$arg{unknown}};
return $code unless wantarray;
# Compose message
my $message = '';
if ($arg{join_all}) {
$message = join( $arg{join_all},
map { @$_ ? join( $arg{'join'}, @$_) : () }
$arg{critical},
$arg{warning},
$arg{unknown},
$arg{ok} ? (ref $arg{ok} ? $arg{ok} : [ $arg{ok} ]) : []
);
}
else {
$message ||= join( $arg{'join'}, @{$arg{critical}} )
if $code == CRITICAL;
$message ||= join( $arg{'join'}, @{$arg{warning}} )
if $code == WARNING;
$message ||= join( $arg{'join'}, @{$arg{unknown}} )
if $code == UNKNOWN;
$message ||= ref $arg{ok} ? join( $arg{'join'}, @{$arg{ok}} ) : $arg{ok}
if $arg{ok};
}
return ($code, $message);
}
sub status_code {
my ($self, $code) = @_;
$code = (qw(ok warning critical unknown))[$code] if $code =~ /^\d+$/;
$code = uc $code;
$code = $ERRORS{$code} if defined $code && exists $ERRORS{$code};
$code = UNKNOWN unless defined $code && exists $STATUS_TEXT{$code};
return "$STATUS_TEXT{$code}";
}
sub perfdata_string {
my ($self) = @_;
if (scalar (@{$self->{perfdata}})) {
return join(" ", @{$self->{perfdata}});
} else {
return "";
}
}
sub metrics_string {
my ($self) = @_;
if (scalar (@{$self->{metrics}})) {
return join("\n", @{$self->{metrics}});
} else {
return "";
}
}
sub html_string {
my ($self) = @_;
if (scalar (@{$self->{html}})) {
return join(" ", @{$self->{html}});
} else {
return "";
}
}
sub nagios_exit {
my ($self, $code, $message, $arg) = @_;
$code = $ERRORS{$code} if defined $code && exists $ERRORS{$code};
$code = UNKNOWN unless defined $code && exists $STATUS_TEXT{$code};
$message = '' unless defined $message;
if (ref $message && ref $message eq 'ARRAY') {
$message = join(' ', map { chomp; $_ } @$message);
} else {
chomp $message;
}
if ($self->opts->negate) {
my $original_code = $code;
foreach my $from (keys %{$self->opts->negate}) {
if ((uc $from) =~ /^(OK|WARNING|CRITICAL|UNKNOWN)$/ &&
(uc $self->opts->negate->{$from}) =~ /^(OK|WARNING|CRITICAL|UNKNOWN)$/) {
if ($original_code == $ERRORS{uc $from}) {
$code = $ERRORS{uc $self->opts->negate->{$from}};
}
}
}
}
my $output = "$STATUS_TEXT{$code}";
$output .= " - $message" if defined $message && $message ne '';
if ($self->opts->can("morphmessage") && $self->opts->morphmessage) {
# 'Intel [R] Interface (\d+) usage'='nic$1'
# '^OK.*'="alles klar" '^CRITICAL.*'="alles hi"
foreach my $key (keys %{$self->opts->morphmessage}) {
if ($output =~ /$key/) {
my $replacement = '"'.$self->opts->morphmessage->{$key}.'"';
$output =~ s/$key/$replacement/ee;
}
}
}
if ($self->opts->negate) {
# negate again: --negate "UNKNOWN - no peers"=ok
my $original_code = $code;
foreach my $from (keys %{$self->opts->negate}) {
if ((uc $from) !~ /^(OK|WARNING|CRITICAL|UNKNOWN)$/ &&
(uc $self->opts->negate->{$from}) =~ /^(OK|WARNING|CRITICAL|UNKNOWN)$/) {
if ($output =~ /$from/) {
$code = $ERRORS{uc $self->opts->negate->{$from}};
$output =~ s/^.*? -/$STATUS_TEXT{$code} -/;
}
}
}
}
$output =~ s/\|/!/g if $output;
if (scalar (@{$self->{perfdata}})) {
$output .= " | ".$self->perfdata_string();
}
$output .= "\n";
if ($self->opts->can("isvalidtime") && ! $self->opts->isvalidtime) {
$code = OK;
$output = "OK - outside valid timerange. check results are not relevant now. original message was: ".
$output;
}
if (! exists $self->{suppress_messages}) {
$output =~ s/[^[:ascii:]]//g;
print $output;
}
exit $code;
}
sub set_thresholds {
my ($self, %params) = @_;
if (exists $params{metric}) {
my $metric = $params{metric};
# erst die hartcodierten defaultschwellwerte
$self->{thresholds}->{$metric}->{warning} = $params{warning};
$self->{thresholds}->{$metric}->{critical} = $params{critical};
# dann die defaultschwellwerte von der kommandozeile
if (defined $self->opts->warning) {
$self->{thresholds}->{$metric}->{warning} = $self->opts->warning;
}
if (defined $self->opts->critical) {
$self->{thresholds}->{$metric}->{critical} = $self->opts->critical;
}
# dann die ganz spezifischen schwellwerte von der kommandozeile
if ($self->opts->warningx) { # muss nicht auf defined geprueft werden, weils ein hash ist
# Erst schauen, ob einer * beinhaltet. Von denen wird vom Laengsten
# bis zum Kuerzesten probiert, ob die matchen. Der laengste Match
# gewinnt.
my @keys = keys %{$self->opts->warningx};
my @stringkeys = ();
my @regexkeys = ();
foreach my $key (sort { length($b) > length($a) } @keys) {
if ($key =~ /\*/) {
push(@regexkeys, $key);
} else {
push(@stringkeys, $key);
}
}
foreach my $key (@regexkeys) {
next if $metric !~ /$key/;
$self->{thresholds}->{$metric}->{warning} = $self->opts->warningx->{$key};
last;
}
# Anschliessend nochmal schauen, ob es einen nicht-Regex-Volltreffer gibt
foreach my $key (@stringkeys) {
next if $key ne $metric;
$self->{thresholds}->{$metric}->{warning} = $self->opts->warningx->{$key};
last;
}
}
if ($self->opts->criticalx) {
my @keys = keys %{$self->opts->criticalx};
my @stringkeys = ();
my @regexkeys = ();
foreach my $key (sort { length($b) > length($a) } @keys) {
if ($key =~ /\*/) {
push(@regexkeys, $key);
} else {
push(@stringkeys, $key);
}
}
foreach my $key (@regexkeys) {
next if $metric !~ /$key/;
$self->{thresholds}->{$metric}->{critical} = $self->opts->criticalx->{$key};
last;
}
# Anschliessend nochmal schauen, ob es einen nicht-Regex-Volltreffer gibt
foreach my $key (@stringkeys) {
next if $key ne $metric;
$self->{thresholds}->{$metric}->{critical} = $self->opts->criticalx->{$key};
last;
}
}
} else {
$self->{thresholds}->{default}->{warning} =
defined $self->opts->warning ? $self->opts->warning : defined $params{warning} ? $params{warning} : 0;
$self->{thresholds}->{default}->{critical} =
defined $self->opts->critical ? $self->opts->critical : defined $params{critical} ? $params{critical} : 0;
}
}
sub force_thresholds {
my ($self, %params) = @_;
if (exists $params{metric}) {
my $metric = $params{metric};
$self->{thresholds}->{$metric}->{warning} = $params{warning} || 0;
$self->{thresholds}->{$metric}->{critical} = $params{critical} || 0;
} else {
$self->{thresholds}->{default}->{warning} = $params{warning} || 0;
$self->{thresholds}->{default}->{critical} = $params{critical} || 0;
}
}
sub get_thresholds {
my ($self, @params) = @_;
if (scalar(@params) > 1) {
my %params = @params;
my $metric = $params{metric};
return ($self->{thresholds}->{$metric}->{warning},
$self->{thresholds}->{$metric}->{critical});
} else {
return ($self->{thresholds}->{default}->{warning},
$self->{thresholds}->{default}->{critical});
}
}
sub check_thresholds {
my ($self, @params) = @_;
my $level = $ERRORS{OK};
my $warningrange;
my $criticalrange;
my $value;
if (scalar(@params) > 1) {
my %params = @params;
$value = $params{value};
my $metric = $params{metric};
if ($metric ne 'default') {
$warningrange = defined $params{warning} ? $params{warning} :
(exists $self->{thresholds}->{$metric}->{warning} ?
$self->{thresholds}->{$metric}->{warning} :
$self->{thresholds}->{default}->{warning});
$criticalrange = defined $params{critical} ? $params{critical} :
(exists $self->{thresholds}->{$metric}->{critical} ?
$self->{thresholds}->{$metric}->{critical} :
$self->{thresholds}->{default}->{critical});
} else {
$warningrange = (defined $params{warning}) ?
$params{warning} : $self->{thresholds}->{default}->{warning};
$criticalrange = (defined $params{critical}) ?
$params{critical} : $self->{thresholds}->{default}->{critical};
}
} else {
$value = $params[0];
$warningrange = $self->{thresholds}->{default}->{warning};
$criticalrange = $self->{thresholds}->{default}->{critical};
}
if (! defined $warningrange) {
# there was no set_thresholds for defaults, no --warning, no --warningx
} elsif ($warningrange =~ /^([-+]?[0-9]*\.?[0-9]+)$/) {
# warning = 10, warn if > 10 or < 0
$level = $ERRORS{WARNING}
if ($value > $1 || $value < 0);
} elsif ($warningrange =~ /^([-+]?[0-9]*\.?[0-9]+):$/) {
# warning = 10:, warn if < 10
$level = $ERRORS{WARNING}
if ($value < $1);
} elsif ($warningrange =~ /^~:([-+]?[0-9]*\.?[0-9]+)$/) {
# warning = ~:10, warn if > 10
$level = $ERRORS{WARNING}
if ($value > $1);
} elsif ($warningrange =~ /^([-+]?[0-9]*\.?[0-9]+):([-+]?[0-9]*\.?[0-9]+)$/) {
# warning = 10:20, warn if < 10 or > 20
$level = $ERRORS{WARNING}
if ($value < $1 || $value > $2);
} elsif ($warningrange =~ /^@([-+]?[0-9]*\.?[0-9]+):([-+]?[0-9]*\.?[0-9]+)$/) {
# warning = @10:20, warn if >= 10 and <= 20
$level = $ERRORS{WARNING}
if ($value >= $1 && $value <= $2);
}
if (! defined $criticalrange) {
# there was no set_thresholds for defaults, no --critical, no --criticalx
} elsif ($criticalrange =~ /^([-+]?[0-9]*\.?[0-9]+)$/) {
# critical = 10, crit if > 10 or < 0
$level = $ERRORS{CRITICAL}
if ($value > $1 || $value < 0);
} elsif ($criticalrange =~ /^([-+]?[0-9]*\.?[0-9]+):$/) {
# critical = 10:, crit if < 10
$level = $ERRORS{CRITICAL}
if ($value < $1);
} elsif ($criticalrange =~ /^~:([-+]?[0-9]*\.?[0-9]+)$/) {
# critical = ~:10, crit if > 10
$level = $ERRORS{CRITICAL}
if ($value > $1);
} elsif ($criticalrange =~ /^([-+]?[0-9]*\.?[0-9]+):([-+]?[0-9]*\.?[0-9]+)$/) {
# critical = 10:20, crit if < 10 or > 20
$level = $ERRORS{CRITICAL}
if ($value < $1 || $value > $2);
} elsif ($criticalrange =~ /^@([-+]?[0-9]*\.?[0-9]+):([-+]?[0-9]*\.?[0-9]+)$/) {
# critical = @10:20, crit if >= 10 and <= 20
$level = $ERRORS{CRITICAL}
if ($value >= $1 && $value <= $2);
}
return $level;
}
sub strequal {
my($self, $str1, $str2) = @_;
return 1 if ! defined $str1 && ! defined $str2;
return 0 if ! defined $str1 && defined $str2;
return 0 if defined $str1 && ! defined $str2;
return 1 if $str1 eq $str2;
return 0;
}
1;
__END__

View file

@ -0,0 +1,104 @@
package Monitoring::GLPlugin::Commandline::Extraopts;
use strict;
use File::Basename;
use strict;
sub new {
my $class = shift;
my %params = @_;
my $self = {
file => $params{file},
commandline => $params{commandline},
config => {},
section => 'default_no_section',
};
bless $self, $class;
$self->prepare_file_and_section();
$self->init();
return $self;
}
sub prepare_file_and_section {
my $self = shift;
if (! defined $self->{file}) {
# ./check_stuff --extra-opts
$self->{section} = basename($0);
$self->{file} = $self->get_default_file();
} elsif ($self->{file} =~ /^[^@]+$/) {
# ./check_stuff --extra-opts=special_opts
$self->{section} = $self->{file};
$self->{file} = $self->get_default_file();
} elsif ($self->{file} =~ /^@(.*)/) {
# ./check_stuff --extra-opts=@/etc/myconfig.ini
$self->{section} = basename($0);
$self->{file} = $1;
} elsif ($self->{file} =~ /^(.*?)@(.*)/) {
# ./check_stuff --extra-opts=special_opts@/etc/myconfig.ini
$self->{section} = $1;
$self->{file} = $2;
}
}
sub get_default_file {
my $self = shift;
foreach my $default (qw(/etc/nagios/plugins.ini
/usr/local/nagios/etc/plugins.ini
/usr/local/etc/nagios/plugins.ini
/etc/opt/nagios/plugins.ini
/etc/nagios-plugins.ini
/usr/local/etc/nagios-plugins.ini
/etc/opt/nagios-plugins.ini)) {
if (-f $default) {
return $default;
}
}
return undef;
}
sub init {
my $self = shift;
if (! defined $self->{file}) {
$self->{errors} = sprintf 'no extra-opts file specified and no default file found';
} elsif (! -f $self->{file}) {
$self->{errors} = sprintf 'could not open %s', $self->{file};
} else {
my $data = do { local (@ARGV, $/) = $self->{file}; <> };
my $in_section = 'default_no_section';
foreach my $line (split(/\n/, $data)) {
if ($line =~ /\[(.*)\]/) {
$in_section = $1;
} elsif ($line =~ /(.*?)\s*=\s*(.*)/) {
$self->{config}->{$in_section}->{$1} = $2;
}
}
}
}
sub is_valid {
my $self = shift;
return ! exists $self->{errors};
}
sub overwrite {
my $self = shift;
if (scalar(keys %{$self->{config}->{default_no_section}}) > 0) {
foreach (keys %{$self->{config}->{default_no_section}}) {
$self->{commandline}->{$_} = $self->{config}->{default_no_section}->{$_};
}
}
if (exists $self->{config}->{$self->{section}}) {
foreach (keys %{$self->{config}->{$self->{section}}}) {
$self->{commandline}->{$_} = $self->{config}->{$self->{section}}->{$_};
}
}
}
sub errors {
my $self = shift;
return $self->{errors} || "";
}
1;
__END__

View file

@ -0,0 +1,265 @@
package Monitoring::GLPlugin::Commandline::Getopt;
use strict;
use File::Basename;
use Getopt::Long qw(:config no_ignore_case bundling);
# Standard defaults
my %DEFAULT = (
timeout => 15,
verbose => 0,
license =>
"This monitoring plugin is free software, and comes with ABSOLUTELY NO WARRANTY.
It may be used, redistributed and/or modified under the terms of the GNU
General Public Licence (see http://www.fsf.org/licensing/licenses/gpl.txt).",
);
# Standard arguments
my @ARGS = ({
spec => 'usage|?',
help => "-?, --usage\n Print usage information",
}, {
spec => 'help|h',
help => "-h, --help\n Print detailed help screen",
}, {
spec => 'version|V',
help => "-V, --version\n Print version information",
}, {
#spec => 'extra-opts:s@',
#help => "--extra-opts=[<section>[@<config_file>]]\n Section and/or config_file from which to load extra options (may repeat)",
}, {
spec => 'timeout|t=i',
help => sprintf("-t, --timeout=INTEGER\n Seconds before plugin times out (default: %s)", $DEFAULT{timeout}),
default => $DEFAULT{timeout},
}, {
spec => 'verbose|v+',
help => "-v, --verbose\n Show details for command-line debugging (can repeat up to 3 times)",
default => $DEFAULT{verbose},
},
);
# Standard arguments we traditionally display last in the help output
my %DEFER_ARGS = map { $_ => 1 } qw(timeout verbose);
sub _init {
my ($self, %params) = @_;
# Check params
my %attr = (
usage => 1,
version => 0,
url => 0,
plugin => { default => $Monitoring::GLPlugin::pluginname },
blurb => 0,
extra => 0,
'extra-opts' => 0,
license => { default => $DEFAULT{license} },
timeout => { default => $DEFAULT{timeout} },
);
# Add attr to private _attr hash (except timeout)
$self->{timeout} = delete $attr{timeout};
$self->{_attr} = { %attr };
foreach (keys %{$self->{_attr}}) {
if (exists $params{$_}) {
$self->{_attr}->{$_} = $params{$_};
} else {
$self->{_attr}->{$_} = $self->{_attr}->{$_}->{default}
if ref ($self->{_attr}->{$_}) eq 'HASH' &&
exists $self->{_attr}->{$_}->{default};
}
}
# Chomp _attr values
chomp foreach values %{$self->{_attr}};
# Setup initial args list
$self->{_args} = [ grep { exists $_->{spec} } @ARGS ];
$self
}
sub new {
my ($class, @params) = @_;
require Monitoring::GLPlugin::Commandline::Extraopts
if ! grep /BEGIN/, keys %Monitoring::GLPlugin::Commandline::Extraopts::;
my $self = bless {}, $class;
$self->_init(@params);
}
sub decode_rfc3986 {
my ($self, $password) = @_;
if ($password && $password =~ /^rfc3986:\/\/(.*)/) {
$password = $1;
$password =~ s/%([A-Za-z0-9]{2})/chr(hex($1))/seg;
}
return $password;
}
sub add_arg {
my ($self, %arg) = @_;
push (@{$self->{_args}}, \%arg);
}
sub mod_arg {
my ($self, $argname, %arg) = @_;
foreach my $old_arg (@{$self->{_args}}) {
next unless $old_arg->{spec} =~ /(\w+).*/ && $argname eq $1;
foreach my $key (keys %arg) {
$old_arg->{$key} = $arg{$key};
}
}
}
sub getopts {
my ($self) = @_;
my %commandline = ();
$self->{opts}->{all_my_opts} = {};
my @params = map { $_->{spec} } @{$self->{_args}};
if (! GetOptions(\%commandline, @params)) {
$self->print_help();
exit 3;
} else {
no strict 'refs';
no warnings 'redefine';
if (exists $commandline{'extra-opts'}) {
# read the extra file and overwrite other parameters
my $extras = Monitoring::GLPlugin::Commandline::Extraopts->new(
file => $commandline{'extra-opts'},
commandline => \%commandline
);
if (! $extras->is_valid()) {
printf "UNKNOWN - extra-opts are not valid: %s\n", $extras->errors();
exit 3;
} else {
$extras->overwrite();
}
}
do { $self->print_help(); exit 0; } if $commandline{help};
do { $self->print_version(); exit 0 } if $commandline{version};
do { $self->print_usage(); exit 3 } if $commandline{usage};
foreach (map { $_->{spec} =~ /^([\w\-]+)/; $1; } @{$self->{_args}}) {
my $field = $_;
*{"$field"} = sub {
return $self->{opts}->{$field};
};
}
*{"all_my_opts"} = sub {
return $self->{opts}->{all_my_opts};
};
foreach (@{$self->{_args}}) {
$_->{spec} =~ /^([\w\-]+)/;
my $spec = $1;
my $envname = uc $spec;
$envname =~ s/\-/_/g;
if (! exists $commandline{$spec}) {
# Kommandozeile hat oberste Prioritaet
# Also: --option ueberschreibt NAGIOS__HOSTOPTION
# Aaaaber: extra-opts haben immer noch Vorrang vor allem anderen.
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
# beschreibt das anders, Posix-Tools verhalten sich auch entsprechend.
# Irgendwann wird das hier daher umgeschrieben, so dass extra-opts
# die niedrigste Prioritaet erhalten.
if (exists $ENV{'NAGIOS__SERVICE'.$envname}) {
$commandline{$spec} = $ENV{'NAGIOS__SERVICE'.$envname};
} elsif (exists $ENV{'NAGIOS__HOST'.$envname}) {
$commandline{$spec} = $ENV{'NAGIOS__HOST'.$envname};
}
}
$self->{opts}->{$spec} = $_->{default};
}
foreach (map { $_->{spec} =~ /^([\w\-]+)/; $1; }
grep { exists $_->{required} && $_->{required} } @{$self->{_args}}) {
do { $self->print_usage(); exit 3 } if ! exists $commandline{$_};
}
foreach (grep { exists $_->{default} } @{$self->{_args}}) {
$_->{spec} =~ /^([\w\-]+)/;
my $spec = $1;
$self->{opts}->{$spec} = $_->{default};
}
foreach (keys %commandline) {
$self->{opts}->{$_} = $commandline{$_};
$self->{opts}->{all_my_opts}->{$_} = $commandline{$_};
}
foreach (grep { exists $_->{env} } @{$self->{_args}}) {
$_->{spec} =~ /^([\w\-]+)/;
my $spec = $1;
if (exists $ENV{'NAGIOS__HOST'.$_->{env}}) {
$self->{opts}->{$spec} = $ENV{'NAGIOS__HOST'.$_->{env}};
}
if (exists $ENV{'NAGIOS__SERVICE'.$_->{env}}) {
$self->{opts}->{$spec} = $ENV{'NAGIOS__SERVICE'.$_->{env}};
}
}
foreach (grep { exists $_->{aliasfor} } @{$self->{_args}}) {
my $field = $_->{aliasfor};
$_->{spec} =~ /^([\w\-]+)/;
my $aliasfield = $1;
next if $self->{opts}->{$field};
$self->{opts}->{$field} = $self->{opts}->{$aliasfield};
*{"$field"} = sub {
return $self->{opts}->{$field};
};
}
foreach (grep { exists $_->{decode} } @{$self->{_args}}) {
my $decoding = $_->{decode};
$_->{spec} =~ /^([\w\-]+)/;
my $spec = $1;
if (exists $self->{opts}->{$spec}) {
if ($decoding eq "rfc3986") {
$self->{opts}->{$spec} =
$self->decode_rfc3986($self->{opts}->{$spec});
}
}
}
}
}
sub create_opt {
my ($self, $key) = @_;
no strict 'refs';
*{"$key"} = sub {
return $self->{opts}->{$key};
};
}
sub override_opt {
my ($self, $key, $value) = @_;
$self->{opts}->{$key} = $value;
}
sub get {
my ($self, $opt) = @_;
return $self->{opts}->{$opt};
}
sub print_help {
my ($self) = @_;
$self->print_version();
printf "\n%s\n", $self->{_attr}->{license};
printf "\n%s\n\n", $self->{_attr}->{blurb};
$self->print_usage();
foreach (grep {
! (exists $_->{hidden} && $_->{hidden})
} @{$self->{_args}}) {
printf " %s\n", $_->{help};
}
}
sub print_usage {
my ($self) = @_;
printf $self->{_attr}->{usage}, $self->{_attr}->{plugin};
print "\n";
}
sub print_version {
my ($self) = @_;
printf "%s %s", $self->{_attr}->{plugin}, $self->{_attr}->{version};
printf " [%s]", $self->{_attr}->{url} if $self->{_attr}->{url};
print "\n";
}
sub print_license {
my ($self) = @_;
printf "%s\n", $self->{_attr}->{license};
print "\n";
}
1;
__END__

View file

@ -0,0 +1,70 @@
package Monitoring::GLPlugin::Item;
our @ISA = qw(Monitoring::GLPlugin);
use strict;
sub new {
my ($class, %params) = @_;
my $self = {
blacklisted => 0,
info => undef,
extendedinfo => undef,
};
bless $self, $class;
$self->init(%params);
return $self;
}
sub check {
my ($self, $lists) = @_;
my @lists = $lists ? @{$lists} : grep { ref($self->{$_}) eq "ARRAY" } keys %{$self};
foreach my $list (@lists) {
$self->add_info('checking '.$list);
foreach my $element (@{$self->{$list}}) {
$element->blacklist() if $self->is_blacklisted();
$element->check();
}
}
}
sub init_subsystems {
my ($self, $subsysref) = @_;
foreach (@{$subsysref}) {
my ($subsys, $class) = @{$_};
$self->{$subsys} = $class->new()
if (! $self->opts->subsystem || grep {
$_ eq $subsys;
} map {
s/^\s+|\s+$//g;
$_;
} split /,/, $self->opts->subsystem);
}
}
sub check_subsystems {
my ($self) = @_;
my @subsystems = grep { $_ =~ /.*_subsystem$/ } keys %{$self};
foreach (@subsystems) {
$self->{$_}->check();
}
$self->reduce_messages_short(join(", ",
map {
sprintf "%s working fine", $_;
} map {
s/^\s+|\s+$//g;
$_;
} split /,/, $self->opts->subsystem
)) if $self->opts->subsystem;
}
sub dump_subsystems {
my ($self) = @_;
my @subsystems = grep { $_ =~ /.*_subsystem$/ } keys %{$self};
foreach (@subsystems) {
$self->{$_}->dump();
}
}
1;
__END__

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,38 @@
package Monitoring::GLPlugin::SNMP::CSF;
#our @ISA = qw(Monitoring::GLPlugin::SNMP);
use Digest::MD5 qw(md5_hex);
use strict;
sub create_statefile {
my ($self, %params) = @_;
my $extension = "";
$extension .= $params{name} ? '_'.$params{name} : '';
if ($self->opts->community) {
$extension .= md5_hex($self->opts->community);
}
if ($self->opts->contextname) {
$extension .= $self->opts->contextname;
}
$extension =~ s/\//_/g;
$extension =~ s/\(/_/g;
$extension =~ s/\)/_/g;
$extension =~ s/\*/_/g;
$extension =~ s/\s/_/g;
if ($self->opts->snmpwalk && ! $self->opts->hostname) {
return sprintf "%s/%s_%s%s", $self->statefilesdir(),
'snmpwalk.file'.md5_hex($self->opts->snmpwalk),
$self->clean_path($self->mode), $self->clean_path(lc $extension);
} elsif ($self->opts->snmpwalk && $self->opts->hostname eq "walkhost") {
return sprintf "%s/%s_%s%s", $self->statefilesdir(),
'snmpwalk.file'.md5_hex($self->opts->snmpwalk),
$self->clean_path($self->mode), $self->clean_path(lc $extension);
} else {
return sprintf "%s/%s_%s%s", $self->statefilesdir(),
$self->opts->hostname,
$self->clean_path($self->mode), $self->clean_path(lc $extension);
}
}
1;
__END__

View file

@ -0,0 +1,7 @@
package Monitoring::GLPlugin::SNMP::Item;
our @ISA = qw(Monitoring::GLPlugin::SNMP::CSF Monitoring::GLPlugin::Item Monitoring::GLPlugin::SNMP);
use strict;
1;
__END__

View file

@ -0,0 +1,16 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids;
our @ISA = qw(Monitoring::GLPlugin::SNMP);
{
no warnings qw(once);
$Monitoring::GLPlugin::SNMP::MibsAndOids::discover_ids = {};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids = {};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids = {};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions = {};
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin = {};
}
1;
__END__

View file

@ -0,0 +1,101 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ADONISDNSMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ADONIS-DNS-MIB'} = {
url => '',
name => 'ADONIS-DNS-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ADONIS-DNS-MIB'} =
'1.3.6.1.4.1.13315.100.101';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ADONIS-DNS-MIB'} = {
'adonis' => '1.3.6.1.4.1.13315.100.101',
'adonisObjects' => '1.3.6.1.4.1.13315.100.101.1',
'dns' => '1.3.6.1.4.1.13315.100.101.1.1',
'dnsDaemon' => '1.3.6.1.4.1.13315.100.101.1.1.1',
'dnsDaemonRunning' => '1.3.6.1.4.1.13315.100.101.1.1.1.1',
'dnsDaemonNumberOfZones' => '1.3.6.1.4.1.13315.100.101.1.1.1.2',
'dnsDaemonDebugLevel' => '1.3.6.1.4.1.13315.100.101.1.1.1.3',
'dnsDaemonZoneTransfersInProgress' => '1.3.6.1.4.1.13315.100.101.1.1.1.4',
'dnsDaemonZoneTransfersDeferred' => '1.3.6.1.4.1.13315.100.101.1.1.1.5',
'dnsDaemonSOAQueriesInProgress' => '1.3.6.1.4.1.13315.100.101.1.1.1.6',
'dnsDaemonQueryLoggingState' => '1.3.6.1.4.1.13315.100.101.1.1.1.7',
'dnsDaemonZoneTransferFailure' => '1.3.6.1.4.1.13315.100.101.1.1.1.8',
'dnsStats' => '1.3.6.1.4.1.13315.100.101.1.1.2',
'dnsStatsSuccess' => '1.3.6.1.4.1.13315.100.101.1.1.2.1',
'dnsStatsReferral' => '1.3.6.1.4.1.13315.100.101.1.1.2.2',
'dnsStatsNXRRSet' => '1.3.6.1.4.1.13315.100.101.1.1.2.3',
'dnsStatsNXDomain' => '1.3.6.1.4.1.13315.100.101.1.1.2.4',
'dnsStatsRecursion' => '1.3.6.1.4.1.13315.100.101.1.1.2.5',
'dnsStatsFailure' => '1.3.6.1.4.1.13315.100.101.1.1.2.6',
'dhcp' => '1.3.6.1.4.1.13315.100.101.1.2',
'dhcpDaemon' => '1.3.6.1.4.1.13315.100.101.1.2.1',
'dhcpDaemonRunning' => '1.3.6.1.4.1.13315.100.101.1.2.1.1',
'dhcpDaemonSubnetAlert' => '1.3.6.1.4.1.13315.100.101.1.2.1.2',
'dhcpDaemonLeaseStatsSuccess' => '1.3.6.1.4.1.13315.100.101.1.2.1.3',
'dhcpFailOverState' => '1.3.6.1.4.1.13315.100.101.1.2.1.4',
'dhcpStats' => '1.3.6.1.4.1.13315.100.101.1.2.2',
'dhcpLeaseTable' => '1.3.6.1.4.1.13315.100.101.1.2.2.1',
'dhcpLeaseEntry' => '1.3.6.1.4.1.13315.100.101.1.2.2.1.1',
'dhcpIP' => '1.3.6.1.4.1.13315.100.101.1.2.2.1.1.1',
'dhcpLeaseStartTime' => '1.3.6.1.4.1.13315.100.101.1.2.2.1.1.2',
'dhcpLeaseEndTime' => '1.3.6.1.4.1.13315.100.101.1.2.2.1.1.3',
'dhcpLeaseTimeStamp' => '1.3.6.1.4.1.13315.100.101.1.2.2.1.1.4',
'dhcpLeaseBindState' => '1.3.6.1.4.1.13315.100.101.1.2.2.1.1.5',
'dhcpLeaseBindStateDefinition' => 'ADONIS-DNS-MIB::dhcpLeaseBindState',
'dhcpLeaseHardwareAddress' => '1.3.6.1.4.1.13315.100.101.1.2.2.1.1.6',
'dhcpLeaseHostname' => '1.3.6.1.4.1.13315.100.101.1.2.2.1.1.7',
'dhcpSubnetTable' => '1.3.6.1.4.1.13315.100.101.1.2.2.2',
'dhcpSubnetEntry' => '1.3.6.1.4.1.13315.100.101.1.2.2.2.1',
'dhcpSubnetIP' => '1.3.6.1.4.1.13315.100.101.1.2.2.2.1.1',
'dhcpSubnetMask' => '1.3.6.1.4.1.13315.100.101.1.2.2.2.1.2',
'dhcpSubnetSize' => '1.3.6.1.4.1.13315.100.101.1.2.2.2.1.3',
'dhcpSubnetUsed' => '1.3.6.1.4.1.13315.100.101.1.2.2.2.1.4',
'dhcpSubnetAlert' => '1.3.6.1.4.1.13315.100.101.1.2.2.2.1.5',
'dhcpPoolTable' => '1.3.6.1.4.1.13315.100.101.1.2.2.3',
'dhcpPoolEntry' => '1.3.6.1.4.1.13315.100.101.1.2.2.3.1',
'dhcpPoolSubnetIP' => '1.3.6.1.4.1.13315.100.101.1.2.2.3.1.1',
'dhcpPoolStartIP' => '1.3.6.1.4.1.13315.100.101.1.2.2.3.1.2',
'dhcpPoolEndIP' => '1.3.6.1.4.1.13315.100.101.1.2.2.3.1.3',
'dhcpPoolSize' => '1.3.6.1.4.1.13315.100.101.1.2.2.3.1.4',
'dhcpPoolUsed' => '1.3.6.1.4.1.13315.100.101.1.2.2.3.1.5',
'dhcpPoolAlert' => '1.3.6.1.4.1.13315.100.101.1.2.2.3.1.6',
'dhcpConfig' => '1.3.6.1.4.1.13315.100.101.1.2.3',
'dhcpFixedIPTable' => '1.3.6.1.4.1.13315.100.101.1.2.3.1',
'dhcpFixedIPEntry' => '1.3.6.1.4.1.13315.100.101.1.2.3.1.1',
'dhcpFixedIP' => '1.3.6.1.4.1.13315.100.101.1.2.3.1.1.1',
'ha' => '1.3.6.1.4.1.13315.100.101.1.3',
'haService' => '1.3.6.1.4.1.13315.100.101.1.3.1',
'haServiceRunning' => '1.3.6.1.4.1.13315.100.101.1.3.1.1',
'haServiceNodeType' => '1.3.6.1.4.1.13315.100.101.1.3.1.2',
'haReplicationBinding' => '1.3.6.1.4.1.13315.100.101.1.3.1.3',
'commandServer' => '1.3.6.1.4.1.13315.100.101.1.4',
'commandServerDaemon' => '1.3.6.1.4.1.13315.100.101.1.4.1',
'commandServerDaemonRunning' => '1.3.6.1.4.1.13315.100.101.1.4.1.1',
'lcd' => '1.3.6.1.4.1.13315.100.101.1.5',
'lcdDaemon' => '1.3.6.1.4.1.13315.100.101.1.5.1',
'licenseValid' => '1.3.6.1.4.1.13315.100.101.1.5.1.1',
'licenseExpiry' => '1.3.6.1.4.1.13315.100.101.1.5.1.2',
'tftp' => '1.3.6.1.4.1.13315.100.101.1.6',
'tftpDaemon' => '1.3.6.1.4.1.13315.100.101.1.6.1',
'tftpDaemonRunning' => '1.3.6.1.4.1.13315.100.101.1.6.1.1',
'system' => '1.3.6.1.4.1.13315.100.101.1.7',
'systemDaemon' => '1.3.6.1.4.1.13315.100.101.1.7.1',
'systemState' => '1.3.6.1.4.1.13315.100.101.1.7.1.1',
'adonisTraps' => '1.3.6.1.4.1.13315.100.101.2',
'trapDNS' => '1.3.6.1.4.1.13315.100.101.2.1',
'trapHA' => '1.3.6.1.4.1.13315.100.101.2.2',
'trapCommandServer' => '1.3.6.1.4.1.13315.100.101.2.3',
'trapDHCP' => '1.3.6.1.4.1.13315.100.101.2.4',
'trapReplication' => '1.3.6.1.4.1.13315.100.101.2.5',
'trapTFTP' => '1.3.6.1.4.1.13315.100.101.2.6',
'trapSystem' => '1.3.6.1.4.1.13315.100.101.2.7',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ADONIS-DNS-MIB'} = {
'dhcpLeaseBindState' => {
'0' => 'free',
'1' => 'active',
'2' => 'fixed',
},
};

View file

@ -0,0 +1,284 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ADSLLINEMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ADSL-LINE-MIB'} = {
url => '',
name => 'ADSL-LINE-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ADSL-LINE-MIB'} =
'1.3.6.1.2.1.10.94.1';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ADSL-LINE-MIB'} = {
adslMIB => '1.3.6.1.2.1.10.94',
adslLineMib => '1.3.6.1.2.1.10.94.1',
adslMibObjects => '1.3.6.1.2.1.10.94.1.1',
adslLineTable => '1.3.6.1.2.1.10.94.1.1.1',
adslLineEntry => '1.3.6.1.2.1.10.94.1.1.1.1',
adslLineCoding => '1.3.6.1.2.1.10.94.1.1.1.1.1',
adslLineCodingDefinition => 'ADSL-LINE-MIB::adslLineCoding',
adslLineType => '1.3.6.1.2.1.10.94.1.1.1.1.2',
adslLineTypeDefinition => 'ADSL-LINE-MIB::adslLineType',
adslLineSpecific => '1.3.6.1.2.1.10.94.1.1.1.1.3',
adslLineConfProfile => '1.3.6.1.2.1.10.94.1.1.1.1.4',
adslLineAlarmConfProfile => '1.3.6.1.2.1.10.94.1.1.1.1.5',
adslAtucPhysTable => '1.3.6.1.2.1.10.94.1.1.2',
adslAtucPhysEntry => '1.3.6.1.2.1.10.94.1.1.2.1',
adslAtucInvSerialNumber => '1.3.6.1.2.1.10.94.1.1.2.1.1',
adslAtucInvVendorID => '1.3.6.1.2.1.10.94.1.1.2.1.2',
adslAtucInvVersionNumber => '1.3.6.1.2.1.10.94.1.1.2.1.3',
adslAtucCurrSnrMgn => '1.3.6.1.2.1.10.94.1.1.2.1.4',
adslAtucCurrAtn => '1.3.6.1.2.1.10.94.1.1.2.1.5',
adslAtucCurrStatus => '1.3.6.1.2.1.10.94.1.1.2.1.6',
adslAtucCurrOutputPwr => '1.3.6.1.2.1.10.94.1.1.2.1.7',
adslAtucCurrAttainableRate => '1.3.6.1.2.1.10.94.1.1.2.1.8',
adslAturPhysTable => '1.3.6.1.2.1.10.94.1.1.3',
adslAturPhysEntry => '1.3.6.1.2.1.10.94.1.1.3.1',
adslAturInvSerialNumber => '1.3.6.1.2.1.10.94.1.1.3.1.1',
adslAturInvVendorID => '1.3.6.1.2.1.10.94.1.1.3.1.2',
adslAturInvVersionNumber => '1.3.6.1.2.1.10.94.1.1.3.1.3',
adslAturCurrSnrMgn => '1.3.6.1.2.1.10.94.1.1.3.1.4',
adslAturCurrAtn => '1.3.6.1.2.1.10.94.1.1.3.1.5',
adslAturCurrStatus => '1.3.6.1.2.1.10.94.1.1.3.1.6',
adslAturCurrOutputPwr => '1.3.6.1.2.1.10.94.1.1.3.1.7',
adslAturCurrAttainableRate => '1.3.6.1.2.1.10.94.1.1.3.1.8',
adslAtucChanTable => '1.3.6.1.2.1.10.94.1.1.4',
adslAtucChanEntry => '1.3.6.1.2.1.10.94.1.1.4.1',
adslAtucChanInterleaveDelay => '1.3.6.1.2.1.10.94.1.1.4.1.1',
adslAtucChanCurrTxRate => '1.3.6.1.2.1.10.94.1.1.4.1.2',
adslAtucChanPrevTxRate => '1.3.6.1.2.1.10.94.1.1.4.1.3',
adslAtucChanCrcBlockLength => '1.3.6.1.2.1.10.94.1.1.4.1.4',
adslAturChanTable => '1.3.6.1.2.1.10.94.1.1.5',
adslAturChanEntry => '1.3.6.1.2.1.10.94.1.1.5.1',
adslAturChanInterleaveDelay => '1.3.6.1.2.1.10.94.1.1.5.1.1',
adslAturChanCurrTxRate => '1.3.6.1.2.1.10.94.1.1.5.1.2',
adslAturChanPrevTxRate => '1.3.6.1.2.1.10.94.1.1.5.1.3',
adslAturChanCrcBlockLength => '1.3.6.1.2.1.10.94.1.1.5.1.4',
adslAtucPerfDataTable => '1.3.6.1.2.1.10.94.1.1.6',
adslAtucPerfDataEntry => '1.3.6.1.2.1.10.94.1.1.6.1',
adslAtucPerfLofs => '1.3.6.1.2.1.10.94.1.1.6.1.1',
adslAtucPerfLoss => '1.3.6.1.2.1.10.94.1.1.6.1.2',
adslAtucPerfLols => '1.3.6.1.2.1.10.94.1.1.6.1.3',
adslAtucPerfLprs => '1.3.6.1.2.1.10.94.1.1.6.1.4',
adslAtucPerfESs => '1.3.6.1.2.1.10.94.1.1.6.1.5',
adslAtucPerfInits => '1.3.6.1.2.1.10.94.1.1.6.1.6',
adslAtucPerfValidIntervals => '1.3.6.1.2.1.10.94.1.1.6.1.7',
adslAtucPerfInvalidIntervals => '1.3.6.1.2.1.10.94.1.1.6.1.8',
adslAtucPerfCurr15MinTimeElapsed => '1.3.6.1.2.1.10.94.1.1.6.1.9',
adslAtucPerfCurr15MinLofs => '1.3.6.1.2.1.10.94.1.1.6.1.10',
adslAtucPerfCurr15MinLoss => '1.3.6.1.2.1.10.94.1.1.6.1.11',
adslAtucPerfCurr15MinLols => '1.3.6.1.2.1.10.94.1.1.6.1.12',
adslAtucPerfCurr15MinLprs => '1.3.6.1.2.1.10.94.1.1.6.1.13',
adslAtucPerfCurr15MinESs => '1.3.6.1.2.1.10.94.1.1.6.1.14',
adslAtucPerfCurr15MinInits => '1.3.6.1.2.1.10.94.1.1.6.1.15',
adslAtucPerfCurr1DayTimeElapsed => '1.3.6.1.2.1.10.94.1.1.6.1.16',
adslAtucPerfCurr1DayLofs => '1.3.6.1.2.1.10.94.1.1.6.1.17',
adslAtucPerfCurr1DayLoss => '1.3.6.1.2.1.10.94.1.1.6.1.18',
adslAtucPerfCurr1DayLols => '1.3.6.1.2.1.10.94.1.1.6.1.19',
adslAtucPerfCurr1DayLprs => '1.3.6.1.2.1.10.94.1.1.6.1.20',
adslAtucPerfCurr1DayESs => '1.3.6.1.2.1.10.94.1.1.6.1.21',
adslAtucPerfCurr1DayInits => '1.3.6.1.2.1.10.94.1.1.6.1.22',
adslAtucPerfPrev1DayMoniSecs => '1.3.6.1.2.1.10.94.1.1.6.1.23',
adslAtucPerfPrev1DayLofs => '1.3.6.1.2.1.10.94.1.1.6.1.24',
adslAtucPerfPrev1DayLoss => '1.3.6.1.2.1.10.94.1.1.6.1.25',
adslAtucPerfPrev1DayLols => '1.3.6.1.2.1.10.94.1.1.6.1.26',
adslAtucPerfPrev1DayLprs => '1.3.6.1.2.1.10.94.1.1.6.1.27',
adslAtucPerfPrev1DayESs => '1.3.6.1.2.1.10.94.1.1.6.1.28',
adslAtucPerfPrev1DayInits => '1.3.6.1.2.1.10.94.1.1.6.1.29',
adslAturPerfDataTable => '1.3.6.1.2.1.10.94.1.1.7',
adslAturPerfDataEntry => '1.3.6.1.2.1.10.94.1.1.7.1',
adslAturPerfLofs => '1.3.6.1.2.1.10.94.1.1.7.1.1',
adslAturPerfLoss => '1.3.6.1.2.1.10.94.1.1.7.1.2',
adslAturPerfLprs => '1.3.6.1.2.1.10.94.1.1.7.1.3',
adslAturPerfESs => '1.3.6.1.2.1.10.94.1.1.7.1.4',
adslAturPerfValidIntervals => '1.3.6.1.2.1.10.94.1.1.7.1.5',
adslAturPerfInvalidIntervals => '1.3.6.1.2.1.10.94.1.1.7.1.6',
adslAturPerfCurr15MinTimeElapsed => '1.3.6.1.2.1.10.94.1.1.7.1.7',
adslAturPerfCurr15MinLofs => '1.3.6.1.2.1.10.94.1.1.7.1.8',
adslAturPerfCurr15MinLoss => '1.3.6.1.2.1.10.94.1.1.7.1.9',
adslAturPerfCurr15MinLprs => '1.3.6.1.2.1.10.94.1.1.7.1.10',
adslAturPerfCurr15MinESs => '1.3.6.1.2.1.10.94.1.1.7.1.11',
adslAturPerfCurr1DayTimeElapsed => '1.3.6.1.2.1.10.94.1.1.7.1.12',
adslAturPerfCurr1DayLofs => '1.3.6.1.2.1.10.94.1.1.7.1.13',
adslAturPerfCurr1DayLoss => '1.3.6.1.2.1.10.94.1.1.7.1.14',
adslAturPerfCurr1DayLprs => '1.3.6.1.2.1.10.94.1.1.7.1.15',
adslAturPerfCurr1DayESs => '1.3.6.1.2.1.10.94.1.1.7.1.16',
adslAturPerfPrev1DayMoniSecs => '1.3.6.1.2.1.10.94.1.1.7.1.17',
adslAturPerfPrev1DayLofs => '1.3.6.1.2.1.10.94.1.1.7.1.18',
adslAturPerfPrev1DayLoss => '1.3.6.1.2.1.10.94.1.1.7.1.19',
adslAturPerfPrev1DayLprs => '1.3.6.1.2.1.10.94.1.1.7.1.20',
adslAturPerfPrev1DayESs => '1.3.6.1.2.1.10.94.1.1.7.1.21',
adslAtucIntervalTable => '1.3.6.1.2.1.10.94.1.1.8',
adslAtucIntervalEntry => '1.3.6.1.2.1.10.94.1.1.8.1',
adslAtucIntervalNumber => '1.3.6.1.2.1.10.94.1.1.8.1.1',
adslAtucIntervalLofs => '1.3.6.1.2.1.10.94.1.1.8.1.2',
adslAtucIntervalLoss => '1.3.6.1.2.1.10.94.1.1.8.1.3',
adslAtucIntervalLols => '1.3.6.1.2.1.10.94.1.1.8.1.4',
adslAtucIntervalLprs => '1.3.6.1.2.1.10.94.1.1.8.1.5',
adslAtucIntervalESs => '1.3.6.1.2.1.10.94.1.1.8.1.6',
adslAtucIntervalInits => '1.3.6.1.2.1.10.94.1.1.8.1.7',
adslAtucIntervalValidData => '1.3.6.1.2.1.10.94.1.1.8.1.8',
adslAturIntervalTable => '1.3.6.1.2.1.10.94.1.1.9',
adslAturIntervalEntry => '1.3.6.1.2.1.10.94.1.1.9.1',
adslAturIntervalNumber => '1.3.6.1.2.1.10.94.1.1.9.1.1',
adslAturIntervalLofs => '1.3.6.1.2.1.10.94.1.1.9.1.2',
adslAturIntervalLoss => '1.3.6.1.2.1.10.94.1.1.9.1.3',
adslAturIntervalLprs => '1.3.6.1.2.1.10.94.1.1.9.1.4',
adslAturIntervalESs => '1.3.6.1.2.1.10.94.1.1.9.1.5',
adslAturIntervalValidData => '1.3.6.1.2.1.10.94.1.1.9.1.6',
adslAtucChanPerfDataTable => '1.3.6.1.2.1.10.94.1.1.10',
adslAtucChanPerfDataEntry => '1.3.6.1.2.1.10.94.1.1.10.1',
adslAtucChanReceivedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.1',
adslAtucChanTransmittedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.2',
adslAtucChanCorrectedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.3',
adslAtucChanUncorrectBlks => '1.3.6.1.2.1.10.94.1.1.10.1.4',
adslAtucChanPerfValidIntervals => '1.3.6.1.2.1.10.94.1.1.10.1.5',
adslAtucChanPerfInvalidIntervals => '1.3.6.1.2.1.10.94.1.1.10.1.6',
adslAtucChanPerfCurr15MinTimeElapsed => '1.3.6.1.2.1.10.94.1.1.10.1.7',
adslAtucChanPerfCurr15MinReceivedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.8',
adslAtucChanPerfCurr15MinTransmittedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.9',
adslAtucChanPerfCurr15MinCorrectedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.10',
adslAtucChanPerfCurr15MinUncorrectBlks => '1.3.6.1.2.1.10.94.1.1.10.1.11',
adslAtucChanPerfCurr1DayTimeElapsed => '1.3.6.1.2.1.10.94.1.1.10.1.12',
adslAtucChanPerfCurr1DayReceivedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.13',
adslAtucChanPerfCurr1DayTransmittedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.14',
adslAtucChanPerfCurr1DayCorrectedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.15',
adslAtucChanPerfCurr1DayUncorrectBlks => '1.3.6.1.2.1.10.94.1.1.10.1.16',
adslAtucChanPerfPrev1DayMoniSecs => '1.3.6.1.2.1.10.94.1.1.10.1.17',
adslAtucChanPerfPrev1DayReceivedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.18',
adslAtucChanPerfPrev1DayTransmittedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.19',
adslAtucChanPerfPrev1DayCorrectedBlks => '1.3.6.1.2.1.10.94.1.1.10.1.20',
adslAtucChanPerfPrev1DayUncorrectBlks => '1.3.6.1.2.1.10.94.1.1.10.1.21',
adslAturChanPerfDataTable => '1.3.6.1.2.1.10.94.1.1.11',
adslAturChanPerfDataEntry => '1.3.6.1.2.1.10.94.1.1.11.1',
adslAturChanReceivedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.1',
adslAturChanTransmittedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.2',
adslAturChanCorrectedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.3',
adslAturChanUncorrectBlks => '1.3.6.1.2.1.10.94.1.1.11.1.4',
adslAturChanPerfValidIntervals => '1.3.6.1.2.1.10.94.1.1.11.1.5',
adslAturChanPerfInvalidIntervals => '1.3.6.1.2.1.10.94.1.1.11.1.6',
adslAturChanPerfCurr15MinTimeElapsed => '1.3.6.1.2.1.10.94.1.1.11.1.7',
adslAturChanPerfCurr15MinReceivedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.8',
adslAturChanPerfCurr15MinTransmittedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.9',
adslAturChanPerfCurr15MinCorrectedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.10',
adslAturChanPerfCurr15MinUncorrectBlks => '1.3.6.1.2.1.10.94.1.1.11.1.11',
adslAturChanPerfCurr1DayTimeElapsed => '1.3.6.1.2.1.10.94.1.1.11.1.12',
adslAturChanPerfCurr1DayReceivedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.13',
adslAturChanPerfCurr1DayTransmittedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.14',
adslAturChanPerfCurr1DayCorrectedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.15',
adslAturChanPerfCurr1DayUncorrectBlks => '1.3.6.1.2.1.10.94.1.1.11.1.16',
adslAturChanPerfPrev1DayMoniSecs => '1.3.6.1.2.1.10.94.1.1.11.1.17',
adslAturChanPerfPrev1DayReceivedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.18',
adslAturChanPerfPrev1DayTransmittedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.19',
adslAturChanPerfPrev1DayCorrectedBlks => '1.3.6.1.2.1.10.94.1.1.11.1.20',
adslAturChanPerfPrev1DayUncorrectBlks => '1.3.6.1.2.1.10.94.1.1.11.1.21',
adslAtucChanIntervalTable => '1.3.6.1.2.1.10.94.1.1.12',
adslAtucChanIntervalEntry => '1.3.6.1.2.1.10.94.1.1.12.1',
adslAtucChanIntervalNumber => '1.3.6.1.2.1.10.94.1.1.12.1.1',
adslAtucChanIntervalReceivedBlks => '1.3.6.1.2.1.10.94.1.1.12.1.2',
adslAtucChanIntervalTransmittedBlks => '1.3.6.1.2.1.10.94.1.1.12.1.3',
adslAtucChanIntervalCorrectedBlks => '1.3.6.1.2.1.10.94.1.1.12.1.4',
adslAtucChanIntervalUncorrectBlks => '1.3.6.1.2.1.10.94.1.1.12.1.5',
adslAtucChanIntervalValidData => '1.3.6.1.2.1.10.94.1.1.12.1.6',
adslAturChanIntervalTable => '1.3.6.1.2.1.10.94.1.1.13',
adslAturChanIntervalEntry => '1.3.6.1.2.1.10.94.1.1.13.1',
adslAturChanIntervalNumber => '1.3.6.1.2.1.10.94.1.1.13.1.1',
adslAturChanIntervalReceivedBlks => '1.3.6.1.2.1.10.94.1.1.13.1.2',
adslAturChanIntervalTransmittedBlks => '1.3.6.1.2.1.10.94.1.1.13.1.3',
adslAturChanIntervalCorrectedBlks => '1.3.6.1.2.1.10.94.1.1.13.1.4',
adslAturChanIntervalUncorrectBlks => '1.3.6.1.2.1.10.94.1.1.13.1.5',
adslAturChanIntervalValidData => '1.3.6.1.2.1.10.94.1.1.13.1.6',
adslLineConfProfileTable => '1.3.6.1.2.1.10.94.1.1.14',
adslLineConfProfileEntry => '1.3.6.1.2.1.10.94.1.1.14.1',
adslLineConfProfileName => '1.3.6.1.2.1.10.94.1.1.14.1.1',
adslAtucConfRateMode => '1.3.6.1.2.1.10.94.1.1.14.1.2',
adslAtucConfRateModeDefinition => 'ADSL-LINE-MIB::adslAtucConfRateMode',
adslAtucConfRateChanRatio => '1.3.6.1.2.1.10.94.1.1.14.1.3',
adslAtucConfTargetSnrMgn => '1.3.6.1.2.1.10.94.1.1.14.1.4',
adslAtucConfMaxSnrMgn => '1.3.6.1.2.1.10.94.1.1.14.1.5',
adslAtucConfMinSnrMgn => '1.3.6.1.2.1.10.94.1.1.14.1.6',
adslAtucConfDownshiftSnrMgn => '1.3.6.1.2.1.10.94.1.1.14.1.7',
adslAtucConfUpshiftSnrMgn => '1.3.6.1.2.1.10.94.1.1.14.1.8',
adslAtucConfMinUpshiftTime => '1.3.6.1.2.1.10.94.1.1.14.1.9',
adslAtucConfMinDownshiftTime => '1.3.6.1.2.1.10.94.1.1.14.1.10',
adslAtucChanConfFastMinTxRate => '1.3.6.1.2.1.10.94.1.1.14.1.11',
adslAtucChanConfInterleaveMinTxRate => '1.3.6.1.2.1.10.94.1.1.14.1.12',
adslAtucChanConfFastMaxTxRate => '1.3.6.1.2.1.10.94.1.1.14.1.13',
adslAtucChanConfInterleaveMaxTxRate => '1.3.6.1.2.1.10.94.1.1.14.1.14',
adslAtucChanConfMaxInterleaveDelay => '1.3.6.1.2.1.10.94.1.1.14.1.15',
adslAturConfRateMode => '1.3.6.1.2.1.10.94.1.1.14.1.16',
adslAturConfRateModeDefinition => 'ADSL-LINE-MIB::adslAturConfRateMode',
adslAturConfRateChanRatio => '1.3.6.1.2.1.10.94.1.1.14.1.17',
adslAturConfTargetSnrMgn => '1.3.6.1.2.1.10.94.1.1.14.1.18',
adslAturConfMaxSnrMgn => '1.3.6.1.2.1.10.94.1.1.14.1.19',
adslAturConfMinSnrMgn => '1.3.6.1.2.1.10.94.1.1.14.1.20',
adslAturConfDownshiftSnrMgn => '1.3.6.1.2.1.10.94.1.1.14.1.21',
adslAturConfUpshiftSnrMgn => '1.3.6.1.2.1.10.94.1.1.14.1.22',
adslAturConfMinUpshiftTime => '1.3.6.1.2.1.10.94.1.1.14.1.23',
adslAturConfMinDownshiftTime => '1.3.6.1.2.1.10.94.1.1.14.1.24',
adslAturChanConfFastMinTxRate => '1.3.6.1.2.1.10.94.1.1.14.1.25',
adslAturChanConfInterleaveMinTxRate => '1.3.6.1.2.1.10.94.1.1.14.1.26',
adslAturChanConfFastMaxTxRate => '1.3.6.1.2.1.10.94.1.1.14.1.27',
adslAturChanConfInterleaveMaxTxRate => '1.3.6.1.2.1.10.94.1.1.14.1.28',
adslAturChanConfMaxInterleaveDelay => '1.3.6.1.2.1.10.94.1.1.14.1.29',
adslLineConfProfileRowStatus => '1.3.6.1.2.1.10.94.1.1.14.1.30',
adslLineAlarmConfProfileTable => '1.3.6.1.2.1.10.94.1.1.15',
adslLineAlarmConfProfileEntry => '1.3.6.1.2.1.10.94.1.1.15.1',
adslLineAlarmConfProfileName => '1.3.6.1.2.1.10.94.1.1.15.1.1',
adslAtucThresh15MinLofs => '1.3.6.1.2.1.10.94.1.1.15.1.2',
adslAtucThresh15MinLoss => '1.3.6.1.2.1.10.94.1.1.15.1.3',
adslAtucThresh15MinLols => '1.3.6.1.2.1.10.94.1.1.15.1.4',
adslAtucThresh15MinLprs => '1.3.6.1.2.1.10.94.1.1.15.1.5',
adslAtucThresh15MinESs => '1.3.6.1.2.1.10.94.1.1.15.1.6',
adslAtucThreshFastRateUp => '1.3.6.1.2.1.10.94.1.1.15.1.7',
adslAtucThreshInterleaveRateUp => '1.3.6.1.2.1.10.94.1.1.15.1.8',
adslAtucThreshFastRateDown => '1.3.6.1.2.1.10.94.1.1.15.1.9',
adslAtucThreshInterleaveRateDown => '1.3.6.1.2.1.10.94.1.1.15.1.10',
adslAtucInitFailureTrapEnable => '1.3.6.1.2.1.10.94.1.1.15.1.11',
adslAtucInitFailureTrapEnableDefinition => 'ADSL-LINE-MIB::adslAtucInitFailureTrapEnable',
adslAturThresh15MinLofs => '1.3.6.1.2.1.10.94.1.1.15.1.12',
adslAturThresh15MinLoss => '1.3.6.1.2.1.10.94.1.1.15.1.13',
adslAturThresh15MinLprs => '1.3.6.1.2.1.10.94.1.1.15.1.14',
adslAturThresh15MinESs => '1.3.6.1.2.1.10.94.1.1.15.1.15',
adslAturThreshFastRateUp => '1.3.6.1.2.1.10.94.1.1.15.1.16',
adslAturThreshInterleaveRateUp => '1.3.6.1.2.1.10.94.1.1.15.1.17',
adslAturThreshFastRateDown => '1.3.6.1.2.1.10.94.1.1.15.1.18',
adslAturThreshInterleaveRateDown => '1.3.6.1.2.1.10.94.1.1.15.1.19',
adslLineAlarmConfProfileRowStatus => '1.3.6.1.2.1.10.94.1.1.15.1.20',
adslLCSMib => '1.3.6.1.2.1.10.94.1.1.16',
adslTraps => '1.3.6.1.2.1.10.94.1.2',
adslAtucTraps => '1.3.6.1.2.1.10.94.1.2.1',
adslAturTraps => '1.3.6.1.2.1.10.94.1.2.2',
adslConformance => '1.3.6.1.2.1.10.94.1.3',
adslGroups => '1.3.6.1.2.1.10.94.1.3.1',
adslCompliances => '1.3.6.1.2.1.10.94.1.3.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ADSL-LINE-MIB'} = {
adslAtucInitFailureTrapEnable => {
'1' => 'enable',
'2' => 'disable',
},
adslAtucConfRateMode => {
'1' => 'fixed',
'2' => 'adaptAtStartup',
'3' => 'adaptAtRuntime',
},
adslLineType => {
'1' => 'noChannel',
'2' => 'fastOnly',
'3' => 'interleavedOnly',
'4' => 'fastOrInterleaved',
'5' => 'fastAndInterleaved',
},
adslAturConfRateMode => {
'1' => 'fixed',
'2' => 'adaptAtStartup',
'3' => 'adaptAtRuntime',
},
adslLineCoding => {
'1' => 'other',
'2' => 'dmt',
'3' => 'cap',
'4' => 'qam',
},
};

View file

@ -0,0 +1,357 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::AIRESPACESWITCHINGMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'AIRESPACE-SWITCHING-MIB'} = {
url => '',
name => 'AIRESPACE-SWITCHING-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'AIRESPACE-SWITCHING-MIB'} =
'1.3.6.1.4.1.14179.1';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'AIRESPACE-SWITCHING-MIB'} = {
'bsnSwitching' => '1.3.6.1.4.1.14179.1',
'agentInfoGroup' => '1.3.6.1.4.1.14179.1.1',
'agentInventoryGroup' => '1.3.6.1.4.1.14179.1.1.1',
'agentInventorySysDescription' => '1.3.6.1.4.1.14179.1.1.1.1',
'agentInventoryMachineType' => '1.3.6.1.4.1.14179.1.1.1.2',
'agentInventoryMachineModel' => '1.3.6.1.4.1.14179.1.1.1.3',
'agentInventorySerialNumber' => '1.3.6.1.4.1.14179.1.1.1.4',
'agentInventoryMaintenanceLevel' => '1.3.6.1.4.1.14179.1.1.1.6',
'agentInventoryBurnedInMacAddress' => '1.3.6.1.4.1.14179.1.1.1.9',
'agentInventoryOperatingSystem' => '1.3.6.1.4.1.14179.1.1.1.10',
'agentInventoryManufacturerName' => '1.3.6.1.4.1.14179.1.1.1.12',
'agentInventoryProductName' => '1.3.6.1.4.1.14179.1.1.1.13',
'agentInventoryProductVersion' => '1.3.6.1.4.1.14179.1.1.1.14',
'agentInventoryIsGigECardPresent' => '1.3.6.1.4.1.14179.1.1.1.15',
'agentInventoryIsCryptoCardPresent' => '1.3.6.1.4.1.14179.1.1.1.16',
'agentInventoryIsForeignAPSupported' => '1.3.6.1.4.1.14179.1.1.1.17',
'agentInventoryMaxNumberOfAPsSupported' => '1.3.6.1.4.1.14179.1.1.1.18',
'agentInventoryIsCryptoCard2Present' => '1.3.6.1.4.1.14179.1.1.1.19',
'agentInventoryFipsModeEnabled' => '1.3.6.1.4.1.14179.1.1.1.20',
'agentTrapLogGroup' => '1.3.6.1.4.1.14179.1.1.2',
'agentTrapLogTotal' => '1.3.6.1.4.1.14179.1.1.2.1',
'agentTrapLogTotalSinceLastViewed' => '1.3.6.1.4.1.14179.1.1.2.3',
'agentTrapLogTable' => '1.3.6.1.4.1.14179.1.1.2.4',
'agentTrapLogEntry' => '1.3.6.1.4.1.14179.1.1.2.4.1',
'agentTrapLogIndex' => '1.3.6.1.4.1.14179.1.1.2.4.1.1',
'agentTrapLogSystemTime' => '1.3.6.1.4.1.14179.1.1.2.4.1.2',
'agentTrapLogTrap' => '1.3.6.1.4.1.14179.1.1.2.4.1.22',
'agentRadioUpDownTrapCount' => '1.3.6.1.4.1.14179.1.1.2.5',
'agentApAssociateDisassociateTrapCount' => '1.3.6.1.4.1.14179.1.1.2.6',
'agentApLoadProfileFailTrapCount' => '1.3.6.1.4.1.14179.1.1.2.7',
'agentApNoiseProfileFailTrapCount' => '1.3.6.1.4.1.14179.1.1.2.8',
'agentApInterferenceProfileFailTrapCount' => '1.3.6.1.4.1.14179.1.1.2.9',
'agentApCoverageProfileFailTrapCount' => '1.3.6.1.4.1.14179.1.1.2.10',
'agentSwitchInfoGroup' => '1.3.6.1.4.1.14179.1.1.3',
'agentSwitchInfoLwappTransportMode' => '1.3.6.1.4.1.14179.1.1.3.1',
'agentSwitchInfoPowerSupply1Present' => '1.3.6.1.4.1.14179.1.1.3.2',
'agentSwitchInfoPowerSupply1PresentDefinition' => {
'0' => 'false',
'1' => 'true',
},
'agentSwitchInfoPowerSupply1Operational' => '1.3.6.1.4.1.14179.1.1.3.3',
'agentSwitchInfoPowerSupply1OperationalDefinition' => {
'0' => 'false',
'1' => 'true',
},
'agentSwitchInfoPowerSupply2Present' => '1.3.6.1.4.1.14179.1.1.3.4',
'agentSwitchInfoPowerSupply2PresentDefinition' => {
'0' => 'false',
'1' => 'true',
},
'agentSwitchInfoPowerSupply2Operational' => '1.3.6.1.4.1.14179.1.1.3.5',
'agentSwitchInfoPowerSupply2OperationalDefinition' => {
'0' => 'false',
'1' => 'true',
},
'agentProductGroup' => '1.3.6.1.4.1.14179.1.1.4',
'productGroup1' => '1.3.6.1.4.1.14179.1.1.4.1',
'productGroup2' => '1.3.6.1.4.1.14179.1.1.4.2',
'productGroup3' => '1.3.6.1.4.1.14179.1.1.4.3',
'productGroup4' => '1.3.6.1.4.1.14179.1.1.4.4',
'agentResourceInfoGroup' => '1.3.6.1.4.1.14179.1.1.5',
'agentCurrentCPUUtilization' => '1.3.6.1.4.1.14179.1.1.5.1.0',
'agentTotalMemory' => '1.3.6.1.4.1.14179.1.1.5.2.0',
'agentFreeMemory' => '1.3.6.1.4.1.14179.1.1.5.3.0',
'agentWcpInfoGroup' => '1.3.6.1.4.1.14179.1.1.6',
'agentWcpDeviceName' => '1.3.6.1.4.1.14179.1.1.6.1',
'agentWcpSlotNumber' => '1.3.6.1.4.1.14179.1.1.6.2',
'agentWcpPortNumber' => '1.3.6.1.4.1.14179.1.1.6.3',
'agentWcpPeerPortNumber' => '1.3.6.1.4.1.14179.1.1.6.4',
'agentWcpPeerIpAddress' => '1.3.6.1.4.1.14179.1.1.6.5',
'agentWcpControllerTableChecksum' => '1.3.6.1.4.1.14179.1.1.6.6',
'agentWcpControllerInfoTable' => '1.3.6.1.4.1.14179.1.1.6.7',
'agentWcpControllerInfoEntry' => '1.3.6.1.4.1.14179.1.1.6.7.1',
'agentWcpControllerInfoSlotNumber' => '1.3.6.1.4.1.14179.1.1.6.7.1.1',
'agentWcpControllerInfoPortNumber' => '1.3.6.1.4.1.14179.1.1.6.7.1.2',
'agentWcpControllerInfoIpAddress' => '1.3.6.1.4.1.14179.1.1.6.7.1.10',
'agentConfigGroup' => '1.3.6.1.4.1.14179.1.2',
'agentCLIConfigGroup' => '1.3.6.1.4.1.14179.1.2.1',
'agentLoginSessionTable' => '1.3.6.1.4.1.14179.1.2.1.1',
'agentLoginSessionEntry' => '1.3.6.1.4.1.14179.1.2.1.1.1',
'agentLoginSessionIndex' => '1.3.6.1.4.1.14179.1.2.1.1.1.1',
'agentLoginSessionUserName' => '1.3.6.1.4.1.14179.1.2.1.1.1.2',
'agentLoginSessionIPAddress' => '1.3.6.1.4.1.14179.1.2.1.1.1.3',
'agentLoginSessionConnectionType' => '1.3.6.1.4.1.14179.1.2.1.1.1.4',
'agentLoginSessionIdleTime' => '1.3.6.1.4.1.14179.1.2.1.1.1.5',
'agentLoginSessionSessionTime' => '1.3.6.1.4.1.14179.1.2.1.1.1.6',
'agentLoginSessionStatus' => '1.3.6.1.4.1.14179.1.2.1.1.1.26',
'agentTelnetConfigGroup' => '1.3.6.1.4.1.14179.1.2.1.2',
'agentTelnetLoginTimeout' => '1.3.6.1.4.1.14179.1.2.1.2.1',
'agentTelnetMaxSessions' => '1.3.6.1.4.1.14179.1.2.1.2.2',
'agentTelnetAllowNewMode' => '1.3.6.1.4.1.14179.1.2.1.2.3',
'agentSSHAllowNewMode' => '1.3.6.1.4.1.14179.1.2.1.2.4',
'agentSerialGroup' => '1.3.6.1.4.1.14179.1.2.1.5',
'agentSerialTimeout' => '1.3.6.1.4.1.14179.1.2.1.5.1',
'agentSerialBaudrate' => '1.3.6.1.4.1.14179.1.2.1.5.2',
'agentSerialCharacterSize' => '1.3.6.1.4.1.14179.1.2.1.5.3',
'agentSerialHWFlowControlMode' => '1.3.6.1.4.1.14179.1.2.1.5.4',
'agentSerialStopBits' => '1.3.6.1.4.1.14179.1.2.1.5.5',
'agentSerialParityType' => '1.3.6.1.4.1.14179.1.2.1.5.6',
'agentLagConfigGroup' => '1.3.6.1.4.1.14179.1.2.2',
'agentLagConfigCreate' => '1.3.6.1.4.1.14179.1.2.2.1',
'agentLagSummaryConfigTable' => '1.3.6.1.4.1.14179.1.2.2.2',
'agentLagSummaryConfigEntry' => '1.3.6.1.4.1.14179.1.2.2.2.1',
'agentLagSummaryName' => '1.3.6.1.4.1.14179.1.2.2.2.1.1',
'agentLagSummaryLagIndex' => '1.3.6.1.4.1.14179.1.2.2.2.1.2',
'agentLagSummaryFlushTimer' => '1.3.6.1.4.1.14179.1.2.2.2.1.3',
'agentLagSummaryLinkTrap' => '1.3.6.1.4.1.14179.1.2.2.2.1.4',
'agentLagSummaryAdminMode' => '1.3.6.1.4.1.14179.1.2.2.2.1.5',
'agentLagSummaryStpMode' => '1.3.6.1.4.1.14179.1.2.2.2.1.6',
'agentLagSummaryAddPort' => '1.3.6.1.4.1.14179.1.2.2.2.1.7',
'agentLagSummaryDeletePort' => '1.3.6.1.4.1.14179.1.2.2.2.1.8',
'agentLagSummaryPortsBitMask' => '1.3.6.1.4.1.14179.1.2.2.2.1.9',
'agentLagSummaryStatus' => '1.3.6.1.4.1.14179.1.2.2.2.1.30',
'agentLagDetailedConfigTable' => '1.3.6.1.4.1.14179.1.2.2.3',
'agentLagDetailedConfigEntry' => '1.3.6.1.4.1.14179.1.2.2.3.1',
'agentLagDetailedLagIndex' => '1.3.6.1.4.1.14179.1.2.2.3.1.1',
'agentLagDetailedIfIndex' => '1.3.6.1.4.1.14179.1.2.2.3.1.2',
'agentLagDetailedPortSpeed' => '1.3.6.1.4.1.14179.1.2.2.3.1.22',
'agentLagConfigMode' => '1.3.6.1.4.1.14179.1.2.2.4',
'agentNetworkConfigGroup' => '1.3.6.1.4.1.14179.1.2.3',
'agentNetworkIPAddress' => '1.3.6.1.4.1.14179.1.2.3.1',
'agentNetworkSubnetMask' => '1.3.6.1.4.1.14179.1.2.3.2',
'agentNetworkDefaultGateway' => '1.3.6.1.4.1.14179.1.2.3.3',
'agentNetworkBurnedInMacAddress' => '1.3.6.1.4.1.14179.1.2.3.4',
'agentNetworkConfigProtocol' => '1.3.6.1.4.1.14179.1.2.3.7',
'agentNetworkWebMode' => '1.3.6.1.4.1.14179.1.2.3.8',
'agentNetworkSecureWebMode' => '1.3.6.1.4.1.14179.1.2.3.9',
'agentNetworkMulticastMode' => '1.3.6.1.4.1.14179.1.2.3.10',
'agentNetworkDsPortNumber' => '1.3.6.1.4.1.14179.1.2.3.11',
'agentNetworkUserIdleTimeout' => '1.3.6.1.4.1.14179.1.2.3.12',
'agentNetworkArpTimeout' => '1.3.6.1.4.1.14179.1.2.3.13',
'agentNetworkManagementVlan' => '1.3.6.1.4.1.14179.1.2.3.14',
'agentNetworkGvrpStatus' => '1.3.6.1.4.1.14179.1.2.3.15',
'agentNetworkAllowMgmtViaWireless' => '1.3.6.1.4.1.14179.1.2.3.16',
'agentNetworkBroadcastSsidMode' => '1.3.6.1.4.1.14179.1.2.3.17',
'agentNetworkSecureWebPassword' => '1.3.6.1.4.1.14179.1.2.3.18',
'agentNetworkWebAdminCertType' => '1.3.6.1.4.1.14179.1.2.3.19',
'agentNetworkWebAdminCertRegenerateCmdInvoke' => '1.3.6.1.4.1.14179.1.2.3.20',
'agentNetworkWebAuthCertType' => '1.3.6.1.4.1.14179.1.2.3.21',
'agentNetworkWebAuthCertRegenerateCmdInvoke' => '1.3.6.1.4.1.14179.1.2.3.22',
'agentNetworkRouteConfigTable' => '1.3.6.1.4.1.14179.1.2.3.23',
'agentNetworkRouteConfigEntry' => '1.3.6.1.4.1.14179.1.2.3.23.1',
'agentNetworkRouteIPAddress' => '1.3.6.1.4.1.14179.1.2.3.23.1.1',
'agentNetworkRouteIPNetmask' => '1.3.6.1.4.1.14179.1.2.3.23.1.2',
'agentNetworkRouteGateway' => '1.3.6.1.4.1.14179.1.2.3.23.1.3',
'agentNetworkRouteStatus' => '1.3.6.1.4.1.14179.1.2.3.23.1.23',
'agentNetworkPeerToPeerBlockingMode' => '1.3.6.1.4.1.14179.1.2.3.24',
'agentNetworkMulticastGroupAddress' => '1.3.6.1.4.1.14179.1.2.3.25',
'agentServicePortConfigGroup' => '1.3.6.1.4.1.14179.1.2.4',
'agentServicePortIPAddress' => '1.3.6.1.4.1.14179.1.2.4.1',
'agentServicePortSubnetMask' => '1.3.6.1.4.1.14179.1.2.4.2',
'agentServicePortDefaultGateway' => '1.3.6.1.4.1.14179.1.2.4.3',
'agentServicePortBurnedInMacAddress' => '1.3.6.1.4.1.14179.1.2.4.4',
'agentServicePortConfigProtocol' => '1.3.6.1.4.1.14179.1.2.4.5',
'agentSnmpConfigGroup' => '1.3.6.1.4.1.14179.1.2.5',
'agentSnmpTrapPortNumber' => '1.3.6.1.4.1.14179.1.2.5.1',
'agentSnmpVersion1Status' => '1.3.6.1.4.1.14179.1.2.5.2',
'agentSnmpVersion2cStatus' => '1.3.6.1.4.1.14179.1.2.5.3',
'agentSnmpCommunityConfigTable' => '1.3.6.1.4.1.14179.1.2.5.5',
'agentSnmpCommunityConfigEntry' => '1.3.6.1.4.1.14179.1.2.5.5.1',
'agentSnmpCommunityName' => '1.3.6.1.4.1.14179.1.2.5.5.1.1',
'agentSnmpCommunityIPAddress' => '1.3.6.1.4.1.14179.1.2.5.5.1.2',
'agentSnmpCommunityIPMask' => '1.3.6.1.4.1.14179.1.2.5.5.1.3',
'agentSnmpCommunityAccessMode' => '1.3.6.1.4.1.14179.1.2.5.5.1.4',
'agentSnmpCommunityEnabled' => '1.3.6.1.4.1.14179.1.2.5.5.1.5',
'agentSnmpCommunityStatus' => '1.3.6.1.4.1.14179.1.2.5.5.1.25',
'agentSnmpTrapReceiverConfigTable' => '1.3.6.1.4.1.14179.1.2.5.6',
'agentSnmpTrapReceiverConfigEntry' => '1.3.6.1.4.1.14179.1.2.5.6.1',
'agentSnmpTrapReceiverName' => '1.3.6.1.4.1.14179.1.2.5.6.1.1',
'agentSnmpTrapReceiverIPAddress' => '1.3.6.1.4.1.14179.1.2.5.6.1.2',
'agentSnmpTrapReceiverEnabled' => '1.3.6.1.4.1.14179.1.2.5.6.1.3',
'agentSnmpTrapReceiverStatus' => '1.3.6.1.4.1.14179.1.2.5.6.1.23',
'agentSnmpTrapFlagsConfigGroup' => '1.3.6.1.4.1.14179.1.2.5.7',
'agentSnmpAuthenticationTrapFlag' => '1.3.6.1.4.1.14179.1.2.5.7.1',
'agentSnmpLinkUpDownTrapFlag' => '1.3.6.1.4.1.14179.1.2.5.7.2',
'agentSnmpMultipleUsersTrapFlag' => '1.3.6.1.4.1.14179.1.2.5.7.3',
'agentSnmpSpanningTreeTrapFlag' => '1.3.6.1.4.1.14179.1.2.5.7.4',
'agentSnmpBroadcastStormTrapFlag' => '1.3.6.1.4.1.14179.1.2.5.7.5',
'agentSnmpV3ConfigGroup' => '1.3.6.1.4.1.14179.1.2.6',
'agentSnmpVersion3Status' => '1.3.6.1.4.1.14179.1.2.6.1',
'agentSnmpV3UserConfigTable' => '1.3.6.1.4.1.14179.1.2.6.2',
'agentSnmpV3UserConfigEntry' => '1.3.6.1.4.1.14179.1.2.6.2.1',
'agentSnmpV3UserName' => '1.3.6.1.4.1.14179.1.2.6.2.1.1',
'agentSnmpV3UserAccessMode' => '1.3.6.1.4.1.14179.1.2.6.2.1.2',
'agentSnmpV3UserAuthenticationType' => '1.3.6.1.4.1.14179.1.2.6.2.1.3',
'agentSnmpV3UserEncryptionType' => '1.3.6.1.4.1.14179.1.2.6.2.1.4',
'agentSnmpV3UserAuthenticationPassword' => '1.3.6.1.4.1.14179.1.2.6.2.1.5',
'agentSnmpV3UserEncryptionPassword' => '1.3.6.1.4.1.14179.1.2.6.2.1.6',
'agentSnmpV3UserStatus' => '1.3.6.1.4.1.14179.1.2.6.2.1.26',
'agentSpanningTreeConfigGroup' => '1.3.6.1.4.1.14179.1.2.7',
'agentSpanningTreeMode' => '1.3.6.1.4.1.14179.1.2.7.1',
'agentSwitchConfigGroup' => '1.3.6.1.4.1.14179.1.2.8',
'agentSwitchBroadcastControlMode' => '1.3.6.1.4.1.14179.1.2.8.2',
'agentSwitchDot3FlowControlMode' => '1.3.6.1.4.1.14179.1.2.8.3',
'agentSwitchAddressAgingTimeoutTable' => '1.3.6.1.4.1.14179.1.2.8.4',
'agentSwitchAddressAgingTimeoutEntry' => '1.3.6.1.4.1.14179.1.2.8.4.1',
'agentSwitchAddressAgingTimeout' => '1.3.6.1.4.1.14179.1.2.8.4.1.10',
'agentSwitchLwappTransportMode' => '1.3.6.1.4.1.14179.1.2.8.5',
'agentTransferConfigGroup' => '1.3.6.1.4.1.14179.1.2.9',
'agentTransferUploadGroup' => '1.3.6.1.4.1.14179.1.2.9.1',
'agentTransferUploadMode' => '1.3.6.1.4.1.14179.1.2.9.1.1',
'agentTransferUploadServerIP' => '1.3.6.1.4.1.14179.1.2.9.1.2',
'agentTransferUploadPath' => '1.3.6.1.4.1.14179.1.2.9.1.3',
'agentTransferUploadFilename' => '1.3.6.1.4.1.14179.1.2.9.1.4',
'agentTransferUploadDataType' => '1.3.6.1.4.1.14179.1.2.9.1.5',
'agentTransferUploadStart' => '1.3.6.1.4.1.14179.1.2.9.1.6',
'agentTransferUploadStatus' => '1.3.6.1.4.1.14179.1.2.9.1.7',
'agentTransferDownloadGroup' => '1.3.6.1.4.1.14179.1.2.9.2',
'agentTransferDownloadMode' => '1.3.6.1.4.1.14179.1.2.9.2.1',
'agentTransferDownloadServerIP' => '1.3.6.1.4.1.14179.1.2.9.2.2',
'agentTransferDownloadPath' => '1.3.6.1.4.1.14179.1.2.9.2.3',
'agentTransferDownloadFilename' => '1.3.6.1.4.1.14179.1.2.9.2.4',
'agentTransferDownloadDataType' => '1.3.6.1.4.1.14179.1.2.9.2.5',
'agentTransferDownloadStart' => '1.3.6.1.4.1.14179.1.2.9.2.6',
'agentTransferDownloadStatus' => '1.3.6.1.4.1.14179.1.2.9.2.7',
'agentTransferDownloadTftpMaxRetries' => '1.3.6.1.4.1.14179.1.2.9.2.8',
'agentTransferDownloadTftpTimeout' => '1.3.6.1.4.1.14179.1.2.9.2.9',
'agentTransferConfigurationFileEncryption' => '1.3.6.1.4.1.14179.1.2.9.3',
'agentTransferConfigurationFileEncryptionKey' => '1.3.6.1.4.1.14179.1.2.9.4',
'agentDot3adAggPortTable' => '1.3.6.1.4.1.14179.1.2.11',
'agentDot3adAggPortEntry' => '1.3.6.1.4.1.14179.1.2.11.1',
'agentDot3adAggPort' => '1.3.6.1.4.1.14179.1.2.11.1.1',
'agentDot3adAggPortLACPMode' => '1.3.6.1.4.1.14179.1.2.11.1.21',
'agentPortConfigTable' => '1.3.6.1.4.1.14179.1.2.12',
'agentPortConfigEntry' => '1.3.6.1.4.1.14179.1.2.12.1',
'agentPortDot1dBasePort' => '1.3.6.1.4.1.14179.1.2.12.1.1',
'agentPortIfIndex' => '1.3.6.1.4.1.14179.1.2.12.1.2',
'agentPortIanaType' => '1.3.6.1.4.1.14179.1.2.12.1.3',
'agentPortSTPMode' => '1.3.6.1.4.1.14179.1.2.12.1.4',
'agentPortSTPState' => '1.3.6.1.4.1.14179.1.2.12.1.5',
'agentPortAdminMode' => '1.3.6.1.4.1.14179.1.2.12.1.6',
'agentPortPhysicalMode' => '1.3.6.1.4.1.14179.1.2.12.1.7',
'agentPortPhysicalStatus' => '1.3.6.1.4.1.14179.1.2.12.1.8',
'agentPortLinkTrapMode' => '1.3.6.1.4.1.14179.1.2.12.1.9',
'agentPortClearStats' => '1.3.6.1.4.1.14179.1.2.12.1.10',
'agentPortDefaultType' => '1.3.6.1.4.1.14179.1.2.12.1.11',
'agentPortType' => '1.3.6.1.4.1.14179.1.2.12.1.12',
'agentPortAutoNegAdminStatus' => '1.3.6.1.4.1.14179.1.2.12.1.13',
'agentPortDot3FlowControlMode' => '1.3.6.1.4.1.14179.1.2.12.1.14',
'agentPortPowerMode' => '1.3.6.1.4.1.14179.1.2.12.1.15',
'agentPortGvrpStatus' => '1.3.6.1.4.1.14179.1.2.12.1.16',
'agentPortGarpJoinTime' => '1.3.6.1.4.1.14179.1.2.12.1.17',
'agentPortGarpLeaveTime' => '1.3.6.1.4.1.14179.1.2.12.1.18',
'agentPortGarpLeaveAllTime' => '1.3.6.1.4.1.14179.1.2.12.1.19',
'agentPortMirrorMode' => '1.3.6.1.4.1.14179.1.2.12.1.20',
'agentPortMulticastApplianceMode' => '1.3.6.1.4.1.14179.1.2.12.1.21',
'agentPortOperationalStatus' => '1.3.6.1.4.1.14179.1.2.12.1.40',
'agentInterfaceConfigTable' => '1.3.6.1.4.1.14179.1.2.13',
'agentInterfaceConfigEntry' => '1.3.6.1.4.1.14179.1.2.13.1',
'agentInterfaceName' => '1.3.6.1.4.1.14179.1.2.13.1.1',
'agentInterfaceVlanId' => '1.3.6.1.4.1.14179.1.2.13.1.2',
'agentInterfaceType' => '1.3.6.1.4.1.14179.1.2.13.1.3',
'agentInterfaceMacAddress' => '1.3.6.1.4.1.14179.1.2.13.1.4',
'agentInterfaceIPAddress' => '1.3.6.1.4.1.14179.1.2.13.1.5',
'agentInterfaceIPNetmask' => '1.3.6.1.4.1.14179.1.2.13.1.6',
'agentInterfaceIPGateway' => '1.3.6.1.4.1.14179.1.2.13.1.7',
'agentInterfacePortNo' => '1.3.6.1.4.1.14179.1.2.13.1.8',
'agentInterfacePrimaryDhcpAddress' => '1.3.6.1.4.1.14179.1.2.13.1.9',
'agentInterfaceSecondaryDhcpAddress' => '1.3.6.1.4.1.14179.1.2.13.1.10',
'agentInterfaceDhcpProtocol' => '1.3.6.1.4.1.14179.1.2.13.1.11',
'agentInterfaceDnsHostName' => '1.3.6.1.4.1.14179.1.2.13.1.12',
'agentInterfaceAclName' => '1.3.6.1.4.1.14179.1.2.13.1.13',
'agentInterfaceAPManagementFeature' => '1.3.6.1.4.1.14179.1.2.13.1.14',
'agentInterfaceActivePortNo' => '1.3.6.1.4.1.14179.1.2.13.1.15',
'agentInterfaceBackupPortNo' => '1.3.6.1.4.1.14179.1.2.13.1.16',
'agentInterfaceVlanQuarantine' => '1.3.6.1.4.1.14179.1.2.13.1.17',
'agentInterfaceRowStatus' => '1.3.6.1.4.1.14179.1.2.13.1.31',
'agentNtpConfigGroup' => '1.3.6.1.4.1.14179.1.2.14',
'agentNtpPollingInterval' => '1.3.6.1.4.1.14179.1.2.14.1',
'agentNtpServerTable' => '1.3.6.1.4.1.14179.1.2.14.2',
'agentNtpServerEntry' => '1.3.6.1.4.1.14179.1.2.14.2.1',
'agentNtpServerIndex' => '1.3.6.1.4.1.14179.1.2.14.2.1.1',
'agentNtpServerAddress' => '1.3.6.1.4.1.14179.1.2.14.2.1.2',
'agentNtpServerRowStatus' => '1.3.6.1.4.1.14179.1.2.14.2.1.20',
'agentDhcpConfigGroup' => '1.3.6.1.4.1.14179.1.2.15',
'agentDhcpScopeTable' => '1.3.6.1.4.1.14179.1.2.15.1',
'agentDhcpScopeEntry' => '1.3.6.1.4.1.14179.1.2.15.1.1',
'agentDhcpScopeIndex' => '1.3.6.1.4.1.14179.1.2.15.1.1.1',
'agentDhcpScopeName' => '1.3.6.1.4.1.14179.1.2.15.1.1.2',
'agentDhcpScopeLeaseTime' => '1.3.6.1.4.1.14179.1.2.15.1.1.3',
'agentDhcpScopeNetwork' => '1.3.6.1.4.1.14179.1.2.15.1.1.4',
'agentDhcpScopeNetmask' => '1.3.6.1.4.1.14179.1.2.15.1.1.5',
'agentDhcpScopePoolStartAddress' => '1.3.6.1.4.1.14179.1.2.15.1.1.6',
'agentDhcpScopePoolEndAddress' => '1.3.6.1.4.1.14179.1.2.15.1.1.7',
'agentDhcpScopeDefaultRouterAddress1' => '1.3.6.1.4.1.14179.1.2.15.1.1.8',
'agentDhcpScopeDefaultRouterAddress2' => '1.3.6.1.4.1.14179.1.2.15.1.1.9',
'agentDhcpScopeDefaultRouterAddress3' => '1.3.6.1.4.1.14179.1.2.15.1.1.10',
'agentDhcpScopeDnsDomainName' => '1.3.6.1.4.1.14179.1.2.15.1.1.11',
'agentDhcpScopeDnsServerAddress1' => '1.3.6.1.4.1.14179.1.2.15.1.1.12',
'agentDhcpScopeDnsServerAddress2' => '1.3.6.1.4.1.14179.1.2.15.1.1.13',
'agentDhcpScopeDnsServerAddress3' => '1.3.6.1.4.1.14179.1.2.15.1.1.14',
'agentDhcpScopeNetbiosNameServerAddress1' => '1.3.6.1.4.1.14179.1.2.15.1.1.15',
'agentDhcpScopeNetbiosNameServerAddress2' => '1.3.6.1.4.1.14179.1.2.15.1.1.16',
'agentDhcpScopeNetbiosNameServerAddress3' => '1.3.6.1.4.1.14179.1.2.15.1.1.17',
'agentDhcpScopeState' => '1.3.6.1.4.1.14179.1.2.15.1.1.18',
'agentDhcpScopeRowStatus' => '1.3.6.1.4.1.14179.1.2.15.1.1.30',
'agentSystemGroup' => '1.3.6.1.4.1.14179.1.3',
'agentSaveConfig' => '1.3.6.1.4.1.14179.1.3.1',
'agentClearConfig' => '1.3.6.1.4.1.14179.1.3.2',
'agentClearLags' => '1.3.6.1.4.1.14179.1.3.3',
'agentClearLoginSessions' => '1.3.6.1.4.1.14179.1.3.4',
'agentClearPortStats' => '1.3.6.1.4.1.14179.1.3.6',
'agentClearSwitchStats' => '1.3.6.1.4.1.14179.1.3.7',
'agentClearTrapLog' => '1.3.6.1.4.1.14179.1.3.8',
'agentResetSystem' => '1.3.6.1.4.1.14179.1.3.10',
'stats' => '1.3.6.1.4.1.14179.1.4',
'portStatsTable' => '1.3.6.1.4.1.14179.1.4.1',
'portStatsEntry' => '1.3.6.1.4.1.14179.1.4.1.1',
'portStatsIndex' => '1.3.6.1.4.1.14179.1.4.1.1.1',
'portStatsPktsTx64Octets' => '1.3.6.1.4.1.14179.1.4.1.1.2',
'portStatsPktsTx65to127Octets' => '1.3.6.1.4.1.14179.1.4.1.1.3',
'portStatsPktsTx128to255Octets' => '1.3.6.1.4.1.14179.1.4.1.1.4',
'portStatsPktsTx256to511Octets' => '1.3.6.1.4.1.14179.1.4.1.1.5',
'portStatsPktsTx512to1023Octets' => '1.3.6.1.4.1.14179.1.4.1.1.6',
'portStatsPktsTx1024to1518Octets' => '1.3.6.1.4.1.14179.1.4.1.1.7',
'portStatsPktsRx1519to1530Octets' => '1.3.6.1.4.1.14179.1.4.1.1.8',
'portStatsPktsTx1519to1530Octets' => '1.3.6.1.4.1.14179.1.4.1.1.9',
'portStatsPktsTxOversizeOctets' => '1.3.6.1.4.1.14179.1.4.1.1.30',
'switchingTraps' => '1.3.6.1.4.1.14179.1.50',
'multipleUsersTrap' => '1.3.6.1.4.1.14179.1.50.1',
'broadcastStormStartTrap' => '1.3.6.1.4.1.14179.1.50.2',
'broadcastStormEndTrap' => '1.3.6.1.4.1.14179.1.50.3',
'linkFailureTrap' => '1.3.6.1.4.1.14179.1.50.4',
'vlanRequestFailureTrap' => '1.3.6.1.4.1.14179.1.50.5',
'vlanDeleteLastTrap' => '1.3.6.1.4.1.14179.1.50.6',
'vlanDefaultCfgFailureTrap' => '1.3.6.1.4.1.14179.1.50.7',
'vlanRestoreFailureTrap' => '1.3.6.1.4.1.14179.1.50.8',
'fanFailureTrap' => '1.3.6.1.4.1.14179.1.50.9',
'stpInstanceNewRootTrap' => '1.3.6.1.4.1.14179.1.50.10',
'stpInstanceTopologyChangeTrap' => '1.3.6.1.4.1.14179.1.50.11',
'powerSupplyStatusChangeTrap' => '1.3.6.1.4.1.14179.1.50.12',
'bsnSwitchingGroups' => '1.3.6.1.4.1.14179.1.51',
'bsnSwitchingAgentInfoGroup' => '1.3.6.1.4.1.14179.1.51.1',
'bsnSwitchingAgentConfigGroup' => '1.3.6.1.4.1.14179.1.51.2',
'bsnSwitchingAgentSystemGroup' => '1.3.6.1.4.1.14179.1.51.3',
'bsnSwitchingAgentStatsGroup' => '1.3.6.1.4.1.14179.1.51.4',
'bsnSwitchingObsGroup' => '1.3.6.1.4.1.14179.1.51.5',
'bsnSwitchingTrap' => '1.3.6.1.4.1.14179.1.51.6',
'bsnSwitchingCompliances' => '1.3.6.1.4.1.14179.1.52',
'bsnSwitchingCompliance' => '1.3.6.1.4.1.14179.1.52.1',
};
1;
__END__

View file

@ -0,0 +1,101 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ALARMMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ALARM-MIB'} = {
url => '',
name => 'ALARM-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ALARM-MIB'} = {
'alarmMIB' => '1.3.6.1.2.1.118',
'alarmNotifications' => '1.3.6.1.2.1.118.0',
'alarmObjects' => '1.3.6.1.2.1.118.1',
'alarmModel' => '1.3.6.1.2.1.118.1.1',
'alarmModelLastChanged' => '1.3.6.1.2.1.118.1.1.1',
'alarmModelTable' => '1.3.6.1.2.1.118.1.1.2',
'alarmModelEntry' => '1.3.6.1.2.1.118.1.1.2.1',
'alarmModelIndex' => '1.3.6.1.2.1.118.1.1.2.1.1',
'alarmModelState' => '1.3.6.1.2.1.118.1.1.2.1.2',
'alarmModelNotificationId' => '1.3.6.1.2.1.118.1.1.2.1.3',
'alarmModelVarbindIndex' => '1.3.6.1.2.1.118.1.1.2.1.4',
'alarmModelVarbindValue' => '1.3.6.1.2.1.118.1.1.2.1.5',
'alarmModelDescription' => '1.3.6.1.2.1.118.1.1.2.1.6',
'alarmModelSpecificPointer' => '1.3.6.1.2.1.118.1.1.2.1.7',
'alarmModelVarbindSubtree' => '1.3.6.1.2.1.118.1.1.2.1.8',
'alarmModelResourcePrefix' => '1.3.6.1.2.1.118.1.1.2.1.9',
'alarmModelRowStatus' => '1.3.6.1.2.1.118.1.1.2.1.10',
'alarmActive' => '1.3.6.1.2.1.118.1.2',
'alarmActiveLastChanged' => '1.3.6.1.2.1.118.1.2.1',
'alarmActiveTable' => '1.3.6.1.2.1.118.1.2.2',
'alarmActiveEntry' => '1.3.6.1.2.1.118.1.2.2.1',
'alarmListName' => '1.3.6.1.2.1.118.1.2.2.1.1',
'alarmActiveDateAndTime' => '1.3.6.1.2.1.118.1.2.2.1.2',
'alarmActiveIndex' => '1.3.6.1.2.1.118.1.2.2.1.3',
'alarmActiveEngineID' => '1.3.6.1.2.1.118.1.2.2.1.4',
'alarmActiveEngineAddressType' => '1.3.6.1.2.1.118.1.2.2.1.5',
'alarmActiveEngineAddress' => '1.3.6.1.2.1.118.1.2.2.1.6',
'alarmActiveContextName' => '1.3.6.1.2.1.118.1.2.2.1.7',
'alarmActiveVariables' => '1.3.6.1.2.1.118.1.2.2.1.8',
'alarmActiveNotificationID' => '1.3.6.1.2.1.118.1.2.2.1.9',
'alarmActiveResourceId' => '1.3.6.1.2.1.118.1.2.2.1.10',
'alarmActiveDescription' => '1.3.6.1.2.1.118.1.2.2.1.11',
'alarmActiveLogPointer' => '1.3.6.1.2.1.118.1.2.2.1.12',
'alarmActiveModelPointer' => '1.3.6.1.2.1.118.1.2.2.1.13',
'alarmActiveSpecificPointer' => '1.3.6.1.2.1.118.1.2.2.1.14',
'alarmActiveVariableTable' => '1.3.6.1.2.1.118.1.2.3',
'alarmActiveVariableEntry' => '1.3.6.1.2.1.118.1.2.3.1',
'alarmActiveVariableIndex' => '1.3.6.1.2.1.118.1.2.3.1.1',
'alarmActiveVariableID' => '1.3.6.1.2.1.118.1.2.3.1.2',
'alarmActiveVariableValueType' => '1.3.6.1.2.1.118.1.2.3.1.3',
'alarmActiveVariableValueTypeDefinition' => 'ALARM-MIB::alarmActiveVariableValueType',
'alarmActiveVariableCounter32Val' => '1.3.6.1.2.1.118.1.2.3.1.4',
'alarmActiveVariableUnsigned32Val' => '1.3.6.1.2.1.118.1.2.3.1.5',
'alarmActiveVariableTimeTicksVal' => '1.3.6.1.2.1.118.1.2.3.1.6',
'alarmActiveVariableInteger32Val' => '1.3.6.1.2.1.118.1.2.3.1.7',
'alarmActiveVariableOctetStringVal' => '1.3.6.1.2.1.118.1.2.3.1.8',
'alarmActiveVariableIpAddressVal' => '1.3.6.1.2.1.118.1.2.3.1.9',
'alarmActiveVariableOidVal' => '1.3.6.1.2.1.118.1.2.3.1.10',
'alarmActiveVariableCounter64Val' => '1.3.6.1.2.1.118.1.2.3.1.11',
'alarmActiveVariableOpaqueVal' => '1.3.6.1.2.1.118.1.2.3.1.12',
'alarmActiveStatsTable' => '1.3.6.1.2.1.118.1.2.4',
'alarmActiveStatsEntry' => '1.3.6.1.2.1.118.1.2.4.1',
'alarmActiveStatsActiveCurrent' => '1.3.6.1.2.1.118.1.2.4.1.1',
'alarmActiveStatsActives' => '1.3.6.1.2.1.118.1.2.4.1.2',
'alarmActiveStatsLastRaise' => '1.3.6.1.2.1.118.1.2.4.1.3',
'alarmActiveStatsLastClear' => '1.3.6.1.2.1.118.1.2.4.1.4',
'alarmActiveOverflow' => '1.3.6.1.2.1.118.1.2.5',
'alarmClear' => '1.3.6.1.2.1.118.1.3',
'alarmClearMaximum' => '1.3.6.1.2.1.118.1.3.1',
'alarmClearTable' => '1.3.6.1.2.1.118.1.3.2',
'alarmClearEntry' => '1.3.6.1.2.1.118.1.3.2.1',
'alarmClearIndex' => '1.3.6.1.2.1.118.1.3.2.1.1',
'alarmClearDateAndTime' => '1.3.6.1.2.1.118.1.3.2.1.2',
'alarmClearEngineID' => '1.3.6.1.2.1.118.1.3.2.1.3',
'alarmClearEngineAddressType' => '1.3.6.1.2.1.118.1.3.2.1.4',
'alarmClearEngineAddress' => '1.3.6.1.2.1.118.1.3.2.1.5',
'alarmClearContextName' => '1.3.6.1.2.1.118.1.3.2.1.6',
'alarmClearNotificationID' => '1.3.6.1.2.1.118.1.3.2.1.7',
'alarmClearResourceId' => '1.3.6.1.2.1.118.1.3.2.1.8',
'alarmClearLogIndex' => '1.3.6.1.2.1.118.1.3.2.1.9',
'alarmClearModelPointer' => '1.3.6.1.2.1.118.1.3.2.1.10',
'alarmConformance' => '1.3.6.1.2.1.118.2',
'alarmCompliances' => '1.3.6.1.2.1.118.2.1',
'alarmGroups' => '1.3.6.1.2.1.118.2.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ALARM-MIB'} = {
'alarmActiveVariableValueType' => {
'1' => 'counter32',
'2' => 'unsigned32',
'3' => 'timeTicks',
'4' => 'integer32',
'5' => 'ipAddress',
'6' => 'octetString',
'7' => 'objectId',
'8' => 'counter64',
'9' => 'opaque',
},
};
1;
__END__

View file

@ -0,0 +1,14 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ALCATELIND1BASEMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ALCATEL-IND1-BASE-MIB'} = {
url => '',
name => 'ALCATEL-IND1-BASE-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ALCATEL-IND1-BASE-MIB'} =
'1.3.6.1.4.1.6486.800';
1;
__END__

View file

@ -0,0 +1,159 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ARISTABGP4V2MIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ARISTA-BGP4V2-MIB'} = {
url => '',
name => 'ARISTA-BGP4V2-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ARISTA-BGP4V2-MIB'} =
'1.3.6.1.4.1.30065.4.1';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ARISTA-BGP4V2-MIB'} = {
aristaBgp4V2 => '1.3.6.1.4.1.30065.4.1',
aristaBgp4V2Notifications => '1.3.6.1.4.1.30065.4.1.0',
aristaBgp4V2Objects => '1.3.6.1.4.1.30065.4.1.1',
aristaBgp4V2DiscontinuityTable => '1.3.6.1.4.1.30065.4.1.1.1',
aristaBgp4V2DiscontinuityEntry => '1.3.6.1.4.1.30065.4.1.1.1.1',
aristaBgp4V2DiscontinuityTime => '1.3.6.1.4.1.30065.4.1.1.1.1.1',
aristaBgp4V2PeerTable => '1.3.6.1.4.1.30065.4.1.1.2',
aristaBgp4V2PeerEntry => '1.3.6.1.4.1.30065.4.1.1.2.1',
aristaBgp4V2PeerInstance => '1.3.6.1.4.1.30065.4.1.1.2.1.1',
aristaBgp4V2PeerLocalAddrType => '1.3.6.1.4.1.30065.4.1.1.2.1.2',
aristaBgp4V2PeerLocalAddrTypeDefinition => 'INET-ADDRESS-MIB::InetAddressType',
aristaBgp4V2PeerLocalAddr => '1.3.6.1.4.1.30065.4.1.1.2.1.3',
aristaBgp4V2PeerLocalAddrDefinition => 'INET-ADDRESS-MIB::InetAddress(aristaBgp4V2PeerLocalAddrType)',
aristaBgp4V2PeerRemoteAddrType => '1.3.6.1.4.1.30065.4.1.1.2.1.4',
aristaBgp4V2PeerRemoteAddrTypeDefinition => 'INET-ADDRESS-MIB::InetAddressType',
aristaBgp4V2PeerRemoteAddr => '1.3.6.1.4.1.30065.4.1.1.2.1.5',
aristaBgp4V2PeerRemoteAddrDefinition => 'INET-ADDRESS-MIB::InetAddress(aristaBgp4V2PeerRemoteAddrType)',
aristaBgp4V2PeerLocalPort => '1.3.6.1.4.1.30065.4.1.1.2.1.6',
aristaBgp4V2PeerLocalAs => '1.3.6.1.4.1.30065.4.1.1.2.1.7',
aristaBgp4V2PeerLocalIdentifier => '1.3.6.1.4.1.30065.4.1.1.2.1.8',
aristaBgp4V2PeerLocalIdentifierDefinition => 'ARISTA-BGP4V2-TC-MIB::AristaBgp4V2IdentifierTC',
aristaBgp4V2PeerRemotePort => '1.3.6.1.4.1.30065.4.1.1.2.1.9',
aristaBgp4V2PeerRemoteAs => '1.3.6.1.4.1.30065.4.1.1.2.1.10',
aristaBgp4V2PeerRemoteIdentifier => '1.3.6.1.4.1.30065.4.1.1.2.1.11',
aristaBgp4V2PeerRemoteIdentifierDefinition => 'ARISTA-BGP4V2-TC-MIB::AristaBgp4V2IdentifierTC',
aristaBgp4V2PeerAdminStatus => '1.3.6.1.4.1.30065.4.1.1.2.1.12',
aristaBgp4V2PeerAdminStatusDefinition => 'ARISTA-BGP4V2-MIB::aristaBgp4V2PeerAdminStatus',
aristaBgp4V2PeerState => '1.3.6.1.4.1.30065.4.1.1.2.1.13',
aristaBgp4V2PeerStateDefinition => 'ARISTA-BGP4V2-MIB::aristaBgp4V2PeerState',
aristaBgp4V2PeerDescription => '1.3.6.1.4.1.30065.4.1.1.2.1.14',
aristaBgp4V2PeerErrorsTable => '1.3.6.1.4.1.30065.4.1.1.3',
aristaBgp4V2PeerErrorsEntry => '1.3.6.1.4.1.30065.4.1.1.3.1',
aristaBgp4V2PeerLastErrorCodeReceived => '1.3.6.1.4.1.30065.4.1.1.3.1.1',
aristaBgp4V2PeerLastErrorSubCodeReceived => '1.3.6.1.4.1.30065.4.1.1.3.1.2',
aristaBgp4V2PeerLastErrorReceivedTime => '1.3.6.1.4.1.30065.4.1.1.3.1.3',
aristaBgp4V2PeerLastErrorReceivedText => '1.3.6.1.4.1.30065.4.1.1.3.1.4',
aristaBgp4V2PeerLastErrorReceivedData => '1.3.6.1.4.1.30065.4.1.1.3.1.5',
aristaBgp4V2PeerLastErrorCodeSent => '1.3.6.1.4.1.30065.4.1.1.3.1.6',
aristaBgp4V2PeerLastErrorSubCodeSent => '1.3.6.1.4.1.30065.4.1.1.3.1.7',
aristaBgp4V2PeerLastErrorSentTime => '1.3.6.1.4.1.30065.4.1.1.3.1.8',
aristaBgp4V2PeerLastErrorSentText => '1.3.6.1.4.1.30065.4.1.1.3.1.9',
aristaBgp4V2PeerLastErrorSentData => '1.3.6.1.4.1.30065.4.1.1.3.1.10',
aristaBgp4V2PeerEventTimesTable => '1.3.6.1.4.1.30065.4.1.1.4',
aristaBgp4V2PeerEventTimesEntry => '1.3.6.1.4.1.30065.4.1.1.4.1',
aristaBgp4V2PeerFsmEstablishedTime => '1.3.6.1.4.1.30065.4.1.1.4.1.1',
aristaBgp4V2PeerInUpdatesElapsedTime => '1.3.6.1.4.1.30065.4.1.1.4.1.2',
aristaBgp4V2PeerConfiguredTimersTable => '1.3.6.1.4.1.30065.4.1.1.5',
aristaBgp4V2PeerConfiguredTimersEntry => '1.3.6.1.4.1.30065.4.1.1.5.1',
aristaBgp4V2PeerConnectRetryInterval => '1.3.6.1.4.1.30065.4.1.1.5.1.1',
aristaBgp4V2PeerHoldTimeConfigured => '1.3.6.1.4.1.30065.4.1.1.5.1.2',
aristaBgp4V2PeerKeepAliveConfigured => '1.3.6.1.4.1.30065.4.1.1.5.1.3',
aristaBgp4V2PeerMinASOrigInterval => '1.3.6.1.4.1.30065.4.1.1.5.1.4',
aristaBgp4V2PeerMinRouteAdverInterval => '1.3.6.1.4.1.30065.4.1.1.5.1.5',
aristaBgp4V2PeerNegotiatedTimersTable => '1.3.6.1.4.1.30065.4.1.1.6',
aristaBgp4V2PeerNegotiatedTimersEntry => '1.3.6.1.4.1.30065.4.1.1.6.1',
aristaBgp4V2PeerHoldTime => '1.3.6.1.4.1.30065.4.1.1.6.1.1',
aristaBgp4V2PeerKeepAlive => '1.3.6.1.4.1.30065.4.1.1.6.1.2',
aristaBgp4V2PeerCountersTable => '1.3.6.1.4.1.30065.4.1.1.7',
aristaBgp4V2PeerCountersEntry => '1.3.6.1.4.1.30065.4.1.1.7.1',
aristaBgp4V2PeerInUpdates => '1.3.6.1.4.1.30065.4.1.1.7.1.1',
aristaBgp4V2PeerOutUpdates => '1.3.6.1.4.1.30065.4.1.1.7.1.2',
aristaBgp4V2PeerInTotalMessages => '1.3.6.1.4.1.30065.4.1.1.7.1.3',
aristaBgp4V2PeerOutTotalMessages => '1.3.6.1.4.1.30065.4.1.1.7.1.4',
aristaBgp4V2PeerFsmEstablishedTransitions => '1.3.6.1.4.1.30065.4.1.1.7.1.5',
aristaBgp4V2PrefixGaugesTable => '1.3.6.1.4.1.30065.4.1.1.8',
aristaBgp4V2PrefixGaugesEntry => '1.3.6.1.4.1.30065.4.1.1.8.1',
aristaBgp4V2PrefixGaugesAfi => '1.3.6.1.4.1.30065.4.1.1.8.1.1',
aristaBgp4V2PrefixGaugesAfiDefinition => 'ARISTA-BGP4V2-TC-MIB::AristaBgp4V2AddressFamilyIdentifierTC',
aristaBgp4V2PrefixGaugesSafi => '1.3.6.1.4.1.30065.4.1.1.8.1.2',
aristaBgp4V2PrefixGaugesSafiDefinition => 'ARISTA-BGP4V2-TC-MIB::AristaBgp4V2SubsequentAddressFamilyIdentifierTC',
aristaBgp4V2PrefixInPrefixes => '1.3.6.1.4.1.30065.4.1.1.8.1.3',
aristaBgp4V2PrefixInPrefixesAccepted => '1.3.6.1.4.1.30065.4.1.1.8.1.4',
aristaBgp4V2PrefixOutPrefixes => '1.3.6.1.4.1.30065.4.1.1.8.1.5',
aristaBgp4V2NlriTable => '1.3.6.1.4.1.30065.4.1.1.9',
aristaBgp4V2NlriEntry => '1.3.6.1.4.1.30065.4.1.1.9.1',
aristaBgp4V2NlriIndex => '1.3.6.1.4.1.30065.4.1.1.9.1.1',
aristaBgp4V2NlriAfi => '1.3.6.1.4.1.30065.4.1.1.9.1.2',
aristaBgp4V2NlriAfiDefinition => 'ARISTA-BGP4V2-TC-MIB::AristaBgp4V2AddressFamilyIdentifierTC',
aristaBgp4V2NlriSafi => '1.3.6.1.4.1.30065.4.1.1.9.1.3',
aristaBgp4V2NlriSafiDefinition => 'ARISTA-BGP4V2-TC-MIB::AristaBgp4V2SubsequentAddressFamilyIdentifierTC',
aristaBgp4V2NlriPrefixType => '1.3.6.1.4.1.30065.4.1.1.9.1.4',
aristaBgp4V2NlriPrefix => '1.3.6.1.4.1.30065.4.1.1.9.1.5',
aristaBgp4V2NlriPrefixLen => '1.3.6.1.4.1.30065.4.1.1.9.1.6',
aristaBgp4V2NlriBest => '1.3.6.1.4.1.30065.4.1.1.9.1.7',
aristaBgp4V2NlriCalcLocalPref => '1.3.6.1.4.1.30065.4.1.1.9.1.8',
aristaBgp4V2NlriOrigin => '1.3.6.1.4.1.30065.4.1.1.9.1.9',
aristaBgp4V2NlriOriginDefinition => 'ARISTA-BGP4V2-MIB::aristaBgp4V2NlriOrigin',
aristaBgp4V2NlriNextHopAddrType => '1.3.6.1.4.1.30065.4.1.1.9.1.10',
aristaBgp4V2NlriNextHopAddr => '1.3.6.1.4.1.30065.4.1.1.9.1.11',
aristaBgp4V2NlriLinkLocalNextHopAddrType => '1.3.6.1.4.1.30065.4.1.1.9.1.12',
aristaBgp4V2NlriLinkLocalNextHopAddr => '1.3.6.1.4.1.30065.4.1.1.9.1.13',
aristaBgp4V2NlriLocalPrefPresent => '1.3.6.1.4.1.30065.4.1.1.9.1.14',
aristaBgp4V2NlriLocalPref => '1.3.6.1.4.1.30065.4.1.1.9.1.15',
aristaBgp4V2NlriMedPresent => '1.3.6.1.4.1.30065.4.1.1.9.1.16',
aristaBgp4V2NlriMed => '1.3.6.1.4.1.30065.4.1.1.9.1.17',
aristaBgp4V2NlriAtomicAggregate => '1.3.6.1.4.1.30065.4.1.1.9.1.18',
aristaBgp4V2NlriAggregatorPresent => '1.3.6.1.4.1.30065.4.1.1.9.1.19',
aristaBgp4V2NlriAggregatorAS => '1.3.6.1.4.1.30065.4.1.1.9.1.20',
aristaBgp4V2NlriAggregatorAddr => '1.3.6.1.4.1.30065.4.1.1.9.1.21',
aristaBgp4V2NlriAsPathCalcLength => '1.3.6.1.4.1.30065.4.1.1.9.1.22',
aristaBgp4V2NlriAsPathString => '1.3.6.1.4.1.30065.4.1.1.9.1.23',
aristaBgp4V2NlriAsPath => '1.3.6.1.4.1.30065.4.1.1.9.1.24',
aristaBgp4V2NlriPathAttrUnknown => '1.3.6.1.4.1.30065.4.1.1.9.1.25',
aristaBgp4V2AdjRibsOutTable => '1.3.6.1.4.1.30065.4.1.1.10',
aristaBgp4V2AdjRibsOutEntry => '1.3.6.1.4.1.30065.4.1.1.10.1',
aristaBgp4V2AdjRibsOutIndex => '1.3.6.1.4.1.30065.4.1.1.10.1.1',
aristaBgp4V2AdjRibsOutRoute => '1.3.6.1.4.1.30065.4.1.1.10.1.2',
aristaBgp4V2Conformance => '1.3.6.1.4.1.30065.4.1.2',
aristaBgp4V2Compliances => '1.3.6.1.4.1.30065.4.1.2.1',
aristaBgp4V2Groups => '1.3.6.1.4.1.30065.4.1.2.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ARISTA-BGP4V2-MIB'} = {
aristaBgp4V2NlriOrigin => {
'1' => 'igp',
'2' => 'egp',
'3' => 'incomplete',
},
aristaBgp4V2PeerAdminStatus => {
'1' => 'halted',
'2' => 'running',
},
aristaBgp4V2PeerState => {
'1' => 'idle',
'2' => 'connect',
'3' => 'active',
'4' => 'opensent',
'5' => 'openconfirm',
'6' => 'established',
},
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ARISTA-BGP4V2-TC-MIB'} = {
AristaBgp4V2IdentifierTC => sub {
my ($addr) = @_;
return Monitoring::GLPlugin::SNMP::TableItem->new()->unhex_ip($addr);
},
AristaBgp4V2AddressFamilyIdentifierTC => {
1 => 'ipv4',
2 => 'ipv6',
},
AristaBgp4V2SubsequentAddressFamilyIdentifierTC => {
1 => 'unicast',
2 => 'multicast',
4 => 'mpls',
},
};

View file

@ -0,0 +1,29 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ARISTAENTITYSENSORMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ARISTA-ENTITY-SENSOR-MIB'} = {
url => '',
name => 'ARISTA-ENTITY-SENSOR-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ARISTA-ENTITY-SENSOR-MIB'} =
'1.3.6.1.4.1.30065.3.12';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ARISTA-ENTITY-SENSOR-MIB'} = {
aristaEntSensorMIB => '1.3.6.1.4.1.30065.3.12',
aristaEntSensorMibNotifications => '1.3.6.1.4.1.30065.3.12.0',
aristaEntSensorMibObjects => '1.3.6.1.4.1.30065.3.12.1',
aristaEntSensorThresholdTable => '1.3.6.1.4.1.30065.3.12.1.1',
aristaEntSensorThresholdEntry => '1.3.6.1.4.1.30065.3.12.1.1.1',
aristaEntSensorThresholdLowWarning => '1.3.6.1.4.1.30065.3.12.1.1.1.1',
aristaEntSensorThresholdLowCritical => '1.3.6.1.4.1.30065.3.12.1.1.1.2',
aristaEntSensorThresholdHighWarning => '1.3.6.1.4.1.30065.3.12.1.1.1.3',
aristaEntSensorThresholdHighCritical => '1.3.6.1.4.1.30065.3.12.1.1.1.4',
aristaEntSensorStatusDescr => '1.3.6.1.4.1.30065.3.12.1.1.1.5',
aristaEntSensorMibConformance => '1.3.6.1.4.1.30065.3.12.2',
aristaEntSensorMibCompliances => '1.3.6.1.4.1.30065.3.12.2.1',
aristaEntSensorMibGroups => '1.3.6.1.4.1.30065.3.12.2.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ARISTA-ENTITY-SENSOR-MIB'} = {
};

View file

@ -0,0 +1,23 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ARUBATCMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ARUBA-TC-MIB'} = {
url => 'http://www.circitor.fr/Mibs/Files/ARUBA-TC.mib',
name => 'ARUBA-TC-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ARUBA-TC-MIB'} = {
'ArubaSwitchRole' => {
1 => 'master',
2 => 'local',
3 => 'backupmaster',
},
'ArubaActiveState' => {
1 => 'active',
2 => 'inactive',
},
};
1;
__END__

View file

@ -0,0 +1,20 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ARUBAWIREDCHASSISMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ARUBAWIRED-CHASSIS-MIB'} = {
url => '',
name => 'ARUBAWIRED-CHASSIS-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ARUBAWIRED-CHASSIS-MIB'} =
'1.3.6.1.4.1.47196.4.1.1.3.11';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ARUBAWIRED-CHASSIS-MIB'} = {
'arubaWiredChassisMIB' => '1.3.6.1.4.1.47196.4.1.1.3.11',
'arubaWiredPowerSupply' => '1.3.6.1.4.1.47196.4.1.1.3.11.2',
'arubaWiredTempSensor' => '1.3.6.1.4.1.47196.4.1.1.3.11.3',
'arubaWiredFanTray' => '1.3.6.1.4.1.47196.4.1.1.3.11.4',
'arubaWiredFan' => '1.3.6.1.4.1.47196.4.1.1.3.11.5',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ARUBAWIRED-CHASSIS-MIB'} = {
};

View file

@ -0,0 +1,31 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ARUBAWIREDFANMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ARUBAWIRED-FAN-MIB'} = {
url => '',
name => 'ARUBAWIRED-FAN-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ARUBAWIRED-FAN-MIB'} =
'1.3.6.1.4.1.47196.4.1.1.3.11.5';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ARUBAWIRED-FAN-MIB'} = {
'arubaWiredFan' => '1.3.6.1.4.1.47196.4.1.1.3.11.5',
'arubaWiredFanNotifications' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.0',
'arubaWiredFanTable' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1',
'arubaWiredFanEntry' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1.1',
'arubaWiredFanGroupIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1.1.1',
'arubaWiredFanTrayIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1.1.2',
'arubaWiredFanSlotIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1.1.3',
'arubaWiredFanName' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1.1.4',
'arubaWiredFanState' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1.1.5',
'arubaWiredFanProductName' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1.1.6',
'arubaWiredFanSerialNumber' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1.1.7',
'arubaWiredFanRPM' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1.1.8',
'arubaWiredFanAirflowDirection' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.1.1.9',
'arubaWiredFanConformance' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.99',
'arubaWiredFanCompliances' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.99.1',
'arubaWiredFanGroups' => '1.3.6.1.4.1.47196.4.1.1.3.11.5.99.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ARUBAWIRED-FAN-MIB'} = {
};

View file

@ -0,0 +1,29 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ARUBAWIREDFANTRAYMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ARUBAWIRED-FANTRAY-MIB'} = {
url => '',
name => 'ARUBAWIRED-FANTRAY-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ARUBAWIRED-FANTRAY-MIB'} =
'1.3.6.1.4.1.47196.4.1.1.3.11.4';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ARUBAWIRED-FANTRAY-MIB'} = {
'arubaWiredFanTray' => '1.3.6.1.4.1.47196.4.1.1.3.11.4',
'arubaWiredFanTrayNotifications' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.0',
'arubaWiredFanTrayTable' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.1',
'arubaWiredFanTrayEntry' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.1.1',
'arubaWiredFanTrayGroupIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.1.1.1',
'arubaWiredFanTraySlotIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.1.1.2',
'arubaWiredFanTrayName' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.1.1.3',
'arubaWiredFanTrayState' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.1.1.4',
'arubaWiredFanTrayProductName' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.1.1.5',
'arubaWiredFanTraySerialNumber' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.1.1.6',
'arubaWiredFanTrayNumberFans' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.1.1.7',
'arubaWiredFanTrayConformance' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.99',
'arubaWiredFanTrayCompliances' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.99.1',
'arubaWiredFanTrayGroups' => '1.3.6.1.4.1.47196.4.1.1.3.11.4.99.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ARUBAWIRED-FANTRAY-MIB'} = {
};

View file

@ -0,0 +1,32 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ARUBAWIREDPOWERSUPPLYMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ARUBAWIRED-POWERSUPPLY-MIB'} = {
url => '',
name => 'ARUBAWIRED-POWERSUPPLY-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ARUBAWIRED-POWERSUPPLY-MIB'} =
'1.3.6.1.4.1.47196.4.1.1.3.11.2';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ARUBAWIRED-POWERSUPPLY-MIB'} = {
'arubaWiredPowerSupply' => '1.3.6.1.4.1.47196.4.1.1.3.11.2',
'arubaWiredPSUNotifications' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.0',
'arubaWiredPowerSupplyTable' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1',
'arubaWiredPowerSupplyEntry' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1',
'arubaWiredPSUGroupIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.1',
'arubaWiredPSUSlotIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.2',
'arubaWiredPSUName' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.3',
'arubaWiredPSUState' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.4',
'arubaWiredPSUProductName' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.5',
'arubaWiredPSUSerialNumber' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.6',
'arubaWiredPSUInstantaneousPower' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.7',
'arubaWiredPSUMaximumPower' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.8',
'arubaWiredPSUNumberFailures' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.9',
'arubaWiredPSUAirflowDirection' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.10',
'arubaWiredPowerSupplyConformance' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.99',
'arubaWiredPowerSupplyCompliances' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.99.1',
'arubaWiredPowerSupplyGroups' => '1.3.6.1.4.1.47196.4.1.1.3.11.2.99.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ARUBAWIRED-POWERSUPPLY-MIB'} = {
};

View file

@ -0,0 +1,31 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ARUBAWIREDTEMPSENSORMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ARUBAWIRED-TEMPSENSOR-MIB'} = {
url => '',
name => 'ARUBAWIRED-TEMPSENSOR-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ARUBAWIRED-TEMPSENSOR-MIB'} =
'1.3.6.1.4.1.47196.4.1.1.3.11.3';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ARUBAWIRED-TEMPSENSOR-MIB'} = {
'arubaWiredTempSensor' => '1.3.6.1.4.1.47196.4.1.1.3.11.3',
'arubaWiredTempSensorNotifications' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.0',
'arubaWiredTempSensorTable' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1',
'arubaWiredTempSensorEntry' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1',
'arubaWiredTempSensorGroupIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.1',
'arubaWiredTempSensorSlotTypeIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.2',
'arubaWiredTempSensorSlotIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.3',
'arubaWiredTempSensorIndex' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.4',
'arubaWiredTempSensorName' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.5',
'arubaWiredTempSensorState' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.6',
'arubaWiredTempSensorTemperature' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.7',
'arubaWiredTempSensorMinTemp' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.8',
'arubaWiredTempSensorMaxTemp' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.9',
'arubaWiredTempSensorConformance' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.99',
'arubaWiredTempSensorCompliances' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.99.1',
'arubaWiredTempSensorGroups' => '1.3.6.1.4.1.47196.4.1.1.3.11.3.99.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ARUBAWIRED-TEMPSENSOR-MIB'} = {
};

View file

@ -0,0 +1,56 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ARUBAWIREDVSFMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ARUBAWIRED-VSF-MIB'} = {
url => '',
name => 'ARUBAWIRED-VSF-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'ARUBAWIRED-VSF-MIB'} =
'1.3.6.1.4.1.47196.4.1.1.3.10';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ARUBAWIRED-VSF-MIB'} = {
'arubaWiredVsfMIB' => '1.3.6.1.4.1.47196.4.1.1.3.10',
'arubaWiredVsfObjects' => '1.3.6.1.4.1.47196.4.1.1.3.10.0',
'arubaWiredVsfConfig' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.1',
'arubaWiredVsfTrapEnable' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.1.1',
'arubaWiredVsfOobmMADEnable' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.1.2',
'arubaWiredVsfOobmMADEnableDefinition' => 'ARUBAWIRED-VSF-MIB::arubaWiredVsfOobmMADEnable',
'arubaWiredVsfStatus' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.2',
'arubaWiredVsfOperStatus' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.2.1',
'arubaWiredVsfTopology' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.2.2',
'arubaWiredVsfMemberTable' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3',
'arubaWiredVsfMemberEntry' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1',
'arubaWiredVsfMemberIndex' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.1',
'arubaWiredVsfMemberRole' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.2',
'arubaWiredVsfMemberStatus' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.3',
'arubaWiredVsfMemberPartNumber' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.4',
'arubaWiredVsfMemberMacAddr' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.5',
'arubaWiredVsfMemberProductName' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.6',
'arubaWiredVsfMemberSerialNum' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.7',
'arubaWiredVsfMemberBootImage' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.8',
'arubaWiredVsfMemberCpuUtil' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.9',
'arubaWiredVsfMemberMemoryUtil' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.10',
'arubaWiredVsfMemberBootTime' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.11',
'arubaWiredVsfMemberBootRomVersion' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.12',
'arubaWiredVsfMemberTotalMemory' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.13',
'arubaWiredVsfMemberCurrentUsage' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.3.1.14',
'arubaWiredVsfLinkTable' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.4',
'arubaWiredVsfLinkEntry' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.4.1',
'arubaWiredVsfLinkMemberId' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.4.1.1',
'arubaWiredVsfLinkId' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.4.1.2',
'arubaWiredVsfLinkOperStatus' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.4.1.3',
'arubaWiredVsfLinkPeerMemberId' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.4.1.4',
'arubaWiredVsfLinkPeerLinkId' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.4.1.5',
'arubaWiredVsfLinkPortList' => '1.3.6.1.4.1.47196.4.1.1.3.10.0.4.1.6',
'arubaWiredVsfNotifications' => '1.3.6.1.4.1.47196.4.1.1.3.10.1',
'arubaWiredVsfConformance' => '1.3.6.1.4.1.47196.4.1.1.3.10.2',
'arubaWiredVsfCompliances' => '1.3.6.1.4.1.47196.4.1.1.3.10.2.1',
'arubaWiredVsfGroups' => '1.3.6.1.4.1.47196.4.1.1.3.10.2.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'ARUBAWIRED-VSF-MIB'} = {
'arubaWiredVsfOobmMADEnable' => {
'1' => 'none',
'2' => 'mgmt',
},
};

View file

@ -0,0 +1,89 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ASYNCOSMAILMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ASYNCOS-MAIL-MIB'} = {
url => '',
name => 'ASYNCOS-MAIL-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::requirements->{'ASYNCOS-MAIL-MIB'} = [
'SNMPv2-TC-v1-MIB',
];
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ASYNCOS-MAIL-MIB'} = {
'asyncOSMailObjects' => '1.3.6.1.4.1.15497.1.1.1',
'perCentMemoryUtilization' => '1.3.6.1.4.1.15497.1.1.1.1.0',
'perCentCPUUtilization' => '1.3.6.1.4.1.15497.1.1.1.2.0',
'perCentDiskIOUtilization' => '1.3.6.1.4.1.15497.1.1.1.3.0',
'perCentQueueUtilization' => '1.3.6.1.4.1.15497.1.1.1.4.0',
'queueAvailabilityStatus' => '1.3.6.1.4.1.15497.1.1.1.5.0',
'queueAvailabilityStatusDefinition' => {
'1' => 'queueSpaceAvailable',
'2' => 'queueSpaceShortage',
'3' => 'queueFull',
},
'resourceConservationReason' => '1.3.6.1.4.1.15497.1.1.1.6.0',
'memoryAvailabilityStatus' => '1.3.6.1.4.1.15497.1.1.1.7.0',
'memoryAvailabilityStatusDefinition' => {
'1' => 'memoryAvailable',
'2' => 'memoryShortage',
'3' => 'memoryFull',
},
'powerSupplyTable' => '1.3.6.1.4.1.15497.1.1.1.8',
'powerSupplyEntry' => '1.3.6.1.4.1.15497.1.1.1.8.1',
'powerSupplyIndex' => '1.3.6.1.4.1.15497.1.1.1.8.1.1',
'powerSupplyStatus' => '1.3.6.1.4.1.15497.1.1.1.8.1.2',
'powerSupplyStatusDefinition' => {
'1' => 'powerSupplyNotInstalled',
'2' => 'powerSupplyHealthy',
'3' => 'powerSupplyNoAC',
'4' => 'powerSupplyFaulty',
},
'powerSupplyRedundancy' => '1.3.6.1.4.1.15497.1.1.1.8.1.3',
'powerSupplyName' => '1.3.6.1.4.1.15497.1.1.1.8.1.4',
'temperatureTable' => '1.3.6.1.4.1.15497.1.1.1.9',
'temperatureEntry' => '1.3.6.1.4.1.15497.1.1.1.9.1',
'temperatureIndex' => '1.3.6.1.4.1.15497.1.1.1.9.1.1',
'degreesCelsius' => '1.3.6.1.4.1.15497.1.1.1.9.1.2',
'temperatureName' => '1.3.6.1.4.1.15497.1.1.1.9.1.3',
'fanTable' => '1.3.6.1.4.1.15497.1.1.1.10',
'fanEntry' => '1.3.6.1.4.1.15497.1.1.1.10.1',
'fanIndex' => '1.3.6.1.4.1.15497.1.1.1.10.1.1',
'fanRPMs' => '1.3.6.1.4.1.15497.1.1.1.10.1.2',
'fanName' => '1.3.6.1.4.1.15497.1.1.1.10.1.3',
'workQueueMessages' => '1.3.6.1.4.1.15497.1.1.1.11.0',
'keyExpirationTable' => '1.3.6.1.4.1.15497.1.1.1.12',
'keyExpirationEntry' => '1.3.6.1.4.1.15497.1.1.1.12.1',
'keyExpirationIndex' => '1.3.6.1.4.1.15497.1.1.1.12.1.1',
'keyDescription' => '1.3.6.1.4.1.15497.1.1.1.12.1.2',
'keyIsPerpetual' => '1.3.6.1.4.1.15497.1.1.1.12.1.3',
'keyIsPerpetualDefinition' => 'SNMPv2-TC-v1-MIB::TruthValue',
'keySecondsUntilExpire' => '1.3.6.1.4.1.15497.1.1.1.12.1.4',
'updateTable' => '1.3.6.1.4.1.15497.1.1.1.13',
'updateEntry' => '1.3.6.1.4.1.15497.1.1.1.13.1',
'updateIndex' => '1.3.6.1.4.1.15497.1.1.1.13.1.1',
'updateServiceName' => '1.3.6.1.4.1.15497.1.1.1.13.1.2',
'updates' => '1.3.6.1.4.1.15497.1.1.1.13.1.3',
'updateFailures' => '1.3.6.1.4.1.15497.1.1.1.13.1.4',
'oldestMessageAge' => '1.3.6.1.4.1.15497.1.1.1.14.0',
'outstandingDNSRequests' => '1.3.6.1.4.1.15497.1.1.1.15.0',
'pendingDNSRequests' => '1.3.6.1.4.1.15497.1.1.1.16.0',
'raidEvents' => '1.3.6.1.4.1.15497.1.1.1.17.0',
'raidTable' => '1.3.6.1.4.1.15497.1.1.1.18',
'raidEntry' => '1.3.6.1.4.1.15497.1.1.1.18.1',
'raidIndex' => '1.3.6.1.4.1.15497.1.1.1.18.1.1',
'raidStatus' => '1.3.6.1.4.1.15497.1.1.1.18.1.2',
'raidStatusDefinition' => {
'1' => 'driveHealthy',
'2' => 'driveFailure',
'3' => 'driveRebuild',
},
'raidID' => '1.3.6.1.4.1.15497.1.1.1.18.1.3',
'raidLastError' => '1.3.6.1.4.1.15497.1.1.1.18.1.4',
'openFilesOrSockets' => '1.3.6.1.4.1.15497.1.1.1.19.0',
'mailTransferThreads' => '1.3.6.1.4.1.15497.1.1.1.20.0',
};
1;
__END__

View file

@ -0,0 +1,24 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::ATTACKMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'ATTACK-MIB'} = {
url => '',
name => 'ATTACK-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'ATTACK-MIB'} = {
'deviceAttackTable' => '1.3.6.1.4.1.3417.2.3.1.1.1',
'deviceAttackEntry' => '1.3.6.1.4.1.3417.2.3.1.1.1.1',
'deviceAttackIndex' => '1.3.6.1.4.1.3417.2.3.1.1.1.1.1',
'deviceAttackName' => '1.3.6.1.4.1.3417.2.3.1.1.1.1.2',
'deviceAttackStatus' => '1.3.6.1.4.1.3417.2.3.1.1.1.1.3',
'deviceAttackStatusDefinition' => {
'1' => 'no-attack',
'2' => 'under-attack',
},
'deviceAttackTime' => '1.3.6.1.4.1.3417.2.3.1.1.1.1.4',
};
1;
__END__

View file

@ -0,0 +1,82 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::BAMSNMPMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'BAM-SNMP-MIB'} = {
url => '',
name => 'BAM-SNMP-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'BAM-SNMP-MIB'} =
'1.3.6.1.4.1.13315.100.210';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'BAM-SNMP-MIB'} = {
'bam' => '1.3.6.1.4.1.13315.100.210',
'app' => '1.3.6.1.4.1.13315.100.210.1',
'common' => '1.3.6.1.4.1.13315.100.210.1.1',
'version' => '1.3.6.1.4.1.13315.100.210.1.1.1',
'startTime' => '1.3.6.1.4.1.13315.100.210.1.1.2',
'startTimeDefinition' => 'MIB-2-MIB::DateAndTime',
'notificationMessage' => '1.3.6.1.4.1.13315.100.210.1.1.3',
'database' => '1.3.6.1.4.1.13315.100.210.1.2',
'maxPoolSize' => '1.3.6.1.4.1.13315.100.210.1.2.1',
'numConnections' => '1.3.6.1.4.1.13315.100.210.1.2.2',
'deployer' => '1.3.6.1.4.1.13315.100.210.1.3',
'serverCountInQueue' => '1.3.6.1.4.1.13315.100.210.1.3.1',
'executingServerCount' => '1.3.6.1.4.1.13315.100.210.1.3.2',
'numberOfTasks' => '1.3.6.1.4.1.13315.100.210.1.3.3',
'eventNotification' => '1.3.6.1.4.1.13315.100.210.1.4',
'queueCount' => '1.3.6.1.4.1.13315.100.210.1.4.1',
'reconciliation' => '1.3.6.1.4.1.13315.100.210.1.5',
'poolSize' => '1.3.6.1.4.1.13315.100.210.1.5.1',
'scheduledDeployer' => '1.3.6.1.4.1.13315.100.210.1.6',
'numOfTimers' => '1.3.6.1.4.1.13315.100.210.1.6.1',
'running' => '1.3.6.1.4.1.13315.100.210.1.6.2',
'scheduledTaskService' => '1.3.6.1.4.1.13315.100.210.1.7',
'queueSize' => '1.3.6.1.4.1.13315.100.210.1.7.1',
'replication' => '1.3.6.1.4.1.13315.100.210.1.8',
'walFilesTotalSize' => '1.3.6.1.4.1.13315.100.210.1.8.1',
'replicationNodeStatus' => '1.3.6.1.4.1.13315.100.210.1.8.2',
'replicationNodeStatusDefinition' => 'BAM-SNMP-MIB::replicationNodeStatus',
'replicationAverageLatency' => '1.3.6.1.4.1.13315.100.210.1.8.3',
'replicationWarningThreshold' => '1.3.6.1.4.1.13315.100.210.1.8.4',
'replicationBreakThreshold' => '1.3.6.1.4.1.13315.100.210.1.8.5',
'replicationLatencyWarningThreshold' => '1.3.6.1.4.1.13315.100.210.1.8.6',
'replicationLatencyCriticalThreshold' => '1.3.6.1.4.1.13315.100.210.1.8.7',
'replicationStatusTable' => '1.3.6.1.4.1.13315.100.210.1.8.8',
'replicationStatusEntry' => '1.3.6.1.4.1.13315.100.210.1.8.8.1',
'hostname' => '1.3.6.1.4.1.13315.100.210.1.8.8.1.1',
'ipv4Address' => '1.3.6.1.4.1.13315.100.210.1.8.8.1.2',
'currentLatency' => '1.3.6.1.4.1.13315.100.210.1.8.8.1.3',
'replicationHealth' => '1.3.6.1.4.1.13315.100.210.1.8.8.1.4',
'replicationHealthDefinition' => 'BAM-SNMP-MIB::replicationHealth',
'replicationRole' => '1.3.6.1.4.1.13315.100.210.1.8.8.1.5',
'notification' => '1.3.6.1.4.1.13315.100.210.1.9',
'messagesReceived' => '1.3.6.1.4.1.13315.100.210.1.9.1',
'messagesAccepted' => '1.3.6.1.4.1.13315.100.210.1.9.2',
'ackSent' => '1.3.6.1.4.1.13315.100.210.1.9.3',
'messagesProcessed' => '1.3.6.1.4.1.13315.100.210.1.9.4',
'dbBackup' => '1.3.6.1.4.1.13315.100.210.1.10',
'lastSuccessfulBackupTime' => '1.3.6.1.4.1.13315.100.210.1.10.1',
'lastSuccessfulBackupTimeDefinition' => 'MIB-2-MIB::DateAndTime',
'lastSuccessfulRemoteBackupTime' => '1.3.6.1.4.1.13315.100.210.1.10.2',
'lastSuccessfulRemoteBackupTimeDefinition' => 'MIB-2-MIB::DateAndTime',
'jvm' => '1.3.6.1.4.1.13315.100.210.3',
'freeMemory' => '1.3.6.1.4.1.13315.100.210.3.1',
'maxMemory' => '1.3.6.1.4.1.13315.100.210.3.2',
'gcTime' => '1.3.6.1.4.1.13315.100.210.3.3',
'usageThresholdExceeded' => '1.3.6.1.4.1.13315.100.210.3.4',
'activeThreadCount' => '1.3.6.1.4.1.13315.100.210.3.5',
'traps' => '1.3.6.1.4.1.13315.100.210.255',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'BAM-SNMP-MIB'} = {
'replicationNodeStatus' => {
'0' => 'standalone',
'1' => 'primary',
'2' => 'standby',
},
'replicationHealth' => {
'0' => 'Not Replicating',
'1' => 'Initializing',
'2' => 'Replicating',
}
};

View file

@ -0,0 +1,80 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::BCNDHCPV4MIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'BCN-DHCPV4-MIB'} = {
url => '',
name => 'BCN-DHCPV4-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'BCN-DHCPV4-MIB'} =
'bcnDhcpv4MIB';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'BCN-DHCPV4-MIB'} = {
'bcnDhcpv4' => '1.3.6.1.4.1.13315.3.1.1',
'bcnDhcpv4MIB' => '1.3.6.1.4.1.13315.3.1.1.1',
'bcnDhcpv4Objects' => '1.3.6.1.4.1.13315.3.1.1.2',
'bcnDhcpv4ServiceStatus' => '1.3.6.1.4.1.13315.3.1.1.2.1',
'bcnDhcpv4SerOperState' => '1.3.6.1.4.1.13315.3.1.1.2.1.1',
'bcnDhcpv4SerOperStateDefinition' => 'BCN-DHCPV4-MIB::bcnDhcpv4SerOperState',
'bcnDhcpv4FirstAlertIpAddr' => '1.3.6.1.4.1.13315.3.1.1.2.1.2',
'bcnDhcpv4LeaseStatsSuccess' => '1.3.6.1.4.1.13315.3.1.1.2.1.3',
'bcnDhcpv4ServiceStatistics' => '1.3.6.1.4.1.13315.3.1.1.2.2',
'bcnDhcpv4LeaseTable' => '1.3.6.1.4.1.13315.3.1.1.2.2.1',
'bcnDhcpv4LeaseEntry' => '1.3.6.1.4.1.13315.3.1.1.2.2.1.1',
'bcnDhcpv4LeaseIP' => '1.3.6.1.4.1.13315.3.1.1.2.2.1.1.1',
'bcnDhcpv4LeaseStartTime' => '1.3.6.1.4.1.13315.3.1.1.2.2.1.1.2',
'bcnDhcpv4LeaseEndTime' => '1.3.6.1.4.1.13315.3.1.1.2.2.1.1.3',
'bcnDhcpv4LeaseTimeStamp' => '1.3.6.1.4.1.13315.3.1.1.2.2.1.1.4',
'bcnDhcpv4LeaseMacAddress' => '1.3.6.1.4.1.13315.3.1.1.2.2.1.1.5',
'bcnDhcpv4LeaseHostname' => '1.3.6.1.4.1.13315.3.1.1.2.2.1.1.6',
'bcnDhcpv4SubnetTable' => '1.3.6.1.4.1.13315.3.1.1.2.2.2',
'bcnDhcpv4SubnetEntry' => '1.3.6.1.4.1.13315.3.1.1.2.2.2.1',
'bcnDhcpv4SubnetIP' => '1.3.6.1.4.1.13315.3.1.1.2.2.2.1.1',
'bcnDhcpv4SubnetMask' => '1.3.6.1.4.1.13315.3.1.1.2.2.2.1.2',
'bcnDhcpv4SubnetSize' => '1.3.6.1.4.1.13315.3.1.1.2.2.2.1.3',
'bcnDhcpv4SubnetFreeAddresses' => '1.3.6.1.4.1.13315.3.1.1.2.2.2.1.4',
'bcnDhcpv4SubnetLowThreshold' => '1.3.6.1.4.1.13315.3.1.1.2.2.2.1.5',
'bcnDhcpv4SubnetHighThreshold' => '1.3.6.1.4.1.13315.3.1.1.2.2.2.1.6',
'bcnDhcpv4PoolTable' => '1.3.6.1.4.1.13315.3.1.1.2.2.3',
'bcnDhcpv4PoolEntry' => '1.3.6.1.4.1.13315.3.1.1.2.2.3.1',
'bcnDhcpv4PoolStartIP' => '1.3.6.1.4.1.13315.3.1.1.2.2.3.1.1',
'bcnDhcpv4PoolEndIP' => '1.3.6.1.4.1.13315.3.1.1.2.2.3.1.2',
'bcnDhcpv4PoolSubnetIP' => '1.3.6.1.4.1.13315.3.1.1.2.2.3.1.3',
'bcnDhcpv4PoolSize' => '1.3.6.1.4.1.13315.3.1.1.2.2.3.1.4',
'bcnDhcpv4PoolFreeAddresses' => '1.3.6.1.4.1.13315.3.1.1.2.2.3.1.5',
'bcnDhcpv4FixedIPTable' => '1.3.6.1.4.1.13315.3.1.1.2.2.4',
'bcnDhcpv4FixedIPEntry' => '1.3.6.1.4.1.13315.3.1.1.2.2.4.1',
'bcnDhcpv4FixedIP' => '1.3.6.1.4.1.13315.3.1.1.2.2.4.1.1',
'bcnDhcpv4Notification' => '1.3.6.1.4.1.13315.3.1.1.3',
'bcnDhcpv4NotificationEvents' => '1.3.6.1.4.1.13315.3.1.1.3.0',
'bcnDhcpv4NotificationData' => '1.3.6.1.4.1.13315.3.1.1.3.1',
'bcnDhcpv4AlarmSeverity' => '1.3.6.1.4.1.13315.3.1.1.3.1.1',
'bcnDhcpv4AlarmInfo' => '1.3.6.1.4.1.13315.3.1.1.3.1.2',
'bcnDhcpv4FailOverState' => '1.3.6.1.4.1.13315.3.1.1.3.1.3',
'bcnDhcpv4FailOverStateDefinition' => 'BCN-DHCPV4-MIB::bcnDhcpv4FailOverState',
'bcnDhcpv4SubnetAlertIpAddr' => '1.3.6.1.4.1.13315.3.1.1.3.1.4',
'bcnDhcpv4Conformance' => '1.3.6.1.4.1.13315.3.1.1.4',
'bcnDhcpv4ServiceCompliances' => '1.3.6.1.4.1.13315.3.1.1.4.1',
'bcnDhcpv4ServiceGroups' => '1.3.6.1.4.1.13315.3.1.1.4.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'BCN-DHCPV4-MIB'} = {
'bcnDhcpv4FailOverState' => {
'1' => 'startup',
'2' => 'normal',
'3' => 'communicationsInterrupted',
'4' => 'partnerDown',
'5' => 'potentialConflict',
'6' => 'recover',
'7' => 'paused',
'8' => 'shutdown',
'9' => 'recoverDone',
'254' => 'recoverWait',
},
'bcnDhcpv4SerOperState' => {
'1' => 'running',
'2' => 'notRunning',
'3' => 'starting',
'4' => 'stopping',
'5' => 'fault',
},
};

View file

@ -0,0 +1,55 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::BCNDNSMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'BCN-DNS-MIB'} = {
url => '',
name => 'BCN-DNS-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'BCN-DNS-MIB'} =
'1.3.6.1.4.1.13315.3.1.2.1';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'BCN-DNS-MIB'} = {
'bcnDns' => '1.3.6.1.4.1.13315.3.1.2',
'bcnDnsMIB' => '1.3.6.1.4.1.13315.3.1.2.1',
'bcnDnsObjects' => '1.3.6.1.4.1.13315.3.1.2.2',
'bcnDnsServiceStatus' => '1.3.6.1.4.1.13315.3.1.2.2.1',
'bcnDnsSerOperState' => '1.3.6.1.4.1.13315.3.1.2.2.1.1',
'bcnDnsSerOperStateDefinition' => 'BCN-DNS-MIB::bcnDnsSerOperState',
'bcnDnsSerNumberOfZones' => '1.3.6.1.4.1.13315.3.1.2.2.1.2',
'bcnDnsSerTransfersRunning' => '1.3.6.1.4.1.13315.3.1.2.2.1.3',
'bcnDnsSerTransfersDeferred' => '1.3.6.1.4.1.13315.3.1.2.2.1.4',
'bcnDnsSerSOAQueriesInProgress' => '1.3.6.1.4.1.13315.3.1.2.2.1.5',
'bcnDnsSerQueryLogging' => '1.3.6.1.4.1.13315.3.1.2.2.1.6',
'bcnDnsSerQueryLoggingDefinition' => 'BCN-DNS-MIB::bcnDnsSerQueryLogging',
'bcnDnsSerDebugLevel' => '1.3.6.1.4.1.13315.3.1.2.2.1.7',
'bcnDnsServiceStatistics' => '1.3.6.1.4.1.13315.3.1.2.2.2',
'bcnDnsStatServer' => '1.3.6.1.4.1.13315.3.1.2.2.2.1',
'bcnDnsStatSrvQrySuccess' => '1.3.6.1.4.1.13315.3.1.2.2.2.1.1',
'bcnDnsStatSrvQryReferral' => '1.3.6.1.4.1.13315.3.1.2.2.2.1.2',
'bcnDnsStatSrvQryNXRRSet' => '1.3.6.1.4.1.13315.3.1.2.2.2.1.3',
'bcnDnsStatSrvQryNXDomain' => '1.3.6.1.4.1.13315.3.1.2.2.2.1.4',
'bcnDnsStatSrvQryRecursion' => '1.3.6.1.4.1.13315.3.1.2.2.2.1.5',
'bcnDnsStatSrvQryFailure' => '1.3.6.1.4.1.13315.3.1.2.2.2.1.6',
'bcnDnsNotification' => '1.3.6.1.4.1.13315.3.1.2.3',
'bcnDnsNotificationEvents' => '1.3.6.1.4.1.13315.3.1.2.3.0',
'bcnDnsNotificationData' => '1.3.6.1.4.1.13315.3.1.2.3.1',
'bcnDnsAlarmSeverity' => '1.3.6.1.4.1.13315.3.1.2.3.1.1',
'bcnDnsAlarmInfo' => '1.3.6.1.4.1.13315.3.1.2.3.1.2',
'bcnDnsConformance' => '1.3.6.1.4.1.13315.3.1.2.4',
'bcnDnsServiceCompliances' => '1.3.6.1.4.1.13315.3.1.2.4.1',
'bcnDnsServiceGroups' => '1.3.6.1.4.1.13315.3.1.2.4.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'BCN-DNS-MIB'} = {
'bcnDnsSerOperState' => {
'1' => 'running',
'2' => 'notRunning',
'3' => 'starting',
'4' => 'stopping',
'5' => 'fault',
},
'bcnDnsSerQueryLogging' => {
'1' => 'on',
'2' => 'off',
},
};

View file

@ -0,0 +1,57 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::BCNSYSTEMMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'BCN-SYSTEM-MIB'} = {
url => '',
name => 'BCN-SYSTEM-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'BCN-SYSTEM-MIB'} =
'1.3.6.1.4.1.13315.3.2.1';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'BCN-SYSTEM-MIB'} = {
'bcnSystem' => '1.3.6.1.4.1.13315.3.2',
'bcnSystemMIB' => '1.3.6.1.4.1.13315.3.2.1',
'bcnSystemObjects' => '1.3.6.1.4.1.13315.3.2.2',
'bcnSysIdentification' => '1.3.6.1.4.1.13315.3.2.2.1',
'bcnSysIdProduct' => '1.3.6.1.4.1.13315.3.2.2.1.1',
'bcnSysIdOSRelease' => '1.3.6.1.4.1.13315.3.2.2.1.2',
'bcnSysIdSerial' => '1.3.6.1.4.1.13315.3.2.2.1.3',
'bcnSysIdServiceTag' => '1.3.6.1.4.1.13315.3.2.2.1.4',
'bcnSysIdPlatform' => '1.3.6.1.4.1.13315.3.2.2.1.5',
'bcnSysIdVendorPlatform' => '1.3.6.1.4.1.13315.3.2.2.1.6',
'bcnSysIdServicesTable' => '1.3.6.1.4.1.13315.3.2.2.1.7',
'bcnSysIdServicesEntry' => '1.3.6.1.4.1.13315.3.2.2.1.7.1',
'bcnSysIdServicesIndex' => '1.3.6.1.4.1.13315.3.2.2.1.7.1.1',
'bcnSysIdServicesOID' => '1.3.6.1.4.1.13315.3.2.2.1.7.1.2',
'bcnSysIdServicesStateTS' => '1.3.6.1.4.1.13315.3.2.2.1.7.1.3',
'bcnSysServices' => '1.3.6.1.4.1.13315.3.2.2.2',
'bcnSysServDNSService' => '1.3.6.1.4.1.13315.3.2.2.2.1',
'bcnSysServDHCPService' => '1.3.6.1.4.1.13315.3.2.2.2.2',
'bcnSysServTFTPService' => '1.3.6.1.4.1.13315.3.2.2.2.3',
'bcnSysServLicensing' => '1.3.6.1.4.1.13315.3.2.2.2.4',
'bcnSysServTFTP' => '1.3.6.1.4.1.13315.3.2.2.2.5',
'bcnSysServNTP' => '1.3.6.1.4.1.13315.3.2.2.2.6',
'bcnSysServPowerSupply' => '1.3.6.1.4.1.13315.3.2.2.2.7',
'bcnSysServNetworkInterface' => '1.3.6.1.4.1.13315.3.2.2.2.8',
'bcnSysServHighAvailability' => '1.3.6.1.4.1.13315.3.2.2.2.9',
'bcnSysServReplication' => '1.3.6.1.4.1.13315.3.2.2.2.10',
'bcnSysServSystem' => '1.3.6.1.4.1.13315.3.2.2.2.11',
'bcnSystemNotification' => '1.3.6.1.4.1.13315.3.2.3',
'bcnSysNotificationEvents' => '1.3.6.1.4.1.13315.3.2.3.0',
'bcnSysNotificationData' => '1.3.6.1.4.1.13315.3.2.3.1',
'bcnSysSerOperState' => '1.3.6.1.4.1.13315.3.2.3.1.1',
'bcnSysSerOperStateDefinition' => 'BCN-SYSTEM-MIB::bcnSysSerOperState',
'bcnSysAlarmSeverity' => '1.3.6.1.4.1.13315.3.2.3.1.2',
'bcnSysAlarmInfo' => '1.3.6.1.4.1.13315.3.2.3.1.3',
'bcnSystemConformance' => '1.3.6.1.4.1.13315.3.2.4',
'bcnSysServliances' => '1.3.6.1.4.1.13315.3.2.4.1',
'bcnSysGroups' => '1.3.6.1.4.1.13315.3.2.4.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'BCN-SYSTEM-MIB'} = {
'bcnSysSerOperState' => {
'1' => 'start',
'2' => 'reboot',
'3' => 'shutdown',
},
};

View file

@ -0,0 +1,54 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::BGP4MIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'BGP4-MIB'} = {
url => '',
name => 'BGP4-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'BGP4-MIB'} = {
'bgpVersion' => '1.3.6.1.2.1.15.1.0',
'bgpLocalAs' => '1.3.6.1.2.1.15.2.0',
'bgpPeerTable' => '1.3.6.1.2.1.15.3',
'bgpPeerEntry' => '1.3.6.1.2.1.15.3.1',
'bgpPeerIdentifier' => '1.3.6.1.2.1.15.3.1.1',
'bgpPeerState' => '1.3.6.1.2.1.15.3.1.2',
'bgpPeerStateDefinition' => {
'1' => 'idle',
'2' => 'connect',
'3' => 'active',
'4' => 'opensent',
'5' => 'openconfirm',
'6' => 'established',
},
'bgpPeerAdminStatus' => '1.3.6.1.2.1.15.3.1.3',
'bgpPeerAdminStatusDefinition' => {
'1' => 'stop',
'2' => 'start',
},
'bgpPeerNegotiatedVersion' => '1.3.6.1.2.1.15.3.1.4',
'bgpPeerLocalAddr' => '1.3.6.1.2.1.15.3.1.5',
'bgpPeerLocalPort' => '1.3.6.1.2.1.15.3.1.6',
'bgpPeerRemoteAddr' => '1.3.6.1.2.1.15.3.1.7',
'bgpPeerRemotePort' => '1.3.6.1.2.1.15.3.1.8',
'bgpPeerRemoteAs' => '1.3.6.1.2.1.15.3.1.9',
'bgpPeerInUpdates' => '1.3.6.1.2.1.15.3.1.10',
'bgpPeerOutUpdates' => '1.3.6.1.2.1.15.3.1.11',
'bgpPeerInTotalMessages' => '1.3.6.1.2.1.15.3.1.12',
'bgpPeerOutTotalMessages' => '1.3.6.1.2.1.15.3.1.13',
'bgpPeerLastError' => '1.3.6.1.2.1.15.3.1.14',
'bgpPeerFsmEstablishedTransitions' => '1.3.6.1.2.1.15.3.1.15',
'bgpPeerFsmEstablishedTime' => '1.3.6.1.2.1.15.3.1.16',
'bgpPeerConnectRetryInterval' => '1.3.6.1.2.1.15.3.1.17',
'bgpPeerHoldTime' => '1.3.6.1.2.1.15.3.1.18',
'bgpPeerKeepAlive' => '1.3.6.1.2.1.15.3.1.19',
'bgpPeerHoldTimeConfigured' => '1.3.6.1.2.1.15.3.1.20',
'bgpPeerKeepAliveConfigured' => '1.3.6.1.2.1.15.3.1.21',
'bgpPeerMinASOriginationInterval' => '1.3.6.1.2.1.15.3.1.22',
'bgpPeerMinRouteAdvertisementInterval' => '1.3.6.1.2.1.15.3.1.23',
'bgpPeerInUpdateElapsedTime' => '1.3.6.1.2.1.15.3.1.24',
};
1;
__END__

View file

@ -0,0 +1,63 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::MIBRESOURCE;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'BIANCA-BRICK-MIBRES-MIB'} = {
url => '',
name => 'BIANCA-BRICK-MIBRES-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'BIANCA-BRICK-MIBRES-MIB'} =
'1.3.6.1.4.1.272.4.17.4';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'BIANCA-BRICK-MIBRES-MIB'} = {
resource => '1.3.6.1.4.1.272.4.17.4.255',
cpuTable => '1.3.6.1.4.1.272.4.17.4.1',
cpuEntry => '1.3.6.1.4.1.272.4.17.4.1.1',
cpuNumber => '1.3.6.1.4.1.272.4.17.4.1.1.1',
cpuDescr => '1.3.6.1.4.1.272.4.17.4.1.1.2',
cpuTotalUser => '1.3.6.1.4.1.272.4.17.4.1.1.3',
cpuTotalSystem => '1.3.6.1.4.1.272.4.17.4.1.1.4',
cpuTotalStreams => '1.3.6.1.4.1.272.4.17.4.1.1.5',
cpuTotalIdle => '1.3.6.1.4.1.272.4.17.4.1.1.6',
cpuLoadUser => '1.3.6.1.4.1.272.4.17.4.1.1.7',
cpuLoadSystem => '1.3.6.1.4.1.272.4.17.4.1.1.8',
cpuLoadStreams => '1.3.6.1.4.1.272.4.17.4.1.1.9',
cpuLoadIdle => '1.3.6.1.4.1.272.4.17.4.1.1.10',
cpuLoadUser10s => '1.3.6.1.4.1.272.4.17.4.1.1.11',
cpuLoadSystem10s => '1.3.6.1.4.1.272.4.17.4.1.1.12',
cpuLoadStreams10s => '1.3.6.1.4.1.272.4.17.4.1.1.13',
cpuLoadIdle10s => '1.3.6.1.4.1.272.4.17.4.1.1.14',
cpuLoadUser60s => '1.3.6.1.4.1.272.4.17.4.1.1.15',
cpuLoadSystem60s => '1.3.6.1.4.1.272.4.17.4.1.1.16',
cpuLoadStreams60s => '1.3.6.1.4.1.272.4.17.4.1.1.17',
cpuLoadIdle60s => '1.3.6.1.4.1.272.4.17.4.1.1.18',
memoryTable => '1.3.6.1.4.1.272.4.17.4.2',
memoryEntry => '1.3.6.1.4.1.272.4.17.4.2.1',
memoryType => '1.3.6.1.4.1.272.4.17.4.2.1.1',
memoryTypeDefinition => 'BIANCA-BRICK-MIBRES-MIB::memoryType',
memoryDescr => '1.3.6.1.4.1.272.4.17.4.2.1.2',
memoryBlockSize => '1.3.6.1.4.1.272.4.17.4.2.1.3',
memoryTotal => '1.3.6.1.4.1.272.4.17.4.2.1.4',
memoryInuse => '1.3.6.1.4.1.272.4.17.4.2.1.5',
memoryDramUse => '1.3.6.1.4.1.272.4.17.4.2.1.6',
memoryNAllocs => '1.3.6.1.4.1.272.4.17.4.2.1.7',
memoryNFrees => '1.3.6.1.4.1.272.4.17.4.2.1.8',
memoryNFails => '1.3.6.1.4.1.272.4.17.4.2.1.9',
dspTable => '1.3.6.1.4.1.272.4.17.4.3',
dspEntry => '1.3.6.1.4.1.272.4.17.4.3.1',
dspSlot => '1.3.6.1.4.1.272.4.17.4.3.1.1',
dspUnit => '1.3.6.1.4.1.272.4.17.4.3.1.2',
dspDescr => '1.3.6.1.4.1.272.4.17.4.3.1.3',
dspCapabilities => '1.3.6.1.4.1.272.4.17.4.3.1.4',
dspTotalChannels => '1.3.6.1.4.1.272.4.17.4.3.1.5',
dspUsedChannels => '1.3.6.1.4.1.272.4.17.4.3.1.6',
resourceMIB => '1.3.6.1.4.1.272.4.17.4.255',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'BIANCA-BRICK-MIBRES-MIB'} = {
memoryType => {
'1' => 'flash',
'2' => 'dram',
'3' => 'dpool',
},
};

View file

@ -0,0 +1,32 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::BLUECOATAVMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'BLUECOAT-AV-MIB'} = {
url => '',
name => 'BLUECOAT-AV-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'BLUECOAT-AV-MIB'} = {
'avFilesScanned' => '1.3.6.1.4.1.3417.2.10.1.1.0',
'avVirusesDetected' => '1.3.6.1.4.1.3417.2.10.1.2.0',
'avPatternVersion' => '1.3.6.1.4.1.3417.2.10.1.3.0',
'avPatternDateTime' => '1.3.6.1.4.1.3417.2.10.1.4.0',
'avEngineVersion' => '1.3.6.1.4.1.3417.2.10.1.5.0',
'avVendorName' => '1.3.6.1.4.1.3417.2.10.1.6.0',
'avLicenseDaysRemaining' => '1.3.6.1.4.1.3417.2.10.1.7.0',
'avPublishedFirmwareVersion' => '1.3.6.1.4.1.3417.2.10.1.8.0',
'avInstalledFirmwareVersion' => '1.3.6.1.4.1.3417.2.10.1.9.0',
'avSlowICAPConnections' => '1.3.6.1.4.1.3417.2.10.1.10.0',
'avUpdateFailureReason' => '1.3.6.1.4.1.3417.2.10.2.1.0',
'avUrl' => '1.3.6.1.4.1.3417.2.10.2.2.0',
'avVirusName' => '1.3.6.1.4.1.3417.2.10.2.3.0',
'avVirusDetails' => '1.3.6.1.4.1.3417.2.10.2.4.0',
'avErrorCode' => '1.3.6.1.4.1.3417.2.10.2.5.0',
'avErrorDetails' => '1.3.6.1.4.1.3417.2.10.2.6.0',
'avPreviousFirmwareVersion' => '1.3.6.1.4.1.3417.2.10.2.7.0',
'avICTMWarningReason' => '1.3.6.1.4.1.3417.2.10.2.8.0',
};
1;
__END__

View file

@ -0,0 +1,50 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::BLUECOATSGPROXYMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'BLUECOAT-SG-PROXY-MIB'} = {
url => '',
name => 'BLUECOAT-SG-PROXY-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'BLUECOAT-SG-PROXY-MIB'} = {
'blueCoatMgmt' => '1.3.6.1.4.1.3417.2',
'bluecoatSGProxyMIB' => '1.3.6.1.4.1.3417.2.11',
'sgProxyConfig' => '1.3.6.1.4.1.3417.2.11.1',
'sgProxySystem' => '1.3.6.1.4.1.3417.2.11.2',
'sgProxyMemAvailable' => '1.3.6.1.4.1.3417.2.11.2.3.1.0',
'sgProxyMemCacheUsage' => '1.3.6.1.4.1.3417.2.11.2.3.2.0',
'sgProxyMemSysUsage' => '1.3.6.1.4.1.3417.2.11.2.3.3.0',
'sgProxyMemPressure' => '1.3.6.1.4.1.3417.2.11.2.3.4.0',
'sgProxyCpuCoreTable' => '1.3.6.1.4.1.3417.2.11.2.4',
'sgProxyCpuCoreEntry' => '1.3.6.1.4.1.3417.2.11.2.4.1',
'sgProxyCpuCoreIndex' => '1.3.6.1.4.1.3417.2.11.2.4.1.1',
'sgProxyCpuCoreUpTime' => '1.3.6.1.4.1.3417.2.11.2.4.1.2',
'sgProxyCpuCoreBusyTime' => '1.3.6.1.4.1.3417.2.11.2.4.1.3',
'sgProxyCpuCoreIdleTime' => '1.3.6.1.4.1.3417.2.11.2.4.1.4',
'sgProxyCpuCoreUpTimeSinceLastAccess' => '1.3.6.1.4.1.3417.2.11.2.4.1.5',
'sgProxyCpuCoreBusyTimeSinceLastAccess' => '1.3.6.1.4.1.3417.2.11.2.4.1.6',
'sgProxyCpuCoreIdleTimeSinceLastAccess' => '1.3.6.1.4.1.3417.2.11.2.4.1.7',
'sgProxyCpuCoreBusyPerCent' => '1.3.6.1.4.1.3417.2.11.2.4.1.8',
'sgProxyCpuCoreIdlePerCent' => '1.3.6.1.4.1.3417.2.11.2.4.1.9',
'sgProxyHttp' => '1.3.6.1.4.1.3417.2.11.3',
'sgProxyHttpPerf' => '1.3.6.1.4.1.3417.2.11.3.1',
'sgProxyHttpClient' => '1.3.6.1.4.1.3417.2.11.3.1.1',
'sgProxyHttpServer' => '1.3.6.1.4.1.3417.2.11.3.1.2',
'sgProxyHttpConnections' => '1.3.6.1.4.1.3417.2.11.3.1.3',
'sgProxyHttpClientConnections' => '1.3.6.1.4.1.3417.2.11.3.1.3.1',
'sgProxyHttpClientConnectionsActive' => '1.3.6.1.4.1.3417.2.11.3.1.3.2',
'sgProxyHttpClientConnectionsIdle' => '1.3.6.1.4.1.3417.2.11.3.1.3.3',
'sgProxyHttpServerConnections' => '1.3.6.1.4.1.3417.2.11.3.1.3.4',
'sgProxyHttpServerConnectionsActive' => '1.3.6.1.4.1.3417.2.11.3.1.3.5',
'sgProxyHttpServerConnectionsIdle' => '1.3.6.1.4.1.3417.2.11.3.1.3.6',
'sgProxyHttpResponse' => '1.3.6.1.4.1.3417.2.11.3.2',
'sgProxyHttpResponseTime' => '1.3.6.1.4.1.3417.2.11.3.2.1',
'sgProxyHttpResponseTimeAll' => '1.3.6.1.4.1.3417.2.11.3.2.1.1',
'sgProxyHttpResponseFirstByte' => '1.3.6.1.4.1.3417.2.11.3.2.1.2',
'sgProxyHttpResponseByteRate' => '1.3.6.1.4.1.3417.2.11.3.2.1.3',
'sgProxyHttpResponseSize' => '1.3.6.1.4.1.3417.2.11.3.2.1.4',
};
1;
__END__

View file

@ -0,0 +1,199 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::CISCOBGP4MIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'CISCO-BGP4-MIB'} = {
url => '',
name => 'CISCO-BGP4-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'CISCO-BGP4-MIB'} =
'1.3.6.1.4.1.9.9.187';
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'CISCO-BGP4-MIB'} = {
ciscoBgp4MIB => '1.3.6.1.4.1.9.9.187',
ciscoBgp4NotifyPrefix => '1.3.6.1.4.1.9.9.187.0',
ciscoBgp4MIBObjects => '1.3.6.1.4.1.9.9.187.1',
cbgpRoute => '1.3.6.1.4.1.9.9.187.1.1',
cbgpRouteTable => '1.3.6.1.4.1.9.9.187.1.1.1',
cbgpRouteEntry => '1.3.6.1.4.1.9.9.187.1.1.1.1',
cbgpRouteAfi => '1.3.6.1.4.1.9.9.187.1.1.1.1.1',
cbgpRouteSafi => '1.3.6.1.4.1.9.9.187.1.1.1.1.2',
cbgpRouteSafiDefinition => 'CISCO-BGP4-MIB::CbgpSafi',
cbgpRoutePeerType => '1.3.6.1.4.1.9.9.187.1.1.1.1.3',
cbgpRoutePeer => '1.3.6.1.4.1.9.9.187.1.1.1.1.4',
cbgpRouteAddrPrefix => '1.3.6.1.4.1.9.9.187.1.1.1.1.5',
cbgpRouteAddrPrefixLen => '1.3.6.1.4.1.9.9.187.1.1.1.1.6',
cbgpRouteOrigin => '1.3.6.1.4.1.9.9.187.1.1.1.1.7',
cbgpRouteOriginDefinition => 'CISCO-BGP4-MIB::cbgpRouteOrigin',
cbgpRouteASPathSegment => '1.3.6.1.4.1.9.9.187.1.1.1.1.8',
cbgpRouteNextHop => '1.3.6.1.4.1.9.9.187.1.1.1.1.9',
cbgpRouteMedPresent => '1.3.6.1.4.1.9.9.187.1.1.1.1.10',
cbgpRouteMultiExitDisc => '1.3.6.1.4.1.9.9.187.1.1.1.1.11',
cbgpRouteLocalPrefPresent => '1.3.6.1.4.1.9.9.187.1.1.1.1.12',
cbgpRouteLocalPref => '1.3.6.1.4.1.9.9.187.1.1.1.1.13',
cbgpRouteAtomicAggregate => '1.3.6.1.4.1.9.9.187.1.1.1.1.14',
cbgpRouteAtomicAggregateDefinition => 'CISCO-BGP4-MIB::cbgpRouteAtomicAggregate',
cbgpRouteAggregatorAS => '1.3.6.1.4.1.9.9.187.1.1.1.1.15',
cbgpRouteAggregatorAddrType => '1.3.6.1.4.1.9.9.187.1.1.1.1.16',
cbgpRouteAggregatorAddr => '1.3.6.1.4.1.9.9.187.1.1.1.1.17',
cbgpRouteBest => '1.3.6.1.4.1.9.9.187.1.1.1.1.18',
cbgpRouteUnknownAttr => '1.3.6.1.4.1.9.9.187.1.1.1.1.19',
cbgpPeer => '1.3.6.1.4.1.9.9.187.1.2',
cbgpPeerTable => '1.3.6.1.4.1.9.9.187.1.2.1',
cbgpPeerEntry => '1.3.6.1.4.1.9.9.187.1.2.1.1',
cbgpPeerPrefixAccepted => '1.3.6.1.4.1.9.9.187.1.2.1.1.1',
cbgpPeerPrefixDenied => '1.3.6.1.4.1.9.9.187.1.2.1.1.2',
cbgpPeerPrefixLimit => '1.3.6.1.4.1.9.9.187.1.2.1.1.3',
cbgpPeerPrefixAdvertised => '1.3.6.1.4.1.9.9.187.1.2.1.1.4',
cbgpPeerPrefixSuppressed => '1.3.6.1.4.1.9.9.187.1.2.1.1.5',
cbgpPeerPrefixWithdrawn => '1.3.6.1.4.1.9.9.187.1.2.1.1.6',
cbgpPeerLastErrorTxt => '1.3.6.1.4.1.9.9.187.1.2.1.1.7',
cbgpPeerPrevState => '1.3.6.1.4.1.9.9.187.1.2.1.1.8',
cbgpPeerPrevStateDefinition => 'CISCO-BGP4-MIB::cbgpPeerPrevState',
cbgpPeerCapsTable => '1.3.6.1.4.1.9.9.187.1.2.2',
cbgpPeerCapsEntry => '1.3.6.1.4.1.9.9.187.1.2.2.1',
cbgpPeerCapCode => '1.3.6.1.4.1.9.9.187.1.2.2.1.1',
cbgpPeerCapCodeDefinition => 'CISCO-BGP4-MIB::cbgpPeerCapCode',
cbgpPeerCapIndex => '1.3.6.1.4.1.9.9.187.1.2.2.1.2',
cbgpPeerCapValue => '1.3.6.1.4.1.9.9.187.1.2.2.1.3',
cbgpPeerAddrFamilyTable => '1.3.6.1.4.1.9.9.187.1.2.3',
cbgpPeerAddrFamilyEntry => '1.3.6.1.4.1.9.9.187.1.2.3.1',
cbgpPeerAddrFamilyAfi => '1.3.6.1.4.1.9.9.187.1.2.3.1.1',
cbgpPeerAddrFamilySafi => '1.3.6.1.4.1.9.9.187.1.2.3.1.2',
cbgpPeerAddrFamilySafiDefinition => 'CISCO-BGP4-MIB::CbgpSafi',
cbgpPeerAddrFamilyName => '1.3.6.1.4.1.9.9.187.1.2.3.1.3',
cbgpPeerAddrFamilyPrefixTable => '1.3.6.1.4.1.9.9.187.1.2.4',
cbgpPeerAddrFamilyPrefixEntry => '1.3.6.1.4.1.9.9.187.1.2.4.1',
cbgpPeerAcceptedPrefixes => '1.3.6.1.4.1.9.9.187.1.2.4.1.1',
cbgpPeerDeniedPrefixes => '1.3.6.1.4.1.9.9.187.1.2.4.1.2',
cbgpPeerPrefixAdminLimit => '1.3.6.1.4.1.9.9.187.1.2.4.1.3',
cbgpPeerPrefixThreshold => '1.3.6.1.4.1.9.9.187.1.2.4.1.4',
cbgpPeerPrefixClearThreshold => '1.3.6.1.4.1.9.9.187.1.2.4.1.5',
cbgpPeerAdvertisedPrefixes => '1.3.6.1.4.1.9.9.187.1.2.4.1.6',
cbgpPeerSuppressedPrefixes => '1.3.6.1.4.1.9.9.187.1.2.4.1.7',
cbgpPeerWithdrawnPrefixes => '1.3.6.1.4.1.9.9.187.1.2.4.1.8',
cbgpPeer2Table => '1.3.6.1.4.1.9.9.187.1.2.5',
cbgpPeer2Entry => '1.3.6.1.4.1.9.9.187.1.2.5.1',
cbgpPeer2Type => '1.3.6.1.4.1.9.9.187.1.2.5.1.1',
cbgpPeer2RemoteAddr => '1.3.6.1.4.1.9.9.187.1.2.5.1.2',
cbgpPeer2State => '1.3.6.1.4.1.9.9.187.1.2.5.1.3',
cbgpPeer2StateDefinition => 'CISCO-BGP4-MIB::cbgpPeer2State',
cbgpPeer2AdminStatus => '1.3.6.1.4.1.9.9.187.1.2.5.1.4',
cbgpPeer2AdminStatusDefinition => 'CISCO-BGP4-MIB::cbgpPeer2AdminStatus',
cbgpPeer2NegotiatedVersion => '1.3.6.1.4.1.9.9.187.1.2.5.1.5',
cbgpPeer2LocalAddr => '1.3.6.1.4.1.9.9.187.1.2.5.1.6',
cbgpPeer2LocalPort => '1.3.6.1.4.1.9.9.187.1.2.5.1.7',
cbgpPeer2LocalAs => '1.3.6.1.4.1.9.9.187.1.2.5.1.8',
cbgpPeer2LocalIdentifier => '1.3.6.1.4.1.9.9.187.1.2.5.1.9',
cbgpPeer2RemotePort => '1.3.6.1.4.1.9.9.187.1.2.5.1.10',
cbgpPeer2RemoteAs => '1.3.6.1.4.1.9.9.187.1.2.5.1.11',
cbgpPeer2RemoteIdentifier => '1.3.6.1.4.1.9.9.187.1.2.5.1.12',
cbgpPeer2InUpdates => '1.3.6.1.4.1.9.9.187.1.2.5.1.13',
cbgpPeer2OutUpdates => '1.3.6.1.4.1.9.9.187.1.2.5.1.14',
cbgpPeer2InTotalMessages => '1.3.6.1.4.1.9.9.187.1.2.5.1.15',
cbgpPeer2OutTotalMessages => '1.3.6.1.4.1.9.9.187.1.2.5.1.16',
cbgpPeer2LastError => '1.3.6.1.4.1.9.9.187.1.2.5.1.17',
cbgpPeer2FsmEstablishedTransitions => '1.3.6.1.4.1.9.9.187.1.2.5.1.18',
cbgpPeer2FsmEstablishedTime => '1.3.6.1.4.1.9.9.187.1.2.5.1.19',
cbgpPeer2ConnectRetryInterval => '1.3.6.1.4.1.9.9.187.1.2.5.1.20',
cbgpPeer2HoldTime => '1.3.6.1.4.1.9.9.187.1.2.5.1.21',
cbgpPeer2KeepAlive => '1.3.6.1.4.1.9.9.187.1.2.5.1.22',
cbgpPeer2HoldTimeConfigured => '1.3.6.1.4.1.9.9.187.1.2.5.1.23',
cbgpPeer2KeepAliveConfigured => '1.3.6.1.4.1.9.9.187.1.2.5.1.24',
cbgpPeer2MinASOriginationInterval => '1.3.6.1.4.1.9.9.187.1.2.5.1.25',
cbgpPeer2MinRouteAdvertisementInterval => '1.3.6.1.4.1.9.9.187.1.2.5.1.26',
cbgpPeer2InUpdateElapsedTime => '1.3.6.1.4.1.9.9.187.1.2.5.1.27',
cbgpPeer2LastErrorTxt => '1.3.6.1.4.1.9.9.187.1.2.5.1.28',
cbgpPeer2PrevState => '1.3.6.1.4.1.9.9.187.1.2.5.1.29',
cbgpPeer2PrevStateDefinition => 'CISCO-BGP4-MIB::cbgpPeer2PrevState',
cbgpPeer2CapsTable => '1.3.6.1.4.1.9.9.187.1.2.6',
cbgpPeer2CapsEntry => '1.3.6.1.4.1.9.9.187.1.2.6.1',
cbgpPeer2CapCode => '1.3.6.1.4.1.9.9.187.1.2.6.1.1',
cbgpPeer2CapCodeDefinition => 'CISCO-BGP4-MIB::cbgpPeer2CapCode',
cbgpPeer2CapIndex => '1.3.6.1.4.1.9.9.187.1.2.6.1.2',
cbgpPeer2CapValue => '1.3.6.1.4.1.9.9.187.1.2.6.1.3',
cbgpPeer2AddrFamilyTable => '1.3.6.1.4.1.9.9.187.1.2.7',
cbgpPeer2AddrFamilyEntry => '1.3.6.1.4.1.9.9.187.1.2.7.1',
cbgpPeer2AddrFamilyAfi => '1.3.6.1.4.1.9.9.187.1.2.7.1.1',
cbgpPeer2AddrFamilySafi => '1.3.6.1.4.1.9.9.187.1.2.7.1.2',
cbgpPeer2AddrFamilySafiDefinition => 'CISCO-BGP4-MIB::CbgpSafi',
cbgpPeer2AddrFamilyName => '1.3.6.1.4.1.9.9.187.1.2.7.1.3',
cbgpPeer2AddrFamilyPrefixTable => '1.3.6.1.4.1.9.9.187.1.2.8',
cbgpPeer2AddrFamilyPrefixEntry => '1.3.6.1.4.1.9.9.187.1.2.8.1',
cbgpPeer2AcceptedPrefixes => '1.3.6.1.4.1.9.9.187.1.2.8.1.1',
cbgpPeer2DeniedPrefixes => '1.3.6.1.4.1.9.9.187.1.2.8.1.2',
cbgpPeer2PrefixAdminLimit => '1.3.6.1.4.1.9.9.187.1.2.8.1.3',
cbgpPeer2PrefixThreshold => '1.3.6.1.4.1.9.9.187.1.2.8.1.4',
cbgpPeer2PrefixClearThreshold => '1.3.6.1.4.1.9.9.187.1.2.8.1.5',
cbgpPeer2AdvertisedPrefixes => '1.3.6.1.4.1.9.9.187.1.2.8.1.6',
cbgpPeer2SuppressedPrefixes => '1.3.6.1.4.1.9.9.187.1.2.8.1.7',
cbgpPeer2WithdrawnPrefixes => '1.3.6.1.4.1.9.9.187.1.2.8.1.8',
cbgpGlobal => '1.3.6.1.4.1.9.9.187.1.3',
cbgpNotifsEnable => '1.3.6.1.4.1.9.9.187.1.3.1',
cbgpLocalAs => '1.3.6.1.4.1.9.9.187.1.3.2',
ciscoBgp4NotificationPrefix => '1.3.6.1.4.1.9.9.187.2',
ciscoBgp4MIBConformance => '1.3.6.1.4.1.9.9.187.3',
ciscoBgp4MIBCompliances => '1.3.6.1.4.1.9.9.187.3.1',
ciscoBgp4MIBGroups => '1.3.6.1.4.1.9.9.187.3.2',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'CISCO-BGP4-MIB'} = {
cbgpPeerCapCode => {
'1' => 'multiProtocol',
'2' => 'routeRefresh',
'64' => 'gracefulRestart',
'128' => 'routeRefreshOld',
},
cbgpPeer2State => {
'1' => 'idle',
'2' => 'connect',
'3' => 'active',
'4' => 'opensent',
'5' => 'openconfirm',
'6' => 'established',
},
CbgpSafi => {
'1' => 'unicast',
'2' => 'multicast',
'3' => 'unicastAndMulticast',
'128' => 'vpn',
},
cbgpRouteOrigin => {
'1' => 'igp',
'2' => 'egp',
'3' => 'incomplete',
},
cbgpPeer2CapCode => {
'1' => 'multiProtocol',
'2' => 'routeRefresh',
'64' => 'gracefulRestart',
'65' => 'fourByteAs',
'69' => 'addPath',
'128' => 'routeRefreshOld',
},
cbgpPeerPrevState => {
'0' => 'none',
'1' => 'idle',
'2' => 'connect',
'3' => 'active',
'4' => 'opensent',
'5' => 'openconfirm',
'6' => 'established',
},
cbgpRouteAtomicAggregate => {
'1' => 'lessSpecificRouteNotSelected',
'2' => 'lessSpecificRouteSelected',
},
cbgpPeer2AdminStatus => {
'1' => 'stop',
'2' => 'start',
},
cbgpPeer2PrevState => {
'0' => 'none',
'1' => 'idle',
'2' => 'connect',
'3' => 'active',
'4' => 'opensent',
'5' => 'openconfirm',
'6' => 'established',
},
};

View file

@ -0,0 +1,437 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::CISCOCCMMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'CISCO-CCM-MIB'} = {
url => '',
name => 'CISCO-CCM-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'CISCO-CCM-MIB'} = {
'org' => '1.3',
'dod' => '1.3.6',
'internet' => '1.3.6.1',
'directory' => '1.3.6.1.1',
'mgmt' => '1.3.6.1.2',
'experimental' => '1.3.6.1.3',
'private' => '1.3.6.1.4',
'enterprises' => '1.3.6.1.4.1',
'cisco' => '1.3.6.1.4.1.9',
'ciscoMgmt' => '1.3.6.1.4.1.9.9',
'ciscoCcmMIB' => '1.3.6.1.4.1.9.9.156',
'ciscoCcmMIBObjects' => '1.3.6.1.4.1.9.9.156.1',
'ccmGeneralInfo' => '1.3.6.1.4.1.9.9.156.1.1',
'ccmGroupTable' => '1.3.6.1.4.1.9.9.156.1.1.1',
'ccmGroupEntry' => '1.3.6.1.4.1.9.9.156.1.1.1.1',
'ccmGroupIndex' => '1.3.6.1.4.1.9.9.156.1.1.1.1.1',
'ccmGroupName' => '1.3.6.1.4.1.9.9.156.1.1.1.1.2',
'ccmGroupTftpDefault' => '1.3.6.1.4.1.9.9.156.1.1.1.1.3',
'ccmTable' => '1.3.6.1.4.1.9.9.156.1.1.2',
'ccmEntry' => '1.3.6.1.4.1.9.9.156.1.1.2.1',
'ccmIndex' => '1.3.6.1.4.1.9.9.156.1.1.2.1.1',
'ccmName' => '1.3.6.1.4.1.9.9.156.1.1.2.1.2',
'ccmDescription' => '1.3.6.1.4.1.9.9.156.1.1.2.1.3',
'ccmVersion' => '1.3.6.1.4.1.9.9.156.1.1.2.1.4',
'ccmStatus' => '1.3.6.1.4.1.9.9.156.1.1.2.1.5',
'ccmStatusDefinition' => {
'1' => 'unknown',
'2' => 'up',
'3' => 'down',
},
'ccmInetAddressType' => '1.3.6.1.4.1.9.9.156.1.1.2.1.6',
'ccmInetAddress' => '1.3.6.1.4.1.9.9.156.1.1.2.1.7',
'ccmClusterId' => '1.3.6.1.4.1.9.9.156.1.1.2.1.8',
'ccmInetAddress2Type' => '1.3.6.1.4.1.9.9.156.1.1.2.1.9',
'ccmInetAddress2' => '1.3.6.1.4.1.9.9.156.1.1.2.1.10',
'ccmGroupMappingTable' => '1.3.6.1.4.1.9.9.156.1.1.3',
'ccmGroupMappingEntry' => '1.3.6.1.4.1.9.9.156.1.1.3.1',
'ccmCMGroupMappingCMPriority' => '1.3.6.1.4.1.9.9.156.1.1.3.1.1',
'ccmRegionTable' => '1.3.6.1.4.1.9.9.156.1.1.4',
'ccmRegionEntry' => '1.3.6.1.4.1.9.9.156.1.1.4.1',
'ccmRegionIndex' => '1.3.6.1.4.1.9.9.156.1.1.4.1.1',
'ccmRegionName' => '1.3.6.1.4.1.9.9.156.1.1.4.1.2',
'ccmRegionPairTable' => '1.3.6.1.4.1.9.9.156.1.1.5',
'ccmRegionPairEntry' => '1.3.6.1.4.1.9.9.156.1.1.5.1',
'ccmRegionSrcIndex' => '1.3.6.1.4.1.9.9.156.1.1.5.1.1',
'ccmRegionDestIndex' => '1.3.6.1.4.1.9.9.156.1.1.5.1.2',
'ccmRegionAvailableBandWidth' => '1.3.6.1.4.1.9.9.156.1.1.5.1.3',
'ccmTimeZoneTable' => '1.3.6.1.4.1.9.9.156.1.1.6',
'ccmTimeZoneEntry' => '1.3.6.1.4.1.9.9.156.1.1.6.1',
'ccmTimeZoneIndex' => '1.3.6.1.4.1.9.9.156.1.1.6.1.1',
'ccmTimeZoneName' => '1.3.6.1.4.1.9.9.156.1.1.6.1.2',
'ccmTimeZoneOffset' => '1.3.6.1.4.1.9.9.156.1.1.6.1.3',
'ccmTimeZoneOffsetHours' => '1.3.6.1.4.1.9.9.156.1.1.6.1.4',
'ccmTimeZoneOffsetMinutes' => '1.3.6.1.4.1.9.9.156.1.1.6.1.5',
'ccmDevicePoolTable' => '1.3.6.1.4.1.9.9.156.1.1.7',
'ccmDevicePoolEntry' => '1.3.6.1.4.1.9.9.156.1.1.7.1',
'ccmDevicePoolIndex' => '1.3.6.1.4.1.9.9.156.1.1.7.1.1',
'ccmDevicePoolName' => '1.3.6.1.4.1.9.9.156.1.1.7.1.2',
'ccmDevicePoolRegionIndex' => '1.3.6.1.4.1.9.9.156.1.1.7.1.3',
'ccmDevicePoolTimeZoneIndex' => '1.3.6.1.4.1.9.9.156.1.1.7.1.4',
'ccmDevicePoolGroupIndex' => '1.3.6.1.4.1.9.9.156.1.1.7.1.5',
'ccmProductTypeTable' => '1.3.6.1.4.1.9.9.156.1.1.8',
'ccmProductTypeEntry' => '1.3.6.1.4.1.9.9.156.1.1.8.1',
'ccmProductTypeIndex' => '1.3.6.1.4.1.9.9.156.1.1.8.1.1',
'ccmProductType' => '1.3.6.1.4.1.9.9.156.1.1.8.1.2',
'ccmProductName' => '1.3.6.1.4.1.9.9.156.1.1.8.1.3',
'ccmProductCategory' => '1.3.6.1.4.1.9.9.156.1.1.8.1.4',
'ccmPhoneInfo' => '1.3.6.1.4.1.9.9.156.1.2',
'ccmPhoneTable' => '1.3.6.1.4.1.9.9.156.1.2.1',
'ccmPhoneEntry' => '1.3.6.1.4.1.9.9.156.1.2.1.1',
'ccmPhoneIndex' => '1.3.6.1.4.1.9.9.156.1.2.1.1.1',
'ccmPhonePhysicalAddress' => '1.3.6.1.4.1.9.9.156.1.2.1.1.2',
'ccmPhoneType' => '1.3.6.1.4.1.9.9.156.1.2.1.1.3',
'ccmPhoneDescription' => '1.3.6.1.4.1.9.9.156.1.2.1.1.4',
'ccmPhoneUserName' => '1.3.6.1.4.1.9.9.156.1.2.1.1.5',
'ccmPhoneIpAddress' => '1.3.6.1.4.1.9.9.156.1.2.1.1.6',
'ccmPhoneStatus' => '1.3.6.1.4.1.9.9.156.1.2.1.1.7',
'ccmPhoneTimeLastRegistered' => '1.3.6.1.4.1.9.9.156.1.2.1.1.8',
'ccmPhoneE911Location' => '1.3.6.1.4.1.9.9.156.1.2.1.1.9',
'ccmPhoneLoadID' => '1.3.6.1.4.1.9.9.156.1.2.1.1.10',
'ccmPhoneLastError' => '1.3.6.1.4.1.9.9.156.1.2.1.1.11',
'ccmPhoneTimeLastError' => '1.3.6.1.4.1.9.9.156.1.2.1.1.12',
'ccmPhoneDevicePoolIndex' => '1.3.6.1.4.1.9.9.156.1.2.1.1.13',
'ccmPhoneInetAddressType' => '1.3.6.1.4.1.9.9.156.1.2.1.1.14',
'ccmPhoneInetAddress' => '1.3.6.1.4.1.9.9.156.1.2.1.1.15',
'ccmPhoneStatusReason' => '1.3.6.1.4.1.9.9.156.1.2.1.1.16',
'ccmPhoneTimeLastStatusUpdt' => '1.3.6.1.4.1.9.9.156.1.2.1.1.17',
'ccmPhoneProductTypeIndex' => '1.3.6.1.4.1.9.9.156.1.2.1.1.18',
'ccmPhoneProtocol' => '1.3.6.1.4.1.9.9.156.1.2.1.1.19',
'ccmPhoneName' => '1.3.6.1.4.1.9.9.156.1.2.1.1.20',
'ccmPhoneInetAddressIPv4' => '1.3.6.1.4.1.9.9.156.1.2.1.1.21',
'ccmPhoneInetAddressIPv6' => '1.3.6.1.4.1.9.9.156.1.2.1.1.22',
'ccmPhoneIPv4Attribute' => '1.3.6.1.4.1.9.9.156.1.2.1.1.23',
'ccmPhoneIPv6Attribute' => '1.3.6.1.4.1.9.9.156.1.2.1.1.24',
'ccmPhoneActiveLoadID' => '1.3.6.1.4.1.9.9.156.1.2.1.1.25',
'ccmPhoneUnregReason' => '1.3.6.1.4.1.9.9.156.1.2.1.1.26',
'ccmPhoneRegFailReason' => '1.3.6.1.4.1.9.9.156.1.2.1.1.27',
'ccmPhoneExtensionTable' => '1.3.6.1.4.1.9.9.156.1.2.2',
'ccmPhoneExtensionEntry' => '1.3.6.1.4.1.9.9.156.1.2.2.1',
'ccmPhoneExtensionIndex' => '1.3.6.1.4.1.9.9.156.1.2.2.1.1',
'ccmPhoneExtension' => '1.3.6.1.4.1.9.9.156.1.2.2.1.2',
'ccmPhoneExtensionIpAddress' => '1.3.6.1.4.1.9.9.156.1.2.2.1.3',
'ccmPhoneExtensionMultiLines' => '1.3.6.1.4.1.9.9.156.1.2.2.1.4',
'ccmPhoneExtensionInetAddressType' => '1.3.6.1.4.1.9.9.156.1.2.2.1.5',
'ccmPhoneExtensionInetAddress' => '1.3.6.1.4.1.9.9.156.1.2.2.1.6',
'ccmPhoneFailedTable' => '1.3.6.1.4.1.9.9.156.1.2.3',
'ccmPhoneFailedEntry' => '1.3.6.1.4.1.9.9.156.1.2.3.1',
'ccmPhoneFailedIndex' => '1.3.6.1.4.1.9.9.156.1.2.3.1.1',
'ccmPhoneFailedTime' => '1.3.6.1.4.1.9.9.156.1.2.3.1.2',
'ccmPhoneFailedName' => '1.3.6.1.4.1.9.9.156.1.2.3.1.3',
'ccmPhoneFailedInetAddressType' => '1.3.6.1.4.1.9.9.156.1.2.3.1.4',
'ccmPhoneFailedInetAddress' => '1.3.6.1.4.1.9.9.156.1.2.3.1.5',
'ccmPhoneFailCauseCode' => '1.3.6.1.4.1.9.9.156.1.2.3.1.6',
'ccmPhoneFailedMacAddress' => '1.3.6.1.4.1.9.9.156.1.2.3.1.7',
'ccmPhoneFailedInetAddressIPv4' => '1.3.6.1.4.1.9.9.156.1.2.3.1.8',
'ccmPhoneFailedInetAddressIPv6' => '1.3.6.1.4.1.9.9.156.1.2.3.1.9',
'ccmPhoneFailedIPv4Attribute' => '1.3.6.1.4.1.9.9.156.1.2.3.1.10',
'ccmPhoneFailedIPv6Attribute' => '1.3.6.1.4.1.9.9.156.1.2.3.1.11',
'ccmPhoneFailedRegFailReason' => '1.3.6.1.4.1.9.9.156.1.2.3.1.12',
'ccmPhoneStatusUpdateTable' => '1.3.6.1.4.1.9.9.156.1.2.4',
'ccmPhoneStatusUpdateEntry' => '1.3.6.1.4.1.9.9.156.1.2.4.1',
'ccmPhoneStatusUpdateIndex' => '1.3.6.1.4.1.9.9.156.1.2.4.1.1',
'ccmPhoneStatusPhoneIndex' => '1.3.6.1.4.1.9.9.156.1.2.4.1.2',
'ccmPhoneStatusUpdateTime' => '1.3.6.1.4.1.9.9.156.1.2.4.1.3',
'ccmPhoneStatusUpdateType' => '1.3.6.1.4.1.9.9.156.1.2.4.1.4',
'ccmPhoneStatusUpdateReason' => '1.3.6.1.4.1.9.9.156.1.2.4.1.5',
'ccmPhoneStatusUnregReason' => '1.3.6.1.4.1.9.9.156.1.2.4.1.6',
'ccmPhoneStatusRegFailReason' => '1.3.6.1.4.1.9.9.156.1.2.4.1.7',
'ccmPhoneExtnTable' => '1.3.6.1.4.1.9.9.156.1.2.5',
'ccmPhoneExtnEntry' => '1.3.6.1.4.1.9.9.156.1.2.5.1',
'ccmPhoneExtnIndex' => '1.3.6.1.4.1.9.9.156.1.2.5.1.1',
'ccmPhoneExtn' => '1.3.6.1.4.1.9.9.156.1.2.5.1.2',
'ccmPhoneExtnMultiLines' => '1.3.6.1.4.1.9.9.156.1.2.5.1.3',
'ccmPhoneExtnInetAddressType' => '1.3.6.1.4.1.9.9.156.1.2.5.1.4',
'ccmPhoneExtnInetAddress' => '1.3.6.1.4.1.9.9.156.1.2.5.1.5',
'ccmPhoneExtnStatus' => '1.3.6.1.4.1.9.9.156.1.2.5.1.6',
'ccmGatewayInfo' => '1.3.6.1.4.1.9.9.156.1.3',
'ccmGatewayTable' => '1.3.6.1.4.1.9.9.156.1.3.1',
'ccmGatewayEntry' => '1.3.6.1.4.1.9.9.156.1.3.1.1',
'ccmGatewayIndex' => '1.3.6.1.4.1.9.9.156.1.3.1.1.1',
'ccmGatewayName' => '1.3.6.1.4.1.9.9.156.1.3.1.1.2',
'ccmGatewayType' => '1.3.6.1.4.1.9.9.156.1.3.1.1.3',
'ccmGatewayDescription' => '1.3.6.1.4.1.9.9.156.1.3.1.1.4',
'ccmGatewayStatus' => '1.3.6.1.4.1.9.9.156.1.3.1.1.5',
'ccmGatewayDevicePoolIndex' => '1.3.6.1.4.1.9.9.156.1.3.1.1.6',
'ccmGatewayInetAddressType' => '1.3.6.1.4.1.9.9.156.1.3.1.1.7',
'ccmGatewayInetAddress' => '1.3.6.1.4.1.9.9.156.1.3.1.1.8',
'ccmGatewayProductId' => '1.3.6.1.4.1.9.9.156.1.3.1.1.9',
'ccmGatewayStatusReason' => '1.3.6.1.4.1.9.9.156.1.3.1.1.10',
'ccmGatewayTimeLastStatusUpdt' => '1.3.6.1.4.1.9.9.156.1.3.1.1.11',
'ccmGatewayTimeLastRegistered' => '1.3.6.1.4.1.9.9.156.1.3.1.1.12',
'ccmGatewayDChannelStatus' => '1.3.6.1.4.1.9.9.156.1.3.1.1.13',
'ccmGatewayDChannelNumber' => '1.3.6.1.4.1.9.9.156.1.3.1.1.14',
'ccmGatewayProductTypeIndex' => '1.3.6.1.4.1.9.9.156.1.3.1.1.15',
'ccmGatewayUnregReason' => '1.3.6.1.4.1.9.9.156.1.3.1.1.16',
'ccmGatewayRegFailReason' => '1.3.6.1.4.1.9.9.156.1.3.1.1.17',
'ccmGatewayTrunkInfo' => '1.3.6.1.4.1.9.9.156.1.4',
'ccmGatewayTrunkTable' => '1.3.6.1.4.1.9.9.156.1.4.1',
'ccmGatewayTrunkEntry' => '1.3.6.1.4.1.9.9.156.1.4.1.1',
'ccmGatewayTrunkIndex' => '1.3.6.1.4.1.9.9.156.1.4.1.1.1',
'ccmGatewayTrunkType' => '1.3.6.1.4.1.9.9.156.1.4.1.1.2',
'ccmGatewayTrunkName' => '1.3.6.1.4.1.9.9.156.1.4.1.1.3',
'ccmTrunkGatewayIndex' => '1.3.6.1.4.1.9.9.156.1.4.1.1.4',
'ccmGatewayTrunkStatus' => '1.3.6.1.4.1.9.9.156.1.4.1.1.5',
'ccmGlobalInfo' => '1.3.6.1.4.1.9.9.156.1.5',
'ccmActivePhones' => '1.3.6.1.4.1.9.9.156.1.5.1',
'ccmInActivePhones' => '1.3.6.1.4.1.9.9.156.1.5.2',
'ccmActiveGateways' => '1.3.6.1.4.1.9.9.156.1.5.3',
'ccmInActiveGateways' => '1.3.6.1.4.1.9.9.156.1.5.4',
'ccmRegisteredPhones' => '1.3.6.1.4.1.9.9.156.1.5.5',
'ccmUnregisteredPhones' => '1.3.6.1.4.1.9.9.156.1.5.6',
'ccmRejectedPhones' => '1.3.6.1.4.1.9.9.156.1.5.7',
'ccmRegisteredGateways' => '1.3.6.1.4.1.9.9.156.1.5.8',
'ccmUnregisteredGateways' => '1.3.6.1.4.1.9.9.156.1.5.9',
'ccmRejectedGateways' => '1.3.6.1.4.1.9.9.156.1.5.10',
'ccmRegisteredMediaDevices' => '1.3.6.1.4.1.9.9.156.1.5.11',
'ccmUnregisteredMediaDevices' => '1.3.6.1.4.1.9.9.156.1.5.12',
'ccmRejectedMediaDevices' => '1.3.6.1.4.1.9.9.156.1.5.13',
'ccmRegisteredCTIDevices' => '1.3.6.1.4.1.9.9.156.1.5.14',
'ccmUnregisteredCTIDevices' => '1.3.6.1.4.1.9.9.156.1.5.15',
'ccmRejectedCTIDevices' => '1.3.6.1.4.1.9.9.156.1.5.16',
'ccmRegisteredVoiceMailDevices' => '1.3.6.1.4.1.9.9.156.1.5.17',
'ccmUnregisteredVoiceMailDevices' => '1.3.6.1.4.1.9.9.156.1.5.18',
'ccmRejectedVoiceMailDevices' => '1.3.6.1.4.1.9.9.156.1.5.19',
'ccmCallManagerStartTime' => '1.3.6.1.4.1.9.9.156.1.5.20',
'ccmPhoneTableStateId' => '1.3.6.1.4.1.9.9.156.1.5.21',
'ccmPhoneExtensionTableStateId' => '1.3.6.1.4.1.9.9.156.1.5.22',
'ccmPhoneStatusUpdateTableStateId' => '1.3.6.1.4.1.9.9.156.1.5.23',
'ccmGatewayTableStateId' => '1.3.6.1.4.1.9.9.156.1.5.24',
'ccmCTIDeviceTableStateId' => '1.3.6.1.4.1.9.9.156.1.5.25',
'ccmCTIDeviceDirNumTableStateId' => '1.3.6.1.4.1.9.9.156.1.5.26',
'ccmPhStatUpdtTblLastAddedIndex' => '1.3.6.1.4.1.9.9.156.1.5.27',
'ccmPhFailedTblLastAddedIndex' => '1.3.6.1.4.1.9.9.156.1.5.28',
'ccmSystemVersion' => '1.3.6.1.4.1.9.9.156.1.5.29',
'ccmInstallationId' => '1.3.6.1.4.1.9.9.156.1.5.30',
'ccmPartiallyRegisteredPhones' => '1.3.6.1.4.1.9.9.156.1.5.31',
'ccmH323TableEntries' => '1.3.6.1.4.1.9.9.156.1.5.32',
'ccmSIPTableEntries' => '1.3.6.1.4.1.9.9.156.1.5.33',
'ccmMediaDeviceInfo' => '1.3.6.1.4.1.9.9.156.1.6',
'ccmMediaDeviceTable' => '1.3.6.1.4.1.9.9.156.1.6.1',
'ccmMediaDeviceEntry' => '1.3.6.1.4.1.9.9.156.1.6.1.1',
'ccmMediaDeviceIndex' => '1.3.6.1.4.1.9.9.156.1.6.1.1.1',
'ccmMediaDeviceName' => '1.3.6.1.4.1.9.9.156.1.6.1.1.2',
'ccmMediaDeviceType' => '1.3.6.1.4.1.9.9.156.1.6.1.1.3',
'ccmMediaDeviceDescription' => '1.3.6.1.4.1.9.9.156.1.6.1.1.4',
'ccmMediaDeviceStatus' => '1.3.6.1.4.1.9.9.156.1.6.1.1.5',
'ccmMediaDeviceDevicePoolIndex' => '1.3.6.1.4.1.9.9.156.1.6.1.1.6',
'ccmMediaDeviceInetAddressType' => '1.3.6.1.4.1.9.9.156.1.6.1.1.7',
'ccmMediaDeviceInetAddress' => '1.3.6.1.4.1.9.9.156.1.6.1.1.8',
'ccmMediaDeviceStatusReason' => '1.3.6.1.4.1.9.9.156.1.6.1.1.9',
'ccmMediaDeviceTimeLastStatusUpdt' => '1.3.6.1.4.1.9.9.156.1.6.1.1.10',
'ccmMediaDeviceTimeLastRegistered' => '1.3.6.1.4.1.9.9.156.1.6.1.1.11',
'ccmMediaDeviceProductTypeIndex' => '1.3.6.1.4.1.9.9.156.1.6.1.1.12',
'ccmMediaDeviceInetAddressIPv4' => '1.3.6.1.4.1.9.9.156.1.6.1.1.13',
'ccmMediaDeviceInetAddressIPv6' => '1.3.6.1.4.1.9.9.156.1.6.1.1.14',
'ccmMediaDeviceUnregReason' => '1.3.6.1.4.1.9.9.156.1.6.1.1.15',
'ccmMediaDeviceRegFailReason' => '1.3.6.1.4.1.9.9.156.1.6.1.1.16',
'ccmGatekeeperInfo' => '1.3.6.1.4.1.9.9.156.1.7',
'ccmGatekeeperTable' => '1.3.6.1.4.1.9.9.156.1.7.1',
'ccmGatekeeperEntry' => '1.3.6.1.4.1.9.9.156.1.7.1.1',
'ccmGatekeeperIndex' => '1.3.6.1.4.1.9.9.156.1.7.1.1.1',
'ccmGatekeeperName' => '1.3.6.1.4.1.9.9.156.1.7.1.1.2',
'ccmGatekeeperType' => '1.3.6.1.4.1.9.9.156.1.7.1.1.3',
'ccmGatekeeperDescription' => '1.3.6.1.4.1.9.9.156.1.7.1.1.4',
'ccmGatekeeperStatus' => '1.3.6.1.4.1.9.9.156.1.7.1.1.5',
'ccmGatekeeperDevicePoolIndex' => '1.3.6.1.4.1.9.9.156.1.7.1.1.6',
'ccmGatekeeperInetAddressType' => '1.3.6.1.4.1.9.9.156.1.7.1.1.7',
'ccmGatekeeperInetAddress' => '1.3.6.1.4.1.9.9.156.1.7.1.1.8',
'ccmCTIDeviceInfo' => '1.3.6.1.4.1.9.9.156.1.8',
'ccmCTIDeviceTable' => '1.3.6.1.4.1.9.9.156.1.8.1',
'ccmCTIDeviceEntry' => '1.3.6.1.4.1.9.9.156.1.8.1.1',
'ccmCTIDeviceIndex' => '1.3.6.1.4.1.9.9.156.1.8.1.1.1',
'ccmCTIDeviceName' => '1.3.6.1.4.1.9.9.156.1.8.1.1.2',
'ccmCTIDeviceType' => '1.3.6.1.4.1.9.9.156.1.8.1.1.3',
'ccmCTIDeviceDescription' => '1.3.6.1.4.1.9.9.156.1.8.1.1.4',
'ccmCTIDeviceStatus' => '1.3.6.1.4.1.9.9.156.1.8.1.1.5',
'ccmCTIDevicePoolIndex' => '1.3.6.1.4.1.9.9.156.1.8.1.1.6',
'ccmCTIDeviceInetAddressType' => '1.3.6.1.4.1.9.9.156.1.8.1.1.7',
'ccmCTIDeviceInetAddress' => '1.3.6.1.4.1.9.9.156.1.8.1.1.8',
'ccmCTIDeviceAppInfo' => '1.3.6.1.4.1.9.9.156.1.8.1.1.9',
'ccmCTIDeviceStatusReason' => '1.3.6.1.4.1.9.9.156.1.8.1.1.10',
'ccmCTIDeviceTimeLastStatusUpdt' => '1.3.6.1.4.1.9.9.156.1.8.1.1.11',
'ccmCTIDeviceTimeLastRegistered' => '1.3.6.1.4.1.9.9.156.1.8.1.1.12',
'ccmCTIDeviceProductTypeIndex' => '1.3.6.1.4.1.9.9.156.1.8.1.1.13',
'ccmCTIDeviceInetAddressIPv4' => '1.3.6.1.4.1.9.9.156.1.8.1.1.14',
'ccmCTIDeviceInetAddressIPv6' => '1.3.6.1.4.1.9.9.156.1.8.1.1.15',
'ccmCTIDeviceUnregReason' => '1.3.6.1.4.1.9.9.156.1.8.1.1.16',
'ccmCTIDeviceRegFailReason' => '1.3.6.1.4.1.9.9.156.1.8.1.1.17',
'ccmCTIDeviceDirNumTable' => '1.3.6.1.4.1.9.9.156.1.8.2',
'ccmCTIDeviceDirNumEntry' => '1.3.6.1.4.1.9.9.156.1.8.2.1',
'ccmCTIDeviceDirNumIndex' => '1.3.6.1.4.1.9.9.156.1.8.2.1.1',
'ccmCTIDeviceDirNum' => '1.3.6.1.4.1.9.9.156.1.8.2.1.2',
'ccmAlarmConfigInfo' => '1.3.6.1.4.1.9.9.156.1.9',
'ccmCallManagerAlarmEnable' => '1.3.6.1.4.1.9.9.156.1.9.1',
'ccmPhoneFailedAlarmInterval' => '1.3.6.1.4.1.9.9.156.1.9.2',
'ccmPhoneFailedStorePeriod' => '1.3.6.1.4.1.9.9.156.1.9.3',
'ccmPhoneStatusUpdateAlarmInterv' => '1.3.6.1.4.1.9.9.156.1.9.4',
'ccmPhoneStatusUpdateStorePeriod' => '1.3.6.1.4.1.9.9.156.1.9.5',
'ccmGatewayAlarmEnable' => '1.3.6.1.4.1.9.9.156.1.9.6',
'ccmMaliciousCallAlarmEnable' => '1.3.6.1.4.1.9.9.156.1.9.7',
'ccmNotificationsInfo' => '1.3.6.1.4.1.9.9.156.1.10',
'ccmAlarmSeverity' => '1.3.6.1.4.1.9.9.156.1.10.1',
'ccmFailCauseCode' => '1.3.6.1.4.1.9.9.156.1.10.2',
'ccmPhoneFailures' => '1.3.6.1.4.1.9.9.156.1.10.3',
'ccmPhoneUpdates' => '1.3.6.1.4.1.9.9.156.1.10.4',
'ccmGatewayFailCauseCode' => '1.3.6.1.4.1.9.9.156.1.10.5',
'ccmMediaResourceType' => '1.3.6.1.4.1.9.9.156.1.10.6',
'ccmMediaResourceListName' => '1.3.6.1.4.1.9.9.156.1.10.7',
'ccmRouteListName' => '1.3.6.1.4.1.9.9.156.1.10.8',
'ccmGatewayPhysIfIndex' => '1.3.6.1.4.1.9.9.156.1.10.9',
'ccmGatewayPhysIfL2Status' => '1.3.6.1.4.1.9.9.156.1.10.10',
'ccmMaliCallCalledPartyName' => '1.3.6.1.4.1.9.9.156.1.10.11',
'ccmMaliCallCalledPartyNumber' => '1.3.6.1.4.1.9.9.156.1.10.12',
'ccmMaliCallCalledDeviceName' => '1.3.6.1.4.1.9.9.156.1.10.13',
'ccmMaliCallCallingPartyName' => '1.3.6.1.4.1.9.9.156.1.10.14',
'ccmMaliCallCallingPartyNumber' => '1.3.6.1.4.1.9.9.156.1.10.15',
'ccmMaliCallCallingDeviceName' => '1.3.6.1.4.1.9.9.156.1.10.16',
'ccmMaliCallTime' => '1.3.6.1.4.1.9.9.156.1.10.17',
'ccmQualityRprtSourceDevName' => '1.3.6.1.4.1.9.9.156.1.10.18',
'ccmQualityRprtClusterId' => '1.3.6.1.4.1.9.9.156.1.10.19',
'ccmQualityRprtCategory' => '1.3.6.1.4.1.9.9.156.1.10.20',
'ccmQualityRprtReasonCode' => '1.3.6.1.4.1.9.9.156.1.10.21',
'ccmQualityRprtTime' => '1.3.6.1.4.1.9.9.156.1.10.22',
'ccmTLSDevName' => '1.3.6.1.4.1.9.9.156.1.10.23',
'ccmTLSDevInetAddressType' => '1.3.6.1.4.1.9.9.156.1.10.24',
'ccmTLSDevInetAddress' => '1.3.6.1.4.1.9.9.156.1.10.25',
'ccmTLSConnFailTime' => '1.3.6.1.4.1.9.9.156.1.10.26',
'ccmTLSConnectionFailReasonCode' => '1.3.6.1.4.1.9.9.156.1.10.27',
'ccmGatewayRegFailCauseCode' => '1.3.6.1.4.1.9.9.156.1.10.28',
'ccmH323DeviceInfo' => '1.3.6.1.4.1.9.9.156.1.11',
'ccmH323DeviceTable' => '1.3.6.1.4.1.9.9.156.1.11.1',
'ccmH323DeviceEntry' => '1.3.6.1.4.1.9.9.156.1.11.1.1',
'ccmH323DevIndex' => '1.3.6.1.4.1.9.9.156.1.11.1.1.1',
'ccmH323DevName' => '1.3.6.1.4.1.9.9.156.1.11.1.1.2',
'ccmH323DevProductId' => '1.3.6.1.4.1.9.9.156.1.11.1.1.3',
'ccmH323DevDescription' => '1.3.6.1.4.1.9.9.156.1.11.1.1.4',
'ccmH323DevInetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.5',
'ccmH323DevInetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.6',
'ccmH323DevCnfgGKInetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.7',
'ccmH323DevCnfgGKInetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.8',
'ccmH323DevAltGK1InetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.9',
'ccmH323DevAltGK1InetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.10',
'ccmH323DevAltGK2InetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.11',
'ccmH323DevAltGK2InetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.12',
'ccmH323DevAltGK3InetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.13',
'ccmH323DevAltGK3InetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.14',
'ccmH323DevAltGK4InetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.15',
'ccmH323DevAltGK4InetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.16',
'ccmH323DevAltGK5InetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.17',
'ccmH323DevAltGK5InetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.18',
'ccmH323DevActGKInetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.19',
'ccmH323DevActGKInetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.20',
'ccmH323DevStatus' => '1.3.6.1.4.1.9.9.156.1.11.1.1.21',
'ccmH323DevStatusReason' => '1.3.6.1.4.1.9.9.156.1.11.1.1.22',
'ccmH323DevTimeLastStatusUpdt' => '1.3.6.1.4.1.9.9.156.1.11.1.1.23',
'ccmH323DevTimeLastRegistered' => '1.3.6.1.4.1.9.9.156.1.11.1.1.24',
'ccmH323DevRmtCM1InetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.25',
'ccmH323DevRmtCM1InetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.26',
'ccmH323DevRmtCM2InetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.27',
'ccmH323DevRmtCM2InetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.28',
'ccmH323DevRmtCM3InetAddressType' => '1.3.6.1.4.1.9.9.156.1.11.1.1.29',
'ccmH323DevRmtCM3InetAddress' => '1.3.6.1.4.1.9.9.156.1.11.1.1.30',
'ccmH323DevProductTypeIndex' => '1.3.6.1.4.1.9.9.156.1.11.1.1.31',
'ccmH323DevUnregReason' => '1.3.6.1.4.1.9.9.156.1.11.1.1.32',
'ccmH323DevRegFailReason' => '1.3.6.1.4.1.9.9.156.1.11.1.1.33',
'ccmVoiceMailDeviceInfo' => '1.3.6.1.4.1.9.9.156.1.12',
'ccmVoiceMailDeviceTable' => '1.3.6.1.4.1.9.9.156.1.12.1',
'ccmVoiceMailDeviceEntry' => '1.3.6.1.4.1.9.9.156.1.12.1.1',
'ccmVMailDevIndex' => '1.3.6.1.4.1.9.9.156.1.12.1.1.1',
'ccmVMailDevName' => '1.3.6.1.4.1.9.9.156.1.12.1.1.2',
'ccmVMailDevProductId' => '1.3.6.1.4.1.9.9.156.1.12.1.1.3',
'ccmVMailDevDescription' => '1.3.6.1.4.1.9.9.156.1.12.1.1.4',
'ccmVMailDevStatus' => '1.3.6.1.4.1.9.9.156.1.12.1.1.5',
'ccmVMailDevInetAddressType' => '1.3.6.1.4.1.9.9.156.1.12.1.1.6',
'ccmVMailDevInetAddress' => '1.3.6.1.4.1.9.9.156.1.12.1.1.7',
'ccmVMailDevStatusReason' => '1.3.6.1.4.1.9.9.156.1.12.1.1.8',
'ccmVMailDevTimeLastStatusUpdt' => '1.3.6.1.4.1.9.9.156.1.12.1.1.9',
'ccmVMailDevTimeLastRegistered' => '1.3.6.1.4.1.9.9.156.1.12.1.1.10',
'ccmVMailDevProductTypeIndex' => '1.3.6.1.4.1.9.9.156.1.12.1.1.11',
'ccmVMailDevUnregReason' => '1.3.6.1.4.1.9.9.156.1.12.1.1.12',
'ccmVMailDevRegFailReason' => '1.3.6.1.4.1.9.9.156.1.12.1.1.13',
'ccmVoiceMailDeviceDirNumTable' => '1.3.6.1.4.1.9.9.156.1.12.2',
'ccmVoiceMailDeviceDirNumEntry' => '1.3.6.1.4.1.9.9.156.1.12.2.1',
'ccmVMailDevDirNumIndex' => '1.3.6.1.4.1.9.9.156.1.12.2.1.1',
'ccmVMailDevDirNum' => '1.3.6.1.4.1.9.9.156.1.12.2.1.2',
'ccmQualityReportAlarmConfigInfo' => '1.3.6.1.4.1.9.9.156.1.13',
'ccmQualityReportAlarmEnable' => '1.3.6.1.4.1.9.9.156.1.13.1',
'ccmSIPDeviceInfo' => '1.3.6.1.4.1.9.9.156.1.14',
'ccmSIPDeviceTable' => '1.3.6.1.4.1.9.9.156.1.14.1',
'ccmSIPDeviceEntry' => '1.3.6.1.4.1.9.9.156.1.14.1.1',
'ccmSIPDevIndex' => '1.3.6.1.4.1.9.9.156.1.14.1.1.1',
'ccmSIPDevName' => '1.3.6.1.4.1.9.9.156.1.14.1.1.2',
'ccmSIPDevProductTypeIndex' => '1.3.6.1.4.1.9.9.156.1.14.1.1.3',
'ccmSIPDevDescription' => '1.3.6.1.4.1.9.9.156.1.14.1.1.4',
'ccmSIPDevInetAddressType' => '1.3.6.1.4.1.9.9.156.1.14.1.1.5',
'ccmSIPDevInetAddress' => '1.3.6.1.4.1.9.9.156.1.14.1.1.6',
'ccmSIPInTransportProtocolType' => '1.3.6.1.4.1.9.9.156.1.14.1.1.7',
'ccmSIPInPortNumber' => '1.3.6.1.4.1.9.9.156.1.14.1.1.8',
'ccmSIPOutTransportProtocolType' => '1.3.6.1.4.1.9.9.156.1.14.1.1.9',
'ccmSIPOutPortNumber' => '1.3.6.1.4.1.9.9.156.1.14.1.1.10',
'ccmSIPDevInetAddressIPv4' => '1.3.6.1.4.1.9.9.156.1.14.1.1.11',
'ccmSIPDevInetAddressIPv6' => '1.3.6.1.4.1.9.9.156.1.14.1.1.12',
'ccmMIBNotificationPrefix' => '1.3.6.1.4.1.9.9.156.2',
'ccmMIBNotifications' => '1.3.6.1.4.1.9.9.156.2',
'ciscoCcmMIBConformance' => '1.3.6.1.4.1.9.9.156.3',
'ciscoCcmMIBCompliances' => '1.3.6.1.4.1.9.9.156.3.1',
'ciscoCcmMIBCompliance' => '1.3.6.1.4.1.9.9.156.3.1.1',
'ciscoCcmMIBComplianceRev1' => '1.3.6.1.4.1.9.9.156.3.1.2',
'ciscoCcmMIBComplianceRev2' => '1.3.6.1.4.1.9.9.156.3.1.3',
'ciscoCcmMIBComplianceRev3' => '1.3.6.1.4.1.9.9.156.3.1.4',
'ciscoCcmMIBComplianceRev4' => '1.3.6.1.4.1.9.9.156.3.1.5',
'ciscoCcmMIBComplianceRev5' => '1.3.6.1.4.1.9.9.156.3.1.6',
'ciscoCcmMIBComplianceRev6' => '1.3.6.1.4.1.9.9.156.3.1.7',
'ciscoCcmMIBComplianceRev7' => '1.3.6.1.4.1.9.9.156.3.1.8',
'ciscoCcmMIBGroups' => '1.3.6.1.4.1.9.9.156.3.2',
'ccmInfoGroup' => '1.3.6.1.4.1.9.9.156.3.2.1',
'ccmPhoneInfoGroup' => '1.3.6.1.4.1.9.9.156.3.2.2',
'ccmGatewayInfoGroup' => '1.3.6.1.4.1.9.9.156.3.2.3',
'ccmInfoGroupRev1' => '1.3.6.1.4.1.9.9.156.3.2.4',
'ccmPhoneInfoGroupRev1' => '1.3.6.1.4.1.9.9.156.3.2.5',
'ccmGatewayInfoGroupRev1' => '1.3.6.1.4.1.9.9.156.3.2.6',
'ccmMediaDeviceInfoGroup' => '1.3.6.1.4.1.9.9.156.3.2.7',
'ccmGatekeeperInfoGroup' => '1.3.6.1.4.1.9.9.156.3.2.8',
'ccmCTIDeviceInfoGroup' => '1.3.6.1.4.1.9.9.156.3.2.9',
'ccmNotificationsInfoGroup' => '1.3.6.1.4.1.9.9.156.3.2.10',
'ccmNotificationsGroup' => '1.3.6.1.4.1.9.9.156.3.2.11',
'ccmInfoGroupRev2' => '1.3.6.1.4.1.9.9.156.3.2.12',
'ccmPhoneInfoGroupRev2' => '1.3.6.1.4.1.9.9.156.3.2.13',
'ccmGatewayInfoGroupRev2' => '1.3.6.1.4.1.9.9.156.3.2.14',
'ccmMediaDeviceInfoGroupRev1' => '1.3.6.1.4.1.9.9.156.3.2.15',
'ccmCTIDeviceInfoGroupRev1' => '1.3.6.1.4.1.9.9.156.3.2.16',
'ccmH323DeviceInfoGroup' => '1.3.6.1.4.1.9.9.156.3.2.17',
'ccmVoiceMailDeviceInfoGroup' => '1.3.6.1.4.1.9.9.156.3.2.18',
'ccmNotificationsInfoGroupRev1' => '1.3.6.1.4.1.9.9.156.3.2.19',
'ccmInfoGroupRev3' => '1.3.6.1.4.1.9.9.156.3.2.20',
'ccmNotificationsInfoGroupRev2' => '1.3.6.1.4.1.9.9.156.3.2.21',
'ccmNotificationsGroupRev1' => '1.3.6.1.4.1.9.9.156.3.2.22',
'ccmSIPDeviceInfoGroup' => '1.3.6.1.4.1.9.9.156.3.2.23',
'ccmPhoneInfoGroupRev3' => '1.3.6.1.4.1.9.9.156.3.2.24',
'ccmGatewayInfoGroupRev3' => '1.3.6.1.4.1.9.9.156.3.2.25',
'ccmMediaDeviceInfoGroupRev2' => '1.3.6.1.4.1.9.9.156.3.2.26',
'ccmCTIDeviceInfoGroupRev2' => '1.3.6.1.4.1.9.9.156.3.2.27',
'ccmH323DeviceInfoGroupRev1' => '1.3.6.1.4.1.9.9.156.3.2.28',
'ccmVoiceMailDeviceInfoGroupRev1' => '1.3.6.1.4.1.9.9.156.3.2.29',
'ccmPhoneInfoGroupRev4' => '1.3.6.1.4.1.9.9.156.3.2.30',
'ccmSIPDeviceInfoGroupRev1' => '1.3.6.1.4.1.9.9.156.3.2.31',
'ccmNotificationsInfoGroupRev3' => '1.3.6.1.4.1.9.9.156.3.2.32',
'ccmNotificationsGroupRev2' => '1.3.6.1.4.1.9.9.156.3.2.33',
'ccmInfoGroupRev4' => '1.3.6.1.4.1.9.9.156.3.2.34',
'ccmPhoneInfoGroupRev5' => '1.3.6.1.4.1.9.9.156.3.2.35',
'ccmMediaDeviceInfoGroupRev3' => '1.3.6.1.4.1.9.9.156.3.2.36',
'ccmSIPDeviceInfoGroupRev2' => '1.3.6.1.4.1.9.9.156.3.2.37',
'ccmNotificationsInfoGroupRev4' => '1.3.6.1.4.1.9.9.156.3.2.38',
'ccmH323DeviceInfoGroupRev2' => '1.3.6.1.4.1.9.9.156.3.2.39',
'ccmCTIDeviceInfoGroupRev3' => '1.3.6.1.4.1.9.9.156.3.2.40',
'ccmPhoneInfoGroupRev6' => '1.3.6.1.4.1.9.9.156.3.2.41',
'ccmNotificationsInfoGroupRev5' => '1.3.6.1.4.1.9.9.156.3.2.42',
'ccmGatewayInfoGroupRev4' => '1.3.6.1.4.1.9.9.156.3.2.43',
'ccmMediaDeviceInfoGroupRev4' => '1.3.6.1.4.1.9.9.156.3.2.44',
'ccmCTIDeviceInfoGroupRev4' => '1.3.6.1.4.1.9.9.156.3.2.45',
'ccmH323DeviceInfoGroupRev3' => '1.3.6.1.4.1.9.9.156.3.2.46',
'ccmVoiceMailDeviceInfoGroupRev2' => '1.3.6.1.4.1.9.9.156.3.2.47',
'ccmNotificationsGroupRev3' => '1.3.6.1.4.1.9.9.156.3.2.48',
};
1;
__END__

View file

@ -0,0 +1,24 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::CISCOCONFIGMANMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'CISCO-CONFIG-MAN-MIB'} = {
url => '',
name => 'CISCO-CONFIG-MAN-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'CISCO-CONFIG-MAN-MIB'} = {
'ciscoConfigManMIBObjects' => '1.3.6.1.4.1.9.9.43.1',
'ccmHistory' => '1.3.6.1.4.1.9.9.43.1.1',
'ccmHistoryRunningLastChanged' => '1.3.6.1.4.1.9.9.43.1.1.1.0',
'ccmHistoryRunningLastSaved' => '1.3.6.1.4.1.9.9.43.1.1.2.0',
'ccmHistoryStartupLastChanged' => '1.3.6.1.4.1.9.9.43.1.1.3.0',
'ccmHistoryMaxEventEntries' => '1.3.6.1.4.1.9.9.43.1.1.4.0',
'ccmHistoryEventEntriesBumped' => '1.3.6.1.4.1.9.9.43.1.1.5.0',
'ccmCLIHistory' => '1.3.6.1.4.1.9.9.43.1.2',
'ccmCLICfg' => '1.3.6.1.4.1.9.9.43.1.3',
'ccmCTIDObjects' => '1.3.6.1.4.1.9.9.43.1.4',
};
1;
__END__

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