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-signalr
as 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 server
Access 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: true
This 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 sign
Drasi 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