[tor-bugs] #30731 [Circumvention/Snowflake]: Publish post-sanitization broker logs
Tor Bug Tracker & Wiki
blackhole at torproject.org
Thu Jun 6 16:49:18 UTC 2019
#30731: Publish post-sanitization broker logs
-------------------------------------+-----------------------------------
Reporter: dcf | Owner: (none)
Type: task | Status: needs_information
Priority: Medium | Milestone:
Component: Circumvention/Snowflake | Version:
Severity: Normal | Resolution:
Keywords: | Actual Points:
Parent ID: | Points:
Reviewer: phw | Sponsor:
-------------------------------------+-----------------------------------
Comment (by dcf):
Replying to [comment:3 cohosh]:
> These graphs are really nice. Thanks for doing this! I'm wondering if we
want something similar to the information in these graphs for the ongoing
metrics collected from the broker (#21315).
Yes, I think it would be great to have similar graphs using up-to-date
logs. The scripts in attachment:broker-logs.zip:ticket:30693 should still
work with the current sanitized logs. We should potentially think about
making the logs better reflect what we want to measure, because currently
they require a fair bit of inference. Here's the main classification
function from the `process` script that tries to regularize the log
messages:
{{{#!go
var regexpRecvSnowflake = regexp.MustCompile(`^Received
snowflake:\s*([\w/+]*)`)
var regexpProxyNoClient = regexp.MustCompile(`^Proxy ([\w/+]*) did not
receive a Client offer.`)
if strings.HasPrefix(msg, "ACME hostnames: ") {
err = w.Write([]string{timestamp, "start", "", "", ""})
} else if strings.HasPrefix(msg, "http: TLS handshake error ") {
err = w.Write([]string{timestamp, "error", "", "", "tls"})
} else if strings.HasPrefix(msg, "http2: server: error ") {
err = w.Write([]string{timestamp, "error", "", "",
"http2"})
} else if strings.HasPrefix(msg, "http2: received GOAWAY ") {
err = w.Write([]string{timestamp, "error", "", "",
"http2"})
} else if msg == "Starting HTTP-01 listener" {
} else if msg == "Invalid data." {
err = w.Write([]string{timestamp, "error", "", "",
"invalid-data"})
} else if msg == "Mismatched IDs!" {
err = w.Write([]string{timestamp, "proxy-gets-none", "",
"", "mismatched-ids"})
} else if msg == "Passing client offer to snowflake proxy." {
err = w.Write([]string{timestamp, "client-offers", "", "",
""})
} else if msg == "Client: No snowflake proxies available." {
err = w.Write([]string{timestamp, "client-gets-none", "",
"", "no-proxies"})
} else if msg == "Client: Timed out." {
err = w.Write([]string{timestamp, "client-gets-none", "",
"", "timeout"})
} else if matches := regexpRecvSnowflake.FindStringSubmatch(msg);
matches != nil {
err = w.Write([]string{timestamp, "proxy-polls",
idFor(matches[1]), "", ""})
} else if matches := regexpProxyNoClient.FindStringSubmatch(msg);
matches != nil {
err = w.Write([]string{timestamp, "proxy-gets-none",
idFor(matches[1]), "", "no-clients"})
} else if msg == "Passing client offer to snowflake." {
err = w.Write([]string{timestamp, "proxy-gets-offer", "",
"", ""})
} else if strings.HasPrefix(msg, "Received answer: ") {
err = w.Write([]string{timestamp, "proxy-answers", "", "",
""})
} else if msg == "Client: Retrieving answer" {
err = w.Write([]string{timestamp, "client-gets-answer",
"", "", ""})
} else {
return fmt.Errorf("cannot parse line")
}
}}}
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/30731#comment:5>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list