Nagios 监控公共服务

本文档介绍了如何监控公开可用的服务,应用程序和协议。所谓“公共”,是指可通过网络访问的服务-本地网络或更大的Internet。公共服务的示例包括HTTP,POP3,IMAP,FTP和SSH。您可能每天都会使用许多其他公共服务。Nagios通常可以监控这些服务和应用程序及其底层协议,而无需任何特殊的访问要求。

相反,如果没有某种中间代理,Nagios将无法监控私人服务。与host相关联的私有服务的示例包括诸如CPU负载,内存使用率,磁盘使用率,当前用户数,进程信息等。这些私有服务或host属性通常不向外部客户端公开。这种情况需要在您需要监控此类信息的任何host上安装中间监控代理。有关监控不同类型host上的私有服务的更多信息,请参见以下文档:

 提示:有时您会发现可以使用SNMP监控有关私人服务和应用程序的信息。SNMP代理使您可以远程监控有关host的其他私有(和不可访问)信息。有关使用SNMP监控服务的更多信息,请查看有关监控交换机和路由器的文档。

 注意:这些说明假定您已根据快速入门指南安装了Nagios 。下面的示例配置条目引用在示例command.cfglocalhost.cfg配置文件中定义的对象。

监控服务插件

当您发现自己需要监控特定的应用程序,服务或协议时,很可能存在一个插件来监控它。Nagios官方插件发行版附带了可用于监控各种服务和协议的插件。在插件发行版的contrib /子目录中也可以找到大量有用的插件。在Nagios的交易所的网站host的一些已写入用户额外的插件,所以检查出来,当你有一个机会。

如果您没有找到合适的插件来监控所需的内容,则可以随时编写自己的插件。插件易于编写,因此不要让这种想法吓scar您。阅读有关开发插件的文档以获取更多信息。

我将引导您监控一些您可能迟早会使用的基本服务。可以使用作为Nagios插件分发的一部分安装的插件之一来监控每个服务。让我们开始吧。

创建host定义

在监控服务之前,首先需要定义与该服务关联的host。您可以将host定义放置在cfg_file指令指定的任何对象配置文件中,或放置在cfg_dir指令指定的目录中。如果已经创建了host定义,则可以跳过此步骤。

对于此示例,假设您要监控远程host上的各种服务。我们将该host称为remotehost。host定义可以放置在其自己的文件中,也可以添加到已经存在的对象配置文件中。远程host的host定义如下所示:

define host {
    use         generic-host        ; Inherit default values from a template
    host_name   remotehost          ; The name we're giving to this host
    alias       Some Remote Host    ; A longer name associated with the host
    address     192.168.1.50        ; IP address of the host
    hostgroups  allhosts            ; Host groups this host is associated with
}

现在,已经为要监控的host添加了定义,我们可以开始定义应监控的服务。与host定义一样,服务定义可以放在任何对象配置文件中。

创建服务定义

对于要监控的每个服务,您需要在Nagios Core中定义一个与您刚创建的host定义相关联的服务。您可以将服务定义放置在cfg_file指令指定的任何对象配置文件中,或放置在cfg_dir指令指定的目录中。

下面给出了一些用于监控公共服务(HTTP,FTP等)的示例服务定义。

监控HTTP

您可能会想要在某个时候监控Web服务器-您的或其他人的。该check_http插件设计来做到这一点。它了解HTTP协议,并且可以监控响应时间,错误代码,返回的HTML中的字符串,服务器证书等。

commands.cfg文件包含使用一个命令定义check_http插件。看起来像这样:

define command {
    name            check_http
    command_name    check_http
    command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}

用于监控remotehost计算机上的HTTP服务的简单服务定义如下所示:

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description HTTP
    check_command       check_http
}

这个简单的服务定义将监控remotehost上运行的HTTP服务。如果Web服务器在10秒钟内没有响应或返回HTTP错误代码(403、404等),它将产生警报。这就是基本监控所需要的。

 提示:要进行更高级的监控,请以–help作为命令行参数手动运行check_http插件,以查看可以提供给插件的所有选项。这–help语法适用于所有我将在本文中覆盖插件。

下面显示了用于监控HTTP服务的更高级的定义。该服务定义将检查/download/index.php URI是否包含字符串“ latest-version.tar.gz”。如果找不到字符串,URI无效或Web服务器花费超过5秒钟的时间来响应,则会产生错误。

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description Product Download Link
    check_command       check_http!-u /download/index.php -t 5 -s "latest-version.tar.gz"
}

监控FTP

当需要监控FTP服务器时,可以使用check_ftp插件。该commands.cfg文件包含使用一个命令定义check_ftp插件,它看起来是这样的:

define command {
    command_name    check_ftp
    command_line    $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
}

用于监控remotehost上的FTP服务器的简单服务定义如下所示:

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description FTP
    check_command       check_ftp
}

如果FTP服务器在10秒内未响应,则此服务定义将监控FTP服务并生成警报。

下面显示了更高级的服务定义。此服务将检查remotehost上端口1023上运行的FTP服务器。如果服务器在5秒钟内没有响应,或者服务器响应中不包含字符串“ Pure-FTPd [TLS]”,它将生成警报。

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description Special FTP 
    check_command       check_ftp!-p 1023 -t 5 -e "Pure-FTPd [TLS]"
}

监控SSH

当需要监控SSH服务器时,可以使用check_ssh插件。该commands.cfg文件包含使用一个命令定义check_ssh插件,它看起来是这样的:

define command {
    command_name    check_ssh
    command_line    $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
}

用于监控remotehost上的SSH服务器的简单服务定义如下所示:

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description SSH
    check_command       check_ssh
}

如果SSH服务器在10秒钟内没有响应,则此服务定义将监控SSH服务并生成警报。

下面显示了更高级的服务定义。如果服务器在5秒钟内没有响应,或者服务器版本字符串与“ OpenSSH_4.2”不匹配,则此服务将检查SSH服务器并生成警报。

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description SSH Version Check 
    check_command       check_ssh!-t 5 -r "OpenSSH_4.2"
}

监控SMTP

check_smtp插件可以使用监控您的电子邮件服务器。该commands.cfg文件包含使用一个命令定义check_smtp插件,它看起来是这样的:

define command {
    command_name    check_smtp
    command_line    $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$
}

用于监控remotehost上的SMTP服务器的简单服务定义如下所示:

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description SMTP
    check_command       check_smtp
}

如果SMTP服务器在10秒钟内未响应,则此服务定义将监控SMTP服务并生成警报。

下面显示了更高级的服务定义。如果服务器在5秒钟内没有响应,或者服务器的响应中不包含“ mygreatmailserver.com”,则此服务将检查SMTP服务器并生成警报。

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description SMTP Response Check 
    check_command       check_smtp!-t 5 -e "mygreatmailserver.com"
}

监控POP3

check_pop插件可以使用您的电子邮件服务器上监控POP3服务。该commands.cfg文件包含使用一个命令定义check_pop插件,它看起来像这样:

define command {
    command_name    check_pop
    command_line    $USER1$/check_pop -H $HOSTADDRESS$ $ARG1$
}

用于监控remotehost上的POP3服务的简单服务定义如下所示:

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description POP3
    check_command       check_pop
}

如果POP3服务器在10秒钟内未响应,则此服务定义将监控POP3服务并生成警报。

下面显示了更高级的服务定义。如果服务器在5秒钟内未响应,或者服务器的响应中不包含“ mygreatmailserver.com”,则此服务将检查POP3服务并生成警报。

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description POP3 Response Check 
    check_command       check_pop!-t 5 -e "mygreatmailserver.com"
}

监控IMAP

check_imap插件可以使用您的电子邮件服务器上监控IMAP4服务。该commands.cfg文件包含使用一个命令定义check_imap插件,它看起来是这样的:

define command {
    command_name    check_imap
    command_line    $USER1$/check_imap -H $HOSTADDRESS$ $ARG1$
}

用于监控remotehost上的IMAP4服务的简单服务定义如下所示:

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description IMAP
    check_command       check_imap
}

如果IMAP服务器在10秒钟内未响应,则此服务定义将监控IMAP4服务并生成警报。

下面显示了更高级的服务定义。如果服务器在5秒钟内没有响应,或者服务器的响应中不包含“ mygreatmailserver.com”,则此服务将检查IMAP4服务并生成警报。

define service {
    use                 generic-service     ; Inherit default values from a template
    host_name           remotehost
    service_description IMAP4 Response Check 
    check_command       check_imap!-t 5 -e "mygreatmailserver.com"
}

重新启动Nagios Core

将新的host和服务定义添加到对象配置文件后,就可以开始监控它们了。为此,您需要验证配置重新启动Nagios Core

如果验证过程中产生任何错误消息,请先修复您的配置文件,然后再继续。确保在验证过程没有任何错误之前,不要(重新)启动Nagios!

觉得文章有用?

点个广告表达一下你的爱意吧 !😁