[bitnami/opensearch] feat: Add metrics (#29307)

* [bitnami/opensearch] feat:  Add metrics

Signed-off-by: Javier J. Salmerón García <javier.salmeron@broadcom.com>

* Update CHANGELOG.md

Signed-off-by: Bitnami Containers <bitnami-bot@vmware.com>

* fix:   ✏️ Set correct svc name

Signed-off-by: Javier J. Salmerón García <javier.salmeron@broadcom.com>

* chore: ♻️ Simplify metrics svc

Signed-off-by: Javier J. Salmerón García <javier.salmeron@broadcom.com>

* Update CHANGELOG.md

Signed-off-by: Bitnami Containers <bitnami-bot@vmware.com>

* Update CHANGELOG.md

Signed-off-by: Bitnami Containers <bitnami-bot@vmware.com>

---------

Signed-off-by: Javier J. Salmerón García <javier.salmeron@broadcom.com>
Signed-off-by: Bitnami Containers <bitnami-bot@vmware.com>
Co-authored-by: Bitnami Containers <bitnami-bot@vmware.com>
This commit is contained in:
Javier J. Salmerón García
2024-09-09 17:04:26 +02:00
committed by GitHub
parent 5287334f45
commit 181f600561
14 changed files with 844 additions and 3 deletions

View File

@@ -18,6 +18,23 @@ addr:
tcp://opensearch-dashboards:{{ .Vars.dashboards.service.ports.http }}:
reachable: true
timeout: 180000
http:
http://opensearch-master-metrics:{{ .Vars.master.metrics.service.ports.metrics }}/_prometheus/metrics:
status: 200
body:
- /opensearch_jvm.*opensearch-master/
http://opensearch-data-metrics:{{ .Vars.data.metrics.service.ports.metrics }}/_prometheus/metrics:
status: 200
body:
- /opensearch_jvm.*opensearch-data/
http://opensearch-coordinating-metrics:{{ .Vars.coordinating.metrics.service.ports.metrics }}/_prometheus/metrics:
status: 200
body:
- /opensearch_jvm.*opensearch-coordinating/
http://opensearch-ingest-metrics:{{ .Vars.ingest.metrics.service.ports.metrics }}/_prometheus/metrics:
status: 200
body:
- /opensearch_jvm.*opensearch-ingest/
{{- if .Vars.master.containerSecurityContext.enabled }}
command:
check-no-capabilities:

View File

@@ -6,13 +6,33 @@ master:
containerSecurityContext:
enabled: true
runAsUser: 1002
metrics:
enabled: true
service:
ports:
metrics: 83
coordinating:
replicaCount: 1
metrics:
enabled: true
service:
ports:
metrics: 84
data:
replicaCount: 2
metrics:
enabled: true
service:
ports:
metrics: 85
ingest:
enabled: true
replicaCount: 1
metrics:
enabled: true
service:
ports:
metrics: 86
service:
type: LoadBalancer
ports:

View File

@@ -1,8 +1,12 @@
# Changelog
## 1.2.13 (2024-09-09)
## 1.3.0 (2024-09-09)
* [bitnami/opensearch] Release 1.2.13 ([#29309](https://github.com/bitnami/charts/pull/29309))
* [bitnami/opensearch] feat: :sparkles: Add metrics ([#29307](https://github.com/bitnami/charts/pull/29307))
## <small>1.2.13 (2024-09-09)</small>
* [bitnami/opensearch] Release 1.2.13 (#29309) ([e34315e](https://github.com/bitnami/charts/commit/e34315e5eabba57298187c5dcaaa7a5bba02ea80)), closes [#29309](https://github.com/bitnami/charts/issues/29309)
## <small>1.2.12 (2024-09-09)</small>

View File

@@ -30,4 +30,4 @@ maintainers:
name: opensearch
sources:
- https://github.com/bitnami/charts/tree/main/bitnami/opensearch
version: 1.2.13
version: 1.3.0

View File

@@ -400,6 +400,23 @@ You can enable this initContainer by setting `volumePermissions.enabled` to `tru
| `master.autoscaling.hpa.maxReplicas` | Maximum number of APISIX Data Plane replicas | `11` |
| `master.autoscaling.hpa.targetCPU` | Target CPU utilization percentage | `""` |
| `master.autoscaling.hpa.targetMemory` | Target Memory utilization percentage | `""` |
| `master.metrics.enabled` | Enable master-eligible node metrics | `false` |
| `master.metrics.service.ports.metrics` | master-eligible node metrics service port | `80` |
| `master.metrics.service.clusterIP` | master-eligible node metrics service Cluster IP | `""` |
| `master.metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator | `false` |
| `master.metrics.serviceMonitor.namespace` | Namespace which Prometheus is running in | `""` |
| `master.metrics.serviceMonitor.jobLabel` | The name of the label on the target service to use as the job name in prometheus. | `""` |
| `master.metrics.serviceMonitor.interval` | Interval at which metrics should be scraped | `30s` |
| `master.metrics.serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `10s` |
| `master.metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping | `[]` |
| `master.metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion | `[]` |
| `master.metrics.serviceMonitor.selector` | ServiceMonitor selector labels | `{}` |
| `master.metrics.serviceMonitor.honorLabels` | honorLabels chooses the metric's labels on collisions with target labels | `false` |
| `master.metrics.rules.enabled` | Enable render extra rules for PrometheusRule object | `false` |
| `master.metrics.rules.spec` | Rules to render into the PrometheusRule object | `[]` |
| `master.metrics.rules.selector` | Selector for the PrometheusRule object | `{}` |
| `master.metrics.rules.namespace` | Namespace where to create the PrometheusRule object | `monitoring` |
| `master.metrics.rules.additionalLabels` | Additional lables to add to the PrometheusRule object | `{}` |
### Data-only nodes parameters
@@ -511,6 +528,23 @@ You can enable this initContainer by setting `volumePermissions.enabled` to `tru
| `data.autoscaling.hpa.maxReplicas` | Maximum number of APISIX Data Plane replicas | `11` |
| `data.autoscaling.hpa.targetCPU` | Target CPU utilization percentage | `""` |
| `data.autoscaling.hpa.targetMemory` | Target Memory utilization percentage | `""` |
| `data.metrics.enabled` | Enable data node metrics | `false` |
| `data.metrics.service.ports.metrics` | data node metrics service port | `80` |
| `data.metrics.service.clusterIP` | data node metrics service Cluster IP | `""` |
| `data.metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator | `false` |
| `data.metrics.serviceMonitor.namespace` | Namespace which Prometheus is running in | `""` |
| `data.metrics.serviceMonitor.jobLabel` | The name of the label on the target service to use as the job name in prometheus. | `""` |
| `data.metrics.serviceMonitor.interval` | Interval at which metrics should be scraped | `30s` |
| `data.metrics.serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `10s` |
| `data.metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping | `[]` |
| `data.metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion | `[]` |
| `data.metrics.serviceMonitor.selector` | ServiceMonitor selector labels | `{}` |
| `data.metrics.serviceMonitor.honorLabels` | honorLabels chooses the metric's labels on collisions with target labels | `false` |
| `data.metrics.rules.enabled` | Enable render extra rules for PrometheusRule object | `false` |
| `data.metrics.rules.spec` | Rules to render into the PrometheusRule object | `[]` |
| `data.metrics.rules.selector` | Selector for the PrometheusRule object | `{}` |
| `data.metrics.rules.namespace` | Namespace where to create the PrometheusRule object | `monitoring` |
| `data.metrics.rules.additionalLabels` | Additional lables to add to the PrometheusRule object | `{}` |
### Coordinating-only nodes parameters
@@ -614,6 +648,23 @@ You can enable this initContainer by setting `volumePermissions.enabled` to `tru
| `coordinating.autoscaling.hpa.maxReplicas` | Maximum number of APISIX Data Plane replicas | `11` |
| `coordinating.autoscaling.hpa.targetCPU` | Target CPU utilization percentage | `""` |
| `coordinating.autoscaling.hpa.targetMemory` | Target Memory utilization percentage | `""` |
| `coordinating.metrics.enabled` | Enable coordinating node metrics | `false` |
| `coordinating.metrics.service.ports.metrics` | coordinating node metrics service port | `80` |
| `coordinating.metrics.service.clusterIP` | coordinating node metrics service Cluster IP | `""` |
| `coordinating.metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator | `false` |
| `coordinating.metrics.serviceMonitor.namespace` | Namespace which Prometheus is running in | `""` |
| `coordinating.metrics.serviceMonitor.jobLabel` | The name of the label on the target service to use as the job name in prometheus. | `""` |
| `coordinating.metrics.serviceMonitor.interval` | Interval at which metrics should be scraped | `30s` |
| `coordinating.metrics.serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `10s` |
| `coordinating.metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping | `[]` |
| `coordinating.metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion | `[]` |
| `coordinating.metrics.serviceMonitor.selector` | ServiceMonitor selector labels | `{}` |
| `coordinating.metrics.serviceMonitor.honorLabels` | honorLabels chooses the metric's labels on collisions with target labels | `false` |
| `coordinating.metrics.rules.enabled` | Enable render extra rules for PrometheusRule object | `false` |
| `coordinating.metrics.rules.spec` | Rules to render into the PrometheusRule object | `[]` |
| `coordinating.metrics.rules.selector` | Selector for the PrometheusRule object | `{}` |
| `coordinating.metrics.rules.namespace` | Namespace where to create the PrometheusRule object | `monitoring` |
| `coordinating.metrics.rules.additionalLabels` | Additional lables to add to the PrometheusRule object | `{}` |
### Ingest-only nodes parameters
@@ -746,6 +797,23 @@ You can enable this initContainer by setting `volumePermissions.enabled` to `tru
| `ingest.ingress.extraTls` | TLS configuration for additional hostname(s) to be covered with this ingress record | `[]` |
| `ingest.ingress.secrets` | Custom TLS certificates as secrets | `[]` |
| `ingest.ingress.extraRules` | Additional rules to be covered with this ingress record | `[]` |
| `ingest.metrics.enabled` | Enable ingest node metrics | `false` |
| `ingest.metrics.service.ports.metrics` | ingest node metrics service port | `80` |
| `ingest.metrics.service.clusterIP` | ingest node metrics service Cluster IP | `""` |
| `ingest.metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator | `false` |
| `ingest.metrics.serviceMonitor.namespace` | Namespace which Prometheus is running in | `""` |
| `ingest.metrics.serviceMonitor.jobLabel` | The name of the label on the target service to use as the job name in prometheus. | `""` |
| `ingest.metrics.serviceMonitor.interval` | Interval at which metrics should be scraped | `30s` |
| `ingest.metrics.serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `10s` |
| `ingest.metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping | `[]` |
| `ingest.metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion | `[]` |
| `ingest.metrics.serviceMonitor.selector` | ServiceMonitor selector labels | `{}` |
| `ingest.metrics.serviceMonitor.honorLabels` | honorLabels chooses the metric's labels on collisions with target labels | `false` |
| `ingest.metrics.rules.enabled` | Enable render extra rules for PrometheusRule object | `false` |
| `ingest.metrics.rules.spec` | Rules to render into the PrometheusRule object | `[]` |
| `ingest.metrics.rules.selector` | Selector for the PrometheusRule object | `{}` |
| `ingest.metrics.rules.namespace` | Namespace where to create the PrometheusRule object | `monitoring` |
| `ingest.metrics.rules.additionalLabels` | Additional lables to add to the PrometheusRule object | `{}` |
### Init Container Parameters

View File

@@ -0,0 +1,31 @@
{{- /*
Copyright Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: APACHE-2.0
*/}}
{{- if and ( include "opensearch.coordinating.enabled" . ) .Values.coordinating.metrics.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ printf "%s-metrics" (include "opensearch.coordinating.fullname" .) | trunc 63 | trimSuffix "-" }}
namespace: {{ include "common.names.namespace" . | quote }}
labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: coordinating-only
{{- $defaultAnnotations := dict "prometheus.io/scrape" "true" "prometheus.io/port" (.Values.coordinating.metrics.service.port | quote) "prometheus.io/path" "/_prometheus/metrics" }}
{{- $annotations := include "common.tplvalues.merge" (dict "values" (list $defaultAnnotations .Values.coordinating.metrics.service.annotations .Values.commonAnnotations) "context" .) }}
annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
spec:
type: ClusterIP
{{- if .Values.coordinating.metrics.service.clusterIP }}
clusterIP: {{ .Values.coordinating.metrics.service.clusterIP }}
{{- end }}
ports:
- name: http-metrics
targetPort: rest-api
port: {{ .Values.coordinating.metrics.service.ports.metrics }}
protocol: TCP
{{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.coordinating.podLabels .Values.commonLabels ) "context" . ) }}
selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
app.kubernetes.io/component: coordinating-only
{{- end }}

View File

@@ -0,0 +1,51 @@
{{- /*
Copyright Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: APACHE-2.0
*/}}
{{- if and ( include "opensearch.coordinating.enabled" . ) .Values.coordinating.metrics.enabled .Values.coordinating.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "opensearch.coordinating.fullname" . }}
namespace: {{ default (include "common.names.namespace" .) .Values.coordinating.metrics.serviceMonitor.namespace | quote }}
{{- $labels := include "common.tplvalues.merge" (dict "values" (list .Values.coordinating.metrics.serviceMonitor.labels .Values.commonLabels) "context" .) }}
labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: coordinating-only
{{- if or .Values.coordinating.metrics.serviceMonitor.annotations .Values.commonAnnotations }}
{{- $annotations := include "common.tplvalues.merge" (dict "values" (list .Values.coordinating.metrics.serviceMonitor.annotations .Values.commonAnnotations) "context" .) }}
annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
{{- end }}
spec:
jobLabel: {{ .Values.coordinating.metrics.serviceMonitor.jobLabel | quote }}
selector:
matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 6 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: coordinating-only
prometheus.io/scrape: "true"
{{- if .Values.coordinating.metrics.serviceMonitor.selector }}
{{- include "common.tplvalues.render" (dict "value" .Values.coordinating.metrics.serviceMonitor.selector "context" $) | nindent 6 }}
{{- end }}
endpoints:
- port: http-metrics
path: "/_prometheus/metrics"
{{- if .Values.coordinating.metrics.serviceMonitor.interval }}
interval: {{ .Values.coordinating.metrics.serviceMonitor.interval }}
{{- end }}
{{- if .Values.coordinating.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.coordinating.metrics.serviceMonitor.scrapeTimeout }}
{{- end }}
{{- if .Values.coordinating.metrics.serviceMonitor.honorLabels }}
honorLabels: {{ .Values.coordinating.metrics.serviceMonitor.honorLabels }}
{{- end }}
{{- if .Values.coordinating.metrics.serviceMonitor.metricRelabelings }}
metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.coordinating.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 8 }}
{{- end }}
{{- if .Values.coordinating.metrics.serviceMonitor.relabelings }}
relabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.coordinating.metrics.serviceMonitor.relabelings "context" $) | nindent 8 }}
{{- end }}
namespaceSelector:
matchNames:
- {{ include "common.names.namespace" . | quote }}
{{- end }}

View File

@@ -0,0 +1,31 @@
{{- /*
Copyright Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: APACHE-2.0
*/}}
{{- if and ( include "opensearch.data.enabled" . ) .Values.data.metrics.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ printf "%s-metrics" (include "opensearch.data.fullname" .) | trunc 63 | trimSuffix "-" }}
namespace: {{ include "common.names.namespace" . | quote }}
labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: data
{{- $defaultAnnotations := dict "prometheus.io/scrape" "true" "prometheus.io/port" (.Values.data.metrics.service.port | quote) "prometheus.io/path" "/_prometheus/metrics" }}
{{- $annotations := include "common.tplvalues.merge" (dict "values" (list $defaultAnnotations .Values.data.metrics.service.annotations .Values.commonAnnotations) "context" .) }}
annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
spec:
type: ClusterIP
{{- if .Values.data.metrics.service.clusterIP }}
clusterIP: {{ .Values.data.metrics.service.clusterIP }}
{{- end }}
ports:
- name: http-metrics
targetPort: rest-api
port: {{ .Values.data.metrics.service.ports.metrics }}
protocol: TCP
{{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.data.podLabels .Values.commonLabels ) "context" . ) }}
selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
app.kubernetes.io/component: data
{{- end }}

View File

@@ -0,0 +1,51 @@
{{- /*
Copyright Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: APACHE-2.0
*/}}
{{- if and ( include "opensearch.data.enabled" . ) .Values.data.metrics.enabled .Values.data.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "opensearch.data.fullname" . }}
namespace: {{ default (include "common.names.namespace" .) .Values.data.metrics.serviceMonitor.namespace | quote }}
{{- $labels := include "common.tplvalues.merge" (dict "values" (list .Values.data.metrics.serviceMonitor.labels .Values.commonLabels) "context" .) }}
labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: data
{{- if or .Values.data.metrics.serviceMonitor.annotations .Values.commonAnnotations }}
{{- $annotations := include "common.tplvalues.merge" (dict "values" (list .Values.data.metrics.serviceMonitor.annotations .Values.commonAnnotations) "context" .) }}
annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
{{- end }}
spec:
jobLabel: {{ .Values.data.metrics.serviceMonitor.jobLabel | quote }}
selector:
matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 6 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: data
prometheus.io/scrape: "true"
{{- if .Values.data.metrics.serviceMonitor.selector }}
{{- include "common.tplvalues.render" (dict "value" .Values.data.metrics.serviceMonitor.selector "context" $) | nindent 6 }}
{{- end }}
endpoints:
- port: http-metrics
path: "/_prometheus/metrics"
{{- if .Values.data.metrics.serviceMonitor.interval }}
interval: {{ .Values.data.metrics.serviceMonitor.interval }}
{{- end }}
{{- if .Values.data.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.data.metrics.serviceMonitor.scrapeTimeout }}
{{- end }}
{{- if .Values.data.metrics.serviceMonitor.honorLabels }}
honorLabels: {{ .Values.data.metrics.serviceMonitor.honorLabels }}
{{- end }}
{{- if .Values.data.metrics.serviceMonitor.metricRelabelings }}
metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.data.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 8 }}
{{- end }}
{{- if .Values.data.metrics.serviceMonitor.relabelings }}
relabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.data.metrics.serviceMonitor.relabelings "context" $) | nindent 8 }}
{{- end }}
namespaceSelector:
matchNames:
- {{ include "common.names.namespace" . | quote }}
{{- end }}

View File

@@ -0,0 +1,31 @@
{{- /*
Copyright Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: APACHE-2.0
*/}}
{{- if and ( include "opensearch.ingest.enabled" . ) .Values.ingest.metrics.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ printf "%s-metrics" (include "opensearch.ingest.fullname" .) | trunc 63 | trimSuffix "-" }}
namespace: {{ include "common.names.namespace" . | quote }}
labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: ingest
{{- $defaultAnnotations := dict "prometheus.io/scrape" "true" "prometheus.io/port" (.Values.ingest.metrics.service.port | quote) "prometheus.io/path" "/_prometheus/metrics" }}
{{- $annotations := include "common.tplvalues.merge" (dict "values" (list $defaultAnnotations .Values.ingest.metrics.service.annotations .Values.commonAnnotations) "context" .) }}
annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
spec:
type: ClusterIP
{{- if .Values.ingest.metrics.service.clusterIP }}
clusterIP: {{ .Values.ingest.metrics.service.clusterIP }}
{{- end }}
ports:
- name: http-metrics
targetPort: rest-api
port: {{ .Values.ingest.metrics.service.ports.metrics }}
protocol: TCP
{{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.ingest.podLabels .Values.commonLabels ) "context" . ) }}
selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
app.kubernetes.io/component: ingest
{{- end }}

View File

@@ -0,0 +1,51 @@
{{- /*
Copyright Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: APACHE-2.0
*/}}
{{- if and ( include "opensearch.ingest.enabled" . ) .Values.ingest.metrics.enabled .Values.ingest.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "opensearch.ingest.fullname" . }}
namespace: {{ default (include "common.names.namespace" .) .Values.ingest.metrics.serviceMonitor.namespace | quote }}
{{- $labels := include "common.tplvalues.merge" (dict "values" (list .Values.ingest.metrics.serviceMonitor.labels .Values.commonLabels) "context" .) }}
labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: ingest
{{- if or .Values.ingest.metrics.serviceMonitor.annotations .Values.commonAnnotations }}
{{- $annotations := include "common.tplvalues.merge" (dict "values" (list .Values.ingest.metrics.serviceMonitor.annotations .Values.commonAnnotations) "context" .) }}
annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
{{- end }}
spec:
jobLabel: {{ .Values.ingest.metrics.serviceMonitor.jobLabel | quote }}
selector:
matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 6 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: ingest
prometheus.io/scrape: "true"
{{- if .Values.ingest.metrics.serviceMonitor.selector }}
{{- include "common.tplvalues.render" (dict "value" .Values.ingest.metrics.serviceMonitor.selector "context" $) | nindent 6 }}
{{- end }}
endpoints:
- port: http-metrics
path: "/_prometheus/metrics"
{{- if .Values.ingest.metrics.serviceMonitor.interval }}
interval: {{ .Values.ingest.metrics.serviceMonitor.interval }}
{{- end }}
{{- if .Values.ingest.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.ingest.metrics.serviceMonitor.scrapeTimeout }}
{{- end }}
{{- if .Values.ingest.metrics.serviceMonitor.honorLabels }}
honorLabels: {{ .Values.ingest.metrics.serviceMonitor.honorLabels }}
{{- end }}
{{- if .Values.ingest.metrics.serviceMonitor.metricRelabelings }}
metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.ingest.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 8 }}
{{- end }}
{{- if .Values.ingest.metrics.serviceMonitor.relabelings }}
relabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.ingest.metrics.serviceMonitor.relabelings "context" $) | nindent 8 }}
{{- end }}
namespaceSelector:
matchNames:
- {{ include "common.names.namespace" . | quote }}
{{- end }}

View File

@@ -0,0 +1,31 @@
{{- /*
Copyright Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: APACHE-2.0
*/}}
{{- if and ( include "opensearch.master.enabled" . ) .Values.master.metrics.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ printf "%s-metrics" (include "opensearch.master.fullname" .) | trunc 63 | trimSuffix "-" }}
namespace: {{ include "common.names.namespace" . | quote }}
labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: master
{{- $defaultAnnotations := dict "prometheus.io/scrape" "true" "prometheus.io/port" (.Values.master.metrics.service.port | quote) "prometheus.io/path" "/_prometheus/metrics" }}
{{- $annotations := include "common.tplvalues.merge" (dict "values" (list $defaultAnnotations .Values.master.metrics.service.annotations .Values.commonAnnotations) "context" .) }}
annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
spec:
type: ClusterIP
{{- if .Values.master.metrics.service.clusterIP }}
clusterIP: {{ .Values.master.metrics.service.clusterIP }}
{{- end }}
ports:
- name: http-metrics
targetPort: rest-api
port: {{ .Values.master.metrics.service.ports.metrics }}
protocol: TCP
{{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.master.podLabels .Values.commonLabels ) "context" . ) }}
selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
app.kubernetes.io/component: master
{{- end }}

View File

@@ -0,0 +1,51 @@
{{- /*
Copyright Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: APACHE-2.0
*/}}
{{- if and ( include "opensearch.master.enabled" . ) .Values.master.metrics.enabled .Values.master.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "opensearch.master.fullname" . }}
namespace: {{ default (include "common.names.namespace" .) .Values.master.metrics.serviceMonitor.namespace | quote }}
{{- $labels := include "common.tplvalues.merge" (dict "values" (list .Values.master.metrics.serviceMonitor.labels .Values.commonLabels) "context" .) }}
labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: master
{{- if or .Values.master.metrics.serviceMonitor.annotations .Values.commonAnnotations }}
{{- $annotations := include "common.tplvalues.merge" (dict "values" (list .Values.master.metrics.serviceMonitor.annotations .Values.commonAnnotations) "context" .) }}
annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
{{- end }}
spec:
jobLabel: {{ .Values.master.metrics.serviceMonitor.jobLabel | quote }}
selector:
matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 6 }}
app.kubernetes.io/part-of: opensearch
app.kubernetes.io/component: master
prometheus.io/scrape: "true"
{{- if .Values.master.metrics.serviceMonitor.selector }}
{{- include "common.tplvalues.render" (dict "value" .Values.master.metrics.serviceMonitor.selector "context" $) | nindent 6 }}
{{- end }}
endpoints:
- port: http-metrics
path: "/_prometheus/metrics"
{{- if .Values.master.metrics.serviceMonitor.interval }}
interval: {{ .Values.master.metrics.serviceMonitor.interval }}
{{- end }}
{{- if .Values.master.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.master.metrics.serviceMonitor.scrapeTimeout }}
{{- end }}
{{- if .Values.master.metrics.serviceMonitor.honorLabels }}
honorLabels: {{ .Values.master.metrics.serviceMonitor.honorLabels }}
{{- end }}
{{- if .Values.master.metrics.serviceMonitor.metricRelabelings }}
metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.master.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 8 }}
{{- end }}
{{- if .Values.master.metrics.serviceMonitor.relabelings }}
relabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.master.metrics.serviceMonitor.relabelings "context" $) | nindent 8 }}
{{- end }}
namespaceSelector:
matchNames:
- {{ include "common.names.namespace" . | quote }}
{{- end }}

View File

@@ -930,6 +930,107 @@ master:
## @param master.autoscaling.hpa.targetMemory Target Memory utilization percentage
##
targetMemory: ""
## Metrics configuration for master-eligible node
##
metrics:
## @param master.metrics.enabled Enable master-eligible node metrics
##
enabled: false
service:
## @param master.metrics.service.ports.metrics master-eligible node metrics service port
##
ports:
metrics: 80
## @param master.metrics.service.clusterIP master-eligible node metrics service Cluster IP
## e.g.:
## clusterIP: None
##
clusterIP: ""
## master-eligible node metrics service monitor configuration
##
serviceMonitor:
## @param master.metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator
##
enabled: false
## @param master.metrics.serviceMonitor.namespace Namespace which Prometheus is running in
## e.g:
## namespace: monitoring
##
namespace: ""
## @param master.metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
##
jobLabel: ""
## @param master.metrics.serviceMonitor.interval Interval at which metrics should be scraped
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
##
interval: 30s
## @param master.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
##
scrapeTimeout: 10s
## @param master.metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
##
relabelings: []
## @param master.metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
##
metricRelabelings: []
## @param master.metrics.serviceMonitor.selector ServiceMonitor selector labels
## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration
##
## selector:
## prometheus: my-prometheus
##
selector: {}
## @param master.metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
##
honorLabels: false
## Rules for PrometheusRule object if enabled
##
## E.g.
## @param master.metrics.rules.enabled Enable render extra rules for PrometheusRule object
## @param master.metrics.rules.spec Rules to render into the PrometheusRule object
## @param master.metrics.rules.selector Selector for the PrometheusRule object
## @param master.metrics.rules.namespace Namespace where to create the PrometheusRule object
## @param master.metrics.rules.additionalLabels Additional lables to add to the PrometheusRule object
##
rules:
enabled: false
## E.g
## - alert: ArgoAppMissing
## expr: |
## absent(argocd_app_info)
## for: 15m
## labels:
## severity: critical
## annotations:
## summary: "[ArgoCD] No reported applications"
## description: >
## ArgoCD has not reported any applications data for the past 15 minutes which
## means that it must be down or not functioning properly. This needs to be
## resolved for this cloud to continue to maintain state.
## - alert: ArgoAppNotSynced
## expr: |
## argocd_app_info{sync_status!="Synced"} == 1
## for: 12h
## labels:
## severity: warning
## annotations:
## summary: "[{{`{{ $labels.name }}`}}] Application not synchronized"
## description: >
## The application [{{`{{ $labels.name }}`}} has not been synchronized for over
## 12 hours which means that the state of this cloud has drifted away from the
## state inside Git.
##
spec: []
## E.g
## selector:
## prometheus: kube-prometheus
##
selector: {}
namespace: monitoring
additionalLabels: {}
## @section Data-only nodes parameters
data:
## @param data.replicaCount Number of data-only replicas to deploy
@@ -1348,6 +1449,107 @@ data:
## @param data.autoscaling.hpa.targetMemory Target Memory utilization percentage
##
targetMemory: ""
## Metrics configuration for data node
##
metrics:
## @param data.metrics.enabled Enable data node metrics
##
enabled: false
service:
## @param data.metrics.service.ports.metrics data node metrics service port
##
ports:
metrics: 80
## @param data.metrics.service.clusterIP data node metrics service Cluster IP
## e.g.:
## clusterIP: None
##
clusterIP: ""
## data node metrics service monitor configuration
##
serviceMonitor:
## @param data.metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator
##
enabled: false
## @param data.metrics.serviceMonitor.namespace Namespace which Prometheus is running in
## e.g:
## namespace: monitoring
##
namespace: ""
## @param data.metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
##
jobLabel: ""
## @param data.metrics.serviceMonitor.interval Interval at which metrics should be scraped
## ref: https://github.com/coreos/prometheus-operator/blob/data/Documentation/api.md#endpoint
##
interval: 30s
## @param data.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
## ref: https://github.com/coreos/prometheus-operator/blob/data/Documentation/api.md#endpoint
##
scrapeTimeout: 10s
## @param data.metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
## ref: https://github.com/coreos/prometheus-operator/blob/data/Documentation/api.md#relabelconfig
##
relabelings: []
## @param data.metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion
## ref: https://github.com/coreos/prometheus-operator/blob/data/Documentation/api.md#relabelconfig
##
metricRelabelings: []
## @param data.metrics.serviceMonitor.selector ServiceMonitor selector labels
## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration
##
## selector:
## prometheus: my-prometheus
##
selector: {}
## @param data.metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
##
honorLabels: false
## Rules for PrometheusRule object if enabled
##
## E.g.
## @param data.metrics.rules.enabled Enable render extra rules for PrometheusRule object
## @param data.metrics.rules.spec Rules to render into the PrometheusRule object
## @param data.metrics.rules.selector Selector for the PrometheusRule object
## @param data.metrics.rules.namespace Namespace where to create the PrometheusRule object
## @param data.metrics.rules.additionalLabels Additional lables to add to the PrometheusRule object
##
rules:
enabled: false
## E.g
## - alert: ArgoAppMissing
## expr: |
## absent(argocd_app_info)
## for: 15m
## labels:
## severity: critical
## annotations:
## summary: "[ArgoCD] No reported applications"
## description: >
## ArgoCD has not reported any applications data for the past 15 minutes which
## means that it must be down or not functioning properly. This needs to be
## resolved for this cloud to continue to maintain state.
## - alert: ArgoAppNotSynced
## expr: |
## argocd_app_info{sync_status!="Synced"} == 1
## for: 12h
## labels:
## severity: warning
## annotations:
## summary: "[{{`{{ $labels.name }}`}}] Application not synchronized"
## description: >
## The application [{{`{{ $labels.name }}`}} has not been synchronized for over
## 12 hours which means that the state of this cloud has drifted away from the
## state inside Git.
##
spec: []
## E.g
## selector:
## prometheus: kube-prometheus
##
selector: {}
namespace: monitoring
additionalLabels: {}
## @section Coordinating-only nodes parameters
coordinating:
## @param coordinating.replicaCount Number of coordinating-only replicas to deploy
@@ -1728,6 +1930,107 @@ coordinating:
## @param coordinating.autoscaling.hpa.targetMemory Target Memory utilization percentage
##
targetMemory: ""
## Metrics configuration for coordinating node
##
metrics:
## @param coordinating.metrics.enabled Enable coordinating node metrics
##
enabled: false
service:
## @param coordinating.metrics.service.ports.metrics coordinating node metrics service port
##
ports:
metrics: 80
## @param coordinating.metrics.service.clusterIP coordinating node metrics service Cluster IP
## e.g.:
## clusterIP: None
##
clusterIP: ""
## coordinating node metrics service monitor configuration
##
serviceMonitor:
## @param coordinating.metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator
##
enabled: false
## @param coordinating.metrics.serviceMonitor.namespace Namespace which Prometheus is running in
## e.g:
## namespace: monitoring
##
namespace: ""
## @param coordinating.metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
##
jobLabel: ""
## @param coordinating.metrics.serviceMonitor.interval Interval at which metrics should be scraped
## ref: https://github.com/coreos/prometheus-operator/blob/coordinating/Documentation/api.md#endpoint
##
interval: 30s
## @param coordinating.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
## ref: https://github.com/coreos/prometheus-operator/blob/coordinating/Documentation/api.md#endpoint
##
scrapeTimeout: 10s
## @param coordinating.metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
## ref: https://github.com/coreos/prometheus-operator/blob/coordinating/Documentation/api.md#relabelconfig
##
relabelings: []
## @param coordinating.metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion
## ref: https://github.com/coreos/prometheus-operator/blob/coordinating/Documentation/api.md#relabelconfig
##
metricRelabelings: []
## @param coordinating.metrics.serviceMonitor.selector ServiceMonitor selector labels
## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration
##
## selector:
## prometheus: my-prometheus
##
selector: {}
## @param coordinating.metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
##
honorLabels: false
## Rules for PrometheusRule object if enabled
##
## E.g.
## @param coordinating.metrics.rules.enabled Enable render extra rules for PrometheusRule object
## @param coordinating.metrics.rules.spec Rules to render into the PrometheusRule object
## @param coordinating.metrics.rules.selector Selector for the PrometheusRule object
## @param coordinating.metrics.rules.namespace Namespace where to create the PrometheusRule object
## @param coordinating.metrics.rules.additionalLabels Additional lables to add to the PrometheusRule object
##
rules:
enabled: false
## E.g
## - alert: ArgoAppMissing
## expr: |
## absent(argocd_app_info)
## for: 15m
## labels:
## severity: critical
## annotations:
## summary: "[ArgoCD] No reported applications"
## description: >
## ArgoCD has not reported any applications data for the past 15 minutes which
## means that it must be down or not functioning properly. This needs to be
## resolved for this cloud to continue to maintain state.
## - alert: ArgoAppNotSynced
## expr: |
## argocd_app_info{sync_status!="Synced"} == 1
## for: 12h
## labels:
## severity: warning
## annotations:
## summary: "[{{`{{ $labels.name }}`}}] Application not synchronized"
## description: >
## The application [{{`{{ $labels.name }}`}} has not been synchronized for over
## 12 hours which means that the state of this cloud has drifted away from the
## state inside Git.
##
spec: []
## E.g
## selector:
## prometheus: kube-prometheus
##
selector: {}
namespace: monitoring
additionalLabels: {}
## @section Ingest-only nodes parameters
ingest:
## @param ingest.enabled Enable ingest nodes
@@ -2276,6 +2579,107 @@ ingest:
## name: http
##
extraRules: []
## Metrics configuration for ingest node
##
metrics:
## @param ingest.metrics.enabled Enable ingest node metrics
##
enabled: false
service:
## @param ingest.metrics.service.ports.metrics ingest node metrics service port
##
ports:
metrics: 80
## @param ingest.metrics.service.clusterIP ingest node metrics service Cluster IP
## e.g.:
## clusterIP: None
##
clusterIP: ""
## ingest node metrics service monitor configuration
##
serviceMonitor:
## @param ingest.metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator
##
enabled: false
## @param ingest.metrics.serviceMonitor.namespace Namespace which Prometheus is running in
## e.g:
## namespace: monitoring
##
namespace: ""
## @param ingest.metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
##
jobLabel: ""
## @param ingest.metrics.serviceMonitor.interval Interval at which metrics should be scraped
## ref: https://github.com/coreos/prometheus-operator/blob/ingest/Documentation/api.md#endpoint
##
interval: 30s
## @param ingest.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
## ref: https://github.com/coreos/prometheus-operator/blob/ingest/Documentation/api.md#endpoint
##
scrapeTimeout: 10s
## @param ingest.metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
## ref: https://github.com/coreos/prometheus-operator/blob/ingest/Documentation/api.md#relabelconfig
##
relabelings: []
## @param ingest.metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion
## ref: https://github.com/coreos/prometheus-operator/blob/ingest/Documentation/api.md#relabelconfig
##
metricRelabelings: []
## @param ingest.metrics.serviceMonitor.selector ServiceMonitor selector labels
## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration
##
## selector:
## prometheus: my-prometheus
##
selector: {}
## @param ingest.metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
##
honorLabels: false
## Rules for PrometheusRule object if enabled
##
## E.g.
## @param ingest.metrics.rules.enabled Enable render extra rules for PrometheusRule object
## @param ingest.metrics.rules.spec Rules to render into the PrometheusRule object
## @param ingest.metrics.rules.selector Selector for the PrometheusRule object
## @param ingest.metrics.rules.namespace Namespace where to create the PrometheusRule object
## @param ingest.metrics.rules.additionalLabels Additional lables to add to the PrometheusRule object
##
rules:
enabled: false
## E.g
## - alert: ArgoAppMissing
## expr: |
## absent(argocd_app_info)
## for: 15m
## labels:
## severity: critical
## annotations:
## summary: "[ArgoCD] No reported applications"
## description: >
## ArgoCD has not reported any applications data for the past 15 minutes which
## means that it must be down or not functioning properly. This needs to be
## resolved for this cloud to continue to maintain state.
## - alert: ArgoAppNotSynced
## expr: |
## argocd_app_info{sync_status!="Synced"} == 1
## for: 12h
## labels:
## severity: warning
## annotations:
## summary: "[{{`{{ $labels.name }}`}}] Application not synchronized"
## description: >
## The application [{{`{{ $labels.name }}`}} has not been synchronized for over
## 12 hours which means that the state of this cloud has drifted away from the
## state inside Git.
##
spec: []
## E.g
## selector:
## prometheus: kube-prometheus
##
selector: {}
namespace: monitoring
additionalLabels: {}
## @section Init Container Parameters
## 'volumePermissions' init container parameters