Skip to main content
Version: 2.16.0

Logging to ElasticSearch (or any other destination)

This guide shows how to configure a Platformatic application to deliver logs to ElasticSearch or via any other supported transports. The logs will then be visualized via Kibana.

Create a platformatic application

Create a platformatic application using npx create-platformatic@latest.

Setup ElasticSearch and Kibana

If you are logging to ElasticSearch and visualizing with Kibana, you might want to set it up using Docker Compose for local testing.

Write the following as docker-compose.yml:

---
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.3.3
environment:
- discovery.type=single-node
# Elasticsearch 8.x has HTTPS and auth on by default. This option is
# needed to use HTTP and no auth (as used in the tests).
- xpack.security.enabled=false
container_name: elasticsearch
ports: ['9200:9200']

kibana:
image: docker.elastic.co/kibana/kibana:8.3.3
container_name: kibana
ports: ['5601:5601']
depends_on: ['elasticsearch']

Then, start ElasticSearch and Kibana with docker-compose -f docker-compose.yml up.

Install transport

npm i pino-elasticsearch

Configure Logger Transport

Configuring your Platformatic application to log to ElasticSearch is straightforward, you just have to configure it like the following:

{
...
"server": {
"hostname": "{PLT_SERVER_HOSTNAME}",
"port": "{PORT}",
"logger": {
"level": "{PLT_SERVER_LOGGER_LEVEL}",
"transport": {
"targets": [{
"target": "pino-elasticsearch",
"options": {
"node": "http://127.0.0.1:9200"
}
}, {
"target": "pino-pretty"
}]
}
}
}
}

This snippet can be applied either to the platformatic.runtime.json config for Platformatic Runtime applications, or as part of the application configuration for any other application.

This setup will allow you to log both to the terminal (TTY) and to ElasticSearch at the same time.

Start your server with platformatic start, and navigate across its API.

Configure Kibana

  1. Open http://localhost:5601 in your browser
  2. Click on the hamburger menu on top left, and then "Discover"

Kibana start page

  1. Click on the "Create Data View"

Create a Data View

  1. Write pino* as name and select time as timestamp field

Select an index

  1. Enjoy your logs

Browse logs