Caution
This action is a work in progress.
CI workflows can be slow because of many reasons. Maybe we ran out of CPU power (should use bigger runner), or maybe the CPU is underutilized (should add more load). Maybe the CPU is idle waiting for IO, or maybe our configuration didn’t utilize all the CPU cores available. Maybe there is a lot of page faults, or maybe the network or disk I/O is the bottleneck. This action sets up netdata to send detailed system performance metrics to a Prometheus server via the Prometheus remote write API while GitHub Actions is running. This gives you detailed visibility into the performance of your GitHub Actions workflows, which can be helpful for optimizing your workflow performance.
In this example, the application server consumes only 2 CPUs out of 4. Total CPU utilization is around 75%. Further digging shows that our E2E test setup only runs 2 instance of the application server. We can increase the number of instances to 4 to better utilize the available resources and make tests run faster. We can also slightly increase the number of workers in Playwright to get CPU utilization closer to 90%.
Without any configuration, Netdata automatically tracks hundreds of metrics about your system's performance. Here are some metrics we find useful:
It also tracks metrics about your network, disk, and more.
Here's a usage documentation based on the provided test.yml file:
To use the eventpop/netdata-action in your GitHub Actions workflow, add the action to your workflow file:
- name: Run Netdata
uses: eventpop/netdata-action@main
with:
exporting-config: |
[prometheus_remote_write:prom]
enabled = yes
destination = <prometheus-ip>:9090
username = <username>
password = ${{ secrets.PROMETHEUS_REMOTE_WRITE_PASSWORD }}
remote write URL path = /api/v1/write
update every = 5Replace the placeholders and set up the secrets as needed.
If your Prometheus server uses HTTPS and you’re unable to connect directly, you can use Caddy as a reverse proxy by adding the following step before the Netdata action:
- name: Run Caddy to proxy Prometheus
run: |
docker run -d \
--name promproxy \
-p 9090:9090 \
caddy \
caddy reverse-proxy \
--from :9090 \
--to https://your-prometheus-server \
--change-host-headerIn this case, set <prometheus-ip> to 127.0.0.1 in the Netdata configuration.

