Skip to content

Commit

Permalink
using jsonnet string formatting instead of concatenation
Browse files Browse the repository at this point in the history
  • Loading branch information
gaantunes committed May 23, 2024
1 parent 73c93b7 commit 25eaee8
Show file tree
Hide file tree
Showing 9 changed files with 285 additions and 197 deletions.
4 changes: 2 additions & 2 deletions operations/alloy-mixin/config.libsonnet
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
_config+:: {
enableK8sCluster: true,
enableK8sCluster: false,
enableAlloyCluster: true,
enableLokiLogs: true,
filterSelector: 'job=~"$job"',
groupSelector: if self.enableK8sCluster then self.filterSelector + ', ' + self.k8sClusterSelector else self.filterSelector,
groupSelector: if self.enableK8sCluster then self.k8sClusterSelector + ', ' + self.filterSelector else self.filterSelector,
instanceSelector: self.groupSelector + ', instance=~"$instance"',
k8sClusterSelector: 'cluster=~"$cluster", namespace=~"$namespace"',
dashboardTag: 'alloy-mixin'
Expand Down
13 changes: 7 additions & 6 deletions operations/alloy-mixin/dashboards.libsonnet
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
local alloyClusterDashboards =
(import './dashboards/controller.libsonnet') +
local alloyClusterDashboards =
(import './dashboards/cluster-node.libsonnet') +
(import './dashboards/cluster-overview.libsonnet') +
(import './config.libsonnet');

local otherDashboards = (import './dashboards/resources.libsonnet') +
(import './dashboards/prometheus.libsonnet') +
(import './dashboards/opentelemetry.libsonnet') +
(import './config.libsonnet');
local otherDashboards =
(import './dashboards/resources.libsonnet') +
(import './dashboards/controller.libsonnet') +
(import './dashboards/prometheus.libsonnet') +
(import './dashboards/opentelemetry.libsonnet') +
(import './config.libsonnet');

(import './dashboards/alloy-logs.libsonnet') +
{
Expand Down
6 changes: 5 additions & 1 deletion operations/alloy-mixin/dashboards/alloy-logs.libsonnet
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
local g = import 'github.com/grafana/grafonnet/gen/grafonnet-v10.0.0/main.libsonnet';
local logsDashboard = import 'github.com/grafana/jsonnet-libs/logs-lib/logs/main.libsonnet';

{

local labels = if $._config.enableK8sCluster then ['cluster', 'namespace', 'job', 'instance', 'level'] else ['job', 'instance', 'level'],

grafanaDashboards+:
if $._config.enableLokiLogs then {
local alloyLogs =
Expand All @@ -9,7 +13,7 @@ local logsDashboard = import 'github.com/grafana/jsonnet-libs/logs-lib/logs/main
datasourceName='loki_datasource',
datasourceRegex='',
filterSelector=$._config.filterSelector,
labels=['cluster', 'namespace', 'instance', 'level'],
labels=labels,
formatParser=null,
showLogsVolume=true
)
Expand Down
108 changes: 70 additions & 38 deletions operations/alloy-mixin/dashboards/cluster-node.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ local filename = 'alloy-cluster-node.json';
local templateVariables =
if $._config.enableK8sCluster then
[
dashboard.newMultiTemplateVariable('job', 'label_values(alloy_component_controller_running_components, job)'),
dashboard.newTemplateVariable('cluster', 'label_values(alloy_component_controller_running_components{job=~"$job"}, cluster)'),
dashboard.newTemplateVariable('namespace', 'label_values(alloy_component_controller_running_components{job=~"$job", cluster=~"$cluster"}, namespace)'),
dashboard.newMultiTemplateVariable('instance', 'label_values(alloy_component_controller_running_components{job=~"$job", cluster=~"$cluster", namespace=~"$namespace"}, instance)'),
dashboard.newTemplateVariable('cluster', 'label_values(alloy_component_controller_running_components, cluster)'),
dashboard.newTemplateVariable('namespace', 'label_values(alloy_component_controller_running_components{cluster=~"$cluster"}, namespace)'),
dashboard.newMultiTemplateVariable('job', 'label_values(alloy_component_controller_running_components{cluster=~"$cluster", namespace=~"$namespace"}, job)'),
dashboard.newMultiTemplateVariable('instance', 'label_values(alloy_component_controller_running_components{cluster=~"$cluster", namespace=~"$namespace", job=~"$job"}, instance)'),
]
else
[
Expand Down Expand Up @@ -53,22 +53,30 @@ local filename = 'alloy-cluster-node.json';
panel.withPosition({ x: 0, y: 1, w: 12, h: 8 }) +
panel.withQueries([
panel.newNamedInstantQuery(
expr='sum(cluster_node_lamport_time{' + $._config.instanceSelector + '})',
expr= |||
sum(cluster_node_lamport_time{%(instanceSelector)s})
||| % $._config,
refId='Lamport clock time',
format='table',
),
panel.newNamedInstantQuery(
expr='sum(cluster_node_update_observers{' + $._config.instanceSelector + '})',
expr= |||
sum(cluster_node_update_observers{%(instanceSelector)s})
||| % $._config,
refId='Internal cluster state observers',
format='table',
),
panel.newNamedInstantQuery(
expr='sum(cluster_node_gossip_health_score{' + $._config.instanceSelector + '})',
expr= |||
sum(cluster_node_gossip_health_score{%(instanceSelector)s})
||| % $._config,
refId='Gossip health score',
format='table',
),
panel.newNamedInstantQuery(
expr='sum(cluster_node_gossip_proto_version{' + $._config.instanceSelector + '})',
expr= |||
sum(cluster_node_gossip_proto_version{%(instanceSelector)s})
||| % $._config,
refId='Gossip protocol version',
format='table',
),
Expand Down Expand Up @@ -104,7 +112,9 @@ local filename = 'alloy-cluster-node.json';
panel.withPosition({ x: 12, y: 1, w: 12, h: 8 }) +
panel.withQueries([
panel.newQuery(
expr='rate(cluster_node_gossip_received_events_total{' + $._config.instanceSelector + '}[$__rate_interval])',
expr= |||
rate(cluster_node_gossip_received_events_total{%(instanceSelector)s}[$__rate_interval])
||| % $._config,
legendFormat='{{event}}'
),
])
Expand All @@ -118,7 +128,9 @@ local filename = 'alloy-cluster-node.json';
panel.withPosition({ x: 0, y: 9, w: 12, h: 8 }) +
panel.withQueries([
panel.newQuery(
expr='sum(cluster_node_peers{' + $._config.instanceSelector + '})',
expr= |||
sum(cluster_node_peers{%(instanceSelector)s})
||| % $._config,
),
]) +
panel.withUnit('suffix:peers')
Expand All @@ -132,7 +144,9 @@ local filename = 'alloy-cluster-node.json';
panel.withPosition({ x: 12, y: 9, w: 12, h: 8 }) +
panel.withQueries([
panel.newQuery(
expr='cluster_node_peers{' + $._config.instanceSelector + '}',
expr= |||
cluster_node_peers{%(instanceSelector)s}
||| % $._config,
legendFormat='{{state}}',
),
]) +
Expand All @@ -154,11 +168,15 @@ local filename = 'alloy-cluster-node.json';
}) +
panel.withQueries([
panel.newQuery(
expr='rate(cluster_transport_rx_bytes_total{' + $._config.instanceSelector + '}[$__rate_interval])',
expr= |||
rate(cluster_transport_rx_bytes_total{%(instanceSelector)s}[$__rate_interval])
||| % $._config,
legendFormat='rx',
),
panel.newQuery(
expr='-1 * rate(cluster_transport_tx_bytes_total{' + $._config.instanceSelector + '}[$__rate_interval])',
expr= |||
-1 * rate(cluster_transport_tx_bytes_total{%(instanceSelector)s}[$__rate_interval])
||| % $._config,
legendFormat='tx',
),
]) +
Expand All @@ -176,19 +194,21 @@ local filename = 'alloy-cluster-node.json';
}) +
panel.withQueries([
panel.newQuery(
expr=
'1 - (
rate(cluster_transport_tx_packets_failed_total{' + $._config.instanceSelector + '}[$__rate_interval]) /
rate(cluster_transport_tx_packets_total{' + $._config.instanceSelector + '}[$__rate_interval])
)',
expr= |||
1 - (
rate(cluster_transport_tx_packets_failed_total{%(instanceSelector)s}[$__rate_interval]) /
rate(cluster_transport_tx_packets_total{%(instanceSelector)s}[$__rate_interval])
)
||| % $._config,
legendFormat='Tx success %',
),
panel.newQuery(
expr=
'1 - (
rate(cluster_transport_rx_packets_failed_total{' + $._config.instanceSelector + '}[$__rate_interval]) /
rate(cluster_transport_rx_packets_total{' + $._config.instanceSelector + '}[$__rate_interval])
)',
expr= |||
1 - (
rate(cluster_transport_rx_packets_failed_total{%(instanceSelector)s}[$__rate_interval]) /
rate(cluster_transport_rx_packets_total{%(instanceSelector)s}[$__rate_interval])
)
||| % $._config,
legendFormat='Rx success %',
),
]) +
Expand All @@ -210,11 +230,15 @@ local filename = 'alloy-cluster-node.json';
}) +
panel.withQueries([
panel.newQuery(
expr='cluster_transport_tx_packet_queue_length{' + $._config.instanceSelector + '}',
expr= |||
cluster_transport_tx_packet_queue_length{%(instanceSelector)s}
||| % $._config,
legendFormat='tx queue',
),
panel.newQuery(
expr='cluster_transport_rx_packet_queue_length{' + $._config.instanceSelector + '}',
expr= |||
cluster_transport_rx_packet_queue_length{%(instanceSelector)s}
||| % $._config,
legendFormat='rx queue',
),
]) +
Expand All @@ -231,11 +255,15 @@ local filename = 'alloy-cluster-node.json';
}) +
panel.withQueries([
panel.newQuery(
expr='rate(cluster_transport_stream_rx_bytes_total{' + $._config.instanceSelector + '}[$__rate_interval])',
expr= |||
rate(cluster_transport_stream_rx_bytes_total{%(instanceSelector)s}[$__rate_interval])
||| % $._config,
legendFormat='rx',
),
panel.newQuery(
expr='-1 * rate(cluster_transport_stream_tx_bytes_total{' + $._config.instanceSelector + '}[$__rate_interval])',
expr= |||
-1 * rate(cluster_transport_stream_tx_bytes_total{%(instanceSelector)s}[$__rate_interval])
||| % $._config,
legendFormat='tx',
),
]) +
Expand All @@ -253,19 +281,21 @@ local filename = 'alloy-cluster-node.json';
}) +
panel.withQueries([
panel.newQuery(
expr=
'1 - (
rate(cluster_transport_stream_tx_packets_failed_total{' + $._config.instanceSelector + '}[$__rate_interval]) /
rate(cluster_transport_stream_tx_packets_total{' + $._config.instanceSelector + '}[$__rate_interval])
)',
expr= |||
1 - (
rate(cluster_transport_stream_tx_packets_failed_total{%(instanceSelector)s}[$__rate_interval]) /
rate(cluster_transport_stream_tx_packets_total{%(instanceSelector)s}[$__rate_interval])
)
||| % $._config,
legendFormat='Tx success %'
),
panel.newQuery(
expr=
'1 - (
rate(cluster_transport_stream_rx_packets_failed_total{' + $._config.instanceSelector + '}[$__rate_interval]) /
rate(cluster_transport_stream_rx_packets_total{' + $._config.instanceSelector + '}[$__rate_interval])
)',
expr= |||
1 - (
rate(cluster_transport_stream_rx_packets_failed_total{%(instanceSelector)s}[$__rate_interval]) /
rate(cluster_transport_stream_rx_packets_total{%(instanceSelector)s}[$__rate_interval])
)
||| % $._config,
legendFormat='Rx success %'
),
]) +
Expand All @@ -287,7 +317,9 @@ local filename = 'alloy-cluster-node.json';
}) +
panel.withQueries([
panel.newQuery(
expr='cluster_transport_streams{' + $._config.instanceSelector + '}',
expr= |||
cluster_transport_streams{%(instanceSelector)s}
||| % $._config,
legendFormat='Open streams'
),
])
Expand Down
34 changes: 17 additions & 17 deletions operations/alloy-mixin/dashboards/cluster-overview.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ local cluster_node_filename = 'alloy-cluster-node.json';
local templateVariables =
if $._config.enableK8sCluster then
[
dashboard.newMultiTemplateVariable('job', 'label_values(alloy_component_controller_running_components, job)'),
dashboard.newTemplateVariable('cluster', 'label_values(alloy_component_controller_running_components{job=~"$job"}, cluster)'),
dashboard.newTemplateVariable('namespace', 'label_values(alloy_component_controller_running_components{job=~"$job", cluster=~"$cluster"}, namespace)'),
dashboard.newTemplateVariable('cluster', 'label_values(alloy_component_controller_running_components, cluster)'),
dashboard.newTemplateVariable('namespace', 'label_values(alloy_component_controller_running_components{cluster=~"$cluster"}, namespace)'),
dashboard.newMultiTemplateVariable('job', 'label_values(alloy_component_controller_running_components{cluster=~"$cluster", namespace=~"$namespace"}, job)'),
]
else
[
Expand All @@ -36,7 +36,7 @@ local cluster_node_filename = 'alloy-cluster-node.json';
panel.withPosition({ h: 9, w: 8, x: 0, y: 0 }) +
panel.withQueries([
panel.newInstantQuery(
expr='count(cluster_node_info{' + $._config.groupSelector + '})'
expr='count(cluster_node_info{%(groupSelector)s})'
),
])
),
Expand All @@ -49,7 +49,7 @@ local cluster_node_filename = 'alloy-cluster-node.json';
panel.withPosition({ h: 9, w: 16, x: 8, y: 0 }) +
panel.withQueries([
panel.newInstantQuery(
expr='cluster_node_info{' + $._config.groupSelector + '}',
expr='cluster_node_info{%(groupSelector)s}',
format='table',
),
]) +
Expand Down Expand Up @@ -127,14 +127,14 @@ local cluster_node_filename = 'alloy-cluster-node.json';
panel.withPosition({ h: 9, w: 8, x: 0, y: 9 }) +
panel.withQueries([
panel.newInstantQuery(
expr=
'clamp((
sum(stddev by (state) (cluster_node_peers{' + $._config.groupSelector + '}) != 0) or
(sum(abs(sum without (state) (cluster_node_peers{' + $._config.groupSelector + '})) - scalar(count(cluster_node_info{' + $._config.groupSelector + '})) != 0))
expr= |||
clamp((
sum(stddev by (state) (cluster_node_peers{%(groupSelector)s}) != 0) or
(sum(abs(sum without (state) (cluster_node_peers{%(groupSelector)s})) - scalar(count(cluster_node_info{%(groupSelector)s})) != 0))
),
1, 1
)'
,
)
||| % $._config,
format='time_series'
),
]) +
Expand Down Expand Up @@ -196,14 +196,14 @@ local cluster_node_filename = 'alloy-cluster-node.json';
panel.withPosition({ h: 9, w: 16, x: 8, y: 9 }) +
panel.withQueries([
panel.newQuery(
expr=
'ceil(clamp((
sum(stddev by (state) (cluster_node_peers{' + $._config.groupSelector + '})) or
(sum(abs(sum without (state) (cluster_node_peers{' + $._config.groupSelector + '})) - scalar(count(cluster_node_info{' + $._config.groupSelector + '}))))
expr= |||
ceil(clamp((
sum(stddev by (state) (cluster_node_peers{%(groupSelector)s})) or
(sum(abs(sum without (state) (cluster_node_peers{%(groupSelector)s})) - scalar(count(cluster_node_info{%(groupSelector)s}))))
),
0, 1
))'
,
))
||| % $._config,
legendFormat='Converged'
),
]) +
Expand Down
Loading

0 comments on commit 25eaee8

Please sign in to comment.