Nagios监控系统的深入使用与配置
立即解锁
发布时间: 2025-08-20 02:35:31 阅读量: 1 订阅数: 3 

# Nagios监控系统的深入使用与配置
## 1. 监控概述与概念
在监控系统中,我们会涉及到一些通用的概念,这些概念在Nagios监控系统中也有体现。
### 1.1 关键概念
- **主机(Hosts)**:需要被监控的服务器,在Nagios中被称为主机。
- **服务(Services)**:主机上运行的各种程序,Nagios会对这些服务进行监控。
- **命令(Commands)**:Nagios使用命令来检查服务。
- **联系人(Contacts)**:当监控的服务出现问题时,需要被通知的人员。
- **联系人组(Contact Groups)**:由多个联系人组成的组。
### 1.2 主机分组
Nagios提供了主机组(Hostgroups)的功能,用于对主机进行分区。例如,当基础设施规模较大时,我们可以将一些不太关键的服务器划分到一个主机组,将关键的生产数据库服务器划分到另一个主机组。这样可以根据不同的主机组配置不同的通知方式,如为生产数据库服务器问题发送短信通知,为备用性能测试服务器问题发送电子邮件通知。
### 1.3 插件与架构
Nagios通过提供插件和开放的插件架构来满足不同类型服务的监控需求。默认安装的Nagios带有六十多个插件,如`check_tcp`、`check_mailq`、`check_file_age`等。当需要监控新的服务时,我们可以先在互联网上搜索相关的Nagios插件,例如目前有32种不同的MySQL监控插件,可用于检查从复制延迟到连接计数再到临时表创建等各个方面。
## 2. 监控本地资源
### 2.1 服务器状态检查
基本的监控形式是确保服务器处于运行状态。对于我们配置的Nagios,它会对添加的其他服务器进行此检查。但我们不会对Nagios虚拟机进行ping操作,因为Nagios服务器宕机意味着通知无法发出。如果某些防火墙会丢弃ping请求(即所有Internet控制消息协议(ICMP)数据包),我们可以选择其他网络服务进行检查,如ssh服务。如果ssh服务无响应,服务器可能也存在其他问题。
### 2.2 资源限制检查
确认系统正常运行后,下一步是检查是否接近操作系统级别的资源限制,如磁盘空间、进程数量和CPU负载平均值。默认配置中包含这些检查,我们通常不希望在没有这些检查的情况下运行系统。例如,负载平均值警报可能是流量洪峰到来的第一个指示。
### 2.3 修改警报阈值
Nagios的默认警报值在大多数情况下是合理的,例如磁盘空间检查在剩余20%时发送“警告”警报,在剩余10%时发送“关键”警报。但我们可能希望更加谨慎,通过编辑Nagios配置来更改警报值。
具体操作步骤如下:
1. 创建新目录:
```bash
nagios $ mkdir -p modules/nagios/files/conf.d/hosts
```
2. 复制配置文件:
```bash
nagios $ cp /etc/nagios3/conf.d/localhost_nagios2.cfg \
modules/nagios/files/conf.d/hosts/localhost.cfg
```
3. 编辑`localhost.cfg`文件,找到以下部分并修改:
```plaintext
define service {
use local-service
service_description Disk Space
check_command check_all_disks!20%!10%
}
```
将`20%`改为`99%`,然后保存文件。
4. 管理Puppet模块:打开`modules/nagios/manifests/server.pp`文件,添加新的文件资源部分,设置`recurse`属性为`true`,并删除旧的`localhost_nagios2.cfg`文件:
```ruby
class nagios::server {
package {
"nagios3":
ensure => present
}
service {
"nagios3":
ensure => running,
hasrestart => true,
enable => true,
hasstatus => true,
restart => "/etc/init.d/nagios3 reload",
require => Package["nagios3"]
}
file {
"/etc/nagios3/apache2.conf":
source => "puppet:///modules/nagios/apache2.conf",
owner => root,
group => root,
mode => 644,
notify => Service["apache2"];
"/etc/nagios3/htpasswd.users":
source => "puppet:///modules/nagios/htpasswd.users",
owner => www-data,
group => nagios,
mode => 640,
require => [Package["apache2"],Package["nagios3"]];
"/etc/nagios3/nagios.cfg":
source => "puppet:///modules/nagios/nagios.cfg",
owner => nagios,
group => nagios,
mode => 644,
require => [Package["apache2"],Package["nagios3"]],
notify => [Service["apache2"],Service["nagios3"]];
"/var/lib/nagios3/rw":
ensure => directory,
owner => nagios,
group => www-data,
mode => 710,
require => Package["nagios3"];
"/etc/nagios3/conf.d":
source => "puppet:///modules/nagios/conf.d/",
ensure => directory,
owner => nagios,
group => nagios,
mode => 0644,
recurse => true,
notify => Service["nagios3"],
require => Package["nagios3"];
"/etc/nagios3/conf.d/localhost_nagios2.cfg":
ensure => absent;
}
user {
"www-data":
groups => "nagios",
notify => Package["apache2"],
require => Package["nagios3"],
}
}
```
5. 运行Puppet并重启Nagios:运行Puppet使更改生效并重启Nagios。
6. 强制检查服务:通过Web界面强制Nagios立即检查此服务。点击左侧窗格中的“Service Detail”链接,然后点击右侧窗格中的“Disk Space”,进入磁盘空间检查详细信息页面。点击“Re-schedule the next check of this service”,并在下一步页面中通过“Commit”按钮提交表单。此时返回“Service Detail”页面,会看到磁盘空间状态以黄色突出显示,状态列为“Warning”。
### 2.4 恢复默认设置
将磁盘空间警告阈值更改为99%可以确保Nagios正常运行,但在正常操作中,此级别警报可能过于频繁。我们可以编辑`modules/nagios/files/conf.d/hosts/localhost.cfg`文件,更改服务定义,然后通过Web界面再次强制检查,磁盘空间状态将恢复为绿色。
## 3. 监控服务
### 3.1 服务监控的重要性
MassiveApp服务器本身可能正在运行,但这并不意味着所有服务都正常工作。MassiveApp使用了多种网络服务(如Apache、MySQL、memcached),如果其中任何一个服务离线,MassiveApp可能会变慢或完全宕机。因此,为每个服务设置单独的监控可以在某个组件关闭时收到特定警报,并知道需要重启或调整哪些服务。
### 3.2 简单端口检查监控
一些服务可以通过简单的端口检查进行监控。例如,ssh服务可以通过检查其配置的TCP端口是否响应来确认其可用性。默认配置文件`/etc/nagios3/conf.d/localhost.cfg`中包含了对ssh服务的检查:
```plaintext
define service {
use local-service
service_description ssh
check_command check_ssh
}
```
`check_command`变量设置为`check_ssh`,这是Nagios的内置插件之一。默认情况下,该插件会连接到ssh守护进程,并将响应显示在Nagios Web界面的“Status Information”字段中。
### 3.3 测试`check_ssh`插件
我们可以通过命令行测试`check_ssh`插件:
- 无参数运行:
```bash
nagios $ /usr/lib/nagios/plugins/check_ssh
check_ssh: Could not parse arguments
Usage:check_ssh [-46] [-t <timeout>] [-r <remote version>]
[-p <port>] <host>
```
- 带主机参数运行:
```bash
nagios $ /usr/lib/nagios/plugins/check_ssh localhost
SSH OK - OpenSSH_5.3p1 Debian-3ubuntu4 (protocol 2.0)
```
- 发送错误数据测试:
```bash
nagios $ /usr/lib/nagios/plugins/check_ssh -
```
0
0
复制全文


