User Tools

Site Tools


gpfs_performance_monitoring

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
gpfs_performance_monitoring [2026/07/31 18:10] – subtitle change bbruzzogpfs_performance_monitoring [2026/08/14 13:56] (current) – [Containerizando el bridge] bbruzzo
Line 1: Line 1:
 ====== Performance Monitoring ====== ====== Performance Monitoring ======
 +
 +
 +===== Intro a componentes ======
  
 La [[https://www.ibm.com/docs/en/storage-scale/5.2.3?topic=monitoring-using-performance-tool | performance monitoring tool]] colecciona métricas de GPFS y provee información de performance del sistema.  La [[https://www.ibm.com/docs/en/storage-scale/5.2.3?topic=monitoring-using-performance-tool | performance monitoring tool]] colecciona métricas de GPFS y provee información de performance del sistema. 
 Está habilitada por default e incluye //Collectors, Sensors // y // Proxies//. Está habilitada por default e incluye //Collectors, Sensors // y // Proxies//.
  
-===== Collector =====+==== Collector ====
  
 Un collector soporta hasta 150 sensor nodes. Con un collector debería ser suficiente para nuestro sistema. Se pueden armar esquemas con más de un collector (multi-collector federation) por razones de escala y de tolerancia a fallas. Un collector soporta hasta 150 sensor nodes. Con un collector debería ser suficiente para nuestro sistema. Se pueden armar esquemas con más de un collector (multi-collector federation) por razones de escala y de tolerancia a fallas.
Line 11: Line 14:
 Podemos utilizar mmgt01 como Node Collector en el cluster de storage y vlmgt02 en el cluster cliente, ya que es buena práctica mantener servicios extra (como monitoreo) fuera de los quorum nodes.  Podemos utilizar mmgt01 como Node Collector en el cluster de storage y vlmgt02 en el cluster cliente, ya que es buena práctica mantener servicios extra (como monitoreo) fuera de los quorum nodes. 
  
-===== Sensors =====+==== Sensors ====
  
 El componente que recopila datos de performance de un nodo El componente que recopila datos de performance de un nodo
  
-===== Proxy =====+==== Proxy ====
  
  Se corre un proxy por cada protocolo para recopilar métricas de ese protocolo.  Se corre un proxy por cada protocolo para recopilar métricas de ese protocolo.
Line 145: Line 148:
 Leer archivo ubicado en ''/data/admin/gpfs_perf_testing/apikey_config.txt'' Leer archivo ubicado en ''/data/admin/gpfs_perf_testing/apikey_config.txt''
  
-==== Set Up ====+==== Set Up de prueba ====
  
 [[https://github.com/IBM/ibm-spectrum-scale-bridge-for-grafana/releases | Clonar la release  [[https://github.com/IBM/ibm-spectrum-scale-bridge-for-grafana/releases | Clonar la release 
Line 154: Line 157:
 Para una prueba de concepto voy a usar micromamba, pero vamos a tener que containerizar con podman.  Para una prueba de concepto voy a usar micromamba, pero vamos a tener que containerizar con podman. 
  
-**Podman no está configurado en el resto de los nodos. 
-** 
 <code> <code>
 curl -Ls https://micro.mamba.pm/install.sh | bash curl -Ls https://micro.mamba.pm/install.sh | bash
Line 178: Line 179:
 2026-07-31 14:53 - MainThread                               - ERROR    - Metadata could not be retrieved. Check log file for more details, quitting 2026-07-31 14:53 - MainThread                               - ERROR    - Metadata could not be retrieved. Check log file for more details, quitting
 </code> </code>
 +
 +==== Containerizando el bridge ====
 +
 +Utilizamos podman en mmgt02
 +
 +<code>systemd-run --pty --wait -p User=podman -p PAMName=login /bin/bash</code>
 +
 +
 +Actualmente estamos trabajando con la [[https://github.com/IBM/ibm-spectrum-scale-bridge-for-grafana/releases/tag/v9.1.0
 + | release 9.1.0]] del bridge.
 +
 +Tiene un bug que debemos parchear para poder ver correctamente las métricas que son counters.
 +
 +Editar el archivo source/prometheus.py
 +
 +Cambiar la sección que figura como:
 +
 +<code>
 +345-        if self.raw_data or "counter" in self.TOPO.getSensorMetricTypes(sensor).values():
 +346:            attrs.update({'nsamples': period, 'rawData': True, 'skipNullValues': True})
 +347-            self.logger.debug(MSG['SensorForceRawData'].format(sensor))
 +</code>
 +
 +Para que skipNullValues sea False
 +
 +<code>
 +345-        if self.raw_data or "counter" in self.TOPO.getSensorMetricTypes(sensor).values():
 +346:            attrs.update({'nsamples': period, 'rawData': True, 'skipNullValues': False})
 +347-            self.logger.debug(MSG['SensorForceRawData'].format(sensor))
 +</code>
 +
 +Esto generaba que se inyecte la flag -s en la REST API de GPFS, que no era soportada. Generaba un log:
 +
 +<code>400: unknown option 's',</code>
 +
 +<code>
 +[podman@vlmgt02 ~]$ cd ibm-spectrum-scale-bridge-for-grafana-9.1.0
 +</code>
 +
 +Buildeamos la imagen
 +
 +<code>podman build --format=docker -t bridge_image:latest .</code>
 +
 +Generamos unit file en /opt/containers/.config/containers/systemd/monitoring/gpfs-bridge.container
 +
 +El contenido del unit file es:
 +
 +<code>
 +[Unit]
 +Description=GPFS Grafana Bridge
 +After=pmcollector.service
 +
 +[Container]
 +ContainerName=gpfs_bridge
 +Image=localhost/bridge_image:latest
 +Volume=/opt/IBM/zimon/ZIMonSensors.cfg:/opt/IBM/zimon/ZIMonSensors.cfg:ro
 +Volume=/opt/containers/monitoring/gpfs_bridge/config.ini:/opt/IBM/bridge/config.ini:ro
 +Volume=/opt/IBM/zimon/defaults:/opt/IBM/zimon/defaults:ro
 +
 +Network=host
 +
 +[Install]
 +WantedBy=default.target
 +</code>
 +
 +Asegurarse que los permisos de /opt/IBM/zimon sean lo suficientemente permisivos para que el usuario podman pueda leer sus contenidos. Tuvimos que editar esto.
 +
 +Luego se puede lanzar o detener el container con systemd.
 +
 +<code>
 +podman $  systemctl --user daemon-reload
 +podman $  systemctl --user start gpfs-bridge
 +podman $  podman logs gpfs_bridge
 +</code>
 +
gpfs_performance_monitoring.1785521407.txt.gz · Last modified: by bbruzzo