Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo instalar MongoDB en FreeBSD 10.1

marzo 4, 2020

 

Un artículo de Fluentd

Introducción

Como rollo contenedores de Docker en la producción, encontrará una creciente necesidad de persistir registros en un sitio menos efímeros que los envases. Cargador de muelle viene con un controlador de registro nativo para Fluentd, por lo que es fácil de recoger los troncos y encaminarlos en otro lugar, como Elasticsearch, para que pueda analizar los datos.

Fluentd es un colector de datos de código abierto diseñado para unificar la infraestructura de la explotación forestal. Trae los ingenieros de operaciones, ingenieros de aplicaciones, e ingenieros de datos entre sí por lo que es simple y escalable para recoger y registros de almacén.

Fluentd tiene cuatro características principales que lo hace apto para construir, tuberías de registro confiables limpios: registro unificado

  • con JSON: Fluentd intenta datos de la estructura como JSON tanto como sea posible. Esto permite Fluentd para unificar todas las facetas de procesamiento de datos de registro: recogida, filtración, amortiguación, y la salida de los registros a través de múltiples fuentes y destinos. El procesamiento de datos de bajada es mucho más fácil con JSON, ya que tiene suficiente estructura para ser accesible sin forzar esquemas rígidos.
  • enchufable Arquitectura: Fluentd tiene un sistema de plugins flexible que permite a la comunidad para extender su funcionalidad. Más de 300 plugins aportados por la comunidad conectan decenas de fuentes de datos a decenas de salidas de datos, la manipulación de los datos según sea necesario. Mediante el uso de plugins, puede hacer un mejor uso de los registros de inmediato.
  • mínimo Recursos requeridos: Un recolector de datos debe ser ligero para que se ejecute en una máquina cómodamente ocupado. Fluentd está escrito en una combinación de C y Ruby, y requiere un mínimo de recursos del sistema. Las carreras de instancia de vainilla en 30-40MB de la memoria y puede procesar 13.000 eventos / segundo / núcleo.
  • incorpora fiabilidad: La pérdida de datos nunca debe suceder. soportes Fluentd memoria- y basado en archivos de amortiguación para evitar la pérdida de datos entre nodos. Fluentd también es compatible con la conmutación por error robusto y puede ser configurado para alta disponibilidad.

En este tutorial, aprenderá cómo instalar y configurar Fluentd a los registros de cobro revertido desde contenedores acoplables. A continuación, transmitir los datos a otro recipiente corriendo Elasticsearch en el mismo servidor de Ubuntu 16.04 y consultar los registros.

Requisitos previos

Para completar este tutorial, necesitará lo siguiente: Una

  • 4 GB Ubuntu 16.04 servidor creado siguiendo el Ubuntu 16.04 guía de configuración inicial del servidor, incluyendo un usuario no root sudo y un firewall. Esto satisface los requisitos de memoria de Elasticsearch.
  • acoplable instalado en el servidor siguiendo Cómo instalar y Uso del estibador en Ubuntu 16.04. Asegúrese de configurar acoplable para ejecutarse como un usuario no root.

Paso 1 – Instalación de Fluentd

La forma más común de la instalación de Fluentd es a través del paquete td-agente. Tesoro de datos, el autor original de Fluentd, paquetes Fluentd con un tiempo de ejecución de Ruby autónomo por lo que no es necesario configurar un entorno de Ruby a ejecutar Fluentd. También proporcionan una secuencia de comandos para obtener el último paquete de TD-agente que configura un repositorio e instala el paquete para usted.

sesión en su servidor que el usuario no root:

ssh sammy@your_server_ip

  • ssh Sammy @ your_server_ip

Luego instalar td-agente mediante la secuencia de comandos proporcionada por el tesoro de datos. En primer lugar, descargar el script:

curl -L http:/oolbelt.treasuredata.com/sh/install-ubuntu-xenial-td-agent2.sh -o install-td-agent.sh

  • rizo -L http:/oolbelt.treasuredata.com/sh/install-ubuntu-xenial-td-agent2.sh -o install-td-agent.sh

Si desea auditar el guión, abrirlo con el editor de texto:

nano install-td-agent.sh

  • nano install-td-agent.sh

Una vez que se sienta cómodo con el contenido del script, ejecute el script para instalar td-agent:

sh install-td-agent.sh

  • sh install-td-agent.sh

Una vez finalizada la instalación, puesta en TD-agent:

sudo systemctl start td-agent

  • sudo inicio systemctl td-agente

Compruebe los registros para asegurarse de que se ha instalado correctamente:

tail /var/logd-agentd-agent.log

  • cola /var/logd-agentd-agent.log

Usted verá una salida similar a la siguiente:

Output port 8888
@type debug_agent
bind 127.0.0.1
port 24230


2016-12-02 19:45:31 +0000 [info]: listening fluent socket on 0.0.0.0:24224
2016-12-02 19:45:31 +0000 [info]: listening dRuby uri="druby://127.0.0.1:24230" object="Engine"

a continuación, instalar el plugin para Elasticsearch Fluentd usando el comando td-agente-joya:

sudo td-agent-gem install fluent-plugin-elasticsearch

  • sudo td-agente-gem install-plugin-fluidez elasticsearch

Nota: Alternativamente, Fluentd está disponible como una gema Ruby y se puede instalar con la gema instalar fluentd. Si ya ha configurado un entorno de Rubí, puede instalar Fluentd y la Elasticsearch plug-in con el comando joya:

gem install fluentd --no-rdoc --no-ri
gem install fluentd-plugin-elasticsearch --no-rdoc --no-ri

  • joya instalar fluentd –no-rdoc –no-ri
  • gem install-plugin-fluentd elasticsearch – sin rdoc –no-ri

Fluentd ahora está en marcha y funcionando con la configuración por defecto. A continuación, vamos a configurar Fluentd para que podamos escuchar los eventos Docker y entregarlos a una instancia Elasticsearch.

Paso 2 – Configuración Fluentd

Fluentd necesita saber dónde obtener la información desde, y donde para entregarlo. Para definir estas reglas en el archivo de configuración Fluentd situada en /etcd-agentd-agent.conf.

Abrir archivo en el editor de texto:

sudo nano /etcd-agentd-agent.conf

  • sudo nano /etcd-agentd-agent.conf

Eliminar el contenido del archivo. Vas a escribir sus propias reglas a partir de cero en este tutorial.

Se definen las fuentes de información en la sección fuente. Añadir esta configuración en el fichero:

@type forward
port 24224

Esto define como la fuente hacia adelante, que es el protocolo Fluentd que se ejecuta en la parte superior de TCP y serán utilizados por acoplable al enviar los registros a Fluentd.

Cuando los registros del registro vienen en ,, que tendrá algunos campos adicionales asociados, incluyendo el tiempo, etiqueta, mensaje, container_id, y algunos otros. Se utiliza la información en el campo _tag_ para decidir dónde Fluentd debe enviar esos datos. Esto se conoce como datos de enrutamiento .

Para configurar esto, definir una sección partido que coincide con el contenido de la etiqueta de campo y la ruta de manera apropiada. Añadir esta configuración en el fichero:


@type elasticsearch
logstash_format true
host 127.0.0.1
port 9200
flush_interval 5s

Esta regla dice que cada registro con una etiqueta con el prefijo ventana acoplable. será envía a Elasticsearch, que se ejecuta en 127.0.0.1 en el puerto 9200. El flush_interval dice Fluentd qué frecuencia se debe a registros Elasticsearch.

Para más detalles acerca de búfer y el lavado por favor refiérase a la sección de documentación búfer plugin de vista general.

Una vez que guardar el nuevo archivo de configuración, reinicie el servicio de TD-agente de modo que se apliquen los cambios:

sudo systemctl restart td-agent

  • sudo systemctl reinicio td-agente

Ahora que Fluentd está configurado correctamente para nuestros propósitos, vamos a instalar Elasticsearch a la captura nuestros registros de Fluentd.

Paso 3 – Inicio del Elasticsearch Container

Usaremos acoplable a ejecutar nuestra instancia de Elasticsearch, ya que es más rápido que la configuración de uno de nosotros mismos. Vamos a utilizar la imagen de Elasticsearch acoplable para crear nuestro contenedor. Para utilizar esta imagen, aumentar el valor de max_map_count en el host del estibador de la siguiente manera:

sudo sysctl -w vm.max_map_count=262144

  • sudo sysctl -w vm.max_map_count = 262144

A continuación, ejecute este comando para descargar la imagen Elasticsearch e iniciar el contenedor:

docker run -d -p 9200:9200 -p 9300:9300 elasticsearch

  • carrera ventana acoplable -d -p 9200: 9200 -p 9300: 9300 elasticsearch

la imagen se descarga y el contenedor Elasticsearch se iniciará. Asegúrese de que el recipiente está funcionando correctamente mediante la comprobación de los procesos Docker y buscando el contenedor:

docker ps

  • ventana acoplable ps

Debería ver una salida como ésta:

OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
76e96943491f elasticsearch "/docker-entrypoint.s" About a minute ago Up 51 seconds 0.0.0.0:9200->9200cp, 0.0.0.0:9300->9300cp gigantic_hawking

Si el recipiente no está en la lista, empezar de nuevo sin el conmutador -d por lo que las carreras de contenedores en el primer plano. Ejecutar el comando de ejecución ventana acoplable -p 9200: 9200 -p 9300: 9300 elasticsearch y buscar los mensajes de error específico. Los errores más probable es que se encontrará con problemas con no tener suficiente memoria del sistema, o que el valor max_map_count en el host del estibador es demasiado baja. Comprobar todos los pasos de este tutorial para asegurarse de que no se perdió nada y vuelve a intentarlo.

Ahora que Elasticsearch se está ejecutando en el contenedor, vamos a generar unos troncos y ingerirlos en Fluentd.

Paso 4 – generar registros de una acoplable Container

Con acoplable, se puede tratar registros como un flujo de datos a través de la salida estándar (stdout) e interfaces de error (stderr). Cuando se inicia una aplicación acoplable, simplemente instruir acoplable a volcar los registros utilizando el controlador de la tala Fluentd nativa. El servicio Fluentd recibirá entonces los registros y enviarlos a Elasticsearch.

probar esto iniciando un comando Bash dentro de un contenedor acoplable así:

docker run --log-driver=fluentd ubuntu /bin/echo 'Hello world'

  • ventana acoplable plazo –log-driver = fluentd ubuntu / bin / echo ‘Hola mundo’

Esto imprimirá el mundo el mensaje Hola a la salida estándar, pero también será capturado por el conductor del estibador Fluentd y entregado al servicio Fluentd configuró con anterioridad. Después de unos cinco segundos, los registros se vacían en Elasticsearch. Configuró este intervalo en la sección partido del archivo de configuración Fluentd.

Esto es suficiente para obtener los registros a Elasticsearch, pero puede que desee echar un vistazo a la documentación oficial para más detalles acerca de las opciones que puede utilizar con acoplable para gestionar el conductor Fluentd.

Por último, vamos a confirmar que Elasticsearch está recibiendo los eventos. Uso rizo para enviar una consulta a Elasticsearch:

curl -XGET 'http://localhost:9200/_all/_search?q=*'

  • rizo -XGET ‘http: // localhost: 9200 / _all / _search q = *’

La salida contendrá los eventos que se ven así:

{"took":2,"timed_out":false,"_shards":{"total":1,"successful":1,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"logstash-2016.12.02","_type":"fluentd","_id":"AVQwUi-UHBhoWtOFQKVx","_score":1.0,"_source":{"container_id":"d16af3ad3f0d361a1764e9a63c6de92d8d083dcc502cd904155e217f0297e525","container_name":"
ostalgic_torvalds","source":"stdout","log":"Hello world","@timestamp":"2016-12-02T14:59:26-06:00"}}]}}

Usted puede tener un buen número de eventos registrados dependiendo de su configuración. Un solo evento debe comenzar con { «tomó»: y al final con una marca de tiempo. También va a contener alguna información adicional asociada con el contenedor de la fuente. A medida que este resultado muestra, Elasticsearch está recibiendo datos de nuestro envase acoplable.

Conclusión

recogen registros de contenedores acoplables es sólo una manera para usar Fluentd. Muchos usuarios llegan a Fluentd para construir un gasoducto de registro que hace las dos cosas búsqueda de registros en tiempo real y almacenamiento a largo plazo. Esta arquitectura se aprovecha de la capacidad de copiar Fluentd arroyos y salida de ellos, datos de múltiples sistemas de almacenamiento. Por ejemplo, puede utilizar Elasticsearch de búsqueda en tiempo real, pero el uso de MongoDB o Hadoop para el análisis por lotes y el almacenamiento a largo plazo. aplicaciones

Web a producir una gran cantidad de registros, y que a menudo se formatean de forma arbitraria y se almacenan en el sistema de archivos local. Esto puede presentar problemas por dos razones. En primer lugar, los registros son difíciles de analizar mediante programación, lo que requiere una gran cantidad de expresiones regulares, y por lo tanto no son muy accesibles para aquellos que desean comprender el comportamiento del usuario a través del análisis estadístico, revisar los resultados de las pruebas A / B, o la realización de la detección del fraude.

En segundo lugar, los registros no son accesibles en tiempo real, porque los registros de texto son a granel cargado en los sistemas de almacenamiento. Peor aún, si el disco del servidor se corrompe a granel entre cargas, los registros se pierden o se dañen.

Fluentd resuelve ambos problemas al proporcionar bibliotecas registrador para varios lenguajes de programación con un API consistente. Cada registrador envía un registro que contiene la fecha y hora, una etiqueta, y un evento con formato JSON para Fluentd, como la que se vio en este tutorial. Hay bibliotecas registrador para Ruby, Node.js, Go, Python, Perl, PHP, Java y C ++. Esto permite a las aplicaciones “dispara y olvida”; el registrador envía los datos a Fluentd de forma asíncrona, que a su vez amortigua los registros antes de enviar a retirarse a los sistemas back-end.

Hay un montón de otras cosas útiles que puedes hacer con Fluentd y Elasticsearch. Usted puede encontrar los siguientes enlaces interesantes:

  • Unificado capa de registro para obtener más información sobre cómo funciona la capa de registro. operaciones
  • básico Elasticsearch para aprender más acerca de cómo trabajar con Elasticsearch.
  • Adición de un panel de control para que pueda visualizar sus registros.
  • Fluentd + Elasticsearch para Kubernetes por Satnam Singh, Kubernetes confirmador.