0 - Entorno
- Hardware: MacBook Pro (13 pulgadas, 2019, cuatro puertos Thunderbolt 3)
- Software preinstalado: Docker for Mac
En este manual supondremos que tenemos listo un fichero de logs de alguna de nuestras aplicaciones.
1 - Localiza un fichero de log de tu aplicación
Nosotros usaremos un fichero situado en la siguiente ruta:
/Users/Yo/Desktop/elasticsearch/fichero.log
Que contiene unas cuantas trazas de log de una aplicación cualquiera:
Ahora instalaremos todos los servicios que necesitamos.
2 - Levanta Elasticsearch, Kibana y Grafana en Docker
- Usar el siguiente elasticsearch.yml personalizado, necesario para poder conectar luego desde Grafana (http.cors properties):
cluster.name: "docker-cluster" network.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*"
- Levantar 2 nodos de elasticsearch en vez de 3, por simplicidad.
version: '2.2' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 container_name: es01 environment: - node.name=es01 - cluster.name=es-docker-cluster - discovery.seed_hosts=es02 - cluster.initial_master_nodes=es01,es02 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - data01:/usr/share/elasticsearch/data - /Users/Yo/Desktop/elasticstack/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml ports: - 9200:9200 networks: - elastic es02: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 container_name: es02 environment: - node.name=es02 - cluster.name=es-docker-cluster - discovery.seed_hosts=es01 - cluster.initial_master_nodes=es01,es02 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - data02:/usr/share/elasticsearch/data - /Users/Yo/Desktop/elasticstack/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml networks: - elastic kib01: image: docker.elastic.co/kibana/kibana:7.14.0 container_name: kib01 ports: - 5601:5601 environment: ELASTICSEARCH_URL: http://es01:9200 ELASTICSEARCH_HOSTS: '["http://es01:9200","http://es02:9200"]' networks: - elastic volumes: data01: driver: local data02: driver: local networks: elastic: driver: bridge
Ahora podremos verificar que todo funciona:
- Elasticsearch estará corriendo en: http://localhost:9200/
- Kibana estará en: http://localhost:5601/
graf01: image: grafana/grafana container_name: graf01 ports: - 3000:3000 networks: - elastic
- Grafana estará disponible en: http://localhost:3000/
3 - Levantar Filebeat
Ahora instalaremos filebeat en nuestro PC, siguiendo el siguiente tutorial:
Por ejemplo en mac lanzaríamos los siguientes comandos:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.14.0-darwin-x86_64.tar.gz
tar xzvf filebeat-7.14.0-darwin-x86_64.tar.gz
cd filebeat-7.14.0-darwin-x86_64
vi filebeat.yml
Debemos editar el fichero 'filebeat.yml', para realizar las siguientes acciones:
- Habilitar el input type 'log' indicando el path donde tenemos los logs.
- Indicar IP y puerto de nuestro Kibana local.
- Indicar IP y puerto de nuestro Elasticsearch local.
Tendrá algo similar a lo siguiente:
filebeat.inputs:
- type: log
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /Users/Yo/Desktop/elasticsearch/*.log
#- c:\programdata\elasticsearch\logs\*.log
- type: filestream
# Change to true to enable this input configuration.
enabled: false
# Paths that should be crawled and fetched. Glob based paths.
paths:
#- /var/log/*.log
#- c:\programdata\elasticsearch\logs\*
# ============================== Filebeat modules ==============================
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
# ======================= Elasticsearch template setting =======================
setup.template.settings:
index.number_of_shards: 1
# =================================== Kibana ===================================
setup.kibana:
# Kibana Host
host: "localhost:5601"
# ================================== Outputs ===================================
# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["localhost:9200"]
# ================================= Processors =================================
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
Luego lanzaremos los siguientes comandos para configurar y arrancar filebeat.
./filebeat setup -e
./filebeat -e
./filebeat setup -e
./filebeat -e
En este momento Filebeat está levantado y enviando a Elasticsearch todo el contenido de los logs.
En este momento Filebeat está levantado y enviando a Elasticsearch todo el contenido de los logs.
4 - Comprobar que vemos los logs en Kibana
Ahora deberíamos ver nuestros logs cargados en Kibana.
Veremos que solo existe un Space llamado 'Default' y un índice llamado 'filebeat-*'
5 - Crea un datasource en Grafana
Ahora solo falta crear un Data source de tipo Elasticsearch, podemos seguir esta guía.
Aquí adjuntamos un pantallazo que resume las opciones marcadas para que el Data Source funcione:
Comentarios
Publicar un comentario