Translate

lunes, mayo 25, 2015

Cómo matar procesos fácilmente

Kill: matar un proceso usando su PID

La forma más complicada pero al mismo tiempo más precisa de matar un proceso es a través de su PID (siglas en inglés de “Identificador de Proceso”). Cualquiera de estas 3 variantes puede servir:
kill -TERM pid
kill -SIGTERM pid
kill -15 pid
Se puede usar el nombre de la señal (TERM o SIGTERM) que se desea mandar al proceso o su número de identificación (15). Para ver un listado completo de las posibles señales, sugiero verificar el manual de kill. Para ello, ejecutá:
man kill
Veamos un ejemplo de cómo matar Firefox:
Primero, hay que averiguar el PID del programa:
ps -ef | grep firefox
Ese comando devolverá algo parecido a esto:
1986 ?        Sl     7:22 /usr/lib/firefox-3.5.3/firefox
Usamos el PID devuelto por el comando anterior para aniquilar el proceso:
kill -9 1986

killall: matar un proceso usando su nombre

Este comando es bien fácil
killall nombre_proceso
Un dato a tener en cuenta al usar este método es que en caso de que haya más de una instancia de ese programa ejecutándose, se cerrarán todas.

pkill: matar un proceso usando parte de su nombre

Es posible aniquilar un proceso especificando el nombre completo o parte del nombre. Eso significa que no hay necesidad de que recuerdes el PID del proceso para enviar la señal.
pkill parte_nombre_proceso
Como contrapartida, este método aniquilará todos los procesos que contengan la palabra ingresada. Eso significa que si tenemos abiertos 2 procesos que comparten una palabra en el nombre, se cerrarán ambos.

xkill: matar un proceso seleccionando la ventana con el mouse

Este es el método más sencillo y el más práctico. En caso de desastre, simplemente presioná Alt + F2 para que se abra el cuadro de diálogo que te permitirá ejecutar comandos. Desde allí, ejecutá el siguiente comando:
xkill
El cursor del mouse se transformará en una pequeña calavera. Todo lo que resta es hacer clic en la ventana que querés cerrar y voilá. Chau proceso.

Algunos comentarios finales

Para terminar, quería compartir algunos consejos que pueden ser de utilidad. En Linux, al igual que en Windows, cuando un proceso se cuelga, generalmente se puede cerrar la ventana en cuestión haciendo clic en el botón Cerrar (que tiene la forma de una X). Luego de unos segundos, aparecerá una ventana preguntándonos si realmente queremos aniquilar el proceso puesto que éste no responde adecuadamente. Le damos que sí y listo.
Eso quiere decir que los métodos aquí descriptos deberían ser utilizados cuando no pasa nada al hacer clic en el botón Cerrar de la ventana en cuestión.
En caso de desastre mayor, no olvides que antes de presionar es posible realizar un reinicio “seguro”.
Por último, puede ser de mucha utilidad descubrir cuáles son los procesos que están ejecutándose actualmente. Para ello, los diferentes entornos de escritorio (GNOME, KDE, etc.) tienen herramientas gráficas que facilitan esta tarea. No obstante, en caso de que no puedas acceder a ellas o simplemente desees hacerlo desde el terminal, podés ejecutar lo siguiente:
top
En caso de que esto no funcione o que no tengas el paquete correspondiente instalado, siempre podés ejecutar:
ps -A
Esto listará todos los procesos en ejecución, junto con sus respectivos nombres y PIDs.

miércoles, abril 29, 2015

Monitorización de procesos Windows con Nagios



 
En ocasiones nos podremos encontrar con la necesidad de monitorizar con Nagios un proceso (entendido como aplicación en ejecución) que se encuentra en ejecución en un sistema Windows.  Para ello se puede emplear  el plugin check_winprocess (https://www.itefix.no/i2/check_winprocess ) creado por la empresa Itefix.
 
Se trata de un plugin basado en NRPE, aplicación que permite ejecutar remotamente plugins de Nagios en otras máquinas, bajo Linux o bajo Windows.


  

 
Para hacer funcionar NRPE en el cliente se ha utilizado NSClient++, concretamente la versión 0.3.9 :http://sourceforge.net/projects/nscplus/files/nscplus/NSClient%2B%2B%200.3.9/. La última versión de NSClient++ a fecha de creación de este artículo (0.4.1.73) no funciona correctamente  para nuestro propósito. 
 

Una vez instalado NSClient++ (marcar como mínimo check_nrpe en el proceso de instalación) deberemos copiar el ejecutable check_winprocess.exe dentro del directorio scriptsde NSClient++. En nuestro caso la ruta es C:\Program Files\NSClient++\scripts . Además deberemos copiar el fichero check_winprocess.pl en el directorio libexec de Nagios en nuestro servidor de monitorización.

A continuación se deberán añadir al final del fichero de configuración NSC.ini ubicado en c:\ Program Files\NSClient++ unas líneas similares a las siguientes:

[NRPE Handlers]
command[nombre_check]=Path_WinProcess_NSClient\check_winprocess.exe –filter “imagename comparador(eq,ne,…) nombreProceso_a_Monitorizar.exe

Por ejemplo, vamos a monitorizar una serie de procesos asociados a una aplicación, para lo cual accedemos al administrador de tareas de Windows:





 [NRPE Handlers]
command[check_proc_StrLive]=C:\Program Files\NSClient++\scripts\check_winprocess\check_winprocess.exe --filter "imagename eq StreamLive.exe"
command[check_proc_DRBatch]=C:\Program Files\NSClient++\scripts\check_winprocess\check_winprocess.exe --filter "imagename eq DRBatchServer.exe"
command[check_proc_KMOOP]=C:\Program Files\NSClient++\scripts\check_winprocess\check_winprocess.exe --filter "imagename eq KMOOPEncoder.exe"
command[check_proc_KMMuxer]=C:\Program Files\NSClient++\scripts\check_winprocess\check_winprocess.exe --filter "imagename eq KMMuxer.exe"

De forma que añadimos al final del fichero NSC.ini las líneas indicadas:



Una vez creados nuestros manejadores en el sistema Windows, se deberán añadir los comandos oportunos a nuestro servidor Nagios (en el fichero commands.cfg):



Vamos a hacer uso de check_nrpe, como se ha indicado al comienzo de este artículo, y necesitaremos conocer la IP del sistema Windows a monitorizar y el nombre del manejador que hemos indicado en el fichero NSC.ini del NSClient++.

El formato del comando a utilizar:

Check_nrpe  –H   IP_EquipoWindows  –c   handler_NSC_ini

Una vez creado el comando, se puede añadir al fichero de monitorización del equipo en Nagios (en el directorio servers de nagios):




En este caso emplearemos el nombre definido en commands.cfg

Ya sólo queda reiniciar Nagios para que coja la nueva configuración:





Y observar los resultados:






INFORMACIÓN SOBRE WINPROCESS


NAME
   check_winprocess - Nagios NRPE plugin for checking processes

SYNOPSIS
   check_winprocess [--filter *filter spec*[,*filter spec*] ... ] ... ]
   [--warning *threshold*] [--critical *threshold*] [--compare *operator*]
   [--first *number*] [--kill] [--verbose] [--help]

DESCRIPTION
   check_winprocess is a Nagios NRPE plugin for checking processes by using
   criteria like status, name, cpu and memory usage and many more. You can
   also specify if the processes meeting the criteria will be killed.
   check_process uses Windows tools *tasklist* and *taskkill* (available in
   XP and later).

OPTIONS
   --filter *filter spec*[,*filter spec*] ... ] ... ]
       Specify filters to select processes. A *filter spec* consists of
       three fields: filter name, operator and value. You can specify
       several comma separated filters for one --filter option, as well as
       several --filter options. Defaults to all processes if no filter is
       defined. List of filters available (see tasklist documentation for
       more help):

        Filter Name     Valid Operators           Valid Value(s)
        -----------     ---------------           --------------
        STATUS          eq, ne                    RUNNING | NOT RESPONDING
        IMAGENAME       eq, ne                    Image name
        PID             eq, ne, gt, lt, ge, le    PID value
        SESSION         eq, ne, gt, lt, ge, le    Session number
        SESSIONNAME     eq, ne                    Session name
        CPUTIME         eq, ne, gt, lt, ge, le    CPU time in the format
                                                  of hh:mm:ss.
                                                  hh - hours,
                                                  mm - minutes, ss - seconds
        MEMUSAGE        eq, ne, gt, lt, ge, le    Memory usage in KB
        USERNAME        eq, ne                    User name in [domain\]user
                                                  format
        SERVICES        eq, ne                    Service name
        WINDOWTITLE     eq, ne                    Window title
        MODULES         eq, ne                    DLL name

   --warning *threshold*
       Return WARNING if the number of processes matching the criteria is
       more than *threshold*. Optional.

   --critical *threshold*
       Return CRITICAL if the number of processes matching the criteria is
       more than *threshold*. Optional.

   --compare *operator*
       Specify the type of comparison operator for threshold checks.
       Optional. Available values are:

        'eq'  equal to
        'ne'  not equal
        'gt'  greater than (default!)
        'ge'  greater or equal
        'lt'  less than
        'le'  less or equal

   --first *number*
       List process names as a part of plugin output. The first specified
       number of processes will be selected. Optional.

   --kill
       Kill the processes matching the filtering criteria. Useful as an
       action handler. Works only if at least one filter is defined.
       Optional.

   --verbose
       Increase output verbosity for debugging.

   --help
       Produce a help message.

EXAMPLES
    check_winprocess.exe --warn 100 --critical 300

   Checks the total number of processes in memory and returns WARNING for
   more than 100 processes or CRITICAL for more than 300 processes.

    check_winprocess.exe --filter "imagename eq runaway.exe","cputime gt 01:00:00" --critical 1

   Checks if there exists *runaway.exe* processes with CPU time longer than
   one hour, returns CRITICAL if there was at least one process.

    check_winprocess.exe --filter "imagename eq A.EXE","imagename eq B.EXE","imagename eq C.EXE" --compare ne --critical 3

   Checks if there exists A.EXE, B.EXE and C.EXE processes, returns CRITICAL
   if the number of processes is not 3.

    check_winprocess.exe --filter "memusage gt 102400" --filter "status eq NOT RESPONDING" --kill --critical 1

   Checks if there exists processes with memory consumption more than 100 MB
   and in *NOT RESPONDING* state, kills them and returns CRITICAL if there
   was at least one process.

EXIT VALUES
    0 OK
    1 WARNING
    2 CRITICAL
    3 UNKNOWN

viernes, abril 24, 2015

Comandos Imprescindibles del Usuario Linux:



/bin    :aqui estan todos los comandos importantes de la consola de Linux.

$tail -F /../../syslog.glog | grep juan > fichero --> mira en la cola del fichero syslog.log buscando el texto juan y lo deja en un fichero llamado "fichero" 
$df -h    ------> mirar el espacio en las unidades del sistema
$du -h ---> nos dice que pesa cada carpeta y espacio en kb, mb que usa
$tar cvzf /var/log/backup.tgz /etc/home/ ----->crear ficheros comprimidos
$tar xzvf xxx.tgz ...    ----------> descomprimir ficheros
$cat /var/log/syslog | grep error | wc -l    -----> Mirar los logs y saca solo aquellos que tengan la palabra "Error"
$top ---> para mirar el rendimiento en linux(uso de cpu, procesos en ejecución, memoria libre, etc ...)
$ps aux ---> lista todos los procesos en ejecución del sistema
$ps aux | grep java --> lista solo los procesos que contengan el literal java
$kill -9 "proceso por pid" --> paramos el procesos que nos interese parar, hay que conocer el pid usando ps aux | grep...
$lsof para ver q no hay ficheros abiertos, comando importantisimo, visualiza fichero abiertos incluso por conexiones remotas dentro de TODO
el sistema operativo
$top comando para ver el uso de CPU, ram etc.. en memoria.
$htop - mismo que el anterior pero de una forma grafica y mucho mas manejable que top

jueves, abril 23, 2015

Monitoring Alfresco: Nagios/Icinga, Hyperic, AuditSurf… JMX rocks!

Si tenemos Alfresco en producción (versión Enterprise), posiblemente queramos tener la aplicación controlada de la mejor forma posible y sobre todo que ese control nos aporte una visión real de lo que está pasando en el servidor y en la aplicación. Una monitorización efectiva nos permite controlar los problemas con el servicio, atisbar problemas futuros de rendimiento, detectar cuellos de botella, anomalías, etc.

Basic RGBnagioshypericauditsurf
La necesidad estaba ahí, necesitamos una solución de monitorización potente para Alfresco. Las versiones 3.X de Alfresco Enterprise permite ver y modificar muchos propiedades de la aplicación en tiempo real, por ejemplo:
  • Cambiar el nivel de log
  • Activar o desactivar FTP, CIFS o NFS
  • Poner el repositorio en solo lectura.
  • Poner el servidor en mono-usuario.
  • Limitar el número máximo de usurios o evitar accesos adicionales.
  • Ver número de sesiones y tickets de usuarios.
  • Ver número de sesiones y tickets no válidos.
  • Y muchos parámetros más.
Todo esto es gracias al soporte de JSR-160 vía JMX.
Vamos a ver qué opciones existen y cómo podemos implementarlas. Haremos un repaso aHypericAuditSurf, cómo conectar a Alfresco con Jconsole y por último cómo implementar este tipo de monitorización con Nagios o Icinga (nuevo fork de Nagios).

HYPERIC

El software de monitorización Hyperic, recientemente adquirido por la compañía Spring Source, tiene un plugin para su versión 4.0 que permite autodiscovering y monitorización de Alfresco Enterprise a través de un agente instalado en el servidor donde reside la aplicación. La monitorización que nos ofrece es bastante completa y visual (ver captura). Hyperic es una aplicación en crecimiento, su modelo y funcionalidades han hecho que su base de usuarios crezca en los últimos años. Para monitorización completa con Hyperic se necesita una suscripción de soporte con Alfresco.
cap-hyperic-alfresco

AUDITSURF

Gracias a la ampliación de las funcionalidades a las que podemos acceder por JMX de Alfresco, han salido aplicaciones como AuditSurf, de descarga gratuita en forge.alfresco.com, que nos dan una visión gráfica de lo que ocurre en el servidor en tiempo real. Su instalación es muy sencilla, hay que copiar un par de archivos al directorio extension, desplegar el war de la aplicación auditsurf.war y aplicar el módulo AMP a nuestro alfresco.war, el comando podría ser como este (depende del PATH):
# java -jar alfresco-mmt.jar install auditsurf.amp ruta-hacia/alfresco.war
Una vez realizada la instalación podremos acceder vía http://localhost/auditsurf el usuario y contraseña de admin.
audit_graph
audit_dashboard
audit_monitoring

JCONSOLE

Para acceder a los servicios que ofrece Alfresco por JMX, vía RMI, una de las herramientas gráficas que nos permiten ver las opciones que nos aporta Alfresco en este sentido es jconsole(binario que incorpora con la JDK), aunque hay otros igual de válidos.
Vamos a ver como conectar con Alfresco con jconsole:
Ejecutamos el comando jconsole y en la URL de conexión (Remote process) deberíamos escribir:
service:jmx:rmi:///jndi/rmi://servername:50500/alfresco/jmxrmi
Una vez conectados veríamos algo así, captura de pantalla de dos sesiones, la de atrás de Alfresco Community Labs 3.2r y la de alante de Alfresco Enterprise, las diferencias son obvias.
jconsole
El usuario y contraseña por defecto para acceder por JMX son controlRole/change_asap. Es recomendable cambiarlos por un usuario con sólo permisos de lectura y una contraseña diferente a la por defecto, podemos hacerlo en los siguientes ficheros y reiniciar Alfresco:
TOMCAT_PATH/webapps/alfresco/WEB-INF/classes/alfresco/alfresco-jmxrmi.access
monitorRole   readonly
#controlRole   readwrite
TOMCAT_PATH/webapps/alfresco/WEB-INF/classes/alfresco/alfresco-jmxrmi.password
monitorRole  nuevopassword
#controlRole  change_asap

NAGIOS e ICINGA

Pasamos a la parte más interesante, cómo monitorizar Alfresco con Nagios/Icinga (a partir de ahora Icinga, pero recuerda que estos pasos son válidos para ambos y los plugins también). Instalar Icinga es bastante fácil, basta con seguir los pasos que se marcan en esta página y en 20 minutos tendrás un servidor de monitorización funcionando. Como he comentado anteriormente, los plugins de Icinga son los mismos que los de Nagios y la configuración, ubicación y uso son idénticos, así que no tendremos ningún problema en usarlos.
Buscando, buscando, encontramos un plugin llamado “nagios-jmx-plugin” que se puede descargar desde aquí, que nos permite consultar valores y aplicar umbrales para alertas tipoWarning o Critical. Veamos un ejemplo para consultar la memoria heap usada desde la línea de comandos con el plugin:
Memoria heap usada:
# ./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O java.lang:type=Memory -A HeapMemoryUsage -K used -username controlRole -password change_asap -w 100000000 -c 200000000
JMX OK -HeapMemoryUsage.used = 91618296
En algunos de los ejemplos que vamos a ver uso dos umbrales en bytes, 100000000 para los Warnings y 200000000 para los Critical, por su puesto, tu deberás adaptarlos a tus necesidades.
Otros checks que se pueden hacer a Alfresco o al sistema pueden ser como los siguientes (probados con Alfresco Enterprise 3.1):
Carga media del sistema:
# ./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O java.lang:type=OperatingSystem -A SystemLoadAverage -username controlRole -password change_asap -w 100000000 -c 200000000
JMX OK -SystemLoadAverage = 0.0
Memoria no heap usada:
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O java.lang:type=Memory -A NonHeapMemoryUsage -K used -username controlRole -password change_asap -w 100000000 -c 200000000
JMX OK -NonHeapMemoryUsage.used = 87816024
Numero total de usuarios existentes en Alfresco:
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=Authority -A NumberOfUsers -username controlRole -password change_asap -w 500 -c 600
Numero total de grupos existentes en Alfresco:
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=Authority -A NumberOfGroups -username controlRole -password change_asap -w 100 -c 200
Conexiones activas con la BBDD:
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=ConnectionPool -A NumActive -username controlRole -password change_asap -w 100000000 -c 200000000
Tamaño del repositorio en bytes (usar audit.contentstore o contentstore.deleted para ver su uso de disco):
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=ContentStore,Type=org.alfresco.repo.content.filestore.FileContentStore,Root=/Alfresco-3.1.1E/alf_data/contentstore -A TotalSize -username controlRole -password change_asap -w 100000000 -c 200000000
Hibernate (consulta uno de los muchos valores de los que disponemos):
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=Hibernate -A ConnectCount -username controlRole -password change_asap -w 100000000 -c 200000000
Lucene (tamaño de los índices del workspace/SpacesStore)
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=LuceneIndexes,Index=workspace/SpacesStore -A UsedSize -username controlRole -password change_asap -w 100000000 -c 200000000
Lucene (numero de documentos indexados en workspace/SpacesStore)
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=LuceneIndexes,Index=workspace/SpacesStore -A NumberOfDocuments -username controlRole -password change_asap -w 100000000 -c 200000000
Sesiones abiertas:
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=RepoServerMgmt -A TicketCountAll -username controlRole -password change_asap -w 100000000 -c 200000000
Usuarios conectados:
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=RepoServerMgmt -A UserCountAll -username controlRole -password change_asap -w 1000 -c 2000
Memoria total usada por Alfresco en bytes:
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=Runtime -A TotalMemory -username controlRole -password change_asap -w 100000000 -c 200000000
Memoria libre disponible para Alfresco en bytes:
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Alfresco:Name=Runtime -A FreeMemory -username controlRole -password change_asap -w 100000000 -c 200000000
Caché usada por el servidor de aplicaciones Tomcat para Alfresco:
./check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -O Catalina:type=Cache,host=localhost,path=/alfresco -A cacheSize -username controlRole -password change_asap -w 100000000 -c 200000000
Comprobados esos comandos, primer paso antes de implementar un nuevo plugin de Icinga, pasamos a crear los ficheros de definición de comandos de Icinga, por ejemplo contenido del fichero “alfresco-jmx.cfg“, ojo, revisa las rutas sobre todo del repositorio para que todo funcione correctamente en estos commands:
# ‘check_alfresco_HeapMemoryUsage_Used’ command definition
define command {
command_name    check_alfresco_HeapMemoryUsage_Used
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O java.lang:type=Memory -A HeapMemoryUsage -K used -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_NoHeapMemoryUsage_Used’ command definition
define command {
command_name    check_alfresco_NoHeapMemoryUsage_Used
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O java.lang:type=Memory -A NonHeapMemoryUsage -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_SystemLoadAverage’ command definition
define command {
command_name    check_alfresco_SystemLoadAverage
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O java.lang:type=OperatingSystem -A SystemLoadAverage -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_NumberOfUsers’ command definition
define command {
command_name    check_alfresco_NumberOfUsers
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=Authority -A NumberOfUsers -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_NumberOfGroups’ command definition
define command {
command_name    check_alfresco_NumberOfgroups
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=Authority -A NumberOfGroups -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_ConnectionPool’ command definition
define command {
command_name    check_alfresco_ConnectionPool
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=ConnectionPool -A NumActive -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_ContentStoreSize’ command definition
define command {
command_name    check_alfresco_ContentStoreSize
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=ContentStore,Type=org.alfresco.repo.content.filestore.FileContentStore,Root=/Alfresco-3.1.1E/alf_data/contentstore -A TotalSize -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_HibernateConnectCount’ command definition
define command {
command_name    check_alfresco_HibernateConnectCount
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=Hibernate -A ConnectCount -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_LuceneIndexesSpacesStoreUsed’ command definition
define command {
command_name    check_alfresco_LuceneIndexesSpacesStoreUsed
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=LuceneIndexes,Index=workspace/SpacesStore -A UsedSize -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_LuceneIndexesSpacesStoreNumDocs’ command definition
define command {
command_name    check_alfresco_LuceneIndexesSpacesStoreNumDocs
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=LuceneIndexes,Index=workspace/SpacesStore -A NumberOfDocuments -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_RepoServerMgmtSessions’ command definition
define command {
command_name    check_alfresco_RepoServerMgmtSessions
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=RepoServerMgmt -A TicketCountAll -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_RepoServerMgmtUsersConnected’ command definition
define command {
command_name    check_alfresco_RepoServerMgmtUsersConnected
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=RepoServerMgmt -A UserCountAll -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_TotalMemoryUsed’ command definition
define command {
command_name    check_alfresco_TotalMemoryUsed
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=Runtime -A TotalMemory -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_FreeMemory’ command definition
define command {
command_name    check_alfresco_FreeMemory
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Alfresco:Name=Runtime -A FreeMemory -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
# ‘check_alfresco_AlfrescoCache’ command definition
define command {
command_name    check_alfresco_AlfrescoCache
command_line    /usr/local/icinga/libexec/check_jmx -U service:jmx:rmi:///jndi/rmi://’$HOSTADDRESS$':’$ARG1$’/jmxrmi -O Catalina:type=Cache,host=localhost,path=/alfresco -A cacheSize -username ‘$ARG2$’ -password ‘$ARG3$’ -w ‘$ARG4$’ -c ‘$ARG5$’
}
El uso o invocación de dichos comandos sería algo así como:
check_alfresco_HeapMemoryUsage_Used!PORT!USERNAME!PASSWORD!750000000!800000000
check_alfresco_NoHeapMemoryUsage_Used!PORT!USERNAME!PASSWORD!750000000!800000000
check_alfresco_SystemLoadAverage!PORT!USERNAME!PASSWORD!0.8!0.9
check_alfresco_NumberOfUsers!PORT!USERNAME!PASSWORD!400!500
check_alfresco_NumberOfgroups!PORT!USERNAME!PASSWORD!50!70
check_alfresco_ConnectionPool!PORT!USERNAME!PASSWORD!100000000!200000000
check_alfresco_ContentStoreSize!PORT!USERNAME!PASSWORD!100000000!200000000
check_alfresco_HibernateConnectCount!PORT!USERNAME!PASSWORD!100000000!200000000
check_alfresco_LuceneIndexesSpacesStoreUsed!PORT!USERNAME!PASSWORD!100000000!200000000
check_alfresco_LuceneIndexesSpacesStoreNumDocs!PORT!USERNAME!PASSWORD!100000000!200000000
check_alfresco_RepoServerMgmtSessions!PORT!USERNAME!PASSWORD!100000000!200000000
check_alfresco_RepoServerMgmtUsersConnected!PORT!USERNAME!PASSWORD!100000000!200000000
check_alfresco_TotalMemoryUsed!PORT!USERNAME!PASSWORD!100000000!200000000
check_alfresco_FreeMemory!PORT!USERNAME!PASSWORD!100000000!200000000
check_alfresco_AlfrescoCache!PORT!USERNAME!PASSWORD!100000000!200000000
Espero vuestros comentarios, sugerencias, correcciones y demás. Seguro que todo esto se puede mejorar bastante.
Posiblemente este artículo pueda desembocar en un proyecto que permita instalar y usar este plugin de una forma más rápida y sencilla, y sobre todo sin tener que leer este blog ;)