Escribiendo los últimos posts de mod_cluster estuve echando un vistazo a la web del proyecto y acabé dando con la imagen que tienen para montar mod_cluster en un contenedor docker. Básicamente es una imagen con un Apache y mod_cluster embebidos listos para su uso, lo que nos quita de tener que compilar el módulo o bajar los binarios como veníamos haciendo tradicionalmente.
Monitorización de uso y temperatura de CPU y gráficas Nvidia en Grafana
Con el recolector de métricas Collectd podemos obtener fácilmente datos relativos a consumo, frecuencia y temperatura de CPU. Estos datos los volcamos en InfluxDB para su posterior representación en Grafana tal y como vimos hace tiempo.
Por otra parte en cuanto a métricas de tarjetas gráficas Nvidia, Collectd no cuenta con un plugin nativo en estos momentos, pero podemos hacer uso del plugin exec para recopilar las métricas necesarias con ayuda de scripts adicionales hechos a medida.
Estado de la JVM: hilos, objetos en memoria y GC
Existen multitud de herramientas para poder revisar el estado de los objetos en memoria, threads y GC de una JVM. Algunas son simples funcionalidades que añadimos como opciones Java al iniciar una JVM mientras que otras son herramientas externas que nos permiten acceder a su estado interno para revisar distintos parámetros.
Enviando los logs de mod_security a Elasticsearch con Filebeat
Si queremos enviar los logs de mod_security con Filebeat, el principal problema es que tienen formato multilínea y para complicar algo más las cosas los logs se estructuran en diversas secciones (A-Audit Log Header, B-Request Headers, etc…) que, aunque nos dan diversa información sobre una transacción registrada, hacen que el parseo con grok sea bastante complejo. Afortunadamente mod_security permite generar los logs de auditoría en formato JSON, por lo que podemos enviar la información ya estructurada a nuestro stack ELK. Configuramos la siguiente directiva:
Ansible: usuario de conexión SSH y ejecución de Playbooks
A la hora de lanzar un playbook o simplemente utilizar un módulo de Ansible por línea de comandos debemos tener en cuenta que por una parte tenemos el usuario con el que conectamos por SSH con los nodos remotos y por otra el usuario que ejecuta las órdenes de Ansible en dichos nodos.
Administración de Docker Swarm con Portainer
Portainer nos proporciona una GUI web desde la que administrar un clúster de Docker Swarm: operatividad de contenedores (parada, reinicio, etc…), gestión de stacks, servicios, plantillas de imágenes, volúmenes para persistencia de datos…
En mi entorno parto de 4 nodos, 2 de ellos master y otros dos workers. Los 4 están configurados para poder servir peticiones de mis contenedores:
[root@docker-master1 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION olw40ii82gslxgfjtmy5h2ncr * docker-master1 Ready Active Leader 18.09.1 lvvjz6c4bfe4ez16kzkyuc31o docker-master2 Ready Active Reachable 18.09.1 q8em4kafthkm1phkuuab48eau docker-worker1 Ready Active 18.09.1 hb4ylcxtchc6kevimak7wxr9e docker-worker2 Ready Active 18.09.1