Bird
Raised Fist0
Microservicessystem_design~10 mins

Dashboards (Grafana) in Microservices - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to specify the data source type in a Grafana dashboard JSON.

Microservices
{
  "datasources": [
    {
      "name": "MyDataSource",
      "type": "[1]"
    }
  ]
}
Drag options to blanks, or click blank then click option'
Amysql
Bprometheus
Cmongodb
Dredis
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing a database type like mysql or mongodb instead of a metrics data source.
2fill in blank
medium

Complete the code to set the panel type to display a time series graph in Grafana.

Microservices
{
  "panels": [
    {
      "type": "[1]",
      "title": "Service Latency"
    }
  ]
}
Drag options to blanks, or click blank then click option'
Astat
Btable
Ctext
Dgraph
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'table' or 'text' which do not show time series graphs.
3fill in blank
hard

Fix the error in the query expression to select the average response time metric.

Microservices
{
  "targets": [
    {
      "expr": "avg([1])"
    }
  ]
}
Drag options to blanks, or click blank then click option'
Aavg_response_time
BresponseTime
Cresponse_time_seconds
Dlatency_ms
Attempts:
3 left
💡 Hint
Common Mistakes
Using camelCase or incorrect metric names that Prometheus does not recognize.
4fill in blank
hard

Fill both blanks to create a dashboard variable that filters by service name using a regex.

Microservices
{
  "templating": {
    "list": [
      {
        "name": "service",
        "query": "label_values([1], service)",
        "regex": "/[2]/"
      }
    ]
  }
}
Drag options to blanks, or click blank then click option'
Aup
Bhttp_requests_total
C^auth.*
D.*prod$
Attempts:
3 left
💡 Hint
Common Mistakes
Using an incorrect metric name or wrong regex pattern.
5fill in blank
hard

Fill all three blanks to define a panel that shows the 95th percentile latency for a service.

Microservices
{
  "panels": [
    {
      "title": "95th Percentile Latency",
      "type": "graph",
      "targets": [
        {
          "expr": "histogram_quantile([1], sum(rate([2][5m])) by (le, [3]))"
        }
      ]
    }
  ]
}
Drag options to blanks, or click blank then click option'
A0.95
Brequest_latency_seconds_bucket
Cservice
Dinstance
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong quantile values or incorrect metric names.
Grouping by instance instead of service.

Practice

(1/5)
1. What is the main purpose of a Grafana dashboard in microservices monitoring?
easy
A. To visually display system data for easy monitoring
B. To write code for microservices
C. To store microservice source files
D. To deploy microservices automatically

Solution

  1. Step 1: Understand Grafana's role

    Grafana is a tool used to create dashboards that show data visually.
  2. Step 2: Connect purpose to microservices

    Dashboards help monitor microservices by showing their data clearly.
  3. Final Answer:

    To visually display system data for easy monitoring -> Option A
  4. Quick Check:

    Grafana dashboards = Visual monitoring [OK]
Hint: Dashboards show data visually to monitor systems fast [OK]
Common Mistakes:
  • Confusing dashboards with code editors
  • Thinking dashboards deploy services
  • Assuming dashboards store source code
2. Which of the following is the correct way to add a new panel in a Grafana dashboard?
easy
A. Write a new SQL query in the dashboard settings
B. Click the '+' icon and select 'Add Panel'
C. Restart the Grafana server
D. Edit the microservice code

Solution

  1. Step 1: Identify how to add panels in Grafana

    Grafana uses a '+' icon to add new panels visually.
  2. Step 2: Eliminate unrelated actions

    Writing SQL or restarting server does not add panels directly.
  3. Final Answer:

    Click the '+' icon and select 'Add Panel' -> Option B
  4. Quick Check:

    Add panel = '+' icon click [OK]
Hint: Use '+' icon to add panels quickly [OK]
Common Mistakes:
  • Trying to add panels by restarting Grafana
  • Confusing panel addition with code editing
  • Assuming SQL query alone adds panels
3. Given this Grafana query panel configuration:
SELECT mean("response_time") FROM "service_metrics" WHERE $timeFilter GROUP BY time($__interval) fill(null)
What will this panel display?
medium
A. List of all service names
B. Total number of requests received
C. Current CPU usage of the server
D. Average response time over time intervals

Solution

  1. Step 1: Analyze the SQL query

    The query calculates the mean (average) of "response_time" from "service_metrics" grouped by time intervals.
  2. Step 2: Understand the output meaning

    This means the panel shows average response time over time, not counts or other metrics.
  3. Final Answer:

    Average response time over time intervals -> Option D
  4. Quick Check:

    mean(response_time) = average response time [OK]
Hint: mean() shows average values in Grafana queries [OK]
Common Mistakes:
  • Confusing mean with total count
  • Assuming query lists service names
  • Thinking it shows CPU usage
4. You created a Grafana dashboard but the panels show 'No data'. What is the most likely cause?
medium
A. The data source is not connected or misconfigured
B. The dashboard theme is set to dark mode
C. The Grafana server needs a restart
D. The microservice code has a syntax error

Solution

  1. Step 1: Identify common reasons for 'No data'

    Panels show 'No data' usually when the data source is missing or wrong.
  2. Step 2: Exclude unrelated causes

    Theme or server restart rarely cause no data; code errors don't affect Grafana data directly.
  3. Final Answer:

    The data source is not connected or misconfigured -> Option A
  4. Quick Check:

    No data = data source issue [OK]
Hint: Check data source connection first if no data appears [OK]
Common Mistakes:
  • Restarting server unnecessarily
  • Changing theme expecting data fix
  • Blaming microservice code syntax
5. You want to create a Grafana dashboard that shows error rates for multiple microservices over the last 24 hours. Which steps should you follow?
hard
A. Use Grafana to deploy microservices and monitor logs
B. Write microservice code to log errors, then restart Grafana server
C. Connect data source, create a dashboard, add panels with queries filtering errors by service and time
D. Install Grafana plugins, then export dashboard JSON without queries

Solution

  1. Step 1: Connect the correct data source

    Grafana needs a data source with microservice metrics to query error rates.
  2. Step 2: Create dashboard and add panels with queries

    Panels should query error counts filtered by service name and last 24 hours.
  3. Step 3: Customize time range and filters

    Set time filter to last 24 hours and group by service for clear visualization.
  4. Final Answer:

    Connect data source, create a dashboard, add panels with queries filtering errors by service and time -> Option C
  5. Quick Check:

    Data source + queries + filters = dashboard [OK]
Hint: Always start with data source, then build queries in panels [OK]
Common Mistakes:
  • Skipping data source connection
  • Trying to deploy microservices via Grafana
  • Exporting dashboards without queries