Managing Logs

Dynamic Log Levels

Pinot supports inspecting and modifying Log4J log levels dynamically in production environments through REST. This can often be helpful when debugging an issue that is transient in nature and restarting the server with new configurations files may alter the desired behavior.

Supported Operations

List All Loggers

GET /loggers

Sample Usage:

$ curl -X GET -H "accept: application/json" localhost:8000/loggers
["root","org.reflections","org.apache.pinot.tools.admin"]

Fetch Specific Logger

GET /loggers/{loggerName}

Sample Usage:

> curl -X GET -H "accept: application/json" localhost:8000/loggers/root
{"filter":null,"level":"INFO","name":"root"}

Set Logger Level

PUT /loggers/{loggerName}?level={level}

Sample Usage

$ curl -X PUT -H "accept: application/json" localhost:8000/loggers/root?level=ERROR
{"filter":null,"level":"ERROR","name":"root"}

Downloading Component Logs

Pinot supports downloading logs directly over HTTP in situations where the operator may not have access to the container, but has access to the rest endpoints.

If the operator has access to the Controller, they can download log files from any one of the other components.

Supported Operations

List Available Log Files

GET /loggers/files

Download a Log File

GET /loggers/download?filePath={filePath}

Remote Log APIs

These APIs are only supported on the Controller

List Log Files on All Instances

GET /loggers/instances

List Log Files on a Specific Instance

GET /loggers/instances/{instanceName}

Download Remote Log From Given Instance

GET /loggers/instances/{instanceName}/download?filePath={filePath}

Last updated