Done:
https://github.com/prometheus/snmp_exporter/issues/1076
https://github.com/prometheus/blackbox_exporter/issues/1171

BTW, there's no problem with http prober and URLs with IPv6 literals. It 
turns out the http prober module I was testing with initially had
      preferred_ip_protocol: "ip4"
      ip_protocol_fallback: false

On Friday 15 December 2023 at 07:04:02 UTC Ben Kochie wrote:

> Oh, I forgot to add, it would be helpful to file issues on the affected 
> repos.
>
> On Fri, Dec 15, 2023 at 8:03 AM Ben Kochie <[email protected]> wrote:
>
>> Yea, that's some inconsistency we should fix. I agree, we should allow 
>> square brackets everywhere, but only require them if a port is required.
>>
>> Consistently using https://pkg.go.dev/net#SplitHostPort should help.
>>
>> On Thu, Dec 14, 2023 at 7:01 PM 'Brian Candler' via Prometheus Users <
>> [email protected]> wrote:
>>
>>> I'd like to raise this as a general issue for discussion.  I am working 
>>> with these:
>>>
>>> blackbox_exporter, version 0.24.0 (branch: HEAD, revision: 
>>> 0b0467473916fd9e8526e2635c2a0b1c56011dff)
>>>   build user:       root@e5bbfcc8184e
>>>   build date:       20230516-11:07:25
>>>   go version:       go1.20.4
>>>   platform:         linux/amd64
>>>   tags:             netgo
>>>
>>> snmp_exporter, version 0.25.0 (branch: HEAD, revision: 
>>> 9c42d6c874d479314e612bca69558c81f8e26287)
>>>   build user:       root@880115266f70
>>>   build date:       20231210-10:05:18
>>>   go version:       go1.21.5
>>>   platform:         linux/amd64
>>>   tags:             netgo
>>>
>>> In blackbox_exporter, it's inconsistent whether IPv6 literals need to be 
>>> enclosed in square brackets or not.
>>>
>>> - With the icmp prober, IPv6 literals *must not* be enclosed in brackets 
>>> AFAICS
>>> - With the dns prober, IPv6 literals *must not* be enclosed in brackets, 
>>> unless you also provide a port. e.g. [::1] is invalid, but [::1]:53 is OK, 
>>> as far as I can tell
>>> - With the tcp prober, I don't think the port can be omitted anyway; 
>>> hence IPv6 literals *must* be enclosed in brackets and followed by :port
>>>
>>> This makes it difficult to write generic code to map a device to a 
>>> target plus module, because it depends on what underlying prober the module 
>>> is using.
>>>
>>> Looking at the wider Prometheus ecosystem:
>>>
>>> - Prometheus service discovery requires square brackets, because 
>>> __address__ is an address:port combination
>>> - snmp_exporter does *not* allow the square brackets in the target 
>>> address if it doesn't have a port. Conversely, you can add the square 
>>> brackets, but if you do you *must* add a port; it doesn't add :161 
>>> automatically.  (This is like the dns prober in blackbox_exporter)
>>>
>>> # curl -vsS 
>>> 'localhost:9116/snmp?target=[2001:db8::1]&module=mikrotik&auth=workshop_v3'
>>> error collecting metric Desc{fqName: "snmp_error", help: "Error scraping 
>>> target", constLabels: {module="mikrotik"}, variableLabels: {}}: error 
>>> connecting to target [2001:db8::1]: error establishing connection to host: 
>>> dial udp: address [[2001:db8::1]]:161: missing port in address
>>>
>>> That looks like a straightforward bug to me: it seems to be attempting 
>>> to add the :161 port, but is mangling it with an extra set of brackets.
>>>
>>> If that can be fixed (and maybe it's the same issue in dns prober), then 
>>> it will be possible to use brackets around IPv6 addresses without ports.
>>>
>>> That leaves the icmp prober in blackbox exporter. I think it should 
>>> allow square brackets, if not actually require them (there's no useful 
>>> concept of "port" here, it will always send an echo-request). It might be 
>>> more consistent to require square brackets
>>>
>>> P.S. I would expect the blackbox_exporter http prober to require square 
>>> brackets around IPv6 literals in URLs, but I can't them to work: e.g.
>>> curl -g 
>>> 'localhost:9115/probe?target=http:%2f%2f%5b2001:db8::1%5d&module=http_2xx_example'
>>> doesn't make an outbound connection to 2001:db8::1. But quite possibly 
>>> I'm doing something wrong.
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Prometheus Users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/prometheus-users/433eea9b-2b74-4375-9112-ca671baf84c9n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/prometheus-users/433eea9b-2b74-4375-9112-ca671baf84c9n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-users/37e4f7fd-6230-47fb-b742-aedcf9582bbcn%40googlegroups.com.

Reply via email to