alloy icon indicating copy to clipboard operation
alloy copied to clipboard

Bundle alloy-mixin as release asset

Open rfratto opened this issue 1 year ago • 1 comments

Request

Bundle alloy-mixin as one of the release assets so users can install it without having to clone the repo.

This should likely be bundled as a rendered set of dashboards in a Zip instead of Jsonnet; not everyone will want to install Jsonnet and/or Grizzly to deploy the dashboards.

Use case

Lower the number of steps it takes to gain access to the official Alloy dashboards/alerts.

rfratto avatar Apr 09 '24 22:04 rfratto

Linked to #184

M0NsTeRRR avatar Apr 12 '24 08:04 M0NsTeRRR

This issue has not had any activity in the past 30 days, so the needs-attention label has been added to it. If the opened issue is a bug, check to see if a newer release fixed your issue. If it is no longer relevant, please feel free to close this issue. The needs-attention label signals to maintainers that something has fallen through the cracks. No action is needed by you; your issue will be kept open and you do not have to respond to this comment. The label will be removed the next time this job runs if there is new activity. Thank you for your contributions!

github-actions[bot] avatar May 13 '24 00:05 github-actions[bot]

Is there a documentation somewhere explaining how to generate the dashboard and alert rules provided under the alloy-mixin directory?

algo7 avatar Jul 09 '24 09:07 algo7

Currently trying to figure that out myself. It looks like you need jsonnet and jsonnet-bundler.

Then run within the operations/alloy-mixin directory the install command:

jb install

After that, you should be able to generate the dashboards for my understanding but nothing works.

$ jsonnet dashboards.libsonnet
{ }
$ jsonnet grizzly.jsonnet
RUNTIME ERROR: couldn't open import "github.com/grafana/jsonnet-libs/logs-lib/logs/main.libsonnet": no match locally or in the Jsonnet library paths.
	./grizzly/../././dashboards/alloy-logs.libsonnet:2:23-92	thunk <logsDashboard>
	./grizzly/../././dashboards/alloy-logs.libsonnet:12:9-22	thunk <alloyLogs>
	./grizzly/../././dashboards/alloy-logs.libsonnet:36:24-33	object <anonymous>
	./grizzly/dashboards.jsonnet:23:13-42	object <anonymous>
	./grizzly/dashboards.jsonnet:(15:15)-(26:4)	object <anonymous>
	./grizzly/dashboards.jsonnet:(15:15)-(26:4)	object <anonymous>
	During manifestation

Skaronator avatar Jul 09 '24 15:07 Skaronator

Okay, I figured it out using Grizzly. Not sure if you need the jsonnet bundler from my last post, but this works:

grr export -o json grizzly.jsonnet .

Edit: Okay grizzly exports are not grafana dashboards :roll_eyes: but I think the .spec field is the actual dashboard.

Skaronator avatar Jul 09 '24 15:07 Skaronator

It has been on my TODO to do some upstream PR around this for a while, but sadly I haven't had the time. After getting some help from a Grafana employee, I managed to get this to work.

First, tell grr to only generate local files

grr config set only-spec true
# the grafana token and URL won't be used, but they have to be there for grizzly to work
grr config set grafana.url http://localhost:3000/
grr config set grafana.token abcd12345 #this don't matter

Time to build alloy specific stuff

cd operations/alloy-mixin
grr export grizzly.jsonnet output -o json
# grr also supports yaml output, which can be useful if you want the prometheusRules.
grr export grizzly.jsonnet output2 -o yaml

Make sure you are using grr 0.4.2 or later, else stuff won't work. See https://github.com/grafana/grizzly/pull/436 for more info.

Hopefully this helps @algo7 and @Skaronator

nissessenap avatar Jul 09 '24 15:07 nissessenap

Okay, I figured it out using Grizzly. Not sure if you need the jsonnet bundler from my last post, but this works:

grr export -o json grizzly.jsonnet .

Edit: Okay grizzly exports are not grafana dashboards 🙄 but I think the .spec field is the actual dashboard.

Yes. The spec part of the manifests generated by grr is actually the rules and the dashboards that can be used with Grafana directly.

I did

cat dashboard_or_rule.json | jq ".spec"

and just use the output directly.

algo7 avatar Jul 09 '24 18:07 algo7

It has been on my TODO to do some upstream PR around this for a while, but sadly I haven't had the time. After getting some help from a Grafana employee, I managed to get this to work.

First, tell grr to only generate local files

grr config set only-spec true
# the grafana token and URL won't be used, but they have to be there for grizzly to work
grr config set grafana.url http://localhost:3000/
grr config set grafana.token abcd12345 #this don't matter

Time to build alloy specific stuff

cd operations/alloy-mixin
grr export grizzly.jsonnet output -o json
# grr also supports yaml output, which can be useful if you want the prometheusRules.
grr export grizzly.jsonnet output2 -o yaml

Make sure you are using grr 0.4.2 or later, else stuff won't work. See grafana/grizzly#436 for more info.

Hopefully this helps @algo7 and @Skaronator

I managed to figured it out reading grizzly doc. I was spending so much time with jsonnet and jb when referencing the Kubernetes Mixin

Thanks for replying :+1: . Should help other people facing the similar issue before the doc comes out; and it's good to know that it's on the way :tada:

algo7 avatar Jul 09 '24 18:07 algo7