Created
May 25, 2024 15:05
-
-
Save lionello/96784ad698d05d281c122417aef8cc9c to your computer and use it in GitHub Desktop.
Simplest Loki query example in Go
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module github.com/DefangLabs/GoLicenseGuard/test | |
go 1.22.3 | |
require github.com/grafana/loki/v3 v3.0.0 | |
require ( | |
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 // indirect | |
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 // indirect | |
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect | |
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.1 // indirect | |
github.com/DataDog/sketches-go v1.4.4 // indirect | |
github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect | |
github.com/Masterminds/goutils v1.1.1 // indirect | |
github.com/Masterminds/semver/v3 v3.2.0 // indirect | |
github.com/Masterminds/sprig/v3 v3.2.3 // indirect | |
github.com/Workiva/go-datastructures v1.1.0 // indirect | |
github.com/alecthomas/units v0.0.0-20231202071711-9a357b53e9c9 // indirect | |
github.com/armon/go-metrics v0.4.1 // indirect | |
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect | |
github.com/aws/aws-sdk-go v1.50.32 // indirect | |
github.com/axiomhq/hyperloglog v0.0.0-20240124082744-24bca3a5b39b // indirect | |
github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect | |
github.com/beorn7/perks v1.0.1 // indirect | |
github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b // indirect | |
github.com/cespare/xxhash v1.1.0 // indirect | |
github.com/cespare/xxhash/v2 v2.2.0 // indirect | |
github.com/coreos/go-semver v0.3.0 // indirect | |
github.com/coreos/go-systemd/v22 v22.5.0 // indirect | |
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect | |
github.com/dennwc/varint v1.0.0 // indirect | |
github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect | |
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect | |
github.com/dustin/go-humanize v1.0.1 // indirect | |
github.com/edsrzf/mmap-go v1.1.0 // indirect | |
github.com/efficientgo/core v1.0.0-rc.2 // indirect | |
github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect | |
github.com/fatih/color v1.15.0 // indirect | |
github.com/felixge/httpsnoop v1.0.4 // indirect | |
github.com/fsnotify/fsnotify v1.7.0 // indirect | |
github.com/go-kit/log v0.2.1 // indirect | |
github.com/go-logfmt/logfmt v0.6.0 // indirect | |
github.com/go-logr/logr v1.4.1 // indirect | |
github.com/go-logr/stdr v1.2.2 // indirect | |
github.com/go-openapi/analysis v0.22.2 // indirect | |
github.com/go-openapi/errors v0.21.1 // indirect | |
github.com/go-openapi/jsonpointer v0.20.2 // indirect | |
github.com/go-openapi/jsonreference v0.20.4 // indirect | |
github.com/go-openapi/loads v0.21.5 // indirect | |
github.com/go-openapi/spec v0.20.14 // indirect | |
github.com/go-openapi/strfmt v0.22.2 // indirect | |
github.com/go-openapi/swag v0.22.9 // indirect | |
github.com/go-openapi/validate v0.23.0 // indirect | |
github.com/go-redis/redis/v8 v8.11.5 // indirect | |
github.com/gogo/googleapis v1.4.0 // indirect | |
github.com/gogo/protobuf v1.3.2 // indirect | |
github.com/gogo/status v1.1.1 // indirect | |
github.com/golang-jwt/jwt/v5 v5.2.0 // indirect | |
github.com/golang/protobuf v1.5.3 // indirect | |
github.com/golang/snappy v0.0.4 // indirect | |
github.com/google/btree v1.1.2 // indirect | |
github.com/google/go-cmp v0.6.0 // indirect | |
github.com/google/uuid v1.6.0 // indirect | |
github.com/gorilla/mux v1.8.0 // indirect | |
github.com/grafana/dskit v0.0.0-20240104111617-ea101a3b86eb // indirect | |
github.com/grafana/gomemcache v0.0.0-20231204155601-7de47a8c3cb0 // indirect | |
github.com/grafana/jsonparser v0.0.0-20240209175146-098958973a2d // indirect | |
github.com/grafana/loki/pkg/push v0.0.0-20231124142027-e52380921608 // indirect | |
github.com/grafana/pyroscope-go/godeltaprof v0.1.6 // indirect | |
github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd // indirect | |
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect | |
github.com/hashicorp/consul/api v1.28.2 // indirect | |
github.com/hashicorp/errwrap v1.1.0 // indirect | |
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect | |
github.com/hashicorp/go-hclog v1.5.0 // indirect | |
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect | |
github.com/hashicorp/go-msgpack v0.5.5 // indirect | |
github.com/hashicorp/go-multierror v1.1.1 // indirect | |
github.com/hashicorp/go-rootcerts v1.0.2 // indirect | |
github.com/hashicorp/go-sockaddr v1.0.6 // indirect | |
github.com/hashicorp/go-version v1.6.0 // indirect | |
github.com/hashicorp/golang-lru v0.6.0 // indirect | |
github.com/hashicorp/memberlist v0.5.0 // indirect | |
github.com/hashicorp/serf v0.10.1 // indirect | |
github.com/huandu/xstrings v1.3.3 // indirect | |
github.com/imdario/mergo v0.3.16 // indirect | |
github.com/influxdata/tdigest v0.0.2-0.20210216194612-fc98d27c9e8b // indirect | |
github.com/jmespath/go-jmespath v0.4.0 // indirect | |
github.com/josharian/intern v1.0.0 // indirect | |
github.com/jpillora/backoff v1.0.0 // indirect | |
github.com/json-iterator/go v1.1.12 // indirect | |
github.com/julienschmidt/httprouter v1.3.0 // indirect | |
github.com/klauspost/compress v1.17.7 // indirect | |
github.com/kylelemons/godebug v1.1.0 // indirect | |
github.com/mailru/easyjson v0.7.7 // indirect | |
github.com/mattn/go-colorable v0.1.13 // indirect | |
github.com/mattn/go-isatty v0.0.19 // indirect | |
github.com/miekg/dns v1.1.58 // indirect | |
github.com/mitchellh/copystructure v1.0.0 // indirect | |
github.com/mitchellh/go-homedir v1.1.0 // indirect | |
github.com/mitchellh/mapstructure v1.5.0 // indirect | |
github.com/mitchellh/reflectwalk v1.0.1 // indirect | |
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | |
github.com/modern-go/reflect2 v1.0.2 // indirect | |
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | |
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect | |
github.com/oklog/ulid v1.3.1 // indirect | |
github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e // indirect | |
github.com/opentracing-contrib/go-stdlib v1.0.0 // indirect | |
github.com/opentracing/opentracing-go v1.2.0 // indirect | |
github.com/pierrec/lz4/v4 v4.1.18 // indirect | |
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect | |
github.com/pkg/errors v0.9.1 // indirect | |
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect | |
github.com/prometheus/alertmanager v0.27.0 // indirect | |
github.com/prometheus/client_golang v1.19.0 // indirect | |
github.com/prometheus/client_model v0.6.0 // indirect | |
github.com/prometheus/common v0.49.1-0.20240306132007-4199f18c3e92 // indirect | |
github.com/prometheus/common/sigv4 v0.1.0 // indirect | |
github.com/prometheus/exporter-toolkit v0.11.0 // indirect | |
github.com/prometheus/procfs v0.12.0 // indirect | |
github.com/prometheus/prometheus v0.51.0 // indirect | |
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect | |
github.com/sercand/kuberesolver/v5 v5.1.1 // indirect | |
github.com/shopspring/decimal v1.2.0 // indirect | |
github.com/soheilhy/cmux v0.1.5 // indirect | |
github.com/sony/gobreaker v0.5.0 // indirect | |
github.com/spaolacci/murmur3 v1.1.0 // indirect | |
github.com/spf13/cast v1.3.1 // indirect | |
github.com/stretchr/objx v0.5.2 // indirect | |
github.com/stretchr/testify v1.9.0 // indirect | |
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect | |
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect | |
github.com/willf/bitset v1.1.11 // indirect | |
github.com/willf/bloom v2.0.3+incompatible // indirect | |
go.etcd.io/etcd/api/v3 v3.5.4 // indirect | |
go.etcd.io/etcd/client/pkg/v3 v3.5.4 // indirect | |
go.etcd.io/etcd/client/v3 v3.5.4 // indirect | |
go.mongodb.org/mongo-driver v1.14.0 // indirect | |
go.opentelemetry.io/collector/featuregate v1.3.0 // indirect | |
go.opentelemetry.io/collector/pdata v1.3.0 // indirect | |
go.opentelemetry.io/collector/semconv v0.96.0 // indirect | |
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect | |
go.opentelemetry.io/otel v1.24.0 // indirect | |
go.opentelemetry.io/otel/metric v1.24.0 // indirect | |
go.opentelemetry.io/otel/trace v1.24.0 // indirect | |
go.uber.org/atomic v1.11.0 // indirect | |
go.uber.org/goleak v1.3.0 // indirect | |
go.uber.org/multierr v1.11.0 // indirect | |
go.uber.org/zap v1.21.0 // indirect | |
go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect | |
golang.org/x/crypto v0.21.0 // indirect | |
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect | |
golang.org/x/mod v0.16.0 // indirect | |
golang.org/x/net v0.22.0 // indirect | |
golang.org/x/oauth2 v0.18.0 // indirect | |
golang.org/x/sync v0.6.0 // indirect | |
golang.org/x/sys v0.18.0 // indirect | |
golang.org/x/text v0.14.0 // indirect | |
golang.org/x/time v0.5.0 // indirect | |
golang.org/x/tools v0.19.0 // indirect | |
gonum.org/v1/gonum v0.8.2 // indirect | |
google.golang.org/appengine v1.6.8 // indirect | |
google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8 // indirect | |
google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 // indirect | |
google.golang.org/grpc v1.62.1 // indirect | |
google.golang.org/protobuf v1.33.0 // indirect | |
gopkg.in/yaml.v2 v2.4.0 // indirect | |
gopkg.in/yaml.v3 v3.0.1 // indirect | |
k8s.io/apimachinery v0.29.2 // indirect | |
k8s.io/client-go v0.29.2 // indirect | |
k8s.io/klog/v2 v2.120.1 // indirect | |
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect | |
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"encoding/json" | |
"fmt" | |
"net/http" | |
"net/url" | |
"github.com/grafana/loki/v3/pkg/loghttp" | |
) | |
func Query(query string) error { | |
resp, err := http.Get("http://localhost:3100/loki/api/v1/query_range?query=" + url.QueryEscape(query)) | |
if err != nil { | |
return err | |
} | |
defer resp.Body.Close() | |
if resp.StatusCode != http.StatusOK { | |
return fmt.Errorf("unexpected status code: %v", resp.StatusCode) | |
} | |
qr := &loghttp.QueryResponse{} | |
if err := json.NewDecoder(resp.Body).Decode(qr); err != nil { | |
return err | |
} | |
if qr.Data.Result.Type() != loghttp.ResultTypeStream { | |
return fmt.Errorf("unexpected result type: %v", qr.Data.Result.Type()) | |
} | |
streams := qr.Data.Result.(loghttp.Streams) | |
for _, stream := range streams { | |
for _, entry := range stream.Entries { | |
fmt.Println(entry.Timestamp.String(), entry.Line) | |
} | |
} | |
return nil | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment