El plugin de Apache SkyWalking para Grafana permite visualizar métricas de rendimiento y trazas de observabilidad directamente en los tableors de Grafana. A continuación, se detalla la organización del proyecto, sus puntos de entrada y la lógica de configuración subyacente.
1. Organización del Proyecto y Estructura de Directorios
La arquitectura del repositorio sigue las convenciones estándar para el desarrollo de extensiones en Grafana, separando la lógica de negocio de los activos estáticos.
skywalking-grafana-plugins/
├── src/ # Código fuente principal
│ ├── components/ # Elementos de interfaz (React)
│ ├── datasources/ # Lógica de conexión con el backend de SkyWalking
│ ├── panels/ # Definiciones de visualización de paneles
│ └── plugin.json # Manifiesto del plugin
├── public/ # Recursos accesibles públicamente
│ ├── img/ # Iconos y logotipos
│ └── module.js # Punto de exportación del módulo
├── dist/ # Archivos listos para producción (compilados)
├── package.json # Gestión de dependencias y scripts de construcción
└── CHANGELOG.md # Historial de versiones
Descripción de carpetas clave:
- src/datasources/: Contiene los controladores que gestionan las peticiones hacia la API de SkyWalking.
- src/components/: Alberga los componentes reutilizables desarrollados en React para la configuración del usuario.
- plugin.json: Archivo crítico que describe las capacidades del plugin (métricas, logs, alertas) ante el motor de Grafana.
2. Componentes Críticos para la Ejecución
El funcionamiento del plugin depende de archivos específicos ubicados en la carpeta src/ que actúan como orquestadores:
- src/plugin.json: Actúa como el descriptor de metadatos, indicando si el plugin es un origen de datos (datasource) o un panel.
- src/components/App.js: Punto de montaje de la aplicación donde se inicializan los estados globales.
- src/datasources/SkyWalkingDataSource.js: Implementa la comunicación asíncrona con el OAP (Observability Analysis Platform) de SkyWalking.
- src/panels/SkyWalkingPanel.js: Gestiona la lógica de renderizado para los gráficos específicos de telemetría.
3. Análisis de Configuración y Definición de Datos
La configuración se divide fundamentalmente en el manifiesto del sistema y la lógica de instanciación del servicio de datos.
Descriptor del Plugin (plugin.json)
Este archivo informa a Grafana sobre la identidad y los requisitos del backend:
{
"id": "apache-skywalking-datasource",
"type": "datasource",
"name": "SkyWalking",
"metrics": true,
"backend": true,
"info": {
"description": "Adaptador oficial para visualizar métricas de SkyWalking",
"author": {
"name": "Apache Software Foundation"
},
"logos": {
"small": "img/skywalking_logo_sm.svg",
"large": "img/skywalking_logo_lg.svg"
}
}
}
Instanciación del Origen de Datos
El siguiente fragmento muestra cómo se procesan los ajustes de red y credenciales al inicializar la conexión:
export class SkyWalkingConnectionProvider {
constructor(instanceConfig, backendSrv, templateSrv) {
this.pluginType = instanceConfig.type;
this.remoteUrl = instanceConfig.url;
this.providerName = instanceConfig.name;
// Lógica para gestionar las cabeceras de autenticación si existen
this.requestHandler = backendSrv;
this.variableManager = templateSrv;
}
async testConnection() {
// Implementación del chequeo de salud contra el OAP
return this.requestHandler.get(`${this.remoteUrl}/health`);
}
}
En este ejemplo, el constructor mapea las propiedades desde instanceConfig (proporcionado por Grafana) hacia propiedades locales, permitiendo que el plugin realice consultas autenticadas hacia el endpoint de SkyWalking.