1 | % Instalacion y configuracion de Nagios |
---|
2 | % |
---|
3 | |
---|
4 | # Introduccion |
---|
5 | |
---|
6 | ## Metas |
---|
7 | |
---|
8 | * Instalar y configurar el plugin de espacio de disco para Nagios |
---|
9 | |
---|
10 | ## Notas: |
---|
11 | |
---|
12 | * Los comandos precedidos por "$" implican que debe ejecutar el comando |
---|
13 | como usuario genérico - no como root |
---|
14 | * Los comandos precedidos por "#" implican que deberÃa estar trabajando como usuario root. |
---|
15 | * Los comandos con inicios de lÃnea más especÃficos como "rtrX>" o |
---|
16 | "mysql>" indican que debe ejecutar los comandos en un equipo remoto, |
---|
17 | o dentro otro programa |
---|
18 | |
---|
19 | |
---|
20 | # Ejercicios |
---|
21 | |
---|
22 | Es posible advertir sobre los umbrales de espacio en disco con el plugin check_snmp existente, pero es bastante más incómodo de configurar (porque, por ejemplo, usted tiene que asignar manualmente el punto de montaje del sistema de archivos al Ãndice OID). Asà que el enfoque que se da aquà es instalar un nuevo plugin, que se encarge de esto por usted. |
---|
23 | |
---|
24 | |
---|
25 | ## 1. Crear un plugin (script en perl) |
---|
26 | |
---|
27 | Crear un archivo "/usr/local/bin/check_hrstorage.pl" con el siguiente contenido |
---|
28 | |
---|
29 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
30 | #!/usr/bin/perl -w (esta lÃnea debe ser la primera lÃnea en el archivo) |
---|
31 | |
---|
32 | unless ($ARGV[2]) { |
---|
33 | print STDERR "Usage: $0 <host> <community> <mountpoint> [<warn%> [<crit%>]]\n"; |
---|
34 | exit 3; |
---|
35 | } |
---|
36 | |
---|
37 | my $res = `snmpwalk -On -Oq -r 2 -t 1 -c '$ARGV[1]' -v2c '$ARGV[0]' .1.3.6.1.2.1.25.2.3`; |
---|
38 | unless ($res =~ /^\.1.3.6/) { |
---|
39 | print "Unable to contact via SNMP\n"; |
---|
40 | exit 3; |
---|
41 | } |
---|
42 | |
---|
43 | my $table = {}; |
---|
44 | my $index; |
---|
45 | foreach my $line (split(/\n/,$res)) { |
---|
46 | my ($k,$v) = split(/ /,$line,2); |
---|
47 | $table->{$k} = $v; |
---|
48 | if ($v eq $ARGV[2] && $k =~ /^.1.3.6.1.2.1.25.2.3.1.3\.(\d+)$/) { |
---|
49 | $index = $1; |
---|
50 | } |
---|
51 | } |
---|
52 | |
---|
53 | unless ($index) { |
---|
54 | print "Unable to find mountpoint $ARGV[2]\n"; |
---|
55 | exit 3; |
---|
56 | } |
---|
57 | |
---|
58 | my $size = $table->{".1.3.6.1.2.1.25.2.3.1.5.$index"}; |
---|
59 | $size += 4294967296 if $size < 0; |
---|
60 | my $used = $table->{".1.3.6.1.2.1.25.2.3.1.6.$index"}; |
---|
61 | $used += 4294967296 if $used < 0; |
---|
62 | my $percent = $used * 100.0 / $size; |
---|
63 | |
---|
64 | my $block = $table->{".1.3.6.1.2.1.25.2.3.1.4.$index"}; |
---|
65 | if ($block =~ /^(\d+)/) { |
---|
66 | $block = $1; |
---|
67 | $size = $size * 1.0 * $block / 1024 / 1024; |
---|
68 | $used = $used * 1.0 * $block / 1024 / 1024; |
---|
69 | } |
---|
70 | printf "%.2f%% used (%d out of %d MB)\n", $percent, $used, $size; |
---|
71 | if ($ARGV[4] && $percent >= $ARGV[4]) { |
---|
72 | exit 2; # Critical |
---|
73 | } |
---|
74 | if ($ARGV[3] && $percent >= $ARGV[3]) { |
---|
75 | exit 1; # Warning |
---|
76 | } |
---|
77 | exit 0; |
---|
78 | |
---|
79 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
80 | |
---|
81 | |
---|
82 | Hacerlo ejecutable usando el siguiente comando: |
---|
83 | |
---|
84 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
85 | # chmod +x /usr/local/bin/check_hrstorage.pl |
---|
86 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
87 | |
---|
88 | |
---|
89 | ## 2. Configurar el plugin |
---|
90 | |
---|
91 | Crear un nuevo archivo de configuracion: |
---|
92 | |
---|
93 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
94 | # editor /etc/nagios-plugins/config/hrstorage.cfg |
---|
95 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
96 | |
---|
97 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
98 | define command { |
---|
99 | command_name check_hrstorage |
---|
100 | command_line /usr/local/bin/check_hrstorage.pl '$HOSTADDRESS$' '$ARG1$' '$ARG2$' '$ARG3$' '$ARG4$' |
---|
101 | } |
---|
102 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
103 | |
---|
104 | ## 3. Agregar un chequeo de Servicio |
---|
105 | |
---|
106 | Un chequeo de servicio ahora se puede añadir a un host individual, o a un hostgroup. |
---|
107 | Por ejemplo: |
---|
108 | |
---|
109 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
110 | define service { |
---|
111 | host_name noc |
---|
112 | service_description Disk space / |
---|
113 | check_command check_hrstorage!NetManage!/!80!90 |
---|
114 | use generic-service |
---|
115 | notification_interval 0 |
---|
116 | } |
---|
117 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
118 | |
---|
119 | los parametros para "check_hrstorage" son: |
---|
120 | |
---|
121 | * Comunidad SNMP |
---|
122 | * Punto de montaje del sistema de archivos |
---|
123 | * Umbral de advertencia (%) |
---|
124 | * Umbral crÃtico (%) |
---|