mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-25 11:05:45 +00:00
tsweb: change RequestID format to have a date in it
So we can locate them in logs more easily. Updates tailscale/corp#24721 Change-Id: Ia766c75608050dde7edc99835979a6e9bb328df2 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
ebaf33a80c
commit
02cafbe1ca
@ -27,7 +27,6 @@ tailscale.com/cmd/derper dependencies: (generated by github.com/tailscale/depawa
|
|||||||
L github.com/google/nftables/expr from github.com/google/nftables+
|
L github.com/google/nftables/expr from github.com/google/nftables+
|
||||||
L github.com/google/nftables/internal/parseexprfunc from github.com/google/nftables+
|
L github.com/google/nftables/internal/parseexprfunc from github.com/google/nftables+
|
||||||
L github.com/google/nftables/xt from github.com/google/nftables/expr+
|
L github.com/google/nftables/xt from github.com/google/nftables/expr+
|
||||||
github.com/google/uuid from tailscale.com/util/fastuuid
|
|
||||||
github.com/hdevalence/ed25519consensus from tailscale.com/tka
|
github.com/hdevalence/ed25519consensus from tailscale.com/tka
|
||||||
L github.com/josharian/native from github.com/mdlayher/netlink+
|
L github.com/josharian/native from github.com/mdlayher/netlink+
|
||||||
L 💣 github.com/jsimonetti/rtnetlink from tailscale.com/net/netmon
|
L 💣 github.com/jsimonetti/rtnetlink from tailscale.com/net/netmon
|
||||||
@ -152,7 +151,6 @@ tailscale.com/cmd/derper dependencies: (generated by github.com/tailscale/depawa
|
|||||||
💣 tailscale.com/util/deephash from tailscale.com/util/syspolicy/setting
|
💣 tailscale.com/util/deephash from tailscale.com/util/syspolicy/setting
|
||||||
L 💣 tailscale.com/util/dirwalk from tailscale.com/metrics
|
L 💣 tailscale.com/util/dirwalk from tailscale.com/metrics
|
||||||
tailscale.com/util/dnsname from tailscale.com/hostinfo+
|
tailscale.com/util/dnsname from tailscale.com/hostinfo+
|
||||||
tailscale.com/util/fastuuid from tailscale.com/tsweb
|
|
||||||
💣 tailscale.com/util/hashx from tailscale.com/util/deephash
|
💣 tailscale.com/util/hashx from tailscale.com/util/deephash
|
||||||
tailscale.com/util/httpm from tailscale.com/client/tailscale
|
tailscale.com/util/httpm from tailscale.com/client/tailscale
|
||||||
tailscale.com/util/lineiter from tailscale.com/hostinfo+
|
tailscale.com/util/lineiter from tailscale.com/hostinfo+
|
||||||
@ -160,6 +158,7 @@ tailscale.com/cmd/derper dependencies: (generated by github.com/tailscale/depawa
|
|||||||
tailscale.com/util/mak from tailscale.com/health+
|
tailscale.com/util/mak from tailscale.com/health+
|
||||||
tailscale.com/util/multierr from tailscale.com/health+
|
tailscale.com/util/multierr from tailscale.com/health+
|
||||||
tailscale.com/util/nocasemaps from tailscale.com/types/ipproto
|
tailscale.com/util/nocasemaps from tailscale.com/types/ipproto
|
||||||
|
tailscale.com/util/rands from tailscale.com/tsweb
|
||||||
tailscale.com/util/set from tailscale.com/derp+
|
tailscale.com/util/set from tailscale.com/derp+
|
||||||
tailscale.com/util/singleflight from tailscale.com/net/dnscache
|
tailscale.com/util/singleflight from tailscale.com/net/dnscache
|
||||||
tailscale.com/util/slicesx from tailscale.com/cmd/derper+
|
tailscale.com/util/slicesx from tailscale.com/cmd/derper+
|
||||||
@ -244,7 +243,6 @@ tailscale.com/cmd/derper dependencies: (generated by github.com/tailscale/depawa
|
|||||||
crypto/tls from golang.org/x/crypto/acme+
|
crypto/tls from golang.org/x/crypto/acme+
|
||||||
crypto/x509 from crypto/tls+
|
crypto/x509 from crypto/tls+
|
||||||
crypto/x509/pkix from crypto/x509+
|
crypto/x509/pkix from crypto/x509+
|
||||||
database/sql/driver from github.com/google/uuid
|
|
||||||
embed from crypto/internal/nistec+
|
embed from crypto/internal/nistec+
|
||||||
encoding from encoding/json+
|
encoding from encoding/json+
|
||||||
encoding/asn1 from crypto/x509+
|
encoding/asn1 from crypto/x509+
|
||||||
@ -276,7 +274,7 @@ tailscale.com/cmd/derper dependencies: (generated by github.com/tailscale/depawa
|
|||||||
math/big from crypto/dsa+
|
math/big from crypto/dsa+
|
||||||
math/bits from compress/flate+
|
math/bits from compress/flate+
|
||||||
math/rand from github.com/mdlayher/netlink+
|
math/rand from github.com/mdlayher/netlink+
|
||||||
math/rand/v2 from tailscale.com/util/fastuuid+
|
math/rand/v2 from internal/concurrent+
|
||||||
mime from github.com/prometheus/common/expfmt+
|
mime from github.com/prometheus/common/expfmt+
|
||||||
mime/multipart from net/http
|
mime/multipart from net/http
|
||||||
mime/quotedprintable from mime/multipart
|
mime/quotedprintable from mime/multipart
|
||||||
|
@ -109,6 +109,7 @@ func TestDeps(t *testing.T) {
|
|||||||
"gvisor.dev/gvisor/pkg/tcpip/header": "https://github.com/tailscale/tailscale/issues/9756",
|
"gvisor.dev/gvisor/pkg/tcpip/header": "https://github.com/tailscale/tailscale/issues/9756",
|
||||||
"tailscale.com/net/packet": "not needed in derper",
|
"tailscale.com/net/packet": "not needed in derper",
|
||||||
"github.com/gaissmai/bart": "not needed in derper",
|
"github.com/gaissmai/bart": "not needed in derper",
|
||||||
|
"database/sql/driver": "not needed in derper", // previously came in via github.com/google/uuid
|
||||||
},
|
},
|
||||||
}.Check(t)
|
}.Check(t)
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ tailscale.com/cmd/stund dependencies: (generated by github.com/tailscale/depawar
|
|||||||
github.com/go-json-experiment/json/internal/jsonopts from github.com/go-json-experiment/json+
|
github.com/go-json-experiment/json/internal/jsonopts from github.com/go-json-experiment/json+
|
||||||
github.com/go-json-experiment/json/internal/jsonwire from github.com/go-json-experiment/json+
|
github.com/go-json-experiment/json/internal/jsonwire from github.com/go-json-experiment/json+
|
||||||
github.com/go-json-experiment/json/jsontext from github.com/go-json-experiment/json+
|
github.com/go-json-experiment/json/jsontext from github.com/go-json-experiment/json+
|
||||||
github.com/google/uuid from tailscale.com/util/fastuuid
|
|
||||||
💣 github.com/prometheus/client_golang/prometheus from tailscale.com/tsweb/promvarz
|
💣 github.com/prometheus/client_golang/prometheus from tailscale.com/tsweb/promvarz
|
||||||
github.com/prometheus/client_golang/prometheus/internal from github.com/prometheus/client_golang/prometheus
|
github.com/prometheus/client_golang/prometheus/internal from github.com/prometheus/client_golang/prometheus
|
||||||
github.com/prometheus/client_model/go from github.com/prometheus/client_golang/prometheus+
|
github.com/prometheus/client_model/go from github.com/prometheus/client_golang/prometheus+
|
||||||
@ -74,9 +73,9 @@ tailscale.com/cmd/stund dependencies: (generated by github.com/tailscale/depawar
|
|||||||
tailscale.com/util/ctxkey from tailscale.com/tsweb+
|
tailscale.com/util/ctxkey from tailscale.com/tsweb+
|
||||||
L 💣 tailscale.com/util/dirwalk from tailscale.com/metrics
|
L 💣 tailscale.com/util/dirwalk from tailscale.com/metrics
|
||||||
tailscale.com/util/dnsname from tailscale.com/tailcfg
|
tailscale.com/util/dnsname from tailscale.com/tailcfg
|
||||||
tailscale.com/util/fastuuid from tailscale.com/tsweb
|
|
||||||
tailscale.com/util/lineiter from tailscale.com/version/distro
|
tailscale.com/util/lineiter from tailscale.com/version/distro
|
||||||
tailscale.com/util/nocasemaps from tailscale.com/types/ipproto
|
tailscale.com/util/nocasemaps from tailscale.com/types/ipproto
|
||||||
|
tailscale.com/util/rands from tailscale.com/tsweb
|
||||||
tailscale.com/util/slicesx from tailscale.com/tailcfg
|
tailscale.com/util/slicesx from tailscale.com/tailcfg
|
||||||
tailscale.com/util/vizerror from tailscale.com/tailcfg+
|
tailscale.com/util/vizerror from tailscale.com/tailcfg+
|
||||||
tailscale.com/version from tailscale.com/envknob+
|
tailscale.com/version from tailscale.com/envknob+
|
||||||
@ -133,7 +132,6 @@ tailscale.com/cmd/stund dependencies: (generated by github.com/tailscale/depawar
|
|||||||
crypto/tls from net/http+
|
crypto/tls from net/http+
|
||||||
crypto/x509 from crypto/tls
|
crypto/x509 from crypto/tls
|
||||||
crypto/x509/pkix from crypto/x509
|
crypto/x509/pkix from crypto/x509
|
||||||
database/sql/driver from github.com/google/uuid
|
|
||||||
embed from crypto/internal/nistec+
|
embed from crypto/internal/nistec+
|
||||||
encoding from encoding/json+
|
encoding from encoding/json+
|
||||||
encoding/asn1 from crypto/x509+
|
encoding/asn1 from crypto/x509+
|
||||||
@ -164,7 +162,7 @@ tailscale.com/cmd/stund dependencies: (generated by github.com/tailscale/depawar
|
|||||||
math/big from crypto/dsa+
|
math/big from crypto/dsa+
|
||||||
math/bits from compress/flate+
|
math/bits from compress/flate+
|
||||||
math/rand from math/big+
|
math/rand from math/big+
|
||||||
math/rand/v2 from tailscale.com/util/fastuuid+
|
math/rand/v2 from internal/concurrent+
|
||||||
mime from github.com/prometheus/common/expfmt+
|
mime from github.com/prometheus/common/expfmt+
|
||||||
mime/multipart from net/http
|
mime/multipart from net/http
|
||||||
mime/quotedprintable from mime/multipart
|
mime/quotedprintable from mime/multipart
|
||||||
|
@ -6,9 +6,10 @@
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
"tailscale.com/util/ctxkey"
|
"tailscale.com/util/ctxkey"
|
||||||
"tailscale.com/util/fastuuid"
|
"tailscale.com/util/rands"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RequestID is an opaque identifier for a HTTP request, used to correlate
|
// RequestID is an opaque identifier for a HTTP request, used to correlate
|
||||||
@ -41,10 +42,12 @@ func (r RequestID) String() string {
|
|||||||
|
|
||||||
// GenerateRequestID generates a new request ID with the current format.
|
// GenerateRequestID generates a new request ID with the current format.
|
||||||
func GenerateRequestID() RequestID {
|
func GenerateRequestID() RequestID {
|
||||||
// REQ-1 indicates the version of the RequestID pattern. It is
|
// Return a string of the form "REQ-<VersionByte><...>"
|
||||||
// currently arbitrary but allows for forward compatible
|
// Previously we returned "REQ-1<UUIDString>".
|
||||||
// transitions if needed.
|
// Now we return "REQ-2" version, where the "2" doubles as the year 2YYY
|
||||||
return RequestID("REQ-1" + fastuuid.NewUUID().String())
|
// in a leading date.
|
||||||
|
now := time.Now().UTC()
|
||||||
|
return RequestID("REQ-" + now.Format("20060102150405") + rands.HexString(16))
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetRequestID is an HTTP middleware that injects a RequestID in the
|
// SetRequestID is an HTTP middleware that injects a RequestID in the
|
||||||
|
@ -1307,6 +1307,28 @@ func TestBucket(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGenerateRequestID(t *testing.T) {
|
||||||
|
t0 := time.Now()
|
||||||
|
got := GenerateRequestID()
|
||||||
|
t.Logf("Got: %q", got)
|
||||||
|
if !strings.HasPrefix(string(got), "REQ-2") {
|
||||||
|
t.Errorf("expect REQ-2 prefix; got %q", got)
|
||||||
|
}
|
||||||
|
const wantLen = len("REQ-2024112022140896f8ead3d3f3be27")
|
||||||
|
if len(got) != wantLen {
|
||||||
|
t.Fatalf("len = %d; want %d", len(got), wantLen)
|
||||||
|
}
|
||||||
|
d := got[len("REQ-"):][:14]
|
||||||
|
timeBack, err := time.Parse("20060102150405", string(d))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("parsing time back: %v", err)
|
||||||
|
}
|
||||||
|
elapsed := timeBack.Sub(t0)
|
||||||
|
if elapsed > 3*time.Second { // allow for slow github actions runners :)
|
||||||
|
t.Fatalf("time back was %v; want within 3s", elapsed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func ExampleMiddlewareStack() {
|
func ExampleMiddlewareStack() {
|
||||||
// setHeader returns a middleware that sets header k = vs.
|
// setHeader returns a middleware that sets header k = vs.
|
||||||
setHeader := func(k string, vs ...string) Middleware {
|
setHeader := func(k string, vs ...string) Middleware {
|
||||||
|
Loading…
Reference in New Issue
Block a user