A Grafana data source plugin that enables real-time streaming of data changes from Drasi SignalR endpoints. Perfect for building live dashboards that update automatically as your data changes.
- Real-time Streaming: Live data updates through SignalR connections
 - Operation Support: Handle insert, update, delete, and control operations
 - Snapshot Loading: Load current data state on query initialization
 - Manual Reload: Reload snapshot functionality with progress indication
 - Error Handling: Comprehensive error reporting with user-friendly messages
 - Type Safety: Built with TypeScript for robust development
 - Easy Setup: Docker development environment included
 
- Grafana 8.0.0 or later
 - Drasi platform with SignalR endpoint
 - Node.js 18.x or later (for development)
 
- Download the latest release from GitHub Releases
 - Extract to your Grafana plugins directory
 - Enable 
drasi-signalras an unsigned plugin - Restart Grafana
 
# Clone the repository
git clone https://github.com/drasi-project/grafana-signalr.git
cd grafana-signalr
# Install dependencies
npm install
# Build the plugin
npm run build
# Start Grafana with Docker
npm run serverAccess Grafana at http://localhost:3002 (admin/admin)
- Navigate to Configuration β Data Sources
 - Click Add data source
 - Search for "Drasi SignalR" and select it
 - Configure the SignalR endpoint URL (e.g., 
http://localhost:8080/hub) - Click Save & Test
 
- Create a new dashboard or edit existing panel
 - Select "Drasi SignalR" as the data source
 - Configure query settings:
- Query ID: The identifier for your Drasi query
 - Load snapshot on start: Enable to get current data state
 
 - Click Apply
 
# Example query configuration
Query ID: "user-activity"
Load snapshot on start: trueThis will:
- Connect to your SignalR endpoint
 - Stream real-time changes for "user-activity" query
 - Load current data state when the panel initializes
 
You can add multiple queries to a single panel to combine different data streams.
- Node.js 18.x or later
 - npm or yarn
 - Docker (for testing environment)
 
# Install dependencies
npm install
# Start development mode (with hot reload)
npm run dev
# Run tests
npm test
# Run type checking
npm run typecheck
# Lint code
npm run lint# Unit tests
npm run test:ci
# End-to-end tests
npm run e2e
# Start test environment
docker-compose up --build# Production build
npm run build
# Sign plugin (requires GRAFANA_ACCESS_POLICY_TOKEN)
npm run signDrasi Platform β SignalR Endpoint β Plugin β Grafana Panel
- Insert (i): New data records
 - Update (u): Modified records (before/after states)
 - Delete (d): Removed records
 - Control (x): Control signals and metadata
 
The plugin includes comprehensive error handling:
- Network connection issues
 - Invalid query configurations
 - Data processing errors
 - User-friendly error messages in the UI
 
| Field | Type | Required | Description | 
|---|---|---|---|
| signalrUrl | string | Yes | SignalR endpoint URL | 
| Field | Type | Default | Description | 
|---|---|---|---|
| queryId | string | "" | Drasi query identifier | 
| snapshotOnStart | boolean | false | Load current data on start | 
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
 - Create a feature branch
 - Make your changes
 - Add tests
 - Submit a pull request
 
- Use TypeScript
 - Follow existing code patterns
 - Add tests for new features
 - Update documentation
 
This plugin is validated using the official Grafana plugin validator:
npx @grafana/plugin-validator@latest dist/- All connections use secure WebSocket protocols when possible
 - No sensitive data is stored in browser localStorage
 - Error messages don't expose sensitive system information
 
- Grafana 8.0.0+
 - Modern web browser with WebSocket support
 
- Node.js 18.x or later
 - npm 8.x or later
 - Docker (for testing environment)
 
Connection Failed
- Verify SignalR endpoint is accessible
 - Check network connectivity
 - Ensure CORS is configured properly
 
No Data Showing
- Verify Query ID exists in Drasi
 - Check browser console for errors
 - Ensure "Load snapshot on start" if you need current data
 
Plugin Not Loading
- Check Grafana logs for errors
 - Verify plugin is properly signed (for production)
 - Ensure Grafana version compatibility
 
Enable debug logging by setting:
DEBUG=* npm run dev- Check the Issues page
 - Review Drasi Documentation
 - Join our Community Discord
 
This project is licensed under the MIT License - see the LICENSE file for details.
- Grafana for the excellent plugin framework
 - Drasi Project for the reactive data platform
 - SignalR for real-time communication
 
- Support for custom authentication methods
 - Advanced filtering capabilities
 - Performance optimizations for high-volume streams
 - Additional visualization options
 - Integration with Grafana alerting
 
Made with β€οΈ by the Drasi Team