apiVersion: 1

datasources:
  # Prometheus Datasource
  - name: prometheus
    type: prometheus
    uid: prometheus
    url: http://prometheus:9090
    access: proxy
    editable: true

  # Loki Datasource
  - name: loki
    type: loki
    uid: loki
    url: http://loki:3100
    access: proxy
    jsonData:
      derivedFields:
        # This creates a link from Loki logs to Tempo traces if there is a TraceID in the log
        - datasourceUid: tempo
          matcherRegex: "trace_id=(\\w+)"
          name: TraceID
          url: "$${__value.raw}"

  # Tempo Datasource
  - name: tempo
    type: tempo
    uid: tempo
    url: http://tempo:3200
    access: proxy
    jsonData:
      grpcUrl: tempo:9095
      nodeGraph:
        enabled: true
      search:
        hide: false
      # Link from Tempo traces back to Loki logs
      tracesToLogsV2:
        datasourceUid: loki
        tags: ['job', 'instance', 'pod', 'container']

      # Link from Tempo traces to Pyroscope Profiles! (NIEUW)
      tracesToProfiles:
        datasourceUid: pyroscope
        tags: ['service.name', 'service_name']
      
      # Link the Service Graphs to Prometheus
      serviceMap:
        datasourceUid: prometheus
        
      # tracesToMetrics is mandatory for the Span Rate in the trace list
      tracesToMetrics:
        datasourceUid: prometheus
        tags:
          - key: 'service.name'
            value: 'service'
          - key: 'job'
            value: 'job'

      # Enable TraceQL Metrics via Prometheus! 
      # This stops the 500 errors in Grafana Drilldown.
      traceqlMetrics:
        datasourceUid: prometheus      
      lokiSearch:
        datasourceUid: loki
        
    # Pyroscope Datasource
  - name: Pyroscope
    type: grafana-pyroscope-datasource
    access: proxy
    url: http://pyroscope:4040
    uid: pyroscope
