From 8dd0a7404621c6bcdaa93773df63cd991962ff5e Mon Sep 17 00:00:00 2001 From: Maieul BOYER Date: Fri, 14 Nov 2025 17:58:45 +0100 Subject: [PATCH] feat(logs): make it so rule logs-setup isn't necessary --- Docker.mk | 4 +++- Makefile | 5 ++--- docker-compose.yml | 8 +++++++- logs/elasticsearch/bootstrap.sh | 19 +++++++++++++++++++ .../docker-logs-policy.json | 0 logs/elasticsearch/docker-logs-template.json | 1 + logs/ilm/docker-logs-template.json | 6 ------ logs/kibana/bootstrap.sh | 16 ++++++++++++++++ logs/kibana/docker-logs.json | 1 + 9 files changed, 49 insertions(+), 11 deletions(-) create mode 100755 logs/elasticsearch/bootstrap.sh rename logs/{ilm => elasticsearch}/docker-logs-policy.json (100%) create mode 100644 logs/elasticsearch/docker-logs-template.json delete mode 100644 logs/ilm/docker-logs-template.json create mode 100755 logs/kibana/bootstrap.sh create mode 100644 logs/kibana/docker-logs.json diff --git a/Docker.mk b/Docker.mk index c620a8f..013cc6a 100644 --- a/Docker.mk +++ b/Docker.mk @@ -6,10 +6,12 @@ # By: maiboyer +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2025/06/11 18:10:26 by maiboyer #+# #+# # -# Updated: 2025/11/14 16:13:22 by rparodi ### ########.fr # +# Updated: 2025/11/14 17:41:06 by maiboyer ### ########.fr # # # # **************************************************************************** # +.PHONY: logs + all: build docker compose up -d diff --git a/Makefile b/Makefile index 3e2417f..fe1428d 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: rparodi +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2023/11/12 11:05:05 by rparodi #+# #+# # -# Updated: 2025/11/14 15:14:34 by rparodi ### ########.fr # +# Updated: 2025/11/14 17:40:57 by maiboyer ### ########.fr # # # # **************************************************************************** # @@ -32,7 +32,6 @@ ECHO = /usr/bin/env echo all: @$(MAKE) --no-print-directory header @$(MAKE) --no-print-directory -f ./Docker.mk - @$(MAKE) --no-print-directory -f ./Docker.mk logs-setup @$(MAKE) --no-print-directory footer build: @@ -158,4 +157,4 @@ fnginx: nginx-dev/nginx-selfsigned.crt nginx-dev/nginx-selfsigned.key wait # phony -.PHONY: all clean fclean re header footer npm@install npm@clean npm@fclean npm@build sql tmux +.PHONY: all clean fclean re header footer npm@install npm@clean npm@fclean npm@build sql tmux logs diff --git a/docker-compose.yml b/docker-compose.yml index 4d86110..1b166ef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -249,9 +249,11 @@ services: - ES_JAVA_OPTS=-Xms512m -Xmx512m - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} volumes: - - ./logs/elasticsearch/data:/usr/share/elasticsearch/data + - elastic-data:/usr/share/elasticsearch/data + - ./logs/elasticsearch:/setup ports: - "9200:9200" + command: ["/setup/bootstrap.sh"] restart: unless-stopped logstash: @@ -281,6 +283,9 @@ services: - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} ports: - "5601:5601" + volumes: + - ./logs/kibana:/setup + command: ["/setup/bootstrap.sh"] restart: unless-stopped volumes: @@ -288,3 +293,4 @@ volumes: sqlite-volume: static-volume: grafana-data: + elastic-data: diff --git a/logs/elasticsearch/bootstrap.sh b/logs/elasticsearch/bootstrap.sh new file mode 100755 index 0000000..a767be8 --- /dev/null +++ b/logs/elasticsearch/bootstrap.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +setup_ilm() { + set -xe + until curl -s -f http://localhost:9200 >/dev/null; do + sleep 2; + done; + + curl -v -X PUT "localhost:9200/_ilm/policy/docker-logs-policy" \ + -H "Content-Type: application/json" \ + -d '@/setup/docker-logs-policy.json' + curl -v -X PUT "localhost:9200/_template/docker-logs-template" \ + -H "Content-Type: application/json" \ + -d '@/setup/docker-logs-template.json' + exit 0 +} + +setup_ilm & +exec /usr/local/bin/docker-entrypoint.sh eswrapper >/dev/null diff --git a/logs/ilm/docker-logs-policy.json b/logs/elasticsearch/docker-logs-policy.json similarity index 100% rename from logs/ilm/docker-logs-policy.json rename to logs/elasticsearch/docker-logs-policy.json diff --git a/logs/elasticsearch/docker-logs-template.json b/logs/elasticsearch/docker-logs-template.json new file mode 100644 index 0000000..39e36df --- /dev/null +++ b/logs/elasticsearch/docker-logs-template.json @@ -0,0 +1 @@ +{"index_patterns":["docker-*"],"settings":{"index.lifecycle.name":"docker-logs-policy"}}} diff --git a/logs/ilm/docker-logs-template.json b/logs/ilm/docker-logs-template.json deleted file mode 100644 index 9cbed1b..0000000 --- a/logs/ilm/docker-logs-template.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "index_patterns": ["docker-*"], - "settings": { - "index.lifecycle.name": "docker-logs-policy" - } -} diff --git a/logs/kibana/bootstrap.sh b/logs/kibana/bootstrap.sh new file mode 100755 index 0000000..f09e713 --- /dev/null +++ b/logs/kibana/bootstrap.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +kibana_setup() { + set -xe + until curl -s -f "localhost:5601/api/status"; do + sleep 2 + done + + curl -v -X POST "localhost:5601/api/saved_objects/index-pattern/docker-logs" \ + -H "kbn-xsrf: true" \ + -H "Content-Type: application/json" \ + -d '@/setup/docker-logs.json' + exit 0 +} +kibana_setup & +exec /usr/local/bin/kibana-docker >/dev/null diff --git a/logs/kibana/docker-logs.json b/logs/kibana/docker-logs.json new file mode 100644 index 0000000..d8bb53e --- /dev/null +++ b/logs/kibana/docker-logs.json @@ -0,0 +1 @@ +{"attributes":{"title":"docker-*","timeFieldName":"@timestamp"}}