Skip to content
Hadoop, Docker, Kafka, Elasticsearch, RabbitMQ, Redis, HBase, Solr, Cassandra, ZooKeeper, HDFS, Yarn, Hive, Presto, Drill, Impala, Consul, Spark, Ambari, Hortonworks, Cloudera, MapR, Neo4j, Jenkins, Travis CI, Git, MySQL, Linux, DNS, Whois, SSL Certs, Yum Security Updates, Kubernetes, Mesos, Riak, MongoDB, Memcached, Couchbase, CouchDB. Products…
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bash-tools @ c944f26 updated bash-tools Mar 19, 2019
dev moved dev/check_hiveserver2_beeline.sh to check_hiveserver2_beeline.sh Aug 3, 2018
haproxy-configs @ a1366c8
lib @ e7e27f9 updated lib Mar 18, 2019
more stripped trailing whitespace Aug 16, 2017
older updated older/check_svn.py Feb 6, 2019
pylib @ 0d0dff9 updated pylib Mar 18, 2019
setup updated deb-packages-perl.txt rpm-packages-optional.txt Mar 20, 2019
tests updated tests/test_travis.sh Mar 19, 2019
.gitignore updated .gitignore Sep 30, 2018
.gitmodules
.pylintrc added exclusion of _socketobject to avoid bogus no-member pylint error Sep 12, 2017
.travis.yml updated .travis.yml Feb 21, 2019
LICENSE updated github repo references Nov 8, 2015
Makefile
Makefile.PL updated github repo references Nov 8, 2015
README.md Update README.md Mar 19, 2019
adapter_check_mk.py fixed AdapterCSV references Feb 6, 2019
adapter_csv.py updated adapter_csv.py Feb 13, 2019
adapter_geneos.py updated adapter_geneos.py Jan 2, 2019
check_alluxio.py updated tested versions Jun 16, 2016
check_alluxio_dead_workers.py update check_alluxio_dead_workers.py Oct 27, 2017
check_alluxio_master.py
check_alluxio_master_version.py
check_alluxio_running_workers.py updated to align with newer check_tachyon_running_workers.py base Oct 27, 2017
check_alluxio_version.py
check_alluxio_worker.py added check_alluxio_master.py, check_alluxio_worker.py May 9, 2016
check_alluxio_worker_heartbeat.py
check_alluxio_worker_version.py added check_alluxio_worker_version.py Jun 2, 2016
check_ambari_cluster_alerts_host_summary.pl updated tested on versions Oct 10, 2017
check_ambari_cluster_alerts_summary.pl updated tested on versions Oct 10, 2017
check_ambari_cluster_hdfs_rack_resilience.py
check_ambari_cluster_health_report.pl updated tested on versions Oct 10, 2017
check_ambari_cluster_kerberized.pl
check_ambari_cluster_service_config_compatible.pl
check_ambari_cluster_total_hosts.pl updated tested on versions Oct 10, 2017
check_ambari_cluster_version.pl updated tested on versions Oct 10, 2017
check_ambari_config_stale.pl updated tested on versions Oct 10, 2017
check_ambari_nodes.pl updated tested on versions Oct 10, 2017
check_ambari_services.pl updated tested on versions Oct 10, 2017
check_apache_drill_cluster_mismatched_versions.py updated check_apache_drill_cluster_mismatched_versions.py Jan 15, 2019
check_apache_drill_cluster_node.py updated check_apache_drill_cluster_node.py Jan 15, 2019
check_apache_drill_cluster_nodes.py
check_apache_drill_cluster_nodes_offline.py updated check_apache_drill_cluster_nodes_offline.py Jan 15, 2019
check_apache_drill_config.py updated check_apache_drill_config.py Jan 15, 2019
check_apache_drill_encryption_enabled.py
check_apache_drill_metrics.pl updated check_apache_drill_metrics.pl Jan 15, 2019
check_apache_drill_sqlline.sh updated check_apache_drill_sqlline.sh Sep 27, 2018
check_apache_drill_status.py updated check_apache_drill_status.py Jan 15, 2019
check_apache_drill_status2.py
check_apache_drill_storage_plugin.py
check_apache_drill_version.py
check_aql_sms_credits.pl
check_atlas_entity.py
check_atlas_status.py
check_atlas_version.py updated check_atlas_version.py Oct 4, 2018
check_attivio_aie_ingest_session_count.py
check_attivio_aie_license_expiry.py
check_attivio_aie_metrics.py updated check_attivio_aie_metrics.py Dec 8, 2016
check_attivio_aie_system_health.py updated check_attivio_aie_system_health.py Dec 7, 2016
check_attivio_aie_version.py
check_aws_s3_file.pl
check_blue_talon_masking_functions.py
check_blue_talon_policies.py updated check_blue_talon_policies.py Dec 22, 2016
check_blue_talon_policy_deployment.py updated check_blue_talon_policy_deployment.py Dec 22, 2016
check_blue_talon_resource_domains.py updated check_blue_talon_resource_domains.py Dec 22, 2016
check_blue_talon_resources.py updated check_blue_talon_resources.py Dec 22, 2016
check_blue_talon_rules.py
check_blue_talon_user_domains.py updated check_blue_talon_user_domains.py Dec 22, 2016
check_blue_talon_version.py
check_cassandra_balance.pl
check_cassandra_heap.pl updated test versions Sep 27, 2017
check_cassandra_metrics.pl
check_cassandra_netstats.pl
check_cassandra_nodes.pl
check_cassandra_space.pl
check_cassandra_tpstats.pl
check_cassandra_version_nodetool.py updated test versions Sep 27, 2017
check_cloudera_manager.pl
check_cloudera_manager_cluster_version.pl updated Cloudera Manager checks to tested on version 5.12.0 Dec 26, 2017
check_cloudera_manager_config_stale.pl updated Cloudera Manager checks to tested on version 5.12.0 Dec 26, 2017
check_cloudera_manager_config_validation.pl
check_cloudera_manager_health.pl
check_cloudera_manager_license.pl updated Cloudera Manager checks to tested on version 5.12.0 Dec 26, 2017
check_cloudera_manager_metrics.pl
check_cloudera_manager_status.pl updated Cloudera Manager checks to tested on version 5.12.0 Dec 26, 2017
check_cloudera_manager_version.pl updated Cloudera Manager checks to tested on version 5.12.0 Dec 26, 2017
check_cluster_perfdata.pl
check_cluster_version.pl updated github header urls to be https Nov 26, 2015
check_consul_key.py updated to tested on Consul 1.4 Dec 27, 2018
check_consul_leader_elected.py
check_consul_peer_count.py updated to tested on Consul 1.4 Dec 27, 2018
check_consul_service_leader_elected.py
check_consul_version.py
check_consul_write.py
check_couchbase_key.pl added check_couchbase_key.pl Dec 30, 2013
check_couchbase_write.pl added check_couchbase_write.pl Dec 30, 2013
check_couchbase_write_replication.pl
check_couchdb_database_compaction_running.py collapsed code by subclassing CheckCouchDBDatabaseStats Nov 4, 2017
check_couchdb_database_data_size.py update check_couchdb_database_data_size.py Nov 6, 2017
check_couchdb_database_doc_count.py
check_couchdb_database_doc_deleted_count.py added check_couchdb_database_doc_deleted_count.py Nov 4, 2017
check_couchdb_database_exists.py
check_couchdb_database_stats.py updated check_couchdb_database_stats.py Oct 4, 2018
check_couchdb_status.py updated tested versions Oct 29, 2017
check_couchdb_version.py
check_datameer_active_jobs.pl updated github header urls to be https Nov 26, 2015
check_datameer_job_details.pl
check_datameer_job_status.pl updated github header urls to be https Nov 26, 2015
check_datameer_job_volume.pl updated github header urls to be https Nov 26, 2015
check_datameer_job_volume_increase.pl
check_datameer_license.pl
check_datameer_license_volume.pl
check_datameer_stats.pl
check_datameer_version.pl
check_datastax_opscenter_cassandra_alerts.pl updated github header urls to be https Nov 26, 2015
check_datastax_opscenter_cassandra_backups.pl updated github header urls to be https Nov 26, 2015
check_datastax_opscenter_cassandra_bestpractice.pl updated check_datastax_opscenter_cassandra_bestpractice.pl Mar 21, 2016
check_datastax_opscenter_cassandra_metrics.pl
check_datastax_opscenter_cassandra_nodes.pl updated github header urls to be https Nov 26, 2015
check_datastax_opscenter_cassandra_replication.pl
check_datastax_opscenter_cassandra_space.pl
check_datastax_opscenter_hadoop_status.pl
check_dhcpd_leases.py switched regex to raw string and iterated dict directly without .keys() Aug 16, 2017
check_disk_write.pl updated check_disk_write.pl Jun 13, 2018
check_dns.pl added note on custom TLDs to description as requested in #177 Dec 2, 2017
check_docker_api_ping.py
check_docker_container_status.py
check_docker_containers.py
check_docker_image.py updated check_docker_image.py Mar 7, 2018
check_docker_images.py added check_docker_images.py Mar 7, 2018
check_docker_networks.py
check_docker_swarm_enabled.py added check_docker_swarm_enabled.py, check_docker_swarm_error.py, che… Mar 7, 2018
check_docker_swarm_error.py added check_docker_swarm_enabled.py, check_docker_swarm_error.py, che… Mar 7, 2018
check_docker_swarm_is_manager.py added check_docker_swarm_enabled.py, check_docker_swarm_error.py, che… Mar 7, 2018
check_docker_swarm_node_active.py added check_docker_swarm_enabled.py, check_docker_swarm_error.py, che… Mar 7, 2018
check_docker_swarm_nodes.py
check_docker_swarm_service_status.py renamed check_docker_service_status.py to check_docker_swarm_service_… Mar 9, 2018
check_docker_swarm_services.py
check_docker_swarm_version.py updated check_docker_swarm_version.py Mar 6, 2018
check_docker_version.py
check_docker_volumes.py added check_docker_volumes.py Mar 7, 2018
check_dockerhub_repo_build_status.py updated check_dockerhub_repo_build_status.py Sep 5, 2017
check_elasticsearch.pl updated tested versions Feb 23, 2019
check_elasticsearch_cluster_disk_balance.pl updated tested versions Feb 23, 2019
check_elasticsearch_cluster_shard_balance.pl
check_elasticsearch_cluster_shards.pl updated tested versions Feb 23, 2019
check_elasticsearch_cluster_stats.pl updated tested versions Feb 23, 2019
check_elasticsearch_cluster_status.pl
check_elasticsearch_cluster_status_nodes_shards.pl updated tested versions Feb 23, 2019
check_elasticsearch_data_nodes.pl updated tested versions Feb 23, 2019
check_elasticsearch_doc_count.pl
check_elasticsearch_fielddata.pl
check_elasticsearch_index_age.pl
check_elasticsearch_index_exists.pl updated tested versions Feb 23, 2019
check_elasticsearch_index_replicas.pl updated tested versions Feb 23, 2019
check_elasticsearch_index_settings.pl
check_elasticsearch_index_shards.pl
check_elasticsearch_index_stats.pl updated tested versions Feb 23, 2019
check_elasticsearch_master_node.pl updated tested versions Feb 23, 2019
check_elasticsearch_node_disk_percent.pl updated tested versions Feb 23, 2019
check_elasticsearch_node_shards.pl updated tested versions Feb 23, 2019
check_elasticsearch_node_stats.pl
check_elasticsearch_nodes.pl updated tested versions Feb 23, 2019
check_elasticsearch_shards_state_detail.pl updated tested versions Feb 23, 2019
check_elasticsearch_tasks_pending.pl
check_elasticsearch_tasks_slow.py removed unused code Feb 26, 2019
check_elasticsearch_x-pack_feature_enabled.py
check_elasticsearch_x-pack_license_expiry.py added check_elasticsearch_x-pack_license_expiry.py Mar 6, 2018
check_etcd_version.py
check_file_adler32.pl
check_file_checksum.pl
check_file_crc.pl added check_file_checksum.pl, check_file_sha1.pl, check_file_sha256.p… Oct 25, 2015
check_file_descriptors.pl updated github header urls to be https Nov 26, 2015
check_file_md5.pl added check_file_checksum.pl, check_file_sha1.pl, check_file_sha256.p… Oct 25, 2015
check_file_sha1.pl added check_file_checksum.pl, check_file_sha1.pl, check_file_sha256.p… Oct 25, 2015
check_file_sha256.pl
check_file_sha512.pl added check_file_checksum.pl, check_file_sha1.pl, check_file_sha256.p… Oct 25, 2015
check_git_checkout_branch.pl renamed check_git_branch_checkout.pl to check_git_checkout_branch.pl Jul 3, 2018
check_git_checkout_branch.py
check_git_checkout_dirty.py
check_git_checkout_not_detached.py added check_git_checkout_not_detached.py Jul 4, 2018
check_git_checkout_not_remote.py added check_git_checkout_not_remote.py Jul 4, 2018
check_git_checkout_up_to_date.py
check_git_checkout_valid.py added check_git_checkout_valid.py Jul 4, 2018
check_git_repo_bare.py added check_git_repo_bare.py Jul 4, 2018
check_git_uncommitted_changes.py updated check_git_uncommitted_changes.py Jul 3, 2018
check_grafana_health.py added check_grafana_health.py Dec 5, 2018
check_grafana_version.py
check_h2o_cluster.pl
check_h2o_jobs.pl Added TODO for 3.x API which has changed Feb 28, 2016
check_h2o_node_health.pl Added TODO for 3.x API which has changed Feb 28, 2016
check_h2o_node_stats.pl Added TODO for 3.x API which has changed Feb 28, 2016
check_h2o_nodes_last_contact.pl Added TODO for 3.x API which has changed Feb 28, 2016
check_hadoop_balance.pl
check_hadoop_checkpoint.pl updated tested versions Nov 8, 2017
check_hadoop_datanode_blockcount.pl updated tested versions Nov 8, 2017
check_hadoop_datanode_java_gc.py
check_hadoop_datanode_jmx.pl added convenience links for check_hadoop_jmx.pl Dec 3, 2015
check_hadoop_datanode_last_contact.py updated check_hadoop_datanode_last_contact.py Oct 4, 2018
check_hadoop_datanode_version.pl updated tested versions Nov 8, 2017
check_hadoop_datanode_version.py
check_hadoop_datanodes.pl updated tested versions Nov 8, 2017
check_hadoop_datanodes_block_balance.pl
check_hadoop_datanodes_block_balance.py updated check_hadoop_datanodes_block_balance.py Oct 4, 2018
check_hadoop_datanodes_blockcounts.pl
check_hadoop_dfs.pl updated check_hadoop_dfs.pl Jun 19, 2018
check_hadoop_hdfs_balance.py
check_hadoop_hdfs_corrupt_files.py updated tested versions Nov 8, 2017
check_hadoop_hdfs_file_httpfs.pl added check_hadoop_hdfs_file_httpfs.pl, check_hadoop_hdfs_write_httpf… Mar 2, 2014
check_hadoop_hdfs_file_webhdfs.pl added check_hadoop_hdfs_file_webhdfs.pl, check_hadoop_hdfs_write_webh… Mar 2, 2014
check_hadoop_hdfs_fsck.pl
check_hadoop_hdfs_httpfs.pl added check_hadoop_hdfs_httpfs.pl Mar 2, 2014
check_hadoop_hdfs_rack_resilience.py
check_hadoop_hdfs_space.pl
check_hadoop_hdfs_space.py
check_hadoop_hdfs_total_blocks.pl updated tested versions Nov 8, 2017
check_hadoop_hdfs_total_blocks.py
check_hadoop_hdfs_webhdfs.pl updated check_hadoop_hdfs_webhdfs.pl Dec 5, 2018
check_hadoop_hdfs_write_httpfs.pl
check_hadoop_hdfs_write_webhdfs.pl
check_hadoop_jmx.pl updated check_hadoop_jmx.pl Jul 4, 2018
check_hadoop_jobtracker.pl updated tested versions to include Hadoop 2.8 Nov 1, 2017
check_hadoop_jobtracker_ha_zkfc_znode.pl updated check_hadoop_jobtracker_ha_zkfc_znode.pl Nov 13, 2013
check_hadoop_mapreduce_nodes.pl added check_hadoop_mapreduce_nodes.pl Jan 1, 2013
check_hadoop_mapreduce_nodes_active.pl added check_hadoop_mapreduce_nodes_active.pl Jan 1, 2013
check_hadoop_metrics.pl stripped trailing whitespace Aug 16, 2017
check_hadoop_namenode.pl updated tested versions Nov 8, 2017
check_hadoop_namenode_failed_namedirs.py
check_hadoop_namenode_ha_state.pl updated tested versions Nov 8, 2017
check_hadoop_namenode_ha_zkfc_znode.pl
check_hadoop_namenode_heap.pl
check_hadoop_namenode_java_gc.py updated check_hadoop_namenode_java_gc.py Aug 17, 2018
check_hadoop_namenode_jmx.pl added convenience links for check_hadoop_jmx.pl Dec 3, 2015
check_hadoop_namenode_safemode.pl updated tested versions Nov 8, 2017
check_hadoop_namenode_security_enabled.pl updated tested versions Nov 8, 2017
check_hadoop_namenode_version.py
check_hadoop_node_manager_java_gc.py
check_hadoop_replication.pl
check_hadoop_resource_manager_java_gc.py updated check_hadoop_resource_manager_java_gc.py Jan 12, 2019
check_hadoop_wandisco_foreign_replication.pl
check_hadoop_wandisco_license.pl
check_hadoop_wandisco_node_status.pl
check_hadoop_wandisco_nodes.pl updated github header urls to be https Nov 26, 2015
check_hadoop_yarn_app_last_run.py
check_hadoop_yarn_app_running.py
check_hadoop_yarn_app_stats.pl updated tested versions Nov 8, 2017
check_hadoop_yarn_app_stats_queue.pl
check_hadoop_yarn_apps_memory_used.pl
check_hadoop_yarn_long_running_apps.py tweaked code to replace assert Oct 4, 2018
check_hadoop_yarn_long_running_spark_shells.py updated tested versions Nov 8, 2017
check_hadoop_yarn_metrics.pl updated tested versions Nov 8, 2017
check_hadoop_yarn_node_manager.pl
check_hadoop_yarn_node_manager_via_rm.pl
check_hadoop_yarn_node_managers.pl
check_hadoop_yarn_queue_apps.py tweaked code to replace assert Oct 4, 2018
check_hadoop_yarn_queue_capacity.pl
check_hadoop_yarn_queue_state.pl
check_hadoop_yarn_resource_manager_ha_state.py
check_hadoop_yarn_resource_manager_heap.pl updated tested versions Nov 8, 2017
check_hadoop_yarn_resource_manager_state.pl updated tested versions Nov 8, 2017
check_hadoop_yarn_resource_manager_version.pl updated tested versions Nov 8, 2017
check_hbase_backup_masters_znode.pl added shortcut support and links for several different zookeeper base… Oct 23, 2013
check_hbase_balancer_enabled.py updated description of tested versions to include 1.1, 1.2 and added … Oct 14, 2018
check_hbase_balancer_enabled2.py
check_hbase_cell.pl updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_cell.py
check_hbase_cell_stargate.pl updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_cell_thrift.pl added check_hbase_cell_thrift.pl Jan 9, 2014
check_hbase_hbck.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_master_ha_state.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_master_java_gc.py updated tested versions Oct 14, 2018
check_hbase_master_jmx.pl
check_hbase_master_version.py
check_hbase_master_znode.pl added shortcut support and links for several different zookeeper base… Oct 23, 2013
check_hbase_metrics.pl
check_hbase_num_regions_in_transition.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_region_balance.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_region_longest_migration_time.py Merged assert replacements Oct 14, 2018
check_hbase_regions_stuck_in_transition.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_regionserver_compaction_in_progress.py
check_hbase_regionserver_java_gc.py
check_hbase_regionserver_jmx.pl
check_hbase_regionserver_version.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_regionservers.pl
check_hbase_regionservers_jsp.pl updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_regionservers_requests_balance.py updated tested versions Oct 14, 2018
check_hbase_root_regionserver_znode.pl
check_hbase_table.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_table_compaction_in_progress.py
check_hbase_table_enabled.py
check_hbase_table_region_balance.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_table_regions.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_table_rowcount.pl updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_tables.pl
check_hbase_tables_jsp.pl
check_hbase_tables_stargate.pl updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_tables_thrift.pl added check_hbase_tables_thrift.pl Jul 28, 2013
check_hbase_unassigned_regions_znode.pl
check_hbase_write.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hbase_write_spray.py updated descriptions to mention tested on HBase 2.0 + 2.1 Oct 14, 2018
check_hiveserver2_beeline.sh updated check_hiveserver2_beeline.sh Aug 3, 2018
check_hiveserver2_llap_peers.py added check_hiveserver2_llap_peers.py Jun 20, 2017
check_hiveserver2_llap_status.py updated check_hiveserver2_llap_status.py Jun 20, 2017
check_hortonworks_ambari_cluster_alerts_host_summary.pl update README.md Sep 29, 2017
check_hortonworks_ambari_cluster_alerts_summary.pl
check_hortonworks_ambari_cluster_health_report.pl added check_hortonworks_ambari_cluster_alerts_host_summary.pl Sep 29, 2017
check_hortonworks_ambari_cluster_kerberized.pl added check_hortonworks_ambari_cluster_alerts_host_summary.pl Sep 29, 2017
check_hortonworks_ambari_cluster_service_config_compatible.pl added check_hortonworks_ambari_cluster_alerts_host_summary.pl Sep 29, 2017
check_hortonworks_ambari_cluster_total_hosts.pl
check_hortonworks_ambari_cluster_version.pl added check_hortonworks_ambari_cluster_alerts_host_summary.pl Sep 29, 2017
check_hortonworks_ambari_config_stale.pl
check_hortonworks_ambari_nodes.pl
check_hortonworks_ambari_services.pl
check_ibm_biginsights_agents.pl stripped trailing whitespace Aug 16, 2017
check_ibm_biginsights_application.pl updated github header urls to be https Nov 26, 2015
check_ibm_biginsights_bigsheets_workbook.pl
check_ibm_biginsights_console_version.pl updated github header urls to be https Nov 26, 2015
check_ibm_biginsights_dfs_path.pl stripped trailing whitespace Aug 16, 2017
check_ibm_biginsights_hdfs_replication.pl updated github header urls to be https Nov 26, 2015
check_ibm_biginsights_hdfs_space.pl updated github header urls to be https Nov 26, 2015
check_ibm_biginsights_nodes.pl updated github header urls to be https Nov 26, 2015
check_ibm_biginsights_service_details.pl
check_ibm_biginsights_services.pl updated github header urls to be https Nov 26, 2015
check_impala_metrics.pl
check_influxdb_api_ping.py added wait for leader param Jun 17, 2018
check_influxdb_version.py
check_jenkins_job.py removed extra pipe before query_time perfdata Jun 29, 2017
check_jenkins_job2.py
check_jenkins_job_buildable.py
check_jenkins_job_color.py
check_jenkins_job_count.py added per view support Jun 29, 2017
check_jenkins_job_exists.py
check_jenkins_job_health_report.py
check_jenkins_mode.py
check_jenkins_node.py
check_jenkins_node_count.py added check_jenkins_node_count.py Jun 28, 2017
check_jenkins_num_executors.py updated check_jenkins_num_executors.py Jun 28, 2017
check_jenkins_offline_nodes.py
check_jenkins_plugin.py
check_jenkins_plugin_updates.py
check_jenkins_queued_builds.py
check_jenkins_running_builds.py
check_jenkins_security_enabled.py added check_jenkins_security_enabled.py Jun 27, 2017
check_jenkins_version.py
check_kafka.pl
check_kafka.py tweaked code to replace assert Oct 4, 2018
check_krb5_kdc.pl
check_krb5_kinit.pl
check_kubernetes_health.py
check_kubernetes_version.py added build date output in verbose mode Feb 26, 2019
check_linux_auth.pl updated check_linux_auth.pl Feb 25, 2019
check_linux_context_switches.pl
check_linux_dirs_mounted.sh updated check_linux_dirs_mounted.sh Feb 10, 2019
check_linux_disk_mounts_read_only.py
check_linux_duplicate_IDs.pl
check_linux_fstab_mounts.sh
check_linux_hugepages_disabled.py updated check_linux_hugepages_disabled.py Jun 11, 2018
check_linux_interface.pl
check_linux_load_normalized.pl added switch for cpu core count to perfdata at request of rmalenko in… Jul 21, 2016
check_linux_ram.py
check_linux_system_file_descriptors.pl
check_linux_timezone.pl
check_logserver.py
check_logstash_hot_threads.py updated to tested on 6.1 Dec 27, 2017
check_logstash_pipeline.py updated check_logstash_pipeline.py Jun 17, 2018
check_logstash_pipelines.py updated to tested on 6.1 Dec 27, 2017
check_logstash_plugins.py
check_logstash_status.py updated to tested on 6.1 Dec 27, 2017
check_logstash_version.py updated to tested on 6.1 Dec 27, 2017
check_mapr-fs_space.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr-fs_volume.pl
check_mapr-fs_volume_mirroring.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr-fs_volume_replication.pl
check_mapr-fs_volume_snapshots.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr-fs_volume_space_used.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_alarms.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_cluster_version.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_dashboard.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_dialhome.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_disk_balancer_metrics.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_license.pl updated check_mapr_license.pl Dec 25, 2017
check_mapr_mapreduce_mode.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_memory_utilization.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_node_alarms.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_node_failed_disks.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_node_health.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_node_heartbeats.pl
check_mapr_node_mapr-fs_disks.pl
check_mapr_node_services.pl updated tested versions to MapR 5.2.1 Dec 25, 2017
check_mapr_nodes.pl
check_mapr_role_balancer.pl updated check_mapr_role_balancer.pl Aug 3, 2016
check_mapr_role_balancer_metrics.pl updated check_mapr_role_balancer_metrics.pl Aug 3, 2016
check_mapr_services.pl
check_memcached_key.pl stripped trailing whitespace Aug 16, 2017
check_memcached_stats.cfg-pnp4nagios
check_memcached_stats.pl
check_memcached_write.pl stripped trailing whitespace Aug 16, 2017
check_mesos_activated_slaves.pl
check_mesos_chronos_jobs.pl
check_mesos_deactivated_slaves.pl
check_mesos_master_health.pl
check_mesos_master_metrics.pl added check_mesos_master_metrics.pl Oct 1, 2015
check_mesos_master_state.pl fixed environment inheritence Oct 10, 2017
check_mesos_metrics.pl
check_mesos_slave.py added intuitive message if pointing at slave instead of master Oct 10, 2017
check_mesos_slave_metrics.pl added check_mesos_slave_metrics.pl Oct 1, 2015
check_mesos_slave_state.pl added check_mesos_slave_state.pl Oct 1, 2015
check_mk_adapter.py added check_mk_adapter.py Jan 2, 2019
check_mongodb_master.pl set user/pw validation if defined rather than just implicit true Oct 8, 2017
check_mongodb_master_rest.pl
check_mongodb_write.pl switched from insert to insert_one() Oct 13, 2017
check_mysql_config.pl updated check_mysql_config.pl Oct 1, 2017
check_mysql_query.pl improved row debugging output Oct 8, 2017
check_nagiostats.pl
check_neo4j_readonly.pl updated tested versions Sep 27, 2017
check_neo4j_remote_shell_disabled.pl
check_neo4j_remote_shell_enabled.pl added check_neo4j_remote_shell_enabled.pl symlink for quicker behavio… Jun 10, 2015
check_neo4j_stats.pl updated tested versions Sep 27, 2017
check_neo4j_store_sizes.pl
check_neo4j_version.pl updated tested versions Sep 27, 2017
check_nginx_stats.pl added host/port env var support Oct 13, 2017
check_nginx_version.py
check_nifi_java_gc.py updated check_nifi_java_gc.py Aug 17, 2018
check_nifi_processor_load_average.py
check_nifi_status.py
check_nifi_version.py updated check_nifi_version.py Aug 15, 2018
check_oozie_status.py
check_opentsdb_latest_metric_age.py
check_opentsdb_version.py
check_openvpn_stats.pl stripped trailing whitespace Aug 16, 2017
check_platfora_stats.pl updated check_platfora_stats.pl Oct 14, 2015
check_presto_coordinator.py
check_presto_environment.py updated Presto tested versions to include 0.189 Dec 1, 2017
check_presto_queries.py updated Presto tested versions to include 0.189 Dec 1, 2017
check_presto_state.py
check_presto_tasks.py updated Presto tested versions to include 0.189 Dec 1, 2017
check_presto_unfinished_queries.py updated Presto tested versions to include 0.189 Dec 1, 2017
check_presto_version.py
check_presto_worker_node.py
check_presto_worker_nodes.py updated Presto tested versions to include 0.189 Dec 1, 2017
check_presto_worker_nodes_failed.py
check_presto_worker_nodes_recent_failure_ratio.py
check_presto_worker_nodes_recent_failures.py updated Presto tested versions to include 0.189 Dec 1, 2017
check_presto_worker_nodes_response_lag.py
check_prometheus_collectd.py updated check_prometheus_collectd.py Jan 30, 2018
check_prometheus_collectd_version.py added check_prometheus_collectd_version.py Jan 30, 2018
check_prometheus_node_exporter_version.py
check_prometheus_telegraf.py updated check_prometheus_telegraf.py Jan 30, 2018
check_prometheus_version.py
check_puppet.rb
check_rabbitmq.py fixed exchange_type arg to exchange_declare() and set default exchang… Oct 13, 2017
check_rabbitmq_aliveness.py updated check_rabbitmq_aliveness.py Dec 21, 2016
check_rabbitmq_auth.py added check_rabbitmq_auth.py Dec 22, 2016
check_rabbitmq_cluster_name.py
check_rabbitmq_exchange.py updated check_rabbitmq_exchange.py Dec 25, 2016
check_rabbitmq_healthchecks.py added check_rabbitmq_healthchecks.py Dec 20, 2016
check_rabbitmq_queue.py
check_rabbitmq_stats_db_event_queue.py
check_rabbitmq_version.py updated check_rabbitmq_version.py Dec 20, 2016
check_rabbitmq_vhost.py
check_rancher_api_ping.py
check_ranger_policy.py tweaked code to replace assert Oct 4, 2018
check_ranger_repository.py
check_ranger_stats.pl updated check_ranger_stats.pl Oct 3, 2017
check_redis_clients.pl
check_redis_config.pl
check_redis_key.pl replaced tabs with spaces Dec 28, 2017
check_redis_publish_subscribe.pl
check_redis_replication.pl added check_redis_replication.pl Nov 20, 2013
check_redis_slave.pl added check_redis_slave.pl Nov 18, 2013
check_redis_stats.pl updated tested versions Oct 26, 2017
check_redis_version.pl
check_redis_write.pl
check_redis_write_replication.pl
check_riak_api_ping.pl added check_riak_api_ping.pl Oct 10, 2017
check_riak_diag.pl stripped trailing whitespace Aug 16, 2017
check_riak_key.pl stripped trailing whitespace Aug 16, 2017
check_riak_member_status.pl updated check_riak_member_status.pl May 26, 2016
check_riak_ringready.pl
check_riak_stats.pl stripped trailing whitespace Aug 16, 2017
check_riak_version.pl
check_riak_write.pl stripped trailing whitespace Aug 16, 2017
check_riak_write_local.pl
check_solr_api_ping.pl
check_solr_core.pl
check_solr_metrics.pl updated tested versions across 7.x Dec 27, 2018
check_solr_query.pl updated tested versions across 7.x Dec 27, 2018
check_solr_version.py updated tested versions across 7.x Dec 27, 2018
check_solr_write.pl updated tested versions across 7.x Dec 27, 2018
check_solrcloud_cluster_status.pl updated Solr tested versions Oct 27, 2017
check_solrcloud_cluster_status_zookeeper.pl updated Solr tested versions Oct 27, 2017
check_solrcloud_config_zookeeper.pl
check_solrcloud_live_nodes.pl
check_solrcloud_live_nodes_zookeeper.pl
check_solrcloud_overseer.pl updated Solr tested versions Oct 27, 2017
check_solrcloud_overseer_zookeeper.pl updated Solr tested versions Oct 27, 2017
check_solrcloud_server_znode.pl added shortcut support and links for several different zookeeper base… Oct 23, 2013
check_spark_cluster.pl
check_spark_cluster_dead_workers.pl
check_spark_cluster_memory.pl capitalized env vars to make it more obvious in code Oct 13, 2017
check_spark_master_version.py added check_spark_master_version.py Aug 10, 2016
check_spark_version.py updated check_spark_version.py Jun 30, 2017
check_spark_worker.pl
check_spark_worker_version.py
check_ssh_login.pl updated github header urls to be https Nov 26, 2015
check_ssl_cert.pl improved workaround for #205 Mar 19, 2019
check_svn_mirror.pl
check_syslog_mysql.py added check_syslog_mysql.py Nov 23, 2013
check_tachyon.py updated check_tachyon.py check_tachyon_dead_workers.py check_tachyon_… Jun 2, 2016
check_tachyon_dead_workers.py
check_tachyon_master.py added check_tachyon.py, check_tachyon_master.py, check_tachyon_worker.py Feb 3, 2016
check_tachyon_master_version.py
check_tachyon_running_workers.py update check_tachyon_running_workers.py Oct 27, 2017
check_tachyon_version.py
check_tachyon_worker.py
check_tachyon_worker_heartbeat.py
check_tachyon_worker_version.py
check_tftp.pl updated github header urls to be https Nov 26, 2015
check_timezone.pl
check_travis_ci_last_build.py updated check_travis_ci_last_build.py Aug 17, 2017
check_vault_health.py added check_vault_health.py Mar 14, 2018
check_vault_high_availability.py added check_vault_high_availability.py Mar 14, 2018
check_vault_version.py
check_whois.pl added fix for #145 picking up the last update date of whois database Aug 24, 2017
check_yum.pl
check_yum.py added fix for #197 Jun 17, 2018
check_zaloni_bedrock_ingestion.py tweaked code to replace assert Oct 4, 2018
check_zaloni_bedrock_workflow.py tweaked code to replace assert Oct 4, 2018
check_zookeeper.pl updated check_zookeeper.pl Dec 28, 2017
check_zookeeper_child_znodes.pl
check_zookeeper_config.pl updated tested versions in description Nov 17, 2017
check_zookeeper_version.py updated tested versions in description Nov 17, 2017
check_zookeeper_znode.pl updated tested versions in description Nov 17, 2017
csv_adapter.py added csv_adapter.py Jan 2, 2019
geneos_adapter.py
icingaexchange.yml
requirements.txt updated requirements.txt Feb 28, 2019
sonar-project.properties updated sonar-project.properties Jul 21, 2016

README.md

Advanced Nagios Plugins Collection

Build Status Codacy Badge GitHub stars GitHub forks Dependency Status Platform DockerHub

Largest, most advanced collection of production-grade Nagios monitoring code (over 400 programs).

Specialised plugins for Hadoop, Big Data & NoSQL technologies, written by a former Clouderan (Cloudera was the first Hadoop Big Data vendor) and modern Hortonworks partner/consultant.

Supports most major open source NoSQL technologies, Pub-Sub / Message Buses, CI, Web and Linux based infrastructure, including:

Supports a a wide variety of compatible Enterprise Monitoring systems.

Most enterprise monitoring systems come with basic generic checks, while this project extends their monitoring capabilities significantly further in to advanced infrastructure, application layer, APIs etc.

Also useful to be run on the command line for testing or in scripts for dependency availability checking, and comes with a selection of advanced HAProxy configurations for these technologies to make monitoring and scripting easier for clustered technologies.

Fix requests, suggestions, updates and improvements are most welcome via Github issues or pull requests (in which case GitHub will give you credit and mark you as a contributor to the project :) ).

Hari Sekhon

Big Data Contractor, United Kingdom

https://www.linkedin.com/in/harisekhon

(you're welcome to connect with me on LinkedIn)
Make sure you run make update if updating and not just git pull as you will often need the latest library submodules and probably new upstream libraries too.

Quick Start

  1. Git clone this repo and compile dependencies by running make
    OR
  2. Download pre-built self-contained Docker image

Execute each program on the command line with --help to see its options.

Ready-to-run Docker Image

All plugins and their pre-compiled dependencies can be found ready-to-run on DockerHub, if you have Docker installed, fetch this project like so:

docker pull harisekhon/nagios-plugins

List all plugins:

docker run harisekhon/nagios-plugins

Run any given plugin by suffixing it to the docker run command:

docker run harisekhon/nagios-plugins <program> <args>

eg.

docker run harisekhon/nagios-plugins check_ssl_cert.pl --help

There are also :centos (:latest), :alpine, :debian, :fedora and :ubuntu tagged docker images available, as well as :python and :perl only images.

You should tag the build locally as :stable or date-time stamped and run off that tag to avoid it getting auto-replaced by newer :latest builds, to control updates to suit your schedule and prevent random delays from docker runs pulling down newer builds from DockerHub.

Automated Build from Source


git clone https://github.com/harisekhon/nagios-plugins

cd nagios-plugins

make build zookeeper

Now run any plugin with --help to find out which switches to use.

Make sure to read Detailed Build Instructions further down for more information.

Quick Plugins Guide

There are over 400 programs in this repo so these are just some of the highlights.

Quick Links:
Hadoop Ecosystem
  • check_hadoop_*.pl/py - various Apache Hadoop monitoring utilities for HDFS, YARN and MapReduce (both MRv1 & MRv2):
    • Hadoop - Masters' status and High Availability (ZKFC, Active/Standby state), Worker nodes counts, dead nodes / blacklisted / unhealthy nodes, heap usage, metrics and JMX information with optional thresholds & graph data
    • HDFS - NameNode & DataNode checks, cluster space, balance, block replication, block count limits per datanode / cluster total, safe mode, failed name dirs, WebHDFS (with HDFS HA failover support), HttpFS, HDFS writeability, rack resilience configuration (checks more than 1 rack configured, finds nodes with default rack configured), HDFS fsck status / last check / run time / max blocks, HDFS file / directory existence & metadata attributes
    • Yarn:
      • Infrastructure - Resource Manager and NodeManager checks, unhealthy NodeManagers, queue state, queue capacity, app stats, % of memory allocated, metrics with optional thresholds to check things such as activeNodes, appsPending, lostNodes, unhealthyNodes etc.
      • Apps - app last finished state / user / queue / elapsed time (batch job SLAs), queue apps allowed/disallowed (catch Spark Shells on production queue), app running (check long living yarn service is still alive), long running apps/jobs detection with name and queue include/exclude regexes (detect SLAs breaches for in-progress batch jobs or forgotten Spark Shells holding resources, both Spark Scala and PySpark)
  • check_hbase_*.py/pl - various Apache HBase monitoring utilities using Thrift + Stargate APIs, checks Masters / Backup Masters, RegionServers, table availability (exists, is enabled, and has minimum number of column families), number of expected table regions, unassigned table regions, regions stuck in transition, region count balance across RegionServers, requests per sec balance across RegionServers, compaction in progress (by table and by regionserver), number of regions in transition, longest current region migration time, hbck status for any inconsistencies, cell content vs optional regex + thresholds, table write and read back of unique generated values with write/read/delete latency checks against all detected column families, table write spray and read back of unique values across all regions for all column families with write/read/delete latency checks, gather metrics
  • check_atlas_*.py - Apache Atlas metadata server instance status, as well as metadata entity checks including entity existence, state=ACTIVE, expected type, expected tags are assigned to entity (eg. PII - important because Ranger ACLs to allow or deny access to data can be assigned based on tags)
  • check_ranger_*.pl/.py - Apache Ranger checks:
    • policy checks - existence, enabled, has auditing enabled, is recursive, last updated vs thresholds (to catch changes), repository name and type that the policy belongs to
    • repository checks - existence, active, type (eg. hive, hdfs), last updated vs thresholds (to catch changes)
    • number of policies and repositories vs thresholds
  • check_ambari_*.pl - Apache Ambari API checks for Hadoop clusters written running the standard open source Hortonworks distribution - checks the service status, node(s) status, stale configs, cluster alerts summary, host alerts summary, cluster health report, hdfs rack resilience configured (checks more than 1 rack configured, finds nodes with default rack configured), kerberos enabled, cluster version, service config compatible with stack and cluster

Attivio, Blue Talon, Datameer, Platfora, Zaloni plugins are also available for those proprietary products related to Hadoop.

Hadoop Distributions
  • Hortonworks - as this is the standard modern Hadoop distribution, see check_ambari.pl in the section above
  • check_cloudera_manager_*.pl - Hadoop cluster checks via Cloudera Manager API - checks states and health of cluster services/roles/nodes, management services, config staleness, Cloudera Enterprise license expiry, Cloudera Manager and CDH cluster versions, utility switches to list clusters/services/roles/nodes as well as list users and their role privileges, fetch a wealth of Hadoop & OS monitoring metrics from Cloudera Manager and compare to thresholds. Disclaimer: I worked for Cloudera, but seriously CM collects an impressive amount of metrics making check_cloudera_manager_metrics.pl alone a very versatile program from which to create hundreds of checks to flexibly alert on
  • check_mapr*.pl - Hadoop cluster checks via MapR Control System API - checks services and nodes, MapR-FS space (cluster and per volume), volume states, volume block replication, volume snapshots and mirroring, MapR-FS per disk space utilization on nodes, failed disks, CLDB heartbeats, MapR alarms, MapReduce mode and memory utilization, disk and role balancer metrics. These are noticeably faster than running equivalent maprcli commands (exceptions: disk/role balancer use maprcli).
  • check_ibm_biginsights_*.pl - Hadoop cluster checks via IBM BigInsights Console API - checks services, nodes, agents, BigSheets workbook runs, dfs paths and properties, HDFS space and block replication, BI console version, BI console applications deployed
SQL-on-Hadoop
  • check_hiveserver2_llap_*.py - Apache Hive - HiveServer2 LLAP Interactive server status and uptime, peer count, check for a specific peer host fqdn via regex
  • check_apache_drill_*.py/.pl - Apache Drill checks:
    • cluster wide: number of online / offline cluster nodes, mismatched versions across cluster
    • per drill node: status, cluster membership, encryption enabled, config settings, storage plugins enabled, version, metrics with optional thresholds
  • check_presto_*.py - Presto SQL DB
    • cluster checks (via coordinator API) - number of current queries, running/failed/blocked/queued queries, tasks, worker nodes, failed worker nodes, workers with response lag to coordinator, workers with recent failures and recent failure ratios vs thresholds, version
    • per node checks - status, if coordinator, environment
    • per worker checks (via coordinator API) - specific worker registered with coordinator, response age to coordinator, recent requests vs threshold, recent successes, recent failures & failure ratio vs thresholds
Service Discovery & Coordination
  • check_zookeeper.pl - Apache ZooKeeper server checks, multiple layers: "is ok" status, is writable (quorum), operating mode (leader/follower vs standalone), gather statistics
  • check_zookeeper_*znode*.pl - ZooKeeper znode checks using ZK Perl API, useful for HBase, Kafka, SolrCloud, Hadoop HDFS & Yarn HA (ZKFC) and any other ZooKeeper-based service. Very versatile with multiple optional checks including data vs regex, json field extraction, ephemeral status, child znodes, znode last modified age
  • check_consul_*.py - Consul API write / read back, arbitrary key-value content checks, cluster leader election, number of cluster peers, service leader election, version
  • check_vault_*.py - Hashicorp's Vault API checks - health checks is initialized, is not standby, is vault sealed / unsealed, time skew between Vault server and local, is high availability enabled, is current leader, is leader found, version
Docker / Containerization
  • check_docker_*.py - Docker API checks including API ping, counts of running / paused / stopped / total containers with thresholds, specific container status by name or id, images count with thresholds, specific image:tag availability including size and checksum, counts of networks / volumes with thresholds, docker engine version
  • check_docker_swarm_*.py - Docker Swarm API checks including is swarm enabled, swarm node status, is the node a swarm manager, swarm service status including number of live replicas / tasks and if the service was updated recently, counts of services, swarm manager and worker nodes with thresholds, swarm errors, swarm version
  • check_mesos_*.pl - Mesos master health API, master & slaves state information including leader and versions, activated & deactivated slaves, number of Chronos jobs, master & slave metrics. Warning: Mesos & Mesosphere DC/OS is legacy semi-proprietary - major momentum has shifted to the open source Kubernetes project
  • check_kubernetes_*.py - Kubernetes API health and version

If running docker checks from within the nagios plugins docker image then you will need to expose the socket within the container, like so:

docker run -v /var/run/docker.sock:/var/run/docker.sock harisekhon/nagios-plugins check_docker_images.py -H unix:///var/run/docker.sock
OK: Docker images = 296 | docker_images=296;; query_time=0.1568s

See also DockerHub build status nagios plugin further down in the CI section.

Search
  • check_elasticsearch_*.pl/.py - Elasticsearch cluster state, shards, replicas, number of nodes & data nodes online, shard and disk % balance between nodes, single node ok, specific node found in cluster state, slow tasks, pending tasks, elasticsearch / lucene versions, per index existence / shards / replicas / settings / age, stats per cluster / index / node, X-Pack license expiry and features enabled
    • check_logstash_*.py - Logstash status, uptime, hot threads, plugins, version, number of pipelines online, specific pipeline online and optionally its number of workers, if its dead letter queue is enabled, outputs pipeline batch size and delay
  • check_solr*.pl - checks for Apache Solr and SolrCloud including API write/read/delete, arbitrary Solr queries vs num matching documents, API ping, Solr Core Heap / Index Size / Number of Docs for a given Solr Collection, and thresholds in ms against all Solr API operations as well as perfdata for graphing, as well as SolrCloud ZooKeeper content checks for collection shards and replicas states, number of live nodes in SolrCloud cluster, overseer, SolrCloud config and Solr metrics.
NoSQL
  • check_cassandra_*.pl / check_datastax_opscenter_*.pl - Apache Cassandra and DataStax OpsCenter monitoring, including Cassandra cluster nodes, token balance, space, heap, keyspace replication settings, alerts, backups, best practice rule checks, DSE hadoop analytics service status and both nodetool and DataStax OpsCenter collected metrics
  • check_memcached_*.pl - Memcached API writes/reads/deletes with timings, check specific key's value against regex or value range, number of current connections, gather statistics
  • check_couchdb_*.py - Apache CouchDB API checks including server status, database exists, doc and deleted doc counts, data size, compaction running, version
  • check_riak_*.pl - Riak API writes/reads/deletes with timings, check a specific key's value against regex or value range, check all riak diagnostics, check node states, check all nodes agree on ring status, gather statistics, alert on any single stat
  • check_redis_*.pl - Redis API writes/reads/deletes with timings, check specific key's value against regex or value range, replication slaves I/O, replicated writes (write on master -> read from slave), publish/subscribe, connected clients, validate redis.conf against running server to check deployments or remote compliance checks, gather statistics, alert on any single stat
SQL Databases
  • check_mysql_query.pl - flexible free-form MySQL SQL queries - can check almost anything - obsoleted a dozen custom MySQL plugins and prevented writing many more. Tested against many versions of MySQL and MariaDB. You may also be interested in Percona's plugins
  • check_mysql_config.pl - detect differences in your /etc/my.cnf and running MySQL config to catch DBAs making changes to running databases without saving to /etc/my.cnf or backporting to Puppet. Can also be used to remotely validate configuration compliance against a known good baseline. Tested against many versions of MySQL and MariaDB
Publish - Subscribe / Message Queues

These programs check these message brokers end-to-end via their API, by acting as both a producer and a consumer and checking that a unique generated message passes through the broker cluster and is received by the consumer at the other side successfully. They report the publish, consumer and total timings taken, against which thresholds can be applied, and are also available as perfdata for graphing.

  • check_kafka.py/.pl - Kafka brokers API write & read back with configurable topics/partition and producer behaviour for acks, sleep, retries, backoff, can also lists topics and partitions. See Kafka Scala Nagios Plugin for a version with Kerberos support
  • check_redis_publish_subscribe.pl - Redis publish-subscribe API write & read back with configurable subscriber wait. See other Redis checks under NoSQL
  • check_rabbitmq*.py - RabbitMQ brokers AMQP API write & read back with configurable vhost, exchange, exchange type, queue, routing key, durability, RabbitMQ 'confirms' protocol extension & standard AMQP transactions support. Checks via the RabbitMQ management API include aliveness queue health test, built-in health checks, cluster name, vhost, exchange with optional validation of exchange type (direct, fanout, headers, topic) and durability (true/false), user auth and permissions tags, stats db event queue
CI - Continuous Integration & Build Systems - Git, Jenkins, Travis CI & DockerHub Automated Builds
  • check_jenkins_*.py - Jenkins checks include job build status, color, health report score, build time, age since last completed build, if job is set to buildable, job count total or per view, number of running builds, queued builds, executors, node count, offline nodes, jenkins mode, is security enabled, if a given node is online and its number of executors, if a given plugin is enabled and if there are available plugin updates individually or overall, with perfdata for relevant metrics like build time, jobs/nodes/executors/plugins/plugin updates, running/queued build counts and query timings
  • check_travis_ci_last_build.py - Travis CI repo's last build status - includes showing build number, build duration with optional thresholds, start/stop date & time, if there are currently any builds in progress and perfdata for graphing last build time and number of builds in progress. Verbose mode gives the commit details as well such as commit id and message
  • check_dockerhub_repo_build_status.py - DockerHub Automated Build status check for a given DockerHub repository's latest build or latest build for a given tag. Returns status and tag of last build along with perfdata for graphing build latency (time between build creation and completion) and query timing. Optionally also returns in verbose mode what triggered the build (webhook, revision control change, API / website trigger), created and last updated date timestamps and build URL to investigate
  • check_git_* - checks a Git checkout is valid, up to date with upstream remote/origin, has no uncommitted changes (staged or unstaged), no untracked files, isn't dirty, is in the right branch, isn't remote, isn't detached, is / isn't bare. Useful for monitoring deployment servers running off Git checkouts (a common scenario for things like PuppetMasters, Ansible AWX / Tower etc) to ensure your automation is deploying the right thing and that any ad-hoc modifications and tests have been properly backported to Git
Infrastructure - Internet - Web, DNS, SSL, Domains
  • check_ssl_cert.pl - SSL certificate checker - checks certificate expiry (days), validates domain, chain of trust, SNI, wildcard domains, SAN certs with multi-domain support. Chain of Trust support is important when building your JKS or certificate bundles to include intermediate certs otherwise certain mobile devices don't validate the SSL even though it may work in your desktop browser
  • check_whois.pl - check domain expiry days left and registration details match expected
  • check_aws_s3_file.pl - check for the existence of any arbitrary file on AWS S3, eg. to check backups have happened or _SUCCESS placeholder files are present for a job
  • check_dns.pl - advanced DNS query checker supporting NS records for your public domain name, MX records for your mail servers, SOA, SRV, TXT as well as A and PTR records. Can optionally specify --expected literal or --regex results (which is anchored for security) for strict validation to ensure all records returned are expected and authorized. The record, type and result(s) are output along with the DNS query timing perfdata for graphing DNS performance
Infrastructure - Linux - OS, Network, Puppet, RAID, SSH, Clusters, Yum Security Updates
  • check_puppet.rb - thorough, find out when Puppet stops properly applying manifests, if it's in the right environment, if it's --disabled, right puppet version etc
  • check_disk_write.pl - canary write test, catches partitions getting auto-remounted read-only by Linux when it detects underlying storage I/O errors (often caused by malfunctioning block devices, raid arrays, failing disks), see also check_linux_disk_mounts_read_only.py
  • check_linux_*.pl/.py - checks RAM used, CPU context switches, system file descriptors, interface errors / promiscous mode / duplex / speed / MTU / stats, load normalized per CPU core (more useful than the default check_load plugin which would need different configs for heterogenous hardware), timezone settings, users / groups present (eg. PAM/LDAP/SSSD integration is working), duplicate UID/GIDs (helps detects rogue uid 0 accounts and more common LDAP vs local id range overlap misconfigurations), check groups.allow contains only specific groups, huge pages are disabled (often recommended for Big Data and NoSQL systems such as Hadoop and MongoDB), any read-only filesystems (more of a sweep than check_disk_write.pl, with include/exclude regex)
  • check_ssh_login.pl - performs a full SSH login with username & password, good for testing your Dell DRAC / HP iLO infrastructure is properly secured and accessible. Also works for your Linux servers and even Mac OSX
  • older/check_*raid.py - RAID controller / array checks for 3ware, LSI MegaRaid / Dell PERC controllers (they're rebranded from LSI), and Linux software MD Raid. I also recommend the widely used Dell OpenManage Check
  • check_*_version*.pl/.py - checks running versions of software - originally written to detect version inconsistencies across large clusters of servers and failed/partial upgrades across large automated infrastructures. Now also used to check Docker tagged images contain the right versions of the expected software (which double validates that other programs in this and other github repos have actually been tested against all the expected versions) check_cluster_version.pl can be used to tie together versions returned from many different servers (by passing it their outputs via Nagios macros) to ensure a cluster is all running the same version of software even if you don't enforce a particular --expected version on individual systems
  • check_yum.py/.pl - widely used yum security updates checker for RHEL 5 - 7 systems dating back to 2008. You'll find forks of this around including NagiosExchange but please re-unify on this central updated version. Also has a Perl version which is a newer straight port with nicer more concise code and better library backing as well as configurable self-timeout. For those running Debian-based systems like Ubuntu see check_apt from the nagios-plugins-basic package.

... and there are many more plugins than we have space to list here, have a browse!

This code base is under active development and there are many more cool plugins pending import.

See also other 3rd Party Nagios Plugins you might be interested in.

Compatibility / Translation Plugins

These allow you to use any standard nagios plugin with other non-Nagios style monitoring systems by prefixing the nagios plugin command with these programs, which will execute and translate the outputs:

  • adapter_csv.py - executes and translates output from any standard nagios plugin to CSV format
  • adapter_check_mk.py - executes and translates output from any standard nagios plugin to Check_MK local plugin format
  • adapter_geneos.py - executes and translates output from any standard nagios plugin to Geneos CSV format

Usage --help

All plugins come with --help which lists all options as well as giving a program description, often including a detailed account of what is checked in the code. You can also find example commands in the tests/ directory.

Environment variables are supported for convenience and also to hide credentials from being exposed in the process list eg. $PASSWORD. These are indicated in the --help descriptions in brackets next to each option and often have more specific overrides with higher precedence eg. $ELASTICSEARCH_HOST takes priority over $HOST, $REDIS_PASSWORD takes priority over $PASSWORD etc.

Make sure to run the automated build or install the required Perl CPAN / Python PyPI modules first before calling --help.

Kerberos Security Support

Perl HTTP Rest-based plugins have implicit Kerberos support via LWP as long as the LWP::Authen::Negotiate CPAN module is installed (part of the automated make build). This will look for a valid TGT in the environment ($KRB5CCNAME) and if found will use it for SPNego.

Most Python HTTP Rest-based plugins for technologies / APIs with authentication have a --kerberos switch which supercedes --username/--password and can be used on technologies that support SPNego Kerberos authentication. It will either use the TGT from the environment cache ($KRB5CCNAME) or if $KRB5_CLIENT_KTNAME is present will kinit from the keytab specified in $KRB5_CLIENT_KTNAME to a unique path per plugin to prevent credential cache clashes if needing to use different credentials for different technologies.

Automating Kerberos Tickets - if running a plugin by hand for testing then you can initiate your TGT via the kinit command before running the plugin but if running automatically in a monitoring server then use the standard k5start kerberos utility as a service to auto-initiate and auto-renew your TGT so that your plugins always authenticate to Kerberized services with a current valid TGT.

To use different kerberos credentials per plugin you can export KRB5CCNAME=/different/path before executing each plugin, and have multiple k5start instances maintaining each one.

High Availability / Multi-Master testing

Testing high availability and multi-master setups is best done through a load balancer.

HAProxy configurations are provided for all the major technologies under the haproxy-configs/ directory for many of the technologies tested in this project, including:

  • Hadoop HDFS NameNodes
  • Hadoop Yarn Resource Managers
  • HBase Masters, Stargate Rest & Thrift servers
  • Cassandra
  • Apache Drill
  • Impala
  • Presto SQL Coordinators
  • Kubernetes API
  • Oozie
  • SolrCloud
  • Elasticsearch

See Also

The following is pulled from my DevOps Python Tools repo (currently one of my favourite repos):

  • find_active_server.py - returns the first available healthy server or determines the active master in high availability setups. Configurable tests include socket, http, https, ping, url with optional regex content match and is multi-threaded for speed. Useful for pre-determining a server to be passed to tools that only take a single --host argument but for which the technology has later added multi-master support or active-standby masters (eg. Hadoop, HBase) or where you want to query cluster wide information available from any online peer (eg. Elasticsearch, RabbitMQ clusters). This is downloaded from my DevOps Python Tools repo as part of the build and placed at the top level. It has the ability to extend any nagios plugin to support multiple hosts in a generic way if you don't have a front end load balancer to run the check through. Example usage:
./check_elasticsearch_cluster_status.pl --host $(./find_active_server.py --http --port 9200 node1 node2 node3)

There are now also simplified subclassed programs so you don't have to figure out the switches for more complex services like Hadoop and HBase, just provide hosts as simple arguments and they'll return the current active master!

  • find_active_hadoop_namenode.py
  • find_active_hadoop_yarn_resource_manager.py
  • find_active_hbase_master.py
  • find_active_hbase_thrift.py
  • find_active_hbase_stargate.py
  • find_active_cassandra.py
  • find_active_apache_drill.py
  • find_active_impala.py
  • find_active_presto_coordinator.py
  • find_active_kubernetes_api.py
  • find_active_oozie.py
  • find_active_solrcloud.py
  • find_active_elasticsearch.py

These are especially useful for ad-hoc scripting or quick command line tests.

Configuration for Strict Domain / FQDN validation

Strict validations include host/domain/FQDNs using TLDs which are populated from the official IANA list. This is done via the Lib and PyLib submodules for Perl and Python plugins respectively - see those repos for details on configuring to permit custom TLDs like .local or .intranet (both already supported by default as they're quite common customizations).

Quality

Most of the plugins I've read from Nagios Exchange and Monitoring Exchange (now Icinga Exchange) in the last decade have not been of the quality required to run in production environments I've worked in (ever seen plugins written in Bash with little validation, or mere 200-300 line plugins without robust input/output validation and error handling, resulting in "UNKNOWN: (null)" when something goes wrong - right when you need them - then you know what I mean). That prompted me to write my own plugins whenever I had an idea or requirement.

That naturally evolved in to this, a relatively Advanced Collection of Nagios Plugins, especially when I began standardizing and reusing code between plugins and improving the quality of all those plugins while doing so.

Goals
  • specific error messages to aid faster Root Cause Analysis
  • consistent behaviour
  • standardized switches
  • strict input/output validation at all stages, written for security and robustness
  • code reuse, especially for more complex input/output validations and error handling
  • multiple --verbose levels & --debug mode
  • --warning/--critical thresholds with range support, in form of min:max (@ prefix inverts to expect value outside of this range)
  • support for use of $USERNAME and $PASSWORD environment variables as well as more specific overrides (eg. $MYSQL_USERNAME, $REDIS_PASSWORD) to give administrators the option to avoid leaking --password credentials in the process list for all users to see
  • self-timeouts
  • Metrics Graphing integrations - Graphite, InfluxDB, OpenTSDB and PNP4Nagios can all auto-graph the perfdata from these plugins
  • Continuous Integration with tests for success and failure scenarios:
    • unit tests for the custom supporting perl and python libraries
    • integration tests of the top level programs using the libraries for things like option parsing
    • functional tests for the top level programs using Docker containers for each technology (eg. Cassandra, Elasticsearch, Hadoop, HBase, ZooKeeper, Memcached, Neo4j, MongoDB, MySQL, Riak, Redis...)
  • easy rapid development of new high quality robust Nagios plugins with minimal lines of code

Several plugins have been merged together and replaced with symlinks to the unified plugins bookmarking their areas of functionality, similar to some plugins from the standard nagios plugins collection.

Some plugins such as those relating to Redis and Couchbase also have different modes and expose different options when called as different program names, so those symlinks are not just cosmetic. An example of this is write replication, which exposes extra options to read from a slave after writing to the master to check that replication is 100% working.

Perl ePN optimization is not supported at this time as I was running 13,000 production checks per Nagios server years ago (circa 2010) without ePN optimization - it's not worth the effort and isn't available in any of the other languages anyway.

Python plugins are all pre-byte-compiled as part of the automated build.

Modern scaling should be done using distributed computing, open source examples include Icinga2 and Shinken. Shinken's documentation cites an average 4 core server @ 3Ghz as supporting 150,000 checks per 5 minutes, which aligns with my own experience with Nagios Core. Using the latest hardware and proper setup could probably result in even higher scale before having to move to distributed monitoring architecture.

Libraries

Having written a large number of Nagios Plugins in the last 10 years in a variety of languages (Python, Perl, Ruby, Bash, VBS) I abstracted out common components of a good robust Nagios Plugin program in to libraries of reusable components that I leverage very heavily in all my modern plugins and other programs found under my other repos here on GitHub, which are now mostly written in Perl or Python using these custom libraries, for reasons of both concise rapid development and speed of execution.

These libraries enables writing much more thoroughly validated production quality code, to achieve in a quick 200 lines of Perl or Python what might otherwise take 2000-3000 lines to do properly (including some of the more complicated supporting code such as robust validation functions with long complex regexs with unit tests, configurable self-timeouts, warning/critical threshold range logic, common options and generated usage, multiple levels of verbosity, debug mode etc), dramatically reducing the time to write high quality plugins down to mere hours and at the same time vastly improving the quality of the final code through code reuse, as well as benefitting from generic future improvements to the underlying libraries.

This gives each plugin the misleading appearance of being very short, because only the some of the very core logic of what you're trying to achieve is displayed in the plugin itself, mostly composition of utility functions, and the error handling is often handled in custom libraries too, so it may appear that a simple one line field extraction or 'curl()' or 'open_file()' utility function call has no error handling at all around it but under the hood the error handling is handled inside the function inside a library, same for HBase Thrift API connection, Redis API connection etc so the client code as seen in the top level plugins knows it succeeded or otherwise the framework would have errored out with a specific error message such as "connection refused" etc... there is a lot of buried error checking code and a lot of utility functions so many operations become one-liners at the top level instead of huge programs that are hard to read and maintain.

I've tried to keep the quality here high so a lot of plugins I've written over the years haven't made it in to this collection, there are a lot still pending import, a couple others check_nsca.pl and check_syslog-ng_stats.pl are in the more/ directory until I get round to reintegrating and testing them with my current framework to modernize them, although they should still work with the tiny utils.pm from the standard nagios plugins collection.

I'm aware of Nagios::Plugin but my libraries have a lot more utility functions and I've written them to be highly convenient to develop with.

Older Plugins

Some older plugins may not adhere to all of the criteria above so most have been filed away under the older/ directory (they were used by people out there in production so I didn't want to remove them entirely). Older plugins also indicate that I haven't run or made updates to them in a few years so they're in basic maintenance mode and may require minor tweaks or updates.

If you're new remember to check out the older/ directory for more plugins that are less current but that you might find useful such as RAID checks for Linux MD Raid, 3ware / LSI MegaRaid / Dell Perc Raid Controllers (which are actually rebranded LSI MegaRaid so you can use the same check - I also recommend the widely used Dell OpenManage Check).

Contributions

Feedback, Feature Requests, Improvements and Patches are welcome.

Patches are accepted in the form of Github pull requests, for which you will receive attribution automatically as Github tracks these merges.

Support for Updates / Bugs Fixes / Feature Requests

Please raise a Github Issue ticket for if you need updates, bug fixes or new features. Github pull requests are more than welcome.

Since there are a lot of programs covering a lot of different technologies in this project, so remember to look at the software versions each program was written / tested against (documented in --help for each program, also found near the top of the source code in each program). Newer versions of software seem to change a lot these days especially in the Big Data & NoSQL space so plugins may require updates for newer versions.

Please make sure you have run make update first to pull the latest updates including library sub-modules and build the latest CPAN / PyPI module dependencies, (see Quick Setup above).

Make sure you run the code by hand on the command line with -v -v -v for additional debug output and paste the full output in to the issue ticket. If you want to anonymize your hostnames/IP addresses etc you may use the scrub.pl tool found in my DevOps Perl Tools repo.

Detailed Build Instructions

Automated Build


git clone https://github.com/harisekhon/nagios-plugins

cd nagios-plugins

make build

Some plugins like check_yum.py can be copied around independently but most newer more sophisticated plugins require the co-located libraries I've written so you should git clone && make on each machine you deploy this code to or just use the pre-built Docker image which has all plugins and dependencies inside.

You may need to install the GNU make system package if the make command isn't found (yum install make / apt-get install make)

To build just the Perl or Python dependencies for the project you can do make perl or make python.

If you only want to use one plugin, you can do make perl-libs or make python-libs and then just install the potential one or two dependencies specific to that one plugin if it has any, which is much quicker than building the whole project.

make builds will install yum rpms / apt debs dependencies automatically as well as a load of Perl CPAN & Python PyPI libraries. To pick and choose what to install follow the Manual Build section instead

This has become quite a large project and will take at least 10 minutes to build. The build is automated and tested on RHEL / CentOS 5/6/7 & Debian / Ubuntu systems.

Make sure /usr/local/bin is in your $PATH when running make as otherwise it'll fail to find cpanm

Python VirtualEnv / Perlbrew localized installs

The automated build will use 'sudo' to install required Perl CPAN & Python PyPI libraries to the system unless running as root or it detects being inside Perlbrew or VirtualEnv. If you want to install some of the common Perl / Python libraries such as Net::DNS and LWP::* using your OS packages instead of installing from CPAN / PyPI then follow the Manual Build section instead.

Offline Setup

Download the Nagios Plugins, Lib and Pylib git repos as zip files:

https://github.com/HariSekhon/nagios-plugins/archive/master.zip

https://github.com/HariSekhon/lib/archive/master.zip

https://github.com/HariSekhon/pylib/archive/master.zip

Unzip all and move Lib and Pylib to the lib and pylib folders under nagios plugins.

unzip nagios-plugins-master.zip
unzip pylib-master.zip
unzip lib-master.zip

mv -v nagios-plugins-master nagios-plugins
mv -v pylib-master pylib
mv -v lib-master lib
mv -vf pylib nagios-plugins/
mv -vf lib nagios-plugins/

Proceed to install CPAN and PyPI modules for whichever programs you want to use using your usual procedure - usually an internal mirror or proxy server to CPAN and PyPI, or rpms / debs (some libraries are packaged by Linux distributions).

All CPAN modules are listed in setup/cpan-requirements.txt.

All PyPI modules are listed in requirements.txt.

Internal PyPI Mirror example (JFrog Artifactory or similar):

sudo pip install --index https://host.domain.com/api/pypi/repo/simple --trusted host.domain.com -r requirements.txt

Proxy example:

sudo pip install --proxy hari:mypassword@proxy-host:8080 -r requirements.txt
Mac OS X

The automated build also works on Mac OS X but you will need to download and install Apple XCode development libraries. I also recommend you get HomeBrew to install other useful tools and libraries you may need like OpenSSL, Snappy and MySQL for their development headers and tools such as wget (these packages are automatically installed if Homebrew is installed on Mac OS X):

brew install openssl snappy mysql wget

CPAN's Crypt::SSLeay may not find the OpenSSL header and error like so:

fatal error: 'openssl/opensslv.h' file not found
#include <openssl/opensslv.h>

In this case, give it the path to the OpenSSL lib to build:

sudo OPENSSL_INCLUDE=/usr/local/opt/openssl/include OPENSSL_LIB=/usr/local/opt/openssl/lib cpan Crypt::SSLeay

then continue with the rest of the build:

make

You may get errors trying to install to Python library paths even as root on newer versions of Mac, sometimes this is caused by pip 10 vs pip 9 and downgrading will work around it:

sudo pip install --upgrade pip==9.0.1
make
sudo pip install --upgrade pip
make
ZooKeeper Checks

If you want to use any of the ZooKeeper content znode based checks (eg. for HBase / SolrCloud etc) based on check_zookeeper_znode.pl or any of the check_solrcloud_*_zookeeper.pl programs you will also need to install the zookeeper libraries which has a separate build target due to having to install C bindings as well as the library itself on the local system. This will explicitly fetch the tested ZooKeeper 3.4.8, you'd have to update the ZOOKEEPER_VERSION variable in the Makefile if you want a different version.

make zookeeper

This downloads, builds and installs the ZooKeeper C bindings which Net::ZooKeeper needs. To clean up the working directory afterwards run:

make clean-zookeeper

Manual Build

Fetch my library repos which are included as submodules (they're shared between this and other repos containing various programs I've written over the years).


git clone https://github.com/harisekhon/nagios-plugins

cd nagios-plugins

git submodule init

git submodule update

Then install the Perl CPAN and Python PyPI modules as listed in the next sections.

For Mac OS X see the Mac OS X section from Automated Build instructions.

Perl CPAN Modules

If installing the Perl CPAN or Python PyPI modules via your package manager or by hand instead of via the Automated Build From Source section, then read the requirements.txt and setup/cpan-requirements.txt files for the lists of Python PyPI and Perl CPAN modules respectively that you need to install.

You can install the full list of CPAN modules using this command:

sudo cpan $(sed 's/#.*//' < setup/cpan-requirements.txt

and install the full list of PyPI modules using this command:

sudo pip install -r requirements.txt
Net::ZooKeeper (for various ZooKeeper content checks for Kafka, HBase, SolrCloud etc)
check_zookeeper_znode.pl
check_zookeeper_child_znodes.pl
check_hbase_*_znode.pl
check_solrcloud_*_zookeeper.pl

The above listed programs require the Net::ZooKeeper Perl CPAN module but this is not a simple cpan Net::ZooKeeper, that will fail. Follow these instructions precisely or debug at your own peril:

# install C client library
export ZOOKEEPER_VERSION=3.4.8
[ -f zookeeper-$ZOOKEEPER_VERSION.tar.gz ] || wget -O zookeeper-$ZOOKEEPER_VERSION.tar.gz http://www.mirrorservice.org/sites/ftp.apache.org/zookeeper/zookeeper-$ZOOKEEPER_VERSION/zookeeper-$ZOOKEEPER_VERSION.tar.gz
tar zxvf zookeeper-$ZOOKEEPER_VERSION.tar.gz
cd zookeeper-$ZOOKEEPER_VERSION/src/c
./configure
make
sudo make install

# now install Perl module using C library with the correct linking
cd ../contrib/zkperl
perl Makefile.PL --zookeeper-include=/usr/local/include/zookeeper --zookeeper-lib=/usr/local/lib
LD_RUN_PATH=/usr/local/lib make
sudo make install

After this check it's properly installed by doing perl -e "use Net::ZooKeeper" which should return no errors if successful.

Other Dependencies

Some plugins, especially ones under the older/ directory such as those that check 3ware/LSI raid controllers, SVN, VNC etc require external binaries to work, but the plugins will tell you if they are missing. Please see the respective vendor websites for 3ware, LSI etc to fetch those binaries and then re-run those plugins.

The check_puppet.rb plugin uses Puppet's native Ruby libraries to parse the Puppet config and as such will only be run where Puppet is properly installed.

The check_logserver.py "Syslog to MySQL" plugin will need the Python MySQL module to be installed which you should be able to find via your package manager. If using RHEL/CentOS do:

sudo yum install MySQL-python

or try install via pip, but this requires MySQL to be installed locally in order to build the Python egg...

sudo easy_install pip
sudo pip install MySQL-python

Updating

Run make update. This will git pull and then git submodule update which is necessary to pick up corresponding library updates.

If you update often and want to just quickly git pull + submodule update but skip rebuilding all those dependencies each time then run make update-no-recompile (will miss new library dependencies - do full make update if you encounter issues).

Testing

There are full multi-level suites of tests against this repository and its libraries.

Continuous Integration is run on this repo with tests for success and failure scenarios:

  • Unit Tests - 1200+ unit tests covering the Perl library and Python library
  • Integration tests checking dependency integration, usage --help generation etc.
  • Custom tests for various languages and build systems, linting, coding style, and other standardizations
  • Functional Tests - 800+ full functional tests/ using dozens of Docker Images for full API testing of the various technologies

To trigger all tests run:

make test

which will start with the underlying libraries, then move on to top level integration tests and finally functional tests using docker containers if docker is available.

Bugs & Workarounds
Kafka dependency NetAddr/IP/InetBase autoload bug

If you encounter the following error when trying to use check_kafka.pl:

Can't locate auto/NetAddr/IP/InetBase/AF_INET6.al in @INC

This is an upstream bug related to autoloader, which you can work around by editing NetAddr/IP/InetBase.pm and adding the following line explicitly near the top just after package NetAddr::IP::InetBase;:

use Socket;

On Linux this is often at /usr/local/lib64/perl5/NetAddr/IP/InetBase.pm and on Mac /System/Library/Perl/Extras/<version>/NetAddr/IP/InetBase.pm.

You may also need to install Socket6 from CPAN.

This fix is now fully automated in the Make build by patching the NetAddr/IP/InetBase.pm file and always including Socket6 in dependencies.

Alternatively you can try the Python version check_kakfa.py which works in similar fashion.

MongoDB dependency Readonly library bug

The MongoDB Perl driver from CPAN doesn't seem to compile properly on RHEL5 based systems. PyMongo rewrite was considered but the extensive library of functions results in better code quality for the Perl plugins, it's easier to just upgrade your OS to RHEL6.

The MongoDB Perl driver does compile on RHEL6 but there is a small bug in the Readonly CPAN module that the MongoDB CPAN module uses. When it tries to call Readonly::XS, a MAGIC_COOKIE mismatch results in the following error:

Readonly::XS is not a standalone module. You should not use it directly. at /usr/local/lib64/perl5/Readonly/XS.pm line 34.

The workaround is to edit the Readonly module and comment out the eval 'use Readonly::XS' on line 33 of the Readonly module.

This is located here on Linux:

/usr/local/share/perl5/Readonly.pm

and here on Max OS X:

/Library/Perl/5.16/Readonly.pm
IO::Socket::SSL doesn't respect ignoring self-signed certs in recent version(s) eg. 2.020

Recent version(s) of IO::Socket::SSL (2.020) seem to fail to respect options to ignore self-signed certs. The workaround is to create the hidden touch file below in the same top-level directory as the library to make this it include and use Net::SSL instead of IO::Socket::SSL.

touch .use_net_ssl

Python SSL certificate verification problems

If you end up with an error like:

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:765)

It can be caused by an issue with the underlying Python + libraries due to changes in OpenSSL and certificates. One quick fix is to do the following:

sudo pip uninstall -y certifi &&
sudo pip install certifi==2015.04.28

Further Utilities

DevOps Python Tools & DevOps Perl Tools repos - contains another 100+ programs including useful tools such as:

  • Hive / Pig => Elasticsearch / SolrCloud indexers
  • Hadoop HDFS performance debugger, native checksum extractor, HDFS file retention & snapshot retention policy scripts, HDFS file stats, XML & running Hadoop cluster config differ
  • watch_url.pl - debugs load balanced web farms via multiple queries to a URL - returns HTTP status codes, % success across all requests, timestamps, round trip times, and optionally the output
  • tools for Ambari, Pig, Hive, Spark + IPython Notebook, Solr CLI
  • code reCaser for SQL / Pig / Neo4j / Hive HQL / Cassandra / MySQL / PostgreSQL / Impala / MSSQL / Oracle / Dockerfiles
  • anonymize.pl - anonymizes configs / logs for posting online - replaces hostnames/domains/FQDNs, IPs, passwords/keys in Cisco/Juniper configs, custom extensible phrases like your name or your company name
  • validate_json/yaml/ini/xml/avro/parquet.py - validates JSON, YAML, INI (Java Properties), XML, Avro, Parquet including directory trees, standard input and even optionally 'single quoted json' and multi-record bulk JSON data formats as found in MongoDB and Hadoop / Big Data systems.
  • PySpark Avro / CSV / JSON / Parquet data converters
  • Ambari Blueprints tool & templates
  • AWS CloudFormation templates
  • DockerHub API tools including more search results and fetching repo tags (not available in official Docker tooling)

Dockerfiles repo containing dozens of docker images source builds for many of the technologies covered in this repo (this is where many of the dockerized CI tests come from).

See Also

  • My Perl library - used throughout this code as a submodule to make the programs in this repo short
  • My Python library - Python version of the above library, also heavily leveraged to keep programs in this repo short
  • Spark => Elasticsearch - Scala application to index from Spark to Elasticsearch. Used to index data in Hadoop clusters or local data via Spark standalone. This started as a Scala Spark port of pig-text-to-elasticsearch.pig from my DevOps Python Tools repo

Enterprise Monitoring Systems

Compatible Monitoring Solutions

The following enterprise monitoring systems are compatible with this project:

  • Nagios - the original widely used open source monitoring system that set the standard

  • Icinga2 - popular open source Nagios fork rewritten with more features, Icinga retains the all important Nagios Plugin compatibility, but also has native distributed monitoring, rule based configuration, a REST API and native metrics graphing integrations via Graphite, InfluxDB and OpenTSDB to create graphs from the plugins' perfdata

  • Shinken - open source modular Nagios reimplementation in Python, Nagios config compatible, with distributed monitoring architecture, high availability, host / service discovery, forwards plugins' metrics perfdata via the Graphite protocol to Graphite or InfluxDB, see documentation

  • Centreon - open source french Nagios-compatible monitoring solution, can forward plugin's metrics perfdata to Graphite or InfluxDB via Graphite protocol, see documentation

  • Naemon - open source Nagios-forked monitoring solution, using Thruk as its GUI and PNP4Nagios for graphing the plugins' metrics perfdata

  • OpenNMS - open source enterprise-grade network management platform with native graphing, geo-mapping, Grafana integration, as well as Elasticsearch event forwarder integration for Kibana search/visualization. OpenNMS can execute Nagios Plugins via NRPE, see NRPEMonitor documentation

  • Pandora FMS - open source distributed monitoring solution with flexible dashboarding, graphing, SLA reporting and Nagios Plugin compatibility via Nagios wrapper for agent plugin

  • Sensu - open-core distributed monitoring system, compatible with both Nagios and Zabbix plugins. Enterprise Edition contains metrics graphing integrations for Graphite, InfluxDB or OpenTSDB to graph the plugins' metrics perfdata

  • Check_MK - open-core Nagios-based monitoring solution with rule-based configuration, service discovery and agent-based multi-checks integrating MRPE - MK's Remote Plugin Executor. See adapter_check_mk.py which can run any Nagios Plugin and convert its output to Check_MK local check format. Has built-in metrics graphing via PNP4Nagios, Enterprise Edition can send metrics to Graphite and InfluxDB via the Graphite protocol, see documentation

  • ZenOSS - open-core monitoring solution that can run Nagios Plugins, see documentation

  • OpsView Monitor - commercial Nagios-based monitoring distribution with native metrics graphing via Graph Center as well as InfluxDB integration via InfluxDB Opspack

  • OP5 Monitor - commercial Nagios-based monitoring distribution including metrics graphing via PNP4Nagios, has InfluxDB integration

  • GroundWork Monitor - commercial Nagios-based monitoring distribution with RRD metrics graphing and InfluxDB integration

  • Geneos - proprietary non-standard monitoring, was used by a couple of banks I worked for. Geneos does not follow Nagios standards so integration is provided via adapter_geneos.py which if preprended to any standard nagios plugin command will execute and translate the results to the CSV format that Geneos expects, so Geneos can utilize any Nagios Plugin using this program

  • SolarWinds - proprietary monitoring solution but can take Nagios Plugins, see doc

  • Microsoft SCOM - Microsoft Systems Center Operations Manager, can run Nagios Plugins as arbitrary Unix shell scripts with health / warning / error expression checks, see the Microsoft technet documentation

Incompatible Monitoring Solutions

  • Zabbix - open source monitoring solution with in-built graphing, distributed monitoring and auto discovery but unfortunately not Nagios Plugin compatible, some integration can be done via a wrapper script (we tried exactly this in 2012 but didn't like it enough to switch from Nagios), see this community forum thread for more information and code

  • OpsGenie - proprietary non-standard monitoring, cannot execute Nagios Plugins but has integration with existing Nagios, Icinga2 and Prometheus

Metrics Graphing Integrations

Graphite, InfluxDB, Prometheus, OpenTSDB, PNP4Nagios

Many monitoring systems will already auto-graph the performance metric data from these nagios plugins via PNP4Nagios but you can also forward it to newer more specialised metrics monitoring and graphing systems such as Graphite, InfluxDB, OpenTSDB and Prometheus (this last one is the most awkward as it requires pull rather than passively receiving).

The above list of enterprise monitoring systems documents each one's integration capabilities with links to their documentation.

Metrics Collection Integrations

You can also execute these Nagios Plugins outside of any nagios-compatible monitoring server and forward just the metrics to the major metrics monitoring systems using the following tools:

Other Metrics Integration Add-Ons
  • PNP4Nagios - widely used open source auto-graphing add-on for Nagios open source and similar Nagios-based monitoring systems, see list of enterprise monitoring systems above to see which ones bundle this
  • Graphios - sends perfdata collected by Nagios to metrics graphing systems like Graphite or InfluxDB (via Graphite protocol)
Antiquated Monitoring Solutions You Probably Shouldn't Still Be Using Today

More 3rd Party Nagios Plugins

This is a list of the best and most interesting 3rd party plugins, several of which I have used or come across over the years that deserve mention, usually due to their better quality than the typical Nagios Exchange / Monitoring Exchange plugins.

  • check_openmanage - Dell PowerEdge servers hardware monitoring plugin using Dell OpenManage. Written by Trond Hasle Amundsen - checks RAID, Processors, Memory, Fans, Temperature, Power Supplies etc. Top quality widely used plugin - one of my all time favourites
  • Consol Labs checks - one of the very best quality publishers of Nagios Plugins (I have a lot of respect for this team):
    • check_hpasm - HP Proliant servers hardware monitoring plugin using ASM - checks RAID, Processors, Memory, Fans, Temperature, Power supplies
    • check_logfiles - the best log monitoring Nagios Plugin I've seen, even accounts for log rotations
    • check_webinject - see below
  • WebInject - authenticate through HTTP Login portals and check the inside. Widely used and flexible via external XML config. Excellent - I used to use this a lot and it's probably the best of it's kind
  • Jolokia - JMX-HTTP bridge to make monitoring JMX easier via Rest calls from non-JVM scripting languages. This is far more scalable than running lots of JVM Nagios Plugins which have higher startup overhead
  • Percona plugins - MySQL plugins from MySQL specialists
  • check_drbd - can't remember if this is the plugin I used to use but I used to love it telling me when DRBD was behind by how much and caught up
  • check_tsd - OpenTSDB metrics query
  • check_prometheus_metric.sh - I don't normally rate bash scripts as Nagios Plugins but this is in the official project so it's worth a look
  • collectd-nagios - queries Collectd metrics for Nagios alerting
  • collectd exec-nagios.px - executes a Nagios Plugin and returns the metrics to Collectd to forward on to one of the many compatible metrics graphing solutions

Datameer

Datameer plugins referenced in Datameer docs from version 3 onwards in the Links section along with the official Nagios links. See here for more information on Datameer monitoring with Nagios:

After trying the 1 example plugin there, return to try the 9 plugins in this collection to extend your Datameer monitoring further.

You can’t perform that action at this time.