› Foros › PC › Software libre
sudo pip install simple-monitor-alert
Systemd: systemctl start sma
Init: /etc/init.d/sma.sh start
$ sudo -u sma sma results
$ sudo -u sma alerts --test
#!/usr/bin/env bash
echo "file_exists.expected = yes"
if [ -f "/path/to/file" ]; then value="yes"; else value="no"; fi
echo "file_exists.value = $value"
file_exists.expected = yes
file_exists.value = no
/etc/simple-monitor-alert/sma.ini
/usr/lib/systemd/system/
/lib/systemd/system/
CannonlakeEvo escribió:Me gusta la idea, lo voy a descargar. Gracias.
Soporta datos de GPU? Temperaturas, frecuencias, memorias...
capitanquartz escribió:CannonlakeEvo escribió:Me gusta la idea, lo voy a descargar. Gracias.
Soporta datos de GPU? Temperaturas, frecuencias, memorias...
No tiene nada de momento para monitorización de GPU, pero puedo intentar sacarlo en una próxima release
Dime el modelo de tu tarjeta gráfica y me informo sobre cómo sacar los valores. En casa puedo probar con Nvidia e Intel. En el trabajo con AMD.
El proyecto está todavía un poco inmaduro porque es bastante reciente, pero es justamente con las pruebas y la gente que prueba que puedo solucionar los problemas ^^ A cualquier cosa sólo escribe un comentario.
¡Saludos!
CannonlakeEvo escribió:capitanquartz escribió:CannonlakeEvo escribió:Me gusta la idea, lo voy a descargar. Gracias.
Soporta datos de GPU? Temperaturas, frecuencias, memorias...
No tiene nada de momento para monitorización de GPU, pero puedo intentar sacarlo en una próxima release
Dime el modelo de tu tarjeta gráfica y me informo sobre cómo sacar los valores. En casa puedo probar con Nvidia e Intel. En el trabajo con AMD.
El proyecto está todavía un poco inmaduro porque es bastante reciente, pero es justamente con las pruebas y la gente que prueba que puedo solucionar los problemas ^^ A cualquier cosa sólo escribe un comentario.
¡Saludos!
GTX 950 (Maxwell 2° Gen.)
Sería un buen complemento a Conky
Lastima que MSI Afterburner no esté nativo Linux :/
[nekmo@homura ~]$ nvidia-smi
Sat Jun 4 20:56:18 2016
+------------------------------------------------------+
| NVIDIA-SMI 352.30 Driver Version: 352.30 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 550 Ti Off | 0000:01:00.0 N/A | N/A |
| 23% 57C P0 N/A / N/A | 858MiB / 1020MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
jun 04 20:21:33 speed sh[10971]: File "/usr/lib/python3.5/smtplib.py", line 720, in login
jun 04 20:21:33 speed sh[10971]: initial_response_ok=initial_response_ok)
jun 04 20:21:33 speed sh[10971]: File "/usr/lib/python3.5/smtplib.py", line 641, in auth
jun 04 20:21:33 speed sh[10971]: raise SMTPAuthenticationError(code, resp)
jun 04 20:21:33 speed sh[10971]: smtplib.SMTPAuthenticationError: (534, b'5.7.9 Application-specific password required. Learn more at\n5.7.9 https://support.google.com/accounts/answer/185833 j131sm1971223vkd.20 - gsmtp')
jun 04 20:21:33 speed systemd[1]: sma.service: Main process exited, code=exited, status=1/FAILURE
jun 04 20:21:33 speed systemd[1]: sma.service: Unit entered failed state.
jun 04 20:21:33 speed systemd[1]: sma.service: Failed with result 'exit-code'.
1985a escribió:Hola, estuve probando y al habilitar el email me da errores de cabezeras, segun veo en el journal.
Por cierto, muy buen programa.
Ahhh, tendra que ver, que mi clave es aleatoria y tiene numeros y simbolos raros???
sudo -u sma sma alerts --test
capitanquartz escribió:1985a escribió:Hola, estuve probando y al habilitar el email me da errores de cabezeras, segun veo en el journal.
Por cierto, muy buen programa.
Ahhh, tendra que ver, que mi clave es aleatoria y tiene numeros y simbolos raros???
Por favor, cópiame el error y la configuración que estás usando para enviar las alertas También ponme por favor la versión de Python que estás usando.
Puedes probar a enviar una alerta de prueba con:sudo -u sma sma alerts --test
Saludos
# Gmail example
[mail]
from = w*******@gmail.com
to = d********@hotmail.com
host = smtp.gmail.com
port = 587
user = w********@gmail.com
password = ***************
start-tls = yes
1985a escribió:capitanquartz escribió:1985a escribió:Hola, estuve probando y al habilitar el email me da errores de cabezeras, segun veo en el journal.
Por cierto, muy buen programa.
Ahhh, tendra que ver, que mi clave es aleatoria y tiene numeros y simbolos raros???
Por favor, cópiame el error y la configuración que estás usando para enviar las alertas También ponme por favor la versión de Python que estás usando.
Puedes probar a enviar una alerta de prueba con:sudo -u sma sma alerts --test
Saludos
En el mensaje anterior copie el error. La configuracion es la que viene de fabrica, solo habilite el uso de correo.
Esta es la configuracion del correo, obiamente quitando los datos criticos# Gmail example
[mail]
from = w*******@gmail.com
to = d********@hotmail.com
host = smtp.gmail.com
port = 587
user = w********@gmail.com
password = ***************
start-tls = yes
Este comando me da error
sudo -u sma sma alerts --test
pd: estoy usando actualmente python 3.5
1985a escribió:@capitanquartz
Se me paso mencionarte eso.
Estoy en archlinux
ok, voy a crear una contraseña y luego probare y te cuento.
sudo -u sma sma alerts --test
1985a escribió:@capitanquartz
Listo, ya he generado y colocado la clave al programa. Ahora no me arroja problemas en el journal y tampoco este comandosudo -u sma sma alerts --test
Solo me queda esperar a que me envie un informe.
Por cierto, como funciona eso, diariamente, semanalmente o por hora???
X-Run-Every-Seconds: <seconds>
sudo -u sma sma results
/ /home /var
1985a escribió:@capitanquartz
Ok, ahora revise mi cuenta en gmail y me ha generado algunos correos, mas no se enviaron a mi otra cuenta. Voy a mirar eso ahora.
Tengo algunos mensajes aqui, que solo dicen "message body" al parecer son generados al hacer el test con el programa.
Veo otros mensajes que son los sensores que tengo activos actualmente, o los que vienen de fabrica que vigilan algunas de las particiones que tengo en mi sistema.
Veo que me envio de las siguientes particiones:/ /home /var
Por lo que veo, esta funcionando todo bien por ahora.
Si mañana tengo tiempo, activare algunos sensores para medir la temperatura, que supongo que se podra hacer???
Pues ya ire contando mis inquietudes por aqui.
/etc/simple-monitor-alert/monitors-available
/etc/simple-monitor-alert/monitors-enabled
cd /etc/simple-monitor-alert/monitors-enabled
ln -s ../monitor-available/<monitor>
amchacon escribió:La autentificación en dos pasos se puede ignorar cuando se añade el dispositivo a la lista de confianza.
Se podría hacer que al inicio, ejecutase la autentificación, el usuario la pusiera y luego ya no hiciera falta nunca más.
CannonlakeEvo escribió:Lástima que no sé programar, para contribuir con la comunidad con cositas así. ¿Recomendáis alguna guía ultra básica ?
A modo de sugerencia, y con la idea de aportar, diré que cualquier persona que estime su hardware debería monitorizar. En mi caso, me es imprescindible lo siguiente, y muchas variables ya las recojes en tu aplicación.
Uso en OSD / On Screen.
CPU: Uso Núcleos / Hilos y Temperaturas
RAM: Uso de RAM (Opcion: Que usa la RAM)
HDD: Temperatura y Tasa W/R
GPU: Temperatura, Uso Núcleo/Memoria, Frecuencias Memoria/Núcleo, Ventiladores, Watt.
sodark escribió:Quiza te facilitaria la tarea fijarte en como hace Monitorix el trabajo.
Creo que usa rrdtool para generar graficos, pero debe tener tambien monitores para recolectar la informacion.
noentiendero escribió:@capitanquartz Muy buena herramienta. Yo tengo un proyecto que es hacer un monitor de sistema en una pantalla LCD, en principio lo voy a hacer con Arduino (aunque en una RPI se podría hacer en la propia RPI conectándole una pantalla en los GPIO, pero al final preferí hacerlo con el arduino de por medio, no me gustaba cómo quedaban los cables de la lcd saliendo de la pi ). La idea es que hasta 2 equipos le envíen información a una RPI, y que ésta, estando conectada a un Arduino, reciba esas informaciones y se las pase, junto a la información propia, al Arduino (por serial) de forma que el Arduino recibe los datos y los imprime en pantalla. Todavía está verde el proyecto pero igual esta herramienta podría servirme mejor (aunque uno de los equipos en ocasiones estaría funcionando con Windows, pero bueno, es lo de menos).
Se me está ocurriendo que podría escribir los logs que saca tu herramienta en la RPI u otro equipo de la red (incluso hacer una ramdisk para tal hecho), y que la rpi lea esa información y luego se la envíe al arduino por serial. Por ahora probaré esta herramienta en local a ver qué tal
sodark escribió:Creo que lo mejor que podrais hacer es que se pudiera obtener el output via JSON / XML, de esta forma a ti tambien te sera luego mas sencillo crear nuevos sistemas de alerta.
Ademas, siempre se puede hacer que luego un servidor web , al recibir la petición directamente escupa el JSON que ha generado tu aplicación.
Yo este verano terminare unas practicas que tengo para la universidad y mirare a ver como puedo ayudarte con tema de los monitores, ya que me interesa bastante.
[root@homura /home/nekmo]# cat /var/lib/simple-monitor-alert/results.json
{
"monitors": {
"hdds": {
"pcnt_use(md0)": {
"alerted": [
"telegram"
],
"executions": 2226,
"fail": true,
"since": "2016-05-03T00:41:30.388937+02:00",
"updated_at": "2016-06-05T05:19:40.752888+02:00"
},
"pcnt_use(sda1)": {
"alerted": [
"telegram"
],
"executions": 2232,
"fail": true,
"since": "2016-05-03T00:41:30.389135+02:00",
"updated_at": "2016-06-05T05:19:40.752369+02:00"
},
"pcnt_use(sdc1)": {
"alerted": [
"telegram"
],
"executions": 2233,
"fail": true,
"since": "2016-05-03T00:41:30.388813+02:00",
"updated_at": "2016-06-05T05:19:40.752674+02:00"
},
"pcnt_use(sdc2)": {
"alerted": [],
"executions": 2233,
"fail": false,
"since": "2016-05-03T00:41:30.388599+02:00",
"updated_at": "2016-06-05T05:19:40.752196+02:00"
},
"pcnt_use(sdc3)": {
"alerted": [],
"executions": 2233,
"fail": false,
"since": "2016-05-03T00:41:30.389049+02:00",
"updated_at": "2016-06-05T05:19:40.751958+02:00"
}
},
"mdadm": {
"mdadm(md0)": {
"alerted": [],
"executions": 9572,
"fail": false,
"since": "2016-05-25T15:37:07.865808+02:00",
"updated_at": "2016-06-05T05:19:40.442957+02:00"
}
},
"smart": {
"smart_status": {
"alerted": [],
"executions": 49,
"fail": false,
"since": "2016-05-03T00:53:27.493226+02:00",
"updated_at": "2016-05-03T01:29:12.851040+02:00"
}
},
"system": {
"cpu": {
"alerted": [],
"executions": 9947,
"fail": false,
"since": "2016-05-03T00:41:30.223221+02:00",
"updated_at": "2016-06-05T05:19:40.482914+02:00"
},
"ram": {
"alerted": [],
"executions": 9947,
"fail": false,
"since": "2016-05-03T00:41:30.223398+02:00",
"updated_at": "2016-06-05T05:19:40.483150+02:00"
}
}
},
"version": "0.1.0"
}[root@homura /home/nekmo]#
[root@homura /home/nekmo]# cat /var/lib/simple-monitor-alert/monitors.json
{
"hdds": {
"headers": {
"X-Run-Every-Seconds": 300
},
"last_execution": "2016-06-05T05:19:40.750821+02:00"
},
"mdadm": {
"headers": {},
"last_execution": "2016-06-05T05:19:40.431666+02:00"
},
"system": {
"headers": {},
"last_execution": "2016-06-05T05:19:40.477583+02:00"
}
}[root@homura /home/nekmo]#
[root@homura /home/nekmo]# /etc/simple-monitor-alert/monitors-enabled/hdds.sh
X-Run-Every-Seconds: 300
pcnt_use(sdc1).name = 'Percentage of space used in sdc1 (/)'
pcnt_use(sdc1).expected = <= 80
pcnt_use(sdc1).value = 84
pcnt_use(sdc1).extra_info = 'Space: 20G/25G'
pcnt_use(sda1).name = 'Percentage of space used in sda1 (/media/datos)'
pcnt_use(sda1).expected = <= 80
pcnt_use(sda1).value = 91
pcnt_use(sda1).extra_info = 'Space: 826G/917G'
pcnt_use(sdc2).name = 'Percentage of space used in sdc2 (/home)'
pcnt_use(sdc2).expected = <= 80
pcnt_use(sdc2).value = 76
pcnt_use(sdc2).extra_info = 'Space: 51G/70G'
pcnt_use(sdc3).name = 'Percentage of space used in sdc3 (/boot/efi)'
pcnt_use(sdc3).expected = <= 80
pcnt_use(sdc3).value = 67
pcnt_use(sdc3).extra_info = 'Space: 42M/63M'
pcnt_use(md0).name = 'Percentage of space used in md0 (/media/nekraid01)'
pcnt_use(md0).expected = <= 80
pcnt_use(md0).value = 100
pcnt_use(md0).extra_info = 'Space: 5,4T/5,5T'
[hdds]
pcnt_use(sdc1).expected = <= 95
pcnt_use(sda1).expected = <= 95
pcnt_use(md0).expected = <= 100
capitanquartz escribió:noentiendero escribió:@capitanquartz Muy buena herramienta. Yo tengo un proyecto que es hacer un monitor de sistema en una pantalla LCD, en principio lo voy a hacer con Arduino (aunque en una RPI se podría hacer en la propia RPI conectándole una pantalla en los GPIO, pero al final preferí hacerlo con el arduino de por medio, no me gustaba cómo quedaban los cables de la lcd saliendo de la pi ). La idea es que hasta 2 equipos le envíen información a una RPI, y que ésta, estando conectada a un Arduino, reciba esas informaciones y se las pase, junto a la información propia, al Arduino (por serial) de forma que el Arduino recibe los datos y los imprime en pantalla. Todavía está verde el proyecto pero igual esta herramienta podría servirme mejor (aunque uno de los equipos en ocasiones estaría funcionando con Windows, pero bueno, es lo de menos).
Se me está ocurriendo que podría escribir los logs que saca tu herramienta en la RPI u otro equipo de la red (incluso hacer una ramdisk para tal hecho), y que la rpi lea esa información y luego se la envíe al arduino por serial. Por ahora probaré esta herramienta en local a ver qué tal
Me encanta la idea de tu proyecto Según entiendo, aquí SMA sería el encargado de recolectar la información en los equipos para enviárselo a la RPI, y que ésta imprima los resultados en la pantalla a través del Arduino, ¿no? El único problema insalvable que se me ocurre, es que Simple Monitor Alert no está pensado para Windows. Simplemente, no tengo monitores. En teoría, al ser Python multiplataforma, debería funcionar, pero habría que programar monitores.
A parte, los 3 únicos métodos de envío que tengo para enviar los datos son: Telegram, email y archivo. Habría que hacer un nuevo sistema que envíe los logs, preferiblemente en JSON o algo así, a la RPI.
Me interesa tu proyecto así que espero poder estar al tanto de las novedades Si quieres dame una forma de contactar por si quieres que mantengamos el contacto. Si tienes Github, puedes agregarme.
¡Gracias a todos por vuestros comentarios!
noentiendero escribió:capitanquartz escribió:noentiendero escribió:@capitanquartz Muy buena herramienta. Yo tengo un proyecto que es hacer un monitor de sistema en una pantalla LCD, en principio lo voy a hacer con Arduino (aunque en una RPI se podría hacer en la propia RPI conectándole una pantalla en los GPIO, pero al final preferí hacerlo con el arduino de por medio, no me gustaba cómo quedaban los cables de la lcd saliendo de la pi ). La idea es que hasta 2 equipos le envíen información a una RPI, y que ésta, estando conectada a un Arduino, reciba esas informaciones y se las pase, junto a la información propia, al Arduino (por serial) de forma que el Arduino recibe los datos y los imprime en pantalla. Todavía está verde el proyecto pero igual esta herramienta podría servirme mejor (aunque uno de los equipos en ocasiones estaría funcionando con Windows, pero bueno, es lo de menos).
Se me está ocurriendo que podría escribir los logs que saca tu herramienta en la RPI u otro equipo de la red (incluso hacer una ramdisk para tal hecho), y que la rpi lea esa información y luego se la envíe al arduino por serial. Por ahora probaré esta herramienta en local a ver qué tal
Me encanta la idea de tu proyecto Según entiendo, aquí SMA sería el encargado de recolectar la información en los equipos para enviárselo a la RPI, y que ésta imprima los resultados en la pantalla a través del Arduino, ¿no? El único problema insalvable que se me ocurre, es que Simple Monitor Alert no está pensado para Windows. Simplemente, no tengo monitores. En teoría, al ser Python multiplataforma, debería funcionar, pero habría que programar monitores.
A parte, los 3 únicos métodos de envío que tengo para enviar los datos son: Telegram, email y archivo. Habría que hacer un nuevo sistema que envíe los logs, preferiblemente en JSON o algo así, a la RPI.
Me interesa tu proyecto así que espero poder estar al tanto de las novedades Si quieres dame una forma de contactar por si quieres que mantengamos el contacto. Si tienes Github, puedes agregarme.
¡Gracias a todos por vuestros comentarios!
Correcto, es lo que tenía pensado. Ahora mismo, lo que tengo hecho, es un script en Python que coge del ordenador donde se ejecuta ese script el uso de CPU (con la librería psutil) y se lo manda al Arduino por serial (usando pyserial) - aunque hay algunas limitaciones, por ahora me encontré con que si lo mando con una frecuencia mayor que una vez cada 1,5 segundos el arduino recibe los valores pero no los saca en pantalla... he de ver por qué sucede. Para enviar más datos al arduino todavía no sé cómo haré, imagino que enviando una ristra de datos y diciéndole al arduino que coja cierto número de caracteres fijo en X posición podría funcionar
Para coger datos de otros equipos, había preguntado hace unas semanas en Reddit y me dijeron de crear un servidor HTTP o usar Node.js y algunas ideas mas. En Windows había probado el script python que hice para linux y no conseguí hacerlo funcionar, pero bueno, eso tendré que verlo con más calma.
Te agregué a Jabber (de hecho te tenía ya agregado a tu cuenta de jabberes.org hace tiempo, ahora te agregué también a la de tu servidor).
Salud!
[root@homura /home/nekmo]# /etc/simple-monitor-alert/monitors-enabled/hdds.sh
X-Run-Every-Seconds: 300
pcnt_use(sdc1).name = 'Percentage of space used in sdc1 (/)'
pcnt_use(sdc1).expected = <= 80
pcnt_use(sdc1).value = 84
pcnt_use(sdc1).extra_info = 'Space: 20G/25G'
pcnt_use(sda1).name = 'Percentage of space used in sda1 (/media/datos)'
pcnt_use(sda1).expected = <= 80
pcnt_use(sda1).value = 91
pcnt_use(sda1).extra_info = 'Space: 826G/917G'
pcnt_use(sdc2).name = 'Percentage of space used in sdc2 (/home)'
pcnt_use(sdc2).expected = <= 80
pcnt_use(sdc2).value = 76
pcnt_use(sdc2).extra_info = 'Space: 51G/70G'
pcnt_use(sdc3).name = 'Percentage of space used in sdc3 (/boot/efi)'
pcnt_use(sdc3).expected = <= 80
pcnt_use(sdc3).value = 67
pcnt_use(sdc3).extra_info = 'Space: 42M/63M'
pcnt_use(md0).name = 'Percentage of space used in md0 (/media/nekraid01)'
pcnt_use(md0).expected = <= 80
pcnt_use(md0).value = 100
pcnt_use(md0).extra_info = 'Space: 5,4T/5,5T'
[hdds]
pcnt_use(sdc1).expected = <= 95
pcnt_use(sda1).expected = <= 95
pcnt_use(md0).expected = <= 100
public String generaComboPersones(String Usuari,int format) throws Exception {
StringBuilder HTMLcode = new StringBuilder("");
String query = "select distinct pr.* from tabla1 pr, tabla2 si WHERE pr.campo1=si.campo2 ";
ResultSet cursor = funcions_globals.abre(query,false);
switch (format) {
case FORMAT_JSON:
HTMLcode.append("\"persones\":[");
if ( funcions_globals.esConsultaValida(cursor) ) {
do {
String field1 = this.Res_getString(cursor.getString("field1"),false,-1);
String field2 = this.Res_getString(cursor.getString(field2),false,-1);
String field3 = this.cleanNullString(this.Res_getString(cursor.getString("field3"),false,-1));
String field4 = this.cleanNullString(this.Res_getString(cursor.getString("field4"),false,-1));
HTMLcode.append("{\"campo1\":\""+field1+"\",");
HTMLcode.append("\"campo2\":\""+field2+" "+field3+", "+field4+"\"");
HTMLcode.append("}");
if ( !cursor.isLast() ) { HTMLcode.append(","); }
} while ( cursor.next() );
}
HTMLcode.append("]");
break;
default:
if ( funcions_globals.esConsultaValida(cursor) ) {
do {
String field1 = this.Res_getString(cursor.getString("field1"),false,-1);
String field2 = this.Res_getString(cursor.getString("field2"),false,-1);
String field3 = this.cleanNullString(this.Res_getString(cursor.getString("field3"),false,-1));
String field4 = this.cleanNullString(this.Res_getString(cursor.getString("field4"),false,-1));
HTMLcode.append("<option value='"+field1+"'>"+field2+" "+field3+", "+field4+"</option>");
} while ( cursor.next() );
}
break;
}
funcions_globals.cierra(cursor,true);
return HTMLcode.toString();
}
sodark escribió:No si no digo que debas cambiarlo, sino que puedas enviarle como parametro algo tipo -format JSON y te devuelva el json, total es hacer un switch a la hora de presentar la informacion.
El default seria el que usas , y si te viene un JSON lo generas como tal, no se si me explico.
Yo en algunas aplicaciones web lo hago cuando tengo que presentar la informacion, a veces la informacion me viene solicitada por un AJAX, otras es el propio PHP/Java de backend quien lo obtiene para cargarlo en la web.public String generaComboPersones(String Usuari,int format) throws Exception {
StringBuilder HTMLcode = new StringBuilder("");
String query = "select distinct pr.* from tabla1 pr, tabla2 si WHERE pr.campo1=si.campo2 ";
ResultSet cursor = funcions_globals.abre(query,false);
switch (format) {
case FORMAT_JSON:
HTMLcode.append("\"persones\":[");
if ( funcions_globals.esConsultaValida(cursor) ) {
do {
String field1 = this.Res_getString(cursor.getString("field1"),false,-1);
String field2 = this.Res_getString(cursor.getString(field2),false,-1);
String field3 = this.cleanNullString(this.Res_getString(cursor.getString("field3"),false,-1));
String field4 = this.cleanNullString(this.Res_getString(cursor.getString("field4"),false,-1));
HTMLcode.append("{\"campo1\":\""+field1+"\",");
HTMLcode.append("\"campo2\":\""+field2+" "+field3+", "+field4+"\"");
HTMLcode.append("}");
if ( !cursor.isLast() ) { HTMLcode.append(","); }
} while ( cursor.next() );
}
HTMLcode.append("]");
break;
default:
if ( funcions_globals.esConsultaValida(cursor) ) {
do {
String field1 = this.Res_getString(cursor.getString("field1"),false,-1);
String field2 = this.Res_getString(cursor.getString("field2"),false,-1);
String field3 = this.cleanNullString(this.Res_getString(cursor.getString("field3"),false,-1));
String field4 = this.cleanNullString(this.Res_getString(cursor.getString("field4"),false,-1));
HTMLcode.append("<option value='"+field1+"'>"+field2+" "+field3+", "+field4+"</option>");
} while ( cursor.next() );
}
break;
}
funcions_globals.cierra(cursor,true);
return HTMLcode.toString();
}
#!/usr/bin/env bash
echo "file_exists.expected = yes"
if [ -f "/path/to/file" ]; then value="yes"; else value="no"; fi
echo "file_exists.value = $value"
#!/usr/bin/env bash
# Smartctl monitor
# Add to sudoers:
# sma ALL= (ALL) NOPASSWD: /usr/sbin/smartctl
# No arguments required.
echo "X-Run-Every-Seconds: 43200"
for disk in `lsblk -d -o name | tail -n +2`; do
status=`sudo smartctl -H /dev/$disk | grep -e 'overall-health' | awk '{print $NF}'`
if [[ $? != 1 && $status ]]; then
echo "smart_status($disk).name = 'SMART test result on /dev/$disk'"
echo "smart_status($disk).expected = 'PASSED'"
echo "smart_status($disk).value = '$status'"
fi
done
#!/usr/bin/env bash
# System monitor. Includes:
# - CPU
# - RAM
# - SWAP
# No parameters required.
echo "cpu.name = 'CPU percentage usage'"
echo "cpu.expected= <= 80"
echo "cpu.seconds = 500"
echo "cpu.value = "`grep 'cpu ' /proc/stat | awk '{ print ($2+$4)*100/($2+$4+$5)}'`
echo "ram.name = 'RAM memory usage'"
echo "ram.expected= <= 85"
echo "ram.seconds = 120"
echo "ram.value = "`free | grep Mem | awk '{print $3/$2 * 100.0}'`
if [[ `free | grep Swap | awk '{print $2}'` != '0' ]]; then
echo "swap.name = 'SWAP memory usage'"
echo "swap.expected= <= 80"
echo "swap.seconds = 120"
echo "swap.value = "`free | grep Swap | awk '{print $3/$2 * 100.0}'`
fi
sma --json
capitanquartz escribió:Raro que la frecuencia sea de 1,5 segundos... Pero si es así, cosa que para este uso no es el fin del mundo, tal vez habría que omitir los resultados que estén de por medio :/
Por lo de usar un servidor HTTP, lo veo una buena idea. Estaba pensando en montar un servidor centralizado para SMA en un futuro, como algo opcional (aunque seguiría funcionando autónomo). Si te urge, puedo ir haciendo ya algo para que aunque sea te entregue los valores.
Si sólo estás monitorizando cosas como uso de CPU, se podrían crear los monitores que falten para Windows.
Gracias por agregarme ^^ Hazlo también si puedes a nekmo@nekmo.org que lo uso más. Si usas Jabber, puedes encontrarnos también en la sala: eolfansub@salas.nekmo.org
CannonlakeEvo escribió:@capitanquartz
Sin ningún problema. Me ha ido excelente hasta ahora, con el set a mi gusto.
Lástima lo del MSI Afterburner. Es de lo poco que echo de menos en Linux.
noentiendero escribió:capitanquartz escribió:Raro que la frecuencia sea de 1,5 segundos... Pero si es así, cosa que para este uso no es el fin del mundo, tal vez habría que omitir los resultados que estén de por medio :/
Por lo de usar un servidor HTTP, lo veo una buena idea. Estaba pensando en montar un servidor centralizado para SMA en un futuro, como algo opcional (aunque seguiría funcionando autónomo). Si te urge, puedo ir haciendo ya algo para que aunque sea te entregue los valores.
Si sólo estás monitorizando cosas como uso de CPU, se podrían crear los monitores que falten para Windows.
Gracias por agregarme ^^ Hazlo también si puedes a nekmo@nekmo.org que lo uso más. Si usas Jabber, puedes encontrarnos también en la sala: eolfansub@salas.nekmo.org
No, no urge para nada, es uno de los muchos proyectos que tengo pensado hacer ahora en vacaciones. De todas formas igual me convenía mejor dejar el Arduino y conectar la pantalla directamente a la RPI, porque pensándolo bien es algo tontería tener Arduino de por medio, si pongo la pantalla en la RPI directamente sería más fácil y más estable seguramente. La única razón por la que tengo el Arduino es porque tenía pensado tener más cosillas por ahí, como relés, detectores de cosas y demás, pero siempre puedo hacerlo con la rpi. Pensaré a ver cómo hago finalmente.
El arduino tendría más sentido si fuese conectado a algo que no tuviese puertos GPIO, o si estuviese por ahí sin conectar a nada, por tanto recibiendo los datos él (mediante un Ethernet Shield o algo así).
pip install -U simple-monitor-alert
[nekmo]
Server = https://repos.nekmo.org/archlinux/
pacman-key -r FC4498F5 && pacman-key --lsign-key FC4498F5
F865 CCCC 8AD2 393B DDCF E2A2 A485 D679 FC44 98F5
cercata escribió:Probaste monit y munin ? Igual te has pegao un curro para nada. Se instalan facilmente desde gestor de paquetes.
Miralos, igual te interesan, sobretodo munin, tal vez para complementar tu monitorización con graficas, tal vez para añadir nueva funcionalidad a tu "simple monitor alert".
Voy a instalarlo y probarlo a ver que tal.
Edito: Joder que currada, no me esperaba algo tan cañero vieniendo así de un foro, de un usuario que se ha hecho una app ...
Cuando ejecuto el comando sma results, me sale todo OK en verde, menos la RAM, que sale FAIL en rojo. ¿ Que significa un fallo en la RAM ?