---
title: "Set up Grafana monitoring | Grafana documentation"
description: "Jaeger traces emitted and propagation by Grafana"
---

# Set up Grafana monitoring

Grafana supports tracing.

Grafana can emit Jaeger or OpenTelemetry Protocol (OTLP) traces for its HTTP API endpoints and propagate Jaeger and [w3c Trace Context](https://www.w3.org/TR/trace-context/) trace information to compatible data sources. All HTTP endpoints are logged evenly (annotations, dashboard, tags, and so on). When a trace ID is propagated, it is reported with operation ‘HTTP /datasources/proxy/:id/\*’.

Refer to [Configuration’s OpenTelemetry section](../configure-grafana/#tracingopentelemetry) for a reference of tracing options available in Grafana.

## View Grafana internal metrics

Grafana collects some metrics about itself internally. Grafana supports pushing metrics to Graphite or exposing them to be scraped by Prometheus.

For more information about configuration options related to Grafana metrics, refer to [metrics](../configure-grafana/#metrics) and [metrics.graphite](../configure-grafana/#metricsgraphite) in [Configuration](../configure-grafana/).

### Available metrics

When enabled, Grafana exposes a number of metrics, including:

- Active Grafana instances
- Number of dashboards, users, and playlists
- HTTP status codes
- Requests by routing group
- Grafana active alerts
- Grafana performance

#### Native histogram format

Grafana exposes HTTP request metrics using native histograms for a more accurate representation of metric distributions. By default, both native histograms and classic histogram buckets are exposed for compatibility.

To reduce metric cardinality, you can disable classic histogram buckets and expose only native histograms by setting the following option in your configuration file:

![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```none
[metrics]
# Enable classic HTTP histogram buckets alongside native histograms
# Set to false to only expose native histogram format (reduces cardinality)
classic_http_histogram_enabled = false
```

### Pull metrics from Grafana into Prometheus

These instructions assume you have already added Prometheus as a data source in Grafana.

01. Enable Prometheus to scrape metrics from Grafana. In your configuration file (`grafana.ini` or `custom.ini` depending on your operating system) remove the semicolon to enable the following configuration options:
    
    ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
    
    ```none
    # Metrics available at HTTP URL /metrics and /metrics/plugins/:pluginId
    [metrics]
    # Disable / Enable internal metrics
    enabled           = true
    
    # Disable total stats (stat_totals_*) metrics to be generated
    disable_total_stats = false
    ```
02. (optional) If you want to require authorization to view the metrics endpoints, then uncomment and set the following options:
    
    ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
    
    ```none
    basic_auth_username =
    basic_auth_password =
    ```
03. Restart Grafana. Grafana now exposes metrics at http://localhost:3000/metrics.
04. Add the job to your prometheus.yml file. Example:
    
    ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
    
    ```none
    - job_name: 'grafana_metrics'
    
      scrape_interval: 15s
      scrape_timeout: 5s
    
      static_configs:
        - targets: ['localhost:3000']
    ```
05. Restart Prometheus. Your new job should appear on the Targets tab.
06. In Grafana, click **Connections** in the left-side menu.
07. Under your connections, click **Data Sources**.
08. Select the **Prometheus** data source.
09. Under the name of your data source, click **Dashboards**.
10. On the Dashboards tab, click **Import** in the *Grafana metrics* row to import the Grafana metrics dashboard. All scraped Grafana metrics are available in the dashboard.

### View Grafana metrics in Graphite

These instructions assume you have already added Graphite as a data source in Grafana.

1. Enable sending metrics to Graphite. In your configuration file (`grafana.ini` or `custom.ini` depending on your operating system) remove the semicolon to enable the following configuration options:
   
   ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```none
   # Metrics available at HTTP API Url /metrics
   [metrics]
   # Disable / Enable internal metrics
   enabled           = true
   
   # Disable total stats (stat_totals_*) metrics to be generated
   disable_total_stats = false
   ```
2. Enable \[metrics.graphite] options:
   
   ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```none
   # Send internal metrics to Graphite
   [metrics.graphite]
   # Enable by setting the address setting (ex localhost:2003)
   address = <hostname or ip>:<port#>
   prefix = prod.grafana.%(instance_name)s.
   ```
3. Restart Grafana. Grafana now exposes metrics at http://localhost:3000/metrics and sends them to the Graphite location you specified.

### Pull metrics from Grafana backend plugin into Prometheus

Any installed [backend plugin](/developers/plugin-tools/key-concepts/backend-plugins/) exposes a metrics endpoint through Grafana that you can configure Prometheus to scrape.

These instructions assume you have already added Prometheus as a data source in Grafana.

1. Enable Prometheus to scrape backend plugin metrics from Grafana. In your configuration file (`grafana.ini` or `custom.ini` depending on your operating system) remove the semicolon to enable the following configuration options:
   
   ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```none
   # Metrics available at HTTP URL /metrics and /metrics/plugins/:pluginId
   [metrics]
   # Disable / Enable internal metrics
   enabled           = true
   
   # Disable total stats (stat_totals_*) metrics to be generated
   disable_total_stats = false
   ```
2. (optional) If you want to require authorization to view the metrics endpoints, then uncomment and set the following options:
   
   ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```none
   basic_auth_username =
   basic_auth_password =
   ```
3. Restart Grafana. Grafana now exposes metrics at `http://localhost:3000/metrics/plugins/<plugin id>`, e.g. http://localhost:3000/metrics/plugins/grafana-github-datasource if you have the [Grafana GitHub datasource](/grafana/plugins/grafana-github-datasource/) installed.
4. Add the job to your prometheus.yml file. Example:
   
   ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```none
   - job_name: 'grafana_github_datasource'
   
     scrape_interval: 15s
     scrape_timeout: 5s
     metrics_path: /metrics/plugins/grafana-test-datasource
   
     static_configs:
       - targets: ['localhost:3000']
   ```
5. Restart Prometheus. Your new job should appear on the Targets tab.
6. In Grafana, hover your mouse over the **Configuration** (gear) icon on the left sidebar and then click **Data Sources**.
7. Select the **Prometheus** data source.
8. Import a Golang application metrics dashboard - for example [Go Processes](/grafana/dashboards/6671).
