Entradas

Effective monitoring & alerting.

Imagen
Es un libro imprescindible en toda biblioteca de ingenieros en sistemas, sin, necesariamente, estar involucrado en áreas de monitoreo. El abordaje de los temas que se tratan son desde las anécdota que el autor nos regala, ya con el cual avanzamos progresivamente en un modelo holístico, un diseño rico en variaciones y soluciones para conseguir el aprovechamiento de la información presentada.
No es trivial ni aburrido, como yo mismo pensaba, el involucrarse con estas tareas, al contrario, es lúdico por la exigencia del dominio de algunas disciplinas que hasta el momento no había explotado (estadística, por ejemplo). 
Lo rico de éstos textos es lo agnóstico ante cualquier tecnología, dependiendo ésta de cada lector por sus preferencias, además, contando con una idea clara de qué tipo de herramientas podemos acercarnos y las pruebas que deben de pasar.

Si desean leerlo, les comparto una liga para su utilización. Aunque lo ideal es que lo compren en físico para leerlo lejos de una pantall…

Patrones en AWK

Una de las funciones más poderosas de AWK es la búsqueda de patrones en archivos de texto, como logs; posteriormente accionar sobre esas coincidencias nos abre posibilidades que no tendríamos en caso de hacerlo a golpe de teclazos.

La estructura es muy sencilla:

awk '/expresion/ {acciones}' input

Bien, ahora que conocemos la estructura elemental, hagamos un ejercicio rápido.

awk script

#!/usr/bin/awk

/[0-9+]/ {print "Esta linea contiene digitos"}
/^$/ {print "Esta linea esta en blanco"}
/[a-zA-Z]+/ {print "Esta linea contiene caracteres"}


Entrada

AWK is a programming language designed for text processing and typically used as a data extraction and reporting tool. It is a standard feature of most Unix-like operating systems.

The AWK language is a data-driven scripting language consisting of a set of actions to be taken against streams of textual data – either run directly on files or used as part of a pipeline – for purposes of extracting or transforming…

Branching (condicional).

Solo es posible realizar este tipo de test cuando se realiza una substitución exitosa.

[address]t[label]

Si no se especifica una etiqueta, cuando se cumpla la condición será enviado al final del script.

Escenario

Queremos hacer el remplazo de un carácter en todas las líneas. Una vez que se realice, pasamos a la siguiente.

La letra más utilizada en el alfabeto es la 'a'. Para efectos de demostración emplearemos el control de flujo (branch) en la substitución de ésta letra por XXX.

Entrada

Consult Section 3.1 in Owner and Operator
Guide for a description of the tape drivers
available on your system.
blank
Look in the Owner and Operator Guide shipped with your system.
blank
Two manuals are provided and including the Owner and
Operator Guide and the User Guide.
blank
The Owner and Operator Guide is shipped with your system.

Sed script

:again
   s/a/XXX/
   t again

Salida

[lyonn@mictlan 6]$ sed -f branching.sed multiline.txt
Consult Section 3.1 in Owner XXXnd OperXXXtor
Guide for XXX description o…

Architecting for scale

Imagen
Actualmente es difícil encontrar un arquitecto de soluciones que lleve a cabo su trabajo pensando en los inevitables fallos. Las grandes empresas nos han acostumbrado a la disponibilidad de sus aplicaciones en todo momento, siendo noticia cuando sale de operación. ¿Por qué solo las grandes empresas le dan esta importancia?.
Al final de la cadena comercial, una aplicación disponible se traduce en ingresos. Desde la confianza por parte del usuario para realizar transacciones en el sitio o como un self-service. Romper esta cadena tiene consecuencias que pocos saben o quieren enterarse, especialmente económicas.
Con este libro, pude darle forma a los años de trabajo con grandes y medianas empresas, en donde satisfacer las necesidades de las áreas comerciales es un dolor de cabeza, puesto que como ingenieros (por el tiempo encima) nos enfocamos en mitigar, y no en solucionar, los problemas derivados de los fallos.
Este libro permite concebir, desde el punto de vista administrativo e inge…

Redis en 5 minutos con Docker

Imagen
Los retos de las  personas que nos dedicamos a las áreas de infraestructura y/o soporte, son brindar una respuesta lo más rápido posible. Ésta puede relacionarse desde defectos en las aplicaciones en ecosistemas productivos, hasta evaluar un producto, su viabilidad y beneficios; apenas contando con un poco, o nada, de información al respecto.

    La contenerización de aplicaciones vino a dinamizar cualquier arquitectura y pruebas, entre otros muchos, y más importantes, beneficios. Hace algunos años, si querías contar con un ambiente de pruebas, sin pasar por la burocracia de creación de servidores virtuales (¡olvidate de los físicos!), tú mismo instalabas libvirt y hacías uso de un virtualizador gratuito o libre, la instalación del sistema operativo; en el mejor de los casos, lo evitabas vía una imagen ya construida, en el peor de los casos, debías instalar el SO desde cero.

    Con Docker (Vagrant, Dinamo, Runc, etc) ésto ha cambiado. Podemos disponer de pequeños, y aislados, en…

Branching

En Sed es posible crear flujos de control a través de etiquetas. Dependiendo de las necesidades que cada sysadmin tenga, la complejidad irá de menor a mayor. Hay una clase similar de condicional, la cual explicaremos en el siguiente post.


Forma general:
    [address]b[label]

Ejemplo
:top
    command1
    command2
    /pattern/btop
     command3



Siendo un poco más pedagógicos.
Vamos a pensar que estamos revisando un sencillo curriculum. al cual queremos hacerle algunas modificaciones.


CV

 Operating Systems
     Linux
     Solaris
     FreeBSD
     NetBSD
     OpenBSD
 Application Servers
     JBoss 6
     JBoss 7
El primer script de Sed solo hace una modificación y sale.


#!/bin/sed -f

/JBoss /{
s/JBoss/RedHat JBoss/
:subs
n
bsubs
}
~            



A continuación, cambiando la posición de la etiqueta, se realizan todas las substituciones y se sale del flujo.

#!/bin/sed -f

/JBoss /{
:subs
s/JBoss/RedHat JBoss/
n
bsubs
}

Sed script

Imagen
Durante mucho tiempo el uso que le di a Sed fue desde la misma línea de comando, invocando todo en una sola línea. Al principio esto fue fácil y poco común. Con el paso de los años, me he visto en la necesidad de elaborar, una y otra vez, las mismas sentencias con ligeros cambios. Hacerlo cada vez no era una opción. La mejor manera de preservar nuestras sentencias es con scripts, los cuales de sobra está decir, debemos ordenar periódicamente.
En Sed solo basta:
Crear un archivo de texto.Incluir un encabezado (opcional).Escribir las sentencias. No olvidar que es una buena práctica hacer algunos comentarios de los procedimientos que el script lleva a cabo.
Vim tiene soporte de colores y sintaxis para éstos casos.
#!/bin/sed -f

/coso/{
s/coso/cosasss/
}