如何在 Ubuntu 12.10 上使用 Python 创建 Nagios 插件

2023-11-19

介绍

Python 是 Linux 上默认提供的流行命令处理器。

我们之前已经介绍过如何在Ubuntu 12.10 x64上安装Nagios监控服务器.

这次,我们将扩展这个想法并使用 Python 创建 Nagios 插件。

这些插件将在客户端 VPS 上运行,并通过 NRPE 执行。

步骤 1 - 在客户端 VPS 上安装 NRPE


apt-get install -y python nagios-nrpe-server
useradd nrpe && update-rc.d nagios-nrpe-server defaults
  

第 2 步 - 创建 Python 脚本

将您的插件与其他 Nagios 插件放在同一目录中是一个好主意(/usr/lib/nagios/插件/例如)。

对于我们的示例,我们将创建一个脚本,通过从 shell 调用“df”来检查当前磁盘使用情况,并在使用率超过 85% 时抛出警报:


#!/usr/bin/python
import os, sys
used_space=os.popen("df -h / | grep -v Filesystem | awk '{print $5}'").readline().strip()

if used_space < "85%":
        print "OK - %s of disk space used." % used_space
        sys.exit(0)
elif used_space == "85%":
        print "WARNING - %s of disk space used." % used_space
        sys.exit(1)
elif used_space > "85%":
        print "CRITICAL - %s of disk space used." % used_space
        sys.exit(2)
else:
        print "UKNOWN - %s of disk space used." % used_space
        sys.exit(3)
  

我们将把这个脚本保存在/usr/lib/nagios/plugins/usedspace.py并使其可执行:


chmod +x /usr/lib/nagios/plugins/usedspace.py
  

整个 Nagios NRPE 插件归结为使用退出代码来触发警报。

您向脚本引入逻辑级别,如果您想触发警报(无论是正常、警告、严重还是未知),您可以指定退出代码。

请参阅以下 Nagios 退出代码:

Nagios 退出代码

Exit Code Status
0 OK
1 WARNING
2 CRITICAL
3 UNKNOWN

步骤 3 - 将脚本添加到客户端主机上的 NRPE 配置

删除原来的/etc/nagios/nrpe.cfg并向其中添加以下行:


log_facility=daemon
pid_file=/var/run/nagios/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=198.211.117.251
dont_blame_nrpe=1
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nagios/nrpe.d/

command[usedspace_python]=/usr/lib/nagios/plugins/usedspace.py
  

其中198.211.117.251是我们之前文章中的监控服务器。将这些更改为您自己的值。

确保重新启动 Nagios NRPE 服务:


service nagios-nrpe-server restart
  

步骤 4 - 将新命令添加到 Nagios 监控服务器上的 Nagios 检查

定义新命令/etc/nagios/objects/commands.cfg


define command{
        command_name    usedspace_python
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_python
        }
  

如您所见,它使用 NRPE 与端口 5666 建立 TCP 连接并运行命令“usedspace_python”,我们在/etc/nagios/nrpe.cfg在该远程主机上。

将此检查添加到客户端 VPS 的 Nagios 配置文件中。

对于我们的示例,我们将监视名为 UbuntuDroplet 的服务器并编辑/etc/nagios/servers/UbuntuDroplet.cfg


define service {
        use                             generic-service
        host_name                       UbuntuDroplet
        service_description             Custom Disk Checker In Python
        check_command                   usedspace_python
        }
  

重新启动 Nagios:


service nagios restart
  

验证新检查是否有效:

你们都完成了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 12.10 上使用 Python 创建 Nagios 插件 的相关文章

随机推荐

  • 如何在 Ubuntu 18.04 上启用 SSH

    Secure Shell SSH 是一种加密网络协议 用于客户端和服务器之间的安全连接 在本教程中 我们将向您展示如何在 Ubuntu 桌面计算机上启用 SSH 启用 SSH 将允许您远程连接到 Ubuntu 计算机并安全地传输文件或执行管
  • Spring Boot @SpringBootApplication,SpringApplication 类

    春季启动 SpringBootApplication注解 春季启动 SpringBootApplication注解用于标记一个配置类 该类声明了一个或多个 Bean方法和触发器auto configuration和组件扫描 这与声明一个类相
  • 如何在 Ruby 中使用字符串

    介绍 A string是一个或多个字符的序列 可以由字母 数字或符号组成 Ruby 中的字符串是对象 与其他语言不同 字符串是mutable 这意味着可以就地更改它们 而不用创建新字符串 您几乎会在编写的每个程序中使用字符串 字符串允许您使
  • 有用的 Bash 别名和函数简介

    介绍 在命令行上操作的越多 您就越会发现您使用的大多数命令只是可用命令的很小的子集 大多数任务都是习惯性的 您可能每天都以相同的方式运行这些任务 虽然许多最常见的命令实用程序的制造商试图通过使用缩写名称来消除无关的输入 想想通过输入 ls
  • 在 Ubuntu 14.04 上使用 Consul(服务发现系统)简介

    介绍 Consul是一个分布式 高可用 数据中心感知的服务发现和配置系统 它可用于在灵活而强大的界面中呈现服务和节点 使客户端始终能够了解其所属基础设施的最新视图 Consul 提供了许多不同的功能 用于提供有关您的基础设施的一致且可用的信
  • 如何在 Ubuntu 22.04 上使用 uWSGI 和 Nginx 为 Flask 应用程序提供服务

    介绍 在本指南中 您将使用FlaskUbuntu 22 04 上的微框架 本文的大部分内容将讨论如何设置uWSGI应用服务器以及如何启动应用程序和配置Nginx充当前端反向代理 先决条件 在开始本指南之前 您应该 安装了 Ubuntu 22
  • 如何使用 Nginx、Let's Encrypt 和 Docker Compose 保护容器化 Node.js 应用程序

    介绍 有多种方法可以增强您的灵活性和安全性Node js应用 用一个反向代理 like Nginx为您提供负载平衡请求 缓存静态内容和实施传输层安全 TLS 在服务器上启用加密 HTTPS 可确保与应用程序之间的通信保持安全 在容器上使用
  • Python 中的 numpy.append()

    Python numpyappend 函数用于合并两个数组 该函数返回一个新数组 原数组保持不变 NumPy append 语法 函数语法为 numpy append arr values axis None The arr可以是类似数组的
  • 如何使用 Apache 和 Nginx 创建临时和永久重定向

    介绍 HTTP 重定向或 URL 重定向是一种将一个域或地址指向另一个域或地址的技术 重定向有很多用途 并且需要考虑几种不同类型的重定向 每当站点需要将请求一个地址的人定向到另一个地址时 就会使用重定向 当您创建内容和管理服务器时 您经常会
  • eclipse.ini vm 参数 - eclipse.ini 文件位置 Mac、Windows

    eclipse ini是用于控制Eclipse启动的配置文件 我们可以使用 Xms Xmx 参数配置 Eclipse VM 参数 例如要使用的 JDK eclipse ini vm permgen 空间 最大和最小堆大小 eclipse i
  • 如何在 Java 中将字符串转换为数组

    有时我们不得不分开字符串到数组基于分隔符或某些正则表达式 例如 读取 CSV 文件行并解析它们以将所有数据获取到字符串数组 在本教程中 我们将学习如何在 Java 程序中将字符串转换为数组 Java 中的字符串到数组 字符串类split S
  • Java优先级队列

    我们时不时地需要以特定的顺序处理队列中的项目 优先级队列是一种完成这项工作的数据结构 Java优先级队列与 普通 不同queue 它不是 先进先出 而是按优先级顺序检索项目 Java优先级队列 The java util PriorityQ
  • Java 中的 CallableStatement 示例

    java中的CallableStatement用于从java程序中调用存储过程 存储过程是我们在数据库中为某些任务编译的一组语句 当我们处理复杂场景的多个表时 存储过程很有用 我们可以将所需的数据发送到存储过程 并在数据库服务器本身中执行逻
  • Docker 详解:如何容器化并使用 Nginx 作为代理

    Status 已弃用 本文已弃用 不再维护 Reason 本文中的技术已经过时 可能不再反映 Docker 最佳实践 请参阅 Docker 生态系统 常用组件简介 如何在 Ubuntu 14 04 上的 Docker 容器中运行 Nginx
  • 如何在 Ruby 中使用字符串方法

    介绍 Ruby strings有许多内置方法可以轻松修改和操作文本 这是许多程序中的常见任务 在本教程中 您将使用字符串方法来确定字符串的长度 索引和拆分字符串以提取子字符串 添加和删除空格和其他字符 更改字符串中字符的大小写以及查找和替换
  • Python 字符串包含

    Python String 类有 contains 我们可以使用它来检查它是否包含另一个字符串的函数 Python 字符串包含 Python字符串 contains 是一个实例方法 根据字符串对象是否包含指定的字符串对象 返回布尔值 Tru
  • 如何在 Ubuntu 14.04 上使用 Docker 和 Docker Compose 配置持续集成测试环境

    文章来自Docker 介绍 持续集成 CI 是指开发人员的实践整合尽可能频繁地编写代码 并且每次提交在合并到共享存储库之前和之后都会经过测试自动构建 CI speeds up your development process and min
  • Android BroadcastReceiver 示例教程

    今天我们将讨论并实现Android BroadcastReceiver 它是Android Framework中非常重要的组件 Android 广播接收器 Android BroadcastReceiver是android的一个休眠组件 用
  • 蟒蛇集

    In this tutorial we are going to learn Python Set In our previous article we learnt about Python String You can learn it
  • 如何在 Ubuntu 12.10 上使用 Python 创建 Nagios 插件

    介绍 Python 是 Linux 上默认提供的流行命令处理器 我们之前已经介绍过如何在Ubuntu 12 10 x64上安装Nagios监控服务器 这次 我们将扩展这个想法并使用 Python 创建 Nagios 插件 这些插件将在客户端