Explicación BeerTender: un dispositivo para enfriar y embotellar cerveza de Krups y Heineken. Según los fabricantes, mantiene la calidad de la cerveza fresca durante 30 días después de la apertura del barril. Por supuesto, es conveniente para los administradores de sistemas y desarrolladores controlar la temperatura y el nivel de cerveza en su barril utilizando los paneles habituales en línea. El artículo anterior describía cómo conectar BeerTender a Warp 10 , y ahora configuraremos el panel de Grafana
OVHcloud, el proveedor de alojamiento y nube más grande de Europa, utiliza activamente la plataforma Warp 10. Todos sus datos de monitoreo fluyen en un clúster Warp 10. ¡Son 400,000 servidores, 27 centros de datos, un total de varios millones de métricas por segundo!
Tienen muchos paneles, y ahora OVHcloud es el encargado de mantener el
plugin de código abierto
Warp 10 Grafana , que comenzamos a desarrollar hace algún tiempo. Hablaremos de él. Si desea probarlo usted mismo, los datos están en el dominio público; puede copiar WarpScript a continuación.
Ya hablamos sobre cómo conectar BeerTender a Warp 10.Instalación
Primero, instala Grafana. Siga las
instrucciones en su sitio web .
Nos conectamos a la
http://localhost:3000/
predeterminada
http://localhost:3000/
, vaya a la contraseña predeterminada admin / admin, luego cambie la contraseña del administrador.
Para la última versión de Grafana, el complemento deberá instalarse manualmente. El método con
grafana-cli
no funcionará. Solo necesita clonar el repositorio de complementos en el directorio de complementos de Grafana y corregir los permisos en todas partes.
sudo systemctl stop grafana-server.service sudo chown -R grafana:mygroup /var/lib/grafana/ sudo chmod g+rw /var/lib/grafana/plugins git clone git@github.com:ovh/ovh-warp10-datasource.git /var/lib/grafana/plugins/ovh-warp10-datasource sudo chown -R grafana:mygroup /var/lib/grafana/plugins sudo systemctl start grafana-server.service
Configuracion
En la configuración de Grafana, vaya a la sección Fuentes de datos y agregue una fuente de datos de tipo Warp 10. Asegúrese de que apunte a la instancia requerida de Warp 10. Puede especificar la misma configuración que la nuestra:
Es hora de tomar datos del BeerTender ...
Visualización de la temperatura
Cree un nuevo panel de control, agregue un panel con el tipo de visualización Graph e ingrese al modo Consultas:
Temperatura inicial (valores enteros del sensor)- En la fuente de datos, seleccione Warp 10 (o el valor predeterminado)
- Encienda el editor WarpScript
- Copie WarpScript a continuación
- En la esquina superior derecha, seleccione "Últimos 30 días"
- Guarda el resultado
"gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE [ $rt 'beertender.rawtemperature' {} NOW 30 d ] FETCH 0 GET
Este script mostrará los valores iniciales del sensor ADC. Tenga en cuenta que el editor WarpScript en Grafana no es tan poderoso como antes, no hay más autocompletado aquí. Puede escribir un script en WarpStudio o VSCode, por lo que tendrá resaltado de sintaxis y documentación en línea, y luego copiará y pegará el resultado en Grafana.
Espaciado automático
En este ejemplo, seleccione el intervalo de 30 días y establezca el modo de visualización en gráfico durante los últimos 30 días. Si seleccionamos el modo de vista para el último día o año, WarpScript siempre solicitará datos cada 30 días. El complemento resuelve este problema: hay dos variables disponibles para usar en WarpScript:
$end
e
$interval
.
[ $rt 'beertender.rawtemperature' {} $end $interval ] FETCH 0
Temperatura de la cerveza
Tomé varias medidas de agua, hielo y agua caliente, comparándolas con un sensor de referencia ... El resultado fue el siguiente:
T (° C) valor inicial
18,3 680
41,5 870
37,6 841
10 586
11 596
8 559
1,467
4,500
6.5 535
Inserte estos valores en la serie temporal de
GTS y ordene el resultado por los valores iniciales del sensor:
NEWGTS 'linearInterpolation' RENAME 680 NaN NaN NaN 18.3 ADDVALUE 870 NaN NaN NaN 41.5 ADDVALUE 841 NaN NaN NaN 37.6 ADDVALUE 586 NaN NaN NaN 10 ADDVALUE 596 NaN NaN NaN 11 ADDVALUE 559 NaN NaN NaN 8 ADDVALUE 467 NaN NaN NaN 1 ADDVALUE 500 NaN NaN NaN 4.5 ADDVALUE 535 NaN NaN NaN 6.5 ADDVALUE SORT
Interpolación esperadaLa fuente de datos del sensor viene en forma de enteros. La forma más fácil de interpolar es construir primero la curva, y luego usar la función
ATTICK para leer los valores en grados.
La interpolación en WarpScript es fácil.
Hacemos un cubo para establecer el período deseado, y luego comenzamos la interpolación, completando los valores faltantes.
[ $linearInterpolation bucketizer.last 0 1 0 ] BUCKETIZE 0 GET INTERPOLATE 'truthtableGTS' STORE

Genial Ahora debe escribir su propio mapeador para reemplazar cada valor del sensor con un valor real de temperatura física y llevar el resultado al formato utilizado por el grafano.
Advertencia : los valores llegan cada 10 segundos. En tres meses, se acumularán 270 mil valores. Demasiado para Grafana ... Solo mantén el valor máximo de cada hora. En WarpScript, esto es
BUCKETIZE con el bucketizer.max
bucketizer .
Puede copiar este WarpScript en Grafana:
// raw value interpolation "gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE NEWGTS 'linearInterpolation' RENAME 680 NaN NaN NaN 18.3 ADDVALUE 870 NaN NaN NaN 41.5 ADDVALUE 841 NaN NaN NaN 37.6 ADDVALUE 586 NaN NaN NaN 10 ADDVALUE 596 NaN NaN NaN 11 ADDVALUE 559 NaN NaN NaN 8 ADDVALUE 467 NaN NaN NaN 1 ADDVALUE 500 NaN NaN NaN 4.5 ADDVALUE 535 NaN NaN NaN 6.5 ADDVALUE SORT 'linearInterpolation' STORE [ $linearInterpolation bucketizer.last 0 1 0 ] BUCKETIZE 0 GET INTERPOLATE 'truthtableGTS' STORE [ $rt 'beertender.rawtemperature' {} NOW $end $interval ] FETCH // subsampling, keep max of every hour [ SWAP bucketizer.max 0 1 h 0 ] BUCKETIZE UNBUCKETIZE // do not try to interpolate missing buckets. // interpolation [ SWAP <% 'l' STORE [ $l 0 GET //same tick NaN NaN NaN //no latitude/longitude/elevation $truthtableGTS $l 7 GET 0 GET ATTICK 4 GET //take the interpolated value ] %> MACROMAPPER 0 0 0 ] MAP 'temperature (°C)' RENAME
5 ° C, normal para cerveza
Tablero BeerTender, primera versiónNivel de barril
El medidor de tensión mide el nivel en el barril ... Pero este es un sensor de tres cables barato en un soporte de metal oxidado. No es posible obtener información precisa de dicho equipo. Por lo tanto, no es sorprendente que la salida sea realmente un resultado ruidoso y que no se pueda confiar en los valores absolutos. Para nuestro BeerTender, encontré una fórmula experimental para Grafana para mostrar el nivel actual como un porcentaje.
Consejo: El complemento Warp 10 solo recupera datos de GTS. Incluso si desea mostrar un solo valor, debe presentarlo en un punto de los datos GTS.Aquí está WarpScript, que toma el último punto de datos y lo convierte en un valor porcentual, y también crea una serie de tiempo con un punto:
"gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE //read for beer level [ $rt 'beertender.rawvalue' {} NOW -1 ] FETCH 0 GET VALUES 0 GET 'rawSensorValue' STORE //raw correction: // empty: 30.8e6 // full (and cold): 30.5e6 30.8e6 $rawSensorValue - 0 MAX 2800 / 100 MIN 'beerlevelPercent' STORE $beerlevelPercent NEWGTS 'Barre Level (%25)' RENAME 1 NaN NaN NaN $beerlevelPercent ADDVALUE
Utilice este WarpScript como solicitud de un panel con un tipo de visualización de indicador:
Buen indicadorSi está interesado, puede consultar los datos de origen ... ¡Ahora tenemos un token para acceder a estadísticas únicas sobre el consumo de cerveza!
Conclusiones
- Si los datos de monitoreo han estado bajo su control recientemente, Grafana puede integrar fácilmente la fuente de datos Warp 10.
- El complemento Grafana espera una serie temporal GTS o una lista GTS.
- OVHcloud es el actual mantenedor de complementos. ¡Siéntase libre de contribuir!
- Lea la documentación para más información.
- Si desea enriquecer la visualización de datos, puede tomar nuestros componentes web listos para usar .
