-
Notifications
You must be signed in to change notification settings - Fork 108
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mimir Support #1221
base: main
Are you sure you want to change the base?
Mimir Support #1221
Changes from 9 commits
569430e
012e79a
72b96eb
a7541cc
88ca397
2be7d7d
3f70731
da78619
7bcc132
a9001ef
a3de4a3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -99,3 +99,35 @@ examples/openshift/manifests: examples/openshift/main.jsonnet jsonnet/controller | |
jsonnetfmt -i examples/openshift/main.jsonnet | ||
jsonnet -m examples/openshift/manifests examples/openshift/main.jsonnet | xargs -I{} sh -c 'cat {} | gojsontoyaml > {}.yaml' -- {} | ||
find examples/openshift/manifests -type f ! -name '*.yaml' -delete | ||
|
||
KIND_CONFIG_FILE := testdata/kind-cluster.yaml | ||
|
||
kind: | ||
ifeq (, $(shell which kind)) | ||
go install sigs.k8s.io/[email protected] | ||
KIND=$(GOBIN)/kind | ||
else | ||
CONTROLLER_GEN=$(shell which kind) | ||
endif | ||
|
||
helm-repo-add: | ||
helm repo add grafana https://grafana.github.io/helm-charts || true | ||
|
||
helm-repo-update: helm-repo-add | ||
helm repo update grafana | ||
|
||
ensure-kind-cluster: kind | ||
@if ! kind get clusters | grep -q "^mimir$$"; then \ | ||
kind create cluster --config $(KIND_CONFIG_FILE); \ | ||
else \ | ||
echo "Cluster is already configured"; \ | ||
fi | ||
|
||
setup-mimir-test-cluster: ensure-kind-cluster helm-repo-update | ||
helm upgrade -i mimir grafana/mimir-distributed --version=5.4.0 -f ./testdata/mimir-values.yaml --wait | ||
@echo "\n" | ||
@echo "Mimir will be available at http://localhost:30950" | ||
@echo "e.g. curl localhost:30950/prometheus/config/v1/rules/namespace" | ||
|
||
delete-mimir-test-cluster: kind | ||
kind delete cluster --name mimir |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,16 +10,18 @@ require ( | |
github.com/go-chi/chi/v5 v5.0.12 | ||
github.com/go-chi/cors v1.2.1 | ||
github.com/go-kit/log v0.2.1 | ||
github.com/grafana/mimir v0.0.0-20240712112051-f89d319a774c | ||
github.com/oklog/run v1.1.0 | ||
github.com/polarsignals/connect-go-prometheus v0.0.0-20221202180953-626537f1f6bc | ||
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.73.0 | ||
github.com/prometheus/client_golang v1.19.0 | ||
github.com/prometheus/common v0.48.0 | ||
github.com/prometheus/prometheus v0.50.1 | ||
github.com/prometheus/client_golang v1.19.1 | ||
github.com/prometheus/common v0.55.0 | ||
github.com/prometheus/prometheus v1.99.0 | ||
github.com/stretchr/testify v1.9.0 | ||
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a | ||
golang.org/x/net v0.24.0 | ||
google.golang.org/protobuf v1.33.0 | ||
golang.org/x/exp v0.0.0-20240707233637-46b078467d37 | ||
golang.org/x/net v0.27.0 | ||
google.golang.org/protobuf v1.34.2 | ||
gopkg.in/yaml.v3 v3.0.1 | ||
k8s.io/api v0.29.3 | ||
k8s.io/apimachinery v0.29.3 | ||
k8s.io/client-go v0.29.3 | ||
|
@@ -28,60 +30,127 @@ require ( | |
) | ||
|
||
require ( | ||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect | ||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 // indirect | ||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect | ||
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect | ||
github.com/DmitriyVTitov/size v1.5.0 // indirect | ||
github.com/alecthomas/units v0.0.0-20240626203959-61d1e3462e30 // indirect | ||
github.com/armon/go-metrics v0.4.1 // indirect | ||
github.com/aws/aws-sdk-go v1.53.16 // indirect | ||
github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect | ||
github.com/beorn7/perks v1.0.1 // indirect | ||
github.com/cespare/xxhash/v2 v2.2.0 // indirect | ||
github.com/cespare/xxhash/v2 v2.3.0 // indirect | ||
github.com/coreos/go-semver v0.3.1 // 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/dustin/go-humanize v1.0.1 // indirect | ||
github.com/edsrzf/mmap-go v1.1.0 // indirect | ||
github.com/efficientgo/core v1.0.0-rc.0.0.20221201130417-ba593f67d2a4 // indirect | ||
github.com/emicklei/go-restful/v3 v3.11.0 // indirect | ||
github.com/evanphx/json-patch/v5 v5.8.0 // indirect | ||
github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect | ||
github.com/fatih/color v1.16.0 // indirect | ||
github.com/go-logfmt/logfmt v0.6.0 // indirect | ||
github.com/go-logr/logr v1.4.1 // indirect | ||
github.com/go-logr/logr v1.4.2 // indirect | ||
github.com/go-logr/stdr v1.2.2 // indirect | ||
github.com/go-logr/zapr v1.3.0 // indirect | ||
github.com/go-openapi/jsonpointer v0.20.0 // indirect | ||
github.com/go-openapi/jsonreference v0.20.2 // indirect | ||
github.com/go-openapi/swag v0.22.4 // indirect | ||
github.com/go-openapi/jsonpointer v0.20.2 // indirect | ||
github.com/go-openapi/jsonreference v0.20.4 // indirect | ||
github.com/go-openapi/swag v0.23.0 // indirect | ||
github.com/gogo/googleapis v1.4.1 // indirect | ||
github.com/gogo/protobuf v1.3.2 // indirect | ||
github.com/golang/glog v1.1.2 // indirect | ||
github.com/gogo/status v1.1.1 // indirect | ||
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect | ||
github.com/golang/glog v1.2.0 // indirect | ||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect | ||
github.com/golang/protobuf v1.5.4 // indirect | ||
github.com/golang/snappy v0.0.4 // indirect | ||
github.com/google/btree v1.1.2 // indirect | ||
github.com/google/gnostic-models v0.6.8 // indirect | ||
github.com/google/go-cmp v0.6.0 // indirect | ||
github.com/google/gofuzz v1.2.0 // indirect | ||
github.com/google/uuid v1.5.0 // indirect | ||
github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd // indirect | ||
github.com/google/uuid v1.6.0 // indirect | ||
github.com/grafana/dskit v0.0.0-20240704113758-97b2aa96bcb1 // indirect | ||
github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect | ||
github.com/hashicorp/consul/api v1.29.1 // indirect | ||
github.com/hashicorp/errwrap v1.1.0 // indirect | ||
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect | ||
github.com/hashicorp/go-hclog v1.6.3 // indirect | ||
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect | ||
github.com/hashicorp/go-msgpack v1.1.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/golang-lru v1.0.2 // indirect | ||
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect | ||
github.com/hashicorp/memberlist v0.5.0 // indirect | ||
github.com/hashicorp/serf v0.10.1 // indirect | ||
github.com/imdario/mergo v0.3.16 // 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/klauspost/compress v1.17.9 // 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.20 // indirect | ||
github.com/miekg/dns v1.1.59 // indirect | ||
github.com/mitchellh/go-homedir v1.1.0 // indirect | ||
github.com/mitchellh/mapstructure v1.5.0 // 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/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // 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/client_model v0.5.0 // indirect | ||
github.com/prometheus/procfs v0.12.0 // indirect | ||
github.com/prometheus/client_model v0.6.1 // indirect | ||
github.com/prometheus/common/sigv4 v0.1.0 // indirect | ||
github.com/prometheus/procfs v0.15.1 // indirect | ||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect | ||
github.com/sirupsen/logrus v1.9.3 // indirect | ||
github.com/spf13/pflag v1.0.5 // indirect | ||
github.com/thanos-io/objstore v0.0.0-20240622095743-1afe5d4bc3cd // indirect | ||
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect | ||
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect | ||
github.com/xlab/treeprint v1.2.0 // indirect | ||
go.etcd.io/etcd/api/v3 v3.5.10 // indirect | ||
go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect | ||
go.etcd.io/etcd/client/v3 v3.5.10 // indirect | ||
go.opentelemetry.io/otel v1.28.0 // indirect | ||
go.opentelemetry.io/otel/metric v1.28.0 // indirect | ||
go.opentelemetry.io/otel/trace v1.28.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.26.0 // indirect | ||
golang.org/x/oauth2 v0.16.0 // indirect | ||
golang.org/x/sys v0.19.0 // indirect | ||
golang.org/x/term v0.19.0 // indirect | ||
golang.org/x/text v0.14.0 // indirect | ||
golang.org/x/crypto v0.25.0 // indirect | ||
golang.org/x/mod v0.19.0 // indirect | ||
golang.org/x/oauth2 v0.21.0 // indirect | ||
golang.org/x/sync v0.7.0 // indirect | ||
golang.org/x/sys v0.22.0 // indirect | ||
golang.org/x/term v0.22.0 // indirect | ||
golang.org/x/text v0.16.0 // indirect | ||
golang.org/x/time v0.5.0 // indirect | ||
golang.org/x/tools v0.23.0 // indirect | ||
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect | ||
google.golang.org/appengine v1.6.8 // indirect | ||
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect | ||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b // indirect | ||
google.golang.org/grpc v1.64.1 // indirect | ||
gopkg.in/inf.v0 v0.9.1 // indirect | ||
gopkg.in/yaml.v2 v2.4.0 // indirect | ||
gopkg.in/yaml.v3 v3.0.1 // indirect | ||
k8s.io/apiextensions-apiserver v0.29.3 // indirect | ||
k8s.io/component-base v0.29.3 // indirect | ||
k8s.io/klog/v2 v2.120.1 // indirect | ||
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect | ||
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect | ||
k8s.io/utils v0.0.0-20240310230437-4693a0247e57 // indirect | ||
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect | ||
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect | ||
) | ||
|
||
replace github.com/prometheus/prometheus => github.com/grafana/mimir-prometheus v0.0.0-20240704133652-fb0cb30e280c | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I used the Mimir API client from mimirtool. Unfortunately Mimir uses a fork of the prometheus module, this is why this replace has been added. I could not get it to work without it. This is probably not ideal. If there is another solution or we need to switch to our own client, please let me know There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Given we use the rulefmt wrapper by Mimir and only two methods from the mimir client itself, I wonder if we can get away with not having these extra dependencies and simply write the two API calls with the stdlib HTTP library. Shouldn't be too cumbersome. This would avoid bringing in this big dependency. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Makes sense, I added our own simple Mimir client with basic auth support in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While this is nice if people use kind there are many different ways of running Kubernetes these days. minikube, k3s, or simply via Docker on Mac. Let's just assume there's going to be a Kubernetes cluster available.
It also makes sense to avoid including it in the
Makefile
and instead include these scripts in a Mimir helper script.I'm thinking similar to this: https://github.com/pyrra-dev/pyrra/tree/main/examples/docker-compose
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense. I used kind because I could assign a fixed
NodePort
to easily route the traffic to the service, but I can also just add a port-forward command.I was also torn between adding it to the Makefile vs a script, will do that!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added
examples/mimir/
which includes a README with the instructions. Let me know what you think.