Skip to content

Commit 8681f17

Browse files
committed
Update cloud-k8s-monitoring and add cloud-dev setup
1 parent 4c7c466 commit 8681f17

File tree

5 files changed

+225
-9
lines changed

5 files changed

+225
-9
lines changed

kubernetes/cloud-dev/.env.local

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# TODO: create .env file in this folder
2+
3+
4+
# The name of your Grafana Cloud Stack, which can be found in the Grafana Cloud portal.
5+
GRAFANA_CLOUD_STACK=your-cloud-stack
6+
7+
8+
# An Access Policy Token that includes the following scopes for the selected Grafana Cloud Stack:
9+
# `stacks:read`, `metrics:write`, `logs:write`, `traces:write`, and `profiles:write`.
10+
# `metrics:read`, `fleet-management:read`
11+
GRAFANA_CLOUD_TOKEN=your-cloud-token
12+
13+
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
// Traces
2+
otelcol.receiver.otlp "default" {
3+
grpc {
4+
endpoint = "0.0.0.0:4317"
5+
}
6+
7+
http {
8+
endpoint = "0.0.0.0:4318"
9+
}
10+
11+
output {
12+
traces = [otelcol.processor.batch.default.input]
13+
}
14+
}
15+
16+
otelcol.processor.batch "default" {
17+
output {
18+
metrics = []
19+
logs = []
20+
traces = [
21+
grafana_cloud.stack.receivers.traces,
22+
]
23+
}
24+
}
25+
26+
// Metrics: kube-state-metrics
27+
// TODO: install kube-state-metrics in your minikube cluster:
28+
discovery.kubernetes "kube_state_metrics" {
29+
role = "pod"
30+
selectors {
31+
role = "pod"
32+
label = "app.kubernetes.io/name=kube-state-metrics"
33+
}
34+
namespaces {
35+
names = ["kube-system", "monitoring"]
36+
}
37+
}
38+
39+
discovery.relabel "kube_state_metrics" {
40+
rule {
41+
source_labels = ["__meta_kubernetes_pod_container_port_name"]
42+
regex = "http"
43+
action = "keep"
44+
}
45+
// rule {
46+
// source_labels = ["__meta_kubernetes_pod_container_port_name"]
47+
// regex = "http-metrics"
48+
// action = "keep"
49+
// }
50+
rule {
51+
target_label = "service"
52+
replacement = "quickpizza"
53+
}
54+
rule {
55+
target_label = "service_namespace"
56+
replacement = "quickpizza"
57+
}
58+
rule {
59+
target_label = "cluster"
60+
replacement = "minikube"
61+
}
62+
rule {
63+
target_label = "job"
64+
replacement = "kube-state-metrics"
65+
}
66+
rule {
67+
target_label = "instance"
68+
source_labels = [
69+
"__meta_kubernetes_pod_name",
70+
]
71+
}
72+
rule {
73+
target_label = "namespace"
74+
source_labels = [
75+
"__meta_kubernetes_pod_namespace",
76+
]
77+
}
78+
rule {
79+
source_labels = ["__meta_kubernetes_pod_annotation_prometheus_io_scrape"]
80+
regex = "true"
81+
action = "keep"
82+
}
83+
targets = discovery.kubernetes.kube_state_metrics.targets
84+
}
85+
prometheus.scrape "kube_state_metrics" {
86+
scrape_interval = "10s"
87+
forward_to = [grafana_cloud.stack.receivers.metrics]
88+
targets = discovery.relabel.kube_state_metrics.output
89+
}
90+
91+
92+
discovery.kubernetes "application_pods" {
93+
selectors {
94+
label = "app.k8s.io/name=quickpizza"
95+
role = "pod"
96+
}
97+
role = "pod"
98+
namespaces {
99+
own_namespace = true
100+
}
101+
}
102+
103+
discovery.relabel "application_pods" {
104+
rule {
105+
target_label = "instance"
106+
source_labels = [
107+
"__meta_kubernetes_pod_name",
108+
]
109+
}
110+
rule {
111+
target_label = "service_namespace"
112+
source_labels = [
113+
// quickpizza
114+
"__meta_kubernetes_pod_label_app_k8s_io_name",
115+
]
116+
}
117+
rule {
118+
target_label = "service_name"
119+
source_labels = [
120+
"__meta_kubernetes_pod_label_app_kubernetes_io_instance",
121+
]
122+
}
123+
rule {
124+
target_label = "cluster"
125+
replacement = "minikube"
126+
}
127+
targets = discovery.kubernetes.application_pods.targets
128+
}
129+
130+
// Metrics: application pods
131+
prometheus.scrape "application_pods" {
132+
scrape_interval = "10s"
133+
forward_to = [grafana_cloud.stack.receivers.metrics]
134+
targets = discovery.relabel.application_pods.output
135+
}
136+
137+
// Logs: application pods
138+
loki.source.kubernetes "application_pods" {
139+
forward_to = [grafana_cloud.stack.receivers.logs]
140+
targets = discovery.relabel.application_pods.output
141+
}
142+
143+
144+
// TODO: not working
145+
pyroscope.receive_http "default" {
146+
forward_to = [grafana_cloud.stack.receivers.profiles]
147+
http {
148+
listen_address = "127.0.0.1"
149+
listen_port = 9999
150+
}
151+
}
152+
153+
import.git "grafana_cloud" {
154+
repository = "https://github.com/grafana/alloy-modules.git"
155+
revision = "main"
156+
path = "modules/cloud/grafana/cloud/module.alloy"
157+
pull_frequency = "0s"
158+
}
159+
160+
grafana_cloud.stack "receivers" {
161+
stack_name = env("GRAFANA_CLOUD_STACK")
162+
token = env("GRAFANA_CLOUD_TOKEN")
163+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
2+
3+
# This environment is intended to for testing purpose
4+
resources:
5+
- ../base
6+
- ../base/resources/grafana-alloy
7+
8+
9+
# For telemetry functionality, change the following lines to match your configuration.
10+
secretGenerator:
11+
- name: grafana-alloy-credentials
12+
envs:
13+
- .env
14+
15+
# You can use the following generator to add additional environment variables to all QuickPizza pods.
16+
configMapGenerator:
17+
- name: quickpizza-env
18+
literals:
19+
# Trust all incoming TraceIDs for demo purposes.
20+
- QUICKPIZZA_TRUST_CLIENT_TRACEID=true
21+
- QUICKPIZZA_OTEL_SERVICE_NAME_LEGACY=1
22+
# TODO: not working
23+
- QUICKPIZZA_PYROSCOPE_ENDPOINT=http://grafana-alloy:9999
24+
- name: alloy-config
25+
files:
26+
- ./config/config.alloy
27+
- name: tracing-env
28+
literals:
29+
- QUICKPIZZA_OTLP_ENDPOINT=http://grafana-alloy:4318

kubernetes/cloud-k8s-monitoring/config/config.alloy

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,30 @@ otelcol.processor.batch "default" {
2323
}
2424
}
2525

26+
// Metrics: kube-state-metrics
27+
// TODO: install kube-state-metrics in your minikube cluster:
2628
discovery.kubernetes "kube_state_metrics" {
2729
role = "pod"
2830
selectors {
2931
role = "pod"
32+
label = "app.kubernetes.io/name=kube-state-metrics"
3033
}
3134
namespaces {
32-
own_namespace = false
3335
names = ["kube-system", "monitoring"]
3436
}
3537
}
3638

3739
discovery.relabel "kube_state_metrics" {
40+
rule {
41+
source_labels = ["__meta_kubernetes_pod_container_port_name"]
42+
regex = "http"
43+
action = "keep"
44+
}
45+
// rule {
46+
// source_labels = ["__meta_kubernetes_pod_container_port_name"]
47+
// regex = "http-metrics"
48+
// action = "keep"
49+
// }
3850
rule {
3951
target_label = "service"
4052
replacement = "quickpizza"
@@ -63,19 +75,13 @@ discovery.relabel "kube_state_metrics" {
6375
"__meta_kubernetes_pod_namespace",
6476
]
6577
}
66-
rule {
67-
source_labels = ["__meta_kubernetes_pod_container_port_name"]
68-
regex = "http-metrics"
69-
action = "keep"
70-
}
7178
rule {
7279
source_labels = ["__meta_kubernetes_pod_annotation_prometheus_io_scrape"]
7380
regex = "true"
7481
action = "keep"
7582
}
7683
targets = discovery.kubernetes.kube_state_metrics.targets
7784
}
78-
7985
prometheus.scrape "kube_state_metrics" {
8086
scrape_interval = "10s"
8187
forward_to = [grafana_cloud.stack.receivers.metrics]
@@ -121,18 +127,21 @@ discovery.relabel "application_pods" {
121127
targets = discovery.kubernetes.application_pods.targets
122128
}
123129

130+
// Metrics: application pods
124131
prometheus.scrape "application_pods" {
125132
scrape_interval = "10s"
126133
forward_to = [grafana_cloud.stack.receivers.metrics]
127134
targets = discovery.relabel.application_pods.output
128135
}
129136

130-
// Logs
131-
loki.source.kubernetes "pods" {
137+
// Logs: application pods
138+
loki.source.kubernetes "application_pods" {
132139
forward_to = [grafana_cloud.stack.receivers.logs]
133140
targets = discovery.relabel.application_pods.output
134141
}
135142

143+
144+
// TODO: not working
136145
pyroscope.receive_http "default" {
137146
forward_to = [grafana_cloud.stack.receivers.profiles]
138147
http {

kubernetes/cloud-k8s-monitoring/kustomization.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
2+
# This environment is intended to test Grafana Kubernetes Monitoring integration.
13
resources:
24
- ../base
35
- ../base/resources/grafana-alloy

0 commit comments

Comments
 (0)