侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

监控软件Nagios的服务器端在Linux系统上的安装和配置方法

linux  /  管理员 发布于 7年前   170

Nagios的基本思想就是nagios server 获取被监控节点(monitored server)的相关信息,通过CGI(Web GUI)或者邮件等方式展示给管理员。
信息的获取主要分为主动拿,被动得到,其中主动拿分直接去被监控节点取或者中间数据库节点取。

如果是个个被监控节点直接去取,机器一多,nagios所在的系统CPU可能会扛不住,所以我们系统在测试环境中中使用了被动获取NSCA的方式,以后可能会转到NDOUtils方式,通过数据库实现监控端和被监控端的分离。


NSCA具体工作过程:

1. 数据生成: 被监控端程序定时收集数据并发送到Nagios服务端,Nagios服务端的NSCA进程收到数据,数据放到指定文件(nagios.cfg和nsca.cfg中指定)。

2. 数据处理: Nagios实时处理指定文件,将数据存到queue,同时Nagios会定期检查queue,对数据做最终处理,例如:发送alert邮件,记录日志等。
监控系统的最终模式:Nagios + NSCA + Pnp4nagios(bulk&npcd)。
NSCA负责收集数据,Nagios把收集的数据按照Pnp4nagios要求的格式写到spool文件,每隔15分钟把文件移动到npcd处理的spool文件夹,npcd调用process_perfdata.pl处理spool文件夹中的文件,最后存到rrd里,在Nagios监控页面加入pnp4nagios的web访问url,就可以查看图形化监控数据了。

接下来说说我们Nagios的安装,

Nagios Server端安装

一台liunx server(CentOS),安装以下安装包 的的对应版本

1. 基本nagios以及Web GUI安装包

复制代码代码如下:
httpd-*.tar.gz,php-*.tar.gz, nagios-*.tar.gz, nagios-plugins-*.tar.gz

安装步骤

2. 图形化性能数据安装包

复制代码代码如下:
pnp4nagios-*.tar.gz

安装步骤
3.  Linux 系统监控插件

主动方式:nrpe-*.tar.gz,被动方式:nsca-*.tar.gz
nsca安装步骤
Note: inetd或者xinetd没有使用在我们的系统中


Nagios monitored Clients
对于NSCA模式,我们使用了Python脚本+Cron Job(crontab)的方式来定时按格式发送数据到Nagios Server,所以被监控设备上面只要安装了Python就可以了。

现在说说在我们系统中如何是用NSCA方式来获取我们需要的被监控节点的资源使用情况信息。


Nagios Server端的基本配置:

1. nagios web gui 访问配置,系统中使用的是nagios core中推荐的配置方式,通过apache httpd访问nagios web,安装nagios的时候会自动寻找系统中安装的httpd,把nagios的httpd文件放到httpd的conf.d目录下,这样,只要生成一次nagios web访问的密码就可以通过http://localhost/nagios/访问nagios web.

复制代码代码如下:
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

2. 在Nagios中定义要监控的机器和要监控的服务
2. 1 在/usr/local/nagios/etc/objects/中定义被监听节点和需要被监听的服务,例如:

复制代码代码如下:
/usr/local/nagios/etc/objects/system_1.cfg
## define hosts
# system_1 oam_1
define host{
use linux-server,host-pnp
host_name system_1_oam_1
address <ip>
contact_groups system_1_admins,systems_admins
}
......
# system_1 traffic_1
define host{
use linux-server,host-pnp
host_name system_1_traffic_1
address <ip>
contact_groups system_1_admins,systems_admins
}
......
## define services
# system_1 oam_1</p><p>define service{
use passive_service,srv-pnp
service_description CPU_Status
host_name system_1_oam_1
contact_groups system_1_admins,systems_admins
}
define service{
use passive_service,srv-pnp
service_description Memory_Status
host_name system_1_oam_1
contact_groups system_1_admins,systems_admins
}
......</p><p># system_1 traffic_1
define service{
use passive_service,srv-pnp
service_description CPU_Status
host_name system_1_traffic_1
contact_groups system_1_admins,systems_admins
}

Note:
a. passive_service是NSCA需要的配置
b. host-pnp和srv-pnp是pnp4nagios要用的配置
2.2  把定义的配置文件添加到/usr/local/nagios/etc/nagios.cfg中

复制代码代码如下:
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg</p><p>cfg_file=/usr/local/nagios/etc/objects/system_1.cfg
cfg_file=/usr/local/nagios/etc/objects/system_2.cfg
......
nagios_user=nagios
nagios_group=nagios
lock_file=/usr/local/nagios/var/nagios.lock
status_update_interval=10

3. 对不同的系统添加系统监控管理员

3.1

复制代码代码如下:
/usr/local/nagios/etc/objects/contactgroups.cfg
define contactgroup{
contactgroup_name system_1_admins
alias system_1_admins
members oam-1,traffic-1
}
......

3.2

复制代码代码如下:
/usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name oam-1 ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias oam-1 ; Full name of user
service_notification_options c
host_notification_options d
email <a href="https://www.jb51.net//LINUXjishu/mailto:[email protected]">[email protected]</a> ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}

define contact{
contact_name traffic-1 ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias traffic-1 ; Full name of user
email <a href="https://www.jb51.net//LINUXjishu/mailto:[email protected]">[email protected]</a> ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}
......


4. NSCA配置
4.1 NSCA端:如果没有端口冲突之类的问题,/usr/local/nagios/etc/nsca.cfg可以作为默认配置直接使用
Note: 当Nagios端有问题的时候,nsca本身可以保存收到的数据,要小心数据量大小的问题,监控机器多的时候,Nagios挂的时间长了点,文件就很容易变的很大
4.2 Nagios端:
4.2.1 修改/usr/local/nagios/etc/objects/templates.cfg,增加被动检测模版

复制代码代码如下:
define service{
use generic-service
name passive_service
active_checks_enabled 0
passive_checks_enabled 1 # We want only passive checking
flap_detection_enabled 0
register0 # This is a template, not a real service
is_volatile 0
check_period 24x7
max_check_attempts 1
normal_check_interval 5
retry_check_interval1
check_freshness 0
contact_groups system_admins
check_command check_dummy!0
notification_interval 120
notification_period 24x7
notification_optionsw,u,c,r
stalking_options w,c,u
}

4. 2.2 修改/usr/local/nagios/etc/commands.cfg,增加命令定义如何处理NSCA发送来的数据

复制代码代码如下:
# 'check_nsca' command definition
define command{
command_name check_dummy
command_line $USER1$check_dummy$ARG1$
}

Note: check_dummy很简单,处理Nagios中OK,WARNING,CRITICAL,UNKNOWN

复制代码代码如下:
nagios:/usr/local/nagios/etc # /usr/local/nagios/libexec/check_dummy 0
OK
nagios:/usr/local/nagios/etc # /usr/local/nagios/libexec/check_dummy 1
WARNING
nagios:/usr/local/nagios/etc # /usr/local/nagios/libexec/check_dummy 2
CRITICAL
nagios:/usr/local/nagios/etc # /usr/local/nagios/libexec/check_dummy 3
UNKNOWN

4.2.3 检查/usr/local/nagios/etc/nagios.cfg已经可以处理外部NSCA发送来的数据,默认是没有问题的

复制代码代码如下:
accept_passive_service_checks=1
accept_passive_host_checks=1
check_external_commands=1
command_check_interval=-1
command_file=/usr/local/nagios/var/rw/nagios.cmd
log_passive_checks=1

5. 查看Nagios GUI中新加的host和service已经存在

6. 添加pnp4nagios bulk+npcd 模式监听系统

6.1 修改/usr/local/nagios/etc/nagios.cfg

复制代码代码如下:
#处理performance数据
process_performance_data=1
#host_perfdata_command=process-host-perfdata
#service_perfdata_command=process-service-perfdata
#performance数据存储文件
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
#performance数据存储格式
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$\tSERVICEOUTPUT::$SERVICEOUTPUT$
#performance文件存储方式
host_perfdata_file_mode=a
service_perfdata_file_mode=a
#performance文件处理时间间隔
host_perfdata_file_processing_interval=15
service_perfdata_file_processing_interval=15
#performance文件处理命令
host_perfdata_file_processing_command=process-host-perfdata-fileservice_perfdata_file_processing_command=process-service-perfdata-file

6.2 修改/usr/local/nagios/etc/objects/commands.cfg,增加performance文件处理命令

复制代码代码如下:
define command{
command_name process-service-perfdata-file
command_line /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}

define command{
command_name process-host-perfdata-file
command_line /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}

6.3 修改nagios.cfg,设置在nagios web gui中显示pnp4nagios图标的方式
第一种方法在templates.cfg里面加入如下,只能在新窗口打开图像数据

复制代码代码如下:
define host {
name host-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
register 0
}</p><p>define service {
name srv-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
register 0
}

第二种方法可以在鼠标移到pnp4nagios图标的时候就可以开到实时图标,不过效果不是很好,按照说明加入如下:

拷贝status-header.ssi到/usr/local/nagios/share/ssi/目录下面,同时修改templates.cfg,加入如下内容:

复制代码代码如下:
define host {
name host-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
register 0
}
define service {
name srv-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
register 0
}

Note1: 自动出现的小窗口清晰度不好,我喜欢第一种方式
Note2: 这里没有涉及email的配置,记得通知设计的时候小心消息泛滥被投诉。。。


  • 上一条:
    Linux系统中uniq命令的基本使用教程
    下一条:
    Linux应用帮助你来征服数学学习
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在Linux系统中使用Iptables实现流量转发功能流程步骤(0个评论)
    • vim学习笔记-入门级需要了解的一些快捷键(0个评论)
    • 在centos7系统中实现分区并格式化挂载一块硬盘到/data目录流程步骤(0个评论)
    • 在Linux系统种查看某一个进程所占用的内存命令(0个评论)
    • Linux中grep命令中的10种高级用法浅析(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2017-07
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-03
    • 2022-04
    • 2022-08
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-06
    • 2023-07
    • 2023-10
    • 2023-12
    • 2024-01
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客