CarlosLlano / sd-exam2

Logs de httpd

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PARCIAL 2 SISTEMAS DISTRIBUIDOS

1.Consigne los comandos de linux necesarios para el aprovisionamiento de los servicios solicitados. En este punto no debe incluir archivos tipo Dockerfile solo se requiere que usted identifique los comandos o acciones que debe automatizar

CONTENEDOR ELASTICSEARCH

docker run -d --name=elastic elasticsearch

CONTENEDOR KIBANA

docker run -d --name=kibana --link elastic:elasticsearch -p 5601:5601 kibana

CONTENEDOR FLUENTD

Para que fluentd pueda comunicarse con elasticsearch es necesario instalar un plugin. Para ello se utiliza un archivo Dockerfile que instala este plugin sobre la imagen oficial de fluentd

FROM fluent/fluentd:v0.12
RUN ["gem", "install", "fluent-plugin-elasticsearch", "--no-rdoc", "--no-ri", "--version", "1.9.5"]

Para crear la imagen con el plugin:

docker build -t fluentd-elastic . 

Para crear el contenedor:

docker run --name=fluentd  --link elastic:elasticsearch -v /fluentd/conf:/fluentd/etc -e FLUENTD_CONF=fluent.conf fluentd-elastic

CONTENEDOR CON SERVICIO WEB

El servicio web utilizado es httpd.

docker run -d -p 80:80 --name=apache --log-driver=fluentd --log-opt fluentd-address=172.17.0.4:24224 --log-opt tag=httpd.access httpd

Para que este servicio se pueda comunicar con fluentd hay que especificar la ip del contenedor fluentd. En este caso, la ip era 172.17.0.4. Tambien se podria exponer el servicio del contenedor fluentd para que fuera accesible desde localhost. Este metodo es el utilizado en el docker-compose.

2.Escriba los archivos Dockerfile para cada uno de los servicios solicitados junto con los archivos fuente necesarios. Tenga en cuenta consultar buenas prácticas para la elaboración de archivos Dockerfile

Unicamente se utiliza un archivo Dockerfile para la creacion de la imagen de fluentd con el plugin de elasticsearch

FROM fluent/fluentd:v0.12
RUN ["gem", "install", "fluent-plugin-elasticsearch", "--no-rdoc", "--no-ri", "--version", "1.9.5"]

3.Escriba el archivo docker-compose.yml necesario para el despliegue de la infraestructura

version: '2'
services:
  web:
    image: httpd
    ports:
      - "80:80"
    links:
      - fluentd
    logging:
      driver: "fluentd"
      options:
        fluentd-address: localhost:24224
        tag: httpd.access

  fluentd:
    build: ./fluentd
    volumes:
      - ./fluentd/conf:/fluentd/etc
    links:
      - "elasticsearch"
    ports:
      - "24224:24224"
      - "24224:24224/udp"

  elasticsearch:
    image: elasticsearch

  kibana:
    image: kibana
    links:
      - "elasticsearch"
    ports:
      - "5601:5601"

4.Incluya evidencias que muestran el funcionamiento de lo solicitado

Para poner en funcionamiento se debe utilizar el siguiente comando:

docker-compose up -d

Primero se debe acceder al servicio de kibana expuesto en el puerto 5601 y crear un index para la visualizacion de los logs provenientes de fluentd.

index

Una vez hecho esto, se pueden visualizar los logs:

img1

img2

5.Documente algunos de los problemas encontrados y las acciones efectuadas para su solución al aprovisionar la infraestructura y aplicaciones

Este ejercicio fue realizado empleando docker for mac. Cuando se quizo crear el contenedor de fluentd por medio de comandos se obtenia el siguiente error:

ERROR:

error

CAUSA:

En docker for mac se puede compartir archivos que esten dentro de los siguientes directorios siempre y cuando se haga explicita la ruta completa:

causa

SOLUCION:

docker run --name=fluentd --link elastic:elasticsearch -v /Users/Carlos/Downloads/prueba/fluentd/conf/:/fluentd/etc -e FLUENTD_CONF=fluent.conf fluentd-elastic