forked from RemoteSync/grafana-meta-monitoring-chart
Compare commits
29 Commits
add_ksm_do
...
test_branc
Author | SHA1 | Date | |
---|---|---|---|
|
cb31d42f57 | ||
|
e6db102da8 | ||
|
1a33ef0d2b | ||
|
0e95fcc5cb | ||
|
f5b0477a2d | ||
|
2939c3cd63 | ||
|
76c8884a3c | ||
|
edc556b074 | ||
|
e5e13ac517 | ||
|
8b9ed3c9f7 | ||
|
844708681f | ||
|
ce216cd558 | ||
|
0418d16a1b | ||
|
8cff0e0e75 | ||
|
65995dce4f | ||
|
4d42fb664d | ||
|
9457c25ced | ||
|
ca686afc3e | ||
|
4b01214225 | ||
|
0e63a86fe5 | ||
|
4e8b2be044 | ||
|
df12d96f9c | ||
|
fcb5de6793 | ||
|
661662caec | ||
|
2a681ce1eb | ||
|
52e4516e04 | ||
|
95085c4e72 | ||
|
55d3c9d723 | ||
|
3658769c7a |
19
.github/configs/cluster-config.yaml
vendored
Normal file
19
.github/configs/cluster-config.yaml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
apiVersion: kind.x-k8s.io/v1alpha4
|
||||
kind: Cluster
|
||||
nodes:
|
||||
- role: control-plane
|
||||
kubeadmConfigPatches:
|
||||
- |
|
||||
kind: ClusterConfiguration
|
||||
controllerManager:
|
||||
extraArgs:
|
||||
bind-address: 0.0.0.0
|
||||
secure-port: "10257"
|
||||
scheduler:
|
||||
extraArgs:
|
||||
bind-address: 0.0.0.0
|
||||
secure-port: "10259"
|
||||
- |
|
||||
kind: KubeProxyConfiguration
|
||||
metricsBindAddress: 0.0.0.0:10249
|
||||
- role: worker
|
77
.github/workflows/helm-ci.yml
vendored
77
.github/workflows/helm-ci.yml
vendored
@@ -1,6 +1,7 @@
|
||||
---
|
||||
name: helm-ci
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- "charts/meta-monitoring/**"
|
||||
@@ -19,48 +20,48 @@ jobs:
|
||||
- name: Lint Yaml
|
||||
run: make helm-lint
|
||||
|
||||
# call-test:
|
||||
# name: Test Helm Chart
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - name: Checkout
|
||||
# uses: actions/checkout@v3
|
||||
# with:
|
||||
# fetch-depth: 0
|
||||
call-test:
|
||||
name: Test Helm Chart
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
# - name: Set up Helm
|
||||
# uses: azure/setup-helm@v3
|
||||
# with:
|
||||
# version: v3.8.2
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v3
|
||||
with:
|
||||
version: v3.14.0
|
||||
|
||||
# # Python is required because `ct lint` runs Yamale (https://github.com/23andMe/Yamale) and
|
||||
# # yamllint (https://github.com/adrienverge/yamllint) which require Python
|
||||
# - name: Set up Python
|
||||
# uses: actions/setup-python@v4
|
||||
# with:
|
||||
# python-version: 3.7
|
||||
# Python is required because `ct lint` runs Yamale (https://github.com/23andMe/Yamale) and
|
||||
# yamllint (https://github.com/adrienverge/yamllint) which require Python
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.9
|
||||
|
||||
# - name: Set up chart-testing
|
||||
# uses: helm/chart-testing-action@v2.4.0
|
||||
- name: Set up chart-testing
|
||||
uses: helm/chart-testing-action@v2
|
||||
|
||||
# - name: Run chart-testing (list-changed)
|
||||
# id: list-changed
|
||||
# run: |
|
||||
# changed=$(ct list-changed --config "${CT_CONFIGFILE}")
|
||||
# if [[ -n "$changed" ]]; then
|
||||
# echo "changed=true" >> $GITHUB_OUTPUT
|
||||
# fi
|
||||
- name: Run chart-testing (list-changed)
|
||||
id: list-changed
|
||||
run: |
|
||||
changed=$(ct list-changed --config "${CT_CONFIGFILE}")
|
||||
if [[ -n "$changed" ]]; then
|
||||
echo "changed=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
# - name: Run chart-testing (lint)
|
||||
# run: ct lint --config "${CT_CONFIGFILE}" --check-version-increment=false
|
||||
- name: Run chart-testing (lint)
|
||||
run: ct lint --config "${CT_CONFIGFILE}" --check-version-increment=false
|
||||
|
||||
# - name: Create kind cluster
|
||||
# uses: helm/kind-action@v1.8.0
|
||||
# if: steps.list-changed.outputs.changed == 'true'
|
||||
# with:
|
||||
# config: tools/kind.config
|
||||
- name: Create kind cluster
|
||||
uses: helm/kind-action@v1
|
||||
if: steps.list-changed.outputs.changed == 'true'
|
||||
with:
|
||||
config: "${{ github.workspace }}/.github/configs/cluster-config.yaml"
|
||||
|
||||
# - name: Run chart-testing (install)
|
||||
# run: |
|
||||
# changed=$(ct list-changed --config "${CT_CONFIGFILE}")
|
||||
# ct install --config "${CT_CONFIGFILE}"
|
||||
- name: Run chart-testing (install)
|
||||
run: |
|
||||
changed=$(ct list-changed --config "${CT_CONFIGFILE}")
|
||||
ct install --config "${CT_CONFIGFILE}"
|
||||
|
16
README.md
16
README.md
@@ -1,8 +1,6 @@
|
||||
# meta-monitoring-chart
|
||||
|
||||
This is a meta-monitoring chart for Loki.
|
||||
|
||||
Note that this is pre-production software at the moment.
|
||||
This is a meta-monitoring chart for Loki, specifically Loki installed via the Loki helm chart.
|
||||
|
||||
## Local and cloud modes
|
||||
|
||||
@@ -11,19 +9,15 @@ to small Loki, Mimir and Tempo installations running in the meta-monitoring name
|
||||
|
||||

|
||||
|
||||
To enable local mode set `local.<logs|metrics|traces>.enabled` to true.
|
||||
|
||||
In the cloud mode the logs, metrics and/or traces are sent to Grafana Cloud.
|
||||
|
||||

|
||||
|
||||
To enable cloud mode set `cloud.<logs|metrics|traces>.enabled` to true. The `endpoint`, `username` and `password` settings for your Grafana Cloud logs, metrics and traces instances have to be filled in as well.
|
||||
|
||||
Both modes can be enabled at the same time. Cloud mode is preferred.
|
||||
|
||||
## Installation
|
||||
|
||||
For more instructions including how to update the chart go to the [installation](docs/installation.md) page.
|
||||
For more instructions including how to install the chart go to the [installation](docs/installation.md) page.
|
||||
|
||||
## Supported features
|
||||
|
||||
@@ -33,8 +27,7 @@ For more instructions including how to update the chart go to the [installation]
|
||||
- Specify PII regexes that are applied to logs before they are sent to Loki (cloud or local). The capture group in the regex is replaced with *****.
|
||||
- a Grafana instance is installed (when local mode is used) with the relevant datasources installed. The following dashboards are installed:
|
||||
- logs dashboards
|
||||
- agent dashboards
|
||||
- Retention is set to 24 hours
|
||||
- Alloy dashboards
|
||||
|
||||
Most of these features are enabled by default. See the values.yaml file for how to enable/disable them.
|
||||
|
||||
@@ -42,8 +35,7 @@ Most of these features are enabled by default. See the values.yaml file for how
|
||||
|
||||
- This has not been tested on Openshift yet.
|
||||
- The underlying Loki, Mimir and Tempo are at the default size installed by the Helm chart. This might need changing when monitoring bigger Loki, Mimir or Tempo installations.
|
||||
- MinIO is used as storage at the moment with a limited retention. At the moment this chart cannot be used for monitoring over longer periods.
|
||||
- Agent self monitoring is not done at the moment.
|
||||
- MinIO is used as storage for the local mode at the moment with a limited retention. At the moment this chart cannot be used for monitoring over longer periods.
|
||||
|
||||
## Developer help topics
|
||||
|
||||
|
@@ -1,10 +1,10 @@
|
||||
dependencies:
|
||||
- name: loki
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 6.5.1
|
||||
version: 6.5.2
|
||||
- name: alloy
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 0.1.1
|
||||
version: 0.3.0
|
||||
- name: mimir-distributed
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 5.3.0
|
||||
@@ -14,5 +14,5 @@ dependencies:
|
||||
- name: minio
|
||||
repository: https://charts.min.io
|
||||
version: 5.2.0
|
||||
digest: sha256:e0c7af6d328fe35f4b9a3557235f458d92225b84b1366dbb77c4626d3cdb5be9
|
||||
generated: "2024-05-09T07:02:42.911579524Z"
|
||||
digest: sha256:0eaa504de24724505fa4fff5169cd86628465ec366c253392c4ed24f15902b6b
|
||||
generated: "2024-05-22T07:02:54.054326052Z"
|
||||
|
@@ -13,7 +13,7 @@ type: application
|
||||
# This is the chart version. This version number should be incremented each time you make changes
|
||||
# to the chart and its templates, including the app version.
|
||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||
version: 0.0.3
|
||||
version: 1.0.0
|
||||
# This is the version number of the application being deployed. This version number should be
|
||||
# incremented each time you make changes to the application. Versions are not expected to
|
||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||
@@ -22,11 +22,11 @@ appVersion: "0.0.1"
|
||||
dependencies:
|
||||
- name: loki
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 6.5.1
|
||||
version: 6.5.2
|
||||
condition: local.logs.enabled
|
||||
- name: alloy
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 0.1.1
|
||||
version: 0.3.0
|
||||
- name: mimir-distributed
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 5.3.0
|
||||
|
Binary file not shown.
BIN
charts/meta-monitoring/charts/alloy-0.3.0.tgz
Normal file
BIN
charts/meta-monitoring/charts/alloy-0.3.0.tgz
Normal file
Binary file not shown.
Binary file not shown.
BIN
charts/meta-monitoring/charts/loki-6.5.2.tgz
Normal file
BIN
charts/meta-monitoring/charts/loki-6.5.2.tgz
Normal file
Binary file not shown.
116
charts/meta-monitoring/ci/local-values.yaml
Normal file
116
charts/meta-monitoring/ci/local-values.yaml
Normal file
@@ -0,0 +1,116 @@
|
||||
namespacesToMonitor:
|
||||
- loki
|
||||
|
||||
local:
|
||||
grafana:
|
||||
enabled: true
|
||||
logs:
|
||||
enabled: true
|
||||
metrics:
|
||||
enabled: true
|
||||
traces:
|
||||
enabled: true
|
||||
minio:
|
||||
enabled: true
|
||||
createSecret: false
|
||||
|
||||
cloud:
|
||||
logs:
|
||||
enabled: false
|
||||
secret: logs
|
||||
metrics:
|
||||
enabled: false
|
||||
secret: metrics
|
||||
traces:
|
||||
enabled: false
|
||||
secret: traces
|
||||
|
||||
grafana:
|
||||
ingress:
|
||||
hosts:
|
||||
- host: monitoring.example.com
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
|
||||
minio:
|
||||
existingSecret: ""
|
||||
rootUser: "abcdefghi"
|
||||
rootPassword: "defghijkl"
|
||||
|
||||
loki:
|
||||
deploymentMode: SingleBinary
|
||||
singleBinary:
|
||||
replicas: 1
|
||||
resources:
|
||||
limits:
|
||||
cpu: 3
|
||||
memory: 4Gi
|
||||
requests:
|
||||
cpu: 2
|
||||
memory: 2Gi
|
||||
extraEnv:
|
||||
# Keep a little bit lower than memory limits
|
||||
- name: GOMEMLIMIT
|
||||
value: 3750MiB
|
||||
|
||||
chunksCache:
|
||||
# default is 500MB, with limited memory keep this smaller
|
||||
writebackSizeLimit: 10MB
|
||||
|
||||
# Zero out replica counts of other deployment modes
|
||||
backend:
|
||||
replicas: 0
|
||||
read:
|
||||
replicas: 0
|
||||
write:
|
||||
replicas: 0
|
||||
|
||||
ingester:
|
||||
replicas: 0
|
||||
querier:
|
||||
replicas: 0
|
||||
queryFrontend:
|
||||
replicas: 0
|
||||
queryScheduler:
|
||||
replicas: 0
|
||||
distributor:
|
||||
replicas: 0
|
||||
compactor:
|
||||
replicas: 0
|
||||
indexGateway:
|
||||
replicas: 0
|
||||
bloomCompactor:
|
||||
replicas: 0
|
||||
bloomGateway:
|
||||
replicas: 0
|
||||
|
||||
mimir-distributed:
|
||||
minio:
|
||||
enabled: false
|
||||
global:
|
||||
extraEnvFrom:
|
||||
- secretRef:
|
||||
name: "meta-minio"
|
||||
|
||||
tempo-distributed:
|
||||
distributor:
|
||||
extraEnvFrom:
|
||||
- secretRef:
|
||||
name: "meta-minio"
|
||||
ingester:
|
||||
extraEnvFrom:
|
||||
- secretRef:
|
||||
name: "meta-minio"
|
||||
compactor:
|
||||
extraEnvFrom:
|
||||
- secretRef:
|
||||
name: "meta-minio"
|
||||
querier:
|
||||
extraEnvFrom:
|
||||
- secretRef:
|
||||
name: "meta-minio"
|
||||
queryFrontend:
|
||||
extraEnvFrom:
|
||||
- secretRef:
|
||||
name: "meta-minio"
|
@@ -6,6 +6,5 @@ chart-dirs:
|
||||
chart-repos:
|
||||
- grafana=https://grafana.github.io/helm-charts
|
||||
- minio=https://charts.min.io
|
||||
helm-extra-args: --timeout 1200s
|
||||
check-version-increment: false
|
||||
validate-maintainers: false
|
||||
|
13
charts/meta-monitoring/templates/minio/secret.yaml
Normal file
13
charts/meta-monitoring/templates/minio/secret.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
{{- if .Values.local.minio.createSecret }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: minio
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
annotations:
|
||||
"helm.sh/hook": pre-install
|
||||
"helm.sh/hook-weight": "-5"
|
||||
data:
|
||||
rootUser: dmFsdWUtMg0KDQo=
|
||||
rootPassword: dmFsdWUtMg0KDQo=
|
||||
{{- end }}
|
@@ -51,7 +51,11 @@ spec:
|
||||
protocol: TCP
|
||||
envFrom:
|
||||
- secretRef:
|
||||
{{- if .Values.local.minio.enabled }}
|
||||
name: {{ $.Release.Namespace }}-minio
|
||||
{{- else }}
|
||||
name: minio
|
||||
{{- end }}
|
||||
readinessProbe:
|
||||
failureThreshold: 3
|
||||
httpGet:
|
||||
|
@@ -41,3 +41,4 @@
|
||||
{{- if empty .Values.metrics.retain -}}
|
||||
{{- fail "All metrics will be collected, please specify some in metrics.retain" -}}
|
||||
{{- end -}}
|
||||
|
||||
|
@@ -26,7 +26,8 @@ local:
|
||||
traces:
|
||||
enabled: false
|
||||
minio:
|
||||
enabled: false # This should be set to true if any of the previous is enabled
|
||||
enabled: false # This should be set to true if any of the previous is enabled
|
||||
createSecret: false # This is used for testing, do not use in production
|
||||
grafana:
|
||||
version: 10.4.2
|
||||
# Gateway ingress configuration
|
||||
@@ -52,14 +53,14 @@ grafana:
|
||||
# port:
|
||||
# number: TODO
|
||||
# -- TLS configuration for the gateway ingress. Hosts passed through the `tpl` function to allow templating
|
||||
#tls:
|
||||
# tls:
|
||||
# - secretName: grafana-tls
|
||||
# hosts:
|
||||
# - monitoring.example.com
|
||||
logs:
|
||||
# Adding regexes here will add a stage.replace block for logs. For more information see
|
||||
# https://grafana.com/docs/agent/latest/flow/reference/components/loki.process/#stagereplace-block
|
||||
piiRegexes: null # This example replaces the word after password with *****
|
||||
piiRegexes: null # This example replaces the word after password with *****
|
||||
# - expression: "password (\\\\S+)"
|
||||
# source: "" # Empty uses the log message
|
||||
# replace: "*****""
|
||||
|
@@ -1,8 +1,12 @@
|
||||
# Update the dependencies
|
||||
|
||||
The dependencies are the version of Loki, Mimir, Agent and so on that are included in this chart.
|
||||
The dependencies are the versions of Loki, Mimir, Agent and so on that are included in this chart.
|
||||
The current versions can be found in the [Chart.yaml](../charts/meta-monitoring/Chart.yaml) file.
|
||||
|
||||
A Github action runs daily to see if updated versions are available. A PR will be created.
|
||||
|
||||
The manual steps are as follows:
|
||||
|
||||
Run this in the charts/meta-monitoring directory after updating a dependency:
|
||||
|
||||
```
|
||||
|
@@ -4,7 +4,7 @@
|
||||
|
||||
1. Use an existing Grafana Cloud account or setup a new one. Then create an access token:
|
||||
|
||||
1. In Grafana go to Administration -> Users and Access -> Cloud access policies.
|
||||
1. In a Grafana instance on Grafana Cloud go to Administration -> Users and Access -> Cloud access policies.
|
||||
|
||||
1. Click `Create access policy`.
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
--from-literal=endpoint='https://otlp-gateway-prod-us-east-0.grafana.net/otlp'
|
||||
```
|
||||
|
||||
The logs, metrics and traces usernames are the `User / Username / Instance IDs` of the Loki, Prometheus/Mimir and OpenTelemetry instances in Grafana Cloud. From `Home` in Grafana click on `Stacks`. Then go to the `Details` pages of Loki and Prometheus/Mimir. For OpenTelemetry go to the `Configure` page.
|
||||
The logs, metrics and traces usernames are the `User / Username / Instance IDs` of the Loki, Prometheus/Mimir and OpenTelemetry instances in Grafana Cloud. From `Home` in Grafana click on `Stacks`. Then go to the `Details` pages of Loki and Prometheus/Mimir. For OpenTelemetry go to the `Configure` page. The endpoints will also have to be changed to match your settings.
|
||||
|
||||
1. Create a values.yaml file based on the [default one](../charts/meta-monitoring/values.yaml). Fill in the names of the secrets created above as needed. An example minimal values.yaml looks like this:
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
enabled: true
|
||||
```
|
||||
|
||||
## Installing the chart
|
||||
## Installing, updating and deleting the chart
|
||||
|
||||
1. Add the repo
|
||||
|
||||
@@ -175,7 +175,7 @@ For each of the dashboard files in charts/meta-monitoring/src/dashboards folder
|
||||
|
||||
## Configure Loki to send traces
|
||||
|
||||
1. In the Loki config enable tracing:
|
||||
1. In the Loki that is being monitored enable tracing in the config:
|
||||
|
||||
```
|
||||
loki:
|
||||
|
Reference in New Issue
Block a user