diff options
Diffstat (limited to 'app/telemetry/deploy/telemetry.hcl')
-rw-r--r-- | app/telemetry/deploy/telemetry.hcl | 166 |
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 + } + } + + } +} |