From 23117181ef8383bdb8a4ee60fa0b98bb4de4f615 Mon Sep 17 00:00:00 2001 From: Elvire Date: Fri, 12 Dec 2025 15:28:18 +0100 Subject: [PATCH] update --- centre_observabilite/logs/docker-compose.yml | 132 +++++++++++++ .../metrics/docker-compose.yml | 74 ++++++++ .../visualisation/docker-compose.yml | 23 +++ .../apache_service/docker-compose.yml | 176 ++++++++++++++++++ 4 files changed, 405 insertions(+) create mode 100644 centre_observabilite/logs/docker-compose.yml create mode 100644 centre_observabilite/metrics/docker-compose.yml create mode 100644 centre_observabilite/visualisation/docker-compose.yml create mode 100644 conteneur/services/apache_service/docker-compose.yml diff --git a/centre_observabilite/logs/docker-compose.yml b/centre_observabilite/logs/docker-compose.yml new file mode 100644 index 0000000..d40fd72 --- /dev/null +++ b/centre_observabilite/logs/docker-compose.yml @@ -0,0 +1,132 @@ +services: + loki: + image: grafana/loki:2.8.2 + container_name: loki-observability + ports: + - "3100:3100" + command: -config.file=/etc/loki/local-config.yaml + configs: + - source: loki_config + target: /etc/loki/local-config.yaml + volumes: + - loki-wal:/wal + - loki-chunks:/loki/chunks + - loki-index:/loki/index + networks: + - observability_observability + + promtail-config-init: + image: busybox:latest + container_name: promtail-config-init + volumes: + - promtail-config-vol:/config + command: + - /bin/sh + - -c + - | + cat > /config/config.yaml <<'EOF' + server: + http_listen_port: 9080 + grpc_listen_port: 0 + positions: + filename: /tmp/positions.yaml + clients: + - url: http://loki:3100/loki/api/v1/push + scrape_configs: + - job_name: docker_logs + static_configs: + - targets: [localhost] + labels: + job: docker + __path__: /var/lib/docker/containers/*/*.log + - job_name: system_logs + static_configs: + - targets: [localhost] + labels: + job: syslog + __path__: /var/log/*.log + EOF + echo "Promtail config created" + restart: "no" + networks: + - observability_observability + + promtail: + image: grafana/promtail:2.8.2 + container_name: promtail-observability + volumes: + - /var/lib/docker/containers:/var/lib/docker/containers:ro + - /var/log:/var/log:ro + - promtail-config-vol:/etc/promtail:ro + command: + - -config.file=/etc/promtail/config.yaml + networks: + - observability_observability + depends_on: + - promtail-config-init + +configs: + loki_config: + content: | + auth_enabled: false + server: + http_listen_port: 3100 + grpc_listen_port: 9096 + common: + path_prefix: /loki + storage: + filesystem: + chunks_directory: /loki/chunks + rules_directory: /loki/rules + replication_factor: 1 + ring: + instance_addr: 127.0.0.1 + kvstore: + store: inmemory + ingester: + wal: + enabled: true + dir: /wal + flush_on_shutdown: true + chunk_idle_period: 5m + chunk_retain_period: 30s + max_chunk_age: 1h + lifecycler: + ring: + replication_factor: 1 + schema_config: + configs: + - from: 2020-10-24 + store: boltdb-shipper + object_store: filesystem + schema: v11 + index: + prefix: index_ + period: 24h + storage_config: + boltdb_shipper: + active_index_directory: /loki/index + cache_location: /loki/index + shared_store: filesystem + filesystem: + directory: /loki/chunks + limits_config: + enforce_metric_name: false + reject_old_samples: true + reject_old_samples_max_age: 168h + ingestion_rate_mb: 10 + ingestion_burst_size_mb: 20 + compactor: + working_directory: /loki/compactor + shared_store: filesystem + compaction_interval: 10m + +volumes: + promtail-config-vol: + loki-wal: + loki-chunks: + loki-index: + +networks: + observability_observability: + external: true diff --git a/centre_observabilite/metrics/docker-compose.yml b/centre_observabilite/metrics/docker-compose.yml new file mode 100644 index 0000000..b1d6dc1 --- /dev/null +++ b/centre_observabilite/metrics/docker-compose.yml @@ -0,0 +1,74 @@ +# docker-compose-metrics.yml +# Lancer en premier : docker compose -f docker-compose-metrics.yml up -d + +services: + prometheus-config-init: + image: busybox:latest + container_name: prometheus-config-init + volumes: + - prometheus-config-vol:/config + command: + - /bin/sh + - -c + - | + cat > /config/prometheus.yml <<'EOF' + global: + scrape_interval: 15s + scrape_configs: + - job_name: 'prometheus' + static_configs: + - targets: ['localhost:9090'] + - job_name: 'observabilite' + static_configs: + - targets: ['172.17.0.1:9100'] + - job_name: 'scaphandre' + static_configs: + - targets: ['192.168.56.61:8080'] + fallback_scrape_protocol: "PrometheusText1.0.0" + - job_name: 'apache_vmservices' + static_configs: + - targets: ['apache_exporter_service:9117'] + - job_name: 'vms' + static_configs: + - targets: ['192.168.56.18:9100'] + EOF + echo "Prometheus config created" + restart: "no" + networks: + - observability + + prometheus: + image: prom/prometheus:latest + container_name: prometheus-observability + volumes: + - prometheus-config-vol:/etc/prometheus:ro + command: + - '--config.file=/etc/prometheus/prometheus.yml' + ports: + - "9090:9090" + networks: + - observability + depends_on: + - prometheus-config-init + + node_exporter: + image: prom/node-exporter:latest + container_name: node-exporter + restart: unless-stopped + pid: "host" + network_mode: "host" + volumes: + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /:/rootfs:ro + command: + - '--path.procfs=/host/proc' + - '--path.sysfs=/host/sys' + - '--collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc)($$|/)"' + +volumes: + prometheus-config-vol: + +networks: + observability: + driver: bridge \ No newline at end of file diff --git a/centre_observabilite/visualisation/docker-compose.yml b/centre_observabilite/visualisation/docker-compose.yml new file mode 100644 index 0000000..9d56fba --- /dev/null +++ b/centre_observabilite/visualisation/docker-compose.yml @@ -0,0 +1,23 @@ +# docker-compose-visualisation.yml +# Lancer en troisième : docker compose -f docker-compose-visualisation.yml up -d + +services: + grafana: + image: grafana/grafana:latest + container_name: grafana-observability + ports: + - "3000:3000" + volumes: + - grafana-data:/var/lib/grafana + environment: + - GF_SECURITY_ADMIN_USER=admin + - GF_SECURITY_ADMIN_PASSWORD=admin + networks: + - observability_observability + +volumes: + grafana-data: + +networks: + observability_observability: + external: true \ No newline at end of file diff --git a/conteneur/services/apache_service/docker-compose.yml b/conteneur/services/apache_service/docker-compose.yml new file mode 100644 index 0000000..881cbe7 --- /dev/null +++ b/conteneur/services/apache_service/docker-compose.yml @@ -0,0 +1,176 @@ +services: + apache-config-init: + image: busybox:latest + container_name: apache-config-init + volumes: + - apache-config:/config + command: + - /bin/sh + - -c + - | + cat > /config/httpd.conf <<'EOF' + ServerRoot "/usr/local/apache2" + Listen 80 + + LoadModule mpm_event_module modules/mod_mpm_event.so + LoadModule authn_file_module modules/mod_authn_file.so + LoadModule authn_core_module modules/mod_authn_core.so + LoadModule authz_host_module modules/mod_authz_host.so + LoadModule authz_groupfile_module modules/mod_authz_groupfile.so + LoadModule authz_user_module modules/mod_authz_user.so + LoadModule authz_core_module modules/mod_authz_core.so + LoadModule access_compat_module modules/mod_access_compat.so + LoadModule auth_basic_module modules/mod_auth_basic.so + LoadModule reqtimeout_module modules/mod_reqtimeout.so + LoadModule filter_module modules/mod_filter.so + LoadModule mime_module modules/mod_mime.so + LoadModule log_config_module modules/mod_log_config.so + LoadModule env_module modules/mod_env.so + LoadModule headers_module modules/mod_headers.so + LoadModule setenvif_module modules/mod_setenvif.so + LoadModule version_module modules/mod_version.so + LoadModule unixd_module modules/mod_unixd.so + LoadModule status_module modules/mod_status.so + LoadModule autoindex_module modules/mod_autoindex.so + LoadModule dir_module modules/mod_dir.so + LoadModule alias_module modules/mod_alias.so + + + User daemon + Group daemon + + + ServerAdmin admin@localhost + ServerName localhost + + + AllowOverride none + Require all denied + + + DocumentRoot "/usr/local/apache2/htdocs" + + Options Indexes FollowSymLinks + AllowOverride None + Require all granted + + + + DirectoryIndex index.html + + + + Require all denied + + + ErrorLog /usr/local/apache2/logs/error_log + LogLevel warn + + + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined + LogFormat "%h %l %u %t \"%r\" %>s %b" common + CustomLog /usr/local/apache2/logs/access_log combined + + + + TypesConfig conf/mime.types + AddType application/x-compress .Z + AddType application/x-gzip .gz .tgz + + + # Configuration du module status pour apache_exporter + + SetHandler server-status + Require all granted + + EOF + echo "Apache config created" + restart: "no" + + apache_service: + image: httpd:2.4 + container_name: conteneur_service + ports: + - "8080:80" + volumes: + - apache-logs:/usr/local/apache2/logs + - apache-config:/usr/local/apache2/conf:ro + networks: + - observability + depends_on: + - apache-config-init + command: > + sh -c "touch /usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log && + exec httpd-foreground" + + apache_exporter: + image: lusotycoon/apache-exporter:v1.0.10 + container_name: apache_exporter_service + command: + - '--scrape_uri=http://apache_service/server-status?auto' + ports: + - "9117:9117" + depends_on: + - apache_service + networks: + - observability + + promtail-service-config-init: + image: busybox:latest + container_name: promtail-service-config-init + volumes: + - promtail-service-config-vol:/config + command: + - /bin/sh + - -c + - | + cat > /config/config.yaml <<'EOF' + server: + http_listen_port: 9080 + grpc_listen_port: 0 + positions: + filename: /tmp/positions.yaml + clients: + - url: http://192.168.56.61:3100/loki/api/v1/push + scrape_configs: + - job_name: apache_access + static_configs: + - targets: [localhost] + labels: + job: apache_access + host: conteneur_service + __path__: /var/log/apache2/access_log + - job_name: apache_error + static_configs: + - targets: [localhost] + labels: + job: apache_error + host: conteneur_service + __path__: /var/log/apache2/error_log + EOF + echo "Promtail service config created" + restart: "no" + + promtail_service: + image: grafana/promtail:2.9.0 + container_name: promtail_service + volumes: + - apache-logs:/var/log/apache2:ro + - promtail-service-config-vol:/etc/promtail:ro + command: + - '-config.file=/etc/promtail/config.yaml' + depends_on: + - promtail-service-config-init + - apache_service + networks: + - observability + +volumes: + apache-logs: + apache-config: + promtail-service-config-vol: + +networks: + observability: + external: true + name: observability_observability \ No newline at end of file