通过在 Grafana cloud 页面 Infrastructure – Kubernetes – Configuration 下配置 grafana 采集配置并获取安装命令
下面是我获取到的部署命令
helm repo add grafana https://grafana.github.io/helm-charts &&
helm repo update &&
helm upgrade --install --atomic --timeout 300s grafana-k8s-monitoring grafana/k8s-monitoring \
--namespace "monitoring" --create-namespace --values - <<EOF
cluster:
name: my-cluster-001
externalServices:
loki:
host: https://logs-prod-eu-west-0.grafana.net
basicAuth:
username: "195213"
password: replacetherealtokenstringoverhere
tempo:
host: https://tempo-eu-west-0.grafana.net:443
basicAuth:
username: "191726"
password: replacetherealtokenstringoverhere
metrics:
enabled: false
alloy:
metricsTuning:
useIntegrationAllowList: false
cost:
enabled: false
kepler:
enabled: false
node-exporter:
enabled: false
logs:
enabled: true
pod_logs:
enabled: true
cluster_events:
enabled: false
traces:
enabled: true
receivers:
grpc:
enabled: true
http:
enabled: true
zipkin:
enabled: true
grafanaCloudMetrics:
enabled: true
opencost:
enabled: false
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
kube-state-metrics:
enabled: false
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
prometheus-node-exporter:
enabled: false
prometheus-operator-crds:
enabled: false
kepler:
enabled: false
alloy:
controller:
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
alloy-events:
controller:
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
alloy-logs:
controller:
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
beyla:
enabled: true
EOF
但是如果直接使用这个命令去部署,在我当前这个版本会得到报错(可能后面会得到grafana团队修复吧)
"grafana" has been added to your repositories
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "ingress-nginx" chart repository
...Successfully got an update from the "metersphere" chart repository
...Successfully got an update from the "jetstack" chart repository
...Successfully got an update from the "hashicorp" chart repository
...Successfully got an update from the "grafana" chart repository
...Successfully got an update from the "prometheus-community" chart repository
...Successfully got an update from the "bitnami" chart repository
Update Complete. ⎈Happy Helming!⎈
Release "grafana-k8s-monitoring" does not exist. Installing it now.
Error: execution error at (k8s-monitoring/charts/beyla/templates/daemon-set.yaml:24:28): if .Values.config.name is not set, then .Values.config.create should be set to true to use default configuration
为此,我也向官方仓库提交了 [issue](https://github.com/grafana/k8s-monitoring-helm/issues/750) ,但未得到回复和帮助,无奈只能自行通过源码解决
git clone https://github.com/grafana/k8s-monitoring-helm.git
直接在拉取下来的 main分支下测试
helm install --debug --dry-run grafana-k8s-monitoring charts/k8s-monitoring \
--namespace "monitoring" --create-namespace --values - <<EOF
cluster:
name: my-cluster-001
externalServices:
loki:
host: https://logs-prod-eu-west-0.grafana.net
basicAuth:
username: "195213"
password: replacetherealtokenstringoverhere=
tempo:
host: https://tempo-eu-west-0.grafana.net:443
basicAuth:
username: "191726"
password: replacetherealtokenstringoverhere=
metrics:
enabled: false
alloy:
metricsTuning:
useIntegrationAllowList: false
cost:
enabled: false
kepler:
enabled: false
node-exporter:
enabled: false
logs:
enabled: true
pod_logs:
enabled: true
cluster_events:
enabled: false
traces:
enabled: true
receivers:
grpc:
enabled: true
http:
enabled: true
zipkin:
enabled: true
grafanaCloudMetrics:
enabled: true
opencost:
enabled: false
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
kube-state-metrics:
enabled: false
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
prometheus-node-exporter:
enabled: false
prometheus-operator-crds:
enabled: false
kepler:
enabled: false
alloy:
controller:
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
alloy-events:
controller:
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
alloy-logs:
controller:
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
beyla:
enabled: true
EOF
会发现同样报错,通过查看源码,发现这个仓库用了 subchart, 错误日志是由 subchart 中的一个判断抛出
但是 subchart 内的配置(values.yaml)是正确的,直接对subchart dry run流程正常,不会报错
cd charts/k8s-monitoring/charts/beyla
helm install --debug --dry-run --namespace "monitoring" --create-namespace beyla .
于是得到问题原因还是出在上一层
最终发现父级 chart里的 beyla.config.create 默认是 false, 需要手动设置为 true(而grafana自动生成的命令中缺失了此处的定义)
于是在上面的命令中再加上 beyla.config.create = true 的配置
...
...
...
beyla:
enabled: true
config:
create: true
EOF
再次运行 dry run 发现一切正常了,但是当把 helm 命令改为真实部署时,会被原子性报错(创建了两个同名的 configmap )
- k8s-monitoring/templates/beyla-config.yaml 创建一个
- k8s-monitoring/charts/beyla/templates/configmap.yaml 创建一个
这肯定是不对的,要去除 subchart 内的configmap, 重新配置 Beyla
...
...
...
beyla:
enabled: true
config:
name: null
create: true
EOF
再次尝试部署后一切正常
下面附上完整的基于源码的部署命令
# helm install --debug --dry-run grafana-k8s-monitoring charts/k8s-monitoring \
helm upgrade --install --atomic --timeout 300s grafana-k8s-monitoring charts/k8s-monitoring \
--namespace "monitoring" --create-namespace --values - <<EOF
cluster:
name: my-cluster-001
externalServices:
loki:
host: https://logs-prod-eu-west-0.grafana.net
basicAuth:
username: "195213"
password: replacetherealtokenstringoverhere=
tempo:
host: https://tempo-eu-west-0.grafana.net:443
basicAuth:
username: "191726"
password: replacetherealtokenstringoverhere=
metrics:
enabled: false
alloy:
metricsTuning:
useIntegrationAllowList: false
cost:
enabled: false
kepler:
enabled: false
node-exporter:
enabled: false
logs:
enabled: true
pod_logs:
enabled: true
cluster_events:
enabled: false
traces:
enabled: true
receivers:
grpc:
enabled: true
http:
enabled: true
zipkin:
enabled: true
grafanaCloudMetrics:
enabled: true
opencost:
enabled: false
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
kube-state-metrics:
enabled: false
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
prometheus-node-exporter:
enabled: false
prometheus-operator-crds:
enabled: false
kepler:
enabled: false
alloy:
controller:
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
alloy-events:
controller:
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
alloy-logs:
controller:
podAnnotations:
kubernetes.azure.com/set-kube-service-host-fqdn: "true"
beyla:
enabled: true
config:
name: null
create: true
EOF
收工!