aboutsummaryrefslogtreecommitdiff
path: root/app/telemetry/deploy/telemetry.hcl
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2022-02-17 15:06:09 +0100
committerAlex Auvolat <alex@adnab.me>2022-02-17 15:06:09 +0100
commit65ca536b3b3bf92115d0fd2618555ea056dc6b6f (patch)
tree6c5804fa5f0685809b0b9d698a1aad53aa5bdd1c /app/telemetry/deploy/telemetry.hcl
parent689870ec00147bced3c7105daf617b0fc1e3c5eb (diff)
downloadnixcfg-65ca536b3b3bf92115d0fd2618555ea056dc6b6f.tar.gz
nixcfg-65ca536b3b3bf92115d0fd2618555ea056dc6b6f.zip
Add telemetry to garage staging
Diffstat (limited to 'app/telemetry/deploy/telemetry.hcl')
-rw-r--r--app/telemetry/deploy/telemetry.hcl166
1 files changed, 166 insertions, 0 deletions
diff --git a/app/telemetry/deploy/telemetry.hcl b/app/telemetry/deploy/telemetry.hcl
new file mode 100644
index 0000000..bcfe3f6
--- /dev/null
+++ b/app/telemetry/deploy/telemetry.hcl
@@ -0,0 +1,166 @@
+job "telemetry" {
+ datacenters = ["neptune"]
+ type = "service"
+
+ group "grafana" {
+ count = 1
+
+ constraint {
+ attribute = "${attr.unique.hostname}"
+ operator = "="
+ value = "cariacou"
+ }
+
+ network {
+ port "otel_grpc" {
+ static = 4317
+ }
+ port "elastic" {
+ static = 9200
+ }
+ port "kibana" {
+ static = 5601
+ }
+ port "apm" {
+ static = 8200
+ }
+ port "grafana" {
+ static = 3333
+ }
+ }
+
+ task "otel" {
+ driver = "docker"
+ config {
+ image = "otel/opentelemetry-collector-contrib:0.44.0"
+ args = [
+ "--config=/etc/otel-config.yaml",
+ ]
+ network_mode = "host"
+ ports= [ "otel_grpc" ]
+ volumes = [
+ "secrets/otel-config.yaml:/etc/otel-config.yaml"
+ ]
+ }
+
+ template {
+ data = file("../config/otel-config.yaml")
+ destination = "secrets/otel-config.yaml"
+ }
+
+ resources {
+ memory = 200
+ cpu = 100
+ }
+ }
+
+ task "elastic" {
+ driver = "docker"
+ config {
+ image = "docker.elastic.co/elasticsearch/elasticsearch:7.17.0"
+ network_mode = "host"
+ volumes = [
+ "/mnt/ssd/telemetry/es_data:/usr/share/elasticsearch/data",
+ ]
+ ports = [ "elastic" ]
+ }
+
+ resources {
+ memory = 2500
+ cpu = 500
+ }
+
+ template {
+ data = <<EOH
+node.name=elastic
+http.port=9200
+cluster.name=es-docker-cluster
+discovery.type=single-node
+bootstrap.memory_lock=true
+ES_JAVA_OPTS=-Xms512m -Xmx512m
+EOH
+ destination = "secrets/env"
+ env = true
+ }
+ }
+
+ task "kibana" {
+ driver = "docker"
+ config {
+ image = "docker.elastic.co/kibana/kibana:7.17.0"
+ network_mode = "host"
+ ports = [ "kibana" ]
+ }
+
+ template {
+ data = <<EOH
+SERVER_NAME=kibana.local
+ELASTICSEARCH_HOSTS=http://localhost:9200
+EOH
+ destination = "secrets/env"
+ env = true
+ }
+
+ resources {
+ memory = 1500
+ cpu = 500
+ }
+ }
+
+ task "apm" {
+ driver = "docker"
+ config {
+ image = "docker.elastic.co/apm/apm-server:7.17.0"
+ network_mode = "host"
+ ports = [ "apm" ]
+ args = [ "--strict.perms=false" ]
+ volumes = [
+ "secrets/apm-config.yaml:/usr/share/apm-server/apm-server.yml:ro"
+ ]
+ }
+
+ template {
+ data = file("../config/apm-config.yaml")
+ destination = "secrets/apm-config.yaml"
+ }
+
+ resources {
+ memory = 200
+ cpu = 100
+ }
+ }
+
+ task "grafana" {
+ driver = "docker"
+ config {
+ image = "grafana/grafana:8.3.5"
+ network_mode = "host"
+ ports = [ "grafana" ]
+ volumes = [
+ "/mnt/ssd/telemetry/grafana:/var/lib/grafana",
+ "secrets/elastic.yaml:/etc/grafana/provisioning/datasources/elastic.yaml"
+ ]
+ }
+
+ template {
+ data = file("../config/grafana/provisioning/datasources/elastic.yaml")
+ destination = "secrets/elastic.yaml"
+ }
+
+ template {
+ data = <<EOH
+GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel,grafana-worldmap-panel,grafana-polystat-panel
+GF_SERVER_HTTP_PORT=3333
+EOH
+ destination = "secrets/env"
+ env = true
+ }
+
+ resources {
+ memory = 500
+ cpu = 100
+ }
+ }
+
+ }
+}