Skip to content
Snippets Groups Projects
ng-prometheus.yaml 5.25 KiB
Newer Older
#######################################################################################
# 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) 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: 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:12
        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