Compare commits

..

22 Commits

Author SHA1 Message Date
Michel Hollands
cb31d42f57 Temp check in
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-31 13:54:18 +01:00
Michel Hollands
e6db102da8 Put the annotations in the right place
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 17:14:59 +01:00
Michel Hollands
1a33ef0d2b Turn on ci
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 17:06:01 +01:00
Michel Hollands
0e95fcc5cb Add default secret for testing
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:58:07 +01:00
Michel Hollands
f5b0477a2d Use correct name for values file
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:57:40 +01:00
Michel Hollands
2939c3cd63 Add ci dir to chart with local values
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:56:50 +01:00
Michel Hollands
76c8884a3c Add pre-install hook
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:53:26 +01:00
Michel Hollands
edc556b074 Add default secret for testing
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:53:26 +01:00
Michel Hollands
e5e13ac517 Remove empty line
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:53:26 +01:00
Michel Hollands
8b9ed3c9f7 Use correct name for values file
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:53:26 +01:00
Michel Hollands
844708681f Add ci dir to chart with local values
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:53:26 +01:00
Michel Hollands
ce216cd558 Remove unused parameter
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:53:26 +01:00
Michel Hollands
0418d16a1b Fix lint issues
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:53:26 +01:00
Michel Hollands
8cff0e0e75 Fix lint issues
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:53:26 +01:00
Michel Hollands
65995dce4f Empty change to provoke CI
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-22 16:53:26 +01:00
Michel Hollands
4d42fb664d Merge pull request #127 from grafana/chore/update-dependencies
[dependency] Update the subcharts
2024-05-22 09:14:16 +01:00
MichelHollands
9457c25ced Update dependencies 2024-05-22 07:03:07 +00:00
Michel Hollands
ca686afc3e Merge pull request #125 from grafana/update_version
Update to version 1.0
2024-05-14 14:10:13 +01:00
Michel Hollands
4b01214225 Update to version 1.0
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-14 14:09:41 +01:00
Michel Hollands
0e63a86fe5 Merge pull request #124 from grafana/update_main_page
Update the README and docs
2024-05-14 14:08:00 +01:00
Michel Hollands
4e8b2be044 Update the README and docs
Signed-off-by: Michel Hollands <michel.hollands@gmail.com>
2024-05-14 14:06:49 +01:00
Michel Hollands
df12d96f9c Merge pull request #123 from grafana/cleanup_ci
Comment out installation in CI for now
2024-05-14 11:51:24 +01:00
14 changed files with 194 additions and 64 deletions

View File

@@ -20,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@v4
# 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.9
# 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
- 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
# if: steps.list-changed.outputs.changed == 'true'
# with:
# config: "${{ github.workspace }}/.github/configs/cluster-config.yaml"
- 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}"

View File

@@ -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
![local mode](docs/images/Meta%20monitoring%20local.png)
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.
![cloud mode](docs/images/Meta%20monitoring%20cloud.png)
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

View File

@@ -4,7 +4,7 @@ dependencies:
version: 6.5.2
- name: alloy
repository: https://grafana.github.io/helm-charts
version: 0.2.0
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:34e3ee022d624940e12328761d08bffaaa44bf3b2f5ac11bdf18a7818cfc6f46
generated: "2024-05-14T07:03:44.771380539Z"
digest: sha256:0eaa504de24724505fa4fff5169cd86628465ec366c253392c4ed24f15902b6b
generated: "2024-05-22T07:02:54.054326052Z"

View File

@@ -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.
@@ -26,7 +26,7 @@ dependencies:
condition: local.logs.enabled
- name: alloy
repository: https://grafana.github.io/helm-charts
version: 0.2.0
version: 0.3.0
- name: mimir-distributed
repository: https://grafana.github.io/helm-charts
version: 5.3.0

Binary file not shown.

View 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"

View File

@@ -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

View 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 }}

View File

@@ -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:

View File

@@ -41,3 +41,4 @@
{{- if empty .Values.metrics.retain -}}
{{- fail "All metrics will be collected, please specify some in metrics.retain" -}}
{{- end -}}

View File

@@ -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: "*****""

View File

@@ -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:
```

View File

@@ -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: