letsencrypt / letsencrypt/boulder
Add an IP protocol selector to Boulder-Observer's monitors
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 5.8k
- Forks
- 649
- Avg merge
- 3d 23h
- Merged PRs (30d)
- 24
Description
The observer's monitors currently accept configuration of the form:
- period: 30s
kind: HTTP
settings:
url: https://letsencrypt.org/PIZZA
rcodes: [200, 404]
This resolves and then connects to letsencrypt.org using the defaults from the runtime - e.g., Go's choice. It would be useful to have a setting for ip_proto or similar that could define what protocol or protocols to use, as it's helpful to confirm HTTP or DNS works on an IPv4 path and also on an IPv6 path. For example, perhaps it could be configured as:
- period: 15s
kind: DNS
settings:
protocol: tcp
ip_protos: [ipv4, ipv6]
server: 8.8.8.8:53
recurse: true
query_name: www.letsencrypt.org
query_type: A
to explicity try IPv4 and IPv6 at each execution, and emit separate statistics for both. Alternatively, it could be a single value and we include multiple monitors to cover each, that would also be fine:
- period: 30s
kind: HTTP
settings:
url: https://letsencrypt.org/BAND
rcodes: [200, 404]
ip_proto: ipv6
- period: 30s
kind: HTTP
settings:
url: https://letsencrypt.org/CANDY
rcodes: [200, 404]
ip_proto: ipv4
But in either case, we want to be able to select the IP protocol in-use for each kind of monitor, and generally speaking, we'll always want to have explicit monitoring of both the IPv6 and the IPv4 choices.
(EDIT: Changed to cover DNS as well as HTTP probe types)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating Boulder-Observer's monitor configuration and the HTTP and DNS monitor entry points. Read how each monitor resolves and connects using the runtime's default IP protocol, then check existing monitor statistics and tests. Done means the chosen configuration supports explicit IPv4 and IPv6 monitoring for both probe types and reports their results separately.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- networking, observability-sre
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100