56 SECTIONS · 1353 TOPICS
Grafana Roadmap
Installing Grafana
- 1. Installing via Package Manager
- Example: Ubuntu Installation
- 2. Installing via Docker
- Example: Run Grafana with Docker
- Example: Run Grafana with persistent storage
- 3. Installing via Kubernetes
- Example: Deploy Grafana using Helm Chart
- 4. Installing from Binary
- Example: Starting Grafana Server
- 5. Installing on Windows
- Example: Installing via Windows Installer
- Installation Steps
- 6. Verifying Installation
- Example: Check Grafana version
- 7. Understanding Grafana Editions
- 8. Upgrading Grafana Versions
- Example: Upgrading via Package Manager
- 9. Installing Grafana Agent
- Example: Installing Grafana Agent on Linux
- Example: Docker Installation
- 10. Setting Up Grafana Cloud
- Example: Grafana Cloud Setup
Configuring Grafana Server
- 1. Editing grafana.ini File
- Example: Basic grafana.ini Configuration
- 2. Setting Server Options
- Example: Setting server options in grafana.ini
- 3. Configuring Protocol
- Example: Configure Protocol Settings
- 4. Setting Up Environment Variables
- Example: Setting Environment Variables in Docker
- Example: Setting Environment Variables in systemd Service File
- 5. Configuring Paths
- Example: Setting Custom Paths in grafana.ini
- 6. Setting Timezone and Locale
- Example: Setting Timezone and Locale in grafana.ini
- 7. Configuring Logging
- Example: Logging Configuration
- 8. Enabling Feature Toggles
- Example: Enabling Feature Toggles via Configuration File
- Example: Enabling Feature Toggles via Environment Variables
- 9. Setting Anonymous Access
- Example: Enable Anonymous Access
- 10. Configuring SMTP Settings
- Example: SMTP Configuration in grafana.ini
Configuring Database Backend
- 1. Using SQLite Database
- Example: SQLite Configuration in grafana.ini
- 2. Configuring MySQL Backend
- Example: MySQL Configuration in Grafana
- 3. Configuring PostgreSQL Backend
- Example: PostgreSQL Configuration in grafana.ini
- 4. Setting Database SSL Mode
- Example: Setting SSL Mode in grafana.ini
- 5. Configuring Connection Pool
- Example: Database Connection Pool Configuration
- 6. Setting Database Log Queries
- Example: Enable query logging in Grafana configuration
- 7. Running Database Migrations
- Example: Running Grafana Database Migrations
- Migration Process Overview
- 8. Backing Up Database
- Example: MySQL Backup Script
- Backup Process Workflow
- Backup Best Practices
- 9. Restoring Database Backups
- Example: Restore from SQL dump
- 10. Optimizing Database Performance
- Example: Database Connection Pool Configuration
- Performance Tuning Tips
Managing Data Sources
- 1. Adding Data Source via UI
- Example: Add Prometheus Data Source
- 2. Adding Data Source via Provisioning
- Example: Grafana Data Source Provisioning
- 3. Configuring Prometheus Data Source
- Example: Adding Prometheus Data Source via API
- 4. Configuring InfluxDB Data Source
- Example: InfluxDB Data Source Configuration
- 5. Configuring MySQL Data Source
- Example: MySQL Data Source Configuration
- 6. Configuring PostgreSQL Data Source
- Example: PostgreSQL Data Source Configuration
- 7. Testing Data Source Connection (Save & Test)
- Example: Save & Test Connection
- 8. Setting Default Data Source
- Example: Setting Default Data Source via API
- 9. Using Data Source Variables ($datasource)
- Example: Using $datasource in a Query
- 10. Configuring Data Source Proxy
- Example: Proxy Configuration
- 11. Managing Data Source Permissions
- Example: Assigning Permissions via API
Configuring Loki Data Source
- 1. Setting Loki URL and Authentication
- Example: Grafana Loki Data Source Configuration
- 2. Configuring Maximum Lines
- Example: Setting max_lines in Grafana
- 3. Setting Derived Fields
- Example: Extracting Log Fields
- 4. Configuring Timeout Settings
- Example: Timeout Configuration in Grafana
- 5. Using Custom Headers
- Example: Configuring Custom Headers in Grafana
- 6. Setting Alerting Integration
- Example: Alerting Configuration
- Alerting Integration Options
- 7. Configuring Multiple Loki Instances
- Example: Adding Multiple Loki Data Sources
- 8. Setting Label Browser Options
- Example: Loki Data Source Configuration with Label Browser
- 9. Configuring Query Patterns
- Example: Basic LogQL Query
- Example: Regex Filter in LogQL
- Example: Aggregation with LogQL
- 10. Testing Loki Connection
- Example: Test Loki connection via Grafana UI
Configuring Tempo Data Source
- 1. Setting Tempo URL and Authentication
- Example: Grafana Tempo Data Source Configuration
- 2. Configuring Trace to Logs
- Example: Tempo Data Source Configuration
- 3. Setting Trace to Metrics
- Example: Enabling Trace to Metrics in Tempo Configuration
- 4. Configuring Service Graph
- Example: Service Graph Configuration
- 5. Setting Search Tab Options
- Example: Tempo Search Configuration
- 6. Configuring Span Bar Options
- Example: Tempo Span Bar Configuration
- 7. Setting Node Graph Options
- Example: Node Graph Configuration
- 8. Configuring Trace Streaming
- Example: Tempo Data Source Configuration
- 9. Setting Exemplar Integration
- Example: Enable Exemplar Integration in Grafana
- 10. Testing Tempo Connection
- Example: Test Tempo Data Source Connection
Configuring Cloud Data Sources
- 1. Configuring AWS CloudWatch
- Example: Adding AWS CloudWatch Data Source
- 2. Setting CloudWatch Authentication
- Example: Using Access Key Authentication
- Example: Using Credentials File Authentication
- 3. Configuring Azure Monitor
- Example: Azure Monitor Data Source Configuration
- 4. Setting Azure Log Analytics
- Example: Azure Log Analytics Configuration
- 5. Configuring Google Cloud Monitoring
- Example: Adding Google Cloud Monitoring Data Source
- Summary of Steps to Configure Google Cloud Monitoring
- 6. Using GCP Service Account
- Example: Configuring GCP Data Source with Service Account
- 7. Configuring Cloud Data Source Variables
- Example: Query Variable
- Example: Text Box Variable
- 8. Setting Cross-Account Access
- Example: Configuring Cross-Account Access in Grafana
- 9. Configuring Cloud Query Timeouts
- Example: Setting Query Timeout in Grafana Configuration
- 10. Using Cloud Annotations
- Example: Prometheus Annotation Query
- Example: Loki Annotation Query
Using Correlations
- 1. Understanding Correlations
- Example: Correlation Query
- 2. Creating Correlations Between Data Sources
- Example: Creating a Correlation via API
- 3. Configuring Correlation Labels
- Example: Setting up Correlation Labels in a Query
- 4. Setting Correlation Transformations
- Example: Configuring URL Transformation
- 5. Using Logs to Traces Correlations
- Example: Log Entry with Trace ID
- Correlation Benefits
- 6. Using Traces to Logs Correlations
- Example: Correlating Logs with Traces in Grafana
- 7. Using Metrics to Traces Correlations
- Example: Configuring Metrics to Traces Correlation
- 8. Configuring Correlation Display
- Example: Configuring Correlation Display in Panel
- 9. Managing Correlations via API
- Example: Create Correlation via API
- Example: Update Correlation via API
- Example: Delete Correlation via API
- 10. Debugging Correlation Issues
- Example: Correlation ID in Logs
Creating and Managing Dashboards
- 1. Creating New Dashboard
- Example: Create a new dashboard from scratch
- Workflow: Creating a New Dashboard in Grafana
- 2. Saving Dashboard
- Example: Saving a Dashboard via API
- 3. Configuring Dashboard Settings
- Example: Setting Dashboard Timezone
- 4. Setting Dashboard Time Range
- Example: Setting Default Time Range
- 5. Adding Dashboard Links
- Example: Adding a link to an external documentation site
- Example: Adding a link to another dashboard
- 6. Managing Dashboard Versions
- Example: Version Control in Grafana
- Version Management Summary
- 7. Setting Dashboard Permissions
- Example: Setting Dashboard Permissions via API
- 8. Organizing with Folders
- Example: Creating a Folder via API
- Workflow: Organizing Dashboards in Folders
- Best Practices for Folder Organization
- 9. Using Dashboard Tags
- Example: Adding Tags to a Dashboard
- Tag Management Best Practices
- 10. Starring Favorite Dashboards
- Example: Star a Dashboard via UI
- Example: Unstar a Dashboard via UI
Importing and Exporting Dashboards
- 1. Importing Dashboard from JSON
- Example: Importing a dashboard from JSON
- 2. Importing Dashboard by ID
- Example: Importing Dashboard by ID
- 3. Exporting Dashboard as JSON
- Example: Exporting Dashboard as JSON
- 4. Sharing Dashboard Externally
- Example: Exporting Dashboard JSON
- 5. Exporting Dashboard for Provisioning
- Example: Exported Dashboard JSON
- 6. Using Dashboard Templates
- Example: Creating a Dashboard Template
- 7. Importing with Data Source Mapping
- Example: Mapping Data Sources During Import
- 8. Creating Dashboard Snapshots
- Example: Creating a Snapshot via API
- 9. Sharing Dashboard Snapshots
- Example: Create a Snapshot
- 10. Deleting Dashboard Snapshots
- Example: Delete a Dashboard Snapshot
Working with Panels
- 1. Adding Panel to Dashboard
- Example: Adding a new panel to a dashboard
- 2. Configuring Panel Title
- Example: Setting Panel Title
- 3. Adding Panel Description
- Example: Setting Panel Description
- 4. Selecting Visualization Type
- 5. Resizing Panels
- Example: Setting Fixed Panel Size
- 6. Positioning Panels
- Example: Setting Grid Position
- 7. Duplicating Panels
- Example: Duplicating a Panel with Modified Query
- 8. Setting Panel Data Source
- Example: Panel with Prometheus Data Source
- 9. Configuring Panel Time Override
- Example: Setting a Time Override
- 10. Using Panel Links
- Example: Dashboard Link Configuration
- Example: URL Link with Variables
- 11. Setting Panel Transparency
- Example: Setting Panel Transparency
Building Queries
- 1. Using Query Editor
- Example: Basic Query Construction
- Key Features of Query Editor
- 2. Adding Multiple Queries
- Example: Adding Multiple Queries in Grafana
- Multiple Query Use Cases
- 3. Setting Query Alias
- Example: Setting Query Alias in JSON
- 4. Configuring Min Interval
- Example: Setting minInterval in a query
- 5. Setting Max Data Points
- Example: Configuring maxDataPoints in a query
- 6. Using Query Variables (${variable} syntax)
- Example: Using Variables in PromQL
- Example: Variable in a Panel Query
- 7. Using Mixed Data Sources
- Example: Mixed Data Source Query
- 8. Hiding Queries
- Example: Hiding a Query in Grafana
- 9. Running Query Inspection
- Example: Inspecting a Query in Grafana
- Query Inspection Best Practices
- 10. Caching Query Results
- Example: Configuring Cache Timeout
Writing PromQL Queries
- 1. Using PromQL Selectors (metric, labels)
- Example: Basic Metric Selector
- Example: Label Matching
- Example: Regex Label Matching
- 2. Using Range Vectors ([5m], [1h])
- Example: Using [5m] for rate calculation
- Example: Using [1h] for increase calculation
- 3. Using Instant Vectors (current values)
- Example: Query current HTTP request count
- Example: Current CPU usage per instance
- 4. Applying Aggregation Operators
- Example: Using sum with grouping
- Example: Using avg with labels
- 5. Using rate() Function (counter metrics)
- Example: Calculating Request Rate
- 6. Using increase() Function (total increase)
- Example: Calculating total increase in HTTP requests
- 7. Using histogram_quantile() (percentile calculations)
- Example: Calculating 95th percentile latency
- Example: Using with labels
- Key Points
- 8. Using Label Matching (=, !=, =~, !~)
- Example: Using label matching in queries
- Example: Excluding specific job
- 9. Using Binary Operators (+, -, *, /)
- Example: Adding Metrics
- Example: Scalar Multiplication
- 10. Using Metric Browser (autocomplete)
- Example: Using Metric Browser
- 11. Using Recording Rules (pre-computed queries)
- Example: Define a recording rule
- 12. Using Exemplars (link to traces)
- Example: Querying exemplars in Grafana
Writing LogQL Queries
- 1. Using Stream Selectors ({app="nginx"})
- Example: Filtering logs by app label
- Example: Using regex matchers
- 2. Using Label Filters
- Example: Filtering by Label Value
- Example: Excluding Logs with Regex
- 3. Using Line Filters (|=, !=, |~, !~)
- Example: Filtering Logs by Error Messages
- Example: Excluding Specific Log Entries
- Example: Using Regex to Match Error Patterns
- Example: Excluding Successful Requests
- 4. Using json Parser (| json)
- Example: Parsing JSON logs
- 5. Using logfmt Parser (| logfmt)
- Example: Parsing logfmt logs
- 6. Using pattern Parser (| pattern)
- Example: Parsing log lines with pattern
- Key Features of pattern Parser
- 7. Using line_format Expression (| line_format)
- Example: Formatting Log Lines with line_format
- 8. Using label_format Expression (| label_format)
- Example: Renaming a Label
- Example: Transforming a Label Value
- 9. Using Metric Queries
- Example: Rate of HTTP Requests
- Example: Sum by Job
- Example: Quantile of Response Times
- 10. Using Aggregation Operators
- Example: Aggregating Logs by Job
- 11. Filtering by Log Level
- Example: Filter logs by error level
- Example: Filter logs by multiple levels
- 12. Using Detected Fields
- Example: Filtering Logs by Detected Fields
- Example: Grouping Logs by Detected Fields
Writing TraceQL Queries
- 1. Understanding TraceQL Syntax
- Example: Basic TraceQL Query
- Example: Filtering by Duration
- Example: Combining Filters
- 2. Using Span Selectors ({resource.service.name="api"})
- Example: Filter spans by service name
- 3. Filtering by Span Attributes
- Example: Filter by Span Name
- Example: Filter by HTTP Status Code
- Example: Filter by Service Name
- Example: Filter by Duration
- 4. Using Span Duration Filters
- Example: Filtering Long-Running Spans
- Example: Identifying Fast Spans
- 5. Using Status Filters
- Example: Filter by Status Code
- Example: Filter by Status Message
- 6. Using Structural Operators (>>, ~, &&)
- Example: Using > operator to navigate child spans
- Example: Using ~ operator to filter by name containing "user"
- Example: Combining conditions with &&
- 7. Using Aggregate Functions
- Example: Aggregating Trace Durations
- Example: Counting Traces by Service
- 8. Using rate() and count_over_time() Metrics
- Example: Using rate() to calculate request rate
- Example: Using count_over_time() to check data point frequency
- 9. Combining Multiple Span Conditions
- Example: Combining Conditions in TraceQL
- Example: Complex Attribute Filtering
- 10. Using TraceQL Editor
- Example: Basic TraceQL Query
- Example: Aggregating Spans by Duration
- Example: Filtering by Attribute Value
Writing SQL Queries
- 1. Writing Basic SELECT Queries
- Example: Basic SELECT Query
- 2. Using WHERE Clauses
- Example: Filtering Logs by Error Level and Time Range
- 3. Using JOIN Operations
- Example: Combining Data with JOINs
- 4. Using Time Macros ($__timeFilter, $__timeFrom)
- Example: Using Time Macros in a Query
- 5. Using Interval Macros ($__interval, $__interval_ms)
- Example: Using $__interval in a SQL Query
- Example: Using $__interval_ms in a SQL Query
- 6. Formatting as Time Series
- Example: Time Series Query
- 7. Formatting as Table
- Example: Using Table Format in SQL Query
- 8. Using Aggregate Functions
- 9. Using Window Functions
- Example: Calculating Running Totals
- Example: Ranking by Department
- 10. Handling NULL Values
- 11. Optimizing Query Performance
- Example: Using LIMIT to optimize results
- Example: Filtering early to reduce dataset size
- Key Tips for Query Optimization
- 12. Using Query Inspector
- Example: Inspecting a SQL Query in Grafana
- Key Features of Query Inspector
Applying Transformations
- 1. Using Reduce Transformation
- Example: Applying Sum Reduction
- 2. Using Filter by Name
- Example: Filter metrics containing "cpu"
- 3. Using Filter Data by Values
- Example: Filter Data by Value
- 4. Using Merge Transformation
- Example: Merging Query Results
- Example: Merging with Different Time Series
- 5. Using Join by Field
- Example: Joining Data Frames by Field
- 6. Using Add Field from Calculation
- Example: Add Field from Calculation
- 7. Using Organize Fields
- Example: Organize Fields in a Panel
- 8. Using Convert Field Type
- Example: Convert field to number
- Example: Convert field to string with unit
- 9. Using Group by Transformation
- Example: Grouping by a field in a time series
- 10. Using Series to Rows
- Example: Convert Series to Rows
- 11. Using Rows to Fields
- Example: Transforming Rows to Fields
- 12. Chaining Multiple Transformations
- Example: Chaining transformations in Grafana
Configuring Time Series Panels
- 1. Setting Graph Style
- Example: Configuring Graph Style
- 2. Configuring X-Axis
- Example: X-Axis Configuration
- 3. Configuring Y-Axis
- Example: Y-Axis Configuration
- 4. Setting Legend Options
- Example: Configuring Legend Position and Calculations
- 5. Configuring Tooltip
- Example: Tooltip Configuration
- 6. Setting Color Schemes
- Example: Applying Color Palette
- 7. Configuring Fill Opacity
- Example: Setting Fill Opacity in a Panel
- 8. Setting Line Width and Style
- Example: Configuring Line Width and Style
- 9. Using Stacking Mode
- Example: Stacking Mode Configuration
- 10. Configuring Null Value Handling
- Example: Setting nullPointMode to connected
- 11. Using Overrides
- Example: Override Series Color
- Example: Apply to All Panels
- 12. Setting Thresholds
- Example: Threshold Configuration in JSON
Configuring Stat Panels
- 1. Setting Value Options
- Example: Display Current Value
- 2. Configuring Color Mode
- Example: Value-Based Coloring
- 3. Setting Thresholds
- Example: Threshold Configuration
- 4. Using Value Mappings
- Example: Value Mapping
- 5. Configuring Unit Format
- Example: Unit Configuration
- 6. Setting Decimal Precision
- Example: Decimal Precision
- 7. Using Graph Mode
- Example: Graph Mode Configuration
- 8. Setting Text Mode
- Example: Text Mode Configuration
- 9. Configuring Text Size
- Example: Text Size Configuration
- 10. Using Color by Field
- Example: Color by Field Configuration
Configuring Gauge Panels
- 1. Setting Min and Max Values
- Example: Setting Min and Max Values
- 2. Configuring Gauge Orientation
- Example: Setting Gauge Orientation
- 3. Setting Show Threshold Labels
- Example: Enabling Threshold Labels
- 4. Configuring Show Threshold Markers
- Example: Enabling Threshold Markers
- 5. Using Value Mappings
- Example: Value Mappings Configuration
- 6. Setting Threshold Colors
- Example: Threshold Colors Configuration
- 7. Configuring Unit Format
- Example: Unit Format Configuration
- 8. Setting Decimal Precision
- Example: Decimal Precision Configuration
- 9. Using Text Mode
- Example: Text Mode Configuration
- 10. Configuring Gauge Size
- Example: Gauge Size Configuration
Creating Table Panels
- 1. Configuring Table Columns
- Example: Configuring a Column with Custom Display Name
- Example: Using Time Field with Custom Format
- 2. Setting Column Width
- Example: Configuring Column Widths
- 3. Using Cell Display Mode
- Example: Configuring Cell Display Mode
- 4. Adding Column Filters
- Example: Configuring a Column Filter
- 5. Configuring Cell Links
- Example: Basic Cell Link Configuration
- 6. Using Column Overrides
- Example: Override Column Display Name
- Example: Override Column Unit
- 7. Setting Table Footer
- Example: Configuring Table Footer
- 8. Enabling Pagination
- Example: Enabling Pagination in Table Panel
- 9. Configuring Sorting
- Example: Sorting by field
- 10. Using Value Mappings
- Example: Value Mapping Configuration
- 11. Enabling Cell Inspection
- Example: Enabling Cell Inspection
- 12. Using Nested Tables
- Example: Nested Table Configuration
Configuring Heatmap Panels
- 1. Configuring Data Format
- Example: Configuring Data Format in JSON
- 2. Setting Y-Axis Buckets
- Example: Y-Axis Bucket Configuration
- 3. Choosing Color Scheme
- Example: Using a Custom Color Palette
- 4. Configuring Cell Display
- Example: Cell Display Settings
- 5. Setting Legend Options
- Example: Configuring Legend Options
- 6. Configuring Tooltip
- Example: Tooltip Configuration
- 7. Setting Bucket Bound
- Example: Custom Bucket Bound
- 8. Using Exemplars
- Example: Enabling Exemplars in Heatmap Panel
- 9. Configuring Hide Zero Values
- Example: Hide Zero Values in Heatmap
- 10. Setting Y-Axis Decimals
- Example: Y-Axis Decimal Configuration
Configuring Bar Chart Panels
- 1. Setting Bar Orientation
- Example: Configuring Horizontal Bar Chart
- 2. Configuring Bar Grouping
- Example: Stacked Bar Chart Configuration
- Example: Grouped Bar Chart Configuration
- 3. Setting Legend Options
- Example: Configuring Legend Options
- 4. Configuring Tooltip Format
- Example: Tooltip Format Configuration
- 5. Setting Color by Series
- Example: Setting Series Colors
- 6. Using Value Display
- Example: Value Display Configuration
- 7. Configuring X-Axis Labels
- Example: Rotating X-Axis Labels
- 8. Setting Bar Width
- Example: Configuring Bar Width in JSON
- 9. Using Gradient Mode
- Example: Gradient Mode Configuration
- 10. Configuring Group Width
- Example: Setting Group Width to 0.7
Configuring Pie Chart Panels
- 1. Setting Chart Type
- Example: Panel Configuration
- 2. Configuring Legend Display
- Example: Configure Legend Position and Values
- 3. Setting Value Display
- Example: Configure Value Display in Pie Chart Panel
- 4. Configuring Label Display
- Example: Legend Configuration
- 5. Using Reduce Options
- Example: Reduce Options Configuration
- 6. Configuring Tooltip Content
- Example: Tooltip Configuration
- 7. Setting Color Scheme
- Example: Custom Color Scheme
- 8. Using Value Mappings
- Example: Value Mapping Configuration
- 9. Setting Pie Size
- Example: Configuring Pie Size
- 10. Configuring Donut Hole Size
- Example: Setting Donut Hole Size
Configuring Additional Visualizations
- 1. Creating Geomap Panels
- Example: Basic Geomap Panel Configuration
- 2. Configuring State Timeline
- Example: Enabling State Timeline
- 3. Using Status History
- Example: Enabling Status History
- 4. Creating Candlestick Charts
- Example: Candlestick Chart Configuration
- 5. Configuring Histogram Panels
- Example: Histogram Panel Configuration
- 6. Using Node Graph Panels
- Example: Node Graph Panel Configuration
- 7. Creating Trace View Panels
- Example: Trace View Panel Configuration
- 8. Using Canvas Panels
- Example: Basic Canvas Panel Configuration
- 9. Configuring News Panels
- Example: Adding a News Panel
- 10. Using Text Panels
- Example: Basic Text Panel Configuration
Creating Dashboard Variables
- 1. Creating Query Variables
- Example: Query Variable Configuration
- 2. Creating Custom Variables
- Example: Creating a Custom Query Variable
- Example: Creating a Constant Variable
- 3. Creating Constant Variables
- Example: Constant Variable in Dashboard JSON
- 4. Creating Interval Variables
- Example: Using Interval Variables in Queries
- 5. Creating Data Source Variables
- Example: Data Source Variable Configuration
- 6. Creating Ad Hoc Filters
- Example: Ad Hoc Filter Configuration
- Key Points
- 7. Creating Text Box Variables
- Example: Text Box Variable Configuration
- 8. Configuring Multi-Value Selection
- Example: Multi-Value Variable Configuration
- 9. Setting Variable Display Options
- Example: Setting Variable Display Options
- 10. Configuring Variable Refresh
- Example: Setting refresh interval for a variable
- 11. Setting Variable Sort Order
- Example: Setting Sort Order in Variable Definition
- 12. Using Variable Dependencies
- Example: Variable Dependency Setup
Using Variables in Queries
- 1. Referencing Variables (${variable})
- Example: Using Variables in SQL Query
- 2. Using Alternative Syntax ([[variable]])
- Example: Using Query Variables
- Example: Using Interval Variables
- 3. Using Multi-Value Format (${variable:pipe})
- Example: Using Multi-Value Variables in SQL Query
- 4. Using CSV Format (${variable:csv})
- Example: Using CSV in a Query
- 5. Using Regex Format (${variable:regex})
- Example: Regex Transformation
- 6. Using Percent Encode (${variable:percentencode})
- Example: Using Percent Encode in a URL
- 7. Using All Option
- Example: Using All Option in a Variable
- 8. Using Global Variables ($__interval, $__from)
- Example: Using $__interval in PromQL
- Example: Using $__from and $__to in SQL
- 9. Chaining Variables in Queries
- Example: Chaining Variables in a Dashboard
- Best Practices for Chaining Variables
- 10. Using Data Source Variable
- Example: Data Source Variable Configuration
Working with Annotations
- 1. Creating Manual Annotations
- Example: Creating a Manual Annotation via API
- 2. Creating Query-Based Annotations
- Example: Creating a Query-Based Annotation via API
- 3. Configuring Annotation Queries
- Example: Annotation Query Configuration
- 4. Setting Annotation Display
- Example: Annotation Configuration
- 5. Using Built-in Annotations
- Example: Dashboard Annotation Configuration
- 6. Filtering Annotations by Tags
- Example: Filtering Annotations by Tags
- 7. Creating Region Annotations
- Example: Creating a Region Annotation via API
- 8. Configuring Annotation Colors
- Example: Annotation Color Configuration
- 9. Setting Annotation Limit
- Example: Configuring Annotation Limits
- 10. Managing Annotations via API
- Example: Create Annotation
- Example: Retrieve Annotations
- Example: Update Annotation
- Example: Delete Annotation
Using Dashboard Rows
- 1. Adding Row Containers
- Example: Adding a Row Container
- 2. Naming Row Titles
- Example: Setting Row Title
- 3. Collapsing and Expanding Rows
- Example: Collapsing a Row
- 4. Moving Rows (drag and drop)
- Example: Reordering Rows
- 5. Using Repeating Rows
- Example: Repeating Rows by Environment
- 6. Deleting Rows
- Example: Deleting a Row via UI
- 7. Setting Row Height
- Example: Setting Row Height
- 8. Organizing Panels in Rows
- Example: Creating a Row with Panels
- 9. Using Row for Summary Metrics
- Example: Define a Summary Metrics Row
- 10. Copying Rows
- Example: Copying a Row in Grafana
Using Repeating Panels and Rows
- 1. Enabling Panel Repeat
- Example: Repeating a panel by a variable
- 2. Setting Repeat Direction
- Example: Configuring Repeat Direction
- 3. Configuring Max Per Row
- Example: Setting maxPerRow in dashboard JSON
- 4. Using Repeating Rows
- Example: Repeating Rows Based on Environment
- 5. Selecting Repeat Variable
- Example: Using a Data Source Variable
- 6. Handling Empty Repeat
- Example: Empty Repeat Handling
- 7. Combining Repeat with Templates
- Example: Using repeat variables in template variables
- Key Points
- 8. Styling Repeated Panels
- Example: Styling Repeated Panels with Thresholds
- 9. Limiting Repeat Count
- Example: Setting Max Repeat Count
- 10. Debugging Repeat Issues
- Example: Debugging repeated panel issues
Using Explore Mode
- 1. Opening Explore View
- Example: Opening Explore View via URL
- 2. Selecting Data Source
- Example: Selecting Prometheus Data Source
- 3. Running Ad-Hoc Queries
- Example: Running a Simple Ad-Hoc Query
- Example: Using Variables in Queries
- 4. Using Query History
- Example: Query History Entry
- 5. Setting Time Range
- Example: Setting Custom Time Range
- Example: Using Relative Time Range
- 6. Using Log Context
- Example: Setting up log context in Explore
- 7. Using Metrics Explorer
- Example: Querying a metric in Metrics Explorer
- Key Features of Metrics Explorer
- 8. Creating Panels from Explore
- Example: Creating a Graph Panel from Explore
- 9. Using Split View
- Example: Split view configuration
- Steps to enable split view
- 10. Using Live Tailing
- Example: Enable Live Tailing in Explore
- 11. Viewing Trace Details
- Example: Trace Details in Explore Mode
- 12. Using Query Inspector
- Example: Inspecting a Query
- Query Inspector Features
Using Library Panels
- 1. Creating Library Panel
- Example: Creating a Library Panel via API
- 2. Adding Library Panel to Dashboard
- Example: Adding a Library Panel to Dashboard
- 3. Unlinking Library Panel
- 4. Updating Library Panel
- Example: Updating Library Panel
- 5. Managing Library Panel Versions
- Example: Updating Library Panel Version
- 6. Setting Library Panel Permissions
- Example: Assigning Library Panel Permissions via API
- 7. Searching Library Panels
- Example: Search for Library Panels
- 8. Organizing Library Panels
- Example: Creating a Folder Structure
- Best Practices for Organizing Library Panels
- Workflow: Moving a Library Panel to a Folder
- 9. Exporting Library Panels
- Example: Exporting a Library Panel
- 10. Importing Library Panels
- Example: Importing a Library Panel via API
Implementing Playlists
- 1. Creating Playlists
- Example: Creating a Playlist via API
- 2. Adding Dashboards to Playlist
- Example: Adding a Dashboard to a Playlist
- 3. Setting Playlist Interval
- Example: Configure Playlist Interval
- 4. Starting Playlist
- Example: Creating a Playlist
- 5. Stopping Playlist
- Example: Stopping a Playlist via API
- 6. Editing Playlist
- Example: Update Playlist Interval
- 7. Sharing Playlist URL
- Example: Generate Shareable Playlist URL
- 8. Using Playlists for Kiosk Mode
- Example: Enabling Kiosk Mode via URL
- 9. Managing Playlists via API
- Example: Create a Playlist
- Example: Update Playlist Items
- 10. Setting Playlist Auto-Fit
- Example: Enabling Auto-Fit in Playlist Configuration
Using Grafana Reporting
- 1. Understanding Reporting
- Example: Creating a report configuration
- 2. Creating Reports
- Example: Create a report using Grafana UI
- 3. Scheduling Reports
- Example: Scheduling a Daily Report
- 4. Configuring Report Format
- Example: Setting Report Format to PNG
- 5. Setting Report Recipients
- Example: Email Report Recipients
- Example: Slack Report Recipients
- 6. Configuring Report Layout
- Example: Basic Report Layout Configuration
- 7. Setting Report Time Range
- Example: Setting Time Range in Report
- 8. Using Report Variables
- Example: Using Dashboard Name in Report
- 9. Managing Report Templates
- Example: Creating a Report Template
- 10. Viewing Report History
- Example: Fetching Report History
Implementing SLO Monitoring
- 1. Understanding Service Level Objectives
- Example: Defining an SLO in Grafana
- SLO Components Overview
- 2. Creating SLO Definitions
- Example: SLO Definition in JSON
- 3. Configuring SLI Queries
- Example: Configuring SLI Query in Grafana
- 4. Setting SLO Thresholds
- Example: Configuring SLO Thresholds in Grafana
- 5. Viewing SLO Status Dashboard
- Example: SLO Status Dashboard Layout
- 6. Configuring SLO Alerting
- Example: SLO Alert Rule Configuration
- 7. Using Burn Rate Alerts
- Example: Configuring Burn Rate Alert
- 8. Viewing Error Budget
- Example: Error Budget Calculation
- Key Metrics for Error Budget
- 9. Creating Multi-Window SLOs
- Example: Configuring Multi-Window SLOs in Grafana
- 10. Managing SLOs via API
- Example: Create an SLO via API
- Example: Update an SLO via API
Configuring Grafana Alerting
- 1. Understanding Unified Alerting
- Example: Creating an Alert Rule
- Key Concepts
- 2. Creating Alert Rules
- Example: Creating an Alert Rule via API
- 3. Defining Alert Queries
- Example: Defining a Prometheus Alert Query
- 4. Setting Alert Conditions
- Example: CPU Usage Alert
- 5. Configuring Evaluation Interval
- Example: Setting Evaluation Interval
- 6. Setting Pending Period
- Example: Configuring Pending Period in Grafana Configuration
- 7. Using Alert Expressions
- Example: Basic Alert Expression
- Example: Alert Expression with For Duration
- 8. Adding Alert Labels
- Example: Adding Labels to an Alert Rule
- 9. Adding Alert Annotations
- Example: Adding Alert Annotations via API
- 10. Setting No Data Handling
- Example: Configuring no_data_state in a dashboard
- 11. Setting Error Handling
- Example: Configuring Error Handling
- 12. Creating Alert Rule Groups
- Example: Creating an Alert Rule Group
Managing Alert Notifications
- 1. Creating Contact Points
- Example: Slack Contact Point Configuration
- 2. Configuring Email Notifications
- Example: Email Alert Configuration
- 3. Configuring Slack Notifications
- Example: Slack Notification Configuration
- 4. Configuring PagerDuty Notifications
- Example: PagerDuty Channel Configuration
- 5. Configuring Webhook Notifications
- Example: Webhook Configuration
- 6. Configuring Microsoft Teams
- Example: Microsoft Teams Webhook Configuration
- 7. Configuring OpsGenie Integration
- Example: OpsGenie Integration Configuration
- 8. Creating Notification Policies
- Example: Basic Notification Policy Configuration
- Example: Sub-route for Critical Alerts
- 9. Using Label Matchers
- Example: Matching Alerts by Labels
- 10. Setting Notification Grouping
- Example: Alertmanager Configuration
- 11. Configuring Repeat Interval
- Example: Setting repeat interval in alert rule
- 12. Testing Contact Points
- Example: Testing Email Contact Point
Using Silence and Mute Timings
- 1. Creating Silences
- Example: Create a silence via API
- 2. Setting Silence Duration
- Example: Silence with Duration
- 3. Matching Silences to Alerts
- Example: Creating a Silence
- 4. Viewing Active Silences
- Example: Fetching Active Silences via API
- 5. Editing Silences
- Example: Update Silence Duration
- 6. Expiring Silences
- Example: Setting Silence Expiry
- 7. Creating Mute Timings
- Example: Creating a mute timing for weekend maintenance
- 8. Configuring Mute Time Intervals
- Example: Mute Time Interval Configuration
- 9. Applying Mute Timings to Policies
- Example: Mute Time Intervals in Alerting Policy
- 10. Managing Silences via API
- Example: Create a Silence via API
- Example: List Active Silences
- Example: Delete a Silence
Implementing Alerting Best Practices
- 1. Designing Alert Thresholds
- Example: Setting a Dynamic Threshold Alert
- Best Practices for Threshold Design
- 2. Using Alert Grouping
- Example: Alert Grouping Configuration
- 3. Creating Alert Dependencies
- Example: Defining an Alert Dependency
- 4. Writing Runbooks
- Example: Runbook Structure
- 5. Using Labels Effectively
- Example: Labeling for Alerting
- 6. Testing Alerts Before Production
- Example: Alert Rule Test
- Testing Workflow
- Testing vs Production Alerting
- 7. Setting Appropriate Intervals
- Example: Alert Rule with Custom Interval
- 8. Using Multi-Dimensional Alerting
- Example: Alert Rule with Multiple Dimensions
- 9. Monitoring Alert Manager Health
- Example: Check Alertmanager Health
- Example: List Active Silences
- 10. Documenting Alert Policies
- Example: Alert Policy Documentation
- Best Practices for Alert Policy Documentation
Integrating Grafana OnCall
- 1. Understanding Grafana OnCall
- Example: Alert Configuration in Grafana
- 2. Connecting Grafana to OnCall
- Example: OnCall Integration Configuration
- 3. Configuring Escalation Chains
- Example: Basic Escalation Chain Configuration
- Example: Escalation with Repeat
- Escalation Chain Summary
- 4. Setting Up Schedules
- Example: Creating a Basic Schedule
- 5. Configuring Alert Routes
- Example: Basic Route Configuration
- 6. Using Alert Grouping
- Example: Alert Grouping Configuration
- 7. Managing Incidents
- Example: Create Incident
- Example: Update Incident Status
- Incident Lifecycle
- 8. Configuring Mobile App
- Example: Configure Mobile App Settings
- 9. Using Slack Integration
- Example: Configure Slack Integration
- Slack Integration Capabilities
- 10. Viewing Insights and Metrics
- Example: Viewing Alert Metrics in Grafana
- Key Metrics Overview
Managing Users
- 1. Creating Users
- Example: Create User via API
- 2. Setting User Roles
- Example: Assigning a Role to a User via API
- 3. Managing User Permissions
- Example: Assigning User Permissions via API
- 4. Configuring User Preferences
- Example: Setting User Preferences via API
- 5. Disabling User Accounts
- Example: Disable User via API
- 6. Deleting Users
- Example: Delete User via API
- 7. Viewing User Activity
- Example: User Activity Query
- 8. Managing User Sessions
- Example: Configuring Session Timeout
- Session Management Best Practices
- 9. Setting User Quotas
- Example: Setting User Quotas in Grafana Configuration
- 10. Using User API
- Example: Create a new user
- Example: Update user role
Managing Teams
- 1. Creating Teams
- Example: Create Team via API
- 2. Adding Users to Teams
- Example: Adding Users to a Team via API
- 3. Setting Team Roles
- Example: Assigning a Team Role via API
- 4. Configuring Team Permissions
- Example: Setting Team Permissions via API
- 5. Using Team Sync
- Example: Configure LDAP Team Sync
- 6. Setting Team Preferences
- Example: Setting Team Preferences via API
- 7. Managing Team Dashboards
- Example: Creating a Team Dashboard
- Key Features of Team Dashboards
- 8. Using Team Variables
- Example: Team Variable in Dashboard
- 9. Deleting Teams
- Example: Delete a Team
- 10. Using Team API
- Example: Create a new team
- Example: Get team details
- Example: Update team permissions
Using Service Accounts
- 1. Creating Service Accounts
- Example: Create Service Account via API
- 2. Generating Service Account Tokens
- Example: Generate Service Account Token via API
- 3. Setting Service Account Roles
- Example: Assigning Admin Role to Service Account
- 4. Managing Token Expiration
- Example: Setting Token Expiration
- 5. Rotating Service Account Tokens
- Example: Rotating Service Account Token
- 6. Revoking Service Account Tokens
- Example: Revoke a Service Account Token via API
- 7. Migrating from API Keys
- Example: Migrating API Key to Service Account
- 8. Using Service Accounts for Automation
- Example: Create Service Account Token
- Example: Use Service Account Token in Automation Script
- 9. Auditing Service Account Usage
- Example: Fetching Service Account Usage Logs
- Key Points for Auditing Service Accounts
- 10. Setting Service Account Permissions
- Example: Assigning Permissions via API
Configuring Authentication
- 1. Setting Up Basic Authentication
- Example: Basic Auth Configuration
- 2. Configuring LDAP Authentication
- Example: LDAP Configuration File
- 3. Setting Up OAuth
- Example: Grafana Configuration
- 4. Configuring SAML Authentication
- Example: SAML Configuration in grafana.ini
- 5. Using Generic OAuth
- Example: Generic OAuth Configuration
- 6. Setting Up Auth Proxy
- Example: Auth Proxy Configuration
- 7. Configuring JWT Authentication
- Example: JWT Configuration in grafana.ini
- 8. Enabling Auto-Assign Roles
- Example: Auto-Assign Roles Configuration
- 9. Configuring Login Methods
- Example: Enabling OAuth with GitHub
- 10. Using Multi-Org Support
- Example: Enabling Multi-Org Support
- Key Features of Multi-Org Support
Working with Organizations
- 1. Creating Organizations
- Example: Creating an Organization via API
- 2. Switching Between Organizations
- Example: Switching Organization via API
- 3. Setting Organization Preferences
- Example: Setting Theme Preference via API
- 4. Managing Organization Users
- Example: Adding a User to an Organization
- Example: Updating User Role
- Example: Removing a User from Organization
- 5. Setting Organization Quotas
- Example: Setting Organization Quotas via Config File
- 6. Configuring Default Organization
- Example: Setting Default Organization via Config
- 7. Transferring Resources Between Orgs
- Example: Transferring a Dashboard via API
- Example: Re-importing Dashboard to New Org
- 8. Using Organization API
- Example: Get Current Organization Info
- Example: Update Organization Name
- Example: Add User to Organization
- 9. Setting Organization Address
- Example: Setting Organization Address via API
- 10. Isolating Data Between Organizations
- Example: Creating a new organization
Using Role-Based Access Control
- 1. Understanding RBAC
- Example: Assigning a Role to a User
- 2. Creating Custom Roles
- Example: Creating a Custom Role via API
- 3. Assigning Roles to Users
- Example: Assigning Admin Role via API
- 4. Assigning Roles to Teams
- Example: Assigning Role via API
- 5. Configuring Role Permissions
- Example: Assigning Permissions to a Role
- 6. Using Built-in Roles
- Example: Assigning a built-in role to a user
- 7. Setting Folder Permissions
- Example: Assigning Folder Permissions via API
- 8. Setting Data Source Permissions
- Example: Assigning Data Source Permissions via API
- 9. Using Role Inheritance
- Example: Defining a Role with Inheritance
- 10. Auditing Role Assignments
- Example: Querying Role Assignment Logs
Using Grafana Provisioning
- 1. Understanding Provisioning Structure
- Example: Dashboard Provisioning Configuration
- Example: Data Source Provisioning Configuration
- 2. Provisioning Data Sources
- Example: Provisioning a Prometheus Data Source
- Example: Provisioning a Loki Data Source
- 3. Provisioning Dashboards
- Example: Provisioning a Dashboard
- 4. Provisioning Alert Rules
- Example: Alert Rule Configuration
- 5. Provisioning Contact Points
- Example: Email Contact Point Configuration
- 6. Provisioning Notification Policies
- Example: Basic Notification Policy
- Example: Notification Policy with Matchers
- 7. Using Environment Variables (${VAR} syntax)
- Example: Environment Variable in Config
- 8. Setting Provisioning Paths
- Example: Provisioning Directory Structure
- 9. Enabling Auto-Update
- Example: Enabling Auto-Update in grafana.ini
- 10. Provisioning Plugins
- Example: Provisioning a Plugin
Working with Grafana API
- 1. Authenticating API Requests
- Example: Using API Key
- Example: Update an existing dashboard
- 3. Using Data Source API
- Example: Create a new data source
- Example: Update data source configuration
- 4. Using User API
- Example: Create a new user
- Example: Update user permissions
- 5. Using Organization API
- Example: Get Current Organization Details
- Example: Update Organization Name
- Example: Add User to Organization
- 6. Using Search API
- Example: Search for dashboards containing "prod"
- Example: Search in specific folders
- 7. Using Annotation API
- Example: Create Annotation
- Example: Fetch Annotations
- 8. Using Alert API
- Example: Create an Alert Rule
- Example: Retrieve Alert Rules
- 9. Using Snapshot API
- Example: Create a Snapshot
- 10. Using Health API
- Example: Check Grafana Health
- Example: Health Response
- 11. Using Folder API
- Example: Create a new folder
- Example: Get all folders
- Example: Update folder title
- 12. Handling API Errors
- Example: Error Handling in JavaScript
Managing Plugins
- 1. Installing Plugins via CLI
- Example: Install a plugin via CLI
- Example: Install a specific version of a plugin
- 2. Installing Plugins via UI
- Example: Installing a Plugin via Grafana UI
- 3. Installing Unsigned Plugins
- Example: Enabling Unsigned Plugin Installation
- Security Considerations
- 4. Updating Plugins
- Example: Update Plugin via CLI
- Example: Update All Plugins
- 5. Removing Plugins
- Example: Removing a Plugin
- 6. Configuring Plugin Settings
- Example: Enabling a Plugin via Configuration
- 7. Using Panel Plugins
- Example: Adding a Graph Panel
- Panel Plugin Usage Summary
- 8. Using Data Source Plugins
- Example: Configuring a MySQL Data Source
- 9. Using App Plugins
- Example: Installing an App Plugin via CLI
- Example: Enabling an App Plugin in Grafana
- Key Points About App Plugins
- 10. Managing Plugin Permissions
- Example: Configure Plugin Permissions via API
Creating Custom Plugins
- 1. Setting Up Plugin Development (@grafana/create-plugin)
- Example: Initialize a new Grafana plugin
- 2. Creating Panel Plugins
- Example: Basic Panel Plugin Structure
- Example: Panel Component
- 3. Creating Data Source Plugins
- Example: Plugin Configuration
- 3. Plugin Structure
- Example: Basic Plugin Structure
- 3. Data Source Implementation
- Example: Query Method
- 3. Configuration Options
- Example: Configuration in Plugin JSON
- 4. Creating App Plugins
- Example: Plugin Configuration
- Example: App Plugin Entry Point
- Key Features of App Plugins
- 5. Implementing Plugin Options
- Example: Plugin Configuration
- 6. Using Grafana UI Library
- Example: Using Button Component
- Example: Using Card Component
- 7. Using Plugin Data API
- Example: Querying Data
- Example: Annotation Query
- Example: Metric Find Query
- 8. Testing Plugins Locally
- Example: Plugin Development Setup
- Testing Workflow Summary
- 9. Building Plugins
- Example: Basic Plugin Structure
- Example: Panel Plugin Component
- Example: Datasource Plugin
- Plugin Development Workflow
- 10. Signing Plugins
- Example: Signing a Plugin
Using Grafana CLI
- 1. Managing Plugins
- Example: Install a specific plugin version
- Example: List all plugins including disabled ones
- 2. Resetting Admin Password
- Example: Reset Admin Password
- 3. Managing Users
- Example: Create a new user
- Example: Update user role
- 4. Running Diagnostics
- Example: Running diagnostics with JSON output
- 5. Setting Config Overrides (--config flag)
- Example: Override app URL using --config
- 6. Managing Data Sources
- Example: Add a new Prometheus data source
- Example: List all data sources
- 7. Migrating Data
- Example: Migrating Dashboards
- Example: Migrating Data Sources
- Migration Steps Overview
- 8. Using Debug Mode
- Example: Enable Debug Mode
- 9. Running Database Commands
- Example: Running database migrations
- Example: Checking database status
- 10. Viewing Grafana Version (--version)
- Example: Check Grafana CLI version
Optimizing Dashboard Performance
- 1. Reducing Query Load (limit time range)
- Example: Limiting Time Range in Query
- 2. Using Query Caching (data source cache)
- Example: Enabling Query Caching in a Data Source
- 3. Optimizing Panel Count (limit per dashboard)
- Example: Setting Panel Limit in Dashboard JSON
- 4. Using Shared Queries (query results sharing)
- Example: Creating a Shared Query
- 5. Setting Appropriate Refresh (avoid frequent)
- Example: Dashboard Refresh Configuration
- 6. Using Data Source Proxy Cache (TTL)
- Example: Configuring Data Source Proxy Cache
- 7. Minimizing Transformations (processing cost)
- Example: Reducing Transformation Overhead
- 8. Limiting Dashboard Variables (complexity)
- Example: Reducing Variable Complexity
- 9. Using Server-Side Rendering (images)
- Example: Configure server-side rendering
- 10. Profiling Dashboard Load (performance tab)
- Example: Dashboard Performance Profiling
- Key Metrics to Monitor
Securing Grafana
- 1. Enabling HTTPS
- Example: Grafana configuration for HTTPS
- 2. Configuring Security Headers
- Example: Configuring Security Headers in Grafana
- 3. Setting Cookie Security
- Example: Cookie Security Configuration
- 4. Enabling CSRF Protection
- Example: Enabling CSRF Protection in grafana.ini
- 5. Configuring CORS Settings
- Example: Grafana CORS Configuration
- 6. Using Data Source Proxy
- Example: Enabling Data Source Proxy in Grafana Configuration
- 7. Setting Password Requirements
- Example: Enabling Password Policy
- 8. Enabling Audit Logging
- Example: Enabling Audit Logging in Grafana Configuration
- 9. Restricting Embedding
- Example: Disable Embedding
- 10. Using Secret Management
- Example: Configuring HashiCorp Vault
- 11. Configuring Rate Limiting
- Example: Enabling Rate Limiting in grafana.ini
- 12. Setting Up Network Security
- Example: Configure Grafana to listen on a specific IP and port
- Example: Enable HTTPS and configure SSL certificates
- Example: Configure Grafana to use a reverse proxy with NGINX
- Network Security Best Practices
Setting Up High Availability
- 1. Using Shared Database
- Example: Grafana Configuration with Shared Database
- 2. Configuring Session Storage
- Example: Redis Session Configuration
- 3. Setting Up Load Balancer
- Example: Nginx Load Balancer Configuration
- Load Balancer Setup Summary
- 4. Using Sticky Sessions
- Example: Configuring Sticky Sessions in Grafana
- 5. Configuring Remote Rendering
- Example: Remote Rendering Configuration
- 6. Setting Up Alerting HA
- Example: Alerting HA Configuration
- 7. Using External Cache
- Example: Redis Cache Configuration
- 8. Configuring Shared Plugin Storage
- Example: Shared Plugin Storage Configuration
- Best Practices for Plugin Storage in HA
- 9. Setting Up Database Backup
- Example: Configure PostgreSQL Backup
- Backup Strategy Summary
- 10. Using Horizontal Scaling
- Example: Grafana HA Configuration with Multiple Instances
- Key Considerations for Horizontal Scaling
Monitoring Grafana
- 1. Using Built-in Metrics (/metrics endpoint)
- Example: Fetching metrics via cURL
- 2. Monitoring Dashboard Load Times
- Example: Configuring dashboard load timeout
- Dashboard Load Time Metrics
- 3. Monitoring Query Performance
- Example: Configuring Query Timeout
- 4. Tracking Alert Evaluation
- Example: Alert Evaluation Status
- 5. Monitoring Database Connections
- Example: Configuring DB Connection Monitoring
- 6. Tracking User Sessions
- Example: Session Configuration in grafana.ini
- Session Management Summary
- 7. Monitoring HTTP API Performance
- Example: Fetching HTTP Metrics
- Example: Updating HTTP Metrics Configuration
- 8. Using Health Check Endpoint (/api/health)
- Example: Check Grafana Health
- 9. Creating Self-Monitoring Dashboard
- Example: Basic self-monitoring dashboard setup
- 10. Setting Up Grafana Alerting
- Example: Create a new alert rule
- Alert Rule Configuration Summary
Troubleshooting Grafana
- 1. Debugging Data Source Connections
- Example: Testing Data Source Connection via CLI
- 2. Resolving Query Timeout Issues
- Example: Adjusting Query Timeout in Grafana Configuration
- Common Causes of Query Timeouts
- 3. Fixing Dashboard Load Errors
- Example: Panel Query Debugging
- 4. Debugging Alerts Not Firing
- Example: Alert Rule Syntax
- 5. Resolving Permission Errors
- Example: Assigning Role via API
- 6. Fixing Plugin Installation Errors
- Example: Plugin Installation Command
- 7. Debugging Variable Issues
- Example: Variable Query Debugging
- 8. Resolving CORS Errors
- Example: Configuring CORS in grafana.ini
- 9. Fixing High Memory Usage
- Example: Memory Usage Monitoring
- Example: Query Optimization
- Memory Optimization Tips
- 10. Debugging Authentication Issues
- Example: Check Grafana logs for auth errors
- 11. Resolving Rendering Issues
- Example: Check Data Source Configuration
- 12. Using Grafana Support Bundle
- Example: Generate and analyze support bundle
- Support Bundle Contents