prometheus
1.9K
A Prometheus exporter for Wyebot DEX sensor data, allowing seamless integration of Wyebot metrics into your existing monitoring infrastructure. This project was developed to help our customers get up and running with our API.
Never heard of Wyebot? Come check us out! https://wyebot.com/
API Documentation: https://support.wyebot.com/api
Exporter Documentation: https://support.wyebot.com/api/prometheus-grafana
This exporter connects to the Wyebot API and exposes metrics from your DEX sensors in Prometheus format, enabling you to:
docker run -d \
--name wyebot-exporter \
-p 8014:8014 \
-e CLOUD_NAME="cloud" \
-e API_KEY="your-api-key" \
wyebotexporter/prometheus:latest
The exporter is configured via environment variables:
| Variable | Description | Default |
|---|---|---|
PORT | Port on which the exporter listens | 8014 |
CLOUD_NAME | Wyebot dashboard cloud name (cloud, wip, euro-cloud, etc.) | cloud |
API_KEY | Your Wyebot API key | Required |
PRECISE_TIMESTAMPS | Use exact timestamps from tests (experimental) | False |
Note: When PRECISE_TIMESTAMPS is enabled, Prometheus must be configured to accept out-of-order samples.
Add the following to your prometheus.yml:
scrape_configs:
- job_name: 'wyebot'
scrape_interval: 5m
scrape_timeout: 5m
static_configs:
- targets: ['wyebot-exporter:8014']
services:
wyebot-exporter:
image: wyebotexporter/prometheus:latest
container_name: wyebot-exporter
restart: unless-stopped
ports:
- "8014:8014"
environment:
- CLOUD_NAME=cloud
- API_KEY=your-api-key
# Example config.yml
# Network settings
exporter_host: 0.0.0.0 # Address to listen on (default: 127.0.0.1)
exporter_port: 8014 # Port to listen on (default: 8014)
# Cloud/API credentials
# CHANGEME: set below or via ENV variables CLOUD_NAME / API_KEY
cloud_name: cloud_name
api_key: abcdefghijklmnopqrstuvwxyz
# Performance
thread_count: 4 # Number of worker threads used to process jobs concurrently
# Timestamp behavior
# When True, metrics use the timestamp from the network test itself rather than
# scrape time. Useful for backfilling accurate historical data.
# NOTE: requires Prometheus to allow timestamps older than 5 minutes
# ENV: PRECISE_TIMESTAMPS
precise_timestamps: False
# DHCP info (added in v0.1.8)
# When True, includes the sensor's local DHCP-assigned info (e.g. IP) as labels.
# NOTE: each unique IP creates a new time series entry, so this can inflate
# cardinality if the sensor's IP changes often
# ENV: DETAILED_DHCP
detailed_dhcp: False
# Logging
# One of: DEBUG, INFO, WARNING, ERROR, CRITICAL
log_level: INFO
# Syslog
# Forwards exporter logs to a remote syslog server
syslog:
enabled: false
host: your-server-here
port: 514
protocol: UDP # UDP or TCP
| Name | Description | Labels |
|---|---|---|
up | Prometheus built in metric to report exporter status | job, instance |
wyebot_api_calls | Number of API calls for this round of metric scraping | job, instance |
wyebot_scrape_time | Time taken for this round of metric scraping in seconds | job, instance |
| Name | Description | Labels |
|---|---|---|
wyebot_sensor_status | Current status of sensor (1 if active, 0 otherwise) | sensor_status, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_sensor_issues | Total number Critical, Major, Minor, or Hidden issues | severity, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_sensor_issue_descriptions | Total number issues grouped by description | problem_description, location_id, location_name, sensor_id, sensor_name, job, instance |
| Name | Description | Labels |
|---|---|---|
wyebot_access_point_total | Total number of access points detected | classification, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_ssid_total | Total number of SSID/networks detected | location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_bssid_total | Total number of BSSIDs detected | ssid, channel, band, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_bssid_channel | Current channel of detected BSSID | ssid, is_hidden, security_type, bssid, ap_name, classification, channel, channel_width, band, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_bssid_clients | Total clients per monitored BSSID | Same as above |
wyebot_bssid_signal_strength | BSSID signal strength with detailed labels | phy_type, max_data_rate, vendor, ssid, is_hidden, security_type, bssid, ap_name, classification, channel, channel_width, band, location_id, location_name, sensor_id, sensor_name , job, instance |
| Name | Description | Labels |
|---|---|---|
wyebot_client_total | Total number of clients detected | location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_client_distribution_total | Total number of clients detected per band and their supported capabilities | client_band, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_client_signal_strength | Client signal strength with detailed labels | client_name, client_mac, vendor, phy_type, ssid, bssid, ap_name, channel, band, location_id, location_name, sensor_id, sensor_name, job, instance |
| Name | Description | Labels |
|---|---|---|
wyebot_airtime_total_percent | Total airtime usage detected by sensor radios | radio, channel, band, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_airtime_mgmt_percent | Management airtime usage detected by sensor radios | Same as above |
wyebot_airtime_ctrl_percent | Control airtime usage detected by sensor radios | radio, channel, band, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_airtime_data_percent | Data airtime usage detected by sensor radios | Same as above |
wyebot_airtime_interference_percent | Interference airtime usage detected by sensor radios | radio, channel, band, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_airtime_noise_floor | Noise floor of the current channel monitored by sensor radios in dB | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_connections_dhcp_time | Response time of DHCP for sensor connection attempt in milliseconds | dhcp_threshold_seconds, dhcp_server, connection_status, ssid, band, ap_name, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_connections_dhcp_status | Pass/Fail of DHCP compared to configured threshold | Same as above |
wyebot_connections_association_time | Time between initial connection and test start without DHCP time in milliseconds | connection_status, ssid, band, ap_name, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_connections_eap_time | Duration of EAP for sensor connection attempt in milliseconds | eap_threshold_seconds, connection_status, ssid, band, ap_name, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_connections_eap_status | Pass/Fail of EAP compared to configured threshold | Same as above |
wyebot_connections_rssi_current | RSSI during sensor connection attempt | connection_status, ssid, band, ap_name, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_connections_rssi_average | Average RSSI during connection attempt | Same as above |
wyebot_connections_link_speed | Link speed of connection in Mbps | Same as above |
wyebot_connections_dns_time | Time to resolve the specified domain in milliseconds | dns_threshold_msec, domain, connection_status, ssid, band, ap_name, location_id, location_name, sensor_id, sensor_name, job, instance |
wyebot_connections_dns_status | Pass/Fail of DNS compared to configured threshold | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_ping_loss | Percentage of packet loss for ping to specificed host | status, hostname, ip_address, packet_count, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_ping_rtt_avg | Round trip time average for ping to specified host in milliseconds | Same as above |
wyebot_tests_ping_rtt_min | Round trip time minimum for ping to specified host in milliseconds | Same as above |
wyebot_tests_ping_rtt_max | Round trip time maximum for ping to specified host in milliseconds | Same as above |
wyebot_tests_ping_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_link_doctor_loss | Percentage of packet loss for ping to specificed host | status, link_doctor_step, ip_address, packet_count, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_link_doctor_rtt_avg | Round trip time average for ping to specified host in milliseconds | Same as above |
wyebot_tests_link_doctor_rtt_min | Round trip time minimum for ping to specified host in milliseconds | Same as above |
wyebot_tests_link_doctor_rtt_max | Round trip time maximum for ping to specified host in milliseconds | Same as above |
wyebot_tests_link_doctor_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_application_time | Response time of specified URL in milliseconds | status, url, hostname, http_msg, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_application_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_dns_performance | Response time for specified domain in milliseconds | status, domain, dns_server, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_dns_performance_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_speedtest_download | Download speed in Mbps | status, below_threshold, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_speedtest_upload | Upload speed in Mbps | Same as above |
wyebot_tests_speedtest_latency | Latency to the selected speedtest server in ms | status, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_speedtest_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_iperf_download | Download speed in Mbps | status, server, below_threshold, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_iperf_upload | Upload speed in Mbps | Same as above |
wyebot_tests_iperf_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_port_scan | Number of ports open for target host | status, hostname, ip_address, ports, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_port_scan_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_network_discovery | Number of hosts found during network scan | status, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_network_discovery_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_video_mos_downstream | MOS of downstream for video test | status, server_hostname, simulation_name, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_video_mos_upstream | MOS of upstream for video test | Same as above |
wyebot_tests_video_speed_downstream | Speed of downstream for video test in Kbps | Same as above |
wyebot_tests_video_speed_upstream | Speed of upstream for video test in Kbps | Same as above |
wyebot_tests_video_loss_downstream | Percent of downstream packet loss for video test | Same as above |
wyebot_tests_video_loss_upstream | Percent of upstream packet loss for video test | Same as above |
wyebot_tests_video_latency_downstream | Downstream latency for video test in milliseconds | Same as above |
wyebot_tests_video_latency_upstream | Upstream latency for video test in milliseconds | Same as above |
wyebot_tests_video_jitter_downstream | Downstream jitter for video test in milliseconds | Same as above |
wyebot_tests_video_jitter_upstream | Upstream jitter for video test in milliseconds | Same as above |
wyebot_tests_video_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_voice_mos_downstream | MOS of downstream for voice test | status, server_hostname, simulation_name, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_voice_mos_upstream | MOS of upstream for voice test | Same as above |
wyebot_tests_voice_speed_downstream | Speed of downstream for voice test in Kbps | Same as above |
wyebot_tests_voice_speed_upstream | Speed of upstream for voice test in Kbps | Same as above |
wyebot_tests_voice_loss_downstream | Percent of downstream packet loss for voice test | Same as above |
wyebot_tests_voice_loss_upstream | Percent of upstream packet loss for voice test | Same as above |
wyebot_tests_voice_latency_downstream | Downstream latency for voice test in milliseconds | Same as above |
wyebot_tests_voice_latency_upstream | Upstream latency for voice test in milliseconds | Same as above |
wyebot_tests_voice_jitter_downstream | Downstream jitter for voice test in milliseconds | Same as above |
wyebot_tests_voice_jitter_upstream | Upstream jitter for voice test in milliseconds | Same as above |
wyebot_tests_voice_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_traceroute_hops | Number of hops for traceroute to specified host | status, hostname, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_traceroute_status | Pass/Fail status of test profile result | Same as above |
| Name | Description | Labels |
|---|---|---|
wyebot_tests_device_monitor | Current status of monitored device (1 if up, 0 if down) | status, server, hostname, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance |
wyebot_tests_device_monitor_status | Pass/Fail status of test profile result | Same as above |
| Label | Description |
|---|---|
job | Prometheus job identifier (wyebot) |
instance | Prometheus exporter hostname/IP and port |
location_id | Unique identifier for a location |
location_name | Human-readable name of the location |
sensor_id | Unique identifier for a sensor |
sensor_name | Human-readable name of the sensor |
sensor_status | Current status name of the sensor (e.g., Active, Offline) |
profile_id | Unique identifier for a test profile |
profile_name | Human-readable name of the test profile |
severity | Severity level of issues (Critical, Major, Minor, Hidden) |
problem_description | Description of the sensor issue |
classification | Classification of AP (Mine, Known, Unauthorized, Unclassified) |
ssid | Name of SSID or 'Wired' |
channel | Wi-Fi channel number |
band | Frequency band (2.4GHz, 5GHz) |
client_band | Client distribution band capability string (e.g., 2.4GHz Limited, 5GHz Capable) |
is_hidden | Indicates if an SSID is hidden (True or False) |
security_type | Type of security used (e.g., WPA2-Personal, WPA3-Enterprise) |
bssid | BSSID of AP radio |
ap_name | Discovered hostname of the access point |
channel_width | Width of the channel in MHz |
phy_type | Physical layer type (e.g., 802.11ac, 802.11ax) |
max_data_rate | Maximum data rate supported |
vendor | Manufacturer of the device based on MAC address |
client_name | Human-readable name of the client device |
client_mac | MAC address of the client device |
radio | Radio identifier for a sensor (0 or 1) |
status | Human-readable status of the test result (e.g., SUCCESS) |
connection_status | Human-readable status of the connection attempt |
domain | Domain name used for DNS lookup |
hostname | Target hostname for tests |
ip_address | IP address of the target host |
packet_count | Number of packets sent for test |
link_doctor_step | Step in the link doctor diagnostic process |
url | URL for application test |
http_msg | HTTP response message |
dns_server | DNS server address |
dhcp_server | IP address of DHCP server used during connection attempt |
dhcp_threshold_seconds | DHCP threshold for network configured in the Wyebot dashboard |
eap_threshold_seconds | RADIUS threshold for network configured in the Wyebot dashboard |
dns_threshold_msec | DNS threshold for network configured in the Wyebot dashboard |
below_threshold | Indicates if a measurement is below configured threshold |
server | Server used for tests (iPerf, Device Monitor) |
ports | Network ports used in scan |
server_hostname | Hostname of the test server |
simulation_name | Name of the quality simulation profile |
Content type
Image
Digest
sha256:1985d715e…
Size
78.8 MB
Last updated
6 days ago
docker pull wyebotexporter/prometheus