• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pomerium / pomerium / 17924876307
52%

Build:
DEFAULT BRANCH: main
Ran 22 Sep 2025 06:37PM UTC
Jobs 1
Files 572
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Sep 2025 06:30PM UTC coverage: 53.898% (+0.1%) from 53.779%
17924876307

push

github

web-flow
feat: report pomerium health to systemd (#5835)

## Summary

This PR adds systemd as a valid integration for internal pomerium health
checks.

When all expected checks have started, report READY to systemd. 

When any component enters the terminating state, report STOPPING to
systemd.

When any component reports an error, the latest error reported gets
surfaced to systemd's status so that `sudo systemctl status
pomerium.service` reflects the last error

References (sd_notify & sd_watchdog_enabled man pages), convenient web
links here:
- https://www.freedesktop.org/software/systemd/man/latest/sd_notify.html
-
https://www.freedesktop.org/software/systemd/man/latest/sd_watchdog_enabled.html#

To have a startup probe based on the sd_notify protocol the systemd
configuration should have:
```
[Service]
#...
Type=notify
```

The sd_notify health checker also implements the watchdog part of the
systemd configuration:

```
[Service]
# ....
WatchdogSec=30s
```

Currently watchdog heartbeats regularly trivially as long as the process
(and sd_notify goroutine) is up and running.

This could be extended in the future to have the equivalent of a
liveness probe via the watchdog messages, where the sd_notify health
checker will no longer send watchdog messages if it is unhealthy.


## Related issues


[ENG-2902](https://linear.app/pomerium/issue/ENG-2902/systemd-sd-notify-health-check-implementation)


## User Explanation

Users installing pomerium via systemd now benefit from pomerium's
internal health checks being integrated with `systemd` via `sd_notify`.

## Checklist

- [x] reference any related issues
- [x] updated unit tests
- [x] add appropriate label (`enhancement`, `bug`, `breaking`,
`dependencies`, `ci`)
- [x] ready for review

142 of 199 new or added lines in 3 files covered. (71.36%)

7 existing lines in 3 files now uncovered.

27184 of 50436 relevant lines covered (53.9%)

86.79 hits per line

Uncovered Changes

Lines Coverage ∆ File
42
26.32
internal/controlplane/health_linux.go
15
89.21
pkg/health/systemd.go

Coverage Regressions

Lines Coverage ∆ File
3
66.03
0.0% pkg/storage/file/iterate.go
2
65.79
0.79% internal/databroker/server_clustered_follower.go
2
94.55
3.64% pkg/fanout/receive.go
Jobs
ID Job ID Ran Files Coverage
1 17924876307.1 22 Sep 2025 06:37PM UTC 572
53.9
GitHub Action Run
Source Files on build 17924876307
  • Tree
  • List 572
  • Changed 12
  • Source Changed 3
  • Coverage Changed 12
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #17924876307
  • efb100b2 on github
  • Prev Build on main (#17922337735)
  • Next Build on main (#17953219619)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc