¿Para que son interesantes las métricas de monitorización personalizadas? En este artículo, continuaremos sobre la base que se configuró en el artículo anterior.
La configuración previa realizada, se nos facilitó el uso de los Performance Metric Domain Agents (PMDAs), agentes que han sido específicamente creados para usarse con PCP. Estos agentes están disponibles en los repositorios de RHEL:
[root@rhel7u5a ~]# yum search pcp-pmda Loaded plugins: product-id, search-disabled-repos, subscription-manager ======================== N/S matched: pcp-pmda =========================== pcp-pmda-activemq.x86_64 : Performance Co-Pilot (PCP) metrics for ActiveMQ pcp-pmda-apache.x86_64 : Performance Co-Pilot (PCP) metrics for the Apache webserver pcp-pmda-bash.x86_64 : Performance Co-Pilot (PCP) metrics for the Bash shell pcp-pmda-bind2.x86_64 : Performance Co-Pilot (PCP) metrics for BIND servers pcp-pmda-bonding.x86_64 : Performance Co-Pilot (PCP) metrics for Bonded network interfaces pcp-pmda-cifs.x86_64 : Performance Co-Pilot (PCP) metrics for the CIFS protocol [..]
Cuando un agente PMDA no satisface los requisitos, se pueden crear monitorizaciones personalizadas.
Configurando el PMDA ‘trivial’
Cuando se instalan los paquetes pcp-pmda, estos se instalan en la ruta /var/lib/pcp/pmdas. Para obtener código de ejemplo de como programar métricas personalizadas, podemos usar ‘yum install pcp-devel’. El código en ‘/var/lib/pcp/trivial’ es un PMDA mínimo, analicémoslo:
[root@rhel7u5a ~]# yum -y install pcp-devel [..] [root@rhel7u5a ~]# cd /var/lib/pcp/pmdas/trivial [root@rhel7u5a trivial]# ./Install You will need to choose an appropriate configuration for installation of the "trivial" Performance Metrics Domain Agent (PMDA). collector collect performance statistics on this system monitor allow this system to monitor local and/or remote systems both collector and monitor configuration for this system Please enter c(ollector) or m(onitor) or b(oth) [b] c Installing files ... gcc -fPIC -fno-strict-aliasing -D_GNU_SOURCE -Wall -O2 -g -DPCP_VERSION=\"3.12.2\" -c -o trivial.o trivial.c [..] Updating the Performance Metrics Name Space (PMNS) ... Terminate PMDA if already installed ... Updating the PMCD control file, and notifying PMCD ... Check trivial metrics have appeared ... 1 metrics and 1 values [root@rhel7u5a trivial]#
Tras esto, podemos acceder a esta nueva métrica:
[root@rhel7u5a trivial]# pmrep trivial t.time s/s N/A 0.997 0.997
Personalizando el PMDA ‘trivial’
Utilizo las métricas personalizadas con distintos fines, como por ejemplo, monitorizar desde que países acceden a mi web. En este artículo, modificaremos el PMDA ‘trivial’ para monitorizar los valores de temperatura de nuestro sistema.
Tras instalar el paquete ‘lm_sensors’, la información de los sensores está disponible vía ‘sensors -u’. La disponibilidad de información de los sensores vía ‘sensors -u’ no se prueba como parte de la certificación de hardware de Red Hat, por lo que hay sistemas donde lm_sensors no puede acceder a esos datos.
En esa casuística, puedes probar por ejemplo acceder a la temperatura del sensor de un disco, utilizando ‘smartctl -a /dev/sda’.
RHEL7.5 tiene la versión 3.12 de PCP, donde el PMDA ‘trivial’ está escrito en C. La versión upstream de PCP incluye adicionalmente versiones en Python y Perl, y en este artículo usaremos la versión Perl para nuestra métrica personalizada. En mi sistema, hay disponibles distintas métricas con los valores del sensor, pero para nuestro ejemplo usaremos una única métrica: el primer valor de temperatura de la salida del comando ‘sensors -u’.
#!/usr/bin/perl # # Copyright (c) 2012,2018 Red Hat. # Copyright (c) 2008,2012 Aconex. All Rights Reserved. # Copyright (c) 2004 Silicon Graphics, Inc. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # use strict; use warnings; use PCP::PMDA; use vars qw( $pmda ); sub trivial_fetch_callback # must return array of value,status { my ($cluster, $item, $inst) = @_; my $temperature; foreach ( qx( /usr/bin/sensors -u ) ) { next unless m/: ([0-9.]+)/; next unless $1 > 0; $temperature=$1; } if ($cluster == 0 && $item == 0) { return ($temperature, 1); } return (PM_ERR_PMID, 0); } $pmda = PCP::PMDA->new('trivial', 250); # domain name and number $pmda->connect_pmcd; $pmda->add_metric(pmda_pmid(0,0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0), 'trivial.temp1', 'temperature', 'temperature from first sensor in deg Celsius'); $pmda->set_fetch_callback( \&trivial_fetch_callback ); $pmda->set_user('pcp'); $pmda->run;
Te preguntas qué significa el número ‘250’, el cual hemos usamos en este ejemplo. Estos números se utilizan para diferenciar PMDAs, como si fuera una especie de OID en SNMP. ‘pminfo -m’ lista los números utilizados en nuestro sistema.
Necesitamos actualizar el fichero ‘Install’ en el mismo directorio donde hemos creado el fichero perl, actualizando la parte final para que se asemeje a esto:
[..] . $PCP_DIR/etc/pcp.env . $PCP_SHARE_DIR/lib/pmdaproc.sh iam=trivial dso_opt=true perl_opt=true python_opt=true pmdaSetup pmdaInstall exit
Ahora vamos a borrar el PMDA ‘trivial’ actualmente instalado, instalar nuestra nueva versión, y verificar que podemos acceder al valor personalizado:
[root@rhel7u5a trivial]# ./Remove [..] [root@rhel7u5a trivial]# ./Install You will need to choose an appropriate configuration for installation of the "trivial" Performance Metrics Domain Agent (PMDA). collector collect performance statistics on this system monitor allow this system to monitor local and/or remote systems both collector and monitor configuration for this system Please enter c(ollector) or m(onitor) or b(oth) [b] c Install trivial as a daemon or python or perl or dso agent? [daemon] perl Updating the Performance Metrics Name Space (PMNS) ... Terminate PMDA if already installed ... Updating the PMCD control file, and notifying PMCD ... Check trivial metrics have appeared ... 1 metrics and 1 values [root@rhel7u5a trivial]# pminfo trivial trivial.temp1 [root@rhel7u5a trivial]# pmrep trivial t.temp1 42 42
¡Felicidades, tu valor de temperatura está disponible!
En este ejemplo, hemos utilizado el PMDA ‘trivial’, pero si quieres monitorizar múltiples valores personalizados, el PMDA ‘simple’ es un buen comienzo para empezar la personalización.
Archivando métricas personalizadas
Por ahora somos capaz de acceder a las métricas personalizadas utilizando el demonio pmcd. Investigando los ficheros de archivo en /var/log/pcp/pmlogger/<hostname> con ‘pminfo -a’, podemos ver que la métrica personalizada no se está guardando:
[root@rhel7u5a trivial]# pminfo \ -a /var/log/pcp/pmlogger/rhel7u5a/20180823.05.58.0 trivial Error: trivial: Unknown metric name
Esto es porque pmlogger no está todavía configurado para la nueva métrica.
Abramos el fichero /var/lib/pcp/config/pmlogger/config.default en un editor y saltemos al final del fichero. Justo después de la sección [access], insertamos una sección con nuestra métrica:
[..] log mandatory on every 60 seconds { trivial.temp1 } [access] disallow .* : all; disallow :* : all; allow local:* : enquire;
Podemos validar la sintaxis del fichero con ‘pmlogger -C -c /var/lib/pcp/config/pmlogger/config.default string’ y después reiniciar pmlogger con ‘systemctl restart pmlogger’. Un nuevo archivo aparecerá en el directorio /var/log/pcp/pmlogger/<hostname>, que además incluye nuestra métrica:
[root@rhel7u5a rhel7u5a]# pminfo -a 20180827.07.44.0 trivial trivial.temp1 [root@rhel7u5a rhel7u5a]# pmrep -a 20180827.07.44.0 trivial t.temp1 N/A 42 42 42 [...]
Con esto podemos ver que nuestra métrica personalizada se guarda para futuras investigaciones.
Si hubiera algún problema con la configuración de pmlogger, el fichero /var/log/pcp/pmlogger/<hostname>/pmlogger.log es un buen lugar para comenzar a analizar el problema.
Representación gráfica
¡Convirtamos nuestros números en gráficas!
RHEL dispone de los paquetes necesarios para ello que podemos instalar con:
[root@rhel7u5a ~]# yum install -y pcp-webapp\* pcp-webapi pcp-webjs [..]
Tras instalarlos, podemos activar y arrancar el demonio pmwebd:
[root@rhel7u5a ~]# systemctl start pmwebd [root@rhel7u5a ~]# systemctl enable pmwebd
En este punto, múltiples frameworks para generar gráficas de nuestras métricas de PCP están disponibles accediendo a la URL http://<ip>:44323/
desde un navegador.
Graphite es especialmente interesante, se puede acceder vía http://<ip>:44323/graphite
. Cuando utilicemos la función de buscar en la interfaz de graphite, nos daremos cuenta que que las métricas anteponen nuestro hostname, por ejemplo rhel7u5a.trivial.temp1.
Ahora podríamos instalar grafana. Las nuevas versiones proveen de funcionalidades adicionales, pero al no ser parte de RHEL, no están cubiertas por el Soporte de Red Hat. En grafana, ‘graphite’ se puede seleccionar como ‘data source’ ya que la URL http://<ip>:44323/graphite
puede ser utilizada para acceder a nuestras métricas PCP. La siguiente gráfica se creó utilizando esta combinación:
Conclusiones finales
Como has podido ver, la monitorización de métricas personalizadas con PCP es fácil de configurar: ¿Cómo varían las estadísticas E/S o la temperatura de los sistemas durante el día? ¿Cómo varían activando distintos perfiles de tuned? En un portátil, ¿son las temperaturas diferentes tras ejecutar ‘powertop --auto-tune’? Si tienes distintas web tras un balanceador de carga, puedes configurar las estadísticas de acceso y verificar que reciben el mismo número de peticiones por segundo, etc.
-
The Performance Co-Pilot Programmer’s Guide tiene más detalles acerca de los PMDAs
Sobre el autor
Christian Horn is a Senior Technical Account Manager at Red Hat. After working with customers and partners since 2011 at Red Hat Germany, he moved to Japan, focusing on mission critical environments. Virtualization, debugging, performance monitoring and tuning are among the returning topics of his daily work. He also enjoys diving into new technical topics, and sharing the findings via documentation, presentations or articles.
Navegar por canal
Automatización
Las últimas novedades en la automatización de la TI para los equipos, la tecnología y los entornos
Inteligencia artificial
Descubra las actualizaciones en las plataformas que permiten a los clientes ejecutar cargas de trabajo de inteligecia artificial en cualquier lugar
Nube híbrida abierta
Vea como construimos un futuro flexible con la nube híbrida
Seguridad
Vea las últimas novedades sobre cómo reducimos los riesgos en entornos y tecnologías
Edge computing
Conozca las actualizaciones en las plataformas que simplifican las operaciones en el edge
Infraestructura
Vea las últimas novedades sobre la plataforma Linux empresarial líder en el mundo
Aplicaciones
Conozca nuestras soluciones para abordar los desafíos más complejos de las aplicaciones
Programas originales
Vea historias divertidas de creadores y líderes en tecnología empresarial
Productos
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Servicios de nube
- Ver todos los productos
Herramientas
- Training y Certificación
- Mi cuenta
- Soporte al cliente
- Recursos para desarrolladores
- Busque un partner
- Red Hat Ecosystem Catalog
- Calculador de valor Red Hat
- Documentación
Realice pruebas, compras y ventas
Comunicarse
- Comuníquese con la oficina de ventas
- Comuníquese con el servicio al cliente
- Comuníquese con Red Hat Training
- Redes sociales
Acerca de Red Hat
Somos el proveedor líder a nivel mundial de soluciones empresariales de código abierto, incluyendo Linux, cloud, contenedores y Kubernetes. Ofrecemos soluciones reforzadas, las cuales permiten que las empresas trabajen en distintas plataformas y entornos con facilidad, desde el centro de datos principal hasta el extremo de la red.
Seleccionar idioma
Red Hat legal and privacy links
- Acerca de Red Hat
- Oportunidades de empleo
- Eventos
- Sedes
- Póngase en contacto con Red Hat
- Blog de Red Hat
- Diversidad, igualdad e inclusión
- Cool Stuff Store
- Red Hat Summit