Export logs of usage insights

Note: Available in Grafana Enterprise v7.4+.

By exporting usage logs to Loki, you can directly query them and create dashboards of the information that matters to you most, such as dashboard errors, most active organizations, or your top-10 most-used queries.

Usage insights logs

Usage insights logs are JSON objects that represent certain user activities, such as:

  • A user opens a dashboard.
  • A query is sent to a data source.

Scope

A log is created every time a user opens a dashboard or when a query is sent to a data source in the dashboard view. A query that is performed via Explore does not generate a log.

Format

Logs of usage insights contain the following fields, where the fields followed by * are always available, and the others depend on the logged event:

Field nameTypeDescription
eventNamestringType of the event, which can be either data-request or dashboard-view.
folderNamestringName of the dashboard folder.
dashboardNamestringName of the dashboard where the event happened.
dashboardIdnumberID of the dashboard where the event happened.
datasourceNamestringName of the data source that was queried.
datasourceTypestringType of the data source that was queried. For example, prometheus, elasticsearch, or loki.
datasourceIdnumberID of the data source that was queried.
panelIdnumberID of the panel of the query.
panelNamestringName of the panel of the query.
errorstringError returned by the query.
durationnumberDuration of the query.
orgIdnumberID of the user’s organization.
orgNamestringName of the user’s organization.
timestampstringThe date and time that the request was made, in Coordinated Universal Time (UTC) in RFC3339 format.
tokenIdnumberID of the user’s authentication token.
usernamestringName of the Grafana user that made the request.
userIdnumberID of the Grafana user that made the request.

Configuration

The following procedure assumes that you have installed Loki. Refer to Install Loki.

To export your logs, enable the usage insights feature and configure an export location in the configuration file:

  1. [usage_insights.export]
  2. # Enable the usage insights export feature
  3. enabled = true
  4. # Storage type
  5. storage = loki
  6. [usage_insights.export.storage.loki]
  7. # Set the communication protocol to use with Loki (can be grpc or http)
  8. type = grpc
  9. # Set the address for writing logs to Loki (format must be host:port)
  10. url = localhost:9095
  11. # Defaults to true. If true, it establishes a secure connection to Loki
  12. tls = true

Visualize Loki usage insights in Grafana

Now that your logs are exported into Loki, you can build Grafana dashboards to understand your Grafana instance usage.

  1. Add Loki as a data source. Refer to Grafana fundamentals tutorial.
  2. Import one of the following dashboards:
  3. Play with usage insights to understand them:
    • In Explore, you can use the query {datasource="gdev-loki",kind="usage_insights"} to retrieve all logs related to your gdev-loki data source.
    • In a dashboard, you can build a table panel with the query topk(10, sum by (error) (count_over_time({kind="usage_insights", datasource="gdev-prometheus"} | json | error != "" [$__interval]))) to display the 10 most common errors your users see using the gdev-prometheus data source.
    • In a dashboard, you can build a graph panel with the queries sum by(host) (count_over_time({kind="usage_insights"} | json | eventName="data-request" | error != "" [$__interval])) and sum by(host) (count_over_time({kind="usage_insights"} | json | eventName="data-request" | error = "" [$__interval])) to show the evolution of the data request count over time. Using by (host) allows you to have more information for each Grafana server you have if you have set up Grafana for high availability.