您的位置:首页 > 移动开发 > IOS开发

nagios云监控

2016-04-14 17:44 441 查看
(注:以下主要包括nagios安装,nagois配置,nagios对redis监控,nagios对mysql监控,nagios对zookeeper监控)

Nagios不但能够实现对系统CPU,磁盘、网络等方面参数的基本系统监测,而且还能够监测包括SMTP,POP3,HTTP,NNTP等各种基本的服务类型。另外通过一些插件的安装和监测脚本自定义用户可以针对自己的应用程序实现监测,并针对大量的监测主机和多个对象部署层次化的监测架构。

一、nagios安装

Nagios主节点需要安装:

nagios

nagios-plugin

nrpe

php

apache

Nagios从节点需要安装:

nagios-plugin

nrpe

NRPE说明:

NRPE外部构件监测远程主机。NRPE外部构件可以在远程的Linux/Unix主机上执行插件程序。如果是要象监测本地主机一样对远程主机的磁盘利用率、CPU负荷和内存占用率等情况下,NRPE外部构件将非常有用。

提到“外部构件”这个概念的时候需要说明一下,Nagios有许多"外部构件"软件包可供使用。外部构件可以扩展Nagios的应用并使之与其他软件集成,而且能够通过WEB接口来实现管理配置文件,监测远程主机(*NIX,Windows等),对远程主机的强制监测,减化并扩展告警逻辑等功能。

NRPE是一个可在远程Linux/Unix主机上执行的插件的外部构件包。如果你需要监测远程的主机上的本地资源或属性,如磁盘利用率、CPU负荷、内存利用率等时是很有用的。最终效果和用check_by_ssh插件来实现的功能一样,但是他不需要占用更多的监测主机的CPU负荷,所以当你需要监测大量的主机时这个构件将起到很重要的作用(如图pic35.png所示)。



通过该图可以看出,我们需要在被监测主机上部署NRPE,他相当于一个守护进程负责监听。而监测主机使用check_nrpe并通过SSL连接访问这个daemon,然后调用被监测方的check_disk,check_load等脚本获取信息并将结果传递到监测主机。同时这些脚本也有能力监测到其他主机的相关信息。

主机安装环境检查(全部节点)

若有缺失,请先安装. 可通过如下几个镜像网站下载相关安装包:
http://rpm.pbone.net/ http://mirrors.163.com/centos/6.4/os/x86_64/Packages/ http://mirrors.sohu.com/centos/6.4/os/x86_64/Packages/
创建nagios用户

主节点安装

一、nagios(下载:http://jaist.dl.sourceforge.net/project/nagios/nagios-4.x/nagios-4.0.2/nagios-4.0.2.tar.gz)

1、安装

2、将nagios添加为服务

二、nagios插件(下载https://www.nagios-plugins.org/download/nagios-plugins-1.5.tar.gz)

如果出现mysql相关的编译错误,是mysql的默认安装路径被修改导致的,调整with-mysql后重新make

三、NRPE(下载http://jaist.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz)

被监控节点需要执行
make
install
-daemon &&
make
install
-daemon-config &&
make
install
-xinetd


四、Apache(下载http://archive.apache.org/dist/httpd/httpd-2.2.23.tar.gz)

五、PHP(下载http://cn2.php.net/distributions/php-5.4.10.tar.gz)

从节点安装

从借点安装上面二、三两部分就可以

二、Nagios配置

一、被监控节点配置(主从联系配置):

1、更改/etc/xinetd.d/nrpe文件,设置允许nagios主节点服务器连接

2、在/etc/services结尾增加:

nrpe 5666/tcp # NRPE

3、增加对参数的支持

4、启动xinetd

service xinetd restart

5、验证nrpe是否监听

netstat
-at |
grep
nrpe


6、测试nrpe是否正常运行

7、主节点测试

二、被监控节点命令配置:

1、修改配置文件

修改为:

check_users 监控登陆用户数

check_load 监控CPU负载

check_disk 监控磁盘的使用

check_procs 监控进程数量,状态包括 RSZDT

check_swap 监控SWAP分区使用

2、检查监控命令配置是否ok

service xinetd restart

三、主节点配置(主从联系配置):

1、定义权限

(使用 nagios 用户)

vi /usr/local/nagios/etc/cgi.cfg

修改如下内容,为admin用户增加权限:

2、nagios.cfg

vi /usr/local/nagios/etc/nagios.cfg

主配置文件声明了监控脚本的存储路径为 ./servers, 默认没有此目录,需要手工创建

nagios 会读取 servers 目录下面后缀为.cfg的全部文件作为配置文件

3、定义监控组

声明一个监控的主机组,将主机环境中提到的三台主机全部加入监控

vi /export/home/nagios/etc/servers/group.cfg

新文件,内容如下:

解释下上面的配置:

hostgroup_name: 主机组的名称,可随意指定

alias: 主机组别名,可随意指定

members: 主机组成员,多个主机名称之前使用逗号分隔.另外主机名称必须与 define host 中host_name 一致.

4、定义监控主机

先定义本地主机 主机-1

vi /export/home/nagios/etc/servers/主机-1.cfg

由于是此主机也是监控服务主节点所在主机,因此可以使用check_local_* 的相关命令来进行监控.

这个文件中已经将常用的监控项配置进去.

再定义远程主机主机2和主机-3

定义远程主机的监控之前,需要先定义check_nrpe命令

vi /usr/local/nagios/etc/objects/commands.cfg

在文件的最后面添加如下内容:

下面的配置文件定义同上

5、定义邮件收件人

定义监控人邮件地址

vi /usr/local/nagios/etc/objects/contacts.cfg

除了配置监控邮件的接收人外,还要确保:

本主机与邮件服务器互通

本主机SendMail可以使用外部SMTP服务发送邮件

三、对redis的监控

首先安装:yum info perl5 \yum install perl-Time-HiRes

1、下载check_redis.pl插件,放入libexec

2、etc/objects/commands.cfg加入:

# check redis

define command {

command_name check_redis

command_line $USER1$/check_redis.pl -H $HOSTADDRESS$ -p $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$ -f

}

3、监听配置文件加入

define service {

use local-service

service_description 描述名称

check_command 命令(如下)

host_name 主机名/IP

}

check_redis!端口!'监听内容(逗号隔开)'!(报警阀值)!(报警阀值) ;

监听内容参数翻译如下:

--total_connections_received=WARN:threshold,CRIT:threshold,<other specifiers>

Total Connections Received 收到总连接数

--total_connections_received_rate=WARN:threshold,CRIT:threshold,<other specifiers>

Rate of Change of Total Connections Received 总共收到的连接率

--total_expires=WARN:threshold,CRIT:threshold,<other specifiers>

Number of Expired Keys for All DBs dbs总过期密钥

--used_memory_rss=WARN:threshold,CRIT:threshold,<other specifiers>

Resident Set Size, Used Memory in Bytes

--used_cpu_sys=WARN:threshold,CRIT:threshold,<other specifiers>

Main Process Used System CPU CPU使用率

--redis_git_dirty=WARN:threshold,CRIT:threshold,<other specifiers>

Git Dirty Set Bit 脏数据

--connected_clients=WARN:threshold,CRIT:threshold,<other specifiers>

Total Number of Connected Clients 总连接数

--uptime_in_days=WARN:threshold,CRIT:threshold,<other specifiers>

Total Uptime in Days 总运行天数

--uptime_in_days_rate=WARN:threshold,CRIT:threshold,<other specifiers>

Rate of Change of Total Uptime in Days 总运行时间的变化率

--keyspace_hits=WARN:threshold,CRIT:threshold,<other specifiers>

Total Keyspace Hits

--keyspace_hits_rate=WARN:threshold,CRIT:threshold,<other specifiers>

Rate of Change of Total Keyspace Hits

--pubsub_channels=WARN:threshold,CRIT:threshold,<other specifiers>

Number of Pubsub Channels Pubsub通道数量

--used_cpu_user_children=WARN:threshold,CRIT:threshold,<other specifiers>

Child Processes Used User CPU 子进程用户CPU使用

--keyspace_misses=WARN:threshold,CRIT:threshold,<other specifiers>

Keyspace Misses

--keyspace_misses_rate=WARN:threshold,CRIT:threshold,<other specifiers>

Rate of Change of Keyspace Misses

--used_cpu_user=WARN:threshold,CRIT:threshold,<other specifiers>

Main Process Used User CPU

--total_commands_processed=WARN:threshold,CRIT:threshold,<other specifiers>

Total Number of Commands Processed from Start 从开始处理的命令总数量

--total_commands_processed_rate=WARN:threshold,CRIT:threshold,<other specifiers>

Rate of Change of Total Number of Commands Processed from Start

--mem_fragmentation_ratio=WARN:threshold,CRIT:threshold,<other specifiers>

Memory Fragmentation Ratio 记忆碎片比率

--blocked_clients=WARN:threshold,CRIT:threshold,<other specifiers>

Number of Currently Blocked Clients 目前阻止客户的数量

--evicted_keys=WARN:threshold,CRIT:threshold,<other specifiers>

Total Number of Evicted Keys 驱逐总数

--evicted_keys_rate=WARN:threshold,CRIT:threshold,<other specifiers>

Rate of Change of Total Number of Evicted Keys驱逐率

--total_keys=WARN:threshold,CRIT:threshold,<other specifiers>

Total Number of Keys on the Server

--expired_keys=WARN:threshold,CRIT:threshold,<other specifiers>

Total Number of Expired Keys

--expired_keys_rate=WARN:threshold,CRIT:threshold,<other specifiers>

Rate of Change of Total Number of Expired Keys

--connected_slaves=WARN:threshold,CRIT:threshold,<other specifiers>

Number of Connected Slaves

--used_cpu_sys_children=WARN:threshold,CRIT:threshold,<other specifiers>

Child Processed Used System CPU

四、对mysql的监控

三个插件:check_mysql/check_mysqld.pl/check_mysql_health,check_mysql_health比较完善,选取check_mysql_health;

check_mysql_health用法:

下载地址 https://labs.consol.de/nagios/check_mysql_health/
使用前提安装:yum -y install perl-DBD-MySQL

1、下载check_mysql_health-2.1.tar.gz

2、解压tar -zxvf check_mysql_health-2.1.tar.gz

3、安装

#./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with- perl=/usr/bin/perl
#make && make install

4、命令测试:

./check_mysql_health --hostname 192.168.0.1 --port 3306 --username myname --password mypassword --mode threads-connected --warning 700 --critical 1000

5、etc/objects/commands.cfg添加:

# check mysql health

define command {

command_name check_mysql_health

command_line $USER1$/check_mysql_health --hostname $ARG1$ --port $ARG2$ --username $ARG3$ --password $ARG4$ --mode $ARG5$ --warning $ARG6$ --critical $ARG7$

}

6、监控配置文件配置(同上)

监控参数:

connection-time (Time to connect to the server)
uptime (Time the server is running)
threads-connected (Number of currently open connections)线程数
threadcache-hitrate (Hit rate of the thread-cache)慢查询
slave-lag (Seconds behind master)
slave-io-running (Slave io running: Yes)主从热备
slave-sql-running (Slave sql running: Yes)主从热备
qcache-hitrate (Query cache hitrate)
qcache-lowmem-prunes (Query cache entries pruned because of low memory)
keycache-hitrate (MyISAM key cache hitrate)
bufferpool-hitrate (InnoDB buffer pool hitrate)
bufferpool-wait-free (InnoDB buffer pool waits for clean page available)
log-waits (InnoDB log waits because of a too small log buffer)
tablecache-hitrate (Table cache hitrate)
table-lock-contention (Table lock contention)锁表率
index-usage (Usage of indices)
tmp-disk-tables (Percent of temp tables created on disk)
slow-queries (Slow queries)
long-running-procs (long running processes)
cluster-ndbd-running (ndnd nodes are up and running)
sql (any sql command returning a single number)

7、/etc/init.d/nagios restart 重启nagios,若报进程被锁 则需要删除/var/lock/subsys/nagios

五、对zookeeper的监控

一、安装插件

git clone https://github.com/harisekhon/nagios-plugins cd nagios-plugins
make

二、插件说明

1、etc/objects/commands.cfg添加:

# check zk

define command {

command_name check_zk

command_line /exeport/home/nagios/nagios_plugins/check_zookeeper.pl -H $ARG1$

}

2、service中配置监控信息

注:若出现权限不够,需要修改权限为可执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: