wyebotexporter/prometheus

By wyebotexporter

Updated 6 days ago

Image
Networking
Internet of things
Monitoring & observability
1

1.9K

wyebotexporter/prometheus repository overview

Wyebot DEX Sensor Prometheus Exporter

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

Overview

This exporter connects to the Wyebot API and exposes metrics from your DEX sensors in Prometheus format, enabling you to:

  • Visualize Wyebot data in your preferred monitoring solution (Grafana, etc.)
  • Set up alerts based on Wyebot metrics
  • Correlate Wyebot data with other infrastructure metrics
  • Create a single pane of glass for all your monitoring needs

Quick Start

docker run -d \
  --name wyebot-exporter \
  -p 8014:8014 \
  -e CLOUD_NAME="cloud" \
  -e API_KEY="your-api-key" \
  wyebotexporter/prometheus:latest

Configuration

The exporter is configured via environment variables:

VariableDescriptionDefault
PORTPort on which the exporter listens8014
CLOUD_NAMEWyebot dashboard cloud name (cloud, wip, euro-cloud, etc.)cloud
API_KEYYour Wyebot API keyRequired
PRECISE_TIMESTAMPSUse exact timestamps from tests (experimental)False

Note: When PRECISE_TIMESTAMPS is enabled, Prometheus must be configured to accept out-of-order samples.

Prometheus Configuration

Add the following to your prometheus.yml:

scrape_configs:
  - job_name: 'wyebot'
    scrape_interval: 5m
    scrape_timeout: 5m
    static_configs:
    - targets: ['wyebot-exporter:8014']

Docker Compose Example

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

Config.yml Example

# 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

Metric Definitions

General

NameDescriptionLabels
upPrometheus built in metric to report exporter statusjob, instance
wyebot_api_callsNumber of API calls for this round of metric scrapingjob, instance
wyebot_scrape_timeTime taken for this round of metric scraping in secondsjob, instance

Sensor


Sensor Info
NameDescriptionLabels
wyebot_sensor_statusCurrent status of sensor (1 if active, 0 otherwise)sensor_status, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_sensor_issuesTotal number Critical, Major, Minor, or Hidden issuesseverity, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_sensor_issue_descriptionsTotal number issues grouped by descriptionproblem_description, location_id, location_name, sensor_id, sensor_name, job, instance
Access Point
NameDescriptionLabels
wyebot_access_point_totalTotal number of access points detectedclassification, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_ssid_totalTotal number of SSID/networks detectedlocation_id, location_name, sensor_id, sensor_name, job, instance
wyebot_bssid_totalTotal number of BSSIDs detectedssid, channel, band, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_bssid_channelCurrent channel of detected BSSIDssid, is_hidden, security_type, bssid, ap_name, classification, channel, channel_width, band, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_bssid_clientsTotal clients per monitored BSSIDSame as above
wyebot_bssid_signal_strengthBSSID signal strength with detailed labelsphy_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
Client
NameDescriptionLabels
wyebot_client_totalTotal number of clients detectedlocation_id, location_name, sensor_id, sensor_name, job, instance
wyebot_client_distribution_totalTotal number of clients detected per band and their supported capabilitiesclient_band, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_client_signal_strengthClient signal strength with detailed labelsclient_name, client_mac, vendor, phy_type, ssid, bssid, ap_name, channel, band, location_id, location_name, sensor_id, sensor_name, job, instance
RF Analytics
NameDescriptionLabels
wyebot_airtime_total_percentTotal airtime usage detected by sensor radiosradio, channel, band, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_airtime_mgmt_percentManagement airtime usage detected by sensor radiosSame as above
wyebot_airtime_ctrl_percentControl airtime usage detected by sensor radiosradio, channel, band, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_airtime_data_percentData airtime usage detected by sensor radiosSame as above
wyebot_airtime_interference_percentInterference airtime usage detected by sensor radiosradio, channel, band, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_airtime_noise_floorNoise floor of the current channel monitored by sensor radios in dBSame as above
Connections
NameDescriptionLabels
wyebot_connections_dhcp_timeResponse time of DHCP for sensor connection attempt in millisecondsdhcp_threshold_seconds, dhcp_server, connection_status, ssid, band, ap_name, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_connections_dhcp_statusPass/Fail of DHCP compared to configured thresholdSame as above
wyebot_connections_association_timeTime between initial connection and test start without DHCP time in millisecondsconnection_status, ssid, band, ap_name, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_connections_eap_timeDuration of EAP for sensor connection attempt in millisecondseap_threshold_seconds, connection_status, ssid, band, ap_name, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_connections_eap_statusPass/Fail of EAP compared to configured thresholdSame as above
wyebot_connections_rssi_currentRSSI during sensor connection attemptconnection_status, ssid, band, ap_name, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_connections_rssi_averageAverage RSSI during connection attemptSame as above
wyebot_connections_link_speedLink speed of connection in MbpsSame as above
wyebot_connections_dns_timeTime to resolve the specified domain in millisecondsdns_threshold_msec, domain, connection_status, ssid, band, ap_name, location_id, location_name, sensor_id, sensor_name, job, instance
wyebot_connections_dns_statusPass/Fail of DNS compared to configured thresholdSame as above

Network Tests

Ping
NameDescriptionLabels
wyebot_tests_ping_lossPercentage of packet loss for ping to specificed hoststatus, 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_avgRound trip time average for ping to specified host in millisecondsSame as above
wyebot_tests_ping_rtt_minRound trip time minimum for ping to specified host in millisecondsSame as above
wyebot_tests_ping_rtt_maxRound trip time maximum for ping to specified host in millisecondsSame as above
wyebot_tests_ping_statusPass/Fail status of test profile resultSame as above
NameDescriptionLabels
wyebot_tests_link_doctor_lossPercentage of packet loss for ping to specificed hoststatus, 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_avgRound trip time average for ping to specified host in millisecondsSame as above
wyebot_tests_link_doctor_rtt_minRound trip time minimum for ping to specified host in millisecondsSame as above
wyebot_tests_link_doctor_rtt_maxRound trip time maximum for ping to specified host in millisecondsSame as above
wyebot_tests_link_doctor_statusPass/Fail status of test profile resultSame as above
Application
NameDescriptionLabels
wyebot_tests_application_timeResponse time of specified URL in millisecondsstatus, 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_statusPass/Fail status of test profile resultSame as above
DNS Performance
NameDescriptionLabels
wyebot_tests_dns_performanceResponse time for specified domain in millisecondsstatus, 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_statusPass/Fail status of test profile resultSame as above
Speedtest
NameDescriptionLabels
wyebot_tests_speedtest_downloadDownload speed in Mbpsstatus, below_threshold, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance
wyebot_tests_speedtest_uploadUpload speed in MbpsSame as above
wyebot_tests_speedtest_latencyLatency to the selected speedtest server in msstatus, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance
wyebot_tests_speedtest_statusPass/Fail status of test profile resultSame as above
iPerf
NameDescriptionLabels
wyebot_tests_iperf_downloadDownload speed in Mbpsstatus, server, below_threshold, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance
wyebot_tests_iperf_uploadUpload speed in MbpsSame as above
wyebot_tests_iperf_statusPass/Fail status of test profile resultSame as above
Port Scan
NameDescriptionLabels
wyebot_tests_port_scanNumber of ports open for target hoststatus, 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_statusPass/Fail status of test profile resultSame as above
Network Discovery
NameDescriptionLabels
wyebot_tests_network_discoveryNumber of hosts found during network scanstatus, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance
wyebot_tests_network_discovery_statusPass/Fail status of test profile resultSame as above
Video Conferencing
NameDescriptionLabels
wyebot_tests_video_mos_downstreamMOS of downstream for video teststatus, 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_upstreamMOS of upstream for video testSame as above
wyebot_tests_video_speed_downstreamSpeed of downstream for video test in KbpsSame as above
wyebot_tests_video_speed_upstreamSpeed of upstream for video test in KbpsSame as above
wyebot_tests_video_loss_downstreamPercent of downstream packet loss for video testSame as above
wyebot_tests_video_loss_upstreamPercent of upstream packet loss for video testSame as above
wyebot_tests_video_latency_downstreamDownstream latency for video test in millisecondsSame as above
wyebot_tests_video_latency_upstreamUpstream latency for video test in millisecondsSame as above
wyebot_tests_video_jitter_downstreamDownstream jitter for video test in millisecondsSame as above
wyebot_tests_video_jitter_upstreamUpstream jitter for video test in millisecondsSame as above
wyebot_tests_video_statusPass/Fail status of test profile resultSame as above
Voice
NameDescriptionLabels
wyebot_tests_voice_mos_downstreamMOS of downstream for voice teststatus, 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_upstreamMOS of upstream for voice testSame as above
wyebot_tests_voice_speed_downstreamSpeed of downstream for voice test in KbpsSame as above
wyebot_tests_voice_speed_upstreamSpeed of upstream for voice test in KbpsSame as above
wyebot_tests_voice_loss_downstreamPercent of downstream packet loss for voice testSame as above
wyebot_tests_voice_loss_upstreamPercent of upstream packet loss for voice testSame as above
wyebot_tests_voice_latency_downstreamDownstream latency for voice test in millisecondsSame as above
wyebot_tests_voice_latency_upstreamUpstream latency for voice test in millisecondsSame as above
wyebot_tests_voice_jitter_downstreamDownstream jitter for voice test in millisecondsSame as above
wyebot_tests_voice_jitter_upstreamUpstream jitter for voice test in millisecondsSame as above
wyebot_tests_voice_statusPass/Fail status of test profile resultSame as above
Traceroute
NameDescriptionLabels
wyebot_tests_traceroute_hopsNumber of hops for traceroute to specified hoststatus, hostname, ap_name, ssid, band, location_id, location_name, sensor_id, sensor_name, profile_id, profile_name, job, instance
wyebot_tests_traceroute_statusPass/Fail status of test profile resultSame as above
Device Monitor
NameDescriptionLabels
wyebot_tests_device_monitorCurrent 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_statusPass/Fail status of test profile resultSame as above

Label Definitions

LabelDescription
jobPrometheus job identifier (wyebot)
instancePrometheus exporter hostname/IP and port
location_idUnique identifier for a location
location_nameHuman-readable name of the location
sensor_idUnique identifier for a sensor
sensor_nameHuman-readable name of the sensor
sensor_statusCurrent status name of the sensor (e.g., Active, Offline)
profile_idUnique identifier for a test profile
profile_nameHuman-readable name of the test profile
severitySeverity level of issues (Critical, Major, Minor, Hidden)
problem_descriptionDescription of the sensor issue
classificationClassification of AP (Mine, Known, Unauthorized, Unclassified)
ssidName of SSID or 'Wired'
channelWi-Fi channel number
bandFrequency band (2.4GHz, 5GHz)
client_bandClient distribution band capability string (e.g., 2.4GHz Limited, 5GHz Capable)
is_hiddenIndicates if an SSID is hidden (True or False)
security_typeType of security used (e.g., WPA2-Personal, WPA3-Enterprise)
bssidBSSID of AP radio
ap_nameDiscovered hostname of the access point
channel_widthWidth of the channel in MHz
phy_typePhysical layer type (e.g., 802.11ac, 802.11ax)
max_data_rateMaximum data rate supported
vendorManufacturer of the device based on MAC address
client_nameHuman-readable name of the client device
client_macMAC address of the client device
radioRadio identifier for a sensor (0 or 1)
statusHuman-readable status of the test result (e.g., SUCCESS)
connection_statusHuman-readable status of the connection attempt
domainDomain name used for DNS lookup
hostnameTarget hostname for tests
ip_addressIP address of the target host
packet_countNumber of packets sent for test
link_doctor_stepStep in the link doctor diagnostic process
urlURL for application test
http_msgHTTP response message
dns_serverDNS server address
dhcp_serverIP address of DHCP server used during connection attempt
dhcp_threshold_secondsDHCP threshold for network configured in the Wyebot dashboard
eap_threshold_secondsRADIUS threshold for network configured in the Wyebot dashboard
dns_threshold_msecDNS threshold for network configured in the Wyebot dashboard
below_thresholdIndicates if a measurement is below configured threshold
serverServer used for tests (iPerf, Device Monitor)
portsNetwork ports used in scan
server_hostnameHostname of the test server
simulation_nameName of the quality simulation profile

Tag summary

Content type

Image

Digest

sha256:1985d715e

Size

78.8 MB

Last updated

6 days ago

docker pull wyebotexporter/prometheus