Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.
Using Loki in Grafana
BETA: Querying Loki data requires Grafana’s Explore section. Grafana v6.x comes with Explore enabled by default. In Grafana v5.3.x and v5.4.x. you need to enable Explore manually. Viewing Loki data in dashboard panels is not supported yet, but is being worked on.
Grafana ships with built-in support for Loki, Grafana’s log aggregation system. Just add it as a datasource and you are ready to query your log data in Explore.
Adding the data source to Grafana
- Open Grafana and make sure you are logged in.
- In the side menu under the
Configuration
link you should find a link namedData Sources
. - Click the
Add data source
button at the top. - Select
Loki
from the list of data sources.
NOTE: If you’re not seeing the
Data Sources
link in your side menu it means that your current user does not have theAdmin
role for the current organization.
Name | Description |
---|---|
Name | The datasource name. This is how you refer to the datasource in panels, queries, and Explore. |
Default | Default datasource means that it will be pre-selected for new panels. |
URL | The URL of the Loki instance, e.g., http://localhost:3100 |
Maximum lines | Upper limit for number of log lines returned by Loki (default is 1000). Decrease if your browser is sluggish when displaying logs in Explore. |
Querying Logs
Querying and displaying log data from Loki is available via Explore. Select the Loki data source, and then enter a log query to display your logs.
Viewing Loki data in dashboard panels is not supported yet, but is being worked on.
Log Queries
A log query consists of two parts: log stream selector, and a search expression. For performance reasons you need to start by choosing a log stream by selecting a log label.
The Logs Explorer (the Log labels
button) next to the query field shows a list of labels of available log streams. An alternative way to write a query is to use the query field’s autocomplete - you start by typing a left curly brace {
and the autocomplete menu will suggest a list of labels. Press the enter
key to execute the query.
Once the result is returned, the log panel shows a list of log rows and a bar chart where the x-axis shows the time and the y-axis shows the frequency/count.
Log Stream Selector
For the label part of the query expression, wrap it in curly braces {}
and then use the key value syntax for selecting labels. Multiple label expressions are separated by a comma:
{app="mysql",name="mysql-backup"}
The following label matching operators are currently supported:
=
exactly equal.!=
not equal.=~
regex-match.!~
do not regex-match.
Examples:
{name=~"mysql.+"}
{name!~"mysql.+"}
The same rules that apply for Prometheus Label Selectors apply for Loki Log Stream Selectors.
Another way to add a label selector, is in the table section, clicking on the Filter button beside a label will add the label to the query expression. This even works for multiple queries and will the label selector to each query.
Search Expression
After writing the Log Stream Selector, you can filter the results further by writing a search expression. The search expression can be just text or a regex expression.
Example queries:
{job="mysql"} error
{name="kafka"} tsdb-ops.*io:2003
{instance=~"kafka-[23]",name="kafka"} kafka.server:type=ReplicaManager
Templating
Template variables are not yet supported by Loki.
Annotations
Annotations are not yet supported by Loki.
Configure the Datasource with Provisioning
You can set up the datasource via config files with Grafana’s provisioning system. You can read more about how it works and all the settings you can set for datasources on the provisioning docs page
Here is an example:
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
url: http://localhost:3100
jsonData:
maxLines: 1000
Here’s another with basic auth:
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
url: http://localhost:3100
basicAuth: true
basicAuthUser: my_user
basicAuthPassword: test_password
jsonData:
maxLines: 1000