Merge "Add prometheus monitoring to reclass"
diff --git a/docker/swarm/network/monitoring.yml b/docker/swarm/network/monitoring.yml
new file mode 100644
index 0000000..a049aac
--- /dev/null
+++ b/docker/swarm/network/monitoring.yml
@@ -0,0 +1,8 @@
+parameters:
+ docker:
+ client:
+ network:
+ monitoring:
+ driver: overlay
+ opt:
+ encrypted: true
diff --git a/docker/swarm/service/dashboard/grafana_server.yml b/docker/swarm/service/dashboard/grafana_server.yml
new file mode 100644
index 0000000..4ed587e
--- /dev/null
+++ b/docker/swarm/service/dashboard/grafana_server.yml
@@ -0,0 +1,13 @@
+parameters:
+ docker:
+ client:
+ service:
+ grafana_server:
+ replica: 1
+ environment:
+ GF_SECURITY_ADMIN_PASSWORD: ${_param:grafana_admin_password}
+ restart:
+ condition: any
+ image: ${_param:docker_image_grafana}
+ ports:
+ - 15013:3000
diff --git a/docker/swarm/service/monitoring/prometheus_alertmanager.yml b/docker/swarm/service/monitoring/prometheus_alertmanager.yml
new file mode 100644
index 0000000..74b20f5
--- /dev/null
+++ b/docker/swarm/service/monitoring/prometheus_alertmanager.yml
@@ -0,0 +1,23 @@
+include:
+- service.prometheus.alertmanager.container
+parameters:
+ docker:
+ client:
+ service:
+ prometheus_alertmanager:
+ network: monitoring
+ replica: 2
+ environment:
+ config_dir: /opt/alertmanager/config
+ bind_port: ${prometheus:alertmanager:bind:port}
+ bind_address: ${prometheus:alertmanager:bind:address}
+ restart:
+ condition: any
+ image: ${_param:docker_image_alertmanager}
+ ports:
+ - 15011:${prometheus:alertmanager:bind:port}
+ volume:
+ site:
+ type: bind
+ source: /srv/volumes/prometheus-config
+ destination: /opt/alertmanager/config
diff --git a/docker/swarm/service/monitoring/prometheus_pushgateway.yml b/docker/swarm/service/monitoring/prometheus_pushgateway.yml
new file mode 100644
index 0000000..7ba37af
--- /dev/null
+++ b/docker/swarm/service/monitoring/prometheus_pushgateway.yml
@@ -0,0 +1,12 @@
+parameters:
+ docker:
+ client:
+ service:
+ prometheus_pushgateway:
+ network: monitoring
+ replica: 2
+ restart:
+ condition: any
+ image: ${_param:docker_image_pushgateway}
+ ports:
+ - 15012:9091
diff --git a/docker/swarm/service/monitoring/prometheus_server.yml b/docker/swarm/service/monitoring/prometheus_server.yml
new file mode 100644
index 0000000..24a9193
--- /dev/null
+++ b/docker/swarm/service/monitoring/prometheus_server.yml
@@ -0,0 +1,29 @@
+include:
+- service.prometheus.server.container
+parameters:
+ docker:
+ client:
+ service:
+ prometheus_server:
+ network: monitoring
+ replica: 1
+ environment:
+ config_dir: /opt/prometheus/config
+ bind_port: ${prometheus:server:bind:port}
+ bind_address: ${prometheus:server:bind:address}
+ alertmanager_port: ${prometheus:alertmanager:bind:port}
+ storage_local_engine: ${prometheus:server:storage:local:engine}
+ storage_local_retention: ${prometheus:server:storage:local:retention}
+ storage_local_memory_chunks: ${prometheus:server:storage:local:memory_chunks}
+ storage_local_max_chunks_to_persist: ${prometheus:server:storage:local:max_chunks_to_persist}
+ storage_local_num_fingerprint_mutexes: ${prometheus:server:storage:local:num_fingerprint_mutexes}
+ restart:
+ condition: any
+ image: ${_param:docker_image_prometheus}
+ ports:
+ - 15010:${prometheus:server:bind:port}
+ volume:
+ site:
+ type: bind
+ source: /srv/volumes/prometheus-config
+ destination: /opt/prometheus/config
diff --git a/glusterfs/client/volume/prometheus.yml b/glusterfs/client/volume/prometheus.yml
new file mode 100644
index 0000000..f8b2f3d
--- /dev/null
+++ b/glusterfs/client/volume/prometheus.yml
@@ -0,0 +1,10 @@
+parameters:
+ _param:
+ prometheus_glusterfs_service_host: ${_param:glusterfs_service_host}
+ glusterfs:
+ client:
+ volumes:
+ prometheus-config:
+ path: /srv/volumes/prometheus-config
+ server: ${_param:prometheus_glusterfs_service_host}
+ opts: 'defaults'
diff --git a/glusterfs/server/volume/prometheus.yml b/glusterfs/server/volume/prometheus.yml
new file mode 100644
index 0000000..2c4ca31
--- /dev/null
+++ b/glusterfs/server/volume/prometheus.yml
@@ -0,0 +1,17 @@
+parameters:
+ glusterfs:
+ server:
+ volumes:
+ prometheus-config:
+ storage: /srv/glusterfs/prometheus-config
+ replica: 3
+ bricks:
+ - ${_param:cluster_node01_address}:/srv/glusterfs/prometheus-config
+ - ${_param:cluster_node02_address}:/srv/glusterfs/prometheus-config
+ - ${_param:cluster_node03_address}:/srv/glusterfs/prometheus-config
+ options:
+ cluster.readdir-optimize: On
+ nfs.disable: On
+ network.remote-dio: On
+ diagnostics.client-log-level: WARNING
+ diagnostics.brick-log-level: WARNING
diff --git a/prometheus/server/target/etcd.yml b/prometheus/server/target/etcd.yml
new file mode 100644
index 0000000..e343bda
--- /dev/null
+++ b/prometheus/server/target/etcd.yml
@@ -0,0 +1,6 @@
+classes:
+- service.etcd.server.cluster
+parameters:
+ server:
+ target:
+ etcd: ${etcd:server:members}
diff --git a/prometheus/server/target/kubernetes.yml b/prometheus/server/target/kubernetes.yml
new file mode 100644
index 0000000..293895b
--- /dev/null
+++ b/prometheus/server/target/kubernetes.yml
@@ -0,0 +1,10 @@
+classes:
+- service.kubernetes.master.cluster
+parameters:
+ server:
+ target:
+ kubernetes:
+ api_ip: ${kubernetes:master:apiserver:address}
+ ssl_dir: /opt/prometheus/config
+ cert_name: kubelet-client.crt
+ key_name: kubelet-client.key
diff --git a/salt/master/formula/git/monitoring.yml b/salt/master/formula/git/monitoring.yml
new file mode 100644
index 0000000..e0cf30d
--- /dev/null
+++ b/salt/master/formula/git/monitoring.yml
@@ -0,0 +1,14 @@
+parameters:
+ salt:
+ master:
+ environment:
+ dev:
+ formula:
+ prometheus:
+ source: git
+ address: '${_param:salt_master_environment_repository}/salt-formula-prometheus.git'
+ revision: ${_param:salt_master_environment_revision}
+ telegraf:
+ source: git
+ address: '${_param:salt_master_environment_repository}/salt-formula-telegraf.git'
+ revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/pkg/monitoring.yml b/salt/master/formula/pkg/monitoring.yml
new file mode 100644
index 0000000..375cbd8
--- /dev/null
+++ b/salt/master/formula/pkg/monitoring.yml
@@ -0,0 +1,12 @@
+parameters:
+ salt:
+ master:
+ environment:
+ prd:
+ formula:
+ prometheus:
+ source: pkg
+ name: salt-formula-prometheus
+ telegraf:
+ source: pkg
+ name: salt-formula-telegraf
diff --git a/salt/master/git.yml b/salt/master/git.yml
index bcde77c..02d0b67 100644
--- a/salt/master/git.yml
+++ b/salt/master/git.yml
@@ -6,6 +6,7 @@
- system.salt.master.formula.git.openstack
- system.salt.master.formula.git.saltstack
- system.salt.master.formula.git.stacklight
+- system.salt.master.formula.git.monitoring
parameters:
_param:
salt_master_environment_repository: "https://github.com/salt-formulas"
diff --git a/salt/master/pkg.yml b/salt/master/pkg.yml
index 7686f07..046512f 100644
--- a/salt/master/pkg.yml
+++ b/salt/master/pkg.yml
@@ -6,4 +6,5 @@
- system.salt.master.formula.pkg.openstack
- system.salt.master.formula.pkg.saltstack
- system.salt.master.formula.pkg.stacklight
+- system.salt.master.formula.pkg.monitoring
- system.linux.system.repo.tcp_salt
diff --git a/salt/minion/cert/k8s_client_prometheus.yml b/salt/minion/cert/k8s_client_prometheus.yml
new file mode 100644
index 0000000..04cd374
--- /dev/null
+++ b/salt/minion/cert/k8s_client_prometheus.yml
@@ -0,0 +1,12 @@
+parameters:
+ salt:
+ minion:
+ cert:
+ k8s_client_prometheus:
+ host: ${_param:salt_minion_ca_host}
+ authority: ${_param:salt_minion_ca_authority}
+ key_file: /srv/volumes/prometheus-config/kubelet-client.key
+ cert_file: /srv/volumes/prometheus-config/kubelet-client.crt
+ common_name: kubelet-client
+ signing_policy: cert_client
+ alternative_names: IP:${_param:cluster_vip_address},IP:${_param:cluster_node01_address},IP:${_param:cluster_node02_address},IP:${_param:cluster_node03_address},IP:${_param:kubernetes_internal_api_address}
diff --git a/telegraf/agent/init.yml b/telegraf/agent/init.yml
new file mode 100644
index 0000000..57a1f61
--- /dev/null
+++ b/telegraf/agent/init.yml
@@ -0,0 +1,11 @@
+paramaters:
+ telegraf:
+ agent:
+ input:
+ diskio:
+ output:
+ prometheus_client:
+ bind:
+ address: 0.0.0.0
+ port: 9126
+ engine: prometheus