Skip to content

Commit ee9f18b

Browse files
authored
Merge branch 'main' into traefik-rolling-config-updates
2 parents d2b4ef5 + 8b8cc96 commit ee9f18b

File tree

21 files changed

+180
-39
lines changed

21 files changed

+180
-39
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ docs/_build
129129
/services/monitoring/pgsql_query_exporter_config.yaml
130130
/services/monitoring/docker-compose.yml
131131
/services/monitoring/smokeping_prober_config.yaml
132-
132+
services/monitoring/tempo_config.yaml
133133

134134
# Simcore: Contains location of repo.config file on the machine and of the whole config directory
135135
.config.location

Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ down-maintenance: ## Stop the maintenance mode
7171
fi \
7272
,)
7373

74-
7574
# Misc: info & clean
7675
.PHONY: info info-vars info-local
7776
info: ## Displays some important info

services/admin-panels/Makefile

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,42 +13,42 @@ include ${REPO_BASE_DIR}/scripts/common.Makefile
1313

1414
# Helpers --------------------------------------------------
1515
define custom-jinja
16-
@${REPO_BASE_DIR}/.venv/bin/j2 --format=json $(1) $(2) -o $(3)
16+
@${REPO_BASE_DIR}/.venv/bin/j2 --format=json $(1) $(2) -o $(3) \
17+
--filters $(REPO_BASE_DIR)/scripts/j2cli_global_filters.py
1718
endef
1819

1920
.PHONY: .data.json
2021
.data.json:
2122
@$(_tree) -J ${PWD}/data | jq ".[0]" > .data.json
2223

23-
2424
.PHONY: docker-compose.yml
25-
docker-compose.yml: docker-compose.yml.j2 .venv .data.json
25+
docker-compose.yml: docker-compose.yml.j2 .venv .data.json .env jupyter_server_config.py
2626
$(call custom-jinja, $<, .data.json, tmp.yml)
2727
@${REPO_BASE_DIR}/scripts/docker-stack-config.bash tmp.yml > $@
2828
@rm tmp.yml
2929

3030
.PHONY: up
31-
up: .init .env jupyter_server_config.py ${TEMP_COMPOSE} ## Deploys jaeger stack
31+
up: .init ${TEMP_COMPOSE} prune-docker-stack-configs ## Deploys jaeger stack
3232
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE} ${STACK_NAME}
3333

3434
.PHONY: up-letsencrypt-http
35-
up-letsencrypt-http: .init .env jupyter_server_config.py ${TEMP_COMPOSE}-letsencrypt-http ## Deploys jaeger stack using let's encrypt http challenge
35+
up-letsencrypt-http: .init ${TEMP_COMPOSE}-letsencrypt-http prune-docker-stack-configs ## Deploys jaeger stack using let's encrypt http challenge
3636
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE}-letsencrypt-http ${STACK_NAME}
3737

3838
.PHONY: up-letsencrypt-dns
39-
up-letsencrypt-dns: .init .env jupyter_server_config.py ${TEMP_COMPOSE}-letsencrypt-dns ## Deploys jaeger stack using let's encrypt dns challenge
39+
up-letsencrypt-dns: .init ${TEMP_COMPOSE}-letsencrypt-dns prune-docker-stack-configs ## Deploys jaeger stack using let's encrypt dns challenge
4040
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE}-letsencrypt-dns ${STACK_NAME}
4141

4242
.PHONY: up-dalco ## Deploys jaeger stack for Dalco Cluster
43-
up-dalco: .init .env jupyter_server_config.py ${TEMP_COMPOSE}-dalco
43+
up-dalco: .init ${TEMP_COMPOSE}-dalco prune-docker-stack-configs
4444
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE}-dalco ${STACK_NAME}
4545

4646
.PHONY: up-aws
47-
up-aws: .init .env jupyter_server_config.py ${TEMP_COMPOSE}-aws ## Deploys jaeger stack in aws
47+
up-aws: .init ${TEMP_COMPOSE}-aws prune-docker-stack-configs ## Deploys jaeger stack in aws
4848
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE}-aws ${STACK_NAME}
4949

5050
.PHONY: up-master
51-
up-master: .init .env jupyter_server_config.py ${TEMP_COMPOSE}-master
51+
up-master: .init ${TEMP_COMPOSE}-master prune-docker-stack-configs
5252
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE}-master ${STACK_NAME}
5353

5454
.PHONY: up-local
@@ -85,7 +85,6 @@ ${TEMP_COMPOSE}-aws: docker-compose.yml docker-compose.aws.yml .env
8585
${TEMP_COMPOSE}: docker-compose.yml .env
8686
@${REPO_BASE_DIR}/scripts/docker-stack-config.bash -e .env $< > $@
8787

88-
8988
.PHONY: jupyter_server_config.py
9089
jupyter_server_config.py: jupyter_server_config.py.template
9190
@set -o allexport; \

services/admin-panels/docker-compose.yml.j2

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
version: "3.7"
22
configs:
33
adminpanel-jupyter-server-config:
4+
name: ${STACK_NAME}_adminpanel-jupyter-server-config_{{ "./jupyter_server_config.py" | sha256file | substring(0,10) }}
45
file: ./jupyter_server_config.py
56
{% for item in contents %}
67
{{ item.name }}:
8+
name: {% raw %}${STACK_NAME}{% endraw %}_{{item.name}}_{{ ("./data/" ~ item.name) | sha256file | substring(0,10) }}
79
file: ./data/{{ item.name }}{% endfor %}
810
services:
911
adminpanels:

services/admin-panels/template.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
# This contains all relevant secrets so that the admin panels may use them to access the services
2+
STACK_NAME=${STACK_NAME}
3+
24
MONITORING_DOMAIN=${MONITORING_DOMAIN}
35
ADMINPANELS_DOMAIN=${ADMINPANELS_DOMAIN}
46
DEPLOYMENT_FQDNS=${DEPLOYMENT_FQDNS}

services/graylog/scripts/configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ def configure_syslog_capture(_session: requests.Session, _headers: dict) -> None
292292
if len([i for i in r2["inputs"] if i["title"] == "Syslog"]) == 0:
293293
raw_data = (
294294
'{"title":"Syslog","type":"org.graylog2.inputs.syslog.udp.SyslogUDPInput","configuration":{"bind_address":"0.0.0.0","port":'
295-
+ GRAYLOG_SYSLOG_CAPTURE_PORT
295+
+ str(GRAYLOG_SYSLOG_CAPTURE_PORT)
296296
+ ',"recv_buffer_size":262144,"number_worker_threads":8,"override_source":null,"force_rdns":false,"allow_override_date":true,"store_full_message":true,"expand_structured_data":false},"global":true,"node":"'
297297
+ node_uuid
298298
+ '"}'

services/jaeger/opentelemetry-collector-config.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@ receivers:
88
exporters:
99
otlphttp:
1010
endpoint: ${TRACING_OPENTELEMETRY_COLLECTOR_EXPORTER_ENDPOINT} # Adjust to your Jaeger endpoint
11+
otlp:
12+
endpoint: http://tempo:4317
13+
tls:
14+
insecure: true
1115
service:
1216
pipelines:
1317
traces:
1418
receivers: [otlp]
15-
exporters: [otlphttp]
19+
exporters: [otlphttp,otlp]
1620
processors: [batch,probabilistic_sampler,filter/drop_healthcheck]
1721
telemetry:
1822
logs:

services/monitoring/Makefile

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,24 @@ REPO_BASE_DIR := $(abspath $(dir $(abspath $(lastword $(MAKEFILE_LIST))))../..)
99
# TARGETS --------------------------------------------------
1010
include ${REPO_BASE_DIR}/scripts/common.Makefile
1111

12+
define create-s3-bucket
13+
# ensure bucket is available in S3...
14+
@set -o allexport; \
15+
source .env; \
16+
echo Creating bucket "$${TEMPO_S3_BUCKET}";\
17+
${REPO_BASE_DIR}/scripts/create-s3-bucket.bash "$${TEMPO_S3_BUCKET}" && \
18+
set +o allexport; \
19+
# bucket is available in S3
20+
endef
21+
1222
.PHONY: up
1323
up: .init .env config.prometheus ${TEMP_COMPOSE} ## Deploys or updates current stack "$(STACK_NAME)". If MONITORED_NETWORK is not specified, it will create an attachable network
1424
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE} $(STACK_NAME)
1525
$(MAKE) grafana-import
1626

1727
.PHONY: up-local
1828
up-local: .init .env config.prometheus.simcore ${TEMP_COMPOSE}-local ## Deploys or updates current stack "$(STACK_NAME)". If MONITORED_NETWORK is not specified, it will create an attachable network
29+
@$(create-s3-bucket)
1930
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE}-local $(STACK_NAME)
2031
$(MAKE) grafana-import
2132

@@ -49,28 +60,28 @@ up-master: .init .env config.monitoring config.prometheus.ceph.simcore ${TEMP_C
4960
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE}-master ${STACK_NAME}
5061
$(MAKE) grafana-import
5162

52-
${TEMP_COMPOSE}: docker-compose.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml
63+
${TEMP_COMPOSE}: docker-compose.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml tempo_config.yaml
5364
@${REPO_BASE_DIR}/scripts/docker-stack-config.bash -e .env $< > $@
5465

55-
${TEMP_COMPOSE}-letsencrypt-http: docker-compose.yml docker-compose.letsencrypt.http.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml
66+
${TEMP_COMPOSE}-letsencrypt-http: docker-compose.yml docker-compose.letsencrypt.http.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml tempo_config.yaml
5667
@${REPO_BASE_DIR}/scripts/docker-stack-config.bash -e .env $< docker-compose.letsencrypt.http.yml > $@
5768

58-
${TEMP_COMPOSE}-letsencrypt-dns: docker-compose.yml docker-compose.letsencrypt.dns.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml
69+
${TEMP_COMPOSE}-letsencrypt-dns: docker-compose.yml docker-compose.letsencrypt.dns.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml tempo_config.yaml
5970
@${REPO_BASE_DIR}/scripts/docker-stack-config.bash -e .env $< docker-compose.letsencrypt.dns.yml > $@
6071

61-
${TEMP_COMPOSE}-dalco: docker-compose.yml docker-compose.dalco.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml
72+
${TEMP_COMPOSE}-dalco: docker-compose.yml docker-compose.dalco.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml tempo_config.yaml
6273
@${REPO_BASE_DIR}/scripts/docker-stack-config.bash -e .env $< docker-compose.dalco.yml > $@
6374

64-
${TEMP_COMPOSE}-public: docker-compose.yml docker-compose.public.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml
75+
${TEMP_COMPOSE}-public: docker-compose.yml docker-compose.public.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml tempo_config.yaml
6576
@${REPO_BASE_DIR}/scripts/docker-stack-config.bash -e .env $< docker-compose.public.yml > $@
6677

67-
${TEMP_COMPOSE}-aws: docker-compose.yml docker-compose.aws.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml
78+
${TEMP_COMPOSE}-aws: docker-compose.yml docker-compose.aws.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml tempo_config.yaml
6879
@${REPO_BASE_DIR}/scripts/docker-stack-config.bash -e .env $< docker-compose.aws.yml > $@
6980

70-
${TEMP_COMPOSE}-master: docker-compose.yml docker-compose.master.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml
81+
${TEMP_COMPOSE}-master: docker-compose.yml docker-compose.master.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml tempo_config.yaml
7182
@${REPO_BASE_DIR}/scripts/docker-stack-config.bash -e .env $< docker-compose.master.yml > $@
7283

73-
${TEMP_COMPOSE}-local: docker-compose.yml docker-compose.letsencrypt.dns.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml
84+
${TEMP_COMPOSE}-local: docker-compose.yml docker-compose.letsencrypt.dns.yml config.monitoring .env pgsql_query_exporter_config.yaml smokeping_prober_config.yaml tempo_config.yaml
7485
@${REPO_BASE_DIR}/scripts/docker-stack-config.bash -e .env $< docker-compose.letsencrypt.dns.yml > $@
7586

7687
docker-compose.yml: docker-compose.yml.j2 .env .venv pgsql_query_exporter_config.yaml
@@ -137,6 +148,9 @@ pgsql_query_exporter_config.yaml: pgsql_query_exporter_config.yaml.j2 ${REPO_CON
137148
smokeping_prober_config.yaml: smokeping_prober_config.yaml.j2 ${REPO_CONFIG_LOCATION} .env .venv
138149
$(call jinja, $<, .env, $@);
139150

151+
tempo_config.yaml: tempo_config.yaml.j2 ${REPO_CONFIG_LOCATION} .env .venv
152+
$(call jinja, $<, .env, $@);
153+
140154
.PHONY: grafana/assets
141155
grafana/assets: ${REPO_CONFIG_LOCATION}
142156
@$(MAKE_C) grafana assets

services/monitoring/docker-compose.yml.j2

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ networks:
1717
configs:
1818
alertmanager_config:
1919
file: ./alertmanager/config.yml
20+
tempo_config:
21+
file: ./tempo_config.yaml
2022
node_exporter_entrypoint:
2123
file: ./node-exporter/docker-entrypoint.sh
2224
prometheus_config:
@@ -398,3 +400,27 @@ services:
398400
reservations:
399401
memory: 32M
400402
cpus: "0.1"
403+
tempo:
404+
image: grafana/tempo:2.6.1
405+
command: "-target=scalable-single-binary -config.file=/etc/tempo.yaml"
406+
configs:
407+
- source: tempo_config
408+
target: /etc/tempo.yaml
409+
networks:
410+
- monitored
411+
deploy:
412+
labels:
413+
- traefik.enable=true
414+
- traefik.docker.network=${PUBLIC_NETWORK}
415+
- traefik.http.services.tempo.loadbalancer.server.port=9095
416+
- traefik.http.routers.tempo.rule=Host(`${MONITORING_DOMAIN}`) && PathPrefix(`/tempo`)
417+
- traefik.http.routers.tempo.priority=10
418+
- traefik.http.routers.tempo.entrypoints=https
419+
- traefik.http.routers.tempo.tls=true
420+
- traefik.http.middlewares.tempo_replace_regex.replacepathregex.regex=^/tempo/?(.*)$$
421+
- traefik.http.middlewares.tempo_replace_regex.replacepathregex.replacement=/$${1}
422+
- traefik.http.routers.tempo.middlewares=ops_whitelist_ips@swarm, ops_gzip@swarm, tempo_replace_regex
423+
resources:
424+
limits:
425+
memory: 2000M
426+
cpus: "2.0"

services/monitoring/grafana/terraform/datasources.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,11 @@ resource "grafana_data_source" "prometheuscatchall" {
1515
is_default = false
1616
uid = "RmZEr52nz"
1717
}
18+
19+
resource "grafana_data_source" "tempo" {
20+
type = "tempo"
21+
name = "tempo"
22+
url = var.TEMPO_URL
23+
basic_auth_enabled = false
24+
is_default = false
25+
}

0 commit comments

Comments
 (0)