Centos7安装部署Nagios

news/2024/11/14 8:02:57/文章来源:https://www.cnblogs.com/Johny-zhao/p/18542414

简介

Nagios 是一款自动化运维工具,可以协助运维人员监控服务器的运行状况,并且拥有报警功能。

1、Nagios 核心及插件将安装在/usr/local/nagios
2、Nagios 核心会配置好监控当前服务器的一些基本信息

仅供参考,记录一下centOS7下nagios配置步骤,完整的步骤以及原理请参照原文,原文非常详细!

想要实现的效果是,把一台linux配置为监控主机,这台监控主机监控本机的一些服务,另外还监控一台linux机器和一台windows机器的服务。

nagios的安装:

安装基础支持套件:

 [root@nagios-a ~]# yum install gcc glibc glibc-common gd gd-devel xinetd openssl-devel -y

创建系统用户

创建nagios用户并设置密码

/usr/sbin/useradd -m nagios
passwd nagios

创建nagcmd用户组,将nagios和apache(web服务器的运行用户)添加至该组

/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache

下载Nagios安装包

wget -O nagioscore.tar.gz https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.14.tar.gz  #下载nagios核心4.4.14

下载的路径在/root下

 nagios核心的编译与安装

 解压源码包

tar xzf nagioscore.tar.gz   #解压源码包 
cd nagioscore-nagios-4.4.14/ #解压完成后,切换到nagios目录下

编译配置信息

./configure --with-command-group=nagcmd
编译

make all
安装nagios,并初始化脚本及基础配置文件

make install
make install-init
make install-config
make install-commandmode

配置web服务器

创建apache的配置文件,配置文件目录在/etc/httpd/conf.d/文件下

make install-webconf

为nagios的web界面创建nagiosadmin用户,并设置密码

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin	#这个账户是登录nagios网页中的用户,密码设置为123456

把apache加入到开机启动项,并重启apache

systemctl enable httpd.service			#把httpd加入到开机启动项中
systemctl restart httpd.service			#重启httpd服务

编译并安装nagios插件包
Nagios 实际的监控脚本都是通过插件实现的,本文中的插件包是官方提供插件包(大约50个用于监控的插件)

wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz #下载nagios插件plugins-2.2.1
解压插件包

tar -zxvf nagios-plugins-2.2.1.tar.gz
cd nagios-plugins-2.2.1
编译并安装

./configure --with-nagios-user=nagios --with-nagios-group=nagios
make

make all
make install

ls /usr/local/nagios/libexec/|wc -l
#查看插件的个数

启动nagios核心

将nagios核心加入到自动启动列表

chkconfig --add nagios
chkconfig nagios on

检查nagios基础配置文件是否有问题

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

重启nagios服务

systemctl restart nagios

开启防火墙端口
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=80/tcp --permanent

打开浏览器验证

http://192.168.10.1/nagios
用户名:nagiosadmin
密码:123456

插件装好了,下面修改一下配置文件,设置监控的主机,首先设置监控本机:

在/usr/local/nagios/etc/object/下,有一个localhost.cfg文件,这个文件本来就是存在的,是不需要修改的。

define host {

use linux-server ; Name of host template to use
; This host definition will inherit all variables that are defined
; in (or inherited by) the linux-server host template definition.
host_name localhost
alias 1.121
address 127.0.0.1
}

这样,本机就修改完了,接下来,进行监控windows的配置:

在/usr/local/nagios/etc/object/下,有一个windows.cfg文件,这个文件也是本来就存在的,修改这个文件,使nagios可以监控windows主机,修改这个文件也非常简单,只需要把windows主机的ip地址放在address对应位置就可以了:

define host {

use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 192.168.59.137 ; IP address of the host
}

当然,alias可以改成任意的名字。

重启nagios,可以发现localhost的服务被正常监控,windows主机也可以被ping通,但是windows的服务是监控不到的,这是怎么回事呢,是因为windows没有装nagios插件呀,这样nagios就无法监控到windows的服务了,下面为windows安装nagios插件:

windows下的nagios监控插件名叫NSClient++,访问官网 http://www.nsclient.org,下载安装包,这里我下载的是NSCP-0.5.2.35-x64 .msi,下载完成以后,双击进行安装。

 

这里我选的是comlete:

安装完成后,记得在服务中把NSClient++服务启动起来:

 

 然后看到有些服务已经起来了,但是有些服务看起来并不能正常监控,下面修改一下windows插件的配置文件,默认安装的位置是在C:\Program Files\NSClient++下,nsclient.ini这个文件就是配置文件了

# If you want to fill this file with all available options run the following command:
# nscp settings --generate --add-defaults --load-all
# If you want to activate a module and bring in all its options use:
# nscp settings --activate-module <MODULE NAME> --add-defaults
# For details run: nscp settings --help


; in flight - TODO
[/settings/default]

; Undocumented key
allowed hosts = 192.200.1.121


; in flight - TODO
[/settings/NRPE/server]

; Undocumented key
verify mode = none

; Undocumented key
insecure = true


; in flight - TODO
[/modules]

; Undocumented key
CheckExternalScripts = enabled

; Undocumented key
CheckHelpers = enabled

; Undocumented key
CheckNSCP = enabled

; Undocumented key
CheckDisk = enabled

; Undocumented key
WEBServer = enabled

; Undocumented key
CheckSystem = enabled

; Undocumented key
NSClientServer = enabled

; Undocumented key
CheckEventLog = enabled

; Undocumented key
NSCAClient = enabled

; Undocumented key
NRPEServer = enabled

把 diable改为enabled,这样服务就能被监控了,改完之后记得去把服务里把NSClient++服务重启一下,然后就能看到监控正常了呢

当然,如果有些服务你不想让他监控,那就去配置文件修改一下监控的内容,比如不想监控一些windows服务,那么就在:windows.cfg文件里把相应的服务注释掉:

 

#define service {
#
# use generic-service
# host_name winserver
# service_description W3SVC
# check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
#}

 

# Create a service for monitoring the Explorer.exe process
# Change the host_name to match the name of the host you defined above

#define service {

# use generic-service
# host_name winserver
# service_description Explorer
# check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
#}

同理,linux的本机localhost.cfg文件,注释掉相应的服务:

 

#define service {
#
# use local-service ; Name of service template to use
# host_name localhost
# service_description HTTP
# check_command check_http
# notifications_enabled 0
#}

之后重启nagios服务,可以看到注释掉的服务都不见了:

 至此,已经配置好了nagios对本机和windows主机的监控,下面进行配置nagios监控其他linux机器:

监控其他linux机器,一般来说需要手动添加两个文件,在安装nagios目录下的 /nagios/etc/object/下,分别是hosts.cfg文件和services.cfg文件,其中hosts.cfg文件主要指定被监控主机的相关情况,包括ip地址以及主机名等;而services.cfg则是定义需要监控的服务等,下面给出简单的配置示例:

hosts.cfg

define host{
use linux-server
host_name 1.131
address 192.168.59.138
}

define host{
use linux-server
host_name 2.76
address 192.168.59.139
}
#####################################################################
define hostgroup{
hostgroup_name test-servers
alias test servers
members 1.131,2.76
}

在hosts.cfg文件中简单定义了两台需要监控的linux主机以及一个主机组,use项是引用了local-service服务的属性值,这个local-service在template.cfg文件中有定义,定义如下:

define host {

name linux-server ; The name of this host template
use generic-host ; This template inherits other values from the generic-host template
check_period 24x7 ; By default, Linux hosts are checked round the clock
check_interval 5 ; Actively check the host every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each Linux host 10 times (max)
check_command check-host-alive ; Default command to check Linux hosts
notification_period workhours ; Linux admins hate to be woken up, so we only notify during the day
; Note that the notification_period variable is being overridden from
; the value that is inherited from the generic-host template!
notification_interval 120 ; Resend notifications every 2 hours
notification_options d,u,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default
register 0 ; DON'T REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}

在services.cfg文件中简单定义了一个服务,用于测试监控主机是否能够正常被监控到:

 

define service{
use local-service
host_name 1.131,2.76
service_description check-host-alive
check_command check-host-alive
}

现在两个配置文件写好了,然后需要在nagios.cfg(nagios.cfg文件在nagios目录下的etc下)文件中添加对这两个文件的引用,只需要添加以下两行:

cfg_file=/usr/local/nagios/etc/objects/hosts.cfg

cfg_file=/usr/local/nagios/etc/objects/services.cfg

至此,对远端linux主机的简单监控就完成了,重启nagios以后可以看到两台linux主机已经up:

 如果想要监控远端主机的多个服务,当然还是要装linux插件的,以远端主机1.131为例,安装nagios插件和nrpe,依然是去nagios官网下载,先增加nagios用户,之后获取nagios插件包和nrpe包,解压后安装:

useradd nagios

wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz
tar -zxvf nagios-plugins-2.2.1.tar.gz
tar -zxvf nrpe-3.2.1.tar.gz
cd nagios-plugins-2.2.1/
./configure --prefix=/usr/local/nagios
make
make all
make install

chown nagios.nagios /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios/libexec

cd nrpe-3.2.1/
./configure --prefix=/user/local/nagios
make all
make install

然后,修改一下配置文件,允许监控主机的监控,需要修改的是/usr/local/nagios/etc目录下的nrpe.cfg文件:

allowed_hosts=127.0.0.1,192.168.59.136

这里,只需要在allowed_hosts后加上监控主机的ip就可以了,然后开启nrpe服务,确认端口开启以后去监控主机上测试一下:

/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
[root@nagios-b etc]# netstat -tunlp | grep nrpe
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 12545/nrpe
tcp6 0 0 :::5666 :::* LISTEN 12545/nrpe

可以看到,端口已经在被监听了,下面去监控主机上测试一下:

[root@nagios-a ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.59.138
NRPE v3.2.1

正常显示了NRPE的版本

之后可以配置被监控主机的其他服务了,修改监控主机的/usr/local/nagios/etc/objects下的services.cfg,比如修改成这样:

define service{
use local-service
host_name 1.131
service_description check-host-alive
check_command check-host-alive
}

define service {

use local-service
host_name 1.131
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

 

# Define a service to check the disk space of the root partition
# on the local machine. Warning if < 20% free, critical if
# < 10% free space on partition.

define service {

use local-service
host_name 1.131
service_description Root Partition
check_command check_local_disk!20%!10%!/
}

 

# Define a service to check the number of currently logged in
# users on the local machine. Warning if > 20 users, critical
# if > 50 users.

define service {

use local-service
host_name 1.131
service_description Current Users
check_command check_local_users!20!50
}

 

# Define a service to check the number of currently running procs
# on the local machine. Warning if > 250 processes, critical if
# > 400 processes.

define service {

use local-service
host_name 1.131
service_description Total Processes
check_command check_local_procs!250!400!RSZDT
}

 

# Define a service to check the load on the local machine.

define service {

use local-service
host_name 1.131
service_description Current Load
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}

 

# Define a service to check the swap usage the local machine.
# Critical if less than 10% of swap is free, warning if less than 20% is free

define service {

use local-service
host_name 1.131
service_description Swap Usage
check_command check_local_swap!20%!10%
}

 

# Define a service to check SSH on the local machine.
# Disable notifications for this service by default, as not all users may have SSH enabled.

define service {

use local-service
host_name 1.131
service_description SSH
check_command check_ssh
notifications_enabled 0
}

之后检查一下配置文件有没有错误:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios Core 4.4.3
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2019-01-15
License: GPL

Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...

Running pre-flight check on configuration data...

Checking objects...
Checked 20 services.
Checked 4 hosts.
Checked 3 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 24 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 4 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors: 0

Things look okay - No serious problems were detected during the pre-flight check

如图输出证明没有问题,之后放心的重启nagios就好了,

 可以看到这些服务都可以正常监控了呢!

 到这里配置已经完成了,还可以设置一个邮件报警的功能,这个功能的配置是在contacts.cfg这个配置文件中配置的,内容如下:

define contact {

contact_name xiaobai ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Nagios Admin ; Full name of user
email *****@***.com ;<<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}

 

###############################################################################
#
# CONTACT GROUPS
#
###############################################################################

# We only have one contact in this simple configuration file, so there is
# no need to create more than one contact group.

define contactgroup {

contactgroup_name admins
alias Nagios Administrators
members xiaobai
}

在email出配置上你的地址,就可以收到邮箱报警啦!

至此,对我来说nagios的配置已经全部完成啦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832399.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全媒体数字化转型,业务和技术双管齐下

不少传媒企业已经开始积极探索转型之路。通过打造个性IP工作室、重视C端用户服务、深化G端合作等方式,传媒行业正在逐步构建起一个以用户为中心、以数据为驱动、以创新为核心的新型媒体生态。2024年,是我国全功能接入国际互联网30周年。 在这个特殊的年份,中国的传媒行业也同…

南谷的往事与未来

纯属娱乐 本人南海实验中学 制作人员信息队自娱自乐在Tail Nightly建了个南谷一位作文大蛇就写下了一篇小说(在更新) 喜剧小说,神话小说 对事不对人,内容纯属虚构,切勿对号入座 南谷的往事与未来 洛谷网址 喜剧小说,神话小说 对事不对人,内容纯属虚构,切勿对号入座 作者…

前端构建工具对比

工具特性解析 1. Webpack输入输出灵活:支持单文件和多文件输入输出,可以进行复杂的模块化输出,并且支持全目录结构。 文件捆绑和格式支持:具有强大的捆绑功能,并支持 ESM、CJS、UMD 等模块格式输出。 CSS 和资源处理:具备强大的 CSS 预编译和资源处理能力,并支持插件扩展…

静态测试解决方案

经纬恒润拥有十几年的嵌入式软件开发及测试经验及经验丰富的软件测试团队,能够借助测试工具及设备给客户提供优质的静态测试服务。 随着自动驾驶、车联网等技术突飞猛进的发展,汽车中包含的软件越来越多。如何保证这些软件的质量成了重中之重。经纬恒润拥有十几年的嵌入…

前端技术对html的内联元素的学习

内联元素目录内联元素字体元素斜体字粗体字 字体元素 斜体字 同样,<em>和<i>标签默认情况下均以斜体显示标签中的文本,但是<em>标签具有强调的语义,用来表示标签中的内容很重要,而<i>标签仅仅用于定义斜体文本。 示例代码如下: <!DOCTYPE html…

Blender 常用材质节点

渲染模型 PBR全称:Physically Based Rendering (基于物理的渲染)BRDF全称:Bidirectional Reflectance Distribution Function (双向散射分布函数)BSDF包含BRDF(反射)和BTDF(透射)功能区介绍 伪用户 如果材质没有任何模型引用,关掉blender时,该材质会被自动删除,要想不…

Linux搭建FTP服务器配置

一、概念 1.1介绍 FTP:File transfer protocol 文件传输协议 端口 TCP21:命令 TCP20:数据 1.2原理 默认采用被动模式 被动模式FTP 为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动…

基于RBAC做数据权限

在RBAC模型下,系统只会验证用户A是否属于角色RoleX,而不会判断用户A是否能访问只属于用户B的数据DataB。这种问题我们称之为“水平权限管理问题”。 数据权限 数据规则 比如我们系统的商机数据,需要从下面几个维度来控制数据访问权限。 销售人员只能看自己的数据; 各大区的…

Free5GC源码研究(9) - PCF研究(下)

前文再续书接上一回,继续研究Free5GC中所实现的PCF的另外两组服务:SMPolicy和PolicyAuthorizationSMPolicy PCF中与SMF的交互,对session的控制有着很重的的分量,甚至连TS23.503中对与Policy Control的定义都是指PCF指示SMF去控制QoS流的过程。Policy control: The process …

遥感大数据智能分析与应用

在数字化和信息化时代,遥感技术已经成为获取地球表面信息的重要手段。随着遥感数据量的激增,如何高效、智能地分析和应用这些数据,成为了一个亟待解决的问题。本文将探讨遥感大数据智能分析的现状与未来趋势。遥感大数据的挑战与机遇遥感数据正以前所未有的速度增长,这些数…

GMES101 作业一

一共就是求两个矩阵一个旋转矩阵一个投射矩阵 旋转矩阵 旋转矩阵还能第一时间反应过来去找公式 投射矩阵 投射矩阵就完全不记得了,又去看了一遍视频,终于完全理解了投射矩阵究竟是个啥意思 原来还要自己算\[ M_{persp\to ortho}= \begin{matrix} n&0&0&0 \\ 0&am…

waypoint常常被翻译成航路点

参考资料:2023-端到端自动驾驶系统研究综述-陈妍妍 2024-EMMA: End-to-End Multimodal Model for Autonomous Driving