Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pino-opentelemetry-transport

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pino-opentelemetry-transport

OpenTelemetry transport for Pino

  • 0.2.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
33K
increased by63.32%
Maintainers
1
Weekly downloads
 
Created
Source

pino-opentelemetry-transport

npm version Build Status Known Vulnerabilities

js-standard-style

Pino transport for OpenTelemetry. Outputs logs in the OpenTelemetry Log Data Model and sends them to an OTLP logs collector.

Install

npm i pino-opentelemetry-transport

Configuration

The transport is using OpenTelemetry JS SDK, which can be configured using environment variables as described in the docs

The OTLP collector URL can be set by setting either of the following environment variables: OTEL_EXPORTER_OTLP_LOGS_ENDPOINT, OTEL_EXPORTER_OTLP_ENDPOINT

Usage

Minimalistic example

Make sure you have access to an OTEL collector.

To start quickly, create a minimal configuration for OTEL collector in the otel-collector-config.yaml file:

receivers:
  otlp:
    protocols:
      grpc:

exporters:
  file:
    path: ./etc/test-logs/otlp-logs.log
    flush_interval: 1

  logging:
    verbosity: basic
  
processors:
  batch:

service:
  pipelines:
    logs:
      receivers: [otlp]
      processors: []
      exporters: [logging, file]

The collector can then be ran with:

docker run --volume=$(pwd)/otel-collector-config.yaml:/etc/otel-collector-config.yaml:rw --volume=/tmp/test-logs:/etc/test-logs:rw -p 4317:4317 -d otel/opentelemetry-collector-contrib:latest --config=/etc/otel-collector-config.yaml

Create an index.js file containing

const pino = require('pino')

const transport = pino.transport({
  target: 'pino-opentelemetry-transport'
})

const logger = pino(transport)

transport.on('ready', () => {
  setInterval(() => {
    logger.info('test log')
  }, 1000)
})

Install Pino and pino-opentelemetry-transport

npm install pino pino-opentelemetry-transport

Run the service setting the OTEL_EXPORTER_OTLP_LOGS_ENDPOINT and OTEL_RESOURCE_ATTRIBUTES env vars

OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://localhost:4317 OTEL_RESOURCE_ATTRIBUTES="service.name=my-service,service.version=1.2.3" node index.js

Test the repo locally

Run the OTLP collector in a container

npm run docker-run

Run example.js

OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://localhost:4317 node example.js

Observe the logs

tail -f /tmp/test-logs/otlp-logs.log

Note that not all log entries will immediately be written to the otlp-logs.log file. The collector will flush to the disk eventually. The flush will be forced if the collector receives a kill signal.

Options

When using the transport, the following options can be used:

  • messageKey: The key of the log message to be used as the OpenTelemetry log entry Body. Optional, value msg used by default (like in Pino itself).
  • resourceAttributes: Object containing resource attributes.

License

MIT

FAQs

Package last updated on 03 Sep 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc