####################################################################################### # 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 data: osm_rules.yml: | groups: - name: osm_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 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_rules.yml" # - "second_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 kind: ConfigMap metadata: name: prom --- 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_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