gpfs_performance_monitoring
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| gpfs_performance_monitoring [2026/07/31 14:41] – bbruzzo | gpfs_performance_monitoring [2026/08/14 13:56] (current) – [Containerizando el bridge] bbruzzo | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Performance Monitoring ====== | ====== Performance Monitoring ====== | ||
| - | La **performance monitoring tool** colecciona métricas de GPFS y provee información de performance del sistema. | + | |
| + | ===== Intro a componentes ====== | ||
| + | |||
| + | La [[https:// | ||
| Está habilitada por default e incluye // | Está habilitada por default e incluye // | ||
| - | ===== 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. | ||
| - | Podemos utilizar mmgt01 como Node Collector ya que es buena práctica mantener servicios extra (como monitoreo) fuera de los quorum nodes. | + | Podemos utilizar mmgt01 como Node Collector |
| - | ===== 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. | ||
| - | ===== Configuración | + | ===== IBM Storage Scale bridge for Grafana |
| + | |||
| + | Queremos incorporar [[https:// | ||
| + | |||
| + | Para eso necesitamos configurar la performance monitoring tool de GPFS. | ||
| + | |||
| + | ==== Resolución de dependencias ==== | ||
| + | |||
| + | Necesitamos los paquetes | ||
| + | gpfs.gss.pmsensors | ||
| + | gpfs.gss.pmscollectors | ||
| + | |||
| + | Los encontramos únicamente en el storage node. | ||
| + | |||
| + | < | ||
| + | |||
| + | =========================== Name Exactly Matched: gpfs.gss.pmcollector ===================== | ||
| + | gpfs.gss.pmcollector.x86_64 : ZIMonCollector - an in-memory database for collecting and storing performance metrics.</ | ||
| + | |||
| + | Descargamos los rpm con dnf. | ||
| + | |||
| + | < | ||
| + | [root@sdmgt01 ~]# dnf download gpfs.gss.pmcollector gpfs.gss.pmsensors | ||
| + | Updating Subscription Management repositories. | ||
| + | Unable to read consumer identity | ||
| + | |||
| + | This system is not registered with an entitlement server. You can use " | ||
| + | |||
| + | Last metadata expiration check: 17:29:09 ago on Thu 30 Jul 2026 06:16:49 PM -03. | ||
| + | (1/2): gpfs.gss.pmcollector-5.2.3-3.el9.x86_64.rpm | ||
| + | (2/2): gpfs.gss.pmsensors-5.2.3-3.el9.x86_64.rpm | ||
| + | </ | ||
| + | |||
| + | Instalamos los paquetes en vlmgt02 | ||
| + | |||
| + | < | ||
| + | [root@vlmgt02 gpfs_perf_testing]# | ||
| + | Updating Subscription Management repositories. | ||
| + | Unable to read consumer identity | ||
| + | |||
| + | This system is not registered with an entitlement server. You can use " | ||
| + | |||
| + | Local install repository for AppStream | ||
| + | Local install repository for BaseOS | ||
| + | nvidia-driver-local-rhel9-590.48.01 | ||
| + | Dependencies resolved. | ||
| + | =============================================================================================================================================================== | ||
| + | | ||
| + | =============================================================================================================================================================== | ||
| + | Installing: | ||
| + | | ||
| + | | ||
| + | |||
| + | Transaction Summary | ||
| + | =============================================================================================================================================================== | ||
| + | Install | ||
| + | |||
| + | Total size: 16 M | ||
| + | Installed size: 65 M | ||
| + | Is this ok [y/N]: y | ||
| + | Downloading Packages: | ||
| + | Running transaction check | ||
| + | Transaction check succeeded. | ||
| + | Running transaction test | ||
| + | Transaction test succeeded. | ||
| + | Running transaction | ||
| + | Running scriptlet: gpfs.gss.pmsensors-5.2.3-3.el9.x86_64 | ||
| + | Running scriptlet: gpfs.gss.pmcollector-5.2.3-3.el9.x86_64 | ||
| + | Preparing | ||
| + | Running scriptlet: gpfs.gss.pmsensors-5.2.3-3.el9.x86_64 | ||
| + | Installing | ||
| + | Running scriptlet: gpfs.gss.pmsensors-5.2.3-3.el9.x86_64 | ||
| + | Created symlink / | ||
| + | |||
| + | Running scriptlet: gpfs.gss.pmcollector-5.2.3-3.el9.x86_64 | ||
| + | Installing | ||
| + | Running scriptlet: gpfs.gss.pmcollector-5.2.3-3.el9.x86_64 | ||
| + | Created symlink / | ||
| + | |||
| + | Running scriptlet: gpfs.gss.pmsensors-5.2.3-3.el9.x86_64 | ||
| + | Running scriptlet: gpfs.gss.pmcollector-5.2.3-3.el9.x86_64 | ||
| + | / | ||
| + | / | ||
| + | |||
| + | Verifying | ||
| + | Verifying | ||
| + | Installed products updated. | ||
| + | |||
| + | Installed: | ||
| + | gpfs.gss.pmcollector-5.2.3-3.el9.x86_64 | ||
| + | |||
| + | Complete! | ||
| + | </ | ||
| + | |||
| + | Definimos la config de la perf monitoring tool y designamos vlmgt02 como collector | ||
| + | |||
| + | < | ||
| + | [root@vlmgt02 gpfs_perf_testing]# | ||
| + | mmperfmon: Node vlmgt02-ib0 is not a perfmon node. | ||
| + | mmperfmon: Propagating the cluster configuration data to all | ||
| + | affected nodes. | ||
| + | [root@vlmgt02 gpfs_perf_testing]# | ||
| + | Fri Jul 31 01:54:56 PM -03 2026: mmchnode: Processing node vlmgt02-ib0 | ||
| + | mmchnode: Propagating the cluster configuration data to all | ||
| + | affected nodes. | ||
| + | </ | ||
| + | |||
| + | Habilitamos los servicios. | ||
| + | |||
| + | < | ||
| + | systemctl enable --now pmcollector pmsensors | ||
| + | systemctl status pmcollector | ||
| + | systemctl status pmsensors</ | ||
| + | |||
| + | ==== CherryPy ==== | ||
| + | |||
| + | En el nodo collector tiene que estar instalado el paquete de python CherryPy. | ||
| + | |||
| + | < | ||
| + | [root@vlmgt02 gpfs_perf_testing]# | ||
| + | (env) [root@vlmgt02 gpfs_perf_testing]# | ||
| + | |||
| + | ==== Generación de API Keys ==== | ||
| + | |||
| + | Leer archivo ubicado en ''/ | ||
| + | |||
| + | ==== Set Up de prueba ==== | ||
| + | |||
| + | [[https:// | ||
| + | ]] | ||
| + | |||
| + | Necesitamos python3.11. | ||
| + | |||
| + | Para una prueba de concepto voy a usar micromamba, pero vamos a tener que containerizar con podman. | ||
| + | |||
| + | < | ||
| + | curl -Ls https:// | ||
| + | source ~/.bashrc | ||
| + | micromamba create -n grafana_bridge python=3.11 -c conda-forge -y | ||
| + | micromamba run -n grafana_bridge pip install CherryPy | ||
| + | micromamba run -n grafana_bridge pip install requests | ||
| + | micromamba run -n grafana_bridge python zimonGrafanaIntf.py | ||
| + | </ | ||
| + | |||
| + | No está armada la config de perf monitoring | ||
| + | |||
| + | < | ||
| + | 2026-07-31 14:50 - MainThread | ||
| + | 2026-07-31 14:50 - MainThread | ||
| + | 2026-07-31 14:50 - MainThread | ||
| + | 2026-07-31 14:51 - MainThread | ||
| + | 2026-07-31 14:51 - MainThread | ||
| + | 2026-07-31 14:52 - MainThread | ||
| + | 2026-07-31 14:52 - MainThread | ||
| + | %s Server internal error occurred. Reason: Empty results received | ||
| + | 2026-07-31 14:53 - MainThread | ||
| + | </ | ||
| + | |||
| + | ==== Containerizando el bridge ==== | ||
| + | |||
| + | Utilizamos podman en mmgt02 | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | Actualmente estamos trabajando con la [[https:// | ||
| + | | 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/ | ||
| + | |||
| + | Cambiar la sección que figura como: | ||
| + | |||
| + | < | ||
| + | 345- if self.raw_data or " | ||
| + | 346: attrs.update({' | ||
| + | 347- self.logger.debug(MSG[' | ||
| + | </ | ||
| + | |||
| + | Para que skipNullValues sea False | ||
| + | |||
| + | < | ||
| + | 345- if self.raw_data or " | ||
| + | 346: attrs.update({' | ||
| + | 347- self.logger.debug(MSG[' | ||
| + | </ | ||
| + | |||
| + | Esto generaba que se inyecte la flag -s en la REST API de GPFS, que no era soportada. Generaba un log: | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | [podman@vlmgt02 ~]$ cd ibm-spectrum-scale-bridge-for-grafana-9.1.0 | ||
| + | </ | ||
| + | |||
| + | Buildeamos la imagen | ||
| + | |||
| + | < | ||
| + | |||
| + | Generamos unit file en / | ||
| + | |||
| + | El contenido del unit file es: | ||
| + | |||
| + | < | ||
| + | [Unit] | ||
| + | Description=GPFS Grafana Bridge | ||
| + | After=pmcollector.service | ||
| + | |||
| + | [Container] | ||
| + | ContainerName=gpfs_bridge | ||
| + | Image=localhost/ | ||
| + | Volume=/ | ||
| + | Volume=/ | ||
| + | Volume=/ | ||
| + | |||
| + | Network=host | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=default.target | ||
| + | </ | ||
| + | |||
| + | Asegurarse que los permisos de / | ||
| + | |||
| + | Luego se puede lanzar o detener el container con systemd. | ||
| + | |||
| + | < | ||
| + | podman $ systemctl --user daemon-reload | ||
| + | podman $ systemctl --user start gpfs-bridge | ||
| + | podman $ podman logs gpfs_bridge | ||
| + | </ | ||
gpfs_performance_monitoring.1785508879.txt.gz · Last modified: by bbruzzo
