# repository: "https://charts.bitnami.com/bitnami"
# version: "12.1.3"
# condition: zookeeper.enabled
+- name: grafana
+ repository: "https://grafana.github.io/helm-charts"
+ version: 7.3.0
+ condition: grafana.enabled
+- name: prometheus
+ repository: "https://prometheus-community.github.io/helm-charts"
+ version: 25.11.0
+ condition: prometheus.enabled
# - name: mongodb
# repository: "https://charts.bitnami.com/bitnami"
# version: "13.9.4"
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} nbi --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.nbi.service.port }}
{{- end }}
-<<<<<<< HEAD
{{- else }}
export OSM_GUI_URL=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.rules[0].host}" ingress ngui-ingress)
echo "OSM UI: $OSM_GUI_URL"
{{- end }}
2. Get Grafana credentials for admin user using below command.
kubectl -n {{ .Release.Namespace }} get secret grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
-=======
->>>>>>> e34e722 (Revert "Feature 11010: Use of upstream helm charts for Prometheus and Grafana in OSM installation.")
{{ define "osm.keystone.image" -}}
{{ printf "%s:%s" (.Values.keystone.image.repository | default (printf "%s/keystone" (.Values.global.image.repositoryBase))) (.Values.keystone.image.tag | default .Values.global.image.tag) }}
{{- end }}
-{{ define "osm.prometheus.image" -}}
-{{ printf "%s:%s" (.Values.prometheus.sidecarImage.repository | default (printf "%s/prometheus" (.Values.global.image.repositoryBase))) (.Values.prometheus.sidecarImage.tag | default .Values.global.image.tag) }}
-{{- end }}
+++ /dev/null
-{{- if .Values.grafana.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- labels:
- app: grafana
- name: grafana-clusterrole
-rules:
-- apiGroups:
- - ""
- resources:
- - configmaps
- - secrets
- verbs:
- - get
- - watch
- - list
-{{- end -}}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.grafana.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
- labels:
- app: grafana
- name: grafana-clusterrolebinding
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: grafana-clusterrole
-subjects:
-- kind: ServiceAccount
- name: grafana
- namespace: {{ .Release.Namespace }}
-{{- end -}}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.grafana.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-data:
- grafana.ini: |
- [log]
- mode = console
- [paths]
- data = /var/lib/grafana/data
- logs = /var/log/grafana
- plugins = /var/lib/grafana/plugins
- provisioning = /etc/grafana/provisioning
-kind: ConfigMap
-metadata:
- labels:
- app: grafana
- name: grafana
-{{- end -}}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.grafana.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-data:
- provider.yaml: |-
- apiVersion: 1
- providers:
- - name: 'Kubernetes Cluster'
- orgId: 1
- folder: 'Kubernetes Cluster'
- type: file
- disableDeletion: false
- options:
- path: '/tmp/dashboards/Kubernetes Cluster'
- - name: 'Open Source MANO'
- orgId: 1
- folder: 'Open Source MANO'
- type: file
- disableDeletion: false
- options:
- path: '/tmp/dashboards/Open Source MANO'
-kind: ConfigMap
-metadata:
- labels:
- app: grafana
- name: grafana-dashboard-provider
-{{- end -}}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.grafana.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-kind: ConfigMap
-metadata:
- labels:
- grafana_datasource: "1"
- name: grafana-datasource
-data:
- datasource.yaml: |-
- apiVersion: 1
- datasources:
- - name: osm_prometheus
- type: prometheus
- url: http://prometheus:9090
- access: proxy
- allowUiUpdates: true
- isDefault: true
- - name: Prometheus
- type: prometheus
- url: http://osm-monitoring-kube-promet-prometheus.monitoring:9090
- access: proxy
- allowUiUpdates: true
- isDefault: false
-{{- end -}}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.grafana.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- labels:
- app: grafana
- name: grafana
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: grafana
- template:
- metadata:
- labels:
- app: grafana
- spec:
- containers:
- - env:
- - name: LABEL
- value: grafana_dashboard
- - name: FOLDER
- value: "/tmp/dashboards/Kubernetes Cluster"
- - name: RESOURCE
- value: both
- - name: NAMESPACE
- value: monitoring
- image: kiwigrid/k8s-sidecar:1.15.6
- imagePullPolicy: IfNotPresent
- name: grafana-sc-dashboard
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: "/tmp/dashboards/Kubernetes Cluster"
- name: sc-dashboard-volume-k8s
- - mountPath: "/tmp/dashboards/Open Source MANO"
- name: sc-dashboard-volume-osm
- - env:
- - name: GF_SECURITY_ADMIN_USER
- valueFrom:
- secretKeyRef:
- key: admin-user
- name: grafana
- - name: GF_SECURITY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- key: admin-password
- name: grafana
- image: grafana/grafana:10.1.2
- imagePullPolicy: IfNotPresent
- livenessProbe:
- failureThreshold: 10
- httpGet:
- path: /api/health
- port: 3000
- scheme: HTTP
- initialDelaySeconds: 60
- periodSeconds: 10
- successThreshold: 1
- timeoutSeconds: 30
- name: grafana
- ports:
- - containerPort: 80
- name: service
- protocol: TCP
- - containerPort: 3000
- name: grafana
- protocol: TCP
- readinessProbe:
- failureThreshold: 3
- httpGet:
- path: /api/health
- port: 3000
- scheme: HTTP
- periodSeconds: 10
- successThreshold: 1
- timeoutSeconds: 1
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /etc/grafana/grafana.ini
- name: config
- subPath: grafana.ini
- - mountPath: /var/lib/grafana
- name: storage
- - mountPath: "/tmp/dashboards/Kubernetes Cluster"
- name: sc-dashboard-volume-k8s
- - mountPath: "/tmp/dashboards/Open Source MANO"
- name: sc-dashboard-volume-osm
- - mountPath: /etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml
- name: sc-dashboard-provider
- subPath: provider.yaml
- - mountPath: /etc/grafana/provisioning/datasources
- name: sc-datasources-volume
- dnsPolicy: ClusterFirst
- initContainers:
- - env:
- - name: METHOD
- value: LIST
- - name: LABEL
- value: grafana_datasource
- - name: FOLDER
- value: /etc/grafana/provisioning/datasources
- - name: RESOURCE
- value: both
- image: kiwigrid/k8s-sidecar:1.15.6
- imagePullPolicy: IfNotPresent
- name: grafana-sc-datasources
- resources: {}
- terminationMessagePath: /dev/termination-log
- terminationMessagePolicy: File
- volumeMounts:
- - mountPath: /etc/grafana/provisioning/datasources
- name: sc-datasources-volume
- restartPolicy: Always
- schedulerName: default-scheduler
- securityContext:
- {{- toYaml .Values.global.podSecurityContext | nindent 8 }}
- serviceAccount: grafana
- serviceAccountName: grafana
- terminationGracePeriodSeconds: 30
- volumes:
- - configMap:
- defaultMode: 420
- name: grafana
- name: config
- - emptyDir: {}
- name: storage
- - emptyDir: {}
- name: sc-dashboard-volume-k8s
- - emptyDir: {}
- name: sc-dashboard-volume-osm
- - configMap:
- defaultMode: 420
- name: grafana-dashboard-provider
- name: sc-dashboard-provider
- - emptyDir: {}
- name: sc-datasources-volume
-{{- end -}}
+++ /dev/null
-{{- if .Values.grafana.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-data:
- admin-password: YWRtaW4=
- admin-user: YWRtaW4=
-kind: Secret
-metadata:
- labels:
- app: grafana
- name: grafana
-type: Opaque
-{{- end -}}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.grafana.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-kind: Service
-metadata:
- labels:
- app: grafana
- name: grafana
-spec:
- ports:
- - name: service
- nodePort: 3000
- port: 3000
- protocol: TCP
- targetPort: 3000
- selector:
- app: grafana
- sessionAffinity: None
- type: NodePort
-{{- end -}}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.grafana.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- labels:
- app: grafana
- name: grafana
-{{- end -}}
\ No newline at end of file
{{- end }}
{{- if or .Values.vca.enabled .Values.mon.useOsmSecret }}
env:
+ - name: OSMMON_GRAFANA_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: grafana
+ key: admin-password
{{- if .Values.vca.enabled }}
- name: OSMMON_VCA_HOST
valueFrom:
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
+++ /dev/null
-{{- if not .Values.global.oldServiceAssurance -}}
-{{- if .Values.prometheus.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: {{ include "osm.fullname" . }}-prometheus-alertingrules-configmap
- labels:
- {{- include "osm.labels" . | nindent 4 }}
-data:
- osm_alert_rules.yml: |
- groups:
- - name: osm_alert_rules
- rules:
- - alert: vdu_down
- expr: vm_status_extended != 1
- for: 3m
- annotations:
- summary: "VDU {{ "{{" }} $labels.vm_id }} in VIM {{ "{{" }} $labels.vim_id }} is down"
- description: "VDU {{ "{{" }} $labels.vm_id }} in VIM {{ "{{" }} $labels.vim_id }} has been down for more than 3 minutes. NS instance id is {{ "{{" }} $labels.ns_id }}"
-{{- end }}
-{{- end }}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.prometheus.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: {{ include "osm.fullname" . }}-prometheus-configmap
- labels:
- {{- include "osm.labels" . | nindent 4 }}
-data:
- MONGODB_URL: "mongodb://mongodb-k8s:27017/?replicaSet=rs0"
- PROMETHEUS_CONFIG_FILE: "/etc/prometheus/prometheus.yml"
- PROMETHEUS_BASE_CONFIG_FILE: "/etc/prometheus_base/prometheus.yml"
- TARGET_DATABASE: "osm"
- PROMETHEUS_URL: "http://prometheus:9090"
-{{- end }}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.prometheus.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: {{ include "osm.fullname" . }}-prometheus-prom-configmap
- labels:
- {{- include "osm.labels" . | nindent 4 }}
-data:
- prometheus.yml: |
- # Copyright 2018 The Prometheus Authors
- # Copyright 2018 Whitestack
- # Copyright 2018 Telefonica Investigacion y Desarrollo, S.A.U.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
-
- # my global config
- global:
- scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
- evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
- # scrape_timeout is set to the global default (10s).
-
- # Alertmanager configuration
- alerting:
- alertmanagers:
- - static_configs:
- - targets:
-{{- if .Values.global.oldServiceAssurance }}
- # - alertmanager:9093
-{{- else }}
- - alertmanager:9093
-{{- end }}
- # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
-{{- if .Values.global.oldServiceAssurance }}
- rule_files:
- # - "first_rules.yml"
- # - "second_rules.yml"
-{{- else }}
- rule_files:
- - "osm_metric_rules.yml"
- - "osm_alert_rules.yml"
-{{- end }}
- # A scrape configuration containing exactly one endpoint to scrape:
- # Here it's Prometheus itself.
- scrape_configs:
- - job_name: 'mon_exporter'
- static_configs:
- - targets: ['mon:8000']
-{{- if .Values.global.oldServiceAssurance }}
- # Add here other external targets, e.g. a pushgateway
- # - job_name: 'pushgateway'
- # static_configs:
- # - targets: ['prometheus-pushgateway:9091']
-{{- else }}
- - job_name: pushgateway
- honor_labels: true
- scrape_interval: 30s
- static_configs:
- - targets:
- - pushgateway-prometheus-pushgateway:9091
-{{- end }}
-{{- end }}
\ No newline at end of file
+++ /dev/null
-{{- if not .Values.global.oldServiceAssurance -}}
-{{- if .Values.prometheus.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: {{ include "osm.fullname" . }}-prometheus-recordingrules-configmap
- labels:
- {{- include "osm.labels" . | nindent 4 }}
-data:
- osm_metric_rules.yml: |
- groups:
- - name: osm_metric_rules
- rules:
- - record: vm_status_extended
- expr: (last_over_time(vm_status[1m]) * on (vm_id, vim_id) group_left(ns_id, vnf_id, vdu_id, project_id, job, vdu_name, vnf_member_index) last_over_time(ns_topology[1m])) or (last_over_time(ns_topology[1m]) * -1)
- labels:
- job: osm_prometheus
- - record: vnf_status
- expr: (0 * (count (vm_status_extended==0) by (ns_id, vnf_id)>=0)) or (min by (ns_id, vnf_id) (vm_status_extended))
- labels:
- job: osm_prometheus
- - record: ns_status
- expr: (0 * (count (vm_status_extended==0) by (ns_id)>=0)) or (min by (ns_id) (vm_status_extended))
- labels:
- job: osm_prometheus
-{{- end }}
-{{- end }}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.prometheus.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: v1
-kind: Service
-metadata:
- name: prometheus
- labels:
- {{- include "osm.labels" . | nindent 4 }}
-spec:
- type: {{ .Values.prometheus.service.type }}
- ports:
- - nodePort: {{ .Values.prometheus.service.nodePort }}
- port: 9090
- targetPort: 9090
- protocol: TCP
- selector:
- app.kubernetes.io/component: prometheus
- {{- include "osm.selectorLabels" . | nindent 4 }}
-{{- end }}
\ No newline at end of file
+++ /dev/null
-{{- if .Values.prometheus.enabled -}}
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- name: prometheus
- labels:
- {{- include "osm.labels" . | nindent 4 }}
-spec:
- replicas: {{ .Values.prometheus.replicaCount | default .Values.global.replicaCount }}
- serviceName: prometheus
- selector:
- matchLabels:
- app.kubernetes.io/component: prometheus
- {{- include "osm.selectorLabels" . | nindent 6 }}
- template:
- metadata:
- {{- with .Values.global.podAnnotations }}
- annotations:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- labels:
- app.kubernetes.io/component: prometheus
- {{- include "osm.selectorLabels" . | nindent 8 }}
- spec:
- {{- with .Values.global.imagePullSecrets }}
- imagePullSecrets:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- serviceAccountName: {{ include "osm.serviceAccountName" . }}
- initContainers:
- - name: prometheus-init-config
- image: busybox
- command: ["/bin/sh", "-c"]
-{{- if .Values.global.oldServiceAssurance }}
- args: ['if [ ! -f "/etc/prometheus/prometheus.yml" ]; then cp /config/prometheus.yml /etc/prometheus; fi']
-{{- else }}
- args: ['if [ ! -f "/etc/prometheus/prometheus.yml" ]; then cp /config/prometheus.yml /etc/prometheus; fi; cp /config/osm_metric_rules.yml /config/osm_alert_rules.yml /etc/prometheus']
-{{- end }}
- volumeMounts:
- - name: prom-config
- mountPath: /etc/prometheus
- - name: prom-config-base
- mountPath: /config
- containers:
- - name: prometheus
- securityContext:
- # readOnlyRootFilesystem: true
- allowPrivilegeEscalation: false
- # runAsNonRoot: true
- image: prom/prometheus:v2.47.0
- imagePullPolicy: {{ .Values.global.image.pullPolicy }}
- args:
- - --config.file=/etc/prometheus/prometheus.yml
- - --web.enable-lifecycle
- ports:
- - containerPort: 9090
- protocol: TCP
- volumeMounts:
- - name: prom-config
- mountPath: /etc/prometheus
- - name: prom-db
- mountPath: /prometheus
- resources:
- limits:
- memory: 1024Mi
- requests:
- memory: 128Mi
- - name: prometheus-config-sidecar
- securityContext:
- # readOnlyRootFilesystem: true
- allowPrivilegeEscalation: false
- # runAsNonRoot: true
- image: {{ include "osm.prometheus.image" . }}
- imagePullPolicy: {{ .Values.global.image.pullPolicy }}
- volumeMounts:
- - name: prom-config
- mountPath: /etc/prometheus
- - name: prom-config-base
- mountPath: /etc/prometheus_base
- resources:
- limits:
- memory: 1024Mi
- requests:
- memory: 128Mi
- envFrom:
- - configMapRef:
- name: {{ include "osm.fullname" . }}-prometheus-configmap
- {{- with .Values.global.nodeSelector }}
- nodeSelector:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.global.affinity }}
- affinity:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.global.tolerations }}
- tolerations:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- volumes:
- - name: prom-db
- emptyDir: {}
- - name: prom-config
- emptyDir: {}
- - name: prom-config-base
- projected:
- sources:
- - configMap:
- name: {{ include "osm.fullname" . }}-prometheus-prom-configmap
- items:
- - key: prometheus.yml
- path: prometheus.yml
-{{- if not .Values.global.oldServiceAssurance }}
- - configMap:
- name: {{ include "osm.fullname" . }}-prometheus-recordingrules-configmap
- items:
- - key: osm_metric_rules.yml
- path: osm_metric_rules.yml
- - configMap:
- name: {{ include "osm.fullname" . }}-prometheus-alertingrules-configmap
- items:
- - key: osm_alert_rules.yml
- path: osm_alert_rules.yml
-{{- end }}
-{{- end }}
prometheus:
enabled: true
- service:
- type: NodePort
- nodePort: 9091
- # replicaCount: 1
- sidecarImage: {}
- # repository: opensourcemano/ro
- # tag: "testing-daily"
+ configmapReload:
+ prometheus:
+ enabled: true
+ prometheus-node-exporter:
+ enabled: false
+ kube-state-metrics:
+ enabled: false
+ server:
+ extraFlags:
+ - web.enable-lifecycle
+ statefulSet:
+ enabled: true
+ configPath: /etc/prometheus/prometheus.yml
+ fullnameOverride: "prometheus"
+ service:
+ servicePort: 9090
+ # type: NodePort
+ # nodePort: 9091
+ ingress:
+ enabled: true
+ ingressClassName: nginx
+ # hosts:
+ # - prometheus.<IP_ADDRESS>.nip.io
+ sidecarContainers:
+ prometheus-config-sidecar:
+ securityContext:
+ # readOnlyRootFilesystem: true
+ allowPrivilegeEscalation: false
+ # runAsNonRoot: true
+ image: opensourcemano/prometheus:testing-daily
+ imagePullPolicy: IfNotPresent
+ command: ["/bin/sh", "-c"]
+ args: ["sleep 50; python -u ./app.py"]
+ volumeMounts:
+ - name: prom-config
+ mountPath: /etc/prometheus
+ - name: prom-config-base
+ mountPath: /etc/prometheus_base
+ resources:
+ limits:
+ memory: 1024Mi
+ requests:
+ memory: 128Mi
+ envFrom:
+ - configMapRef:
+ name: osm-prometheus-sidecar-configmap
+ extraInitContainers:
+ - name: prometheus-init-config
+ image: busybox
+ command: ["/bin/sh", "-c"]
+ #args: [' sleep 100000 ']
+ args: ['if [ ! -f "/etc/prometheus/prometheus.yml" ]; then cp /config/prometheus.yml /etc/prometheus; fi; cp /config/osm_metric_rules.yml /config/osm_alert_rules.yml /etc/prometheus']
+ volumeMounts:
+ - name: prom-config
+ mountPath: /etc/prometheus
+ - name: prom-config-base
+ mountPath: /config
+ extraVolumeMounts:
+ - name: prom-config
+ mountPath: /etc/prometheus
+ extraVolumes:
+ - name: prom-config
+ emptyDir: {}
+ - name: prom-config-base
+ projected:
+ sources:
+ - configMap:
+ name: osm-prom-configmap
+ items:
+ - key: prometheus.yml
+ path: prometheus.yml
+ - configMap:
+ name: osm-prometheus-recordingrules-configmap
+ items:
+ - key: osm_metric_rules.yml
+ path: osm_metric_rules.yml
+ - configMap:
+ name: osm-prometheus-alertingrules-configmap
+ items:
+ - key: osm_alert_rules.yml
+ path: osm_alert_rules.yml
+ extraManifests:
+ - |
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: osm-prometheus-alertingrules-configmap
+ data:
+ osm_alert_rules.yml: |
+ groups:
+ - name: osm_alert_rules
+ rules:
+ - alert: vdu_down
+ expr: vm_status_extended != 1
+ for: 3m
+ annotations:
+ summary: "VDU {{ "{{" }} $labels.vm_id }} in VIM {{ "{{" }} $labels.vim_id }} is down"
+ description: "VDU {{ "{{" }} $labels.vm_id }} in VIM {{ "{{" }} $labels.vim_id }} has been down for more than 3 minutes. NS instance id is {{ "{{" }} $labels.ns_id }}"
+ - |
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: osm-prometheus-recordingrules-configmap
+ data:
+ osm_metric_rules.yml: |
+ groups:
+ - name: osm_metric_rules
+ rules:
+ - record: vm_status_extended
+ expr: (last_over_time(vm_status[1m]) * on (vm_id, vim_id) group_left(ns_id, vnf_id, vdu_id, project_id, job, vdu_name, vnf_member_index) last_over_time(ns_topology[1m])) or (last_over_time(ns_topology[1m]) * -1)
+ labels:
+ job: osm_prometheus
+ - record: vnf_status
+ expr: (0 * (count (vm_status_extended==0) by (ns_id, vnf_id)>=0)) or (min by (ns_id, vnf_id) (vm_status_extended))
+ labels:
+ job: osm_prometheus
+ - record: ns_status
+ expr: (0 * (count (vm_status_extended==0) by (ns_id)>=0)) or (min by (ns_id) (vm_status_extended))
+ labels:
+ job: osm_prometheus
+ - |
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: osm-prometheus-sidecar-configmap
+ data:
+ MONGODB_URL: "mongodb://mongodb-k8s:27017/?replicaSet=rs0"
+ PROMETHEUS_CONFIG_FILE: "/etc/prometheus/prometheus.yml"
+ PROMETHEUS_BASE_CONFIG_FILE: "/etc/prometheus_base/prometheus.yml"
+ TARGET_DATABASE: "osm"
+ PROMETHEUS_URL: "http://prometheus:9090"
+ - |
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: osm-prom-configmap
+ data:
+ prometheus.yml: |
+ global:
+ scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
+ evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
+ # scrape_timeout is set to the global default (10s).
+ # Alertmanager configuration
+ alerting:
+ alertmanagers:
+ - static_configs:
+ - targets:
+ - alertmanager:9093
+ rule_files:
+ - "osm_metric_rules.yml"
+ - "osm_alert_rules.yml"
+ scrape_configs:
+ - job_name: 'mon_exporter'
+ static_configs:
+ - targets: ['mon:8000']
+ - job_name: pushgateway
+ honor_labels: true
+ scrape_interval: 30s
+ static_configs:
+ - targets:
+ - pushgateway-prometheus-pushgateway:9091
+ - job_name: prometheus
+ static_configs:
+ - targets:
+ - localhost:9090
+ - job_name: node
+ static_configs:
+ - targets: ['prometheus-node-exporter:9100']
+ alertmanager:
+ enabled: true
+ fullnameOverride: "alertmanager"
+ extraArgs:
+ log.level: debug
+ # service:
+ # type: NodePort
+ # nodePort: 9093
+ # port: 9093
+ # ingress:
+ # enabled: True
+ # className: nginx
+ # hosts:
+ # - host: localhost
+ # paths:
+ # - path: /
+ # pathType: ImplementationSpecific
+ # tls: []
+ config:
+ receivers:
+ - name: default-receiver
+ - name: vdu-webhook
+ webhook_configs:
+ - url: http://webhook-translator:9998/vdu_down
+ - name: scaleout-webhook
+ webhook_configs:
+ - url: http://webhook-translator:9998/scaleout_vdu
+ - name: scalein-webhook
+ webhook_configs:
+ - url: http://webhook-translator:9998/scalein_vdu
+ - name: alarm-webhook
+ webhook_configs:
+ - url: http://webhook-translator:9998/vdu_alarm
+ route:
+ group_wait: 10s
+ group_interval: 2m
+ receiver: default-receiver
+ routes:
+ - receiver: vdu-webhook
+ repeat_interval: 15m
+ matchers:
+ - alertname = "vdu_down"
+ - receiver: 'scaleout-webhook'
+ repeat_interval: 5m
+ matchers:
+ - alertname =~ "^scaleout_.*"
+ - receiver: 'scalein-webhook'
+ repeat_interval: 5m
+ matchers:
+ - alertname =~ "^scalein_.*"
+ - receiver: 'alarm-webhook'
+ repeat_interval: 5m
+ matchers:
+ - alertname =~ "^vdu_alarm_.*"
+ prometheus-pushgateway:
+ fullnameOverride: "pushgateway-prometheus-pushgateway"
+
ro:
enabled: true
# logLevel: DEBUG
${osm_installation_options}
"""
}
- prometheusHostname = IP_ADDRESS
- prometheusPort = 9091
- osmHostname = IP_ADDRESS
+ prometheusHostname = "prometheus.${IP_ADDRESS}.nip.io"
+ prometheusPort = 80
+ osmHostname = "nbi.${IP_ADDRESS}.nip.io:443"
}
} // stage("Install")
///////////////////////////////////////////////////////////////////////////////////////