+++ /dev/null
-#######################################################################################
-# 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
-spec:
- ports:
- - nodePort: 9091
- port: 9090
- protocol: TCP
- targetPort: 9090
- selector:
- app: prometheus
- type: NodePort
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: prom
-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
- 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 }}"
- 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:
- - alertmanager:9093
-
- # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
- rule_files:
- - "osm_metric_rules.yml"
- - "osm_alert_rules.yml"
-
- # 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']
- - job_name: pushgateway
- honor_labels: true
- scrape_interval: 30s
- static_configs:
- - targets:
- - pushgateway-prometheus-pushgateway:9091
----
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- name: prometheus
- labels:
- app: prometheus
-spec:
- replicas: 1
- serviceName: prometheus
- selector:
- matchLabels:
- app: prometheus
- template:
- metadata:
- labels:
- app: prometheus
- spec:
- initContainers:
- - name: prometheus-init-config
- image: busybox
- command: ["/bin/sh", "-c"]
- 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
- containers:
- - name: prometheus
- image: prom/prometheus:v2.28.1
- 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
- - name: prometheus-config-sidecar
- image: opensourcemano/prometheus:13
- env:
- - name: MONGODB_URL
- value: mongodb://mongodb-k8s:27017/?replicaSet=rs0
- - name: PROMETHEUS_CONFIG_FILE
- value: /etc/prometheus/prometheus.yml
- - name: PROMETHEUS_BASE_CONFIG_FILE
- value: /etc/prometheus_base/prometheus.yml
- - name: TARGET_DATABASE
- value: osm
- - name: PROMETHEUS_URL
- value: http://prometheus:9090
- volumeMounts:
- - name: prom-config
- mountPath: /etc/prometheus
- - name: prom-config-base
- mountPath: /etc/prometheus_base
- volumes:
- - name: prom-db
- emptyDir: {}
- - name: prom-config
- emptyDir: {}
- - name: prom-config-base
- configMap:
- name: prom