天天看点

nagios监控mysql(check_mysql)及内存使用率(check_mem)

一、监控本地(localhost)内存

1、上传监控脚本 check_mem 到/usr/local/nagios/libexec

1

2

<code># chown -R nagios.nagios check_mem</code>

<code># chmod +x check_mem</code>

2、修改commands配置

3

4

5

<code># vim /usr/local/nagios/etc/objects/commands.cfg </code>

<code>define </code><code>command</code><code>{</code>

<code>        </code><code>command_name        check_mem</code>

<code>        </code><code>command_line        $USER1$</code><code>/check_mem</code> <code>-w $ARG1$ -c $ARG2$</code>

<code>        </code><code>}</code>

3、修改localhost.cfg

6

7

<code># vim /usr/local/nagios/etc/objects/localhost.cfg </code>

<code>define service{</code>

<code>        </code><code>use                             </code><code>local</code><code>-service</code>

<code>        </code><code>host_name                       localhost</code>

<code>        </code><code>service_description             check_mem</code>

<code>        </code><code>check_command                   check_mem!20!10</code>

4、重启nagios服务

<code># service nagios restart</code>

5、check_mem 脚本

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

<code>#!/bin/bash  </code>

<code>USAGE=</code><code>"`basename $0` [-w|--warning]&lt;percent free&gt; [-c|--critical]&lt;percent free&gt;"</code>

<code>THRESHOLD_USAGE=</code><code>"WARNING threshold must be greater than CRITICAL: `basename $0` $*"</code>

<code>calc=</code><code>/tmp/memcalc</code>

<code>percent_free=</code><code>/tmp/mempercent</code>

<code>critical=</code><code>""</code>

<code>warning=</code><code>""</code>

<code>STATE_OK=0</code>

<code>STATE_WARNING=1</code>

<code>STATE_CRITICAL=2</code>

<code>STATE_UNKNOWN=3</code>

<code># print usage  </code>

<code>if</code> <code>[[ $</code><code># -lt 4 ]]</code>

<code>then</code>

<code>        </code><code>echo</code> <code>""</code>  

<code>        </code><code>echo</code> <code>"Wrong Syntax: `basename $0` $*"</code>  

<code>        </code><code>echo</code> <code>"Usage: $USAGE"</code>  

<code>        </code><code>exit</code> <code>0</code>

<code>fi</code>

<code># read input  </code>

<code>while</code> <code>[[ $</code><code># -gt 0 ]]  </code>

<code>  </code><code>do</code>

<code>        </code><code>case</code> <code>"$1"</code> <code>in</code>

<code>               </code><code>-w|--warning)</code>

<code>               </code><code>shift</code>

<code>               </code><code>warning=$1</code>

<code>        </code><code>;;</code>

<code>               </code><code>-c|--critical)</code>

<code>               </code><code>critical=$1</code>

<code>        </code><code>esac</code>

<code>        </code><code>shift</code>

<code>  </code><code>done</code>

<code># verify input  </code>

<code>if</code> <code>[[ $warning -</code><code>eq</code> <code>$critical || $warning -lt $critical ]]</code>

<code>        </code><code>echo</code> <code>"$THRESHOLD_USAGE"</code>  

<code># Total memory available  </code>

<code>total=`</code><code>free</code> <code>-m | </code><code>head</code> <code>-2 |</code><code>tail</code> <code>-1 |</code><code>gawk</code> <code>'{print $2}'</code><code>`</code>

<code># Total memory used  </code>

<code>used=`</code><code>free</code> <code>-m | </code><code>head</code> <code>-2 |</code><code>tail</code> <code>-1 |</code><code>gawk</code> <code>'{print $3}'</code><code>`</code>

<code># Calc total minus used  </code>

<code>free</code><code>=`</code><code>free</code> <code>-m | </code><code>head</code> <code>-2 |</code><code>tail</code> <code>-1 |</code><code>gawk</code> <code>'{print $2-$3}'</code><code>`</code>

<code># normal values  </code>

<code>#echo "$total"MB total  </code>

<code>#echo "$used"MB used  </code>

<code>#echo "$free"MB free  </code>

<code># make it into % percent free = ((free mem / total mem) * 100)  </code>

<code>echo</code> <code>"5"</code> <code>&gt; $calc </code><code># decimal accuracy  </code>

<code>echo</code> <code>"k"</code> <code>&gt;&gt; $calc </code><code># commit  </code>

<code>echo</code> <code>"100"</code> <code>&gt;&gt; $calc </code><code># multiply  </code>

<code>echo</code> <code>"$free"</code> <code>&gt;&gt; $calc </code><code># division integer  </code>

<code>echo</code> <code>"$total"</code> <code>&gt;&gt; $calc </code><code># division integer  </code>

<code>echo</code> <code>"/"</code> <code>&gt;&gt; $calc </code><code># division sign  </code>

<code>echo</code> <code>"*"</code> <code>&gt;&gt; $calc </code><code># multiplication sign  </code>

<code>echo</code> <code>"p"</code> <code>&gt;&gt; $calc </code><code># print  </code>

<code>percent=`</code><code>/usr/bin/dc</code> <code>$calc|</code><code>/bin/sed</code> <code>'s/^\./0./'</code><code>|</code><code>/usr/bin/tr</code> <code>"."</code> <code>" "</code><code>|</code><code>/usr/bin/gawk</code> <code>{</code><code>'print $1'</code><code>}`</code>

<code>#percent1=`/usr/bin/dc $calc`  </code>

<code>#echo "$percent1"  </code>

<code>if</code> <code>[[ </code><code>"$percent"</code> <code>-</code><code>le</code>  <code>$critical ]]</code>

<code>        </code><code>then</code>

<code>                </code><code>echo</code> <code>"CRITICAL - $free MB ($percent%) Free Memory"</code>  

<code>                </code><code>exit</code> <code>2</code>

<code>if</code> <code>[[ </code><code>"$percent"</code> <code>-</code><code>le</code>  <code>$warning ]]</code>

<code>                </code><code>echo</code> <code>"WARNING - $free MB ($percent%) Free Memory"</code>  

<code>                </code><code>exit</code> <code>1</code>

<code>if</code> <code>[[ </code><code>"$percent"</code> <code>-gt  $warning ]]</code>

<code>                </code><code>echo</code> <code>"OK - $free MB ($percent%) Free Memory"</code>  

<code>                </code><code>exit</code> <code>0</code>

二、监控客户端内存使用情况

2、修改nrpe.cfg

<code># vim /usr/local/nagios/etc/nrpe.cfg </code>

<code>command</code><code>[check_users]=</code><code>/usr/local/nagios/libexec/check_users</code> <code>-w 3 -c 5</code>

<code>command</code><code>[check_load]=</code><code>/usr/local/nagios/libexec/check_load</code> <code>-w 15,10,5 -c 30,25,20</code>

<code>command</code><code>[check_xvda]=</code><code>/usr/local/nagios/libexec/check_disk</code> <code>-w 10% -c 5% -p </code><code>/dev/xvda</code>

<code>command</code><code>[check_zombie_procs]=</code><code>/usr/local/nagios/libexec/check_procs</code> <code>-w 5 -c 10 -s Z</code>

<code>command</code><code>[check_total_procs]=</code><code>/usr/local/nagios/libexec/check_procs</code> <code>-w 150 -c 200 </code>

<code>command</code><code>[check_xvdb2]=</code><code>/usr/local/nagios/libexec/check_disk</code> <code>-w 10% -c 5% -p </code><code>/dev/xvdb2</code>

<code>command</code><code>[check_swap]=</code><code>/usr/local/nagios/libexec/check_swap</code> <code>-w 20% -c 10%</code>

<code>command</code><code>[check_mem]=</code><code>/usr/bin/sudo</code> <code>/usr/local/nagios/libexec/check_mem</code> <code>-w 20 -c 10   </code><code>#增加此行</code>

3、在nagios服务器端增加监控服务

<code># vim /usr/local/nagios/etc/servers/192.168.200.111.cfg</code>

<code>        </code><code>use                             generic-service</code>

<code>        </code><code>host_name                       192.168.200.111</code>

<code>        </code><code>check_command                   check_nrpe!check_mem</code>

三、排错

1、NRPE: Unable to read output

(1)为nagios用户增加sudo权限

<code># visudo</code>

<code>nagios  ALL=(ALL) NOPASSWD:</code><code>/usr/local/nagios/libexec/check_mem</code>

(2)注释掉一下行,表示不需要控制终端

<code>#Defaults    requiretty</code>

四、nagios监控mysql

1、check_mysql

    nagios监控mysql使用的是 check_mysql 这个插件,需要在nagios服务器上先安装mysql-devel,然后再重新安装nagios-plugin,这样才会出现check_mysql。否则即使copy了一份,也照样用不了。

2、编译或重新编译 nagios-plugin

<code>#yum -y install mysql-devl</code>

<code>#cd nagios-plugins-2.0.3</code>

<code>#./configure --with-nagios-user=nagios --with-nagios-group=nagios</code>

<code>#make &amp;&amp; make install</code>

3、查看 check_mysql

<code># ls /usr/local/nagios/libexec/check_mysql</code>

4、建立专用数据库

<code># mysql -uroot -p</code>

<code>mysql&gt; create database nagios_monitor;</code>

<code>mysql&gt; grant </code><code>select</code> <code>on nagios_monitor.* to nagios@</code><code>'%'</code> <code>identified by </code><code>'123qaz!@#'</code><code>;</code>

<code>Query OK, 0 rows affected (0.00 sec)</code>

<code>mysql&gt; flush privileges;</code>

<code>mysql&gt; </code><code>select</code> <code>User,Password,Host from mysql.user;</code>

<code>+--------+-------------------------------------------+--------------+</code>

<code>| User   | Password                                  | Host         |</code>

<code>| root   | *B9627CB37815863D1E98D0C41E0233A772355E2B | localhost    |</code>

<code>| root   | *B9627CB37815863D1E98D0C41E0233A772355E2B | 127.0.0.1    |</code>

<code>| root   | *B9627CB37815863D1E98D0C41E0233A772355E2B | ::1          |</code>

<code>| cacti  | *BC3E1F14C7940F9C8BCDB05A38385754BB55CD64 | localhost    |</code>

<code>| nagios | *BC3E1F14C7940F9C8BCDB05A38385754BB55CD64 | %            |</code>

<code>8 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

5、check 一下

<code># /usr/local/nagios/libexec/check_mysql -H 192.168.200.105 -unagios -dnagios_monitor -p 123qaz!@#</code>

<code># 报了一个错</code>

<code>/usr/local/nagios/libexec/check_mysql</code><code>: error </code><code>while</code> <code>loading shared libraries: libmysqlclient.so.18: cannot </code><code>open</code> <code>shared object </code><code>file</code><code>: No such </code><code>file</code> <code>or directory</code>

<code># 解决:</code>

<code>ln</code> <code>-sv </code><code>/usr/local/mysql/lib/libmysqlclient</code><code>.so.18 </code><code>/usr/lib64/libmysqlclient</code><code>.so.18</code>

<code># 再重新测试</code>

<code># /usr/local/nagios/libexec/check_mysql -H 192.168.200.111 -unagios -dnagios_monitor -p 123qaz!@#</code>

<code>Uptime: 13991  Threads: 5  Questions: 1242101  Slow queries: 0  Opens: 159  Flush tables: 1  Open tables: 60  Queries per second avg: 88.778|Connections=315c;;; Open_files=85;;; Open_tables=60;;; Qcache_free_memory=16285768;;; Qcache_hits=1210926c;;; Qcache_inserts=16654c;;; Qcache_lowmem_prunes=0c;;; Qcache_not_cached=2c;;; Qcache_queries_in_cache=283;;; Queries=1242101c;;; Questions=1242101c;;; Table_locks_waited=2c;;; Threads_connected=5;;; Threads_running=1;;; Uptime=13991c;;;</code>

6、监控localhost

(1)修改 commands.cfg

<code># vim /usr/local/nagios/etc/objects/commands.cfg</code>

<code>        </code><code>command_name check_mysql</code>

<code>        </code><code>command_line $USER1$</code><code>/check_mysql</code> <code>-H $HOSTADDRESS$ -unagios -dnagios_monitor -p123qaz!@</code><code>#</code>

<code>}</code>

(2)修改 localhost.cfg

<code># vim /usr/local/nagios/etc/objects/localhost.cfg</code>

<code>        </code><code>service_description             check_mysql</code>

<code>        </code><code>check_command                   check_mysql</code>

(3)重启 nagios

7、监控客户端

(1)check 一下

<code># /usr/local/nagios/libexec/check_mysql -H 192.168.200.111 -unagios -dnagios_monitor -p123qaz!@#</code>

(2)客户端修改 nrpe.cfg

<code>command</code><code>[check_mysql]=</code><code>/usr/local/nagios/libexec/check_mysql</code> <code>-H 192.168.200.111 -unagios -dnagios_monitor -p123qaz!@</code><code>#</code>

(3)重启 nrpe

<code># killall nrpe</code>

<code># /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d</code>

(4)服务端定义服务

<code># vim /usr/local/nagios/etc/servers/192.168.200.111.cfg </code>

<code>        </code><code>check_command                   check_nrpe!check_mysql</code>

(5)重启 nagios 服务

本文转自 nmshuishui 51CTO博客,原文链接:http://blog.51cto.com/nmshuishui/1553445,如需转载请自行联系原作者

继续阅读