#### # 监控端服务安装与配置

1. nagios 需要安装主程序 core 和 nrpe（nagios 和各被监控主机都必须安装）。如需使用自研前端可通过安装 ndoutils (用于把 nagios 监控信息写入数据库) 和 mysql 实现。具体安装见官网
2. nagios 默认监控命令脚本放置在 libexec 中，自定义脚本也放到此处
3. etc/objects/commands.cfg 用于保存 nagios 默认监控命令
4. etc/nrpe.cfg 文件中需要添加用于被监控执行命令项（各被监控主机中都需要添加）
5. etc/objects/hosts 目录下配置需要被监控的主机信息
6. etc/objects/servers 目录下配置需要在被监控主机上执行的监控命令（第 4 项中的命令）

#### # 被监控端服务安装与配置

1. 被监控端需要安装 nrpe
2. 被监控端需要把监控端的命令写入到 nrpe 的配置文件中
3. 被监控端需要把命令执行脚本放入 libexec 目录中
4. 被监控端自动安装脚本（可借鉴）

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       13
       14
       15
       16
       17
       18
       19
       20
       21
       22
       23
       24
       25
       26
       27
       28
       29
       30
       31
       32
       33
       34
       35
       36
       37
       38
       39
       40
       41
       42
       43
       44
       45
       46
       47
       48
       49
       50
       51
       52
       53
       54
       55
       56
       57
       58
       59
       60
       61
       62
       63
       64
       65
       66
       67
       68
       69
       70
       71
       72
       73
       74
       75
       76
       77
       78
       79
       80
       81
       82
       83
       84
       85
       86
       87
       88
       89
       90
       91
       92
       93
       94
       95
       96
       97
       98
       99
       100
       101
       102
       103
       104
       105
       106
       107
       108
       109
       110
       111
       112
       113
       114
       115
       116
       117
       118
       119
       120
       121
       122
       123
       124
       125
       126
       127
       128
       129
       130
       131
       132
       133
       134
       135
       136
       137
       138
       139
       140
       141
       142
       143
       144
       145
       146
       147
       148
       149
       150
       151
       152
       153
       154
       155
       156
       157
       158
       159
       160
       161
       162
       163
       164
       165
       166
       167
       168
       169
       170
       171
       172
       173
       174
       175
       176
       177
       178
       179
       180
       181
       182
       183
       184
       185
       186
       187
       188
       189
       190
       191
       192
       193
       194
       195
       196
       197
       198
       199
       200
       201
       202
       203
       204
       205
       206
       207
       208
       209
       210
       211
       212
       213

       1、请先修改脚本中的服务端IP。
       2、如被监控端不支持let计算命令请执行sudo dpkg-reconfigure dash命令，弹出选择窗口后选择no。
       3、需要在脚本同目录下创建CentOS、Ubuntu、sh和conf目录，目录下分别放置nrpe的tar安装包、监控脚本和nrpe配置文件。

       #!/bin/bash
       #服务端ip
       SERVER_IP=10.10.10.121
       #安装目录
       INSTALL_HOME=`pwd`
       #安装ubuntu版本
       INSTALL_UBUNTU()
       {
       	sudo apt-get update
       	sudo apt-get install -y autoconf automake gcc libc6 libmcrypt-dev make libssl-dev wget openssl

       	cd /tmp
       	#wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-4.0.3.tar.gz
       	cp $INSTALL_HOME/Ubuntu/nrpe.tar.gz ./
       	tar xzf nrpe.tar.gz

       	cd /tmp/nrpe-nrpe-4.0.3/
       	sudo ./configure --enable-command-args --with-ssl-lib=/usr/lib/x86_64-linux-gnu/
       	sudo make all

       	sudo make install-groups-users

       	sudo make install

       	sudo make install-config

       	sudo sh -c "echo >> /etc/services"
       	sudo sh -c "sudo echo '# Nagios services' >> /etc/services"
       	sudo sh -c "sudo echo 'nrpe    5666/tcp' >> /etc/services"

       	#判断系统是高版本还是低版本
       	VERSION=`lsb_release -r --short`
       	IS_LOW_VERSION=`echo "$VERSION < 15" | bc`

       	if [ $IS_LOW_VERSION = 1 ]; then
       		#低版本
       		sudo make install-init
       	else
       		#高版本
       		sudo make install-init
       		sudo systemctl enable nrpe.service
       	fi

       	sudo mkdir -p /etc/ufw/applications.d
       	sudo sh -c "echo '[NRPE]' > /etc/ufw/applications.d/nagios"
       	sudo sh -c "echo 'title=Nagios Remote Plugin Executor' >> /etc/ufw/applications.d/nagios"
       	sudo sh -c "echo 'description=Allows remote execution of Nagios plugins' >> /etc/ufw/applications.d/nagios"
       	sudo sh -c "echo 'ports=5666/tcp' >> /etc/ufw/applications.d/nagios"
       	sudo ufw allow NRPE
       	sudo ufw reload

       	sudo sh -c "sed -i '/^allowed_hosts=/s/$/,$SERVER_IP/' /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "sed -i 's/^dont_blame_nrpe=.*/dont_blame_nrpe=1/g' /usr/local/nagios/etc/nrpe.cfg"

       	cd $INSTALL_HOME
       	sudo cp ./sh/* /usr/local/nagios/libexec/
       	sudo chmod +xr /usr/local/nagios/libexec/*

       	sudo sh -c "echo 'command[check_ping]=/usr/local/nagios/libexec/check_ping -H 127.0.0.1 -w 3000.0,80% -c 5000.0,100% -p 5' >> /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "echo 'command[check_cpu]=/usr/local/nagios/libexec/check_cpu.sh' >> /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "echo 'command[check_mem]=/usr/local/nagios/libexec/check_mem.sh' >> /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "echo 'command[check_disk]=/usr/local/nagios/libexec/check_disk.sh' >> /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "echo 'command[check_my_service]=/usr/local/nagios/libexec/check_my_service.sh \$ARG1\$' >> /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "echo 'command[check_system_info]=/usr/local/nagios/libexec/check_system_info.sh' >> /usr/local/nagios/etc/nrpe.cfg"
       	NETWORK_INDEX=1
       	for NETWORK_NAME in `cat /proc/net/dev | awk '{i++; if(i>2){print $1}}' | sed 's/^[\t]*//g' | sed 's/[:]*$//g'`;do
       			if [ $NETWORK_NAME != 'lo' ]; then
       					sudo sh -c "echo 'command[check_network$NETWORK_INDEX]=/usr/local/nagios/libexec/check_network.sh $NETWORK_NAME' >> /usr/local/nagios/etc/nrpe.cfg"
       					NETWORK_INDEX=`expr $NETWORK_INDEX + 1 `
       			fi
       	done

       	if [ $IS_LOW_VERSION = 1 ]; then
       		#低版本
       		sudo start nrpe
       	else
       		#高版本
       		sudo systemctl start nrpe.service
       	fi
       }

       #安装centos版本
       INSTALL_CENTOS()
       {
       	yum install -y gcc glibc glibc-common openssl openssl-devel perl wget

       	cd /tmp
       	#wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-4.0.3.tar.gz
       	cp $INSTALL_HOME/CentOS/nrpe.tar.gz ./
       	tar xzf nrpe.tar.gz

       	cd /tmp/nrpe-nrpe-4.0.3/
       	./configure --enable-command-args
       	make all

       	make install-groups-users

       	make install

       	make install-config

       	echo >> /etc/services
       	echo '# Nagios services' >> /etc/services
       	echo 'nrpe    5666/tcp' >> /etc/services

       	#判断系统是高版本还是低版本
       	VERSION=`rpm -q centos-release|cut -d- -f3`
       	#安装bc命令
       	yum -y install bc
       	IS_LOW_VERSION=`echo "$VERSION < 7" | bc`

       	if [ $IS_LOW_VERSION = 1 ]; then
       		#低版本
       		make install-init

       		iptables -I INPUT -p tcp --destination-port 5666 -j ACCEPT
       		service iptables save
       		ip6tables -I INPUT -p tcp --destination-port 5666 -j ACCEPT
       		service ip6tables save
       	else
       		#高版本
       		make install-init
       		systemctl enable nrpe.service

       		firewall-cmd --zone=public --add-port=5666/tcp
       		firewall-cmd --zone=public --add-port=5666/tcp --permanent
       	fi

       	sudo sh -c "sed -i '/^allowed_hosts=/s/$/,$SERVER_IP/' /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "sed -i 's/^dont_blame_nrpe=.*/dont_blame_nrpe=1/g' /usr/local/nagios/etc/nrpe.cfg"

       	cd $INSTALL_HOME
       	sudo cp ./sh/* /usr/local/nagios/libexec/
       	sudo chmod +xr /usr/local/nagios/libexec/*

       	sudo sh -c "echo 'command[check_ping]=/usr/local/nagios/libexec/check_ping -H 127.0.0.1 -w 3000.0,80% -c 5000.0,100% -p 5' >> /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "echo 'command[check_cpu]=/usr/local/nagios/libexec/check_cpu.sh' >> /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "echo 'command[check_mem]=/usr/local/nagios/libexec/check_mem.sh' >> /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "echo 'command[check_disk]=/usr/local/nagios/libexec/check_disk.sh' >> /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "echo 'command[check_my_service]=/usr/local/nagios/libexec/check_my_service.sh \$ARG1\$' >> /usr/local/nagios/etc/nrpe.cfg"
       	sudo sh -c "echo 'command[check_system_info]=/usr/local/nagios/libexec/check_system_info.sh' >> /usr/local/nagios/etc/nrpe.cfg"
       	NETWORK_INDEX=1
       	for NETWORK_NAME in `cat /proc/net/dev | awk '{i++; if(i>2){print $1}}' | sed 's/^[\t]*//g' | sed 's/[:]*$//g'`;do
       			if [ $NETWORK_NAME != 'lo' ]; then
       					sudo sh -c "echo 'command[check_network$NETWORK_INDEX]=/usr/local/nagios/libexec/check_network.sh $NETWORK_NAME' >> /usr/local/nagios/etc/nrpe.cfg"
       					NETWORK_INDEX=`expr $NETWORK_INDEX + 1 `
       			fi
       	done

       	if [ $IS_LOW_VERSION = 1 ]; then
       		#低版本
       		if [ $(echo "$VERSION < 6" | bc) -eq 1 ]; then
       			service nrpe start
       		else
       			start nrpe
       		fi
       	else
       		#高版本
       		systemctl start nrpe.service
       	fi
       }

       #安装其它版本
       INSTALL_OTHER()
       {
       	echo "Not supported at the moment."
       }

       #根据不同系统安装不同版本
       INSTALL()
       {
       	if grep -Eqii "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then
       		DISTRO='CentOS'
               PM='yum'
       		INSTALL_CENTOS
           elif grep -Eqi "Red Hat Enterprise Linux Server" /etc/issue || grep -Eq "Red Hat Enterprise Linux Server" /etc/*-release; then
               DISTRO='RHEL'
               PM='yum'
       		INSTALL_OTHER
           elif grep -Eqi "Aliyun" /etc/issue || grep -Eq "Aliyun" /etc/*-release; then
               DISTRO='Aliyun'
               PM='yum'
       		INSTALL_OTHER
           elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then
               DISTRO='Fedora'
               PM='yum'
       		INSTALL_OTHER
           elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then
               DISTRO='Debian'
               PM='apt'
       		INSTALL_OTHER
           elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then
               DISTRO='Ubuntu'
               PM='apt'
       		INSTALL_UBUNTU
           elif grep -Eqi "Raspbian" /etc/issue || grep -Eq "Raspbian" /etc/*-release; then
               DISTRO='Raspbian'
               PM='apt'
       		INSTALL_OTHER
           else
               echo "unknow linux."
               exit 1
           fi
           echo $DISTRO
       }

       INSTALL

       exit 0

#### # 登录

地址：http:// 服务器 IP/nagios
用户名：nagiosadmin
密码：nagiosadmin

#### # 常见问题

1. 监控日志未写入 mysql（可能是 ndoutils 服务不正常导致）。采用以下脚本命令解决

       1
       2
       3
       4
       5

       #!/bin/bash
       sudo rm -f /usr/local/nagios/var/ndo2db.pid
       sudo rm -f /usr/local/nagios/var/ndo.sock
       sudo systemctl restart ndo2db.service
       sudo systemctl status ndo2db.service

nagios 服务监控