A step-by-step guide to set up monitoring for BrightSign players using Prometheus Node Exporter and Grafana.
This playground provides everything you need to:
- Enable and collect metrics from your BrightSign players
- Store these metrics in Prometheus
- Visualize the data in pre-configured Grafana dashboards
- A computer with internet access (macOS, Windows, or Linux)
- A BrightSign player running BOS 9.0.126 or later
- The player must be accessible on your local network
Docker is required to run the monitoring services. If you already have Docker installed, you can skip this step.
Option 1: Install Docker Desktop (Recommended for beginners)
- Visit Docker Desktop
- Download the installer for your operating system (macOS, Windows, or Linux)
- Run the installer and follow the on-screen instructions
- Start Docker Desktop after installation
Option 2: Install Docker Engine and Docker Compose separately
- Install Docker Engine for your OS
- Install Docker Compose
After installation, verify Docker is working by opening a terminal/command prompt and running:
docker --version
docker compose versionIf you prefer not to use Docker, you can manually install and run Prometheus and Grafana on your system.
- Download the latest Prometheus release for your OS from Prometheus Downloads.
- Extract the archive and move it to a desired directory.
- Edit the
prometheus.ymlfile and update thescrape_configssection with your BrightSign player’s IP address:- job_name: 'node_exporter' static_configs: - targets: ['YOUR_BRIGHTSIGN_IP:9100']
- Start Prometheus by running:
./prometheus --config.file=prometheus.yml
- Verify Prometheus is running by opening:
http://localhost:9090/targets
- Download Grafana from Grafana Downloads.
- Follow the installation steps for your OS.
- Start Grafana by running:
grafana-server
- Open a browser and navigate to:
http://localhost:3000 - Log in with default credentials (
admin/admin) and add Prometheus as a data source.
- In Grafana, go to “Dashboards” → “Import.”
- Upload the provided JSON file or enter the dashboard ID.
- Select Prometheus as the data source.
If you're viewing this on GitHub:
- Click the green "Code" button
- Select "Download ZIP"
- Extract the ZIP file to a location of your choice
Or using git (if installed):
git clone bs-playground-prometheusNodeExporter
cd bs-playground-prometheusNodeExporter- Access your BrightSign player's command shell (either via shell access, telnet, SSH, or the Diagnostics Web Server terminal in the registry tab of BA:connected or the local DWS UI)
- Run the following command in one of the suggested access points above to enable the Prometheus Node Exporter:
registry write networking prometheus-node-exporter-port 9100
- Reboot your BrightSign player:
reboot
-
Find the IP address of your BrightSign player on your local network. This can be seen when booting up the player without an SD card inserted.
-
In a web browser, navigate to
http://<your-brightsign-ip>:9100/metrics -
You should see a page of text data - this confirms the Node Exporter is running correctly
Alternatively, you can verify using curl in your terminal:
curl http://<your-brightsign-ip>:9100/metrics | head -10
This will show the first 10 lines of metrics data.
- Open the file
prometheus/prometheus.ymlin a text editor - Find the section under
scrape_configswithjob_name: 'node_exporter' - Replace the example IP
169.254.238.94with your BrightSign player's IP address:- job_name: 'node_exporter' static_configs: - targets: ['YOUR_BRIGHTSIGN_IP:9100'] labels: model: 'YOUR_BRIGHTSIGN_MODEL' # Optional: replace with your actual model
- Save the file
-
Open a terminal/command prompt
-
Navigate to the directory containing the
docker-compose.ymlfile -
Run the following command:
docker compose up -d
The
-dflag runs the containers in the background -
Verify Prometheus is running by opening your browser to:
http://localhost:9090/targetsYou should see your BrightSign player listed under the "node_exporter" job with a "State" of "UP".
You can also check via curl:
curl -s "http://localhost:9090/api/v1/targets" | grep "node_exporter"
-
Open your web browser and navigate to:
http://localhost:3000You can verify Grafana is running with curl:
curl -I http://localhost:3000
You should see "HTTP/1.1 200 OK" or a redirect to the login page.
-
Log in using the default credentials:
- Username:
admin - Password:
grafana(You can change these in thedocker-compose.ymlfile for better security)
- Username:
-
After logging in, click on "Home" in the left sidebar
-
Click on "Dashboards"
-
Navigate to "Default" → "Full Node Exporter" to see your BrightSign metrics dashboard
- No metrics in Grafana? Verify your player is running and accessible at http://YOUR_BRIGHTSIGN_IP:9100/metrics
- Services not starting? Make sure Docker is running with
docker ps - Dashboard not showing? Check Prometheus is scraping your player at http://localhost:9090/targets
You can run these verification commands to check each component:
# Check if your BrightSign Node Exporter is responding
curl -s http://YOUR_BRIGHTSIGN_IP:9100/metrics | head -5
# Check if Prometheus is running and collecting data
curl -s http://localhost:9090/api/v1/query?query=up | grep -o '"value":\[.*\]'
# Check if Grafana is running
curl -I http://localhost:3000The sections below provide more details about the project. Reading them is not required to get started but may be helpful as you continue using the tool.
The included Grafana dashboard ("Full Node Exporter") provides comprehensive monitoring for your BrightSign players, including:
- CPU usage and load metrics
- Memory usage and allocation
- Disk space and I/O operations
- Network traffic and connectivity
- System uptime and processes
├── demo.gif # Demo animation showing the dashboard
├── docker-compose.yml # Docker configuration for Prometheus and Grafana
├── grafana/ # Grafana configuration directory
│ ├── dashboards/ # Dashboard configuration
│ └── datasources/ # Data source configuration
├── prometheus/ # Prometheus configuration directory
│ └── prometheus.yml # Prometheus scraping configuration
└── README.md # This documentation file
To monitor multiple BrightSign players, simply add more entries to the prometheus.yml file:
- job_name: 'node_exporter'
static_configs:
- targets: ['PLAYER1_IP:9100']
labels:
model: 'XT1144'
location: 'Lobby'
- targets: ['PLAYER2_IP:9100']
labels:
model: 'XD1033'
location: 'Conference Room'Some key metrics to watch for BrightSign players:
- Disk Space: Especially important for players storing large media files
- Memory Usage: Can indicate issues with complex presentations
- Network Traffic: Useful for players streaming content or receiving updates
- If containers won't start, try
docker compose downfollowed bydocker compose up -d - Check logs with
docker logs prometheusordocker logs grafana
- Go to Status → Targets to see if your BrightSign player is being scraped successfully
- If the player shows as "Down", verify the IP address and connectivity
- If you don't see data in Grafana, check that Prometheus is showing as a valid data source
- Go to Configuration → Data Sources to verify
- Try rebooting the player if metrics aren't showing
- Check if any firewalls might be blocking the connection
To stop the monitoring services:
docker compose downTo stop and remove all data:
docker compose down -vThis setup is intended for local development and testing. For production:
-
Change the default Grafana password in
docker-compose.yml:- GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=grafana
-
Consider adding authentication to Prometheus and restricting network access
By default, this setup collects metrics every 5 seconds as configured in prometheus.yml.
Yes, but you'll need to ensure network connectivity between your monitoring server and the players, which may require VPN or other networking solutions.
This should work with any BrightSign player running BOS 9.0.126 or later, which includes the Prometheus Node Exporter functionality.
Contributions to improve this playground are welcome! Areas where help is particularly appreciated:
- Additional BrightSign-specific Grafana dashboards
- Documentation improvements
- Alert configuration examples
- Performance optimizations
