Agenda: ejercicio-nagios-plugin-espacio-en-disco.txt

File ejercicio-nagios-plugin-espacio-en-disco.txt, 3.9 KB (added by admin, 6 years ago)
Line 
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
22Es 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
27Crear 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
32unless ($ARGV[2]) {
33  print STDERR "Usage: $0 <host> <community> <mountpoint> [<warn%> [<crit%>]]\n";
34  exit 3;
35}
36
37my $res = `snmpwalk -On -Oq -r 2 -t 1 -c '$ARGV[1]' -v2c '$ARGV[0]' .1.3.6.1.2.1.25.2.3`;
38unless ($res =~ /^\.1.3.6/) {
39  print "Unable to contact via SNMP\n";
40  exit 3;
41}
42
43my $table = {};
44my $index;
45foreach 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
53unless ($index) {
54  print "Unable to find mountpoint $ARGV[2]\n";
55  exit 3;
56}
57
58my $size = $table->{".1.3.6.1.2.1.25.2.3.1.5.$index"};
59$size += 4294967296 if $size < 0;
60my $used = $table->{".1.3.6.1.2.1.25.2.3.1.6.$index"};
61$used += 4294967296 if $used < 0;
62my $percent = $used * 100.0 / $size;
63
64my $block = $table->{".1.3.6.1.2.1.25.2.3.1.4.$index"};
65if ($block =~ /^(\d+)/) {
66  $block = $1;
67  $size = $size * 1.0 * $block / 1024 / 1024;
68  $used = $used * 1.0 * $block / 1024 / 1024;
69}
70printf "%.2f%% used (%d out of %d MB)\n", $percent, $used, $size;
71if ($ARGV[4] && $percent >= $ARGV[4]) {
72  exit 2;  # Critical
73}
74if ($ARGV[3] && $percent >= $ARGV[3]) {
75  exit 1;  # Warning
76}
77exit 0;
78
79~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
80
81
82Hacerlo 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
91Crear un nuevo archivo de configuracion:
92
93~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
94# editor /etc/nagios-plugins/config/hrstorage.cfg
95~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96
97~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
98define 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
106Un chequeo de servicio ahora se puede añadir a un host individual, o a un hostgroup.
107Por ejemplo:
108
109~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
110define 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
119los 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 (%)