前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 14.04上安装Nagios 4并监控服务器

如何在Ubuntu 14.04上安装Nagios 4并监控服务器

原创
作者头像
独钓寒江雪_Ly
修改2018-10-09 10:02:08
6350
修改2018-10-09 10:02:08
举报

介绍

在本教程中,我们将介绍在Ubuntu 14.04上安装非常流行的开源监控系统Nagios 4。我们将介绍一些基本配置,以便您可以通过Web界面监控主机资源。我们还将利用将作为代理安装在远程主机上的Nagios Remote Plugin Executor(NRPE)来监控其本地资源。

Nagios对于保留服务器清单以及确保关键服务正常运行非常有用。使用像Nagios这样的监控系统是任何生产服务器环境的基本工具。

准备

要学习本教程,您必须在将运行Nagios的Ubuntu 14.04服务器上拥有超级用户权限。理想情况下,您将使用具有超级用户权限的非root用户。如果需要帮助进行设置,请按照本教程进行操作。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

还需要LAMP堆栈。如果你需要设置它,若您还未安装,您可以在腾讯云+社区找到很多相关专栏文章进行学习和安装。

本教程假定您的服务器启用了专用网络。如果没有,只需用公共IP地址替换所有对私有IP地址的引用。

现在我们已经解决了准备条件,让我们继续安装Nagios 4。

安装Nagios 4

本节将介绍如何在监控服务器上安装Nagios 4。您只需要完成此部分一次。

创建Nagios用户和组

我们必须创建一个运行Nagios流程的用户和组。创建“nagios”用户和“nagcmd”组,然后使用以下命令将用户添加到组:

代码语言:javascript
复制
sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios

安装构建依赖项

因为我们正在从源代码构建Nagios Core,所以我们必须安装一些开发库来完成构建。虽然我们正在使用它,但我们还将安装apache2-utils,它将用于设置Nagios Web界面。

首先,更新apt-get包列表:

代码语言:javascript
复制
sudo apt-get update

然后安装所需的包:

代码语言:javascript
复制
sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev xinetd apache2-utils unzip

我们现在安装Nagios。

安装Nagios Core

下载Nagios Core最新稳定版的源代码。转到Nagios下载页面,然后单击表单下方的“ 跳过下载”链接。复制最新稳定版本的链接地址,以便将其下载到Nagios服务器。

在撰写本文时,最新的稳定版本是Nagios 4.1.1。使用curl将其下载到您的主目录:

代码语言:javascript
复制
cd ~
curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz

使用以下命令提取Nagios存档:

代码语言:javascript
复制
tar xvf nagios-*.tar.gz

然后切换到解压缩的目录:

代码语言:javascript
复制
cd nagios-*

在构建Nagios之前,我们必须对其进行配置。如果要将其配置为使用postfix(可以使用apt-get安装),请添加--with-mail=/usr/sbin/sendmail到以下命令:

代码语言:javascript
复制
./configure --with-nagios-group=nagios --with-command-group=nagcmd 

现在使用以下命令编译Nagios:

代码语言:javascript
复制
make all

现在我们可以运行这些make命令来安装Nagios,init脚本和示例配置文件:

代码语言:javascript
复制
sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config
sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf

为了通过Web界面向Nagios发出外部命令,我们必须将Web服务器用户添加www-datanagcmd组:

代码语言:javascript
复制
sudo usermod -G nagcmd www-data

安装Nagios插件

复制最新版本的链接地址,以便将其下载到Nagios服务器。

在撰写本文时,最新版本是Nagios Plugins 2.1.1。使用curl将其下载到您的主目录:

代码语言:javascript
复制
cd ~
curl -L -O http://nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz

使用以下命令提取Nagios Plugins存档:

代码语言:javascript
复制
tar xvf nagios-plugins-*.tar.gz

然后切换到解压缩的目录:

代码语言:javascript
复制
cd nagios-plugins-*

在构建Nagios插件之前,我们必须对其进行配置。使用此命令:

代码语言:javascript
复制
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl

现在使用以下命令编译Nagios插件:

代码语言:javascript
复制
make

然后使用以下命令安装它:

代码语言:javascript
复制
sudo make install

安装NRPE

NRPE下载页面上找到最新稳定版NRPE的源代码。将最新版本下载到Nagios服务器。

在撰写本文时,最新版本是2.15。使用curl将其下载到您的主目录:

代码语言:javascript
复制
cd ~
curl -L -O http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz

使用以下命令提取NRPE存档:

代码语言:javascript
复制
tar xvf nrpe-*.tar.gz

然后切换到解压缩的目录:

代码语言:javascript
复制
cd nrpe-*

使用以下命令配置NRPE:

代码语言:javascript
复制
./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu

现在使用以下命令构建和安装NRPE及其xinetd启动脚本:

代码语言:javascript
复制
make all
sudo make install
sudo make install-xinetd
sudo make install-daemon-config

在编辑器中打开xinetd启动脚本:

代码语言:javascript
复制
sudo vi /etc/xinetd.d/nrpe

通过将Nagios服务器的专用IP地址添加到末尾来修改该only_from行(替换为服务器的实际IP地址):

代码语言:javascript
复制
only_from = 127.0.0.1 10.132.224.168

保存并退出。只允许Nagios服务器与NRPE通信。

重新启动xinetd服务以启动NRPE:

代码语言:javascript
复制
sudo service xinetd restart

现在已经安装了Nagios 4,我们需要对其进行配置。

配置Nagios

现在让我们执行初始的Nagios配置。您只需在Nagios服务器上执行一次此部分。

组织Nagios配置

在您喜欢的文本编辑器中打开主Nagios配置文件。我们将使用vi编辑文件:

代码语言:javascript
复制
sudo vi /usr/local/nagios/etc/nagios.cfg

现在通过找到此行,删除#来取消注释:

代码语言:javascript
复制
#cfg_dir=/usr/local/nagios/etc/servers

保存并退出。

现在创建将存储您将监视的每个服务器的配置文件的目录:

代码语言:javascript
复制
sudo mkdir /usr/local/nagios/etc/servers

配置Nagios联系人

在您喜欢的文本编辑器中打开Nagios联系人配置。我们将使用vi编辑文件:

代码语言:javascript
复制
sudo vi /usr/local/nagios/etc/objects/contacts.cfg

找到电子邮件指令,并用您自己的电子邮件地址替换其值(突出显示的部分):

代码语言:javascript
复制
email                           nagios@localhost        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******

保存并退出。

配置check_nrpe命令

让我们为Nagios配置添加一个新命令:

代码语言:javascript
复制
sudo vi /usr/local/nagios/etc/objects/commands.cfg

将以下内容添加到文件末尾:

代码语言:javascript
复制
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

保存并退出。这允许您在Nagios服务定义中使用该check_nrpe命令。

配置Apache

启用Apache重写和cgi模块:

代码语言:javascript
复制
sudo a2enmod rewrite
sudo a2enmod cgi

使用htpasswd创建一个名为“nagiosadmin”的管理员用户,可以访问Nagios Web界面:

代码语言:javascript
复制
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

在提示符下输入密码。记住此密码,因为您需要它来访问Nagios Web界面。

注意:如果您创建的用户名为“nagiosadmin”,则需要编辑/usr/local/nagios/etc/cgi.cfg并更改对您创建的用户的所有“nagiosadmin”引用。

现在创建一个nagios.confsites-enabled目录的符号链接:

代码语言:javascript
复制
sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/

Nagios准备开始了。让我们这样做,然后重启Apache:

代码语言:javascript
复制
sudo service nagios start
sudo service apache2 restart

要使Nagios能够在服务器引导时启动,请运行以下命令:

代码语言:javascript
复制
sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
可选:通过IP地址限制访问

如果要限制可以访问Nagios Web界面的IP地址,则需要编辑Apache配置文件:

代码语言:javascript
复制
sudo vi /etc/apache2/sites-available/nagios.conf

通过在它们前面添加#符号来和注释以下两行:

代码语言:javascript
复制
Order allow,deny
Allow from all

然后通过删除#符号取消注释以下行,并Allow from在行中添加要允许的IP地址或范围(空格分隔):

代码语言:javascript
复制
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1

由于这些行将在配置文件中出现两次,因此您需要再次执行这些步骤。

保存并退出。

现在重新启动Apache以使更改生效:

代码语言:javascript
复制
sudo service nagios restart
sudo service apache2 restart

Nagios现在正在运行,所以让我们尝试登录。

访问Nagios Web界面

打开您喜欢的Web浏览器,然后转到Nagios服务器(替换其中的IP地址或主机名):

代码语言:javascript
复制
http://nagios_server_public_ip/nagios

因为我们将Apache配置为使用htpasswd,所以您必须输入先前创建的登录凭据。我们使用“nagiosadmin”作为用户名:

进行身份验证后,您将看到默认的Nagios主页。单击左侧导航栏中的Hosts链接,查看Nagios正在监控的主机:

如您所见,Nagios仅监视“localhost”或其本身。

让我们用Nagios监视另一台主机吧!

使用NRPE监控主机

在本节中,我们将向您展示如何向Nagios添加新主机,以便对其进行监控。对要监视的每个服务器重复此部分。

在要监视的服务器上,更新apt-get:

代码语言:javascript
复制
sudo apt-get update

现在安装Nagios插件和NRPE:

代码语言:javascript
复制
sudo apt-get install nagios-plugins nagios-nrpe-server

配置允许的主机

现在,让我们更新NRPE配置文件。在你最喜欢的编辑器中打开它(我们正在使用vi):

代码语言:javascript
复制
sudo vi /etc/nagios/nrpe.cfg

找到该allowed_hosts指令,并将Nagios服务器的私有IP地址添加到逗号分隔列表中:

代码语言:javascript
复制
allowed_hosts=127.0.0.1,10.132.224.168

保存并退出。这会将NRPE配置为通过其专用IP地址接受来自Nagios服务器的请求。

配置允许的NRPE命令

查找根文件系统的名称(因为它是我们要监视的项目之一):

代码语言:javascript
复制
df -h /

我们将使用NRPE配置中的文件系统名称来监视磁盘使用情况(可能/dev/vda)。现在打开nrpe.cfg进行编辑:

代码语言:javascript
复制
sudo vi /etc/nagios/nrpe.cfg

NRPE配置文件非常长且充满了注释。您需要查找和修改几行:

  • server_address:设置为该主机的私有IP地址
  • allowed_hosts:设置为Nagios服务器的私有IP地址
  • command [check_hda1]:更改/dev/hda1为调用根文件系统的任何内容

上述三行应如下所示(替换相应的值):

代码语言:javascript
复制
server_address=client_private_IP
allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda

请注意,如果Nagios服务器配置为使用它们,则此文件中定义的其他几个“命令”将运行。另请注意,NRPE将在端口5666上侦听,因为server_port=5666已设置。如果您有阻止该端口的防火墙,请务必将其打开到Nagios服务器。

保存并退出。

重启NRPE

重新启动NRPE以使更改生效:

代码语言:javascript
复制
sudo service nagios-nrpe-server restart

在要监视的主机上完成NRPE的安装和配置后,必须先将这些主机添加到Nagios服务器配置中,然后才能开始监视它们。

将主机添加到Nagios配置

在Nagios服务器上,为要监视的每个远程主机的/usr/local/nagios/etc/servers/中创建新的配置文件。将单词“yourhost”替换为您的主机名称:

代码语言:javascript
复制
sudo vi /usr/local/nagios/etc/servers/yourhost.cfg

添加以下主机定义,将host_name值替换为远程主机名(示例中为“web-1”),alias带有主机描述的address值,以及带有远程主机的专用IP地址的值:

代码语言:javascript
复制
define host {
        use                             linux-server
        host_name                       yourhost
        alias                           My first Apache server
        address                         10.132.234.52
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}

使用上面的配置文件,Nagios将仅监控主机是启动还是关闭。如果这对您来说已足够,请保存并退出然后重新启动Nagios。如果您想监控特定服务,请继续阅读。

为要监视的服务添加任何这些服务块。请注意,check_command的值确定将监视的内容,包括状态阈值。以下是一些可以添加到主机配置文件的示例:

代码语言:javascript
复制
define service {
        use                             generic-service
        host_name                       yourhost
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
}

SSH(notifications_enabled设置为0禁用服务通知):

代码语言:javascript
复制
define service {
        use                             generic-service
        host_name                       yourhost
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
}

如果您不确定use generic-service是什么意思,它只是继承默认定义的名为“generic-service”的服务模板的值。

现在保存并退出。重新加载Nagios配置以使任何更改生效:

代码语言:javascript
复制
sudo service nagios reload

完成配置Nagios以监控所有远程主机后,应该进行设置。请务必访问Nagios Web界面,并查看“ 服务”页面以查看所有受监控的主机和服务:

结论

既然您正在监控主机及其某些服务,那么您可能需要花一些时间来确定哪些服务对您至关重要,因此您可以开始监控这些服务。您可能还需要设置通知,例如,当磁盘利用率达到警告或严重阈值或主站点已关闭时,您会收到电子邮件,这样您就可以及时解决问题或在问题发生之前解决问题。

想要了解更多关于Ubuntu的开源信息教程,请前往腾讯云+社区学习更多知识。

参考文献:《How To Install Nagios 4 and Monitor Your Servers on Ubuntu 14.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 安装Nagios 4
    • 创建Nagios用户和组
      • 安装构建依赖项
        • 安装Nagios Core
          • 安装Nagios插件
            • 安装NRPE
            • 配置Nagios
              • 组织Nagios配置
                • 配置Nagios联系人
                  • 配置check_nrpe命令
                    • 配置Apache
                      • 可选:通过IP地址限制访问
                  • 访问Nagios Web界面
                  • 使用NRPE监控主机
                    • 配置允许的主机
                      • 配置允许的NRPE命令
                        • 重启NRPE
                          • 将主机添加到Nagios配置
                          • 结论
                          相关产品与服务
                          云开发 CloudBase
                          云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档