2610710f4a78de0893ca4c7fea7ef5c3df17a77f
[osm/devops.git] / installers / docker / osm_pods / prometheus.yaml
1 # Copyright 2021 Whitestack, LLC
2 # *************************************************************
3
4 # This file is part of OSM Monitoring module
5 # All Rights Reserved to Whitestack, LLC
6
7 # Licensed under the Apache License, Version 2.0 (the "License"); you may
8 # not use this file except in compliance with the License. You may obtain
9 # a copy of the License at
10
11 #         http://www.apache.org/licenses/LICENSE-2.0
12
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16 # License for the specific language governing permissions and limitations
17 # under the License.
18
19 # For those usages not covered by the Apache License, Version 2.0 please
20 # contact: fbravo@whitestack.com or glavado@whitestack.com
21 ##
22
23 apiVersion: v1
24 kind: Service
25 metadata:
26   name: prometheus
27 spec:
28   ports:
29   - nodePort: 9091
30     port: 9090
31     protocol: TCP
32     targetPort: 9090
33   selector:
34     app: prometheus
35   type: NodePort
36 ---
37 apiVersion: v1
38 data:
39   prometheus.yml: |
40     # Copyright 2018 The Prometheus Authors
41     # Copyright 2018 Whitestack
42     # Copyright 2018 Telefonica Investigacion y Desarrollo, S.A.U.
43     #
44     # Licensed under the Apache License, Version 2.0 (the "License");
45     # you may not use this file except in compliance with the License.
46     # You may obtain a copy of the License at
47     #
48     # http://www.apache.org/licenses/LICENSE-2.0
49     #
50     # Unless required by applicable law or agreed to in writing, software
51     # distributed under the License is distributed on an "AS IS" BASIS,
52     # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
53     # See the License for the specific language governing permissions and
54     # limitations under the License.
55
56     # my global config
57     global:
58       scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
59       evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
60       # scrape_timeout is set to the global default (10s).
61
62     # Alertmanager configuration
63     alerting:
64       alertmanagers:
65       - static_configs:
66         - targets:
67           # - alertmanager:9093
68
69     # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
70     rule_files:
71       # - "first_rules.yml"
72       # - "second_rules.yml"
73
74     # A scrape configuration containing exactly one endpoint to scrape:
75     # Here it's Prometheus itself.
76     scrape_configs: []
77     # scrape_configs:
78       # Add here other external targets, e.g. a pushgateway
79       # - job_name: 'pushgateway'
80       #   static_configs:
81       #   - targets: ['prometheus-pushgateway:9091']
82 kind: ConfigMap
83 metadata:
84   name: prom
85 ---
86 apiVersion: apps/v1
87 kind: StatefulSet
88 metadata:
89   name: prometheus
90   labels:
91     app: prometheus
92 spec:
93   replicas: 1
94   serviceName: prometheus
95   selector:
96     matchLabels:
97       app: prometheus
98   template:
99     metadata:
100       labels:
101         app: prometheus
102     spec:
103       initContainers:
104       - name: prometheus-init-config
105         image: busybox
106         command: ["/bin/sh", "-c"]
107         args: ['if [ ! -f "/etc/prometheus/prometheus.yml" ]; then cp /config/prometheus.yml /etc/prometheus; fi']
108         volumeMounts:
109           - name: prom-config
110             mountPath: /etc/prometheus
111           - name: prom-config-base
112             mountPath: /config
113       containers:
114       - name: prometheus
115         image: prom/prometheus:v2.28.1
116         args:
117         - --config.file=/etc/prometheus/prometheus.yml
118         - --web.enable-lifecycle
119         ports:
120         - containerPort: 9090
121           protocol: TCP
122         volumeMounts:
123         - name: prom-config
124           mountPath: /etc/prometheus
125         - name: prom-db
126           mountPath: /prometheus
127       - name: prometheus-config-sidecar
128         image: opensourcemano/prometheus:12
129         env:
130         - name: MONGODB_URL
131           value: mongodb://mongodb-k8s:27017/?replicaSet=rs0
132         - name: PROMETHEUS_CONFIG_FILE
133           value: /etc/prometheus/prometheus.yml
134         - name: PROMETHEUS_BASE_CONFIG_FILE
135           value: /etc/prometheus_base/prometheus.yml
136         - name: TARGET_DATABASE
137           value: osm
138         - name: PROMETHEUS_URL
139           value: http://prometheus:9090
140         volumeMounts:
141         - name: prom-config
142           mountPath: /etc/prometheus
143         - name: prom-config-base
144           mountPath: /etc/prometheus_base
145       volumes:
146       - name: prom-db
147         emptyDir: {}
148       - name: prom-config
149         emptyDir: {}
150       - name: prom-config-base
151         configMap:
152           name: prom