Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 23 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ A [Prometheus](https://prometheus.io/) exporter that collects [Selenium Grid](ht
### Usage

```sh
$ docker run -it wakeful/selenium-grid-exporter -h
$ docker run -it mcopjan/seleniumv4_grid_exporter:latest -h
Usage of /selenium_grid_exporter:
-listen-address string
Address on which to expose metrics. (default ":8080")
Expand All @@ -15,18 +15,31 @@ Usage of /selenium_grid_exporter:
Path under which to expose metrics. (default "/metrics")
```

### Prometheus/Grafana example

```
- run docker-compose -f docker-compose.yml up
- open grafana at localhost:3000 (admin/foobar)
- open Dashboards -> Manage -> Selenium4 Grid monitoring

```
![Screenshot](selenium4_grafana.png)

## Metrics

```
# HELP selenium_grid_hub_sessions_backlog number of sessions waiting for a slot
# TYPE selenium_grid_hub_sessions_backlog gauge
selenium_grid_hub_sessions_backlog 0
# HELP selenium_grid_hub_slotsFree number of free slots
# TYPE selenium_grid_hub_slotsFree gauge
selenium_grid_hub_slotsFree 4
# HELP selenium_grid_hub_slotsTotal total number of slots
# TYPE selenium_grid_hub_slotsTotal gauge
selenium_grid_hub_slotsTotal 8
# HELP selenium_grid_hub_sessionCount number of active sessions
# TYPE selenium_grid_hub_sessionCount gauge
selenium_grid_hub_sessionCount 0
# HELP selenium_grid_hub_maxSession number of max sessions
# TYPE sselenium_grid_hub_maxSession gauge
selenium_grid_hub_maxSession 0
# HELP selenium_grid_hub_totalSlots total number of slots
# TYPE selenium_grid_hub_totalSlots gauge
selenium_grid_hub_totalSlots 8
# HELP selenium_grid_hub_sessionQueueSize number of session in queue
# TYPE selenium_grid_hub_sessionQueueSize gauge
selenium_grid_hub_sessionQueueSize 0
# HELP selenium_grid_up was the last scrape of Selenium Grid successful.
# TYPE selenium_grid_up gauge
selenium_grid_up 1
Expand Down
12 changes: 12 additions & 0 deletions alertmanager/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
route:
group_by: ['alertname']
group_interval: 30s
repeat_interval: 30s
group_wait: 30s
receiver: 'prometheus-msteams'

receivers:
- name: 'prometheus-msteams'
webhook_configs: # https://prometheus.io/docs/alerting/configuration/#webhook_config
- send_resolved: true
url: 'http://prometheus-msteams-alert:2000/alertmanager' # the prometheus-msteams proxy
106 changes: 84 additions & 22 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,97 @@
version: '3'
# To execute this docker-compose yml file use `docker-compose -f docker-compose.yml up`
# Add the `-d` flag at the end for detached execution
# To stop the execution, hit Ctrl+C, and then `docker-compose -f docker-compose.yml down`
version: "3"

volumes:
prometheus_data: {}
grafana_data: {}

services:
hub:
image: selenium/hub:3.6.0
chrome:
image: selenium/node-chrome:4.0.0-beta-1-20210215
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
GRID_TIMEOUT: 10
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- LANG=en_GB.UTF-8
- SE_NODE_MAX_CONCURRENT_SESSIONS=5
- START_XVFB=true
- SCREEN_WIDTH=1920
- SCREEN_HEIGHT=1080
- SCREEN_DEPTH=24
ports:
- "4444:4444"
- "6900:5900"

firefox:
image: selenium/node-firefox:3.6.0
image: selenium/node-firefox:4.0.0-beta-1-20210215
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
HUB_PORT_4444_TCP_ADDR: "hub"
HUB_PORT_4444_TCP_PORT: "4444"
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
ports:
- "6901:5900"

opera:
image: selenium/node-opera:4.0.0-beta-1-20210215
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
ports:
- "6902:5900"

selenium-hub:
image: selenium/hub:4.0.0-beta-1-20210215
container_name: selenium-hub
ports:
- "4442:4442"
- "4443:4443"
- "4444:4444"

prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:z
- ./prometheus/:/etc/prometheus/
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=3d'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
- '--web.enable-lifecycle'
- '--web.enable-admin-api'
ports:
- 9090:9090

grafana:
image: grafana/grafana:4.5.2
environment:
GF_AUTH_ANONYMOUS_ENABLED: "true"
GF_AUTH_ANONYMOUS_ORG_ROLE: "Admin"
GF_INSTALL_PLUGINS: "grafana-piechart-panel"
image: grafana/grafana
depends_on:
- prometheus
ports:
- "3000:3000"
grafana_config:
build: ./grafana_config
- 3000:3000
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning/:/etc/grafana/provisioning/
env_file:
- ./grafana/config.monitoring
user: "472"

selenium_grid_exporter:
build: .
command: "--scrape-uri http://hub:4444"
image: mcopjan/seleniumv4_grid_exporter:latest
command: "--scrape-uri http://selenium-hub:4444"
ports:
- "8080:8080"
- "8080:8080"
2 changes: 2 additions & 0 deletions grafana/config.monitoring
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
GF_SECURITY_ADMIN_PASSWORD=foobar
GF_USERS_ALLOW_SIGN_UP=false
Loading