阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7下Nagios的安装及配置

475次阅读
没有评论

共计 46612 个字符,预计需要花费 117 分钟才能阅读完成。

简介

Nagios 是一款自动化运维工具,可以协助运维人员监控服务器的运行状况,并且拥有报警功能。本文章将介绍其安装方法和详细的配置方法。

nagios 监控服务应用指南
本地资源:负载,CPU,磁盘,内存。IO,RAID,温度,passwd 文件变化,本地所有文件指纹识别
网络服务:端口,URL,丢包,进程,网络流量
其他设备:交换机,打印机,windows 等。
业务数据:用户登录失败次数,用户登录网站次数,输入验证码失败的次数,某个 API 接口流量并发,电商网站订单,支付交易的数量

nagios 成员:主程序 nagios,插件 nagios-plugins,和一些可选的客户端 nrpe,NSClient++,NSCA 和 NDOUtils

  • NRPE– 半被动模式
    存放位置:安装在客户端
    NRPE 作用:在客户端执行相关的脚本插件来获取数据,实现对客户端主机资源的监控。
    存在形式:守护进程 (agent) 模式,开启的端口 5666

  • NSClient++:半被动模式,相当于 linux 系统的 nrpe

  • NDOUtils(不推荐用)
    存在位置:服务端
    作用:用于将 nagios 的配置信息和各 event 产生的数据存入数据库中,以实现对这些数据的检索和处理。

  • NSCA:纯被动模式 —> 用在分布式监控环境中
    位置:NSCA 需要同时安装在 nagios 的服务器端和客户端

软件版本

nagios 版本:4.3.1
nagios-plugins 版本:2.2.1
nrpe 版本:3.1.0

实现环境

nagios 运行在 LAMP 环境下(如果还没有安装 LAMP 环境,可以参考下我的安装 LNMP 文章 http://www.linuxidc.com/Linux/2017-10/147581.htm,因为我已经编译安装了 php 和 Mysql,本文直接采取 yum 方式安装 apache,当然也可以采取编译方式安装 apache。看个人喜好和公司需求)

CentOS 版本:CentOS Linux release 7.3.1611 (Core) 64 位
Apache 版本:Apache/2.4.6
Nginx 版本: nginx 1.12.0
Mysql 版本:mysql 5.7.18
PHP 版本:php 7.1.4

下载 nagios 软件及插件包

[root@nagios ~]# cd /software/
[root@nagios software]# wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.1.tar.gz
[root@nagios software]# wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
[root@nagios software]# wget https://sourceforge.net/projects/nagios/files/nrpe-3.x/nrpe-3.1.0.tar.gz
[root@nagios software]# ll
-rw-r--r--   1 root  root  11095797 4 月  21 15:57 nagios-4.3.1.tar.gz
-rw-r--r--   1 root  root   2728818 4 月  20 00:04 nagios-plugins-2.2.1.tar.gz
-rw-r--r--   1 root  root    501028 4 月  17 22:36 nrpe-3.1.0.tar.gz

安装 nagios-server 服务端

安装依赖包

[root@nagios software]# yum -y install httpd httpd-devel gcc glibc glibc-common gd gd-devel perl-devel perl-CPAN fcgi perl-FCGI perl-FCGI-ProcManager

解压 nagios 源码包

[root@nagios software]# tar zxvf nagios-4.3.1.tar.gz

进入解压后的目录

[root@nagios software]# cd nagios-4.3.1/

创建 ngaios 用户和组(把 nginx 启动用户 www 加入到 nagios 相关组)

[root@nagios nagios-4.3.1]# useradd nagios -s /sbin/nologin 
[root@nagios nagios-4.3.1]# id www
[root@nagios nagios-4.3.1]# groupadd nagcmd
[root@nagios nagios-4.3.1]# usermod -a -G nagcmd nagios 
[root@nagios nagios-4.3.1]# usermod -a -G nagcmd www
[root@nagios nagios-4.3.1]# id -n -G nagios
[root@nagios nagios-4.3.1]# id -n -G www

配置 nagios

[root@client1 nagios-4.3.1]# ./configure --with-command-group=nagcmd

编译和安装

[root@nagios nagios-4.3.1]# make all
[root@nagios nagios-4.3.1]# make install-init
[root@nagios nagios-4.3.1]# make install-commandmode
[root@nagios nagios-4.3.1]# make install-config
[root@nagios nagios-4.3.1]# make install    
[root@nagios nagios-4.3.1]# cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
[root@nagios nagios-4.3.1]# chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
[root@nagios nagios-4.3.1]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

生成 apache 配置文件

[root@nagios nagios-4.3.1]# make install-webconf
/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf
if [0 -eq 1]; then \
    ln -s /etc/httpd/conf.d/nagios.conf /etc/apache2/sites-enabled/nagios.conf; \
fi

*** Nagios/Apache conf file installed ***

生成 nagios web 界面的验证信息

[root@nagios nagios-4.3.1]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagios
New password:   ==> 输入密码,这里我输入的密码是 nagios,记住这个密码
Re-type new password:  ==> 确认密码
Adding password for user nagios

修改 apache 配置文件
vi /etc/httpd/conf/httpd.conf

Listen 80    ===>    修改为    Listen 8080
User apache    ===>    修改为    User www
Group apache    ===>    修改为    Group www
DirectoryIndex index.html    ===>    修改为    DirectoryIndex index.php index.html
AddType application/x-gzip .gz .tgz    ===>    下面添加一行内容  AddHandler application/x-httpd-php .php
# LoadModule foo_module modules/mod_foo.so    ===>    下面添加一行内容   
 LoadModule php7_module        modules/libphp7.so

apache 配置文件参考

[root@nagios httpd]# grep -v '^$' /etc/httpd/conf/httpd.conf|grep -v '#'
ServerRoot "/etc/httpd"
Listen 8080
LoadModule php7_module        modules/libphp7.so
Include conf.modules.d/*.conf
User www
Group www
ServerAdmin root@localhost
<Directory />
    AllowOverride none
    Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
    AllowOverride None
    Require all granted
</Directory>
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
<Files ".ht*">
    Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\"%>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\"%>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\"%>s %b \"%{Referer}i\"\"%{User-Agent}i\"%I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>
<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddHandler application/x-httpd-php .php
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf

重新编译一下 php,使其直接 apache(也就是编译参数加上 –with-apxs2)

[root@nagios nagios-4.3.1]# cd /software/php-7.1.4/
[root@nagios php-7.1.4]# ./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --enable-zip --with-apxs2
[root@nagios php-7.1.4]# make && make install
[root@nagios php-7.1.4]# cd /etc/httpd/
[root@nagios httpd]# ll /etc/httpd/modules/libphp7.so 
-rwxr-xr-x 1 root root 38908880 4 月  24 10:34 /etc/httpd/modules/libphp7.so    ===>    可以看到这个模块已经生成

启动 apache

[root@nagios httpd]# systemctl start httpd
[root@nagios httpd]# systemctl enable httpd

启动 nagios

chkconfig nagios on
/etc/init.d/nagios start

在浏览器输入 ip:8080/nagios 测试 nagios-web 页面是否可以打开

 

 

 

安装 nagios-plugins 插件
解压 nagios-plugins 源码包

[root@nagios httpd]# cd /software/
[root@nagios software]# tar zxvf nagios-plugins-2.2.1.tar.gz

进入解压后的目录进行配置

[root@nagios software]# cd nagios-plugins-2.2.1/
[root@nagios nagios-plugins-2.2.1]# ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd --enable-perl-modules

编译及安装

[root@nagios nagios-plugins-2.2.1]# make && make install

安装 nrpe
解压 nrpe 源码包

[root@nagios nagios-plugins-2.2.1]# cd /software/
[root@nagios software]# tar zxvf nrpe-3.1.0.tar.gz

进去解压后的目录进行配置

[root@nagios software]# cd nrpe-3.1.0/
[root@nagios nrpe-3.1.0]# ./configure

编译及安装

[root@nagios nrpe-3.1.0]# make all
[root@nagios nrpe-3.1.0]# make install-plugin
[root@nagios nrpe-3.1.0]# make install-daemon
[root@nagios nrpe-3.1.0]# make install-daemon-config
[root@nagios nrpe-3.1.0]# cp sample-config/nrpe.cfg /usr/local/nagios/etc/nrpe.cfg

安装完成后,查看下 libexec 下面是否有插件

[root@nagios nrpe-3.1.0]# ls /usr/local/nagios/libexec/
check_apt       check_flexlm        check_log          check_ntp_peer  check_smtp    disable_active_service_checks
check_breeze    check_fping         check_mailq        check_ntp_time  check_spop    disable_notifications
check_by_ssh    check_ftp           check_mrtg         check_nwstat    check_ssh     distributed-monitoring
check_clamd     check_http          check_mrtgtraf     check_Oracle    check_ssmtp   enable_active_service_checks
check_cluster   check_icmp          check_mysql        check_overcr    check_swap    enable_notifications
check_dhcp      check_ide_smart     check_mysql_query  check_ping      check_tcp     eventhandlers
check_dig       check_ifoperstatus  check_nagios       check_pop       check_time    negate
check_disk      check_ifstatus      check_nntp         check_procs     check_udp     redundancy-scenario1
check_disk_smb  check_imap          check_nntps        check_real      check_ups     submit_check_result
check_dns       check_ircd          check_nrpe         check_rpc       check_uptime  urlize
check_dummy     check_jabber        check_nt           check_sensors   check_users   utils.pm
check_file_age  check_load          check_ntp          check_simap     check_wave    utils.sh

启动 nrpe,并测试服务端本地是否可以连通

[root@nagios nrpe-3.1.0]# /usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg 
[root@nagios nrpe-3.1.0]# echo "/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg" >> /etc/rc.local
[root@nagios nrpe-3.1.0]# chmod +x /etc/rc.d/rc.local           # centos 7 下需要这一步,不然 /etc/rc.local 中的内容开机可能不执行
[root@nagios nrpe-3.1.0]# netstat -lnput|grep 5666
tcp        0      0 0.0.0.0:5666            0.0.0.0:*               LISTEN      67176/nrpe          
tcp6       0      0 :::5666                 :::*                    LISTEN      67176/nrpe    
[root@nagios nrpe-3.1.0]# /usr/local/nagios/libexec/check_nrpe -H localhost 
NRPE v3.1.0-rc1

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-10/147580p2.htm

nagios 客户端的安装

下载 nagios-plugin 和 nrpe 插件

[root@client1 ~]# mkdir /software/
[root@client1 ~]# cd /software/
[root@client1 software]# wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
[root@client1 software]# wget https://sourceforge.net/projects/nagios/files/nrpe-3.x/nrpe-3.1.0.tar.gz

安装 nagios-plugin
安装依赖包

[root@client1 software]# yum install perl-devel perl-CPAN -y

创建用户

[root@client1 software]# useradd nagios -M -s /sbin/nologin

解压 nagios-plugin 源码包

[root@client1 software]# tar zxvf nagios-plugins-2.2.1.tar.gz

进入解压后的目录进行配置

[root@client1 software]# cd nagios-plugins-2.2.1/
[root@client1 nagios-plugins-2.2.1]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-perl-modules

编译及安装

[root@client1 nagios-plugins-2.2.1]# make && make install

安装 nrpe 插件
解压 nrpe 源码包

[root@client1 nagios-plugins-2.2.1]# cd ..
[root@client1 software]# tar zxvf nrpe-3.1.0.tar.gz

进入解压后的目录进行配置

[root@client1 software]# cd nrpe-3.1.0/
[root@client1 nrpe-3.1.0]# ./configure

编译及安装

[root@client1 nrpe-3.1.0]# make all
[root@client1 nrpe-3.1.0]# make install-plugin
[root@client1 nrpe-3.1.0]# make install-daemon
[root@client1 nrpe-3.1.0]# make install-daemon-config
[root@client1 nrpe-3.1.0]# mkdir /usr/local/nagios/etc/
[root@client1 nrpe-3.1.0]# cp sample-config/nrpe.cfg /usr/local/nagios/etc/nrpe.cfg

安装完成后,查看下 libexec 下面是否有插件

[root@client1 nrpe-3.1.0]# ls /usr/local/nagios/libexec/
check_apt       check_dummy         check_imap         check_nagios    check_overcr   check_ssh     negate
check_breeze    check_file_age      check_ircd         check_nntp      check_ping     check_ssmtp   urlize
check_by_ssh    check_flexlm        check_jabber       check_nntps     check_pop      check_swap    utils.pm
check_clamd     check_fping         check_load         check_nrpe      check_procs    check_tcp     utils.sh
check_cluster   check_ftp           check_log          check_nt        check_real     check_time
check_dhcp      check_http          check_mailq        check_ntp       check_rpc      check_udp
check_dig       check_icmp          check_mrtg         check_ntp_peer  check_sensors  check_ups
check_disk      check_ide_smart     check_mrtgtraf     check_ntp_time  check_simap    check_uptime
check_disk_smb  check_ifoperstatus  check_mysql        check_nwstat    check_smtp     check_users
check_dns       check_ifstatus      check_mysql_query  check_Oracle    check_spop     check_wave

启动 nrpe,并测试服务端本地是否可以连通

[root@client1 nrpe-3.1.0]# /usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg 
[root@client1 nrpe-3.1.0]# echo "/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg" >> /etc/rc.local
[root@client1 nrpe-3.1.0]# chmod +x /etc/rc.d/rc.local           # CentOS 7 下需要这一步,不然 /etc/rc.local 中的内容开机可能不执行
[root@client1 nrpe-3.1.0]# netstat -lnput|grep 5666
tcp        0      0 0.0.0.0:5666            0.0.0.0:*               LISTEN      28296/nrpe          
tcp6       0      0 :::5666                 :::*                    LISTEN      28296/nrpe 
[root@client1 nrpe-3.1.0]# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v3.1.0-rc1

修改配置文件

[root@client1 nrpe-3.1.0]# cd /usr/local/nagios/etc/

vi nrpe.cfg

允许服务端 IP 和本机访问,172.16.0.18 是 nagios 服务端 IP 地址

allowed_hosts=127.0.0.1,::1    ===>    修改为    allowed_hosts=127.0.0.1,::1,172.16.0.18

注释下面几行内容

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c .30,.25,.20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

在 nrpe.cfg 文件末尾增加下面几行内容

# my custom monitor items
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c .30,.25,.20
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
command[check_mem]=/usr/local/nagios/libexec/check_mem.pl -w 90% -c 95%
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

创建一个监控内存的 perl 脚本

[root@client1 etc]# vi /usr/local/nagios/libexec/check_mem.pl

添加下面内容

#! /usr/bin/perl -w
#
# $Id: check_mem.pl 8 2008-08-23 08:59:52Z rhomann $
#
# check_mem v1.7 plugin for nagios
#
# uses the output of `free` to find the percentage of memory used
#
# Copyright Notice: GPL
#
# History:
# v1.8 Rouven Homann - rouven.homann@cimt.de
# + added findbin patch from Duane Toler
# + added backward compatibility patch from Timour Ezeev
#
# v1.7 Ingo Lantschner - ingo AT boxbe DOT com
# + adapted for systems with no swap (avoiding divison through 0)
#
# v1.6 Cedric Temple - cedric DOT temple AT cedrictemple DOT info
# + add swap monitoring
#       + if warning and critical threshold are 0, exit with OK
#       + add a directive to exclude/include buffers
#
# v1.5 Rouven Homann - rouven.homann@cimt.de
# + perfomance tweak with free -mt (just one sub process started instead of 7)
# + more code cleanup
#
# v1.4 Garrett Honeycutt - gh@3gupload.com
# + Fixed PerfData output to adhere to standards and show crit/warn values
#
# v1.3 Rouven Homann - rouven.homann@cimt.de
#   + Memory installed, used and free displayed in verbose mode
# + Bit Code Cleanup
#
# v1.2 Rouven Homann - rouven.homann@cimt.de
# + Bug fixed where verbose output was required (nrpe2)
#       + Bug fixed where perfomance data was not displayed at verbose output
# + FindBin Module used for the nagios plugin path of the utils.pm
#
# v1.1 Rouven Homann - rouven.homann@cimt.de
#     + Status Support (-c, -w)
# + Syntax Help Informations (-h)
#       + Version Informations Output (-V)
# + Verbose Output (-v)
#       + Better Error Code Output (as described in plugin guideline)
#
# v1.0 Garrett Honeycutt - gh@3gupload.com
#   + Initial Release
#
use strict;
use FindBin;
FindBin::again();
use lib $FindBin::Bin;
use utils qw($TIMEOUT %ERRORS &print_revision &support);
use vars qw($PROGNAME $PROGVER);
use Getopt::Long;
use vars qw($opt_V $opt_h $verbose $opt_w $opt_c);

$PROGNAME = "check_mem";
$PROGVER = "1.8";

# add a directive to exclude buffers:
my $DONT_INCLUDE_BUFFERS = 0;

sub print_help ();
sub print_usage ();

Getopt::Long::Configure('bundling');
GetOptions ("V"   => \$opt_V, "version"    => \$opt_V,
  "h"   => \$opt_h, "help"       => \$opt_h,
        "v" => \$verbose, "verbose"  => \$verbose,
  "w=s" => \$opt_w, "warning=s"  => \$opt_w,
  "c=s" => \$opt_c, "critical=s" => \$opt_c);

if ($opt_V) {print_revision($PROGNAME,'$Revision:'.$PROGVER.'$');
  exit $ERRORS{'UNKNOWN'};
}

if ($opt_h) {print_help();
  exit $ERRORS{'UNKNOWN'};
}

print_usage() unless (($opt_c) && ($opt_w));

my ($mem_critical, $swap_critical);
my ($mem_warning, $swap_warning);
($mem_critical, $swap_critical) = ($1,$2) if ($opt_c =~ /([0-9]+)[%]?(?:,([0-9]+)[%]?)?/);
($mem_warning, $swap_warning)   = ($1,$2) if ($opt_w =~ /([0-9]+)[%]?(?:,([0-9]+)[%]?)?/);

# Check if swap params were supplied
$swap_critical ||= 100;
$swap_warning  ||= 100;

# print threshold in output message
my $mem_threshold_output = "(";
my $swap_threshold_output = "(";

if ($mem_warning > 0 && $mem_critical > 0) {$mem_threshold_output .= "W> $mem_warning, C> $mem_critical";}
elsif ($mem_warning > 0) {$mem_threshold_output .= "W> $mem_warning";}
elsif ($mem_critical > 0) {$mem_threshold_output .= "C> $mem_critical";}

if ($swap_warning > 0 && $swap_critical > 0) {$swap_threshold_output .= "W> $swap_warning, C> $swap_critical";}
elsif ($swap_warning > 0) {$swap_threshold_output .= "W> $swap_warning";}
elsif ($swap_critical > 0)  {$swap_threshold_output .= "C> $swap_critical";}

$mem_threshold_output .= ")";
$swap_threshold_output .= ")";

my $verbose = $verbose;

my ($mem_percent, $mem_total, $mem_used, $swap_percent, $swap_total, $swap_used) = &sys_stats();
my $free_mem = $mem_total - $mem_used;
my $free_swap = $swap_total - $swap_used;

# set output message
my $output = "Memory Usage".$mem_threshold_output.":". $mem_percent.'% <br>';
$output .= "Swap Usage".$swap_threshold_output.":". $swap_percent.'%';

# set verbose output message
my $verbose_output = "Memory Usage:".$mem_threshold_output.":". $mem_percent.'%'."- Total: $mem_total MB, used: $mem_used MB, free: $free_mem MB<br>";
$verbose_output .= "Swap Usage:".$swap_threshold_output.":". $swap_percent.'%'."- Total: $swap_total MB, used: $swap_used MB, free: $free_swap MB<br>";

# set perfdata message
my $perfdata_output = "MemUsed=$mem_percent\%;$mem_warning;$mem_critical";
$perfdata_output .= "SwapUsed=$swap_percent\%;$swap_warning;$swap_critical";


# if threshold are 0, exit with OK
if ($mem_warning == 0) {$mem_warning = 101};
if ($swap_warning == 0) {$swap_warning = 101};
if ($mem_critical == 0) {$mem_critical = 101};
if ($swap_critical == 0) {$swap_critical = 101};


if ($mem_percent>$mem_critical || $swap_percent>$swap_critical) {if ($verbose) {print "<b>CRITICAL:".$verbose_output."</b>|".$perfdata_output."\n";}
    else {print "<b>CRITICAL:".$output."</b>|".$perfdata_output."\n";}
    exit $ERRORS{'CRITICAL'};
} elsif ($mem_percent>$mem_warning || $swap_percent>$swap_warning) {if ($verbose) {print "<b>WARNING:".$verbose_output."</b>|".$perfdata_output."\n";}
    else {print "<b>WARNING:".$output."</b>|".$perfdata_output."\n";}
    exit $ERRORS{'WARNING'};
} else {if ($verbose) {print "OK:".$verbose_output."|".$perfdata_output."\n";}
    else {print "OK:".$output."|".$perfdata_output."\n";}
    exit $ERRORS{'OK'};
}

sub sys_stats {my @memory = split(" ", `free -mt`);
    my $mem_total = $memory[7];
    my $mem_used;
    if ($DONT_INCLUDE_BUFFERS) {$mem_used = $memory[15]; }
    else {$mem_used = $memory[8];}
    my $swap_total = $memory[18];
    my $swap_used = $memory[19];
    my $mem_percent = ($mem_used / $mem_total) * 100;
    my $swap_percent;
    if ($swap_total == 0) {$swap_percent = 0;} else {$swap_percent = ($swap_used / $swap_total) * 100;
    }
    return (sprintf("%.0f",$mem_percent),$mem_total,$mem_used, sprintf("%.0f",$swap_percent),$swap_total,$swap_used);
}

sub print_usage () {print "Usage: $PROGNAME -w <warn> -c <crit> [-v] [-h]\n";
    exit $ERRORS{'UNKNOWN'} unless ($opt_h);
}

sub print_help () {print_revision($PROGNAME,'$Revision:'.$PROGVER.'$');
    print "Copyright (c) 2005 Garrett Honeycutt/Rouven Homann/Cedric Temple\n";
    print "\n";
    print_usage();
    print "\n";
    print "-w <MemoryWarn>,<SwapWarn> = Memory and Swap usage to activate a warning message (eg: -w 90,25) .\n";
    print "-c <MemoryCrit>,<SwapCrit> = Memory and Swap usage to activate a critical message (eg: -c 95,50).\n";
    print "-v = Verbose Output.\n";
    print "-h = This screen.\n\n";
    support();}

给脚本增加执行权限

[root@client1 etc]# chmod 755 /usr/local/nagios/libexec/check_mem.pl

重启 nrpe 服务

# 方法一
[root@client1 etc]# killall nrpe               
[root@client1 etc]# /usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg
# 方法二
[root@client1 etc]# kill -HUP `ps -ef|grep nrpe|awk 'NR==1{print $2}'`

在本机执行两个命令看下效果

[root@client1 etc]# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_mem
<b>CRITICAL: Memory Usage (W> 10, C> 3): 29% <br>Swap Usage (W> 100, C> 100): 12%</b>|MemUsed=29%;10;3 SwapUsed=12%;100;100
[root@client1 etc]# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_disk
DISK OK - free space: / 4201 MB (24.15% inode=97%);| /=13192MB;13915;15654;0;17394

服务端配置
nrpe 连接客户端机器测试是否可以连通,然后执行一个监控命令(如果不通的话可能是因为 selinux 和防火墙没关闭而造成的)

[root@nagios nrpe-3.1.0]# /usr/local/nagios/libexec/check_nrpe -H 172.16.0.20
NRPE v3.1.0-rc1
[root@nagios nrpe-3.1.0]# /usr/local/nagios/libexec/check_nrpe -H 172.16.0.20 -c check_disk
DISK OK - free space: / 4201 MB (24.15% inode=97%);| /=13192MB;13915;15654;0;17394

因为 nagios 默认把全部的权限给 nagiosadmin,所以可以通过修改 cgi.cfg 文件赋予 nagios 权限,切换到 /usr/local/nagios/etc 目录下

[root@nagios nrpe-3.1.0]# cd /usr/local/nagios/etc
[root@nagios etc]# ll
总用量 144
-rw-rw-r-- 1 nagios nagios 12999 4 月  21 17:00 cgi.cfg
-rw-r--r-- 1 root   root      45 4 月  24 09:28 htpasswd.users
-rw-rw-r-- 1 nagios nagios 44831 4 月  21 17:00 nagios.cfg
-rw-r--r-- 1 root   root   10765 4 月  24 12:32 nrpe.cfg
drwxrwxr-x 2 nagios nagios   336 4 月  21 17:00 objects
-rw-rw---- 1 nagios nagios  1312 4 月  21 17:00 resource.cfg
[root@nagios etc]# grep nagiosadmin cgi.cfg
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
[root@nagios etc]# sed -i 's/nagiosadmin/nagiosadmin,nagios/g' cgi.cfg
[root@nagios etc]# grep nagiosadmin cgi.cfg
authorized_for_system_information=nagiosadmin,nagios
authorized_for_configuration_information=nagiosadmin,nagios
authorized_for_system_commands=nagiosadmin,nagios
authorized_for_all_services=nagiosadmin,nagios
authorized_for_all_hosts=nagiosadmin,nagios
authorized_for_all_service_commands=nagiosadmin,nagios
authorized_for_all_host_commands=nagiosadmin,nagios

修改 nagios.cfg(自定义一些配置)

[root@nagios etc]# vi nagios.cfg +34
#注释掉下面这行
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
#添加下面两行内容
cfg_file=/usr/local/nagios/etc/objects/services.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg

创建 hosts.cfg 和 services.cfg 这两个文件

[root@nagios etc]# cd objects/
[root@nagios objects]# pwd
/usr/local/nagios/etc/objects
[root@nagios objects]# touch services.cfg
[root@nagios objects]# head -51 localhost.cfg  > hosts.cfg
[root@nagios objects]# chown -R nagios.nagios *

修改 nagios 检查语法脚本

[root@nagios objects]# vim /etc/init.d/nagios +181
#check_config
$NagiosBin -v $NagiosCfgFile;

vi commands.cfg 进入后按 shift+ g 切到结尾加入下面内容。

# 'check_nrpe' command definition
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

# 'check_ping' command definition
define command{
        command_name    check-ping
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 100.0,20% -c 200.0,50% -p 3 -t 2
        }

# 'check_http' command definition
define command{
        command_name    check-weburl
        command_line    $USER1$/check_http -H $HOSTADDRESS$ $ARG1$ -w 5 -c 10
        }

# 'check_tcp' command definition
define command{
        command_name    check-tcp
        command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -w 0.02 -c 0.1
        }

查看有哪些 cfg 文件

[root@nagios objects]# pwd
/usr/local/nagios/etc/objects
[root@nagios objects]# ll
总用量 100
-rw-rw-r-- 1 nagios nagios  7860 4 月  24 16:53 commands.cfg
-rw-rw-r-- 1 nagios nagios  2138 4 月  21 17:00 contacts.cfg
-rw-r--r-- 1 nagios nagios  1843 4 月  24 16:46 hosts.cfg
-rw-rw-r-- 1 nagios nagios  5379 4 月  21 17:00 localhost.cfg
-rw-rw-r-- 1 nagios nagios  3070 4 月  21 17:00 printer.cfg
-rw-r--r-- 1 nagios nagios     0 4 月  24 16:46 services.cfg
-rw-rw-r-- 1 nagios nagios  3252 4 月  21 17:00 switch.cfg
-rw-rw-r-- 1 nagios nagios 10595 4 月  21 17:00 templates.cfg
-rw-rw-r-- 1 nagios nagios  3180 4 月  21 17:00 timeperiods.cfg
-rw-rw-r-- 1 nagios nagios  3991 4 月  21 17:00 windows.cfg

常用对象介绍

  • 联系人
    contact
    出了问题像谁报告? 一般当然是系统管理员了

  • 监控时间段
    timeperiod
    7X24 小时不间断还是周一至周五, 或是自定义的其他时间段

  • 被监控主机
    host
    所需要监控的服务器, 当然可以是监控机自己

  • 监控命令
    command
    nagios 发出的哪个指令来执行某个监控, 这也是自己定义的

  • 被监控的服务
    service
    例如主机是否存活,80 端口是否开, 磁盘使用情况或者自定义的服务等

contacts.cfg 文件介绍

  • service_notification_period 24×7
    服务出了状况通知的时间段, 这个时间段就是上面在 timeperiods.cfg 中定义的.

  • host_notification_period 24×7
    主机出了状况通知的时间段, 这个时间段就是上面在 timeperiods.cfg 中定义的

  • service_notification_options w,u,c,r
    当服务出现 w—报警(warning),u—未知(unkown),c—严重(critical), 或者 r—从异常情况恢复正常, 在这四种情况下通知联系人.

  • host_notification_options d,u,r
    当主机出现 d­­­­—当机(down),u—返回不可达(unreachable),r—从异常情况恢复正常, 在这 3 种情况下通知联系人

  • service_notification_commands notify- service -by-email
    服务出问题通知采用的命令 notify-by-email, 这个命令是在 commands.cfg 中定义的, 作用是给联系人发邮件. 至于 commands.cfg 之后将专门介绍

  • host_notification_commands host-notify-by-email notify- host–by-email
    同上, 主机出问题时采用的也是发邮件的方式通知联系人

  • email 123456@qq.com
    很明显, 联系的人 email 地址

  • pager 1338757xxxx
    联系人的手机, 如果支持短信的通知的话, 这个就很有用了.

  • alias 是联系人别名,address 是地址 .

contactgroups.cfg 文件介绍

# contactgroup define contactgroup{contactgroup_name 组名 // 联系人组的名称 alias 别名 // 别名 members 用户名 // 组的成员, 来自于上面定义的 contacts.cfg, 如果有多个联系人则以逗号相隔}

主机模板介绍(hosts.cfg)

# host define host{host_name 主机名 // 被监控主机的名称, 最好别带空格 nagios-server alias 别名 address IP // 被监控主机的 IP 地址 check_command check-host-alive // 监控的命令 check-host-alive, 这个命令来自 commands.cfg, 用来监控主机是否存活 max_check_attempts 5 // 检查失败后重试的次数 check_period 24x7 // 检查的时间段 24x7, 同样来自于我们之前在 timeperiods.cfg 中定义的 contact_groups 组名 // 联系人组, 上面在 contactgroups.cfg 中定义的组名 notification_interval 10 // 提醒的间隔, 每隔 10 秒提醒一次 notification_period 24x7 // 提醒的周期, 24x7, 同样来自于我们之前在 timeperiods.cfg 中定义的 notification_options d,u,r // 指定什么情况下提醒, 具体含义见之前 contacts.cfg 部分的介绍}

主机组模板介绍(hosts.cfg)

# hostgroup define hostgroup{hostgroup_name 主机组名 alias 别名 members 主机名 // 组的成员主机, 多个主机以逗号相隔, 必须是上面 hosts.cfg 中定义的}

服务模板介绍(services.cfg)

# service definition define service{host_name 主机名 // 被监控的主机,hosts.cfg 中定义的 service_description check-host-alive // 这个监控项目的描述(也可以说是这个项目的名称), 可以空格, 我们这里定义的是监控这个主机是不是存活 check_command check-host-alive // 所用的命令, 是 commands.cfg 中定义的 max_check_attempts 5 normal_check_interval 3 retry_check_interval 2 check_period 24x7 // 监控的时间段, 是 timeperiods.cfg 中定义的 notification_interval 10 notification_period 24x7 // 通知的时间段, , 是 timeperiods.cfg 中定义的 notification_options w,u,c,r // 在监控的结果是 wucr 时通知联系人, 具体含义看前文. contact_groups 组名 // 联系人组, 是 contactgroups.cfg 中定义的 }

主机模板配置

[root@nagios objects]# vi hosts.cfg +21
删除下面 11 行内容
添加下面内容

# Define some hosts

###########172.16.0.18##################

define host {
        use                      linux-server
        host_name                nagios
        alias                    nagios
        address                  172.16.0.18
        check_command            check-host-alive
        max_check_attempts        3
        normal_check_interval     2
        retry_check_interval      2
        check_period              24x7
        notification_interval     300
        notification_period       24x7
        notification_options      d,u,r
        contact_groups            admins
        process_perf_data         1
}

###########172.16.0.18##################

define host {
        use                      linux-server
        host_name                client1
        alias                    client1
        address                  172.16.0.20
        check_command            check-host-alive
        max_check_attempts        3
        normal_check_interval     2
        retry_check_interval      2
        check_period              24x7
        notification_interval     300
        notification_period       24x7
        notification_options      d,u,r
        contact_groups            admins
        process_perf_data         1
}

把监控的主机添加到主机组里面
[root@nagios objects]# vi hosts.cfg +76
define hostgroup{
        hostgroup_name  linux-servers ; The name of the hostgroup
        alias           Linux Servers ; Long name of the group
        members         nagios,client1     ; Comma separated list of hosts that belong to this group
        }

简介

Nagios 是一款自动化运维工具,可以协助运维人员监控服务器的运行状况,并且拥有报警功能。本文章将介绍其安装方法和详细的配置方法。

nagios 监控服务应用指南
本地资源:负载,CPU,磁盘,内存。IO,RAID,温度,passwd 文件变化,本地所有文件指纹识别
网络服务:端口,URL,丢包,进程,网络流量
其他设备:交换机,打印机,windows 等。
业务数据:用户登录失败次数,用户登录网站次数,输入验证码失败的次数,某个 API 接口流量并发,电商网站订单,支付交易的数量

nagios 成员:主程序 nagios,插件 nagios-plugins,和一些可选的客户端 nrpe,NSClient++,NSCA 和 NDOUtils

  • NRPE– 半被动模式
    存放位置:安装在客户端
    NRPE 作用:在客户端执行相关的脚本插件来获取数据,实现对客户端主机资源的监控。
    存在形式:守护进程 (agent) 模式,开启的端口 5666

  • NSClient++:半被动模式,相当于 linux 系统的 nrpe

  • NDOUtils(不推荐用)
    存在位置:服务端
    作用:用于将 nagios 的配置信息和各 event 产生的数据存入数据库中,以实现对这些数据的检索和处理。

  • NSCA:纯被动模式 —> 用在分布式监控环境中
    位置:NSCA 需要同时安装在 nagios 的服务器端和客户端

软件版本

nagios 版本:4.3.1
nagios-plugins 版本:2.2.1
nrpe 版本:3.1.0

实现环境

nagios 运行在 LAMP 环境下(如果还没有安装 LAMP 环境,可以参考下我的安装 LNMP 文章 http://www.linuxidc.com/Linux/2017-10/147581.htm,因为我已经编译安装了 php 和 Mysql,本文直接采取 yum 方式安装 apache,当然也可以采取编译方式安装 apache。看个人喜好和公司需求)

CentOS 版本:CentOS Linux release 7.3.1611 (Core) 64 位
Apache 版本:Apache/2.4.6
Nginx 版本: nginx 1.12.0
Mysql 版本:mysql 5.7.18
PHP 版本:php 7.1.4

下载 nagios 软件及插件包

[root@nagios ~]# cd /software/
[root@nagios software]# wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.1.tar.gz
[root@nagios software]# wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
[root@nagios software]# wget https://sourceforge.net/projects/nagios/files/nrpe-3.x/nrpe-3.1.0.tar.gz
[root@nagios software]# ll
-rw-r--r--   1 root  root  11095797 4 月  21 15:57 nagios-4.3.1.tar.gz
-rw-r--r--   1 root  root   2728818 4 月  20 00:04 nagios-plugins-2.2.1.tar.gz
-rw-r--r--   1 root  root    501028 4 月  17 22:36 nrpe-3.1.0.tar.gz

安装 nagios-server 服务端

安装依赖包

[root@nagios software]# yum -y install httpd httpd-devel gcc glibc glibc-common gd gd-devel perl-devel perl-CPAN fcgi perl-FCGI perl-FCGI-ProcManager

解压 nagios 源码包

[root@nagios software]# tar zxvf nagios-4.3.1.tar.gz

进入解压后的目录

[root@nagios software]# cd nagios-4.3.1/

创建 ngaios 用户和组(把 nginx 启动用户 www 加入到 nagios 相关组)

[root@nagios nagios-4.3.1]# useradd nagios -s /sbin/nologin 
[root@nagios nagios-4.3.1]# id www
[root@nagios nagios-4.3.1]# groupadd nagcmd
[root@nagios nagios-4.3.1]# usermod -a -G nagcmd nagios 
[root@nagios nagios-4.3.1]# usermod -a -G nagcmd www
[root@nagios nagios-4.3.1]# id -n -G nagios
[root@nagios nagios-4.3.1]# id -n -G www

配置 nagios

[root@client1 nagios-4.3.1]# ./configure --with-command-group=nagcmd

编译和安装

[root@nagios nagios-4.3.1]# make all
[root@nagios nagios-4.3.1]# make install-init
[root@nagios nagios-4.3.1]# make install-commandmode
[root@nagios nagios-4.3.1]# make install-config
[root@nagios nagios-4.3.1]# make install    
[root@nagios nagios-4.3.1]# cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
[root@nagios nagios-4.3.1]# chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
[root@nagios nagios-4.3.1]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

生成 apache 配置文件

[root@nagios nagios-4.3.1]# make install-webconf
/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf
if [0 -eq 1]; then \
    ln -s /etc/httpd/conf.d/nagios.conf /etc/apache2/sites-enabled/nagios.conf; \
fi

*** Nagios/Apache conf file installed ***

生成 nagios web 界面的验证信息

[root@nagios nagios-4.3.1]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagios
New password:   ==> 输入密码,这里我输入的密码是 nagios,记住这个密码
Re-type new password:  ==> 确认密码
Adding password for user nagios

修改 apache 配置文件
vi /etc/httpd/conf/httpd.conf

Listen 80    ===>    修改为    Listen 8080
User apache    ===>    修改为    User www
Group apache    ===>    修改为    Group www
DirectoryIndex index.html    ===>    修改为    DirectoryIndex index.php index.html
AddType application/x-gzip .gz .tgz    ===>    下面添加一行内容  AddHandler application/x-httpd-php .php
# LoadModule foo_module modules/mod_foo.so    ===>    下面添加一行内容   
 LoadModule php7_module        modules/libphp7.so

apache 配置文件参考

[root@nagios httpd]# grep -v '^$' /etc/httpd/conf/httpd.conf|grep -v '#'
ServerRoot "/etc/httpd"
Listen 8080
LoadModule php7_module        modules/libphp7.so
Include conf.modules.d/*.conf
User www
Group www
ServerAdmin root@localhost
<Directory />
    AllowOverride none
    Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
    AllowOverride None
    Require all granted
</Directory>
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
<Files ".ht*">
    Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\"%>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\"%>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\"%>s %b \"%{Referer}i\"\"%{User-Agent}i\"%I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>
<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddHandler application/x-httpd-php .php
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf

重新编译一下 php,使其直接 apache(也就是编译参数加上 –with-apxs2)

[root@nagios nagios-4.3.1]# cd /software/php-7.1.4/
[root@nagios php-7.1.4]# ./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --enable-zip --with-apxs2
[root@nagios php-7.1.4]# make && make install
[root@nagios php-7.1.4]# cd /etc/httpd/
[root@nagios httpd]# ll /etc/httpd/modules/libphp7.so 
-rwxr-xr-x 1 root root 38908880 4 月  24 10:34 /etc/httpd/modules/libphp7.so    ===>    可以看到这个模块已经生成

启动 apache

[root@nagios httpd]# systemctl start httpd
[root@nagios httpd]# systemctl enable httpd

启动 nagios

chkconfig nagios on
/etc/init.d/nagios start

在浏览器输入 ip:8080/nagios 测试 nagios-web 页面是否可以打开

 

 

 

安装 nagios-plugins 插件
解压 nagios-plugins 源码包

[root@nagios httpd]# cd /software/
[root@nagios software]# tar zxvf nagios-plugins-2.2.1.tar.gz

进入解压后的目录进行配置

[root@nagios software]# cd nagios-plugins-2.2.1/
[root@nagios nagios-plugins-2.2.1]# ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd --enable-perl-modules

编译及安装

[root@nagios nagios-plugins-2.2.1]# make && make install

安装 nrpe
解压 nrpe 源码包

[root@nagios nagios-plugins-2.2.1]# cd /software/
[root@nagios software]# tar zxvf nrpe-3.1.0.tar.gz

进去解压后的目录进行配置

[root@nagios software]# cd nrpe-3.1.0/
[root@nagios nrpe-3.1.0]# ./configure

编译及安装

[root@nagios nrpe-3.1.0]# make all
[root@nagios nrpe-3.1.0]# make install-plugin
[root@nagios nrpe-3.1.0]# make install-daemon
[root@nagios nrpe-3.1.0]# make install-daemon-config
[root@nagios nrpe-3.1.0]# cp sample-config/nrpe.cfg /usr/local/nagios/etc/nrpe.cfg

安装完成后,查看下 libexec 下面是否有插件

[root@nagios nrpe-3.1.0]# ls /usr/local/nagios/libexec/
check_apt       check_flexlm        check_log          check_ntp_peer  check_smtp    disable_active_service_checks
check_breeze    check_fping         check_mailq        check_ntp_time  check_spop    disable_notifications
check_by_ssh    check_ftp           check_mrtg         check_nwstat    check_ssh     distributed-monitoring
check_clamd     check_http          check_mrtgtraf     check_Oracle    check_ssmtp   enable_active_service_checks
check_cluster   check_icmp          check_mysql        check_overcr    check_swap    enable_notifications
check_dhcp      check_ide_smart     check_mysql_query  check_ping      check_tcp     eventhandlers
check_dig       check_ifoperstatus  check_nagios       check_pop       check_time    negate
check_disk      check_ifstatus      check_nntp         check_procs     check_udp     redundancy-scenario1
check_disk_smb  check_imap          check_nntps        check_real      check_ups     submit_check_result
check_dns       check_ircd          check_nrpe         check_rpc       check_uptime  urlize
check_dummy     check_jabber        check_nt           check_sensors   check_users   utils.pm
check_file_age  check_load          check_ntp          check_simap     check_wave    utils.sh

启动 nrpe,并测试服务端本地是否可以连通

[root@nagios nrpe-3.1.0]# /usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg 
[root@nagios nrpe-3.1.0]# echo "/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg" >> /etc/rc.local
[root@nagios nrpe-3.1.0]# chmod +x /etc/rc.d/rc.local           # centos 7 下需要这一步,不然 /etc/rc.local 中的内容开机可能不执行
[root@nagios nrpe-3.1.0]# netstat -lnput|grep 5666
tcp        0      0 0.0.0.0:5666            0.0.0.0:*               LISTEN      67176/nrpe          
tcp6       0      0 :::5666                 :::*                    LISTEN      67176/nrpe    
[root@nagios nrpe-3.1.0]# /usr/local/nagios/libexec/check_nrpe -H localhost 
NRPE v3.1.0-rc1

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-10/147580p2.htm

服务模板配置

[root@nagios objects]# pwd
/usr/local/nagios/etc/objects
[root@nagios objects]# vi services.cfg 
添加下面内容

###########172.16.0.18##################

define service{
        use                     generic-service
        host_name               nagios
        service_description     Load
        check_command           check_nrpe!check_load        #这里的 check_nrpe 不是服务端 /usr/local/nagios/libexec/check_nrpe, 而是 command.cfg 里定义的命令
        }

define service{
        use                     generic-service
        host_name               nagios
        service_description     Disk
        check_command           check_nrpe!check_disk
        }

define service{
        use                     generic-service
        host_name               nagios
        service_description     memory
        check_command           check_nrpe!check_mem
        }
define service{
        use                     generic-service
        host_name               nagios
        service_description     Ping
        check_command           check-ping!172.16.0.18
}

define service{
        use                     generic-service
        host_name               nagios
        service_description     port_3306
        check_command           check-tcp!3306
}

###########172.16.0.20##################

define service{
        use                     generic-service
        host_name               client1
        service_description     Load
        check_command           check_nrpe!check_load
        }

define service{
        use                     generic-service
        host_name               client1
        service_description     Disk
        check_command           check_nrpe!check_disk
        }

define service{
        use                     generic-service
        host_name               client1
        service_description     memory
        check_command           check_nrpe!check_mem
        }
define service{
    use             generic-service
        host_name               client1
        service_description     Ping
        check_command           check-ping!172.16.0.20
}
define service{
        use                     generic-service
        host_name               client1
        service_description     port_3306
        check_command           check-tcp!3306
}

重启 nagios 服务

[root@nagios objects]# /etc/init.d/nagios restart

打开浏览器访问

 

点击 hosts

 

点击 services

 

ok,我们的配置告一段落了。

出图部分
下载 pnp4nagios 源码包

[root@nagios objects]# cd /software/
[root@nagios software]# wget https://jaist.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz

安装依赖包

[root@nagios software]# yum install cairo pango perl-rrdtool rrdtool librrds-perl zlib zlib-devel freetype freetype-devel gd gd-devel -y

解压 pnp4nagios 源码包

[root@nagios software]# tar zxf pnp4nagios-0.6.25.tar.gz

进入解压后的目录配置 png

[root@nagios pnp4nagios-0.6.25]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios

编译及安装

[root@nagios pnp4nagios-0.6.25]# make all
[root@nagios pnp4nagios-0.6.25]# make install
[root@nagios pnp4nagios-0.6.25]# make install-webconf
[root@nagios pnp4nagios-0.6.25]# make install-config
[root@nagios pnp4nagios-0.6.25]# make install-init
[root@nagios pnp4nagios-0.6.25]# cd sample-config/
[root@nagios sample-config]# make install-webconf

配置 pnp4nagios

[root@nagios sample-config]# cd /usr/local/pnp4nagios/etc/
[root@nagios etc]# mv misccommands.cfg-sample misccommands.cfg
[root@nagios etc]#  mv rra.cfg-sample rra.cfg
[root@nagios etc]# mv nagios.cfg-sample nagios.cfg
[root@nagios etc]# cd pages/
[root@nagios pages]# mv web_traffic.cfg-sample web_traffic.cfg
[root@nagios pages]#  cd ../check_commands/
[root@nagios check_commands]# mv check_all_local_disks.cfg-sample check_all_local_disks.cfg
[root@nagios check_commands]#  mv check_nrpe.cfg-sample check_nrpe.cfg
[root@nagios check_commands]# mv check_nwstat.cfg-sample check_nwstat.cfg
[root@nagios check_commands]# systemctl enable npcd
[root@nagios check_commands]# systemctl start npcd

配置 Nagios 数据输出接口 (以 BULK 模式运行) 详情参考官网 https://docs.pnp4nagios.org/pnp-0.6/config#bulk_mode:

[root@nagios check_commands]# vi /usr/local/nagios/etc/nagios.cfg
process_performance_data=1 #默认为 0,修改为 1

并在该文件中添加下面的内容

#

# service performance data

#

service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata

service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$

service_perfdata_file_mode=a

service_perfdata_file_processing_interval=15

service_perfdata_file_processing_command=process-service-perfdata-file

#

# host performance data starting with Nagios 

#

host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata

host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$

host_perfdata_file_mode=a

host_perfdata_file_processing_interval=15

host_perfdata_file_processing_command=process-host-perfdata-file

配置 command.cfg

[root@nagios check_commands]#  vi /usr/local/nagios/etc/objects/commands.cfg
在该文件中添加下面的内容

define command{
      command_name    process-service-perfdata-file
      command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/service-perfdata

}

define command{
      command_name    process-host-perfdata-file
      command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/host-perfdata

}

在模板配置文件中添加图表图标模板:

[root@nagios check_commands]# vi /usr/local/nagios/etc/objects/templates.cfg
在该文件中添加下面的内容

define host {
  name      host-pnp
  action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
  register  0
}

define service {
  name      service-pnp
  action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
  register  0

}

在监控主机和服务中调用图表模板(在主机和服务后面添加新的模板):

[root@nagios check_commands]# vi /usr/local/nagios/etc/objects/hosts.cfg 
主机内容修改如下
###########172.16.0.18##################

define host {
        use                      linux-server,host-pnp
        host_name                nagios
        alias                    nagios
        address                  172.16.0.18
        check_command            check-host-alive
        max_check_attempts        3
        normal_check_interval     2
        retry_check_interval      2
        check_period              24x7
        notification_interval     300
        notification_period       24x7
        notification_options      d,u,r
        contact_groups            admins
        process_perf_data         1
}

###########172.16.0.18##################

define host {
        use                      linux-server,host-pnp
        host_name                client1
        alias                    client1
        address                  172.16.0.20
        check_command            check-host-alive
        max_check_attempts        3
        normal_check_interval     2
        retry_check_interval      2
        check_period              24x7
        notification_interval     300
        notification_period       24x7
        notification_options      d,u,r
        contact_groups            admins
        process_perf_data         1
}

[root@nagios check_commands]# vi /usr/local/nagios/etc/objects/services.cfg 
服务内容修改如下
###########172.16.0.18##################

define service{
        use                     generic-service,service-pnp
        host_name               nagios
        service_description     Load
        check_command           check_nrpe!check_load        #这里的 check_nrpe 不是服务端 /usr/local/nagios/libexec/check_nrpe, 而是 command.cfg 里定义的命令
        }

define service{
        use                     generic-service,service-pnp
        host_name               nagios
        service_description     Disk
        check_command           check_nrpe!check_disk
        }

define service{
        use                     generic-service,service-pnp
        host_name               nagios
        service_description     memory
        check_command           check_nrpe!check_mem
        }
define service{
        use                     generic-service,service-pnp
        host_name               nagios
        service_description     Ping
        check_command           check-ping!172.16.0.18
}

define service{
        use                     generic-service,service-pnp
        host_name               nagios
        service_description     port_3306
        check_command           check-tcp!3306
}

###########172.16.0.20##################

define service{
        use                     generic-service,service-pnp
        host_name               client1
        service_description     Load
        check_command           check_nrpe!check_load
        }

define service{
        use                     generic-service,service-pnp
        host_name               client1
        service_description     Disk
        check_command           check_nrpe!check_disk
        }

define service{
        use                     generic-service,service-pnp
        host_name               client1
        service_description     memory
        check_command           check_nrpe!check_mem
        }
define service{
    use                     generic-service,service-pnp
        host_name               client1
        service_description     Ping
        check_command           check-ping!172.16.0.20
}
define service{
        use                     generic-service,service-pnp
        host_name               client1
        service_description     port_3306
        check_command           check-tcp!3306
}

图表展示
重启 nagios 和 apache

[root@nagios check_commands]# /etc/init.d/nagios checkconfig 
[root@nagios check_commands]# /etc/init.d/nagios restart
[root@nagios check_commands]# systemctl restart httpd

访问 nagios 界面即可看到图表小图标:

 

点击图标会显示 pnp4nagios 测试页面:

 

全是绿色代表配置正常,如果不是全绿,要逐个解决错误。然后移除或修改 install.php 文件:

[root@nagios ~]# rm -rf /usr/local/pnp4nagios/share/install.php

再次点击图标就会显示当前监控服务由 pnp4nagios 生成的图表了

邮件报警配置

查看 sendmail 邮件系统是否安装

[root@nagios ~]# rpm -qa|grep sendmail

如果没有安装,可以 yum 安装一下

[root@nagios ~]# yum -y install sendmail

启动 sendmail

[root@nagios ~]# systemctl enable sendmail
[root@nagios ~]# systemctl start sendmail

测试发送邮件:

[root@nagios ~]# echo "test" | mail zhengxinlei@test.com.cn

 

发送外部邮件的时候,这种本地形式的发件人和发件地址容易被误认为垃圾邮件而拒收。
我们这里定义邮件发送 smtp 信息。
首先安装 mailx12.5

wget http://fossies.org/linux/misc/old/mailx-12.5.tar.gz
tar zxf mailx-12.5.tar.gz
cd mailx-12.5
make
make install UCBINSTALL=/usr/bin/install
mv /bin/mail /bin/mail_old
ln -s /usr/local/bin/mailx /bin/mail
mail -V

接下来配置外部 smtp 发件信息

vi /etc/nail.rc 
添加如下内容:set bsdcompat
set from=yunwei@yasn.com.cn
set smtp=smtp.yasn.com.cn
set smtp-auth-user=yunwei@yasn.com.cn
set smtp-auth-password=123456
set smtp-auth=login

测试邮件发送

echo 'mail content'|mail -s test zhengxinlei@test.com.cn

发送邮件测试,可以看到发件人是我们设定的外部邮件发件人

 

编辑 contacts.cfg,定义邮件联系人和组

[root@nagios ~]# cd /usr/local/nagios/etc/objects/
[root@nagios objects]# ls
commands.cfg  localhost.cfg~  services.cfg  templates.cfg    hosts.cfg    printer.cfg     
switch.cfg   windows.cfg contacts.cfg   localhost.cfg  timeperiods.cfg  
[root@nagios objects]# vi contacts.cfg              // 修改内容如下
define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user

        #email                           nagios@localhost       ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        email                           3166@vip.qq.com,xinlei@126.com
        }


define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 nagiosadmin
        }

编辑 commands.cfg 文件,定义邮件发送命令

[root@nagios objects]# vi commands.cfg                // 查看下面内容是否存在,不存在则添加
# 'notify-host-by-email' command definition
define command{
  command_name    notify-host-by-email
  command_line    /usr/bin/printf "%b" "***** Nagios ***** Notification Type: $NOTIFICATIONTYPE$ Host: $HOSTNAME$ State: $HOSTSTATE$ Address: $HOSTADDRESS$ Info: $HOSTOUTPUT$ Date/Time: $LONGDATETIME$" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
  }

# 'notify-service-by-email' command definition
define command{
  command_name    notify-service-by-email
  command_line    /usr/bin/printf "%b" "***** Nagios ***** Notification Type: $NOTIFICATIONTYPE$ Service: $SERVICEDESC$ Host: $HOSTALIAS$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Date/Time: $LONGDATETIME$ Additional Info: $SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
  }

修改一下监控的阀值,模拟报警。

 

重启 nagios 服务和 sendmail 服务

[root@nagios ~]# systemctl restart nagios
[root@nagios ~]# systemctl stop sendmail
[root@nagios ~]# ps -ef|grep sendmail
[root@nagios ~]# systemctl start sendmail
[root@nagios ~]# ps -ef|grep sendmail

查看报警的邮件,来几张图吧:

 

 

这是报警恢复后的邮件:

 

 

ok,搞定了。

常见邮件发送报错:

报错 1

 

解决方法:
修改 hosts 为域名形式

 
[root@nagios objects]# cat /etc/hosts
172.16.0.18 nagios nagios.com

报错 2(发送外部邮件的时候,这种本地形式的发件人和发件地址容易被误认为垃圾邮件而拒收。)

 

解决方法,见上面配置 mail 发件人 smtp 信息。

●监视物理组件的高级 Linux 命令(仅供参考)

内存:top free、vmstat、mpstat、iostat、sar
CPU:top vmstat、mpstat、iostat、sar
I/O:vmstat、mpstat、iostat、sar
进程:ipcs、ipcrm
负载:uptime


一键安装 nagios 命令参考

#############nagios-server-install########################
mkdir /software/
# mv nagios-4.3.1.tar.gz nagios-plugins-2.2.1.tar.gz nrpe-3.1.0.tar.gz pnp4nagios-0.6.25.tar.gz /software/
cd /software/
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.1.tar.gz
wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
wget https://sourceforge.net/projects/nagios/files/nrpe-3.x/nrpe-3.1.0.tar.gz
wget https://jaist.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz
yum -y install httpd httpd-devel gcc glibc glibc-common gd gd-devel perl-devel perl-CPAN fcgi perl-FCGI perl-FCGI-ProcManager
tar zxvf nagios-4.3.1.tar.gz
cd nagios-4.3.1/
useradd nagios -s /sbin/nologin 
id www
groupadd nagcmd
usermod -a -G nagcmd nagios 
usermod -a -G nagcmd www
id -n -G nagios
id -n -G www
./configure --with-command-group=nagcmd
make all
make install-init
make install-commandmode
make install-config
make install
sleep 2    
cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
make install-webconf
echo 'nagios:$apr1$UigX6LG0$29RugFJZTSxRjnX4NIH3E0' > /usr/local/nagios/etc/htpasswd.users
sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
sed -i 's/User apache/User www/g' /etc/httpd/conf/httpd.conf
sed -i 's/Group apache/Group www/g' /etc/httpd/conf/httpd.conf
sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php index.html/g' /etc/httpd/conf/httpd.conf
grep 'Listen' /etc/httpd/conf/httpd.conf
grep 'User' /etc/httpd/conf/httpd.conf 
grep 'Group' /etc/httpd/conf/httpd.conf 
grep 'DirectoryIndex' /etc/httpd/conf/httpd.conf
cd /software/php-7.1.4/
./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --enable-zip --with-apxs2
make && make install
sleep 1

cd /etc/httpd/
ll /etc/httpd/modules/libphp7.so
systemctl start httpd
systemctl enable httpd
chkconfig nagios on
/etc/init.d/nagios start
cd /software/
tar zxvf nagios-plugins-2.2.1.tar.gz
cd nagios-plugins-2.2.1/
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd --enable-perl-modules
make && make install

cd /software/
tar zxvf nrpe-3.1.0.tar.gz
cd nrpe-3.1.0/
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
cp sample-config/nrpe.cfg /usr/local/nagios/etc/nrpe.cfg
ls /usr/local/nagios/libexec/
/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg 
echo "/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local 
netstat -lnput|grep 5666
/usr/local/nagios/libexec/check_nrpe -H localhost


#######################nagios-client-install###########################
mkdir /software/
# mv nagios-plugins-2.2.1.tar.gz nrpe-3.1.0.tar.gz /software/
cd /software/
wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
wget https://sourceforge.net/projects/nagios/files/nrpe-3.x/nrpe-3.1.0.tar.gz
yum install perl-devel perl-CPAN -y
useradd nagios -M -s /sbin/nologin
tar zxvf nagios-plugins-2.2.1.tar.gz
cd nagios-plugins-2.2.1/
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-perl-modules
make && make install
sleep 1
cd ..
tar zxvf nrpe-3.1.0.tar.gz
cd nrpe-3.1.0/
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
mkdir /usr/local/nagios/etc/
cp sample-config/nrpe.cfg /usr/local/nagios/etc/nrpe.cfg
ls /usr/local/nagios/libexec/
/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg 
echo "/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local           
netstat -lnput|grep 5666
sed -i 's/allowed_hosts=127.0.0.1,::1/allowed_hosts=127.0.0.1,::1,172.16.0.1/g' /usr/local/nagios/etc/nrpe.cfg
sed -i 's/^command\[check/\#command\[check/g' /usr/local/nagios/etc/nrpe.cfg
cat >> /usr/local/nagios/etc/nrpe.cfg << EOF
# my custom monitor items
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c .30,.25,.20
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
command[check_mem]=/usr/local/nagios/libexec/check_mem.pl -w 90% -c 95%
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
EOF
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_disk

总结:
多多查看 nagios 日志和 mail 日志,进行排错��

CentOS 7 下安装配置 Nagios 监控图文详解  http://www.linuxidc.com/Linux/2017-05/143886.htm

Nagios 邮件报警配置简述  http://www.linuxidc.com/Linux/2017-02/140834.htm

Nagios 本机及其他主机监控安装部署详解  http://www.linuxidc.com/Linux/2017-03/141600.htm

Nagios 系统监控基本安装配置过程详解  http://www.linuxidc.com/Linux/2017-01/139758.htm

Linux 下 Nagios+PNP4Nagios 的安装与配置  http://www.linuxidc.com/Linux/2016-09/135534.htm

CentOS7 安装 Nagios 并配置出图详解  http://www.linuxidc.com/Linux/2015-12/125777.htm

Linux 下 Nagios 安装配置详解  http://www.linuxidc.com/Linux/2017-05/144032.htm

Nagios 的详细介绍:请点这里
Nagios 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147580.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计46612字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7960902
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...