Manolo mio

Manolo mio, tu bien lo sabes
que desde niña te di mi amor
tu me abrazabas y me besabas
en las ventanas del corredor

Manolo mio a mi me han dicho
que por tres meses te vas a ir
esos tres meses seran seis siglos
Manolo mio, llevame a mi

A los seis meses de estar en Ceuta
una cartita el recibio
era de Amelia, la que él quería
y le decia que se casó

La primer carta cayó en la arena
y la segunda en el corazón
y la tercera cayó en la acera
donde Manolo se enamoró

A los diez meses de estar en Ceuta
otra cartita él recibió
era de Amelia, la que él quería
y le decía que ya enviudó

La primer carta cayó en la arena
y la segunda en el corazón
y la tercera cayó en la acera
donde Manolo se enamoró

Allá en las islas hay un cadaver
que nadie sabe de quién será
seguramente que es de Manolo
que se habrá muerto en la soledad

versión de Jesús

Lawrence. Los siete pilares de la sabiduria

“Perdieron su sentimiento geográfico y su memoria racial, política e histórica; pero se aferraron aún con mayor fuerza a su lengua, y la erigieron casi en su propia y real patria. El primer deber de todo musulmán era estudiar el Corán, el libro sagrado del Islam, y casualmente el más grande monumento literario árabe”

influxdb, grafana y telegraf. pruebas con inputs.exec paralelizados

 

un container de influxdb (la imagen oficial):

docker run -p 8086:8086 -v /home/usuario/trabajo/influxdb_20181006/:/var/lib/influxdb influxdb

dentro del container podemos acceder a la linea de ordenes de influx, y hacer y deshacer como si fuese un SQL cualquiera:

influxConnected to http://localhost:8086 version 1.6.3
InfluxDB shell version: 1.6.3
> show databases
name: databases
name
----
_internal
> create database prueba
> show databases
name: databases
name
----
_internal
prueba
> create user usuario with password 'xxxxxxx'
> grant all on prueba to usuario
> show retention policy
ERR: error parsing query: found POLICY, expected POLICIES at line 1, char 16
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use <database>".
> show retention policies
ERR: database name required
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use <database>".
> show retention policies on _internal
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
monitor 168h0m0s 24h0m0s 1 true
> create retention policy dia on prueba duration 1d replication 1 default
> show retention policies on prueba
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
dia 24h0m0s 1h0m0s 1 true

Ya tenemos un influxdb funcionando. Lo siguiente es un CentOS7 para que sea el nodo a monitorizar (con telegraf):

docker run -ti centos

seguimos los pasos de esta guia para instalar Telegraf.

 

por ultimo lanzamos la imagen de grafana:

docker run -d --name=grafana -p 3000:3000 grafana/grafana

despues importamos en grafana el dashboard predefinido de metricas del sistema (linux), y listo!

la cantidad de informacion visual que tenemos es ENORME. Y esta bien organizada.

Cualquiera de las SELECTs que aparecen en las graficas se puede lanzar desde la linea de comandos de influxdb..

ahora seria cuestion de hacer avanzar el problema:

Probablemente, el input que estamos usando para hacer curls sea input.exec. Segun la documentacion acepta varios scripts diferentes para ser lanzados…

….

el escenario:

una maquina con telegraf y el siguiente  telegraf.conf

[global_tags]
[agent]
    interval = "30s"
    debug = false
    hostname = "server-hostname"
    round_interval = false
    flush_interval = "10s"
    flush_jitter = "0s"
    collection_jitter = "0s"
    metric_batch_size = 1000
    metric_buffer_limit = 10000
    quiet = false
    logfile = ""
    omit_hostname = false
    precision = "1ns"
[[outputs.influxdb]]
    urls = ["http://192.168.1.133:8086"]
    database = "prueba"
    timeout = "5s"
    username = "usuario"
    password = "xxxxxxxx"
    retention_policy = "dia"
    precision = "1ns"
[[inputs.cpu]]
    percpu = true
    totalcpu = true
    collect_cpu_time = false
    report_active = false
[[inputs.disk]]
    ignore_fs = ["tmpfs", "devtmpfs", "devfs"]
[[inputs.io]]
[[inputs.mem]]
[[inputs.net]]
[[inputs.system]]
[[inputs.swap]]
[[inputs.netstat]]
[[inputs.processes]]
[[inputs.kernel]]
[[inputs.exec]]
  commands = [
    "/usr/local/bin/test.sh uno",
    "/usr/local/bin/test.sh dos",
    "/usr/local/bin/test.py tres",
    "/usr/local/bin/test.py cuatro"    
  ]
  timeout = "20s"
  name_suffix = "_mycollector"
  data_format = "influx"

dos scripts en /usr/local/bin:

[root@e227e457f593 bin]# cat test.sh 
#!/bin/sh
#sleep 5
TIEMPO=$(date +"%s%N")
echo "example,tag1=$1,tag2=$TIEMPO i=42i,j=43i,k=44i $TIEMPO"

[root@e227e457f593 bin]# cat test.py 
#!/usr/bin/python
import sys
import time
time.sleep(5)
val = sys.argv[1]
print 'example,tag1={0},tag2=b i=42i,j=43i,k=44i'.format(val)

Cuando “toca”, telegraf hace las cuatro llamadas simultaneamente, por lo que se levantan dos scripts de bash y dos de python, cada uno con su parametro correspondiente. De esta forma, la “paralelización” es cosa de telegraf, que será el que espere a la salida de todos y cada uno de los scripts para lanzar los datos a influx.

telegraf 417 0 0 17:49 ? 00:00:00 /usr/bin/telegraf -pidfile /var/run/telegraf/telegraf.pid -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
telegraf 693 417 2 17:56 ? 00:00:00 /usr/bin/python /usr/local/bin/test.py cuatro
telegraf 694 417 0 17:56 ? 00:00:00 /bin/sh /usr/local/bin/test.sh dos
telegraf 695 417 2 17:56 ? 00:00:00 /usr/bin/python /usr/local/bin/test.py tres
telegraf 696 417 0 17:56 ? 00:00:00 /bin/sh /usr/local/bin/test.sh uno

lo que resulta en cuatro entradas en influxdb, que podemos ver con el mismo TIMESTAMP ( el de la inserción desde telegraf)

select * from example_mycollector 
1538858554409569900 server-hostname 42 43 44 uno  1538858554409569900
1538858554410877352 server-hostname 42 43 44 dos  1538858554410877352

mientras tanto, el debate sobre la precision de la toma de datos, que si nanosegundos o qué.

objetos con significado

partiendo de un proyecto de weather display, seria un interesante objeto cargado de significado que podria operar como un “cuadro” (cosa colgada en una pared), trayendo información desde RSS (si es que aun existen), u otras fuentes en internet (gestion de proyectos, estado de monitorización, noticias, periodico, lecturas de interes, partituras….).

En la descripcion del proyecto dicen que con actualizaciones cada 15 minutos el prototipo esta funcionando un año con una bateria…. El display y su controlador (en 6”) se puede encontrar en aliexpress por 60€

otto, lista de la compra

aparte de los planos para imprimir, los siguientes elementos:

  • 4 servos (comprando de 10 en 10, gastos de envio incluidos, salen por 7€ los cuatro necesarios para un robot)
  • 1 arduino nano (1,87€)
  • Arduino I/O board (1,45€)
  • sensor ultrasonidos (1,22€)

total: 11,58€

El equivalente de la web de otto son $37 (30€). Y en este otro lugar, 30€

el instructables.

la web oficial de otto

H.Miller. Tropico de Capricornio

Me preguntó inocentemente qué me había llevado a su casa, entonces… y sin vacilar ni un instante le conté una mentira asombrosa, mentira que más adelante iba a resultar una gran verdad. Le dije que simplemente fingía vender enciclopedias para conocer a gente y escribir sobre ella. Eso le interesó enormemente, más incluso que la enciclopedia. Quería saber qué escribiría sobre él, si podía decirlo. He tardado veinte años en dar una respuesta, pero aquí va. Si todavía le gustaría saber, Fulano de Tal de la ciudad de Bayonne, ésta es: le debo mucho a usted porque después de esa mentira abandoné su casa e hice pedazos el prospecto que me habían facilitado en la Enciclopedia Británica y lo tiré al arroyo. Me dije: «Nunca más me presentaré ante la gente con pretextos falsos, ni siquiera para darles la Sagrada Biblia. Nunca más venderé nada, aunque tenga que morirme de hambre. Me voy a casa ahora y me sentaré a escribir realmente sobre la gente. Y si alguien llama a mi puerta para venderme algo, le invitaré a pasar y le diré: “¿Por qué se dedica usted a esto?” Y si dice que es porque tiene que ganarse la vida, le ofreceré el dinero que tenga y le pediré una vez más que piense en lo que está haciendo. Quiero impedir que el mayor número posible de hombres finjan tener que hacer esto o lo otro porque tienen que ganarse la vida. No es verdad. Uno puede morirse de hambre… es mucho mejor. Cada hombre que se muere de hambre voluntariamente contribuye a interrumpir el proceso automático. Preferiría ver a un hombre coger una pistola y matar a su vecino para conseguir la comida que necesita que mantener el proceso automático fingiendo que tiene que ganarse la vida.» Eso es lo que quería decir, señor Fulano de Tal.

Tajea

Una tajea es un sistema de captación de aguas subterráneas que consiste en excavar una zanja en las cercanías de un cauce fluvial, una rambla, y canalizar el fondo. Después todo se cubre dejando pozos verticales para ventilación y limpieza periódica.