feat(lcm-prometheus interconnection): allows lcm to modify prometheus config in order...
[osm/devops.git] / installers / docker / osm_pods / prometheus.yaml
1 apiVersion: v1
2 kind: Service
3 metadata:
4   name: prometheus
5 spec:
6   ports:
7   - nodePort: 9091
8     port: 9090
9     protocol: TCP
10     targetPort: 9090
11   selector:
12     app: prometheus
13   type: NodePort
14 ---
15 apiVersion: v1
16 data:
17   prometheus.yml: |
18     # Copyright 2018 The Prometheus Authors
19     # Copyright 2018 Whitestack
20     # Copyright 2018 Telefonica Investigacion y Desarrollo, S.A.U.
21     #
22     # Licensed under the Apache License, Version 2.0 (the "License");
23     # you may not use this file except in compliance with the License.
24     # You may obtain a copy of the License at
25     #
26     # http://www.apache.org/licenses/LICENSE-2.0
27     #
28     # Unless required by applicable law or agreed to in writing, software
29     # distributed under the License is distributed on an "AS IS" BASIS,
30     # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31     # See the License for the specific language governing permissions and
32     # limitations under the License.
33
34     # my global config
35     global:
36       scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
37       evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
38       # scrape_timeout is set to the global default (10s).
39
40     # Alertmanager configuration
41     alerting:
42       alertmanagers:
43       - static_configs:
44         - targets:
45           # - alertmanager:9093
46
47     # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
48     rule_files:
49       # - "first_rules.yml"
50       # - "second_rules.yml"
51
52     # A scrape configuration containing exactly one endpoint to scrape:
53     # Here it's Prometheus itself.
54     scrape_configs:
55       # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
56       - job_name: 'mon_exporter'
57
58         # metrics_path defaults to '/metrics'
59         # scheme defaults to 'http'.
60
61         static_configs:
62         - targets: ['mon:8000']
63 kind: ConfigMap
64 metadata:
65   name: prom
66 ---
67 apiVersion: apps/v1
68 kind: StatefulSet
69 metadata:
70   name: prometheus
71   labels:
72     app: prometheus
73 spec:
74   replicas: 1
75   serviceName: prometheus
76   selector:
77     matchLabels:
78       app: prometheus
79   template:
80     metadata:
81       labels:
82         app: prometheus
83     spec:
84       initContainers:
85       - name: prometheus-init-config
86         image: busybox
87         command: ["/bin/sh", "-c"]
88         args: ["printf \"global:\\n  scrape_interval:     15s\\n  evaluation_interval: 15s\\nscrape_configs:\\n  - job_name: 'prometheus'\\n    static_configs:\\n    - targets: ['mon:8000']\" > /etc/prometheus/prometheus.yml"]
89         volumeMounts:
90           - name: prom-config
91             mountPath: /etc/prometheus
92       containers:
93       - name: prometheus
94         image: prom/prometheus:v2.4.3
95         args:
96         - --config.file=/etc/prometheus/prometheus.yml
97         - --web.enable-lifecycle
98         ports:
99         - containerPort: 9090
100           protocol: TCP
101         volumeMounts:
102         - name: prom-config
103           mountPath: /etc/prometheus
104         - name: prom-db
105           mountPath: /prometheus
106       volumes:
107       - emptyDir: {}
108         name: prom-db
109       - name: prom-config
110         hostPath:
111           path: /var/lib/osm/prometheus