letsencrypt / letsencrypt/boulder

Add an IP protocol selector to Boulder-Observer's monitors

Open
#5,423 1 comment 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.