forked from RemoteSync/grafana-meta-monitoring-chart
Compare commits
33 Commits
remove_rev
...
more_docs_
Author | SHA1 | Date | |
---|---|---|---|
|
1f980f393e | ||
|
47d9190eda | ||
|
5ff9bd16c9 | ||
|
2d711f7168 | ||
|
c666bf69c9 | ||
|
41619b99b1 | ||
|
5923139796 | ||
|
329d5822ea | ||
|
5498b27ad6 | ||
|
da687315e7 | ||
|
8f20e45c77 | ||
|
e81b1246f5 | ||
|
b103fb3434 | ||
|
9349d2d906 | ||
|
31536103c8 | ||
|
13c28aa50a | ||
|
385d0dd543 | ||
|
458451922d | ||
|
4b0d457af0 | ||
|
e60b2aecdc | ||
|
6244de677e | ||
|
d14e933e84 | ||
|
0210fba39d | ||
|
a97fa64880 | ||
|
34545e15b4 | ||
|
33b8e37bed | ||
|
0938193982 | ||
|
b1975505e5 | ||
|
c282bf352d | ||
|
60af0b4d19 | ||
|
0980cb2ede | ||
|
75ab1f0d97 | ||
|
095fb09d26 |
3
.github/configs/cr.yaml
vendored
Normal file
3
.github/configs/cr.yaml
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
owner: grafana
|
||||
git-repo: helm-charts
|
||||
skip-existing: true
|
15
.github/configs/ct.yaml
vendored
Normal file
15
.github/configs/ct.yaml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
## Reference: https://github.com/helm/chart-testing/blob/master/doc/ct_lint-and-install.md
|
||||
remote: origin
|
||||
target-branch: main
|
||||
chart-dirs:
|
||||
- charts
|
||||
chart-repos:
|
||||
- grafana=https://grafana.github.io/helm-charts
|
||||
- minio=https://charts.min.io
|
||||
validate-chart-schema: true
|
||||
validate-maintainers: true
|
||||
validate-yaml: true
|
||||
exclude-deprecated: true
|
||||
excluded-charts: []
|
||||
namespace: meta-monitoring # Need to set the namespace because we create the secret there
|
||||
release-label: app.kubernetes.io/instance
|
175
.github/workflows/helm-release.yml
vendored
Normal file
175
.github/workflows/helm-release.yml
vendored
Normal file
@@ -0,0 +1,175 @@
|
||||
name: Release Helm chart
|
||||
on:
|
||||
workflow_dispatch:
|
||||
env:
|
||||
CR_CONFIGFILE: "${{ github.workspace }}/source/.github/configs/cr.yaml"
|
||||
CT_CONFIGFILE: "${{ github.workspace }}/source/.github/configs/ct.yaml"
|
||||
CR_INDEX_PATH: "${{ github.workspace }}/.cr-index"
|
||||
CR_PACKAGE_PATH: "${{ github.workspace }}/.cr-release-packages"
|
||||
CR_TOOL_PATH: "${{ github.workspace }}/.cr-tool"
|
||||
CR_VERSION: "1.5.0"
|
||||
jobs:
|
||||
setup:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
changed: ${{ steps.list-changed.outputs.changed }}
|
||||
chartpath: ${{ steps.list-changed.outputs.chartpath }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
path: source
|
||||
|
||||
- name: Install chart-testing
|
||||
uses: helm/chart-testing-action@v2
|
||||
|
||||
- name: List changed charts
|
||||
id: list-changed
|
||||
run: |
|
||||
cd source
|
||||
|
||||
latest_tag=$( if ! git describe --tags --abbrev=0 --match='helm-chart/*' 2> /dev/null ; then git rev-list --max-parents=0 --first-parent HEAD; fi )
|
||||
|
||||
echo "Running: ct list-changed --config ${CT_CONFIGFILE} --since ${latest_tag} --target-branch ${{ github.ref_name }}"
|
||||
changed=$(ct list-changed --config "${CT_CONFIGFILE}" --since "${latest_tag}" --target-branch "${{ github.ref_name }}")
|
||||
echo "${changed}"
|
||||
|
||||
num_changed=$(wc -l <<< ${changed})
|
||||
if [[ "${num_changed}" -gt "1" ]] ; then
|
||||
echo "More than one chart changed, exiting"
|
||||
exit 1
|
||||
fi
|
||||
if [[ -n "${changed}" ]]; then
|
||||
name=$(yq ".name" < ${changed}/Chart.yaml)
|
||||
version=$(yq ".version" < ${changed}/Chart.yaml)
|
||||
tagname="v${version}"
|
||||
|
||||
if [ $(git tag -l "${tagname}") ]; then
|
||||
echo "Tag ${tagname} already exists, skipping release"
|
||||
echo "changed=false" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "Releasing ${changed}"
|
||||
echo "changed=true" >> $GITHUB_OUTPUT
|
||||
echo "chartpath=${changed}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
else
|
||||
echo "No charts have changed, skipping release"
|
||||
echo "changed=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
release:
|
||||
needs: [setup]
|
||||
runs-on: ubuntu-latest
|
||||
if: needs.setup.outputs.changed == 'true'
|
||||
permissions:
|
||||
contents: write
|
||||
id-token: write
|
||||
steps:
|
||||
- id: get-secrets
|
||||
uses: grafana/shared-workflows/actions/get-vault-secrets@main
|
||||
with:
|
||||
# Secrets placed in the ci/repo/grafana/<repo>/<path> path in Vault
|
||||
repo_secrets: |
|
||||
APP_ID=github-app:app-id
|
||||
PRIVATE_KEY=github-app:private-key
|
||||
- uses: actions/create-github-app-token@v1
|
||||
id: app-token
|
||||
with:
|
||||
app-id: ${{ env.APP_ID }}
|
||||
private-key: ${{ env.PRIVATE_KEY }}
|
||||
owner: ${{ github.repository_owner }}
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
path: source
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
cd source
|
||||
git config user.name "$GITHUB_ACTOR"
|
||||
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||
|
||||
- name: Checkout helm-charts
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
repository: grafana/helm-charts
|
||||
path: helm-charts
|
||||
token: "${{ steps.app-token.outputs.token }}"
|
||||
|
||||
- name: Configure Git for helm-charts
|
||||
run: |
|
||||
cd helm-charts
|
||||
git config user.name "$GITHUB_ACTOR"
|
||||
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v4
|
||||
|
||||
- name: Parse Chart.yaml
|
||||
id: parse-chart
|
||||
run: |
|
||||
cd source
|
||||
changed="${{ needs.setup.outputs.chartpath }}"
|
||||
description=$(yq ".description" < ${changed}/Chart.yaml)
|
||||
name=$(yq ".name" < ${changed}/Chart.yaml)
|
||||
version=$(yq ".version" < ${changed}/Chart.yaml)
|
||||
|
||||
echo "chartpath=${changed}" >> $GITHUB_OUTPUT
|
||||
echo "desc=${description}" >> $GITHUB_OUTPUT
|
||||
echo "tagname=v${version}" >> $GITHUB_OUTPUT
|
||||
echo "packagename=${name}-${version}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Install CR tool
|
||||
run: |
|
||||
mkdir "${CR_TOOL_PATH}"
|
||||
mkdir "${CR_PACKAGE_PATH}"
|
||||
mkdir "${CR_INDEX_PATH}"
|
||||
curl -sSLo cr.tar.gz "https://github.com/helm/chart-releaser/releases/download/v${CR_VERSION}/chart-releaser_${CR_VERSION}_linux_amd64.tar.gz"
|
||||
tar -xzf cr.tar.gz -C "${CR_TOOL_PATH}"
|
||||
rm -f cr.tar.gz
|
||||
|
||||
- name: Create Helm package
|
||||
run: |
|
||||
cd source
|
||||
helm repo add grafana https://grafana.github.io/helm-charts
|
||||
helm repo add minio https://charts.min.io
|
||||
|
||||
"${CR_TOOL_PATH}/cr" package "${{ steps.parse-chart.outputs.chartpath }}" --config "${CR_CONFIGFILE}" --package-path "${CR_PACKAGE_PATH}"
|
||||
|
||||
- name: Make a release on this repo
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
name: ${{ steps.parse-chart.outputs.tagname }}
|
||||
repository: grafana/meta-monitoring-chart
|
||||
tag_name: ${{ steps.parse-chart.outputs.tagname }}
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
generate_release_notes: true
|
||||
files: |
|
||||
${{ env.CR_PACKAGE_PATH }}/${{ steps.parse-chart.outputs.packagename }}.tgz
|
||||
|
||||
# Note that this creates a release in grafana/helm-charts with a new tag.
|
||||
# The tag name in grafana/helm-charts is <package>-<version>, while the
|
||||
# tag name for grafana/meta-monitoring-chart is <version>.
|
||||
- name: Make release on Helm Charts
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
name: ${{ steps.parse-chart.outputs.packagename }}
|
||||
repository: grafana/helm-charts
|
||||
tag_name: ${{ steps.parse-chart.outputs.packagename }}
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
body: |
|
||||
${{ steps.parse-chart.outputs.desc }}
|
||||
|
||||
Source commit: https://github.com/${{ github.repository }}/commit/${{ github.sha }}
|
||||
|
||||
Tag on source: https://github.com/${{ github.repository }}/releases/tag/${{ steps.parse-chart.outputs.tagname }}
|
||||
files: |
|
||||
${{ env.CR_PACKAGE_PATH }}/${{ steps.parse-chart.outputs.packagename }}.tgz
|
||||
|
||||
- name: Update helm-charts index.yaml
|
||||
run: |
|
||||
cd helm-charts
|
||||
"${CR_TOOL_PATH}/cr" index --config "${CR_CONFIGFILE}" --token "${{ steps.app-token.outputs.token }}" --index-path "${CR_INDEX_PATH}" --package-path "${CR_PACKAGE_PATH}" --push
|
20
README.md
20
README.md
@@ -1,20 +1,9 @@
|
||||
# meta-monitoring-chart
|
||||
|
||||
This is a meta-monitoring chart for GEL, GEM and GET. It should be installed in a
|
||||
separate namespace next to GEM, GEL or GET installations.
|
||||
This is a meta-monitoring chart for Loki.
|
||||
|
||||
Note that this is pre-production software at the moment.
|
||||
|
||||
## Preparation
|
||||
|
||||
Create a values.yaml file based on the [default one](../charts/meta-monitoring/values.yaml).
|
||||
|
||||
1. Add or remove the namespaces to monitor in the `namespacesToMonitor` setting
|
||||
|
||||
1. Set the cluster name in the `clusterName` setting. This will be added as a label to all logs, metrics and traces.
|
||||
|
||||
1. Create a `meta` namespace.
|
||||
|
||||
## Local and cloud modes
|
||||
|
||||
The chart has 2 modes: local and cloud. In the local mode logs, metrics and/or traces are sent
|
||||
@@ -34,12 +23,6 @@ Both modes can be enabled at the same time.
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
helm install -n meta --skip-crds -f values.yaml meta ./charts/meta-monitoring
|
||||
```
|
||||
|
||||
If the platform supports CRDs the `--skip-crds` option can be removed. However the CRDs are not used by this chart.
|
||||
|
||||
For more instructions including how to update the chart go to the [installation](docs/installation.md) page.
|
||||
|
||||
## Supported features
|
||||
@@ -59,7 +42,6 @@ Most of these features are enabled by default. See the values.yaml file for how
|
||||
|
||||
## Caveats
|
||||
|
||||
- The [loki.source.kubernetes](https://grafana.com/docs/agent/latest/flow/reference/components/loki.source.kubernetes/) component of the Grafana Agent is used to scrape Kubernetes log files. This component is marked experimental at the moment.
|
||||
- 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.
|
||||
|
@@ -1,7 +1,7 @@
|
||||
dependencies:
|
||||
- name: loki
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 5.47.2
|
||||
version: 6.3.4
|
||||
- name: alloy
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 0.1.1
|
||||
@@ -10,9 +10,9 @@ dependencies:
|
||||
version: 5.3.0
|
||||
- name: tempo-distributed
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 1.9.2
|
||||
version: 1.9.3
|
||||
- name: minio
|
||||
repository: https://charts.min.io
|
||||
version: 5.1.0
|
||||
digest: sha256:b9521eea011cdf82856ee909f3f42f98722393678799094de2307e89c92bc045
|
||||
generated: "2024-04-16T08:02:24.103560437Z"
|
||||
digest: sha256:3a47359025acb478698760e2f27b1608fab95174508e32f86e31a06d7856fe32
|
||||
generated: "2024-04-23T07:02:48.466787696Z"
|
||||
|
@@ -22,7 +22,7 @@ appVersion: "0.0.1"
|
||||
dependencies:
|
||||
- name: loki
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: "5.47.2"
|
||||
version: 6.3.4
|
||||
condition: local.logs.enabled
|
||||
- name: alloy
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
@@ -33,7 +33,7 @@ dependencies:
|
||||
condition: local.metrics.enabled
|
||||
- name: tempo-distributed
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 1.9.2
|
||||
version: 1.9.3
|
||||
condition: local.traces.enabled
|
||||
- name: minio
|
||||
repository: https://charts.min.io
|
||||
|
Binary file not shown.
BIN
charts/meta-monitoring/charts/loki-6.3.4.tgz
Normal file
BIN
charts/meta-monitoring/charts/loki-6.3.4.tgz
Normal file
Binary file not shown.
Binary file not shown.
BIN
charts/meta-monitoring/charts/tempo-distributed-1.9.3.tgz
Normal file
BIN
charts/meta-monitoring/charts/tempo-distributed-1.9.3.tgz
Normal file
Binary file not shown.
@@ -1,12 +1,11 @@
|
||||
# Specify the namespaces to monitor here
|
||||
namespacesToMonitor:
|
||||
- loki
|
||||
- mimir
|
||||
- tempo
|
||||
# The name of the cluster where this will be installed
|
||||
clusterLabelValue: "meta-monitoring"
|
||||
|
||||
# Set to true to write logs, metrics or traces to Grafana Cloud
|
||||
# The secrets have to be created first
|
||||
cloud:
|
||||
logs:
|
||||
enabled: true
|
||||
@@ -202,6 +201,15 @@ kubeStateMetrics:
|
||||
loki:
|
||||
loki:
|
||||
auth_enabled: false
|
||||
schemaConfig:
|
||||
configs:
|
||||
- from: 2024-03-29
|
||||
store: tsdb
|
||||
object_store: s3
|
||||
schema: v13
|
||||
index:
|
||||
prefix: index_
|
||||
period: 24h
|
||||
storage:
|
||||
type: "s3"
|
||||
s3:
|
||||
@@ -219,8 +227,13 @@ loki:
|
||||
secret_access_key: "{{ .Values.global.minio.rootPassword }}"
|
||||
compactor:
|
||||
retention_enabled: true
|
||||
delete_request_store: s3
|
||||
limits_config:
|
||||
retention_period: 30d
|
||||
lokiCanary:
|
||||
enabled: false
|
||||
test:
|
||||
enabled: false
|
||||
monitoring:
|
||||
dashboards:
|
||||
enabled: false
|
||||
|
10
docs/create_new_release.md
Normal file
10
docs/create_new_release.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# Create a new release
|
||||
|
||||
1. Update the version field in charts/meta-monitoring/Chart.yaml in a new PR. Merge this PR if approved.
|
||||
|
||||
2. On the [Actions tab](https://github.com/grafana/meta-monitoring-chart/actions):
|
||||
- Select `Release Helm chart` in the workflows on the left
|
||||
- Click the `Run workflow` button
|
||||
- Leave the `main` branch as is
|
||||
- Click the green `Run workflow` button
|
||||
|
@@ -1,5 +1,19 @@
|
||||
# Install this chart
|
||||
|
||||
## Preparation for Cloud mode (preferred)
|
||||
|
||||
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. Click `Create access policy`.
|
||||
|
||||
1. Fill in the `Display name` field and check the `Write` check box for metrics, logs and traces. Then click `Create`.
|
||||
|
||||
1. On the newly created access policy click `Add token`.
|
||||
|
||||
1. Fill in the `Token name` field and click `Create`. Make a copy of the token as it will be used later on.
|
||||
|
||||
1. Create the meta namespace
|
||||
|
||||
```
|
||||
@@ -11,36 +25,142 @@
|
||||
```
|
||||
kubectl create secret generic logs -n meta \
|
||||
--from-literal=username=<logs username> \
|
||||
--from-literal=password=<logs password>
|
||||
--from-literal=password=<token>
|
||||
--from-literal=endpoint='https://logs-prod-us-central1.grafana.net/loki/api/v1/push'
|
||||
|
||||
kubectl create secret generic metrics -n meta \
|
||||
--from-literal=username=<metrics username> \
|
||||
--from-literal=password=<metrics password>
|
||||
--from-literal=password=<token>
|
||||
--from-literal=endpoint='https://prometheus-us-central1.grafana.net/api/prom/push'
|
||||
|
||||
kubectl create secret generic traces -n meta \
|
||||
--from-literal=username=<traces username> \
|
||||
--from-literal=password=<traces password>
|
||||
--from-literal=password=<token>
|
||||
--from-literal=endpoint='https://tempo-us-central1.grafana.net/tempo'
|
||||
```
|
||||
|
||||
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.
|
||||
The logs, metrics and traces usernames are the `User / Username / Instance IDs` of the Loki, Prometheus/Mimir and Tempo instances in Grafana Cloud. From `Home` in Grafana click on `Stacks`. Then go to the `Details` pages of Loki, Prometheus/Mimir and Tempo.
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
namespacesToMonitor:
|
||||
- loki
|
||||
|
||||
cloud:
|
||||
logs:
|
||||
enabled: true
|
||||
secret: "logs"
|
||||
metrics:
|
||||
enabled: true
|
||||
secret: "metrics"
|
||||
traces:
|
||||
enabled: true
|
||||
secret: "traces"
|
||||
```
|
||||
|
||||
## Preparation for Local mode
|
||||
|
||||
1. Create the meta namespace
|
||||
|
||||
```
|
||||
kubectl create namespace meta
|
||||
```
|
||||
|
||||
1. Create a values.yaml file based on the [default one](../charts/meta-monitoring/values.yaml). An example minimal values.yaml looks like this:
|
||||
|
||||
```
|
||||
namespacesToMonitor:
|
||||
- loki
|
||||
|
||||
cloud:
|
||||
logs:
|
||||
enabled: false
|
||||
metrics:
|
||||
enabled: false
|
||||
traces:
|
||||
enabled: false
|
||||
|
||||
local:
|
||||
grafana:
|
||||
enabled:true
|
||||
logs:
|
||||
enabled: true
|
||||
metrics:
|
||||
enabled: true
|
||||
traces:
|
||||
enabled: true
|
||||
minio:
|
||||
enabled: true
|
||||
```
|
||||
|
||||
## Installing the chart
|
||||
|
||||
1. Add the repo
|
||||
|
||||
```
|
||||
helm repo add grafana https://grafana.github.io/helm-charts
|
||||
```
|
||||
|
||||
1. Fetch the latest charts from the grafana repo
|
||||
|
||||
```
|
||||
helm repo update grafana
|
||||
```
|
||||
|
||||
|
||||
1. Install this helm chart
|
||||
|
||||
```
|
||||
helm install -n meta -f values.yaml meta ./charts/meta-monitoring
|
||||
helm install -n meta -f values.yaml meta grafana/meta-monitoring
|
||||
```
|
||||
|
||||
1. Upgrade
|
||||
|
||||
```
|
||||
helm upgrade --install -f values.yaml -n meta meta ./charts/meta-monitoring
|
||||
helm upgrade --install -f values.yaml -n meta meta grafana/meta-monitoring
|
||||
```
|
||||
|
||||
1. Delete this chart:
|
||||
|
||||
```
|
||||
helm delete -n meta meta
|
||||
```
|
||||
```
|
||||
|
||||
## Installing the dashboards and rules on Grafana Cloud
|
||||
|
||||
## Installing the dashboards on Grafana Cloud
|
||||
|
||||
Only the files for the application monitored have to be copied. When monitoring Loki import dashboard files starting with 'loki-'.
|
||||
|
||||
For each of the dashboard files in charts/meta-monitoring/src/dashboards folder do the following:
|
||||
|
||||
1. Click on 'Dashboards' in Grafana
|
||||
|
||||
1. Click on the 'New` button and select 'Import'
|
||||
|
||||
1. Drop the dashboard file to the 'Upload dashboard JSON file' drop area
|
||||
|
||||
1. Click 'Import'
|
||||
|
||||
## Installing the rules on Grafana Cloud
|
||||
|
||||
1. Select the rules files in charts/meta-monitoring/src/rules for the application to monitor. When monitoring Loki use loki-rules.yaml.
|
||||
|
||||
1. Install mimirtool as per the [instructions](https://grafana.com/docs/mimir/latest/manage/tools/mimirtool/)
|
||||
|
||||
1. Create an access policy with Read and Write permission for Rules. Also create a token and record the token.
|
||||
|
||||
1. Get your cloud Prometheus endpoint and Instance ID from the `Prometheus` page in `Stacks`.
|
||||
|
||||
1. Use them to load the rules using mimirtool as follows:
|
||||
|
||||
```
|
||||
mimirtool rules load --address=<your_cloud_prometheus_endpoint> --id=<your_instance_id> --key=<your_cloud_access_policy_token> *.yaml
|
||||
```
|
||||
|
||||
1. To check the rules you have uploaded run:
|
||||
|
||||
```
|
||||
mimirtool rules print --address=<your_cloud_prometheus_endpoint> --id=<your_instance_id> --key=<your_cloud_access_policy_token>
|
||||
```
|
Reference in New Issue
Block a user