1 Nagios功能

1.1  监控工具

1.2  可以监控主机/服务或者资源

1.3  四种状态值

OK,WARNING,CRITICAL,UNKNOWN

CPU:90%(CRITICAL),80%(WARNING),OK,UNKOW

1.4  报警系统

2  Nagios core(Nagios核心)

2.1  本身不做任务监控工作

2.2  Plugins(高度插件化)

check_nginx

2.3  N种对象实现监控工作

1)        主机,主机组

2)        服务/资源, 服务组

3)        联系人(发送通知),联系人组

4)        时段

5)        命令 定义在模板中-> 应用到某个被监控对象,以实现具体的监控

2.4  N主机

Linux多个监控对象,如果有很多属性相同可以定义为模板

2.5  如何对远方主机进行监控

1)        获取远端主机信息

2)        Linux  nrpe ssh

3)        Windows NSclient++

4)        被动监控nsca被动监控

3 安装监控端

3.1  安装nagios

  1. 安装

yum -y install httpd gcc glibc glibc-common gd gd-devel php php-mysql mysql mysql-devel mysql-server

yum install xinetd openssl-devel

  1. 用户权限

groupadd nagcmd

useradd -G nagcmd nagios

passwd nagios

usermod -a -G nagcmd apache

  1. 下载

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.8.tar.gz

wget http://nagios-plugins.org/download/nagios-plugins-2.0.tar.gz

  1. 时间保证一致
  1. 解压  安装nagios

tar xf nagios-4.0.8.tar.gz

cd nagios-4.0.8

./configure --sysconfdir=/etc/nagios --with-command-group=nagcmd --enable-event-broker

  1. 编译

make all

make install

make install-init   // service

make install-commandmode

make install-config

make install-webconf

  1. 设置密码

htpasswd -c /etc/nagios/htpasswd.users nagiosadmin  创建一个加密文件 参数是用户名

设置密码  nagiosadmin

  1. 验证是否到当前目录寻找这个文件

less /etc/httpd/conf.d/nagios.conf

  1. 启动服务

service httpd start

chkconfig httpd on

chkconfig --add nagios

chkconfig nagios on

service nagios start

3.2  安装插件

  1. 解压并安装

tar xf nagios-plugins-2.0.tar.gz

ls

cd nagios-plugins-2.0

./configure --with-nagios-user=nagios --with-nagios-group=nagios       注意:此处不适用nagcmd

make

make install

  1. 重启服务

service nagios restart

service httpd restart

/usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg

  1. 关闭SELINUX

getenforce

setenforce 0

getenforce

vim /etc/sysconfig/selinux

4  认识Nagios配置文件

  1. Nagios配置文件都在/etc/nagios目录下
  2. Nagios.cfg主配置文件

n  cfg_file 需要附加的object目录下的文件

n  cfg_dir 直接包含某个目录  目录下的所有文件全部包含进来

n  resource.cfg 中信息敏感,$USER1$全局宏变量定义文件,最多支持32个,/usr/local/nagios/libexec/插件所在目录,

  1. Object目录 (各种配置文件)

n  Command.cfg命令配置文件

u  Command_name 和 command_line

u  举例,-w 警告信息  -c 严重信息 -p 检测多少数据包

u  命令可以传递参数(如何传递?)

n  Contact.cfg配置联系人文件

u  Contack_name 全局唯一,名字

u  Use  从那个模板继承

u  Alias  别名

u  Email  email地址

n

Timeperiods.cfg

5 监控一台主机的步骤

  1. 定义localhost.cfg

该主机的配置文件(在/etc/Nagios/object/目录下新建一个即可)

  1. 定义一个主机

define host{

use                     linux-server  //引用模板

host_name               localhost   //全局唯一

alias                   localhost       //别名

address                 127.0.0.1             //ip地址

}

  1. 定义主机组(先不看)

define hostgroup{

hostgroup_name  linux-servers

alias           Linux Servers

members         localhost

}

  1. 定义service服务

define service{

use                        local-service

host_name                  localhost

service_description            
PING

check_command              check_ping!100.0,20%!500.0,60%

}

-H 自动指定  $ARG1$ $ARG2$ 对应上面!之间的参数

6  监控Windows主机

6.1  通信方式

SNMP 和 NSClient++,NSClient支持nrpe,nsca(被动检测)

6.2  安装过程

  1. 安装NSClient++
  2. 指定访问用户名和密码
  3. 安装完成可以直接启动服务
  4. Netstat -an

查看端口12489(check_nt和NSclient通信)5666是nrpe端口

先到插件目录下检测一下是否能使用

  1. Check_nt 检测是否可以通信
  2. 测试:

-H ip -p 端口 -v 测试内容 -w -c -l 5,80,90  (过去5分钟参数,80警告,90紧急)

注意输出:

一般信息和性能信息。必须要使用|隔开

6.3  使用nagios检测

  1. 编辑/etc/Nagios/command.cfg文件

添加一个新的命令

  1. 编辑windows.cfg
  2. 定义主机
  3. 定义主机组
  4. 定义service

-l 后面所有都是一个参数

  1. 在/etc/Nagios/Nagios.cfg中引入这个文件
  2. 检查语法错误

/usr/local/Nagios/bin/Nagios -v
/etc/Nagios/Nagios.cfg

  1. 重启nagios

Service Nagios
restart

7  基于nrpe检测linux

7.1  通信过程

Nagios Server使用check_nrpe与被监控端NRPE进程通信

被监控端必须安装NRPE,NRPE依赖于nagios-plugins

NRPE默认监听5666端口

7.2  工作工程

7.3  被监控端安装步骤

  1. 安装依赖

yum -y groupinstall "Development
Tools" "Development Libraries

  1. 修改时间

date
0000

  1. 添加用户

useradd
-s /sbin/nologin nagios

  1. 配置,先安装nagios-plugins

tar xf nagios-plugins-2.0.tar.gz

./configure
--with-nagios-user=nagios --with-nagios-group=nagios   可以加上--sysconfig=

  1. 编译

make
all

make
install

  1. 安装nrpe安装依赖

yum
install openssh openssl-devel

tar
-zxvf nrpe-nrpe-2-15.tar.gz

  1. 编译安装

./configure
--with-nrpe-user=nagios     
--with-nrpe-group=nagios     
--with-nagios-user=nagios     
--with-nagios-group=nagios     
--enable-command-args     
--enable-ssl

make
all

make install-plugin

make install-daemon  (安装成守护进程)

make
install-daemon-config

  1. 修改配置信息/usr/local/nagios/etc/nrpe.conf 
    (最后有命令定义!!)

#
vim /usr/local/nagios/etc/nrpe.conf

log_facility=daemon

pid_file=/var/run/nrpe.pid

server_address=172.16.100.11  (服务监听地址,默认0.0.0.0)

server_port=5666

nrpe_user=nagios

nrpe_group=nagios

这个得改allowed_hosts=172.16.100.1   (允许谁来监控)

command_timeout=60

connection_timeout=300

debug=0

  1. 将nrpe修改为进程

/usr/local/nagios/bin/nrpe  -c
/usr/local/nagios/etc/nrpe.cfg

vim
/etc/init.d/nrped

#!/bin/bash

# chkconfig: 2345 88 12

# description: NRPE DAEMON

NRPE=/usr/local/nagios/bin/nrpe

NRPECONF=/usr/local/nagios/etc/nrpe.cfg

case "$1" in

start)

echo -n
"Starting NRPE daemon..."

$NRPE -c $NRPECONF
-d

echo "
done."

;;

stop)

echo -n
"Stopping NRPE daemon..."

pkill -u nagios
nrpe

echo "
done."

;;

restart)

$0 stop

sleep 2

$0 start

;;

*)

echo "Usage:
$0 start|stop|restart"

;;

esac

exit 0

或者,也可以在/etc/xinetd.d目录中创建nrpe文件,使其成为一个基于非独立守护进程的服务,文件内容如下:

service nrpe

{

flags = REUSE

socket_type = stream

wait = no

user = nagios

group = nagios

server =
/usr/local/nagios/bin/nrpe

server_args = -c
/etc/nagios/nrpe.cfg -i

log_on_failure += USERID

disable = no

}

  1. 定义命令

在被监控端,可以通过NRPE监控的服务或资源需要通过nrpe.conf文件使用命令进行定义,定义命令的语法格式为:command[<command_name>]=<command_to_execute>。比如:

command[check_rootdisk]=/usr/local/nagios/libexec/check_disk
-w 20% -c 10% -p /

command[check_swap]=/usr/local/nagios/libexec/check_disk
-w 40% -c 20%

command[check_sensors]=/usr/local/nagios/libexec/check_sensors

command[check_users]=/usr/local/nagios/libexec/check_users
-w 10 -c 20

command[check_load]=/usr/local/nagios/libexec/check_load
-w 10,8,5 -c 20,18,15

command[check_zombies]=/usr/local/nagios/libexec/check_procs
-w 5 -c 10 -s Z

command[check_all_procs]=/usr/local/nagios/libexec/check_procs
-w 150 -c 200

7.4  监控端安装步骤

  1. 安装nrpe

tar
-zxvf nrpe-2.12.tar.gz

cd
nrpe-2.12.tar.gz

./configure
--with-nrpe-user=nagios \

--with-nrpe-group=nagios \

--with-nagios-user=nagios \

--with-nagios-group=nagios \

--enable-command-args \

--enable-ssl

make
all

make
install-plugin

  1. 安装好之后,自动生成/usr/local/nagio/libexec/check_nrpe插件
  2. 定义命令

define command

{

command_name
check_nrpe

command_line
$USER1$/check_nrpe –H "$HOSTADDRESS$" -c $ARG1$

//
-H 自动对应hostaddress $ARG1$指定对方执行的命令

}

  1. check_nrpe语法格式

通过NRPE监控远程Linux主机要使用chech_nrpe插件进行,其语法格式如下:

check_nrpe -H
<host> [-n] [-u] [-p <port>] [-t <timeout>] [-c
<command>] [-a <arglist...>]

-H 指定主机

-c 指定要在被监控服务器执行的命令

-a 指定参数(可接受多个参数)

编译nrpe的时候需要增加参数--enable-command-args
修改nrpe.cfg文件中参数dont_blame_nrpe=1

  1. 定义服务

define service

{

use
generic-service

host_name
linuxserver1,linuxserver2

hostgroup_name
linux-servers

service_description
SWAP

check_command
check_nrpe!check_swap

normal_check_interval
30

}

使用示例3:(重要)

如果还希望在监控远程Linux主机时还能向其传递参数,则可以使用类似如下方式进行:

定义监控远程Linux主机disk资源的命令:

define
command

{

command_name
check_swap_nrpe

command_line
$USER1$/check_nrpe –H "$HOSTADDRESS$" -c "check_swap" -a
$ARG1$ $ARG2$

}

定义远程Linux主机的swap资源:

define
service

{

use
generic-service

host_name
linuxserver1,linuxserver2

hostgroup_name
linux-servers

service_description
SWAP

check_command
check_swap_nrpe!20!10

normal_check_interval
30

}

  1. 注意关闭所有的防火墙
  2. 定义主机文件linhost.cfg
  3. 定义主机组
  4. 定义服务
  5. 编辑nagios.cfg,引入这个linhost.cfg
  6. 检测配置文件是否正确
  7. 重启nagios

7.5  nrpe监控windows

需要修改NFS配置文件

check_nrpe -h 获取帮助

Nagios学习笔记的更多相关文章

  1. Nagios学习笔记四:基于NRPE监控远程Linux主机

    1.NRPE简介 Nagios监控远程主机的方法有多种,其方式包括SNMP.NRPE.SSH和NCSA等.这里介绍其通过NRPE监控远程Linux主机的方式. NRPE(Nagios Remote P ...

  2. Nagios学习笔记三:配置Nagios

    1.Nagios的主配置文件 Nagios的主配置文件为nagios.cfg,其语法非常简洁,通常#开头的行为注释行,而参数的设置格式为<parameter>=<value>: ...

  3. Nagios学习笔记二:Nagios概述

    1.简介 Nagios是插件式的结构,它本身没有任何监控功能,所有的监控都是通过插件进行的,因此其是高度模块化和富于弹性的.Nagios监控的对象可分为两类:主机和服务.主机通常指的是物理主机,如服务 ...

  4. Nagios学习笔记一:基本安装和配置

    ()解决安装Nagios的依赖关系: Nagios基本组件的运行依赖于httpd.gcc和gd.可以通过以下命令来检查nagios所依赖的rpm包是否已经完全安装: # yum -y install ...

  5. Puppet学习笔记(CentOS6.3+Puppet3.01)

    Puppet学习笔记(CentOS6.3+Puppet3.01)  技术 Add comments Oct262012 下了决心,好好学习puppet,周末专门去参加一个puppet的培训,难得朋友那 ...

  6. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  7. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  8. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  9. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

随机推荐

  1. C#_接口与抽象类

    .Net提供了接口,这个不同于Class或者Struct的类型定义.接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类.其实不然,接口和抽象类各有长处和缺陷,因此往往在 ...

  2. Memached、Redis、Mongodb的区别

    性能 ​ • 性能都很高,redis和memached差不多 > Mongodb 操作 ​ • Memached:数据结构单一,只有key/value数据结构 ​ • Redis有五种数据类型 ...

  3. 使用proxyee-down解决百度云下载限速问题

    1.在下面页面安装HTTP下载器 https://github.com/proxyee-down-org/proxyee-down#%E4%B8%8B%E8%BD%BD 2.安装switchy插件 h ...

  4. Hyperledger Fabric服务器配置及修改Docker容器卷宗存储根目录/位置

    Hyperledger Fabric节点服务器对存储空间的消耗还是比较大的,在我实际生产体验的过程中,每一条请求数据大概仅2K左右,但实际占用空间远不止这点,每个节点都会对Block及链进行保存维护, ...

  5. Paxos共识算法

    Paxos共识算法 paxos是一族用来解决分布式系统共识的基础算法,共识过程就是在一组节点上达成一个一致的结果.由于节点可能会错误,通讯消息也可能会丢失,所以建立共识是一个比较复杂的过程. paxo ...

  6. 入门向:南邮CTF_ReadAsm2_WP

    题目链接:http://ctf.nuptzj.cn/challenges#ReadAsm2 我比较菜,所以把思路全部敲上来了. 题目很明确告诉我们,这道题考察阅读汇编代码的能力. 在对编译环境和调用约 ...

  7. Python-opencv摄像头图像捕获

    实例一 (灰色调度) #!/usr/bin/env python # _*_ coding:utf-8 _*_ import cv2 as cv import numpy as np capture ...

  8. fsck命令详解

    基础命令学习目录首页 本文出自 “airfish2000” 博客,更多命令查看博客: http://airfish2000.blog.51cto.com/10829608/1880801   fsck ...

  9. Javascript开发者 常用知识

    Javascript是一种日益增长的语言,特别是现在ECMAScript规范按照每年的发布时间表发布.伴随着这门语言的规模化和快速发展,掌握JS(不仅仅是jQuery)的重要性,变得更加重要. 这不是 ...

  10. Beta版发布 - 感谢有你们

    在本次Beta版开发的过程中,很感谢组长王航对我的信任,让我统筹大家的工作任务和进度,使我对项目管理有了深刻的理解. 我也要感谢邹双黛,在beta版开发中因为邹双黛的帮助,我对于文字类工作已经越来越得 ...