diff --git a/lesson30/docker-compose.yml b/lesson30/docker-compose.yml new file mode 100644 index 0000000..fcae40d --- /dev/null +++ b/lesson30/docker-compose.yml @@ -0,0 +1,99 @@ +services: + ui: + image: ghcr.io/codeby-devops/ui:logging + container_name: ui + ports: + - "9292:9292/tcp" + environment: + - POST_SERVICE_HOST=post + - POST_SERVICE_PORT=5000 + - COMMENT_SERVICE_HOST=comment + - COMMENT_SERVICE_PORT=9292 + logging: + driver: "fluentd" + options: + fluentd-address: "127.0.0.1:24224" + tag: "service.ui" + depends_on: + - comment + - post + - fluentd + networks: + - logging + + post: + image: ghcr.io/codeby-devops/post:logging + container_name: post + environment: + - POST_DATABASE_HOST=post_db + - POST_DATABASE=posts + logging: + driver: "fluentd" + options: + fluentd-address: "127.0.0.1:24224" + tag: "service.post" + depends_on: + - post_db + - fluentd + ports: + - 5000:5000 + networks: + - logging + + comment: + image: ghcr.io/codeby-devops/comment:logging + container_name: comment + environment: + - COMMENT_DATABASE_HOST=post_db + - COMMENT_DATABASE=comments + depends_on: + - post_db + networks: + - logging + + post_db: + image: mongo:4.4 + container_name: post_db + volumes: + - ./data/post_db:/data/db + networks: + - logging + + elasticsearch: + container_name: elasticsearch + image: elasticsearch:6.8.20 + environment: + - discovery.type=single-node + - ES_JAVA_OPTS=-Xms512m -Xmx512m + ports: + - "9200:9200" + networks: + - logging + + kibana: + container_name: kibana + image: kibana:6.8.20 + ports: + - "5601:5601" + depends_on: + - elasticsearch + networks: + - logging + + fluentd: + container_name: fluentd + build: + context: ./fluentd-image + ports: + - "24224:24224" + - "24224:24224/udp" + volumes: + - ./fluentd/fluent.conf:/fluentd/etc/fluent.conf + depends_on: + - elasticsearch + networks: + - logging + +networks: + logging: + driver: bridge diff --git a/lesson30/fluentd-image/Dockerfile b/lesson30/fluentd-image/Dockerfile new file mode 100644 index 0000000..26d8598 --- /dev/null +++ b/lesson30/fluentd-image/Dockerfile @@ -0,0 +1,9 @@ +FROM fluent/fluentd:v1.19-debian-1 + +USER root +RUN fluent-gem install fluent-plugin-elasticsearch -v 6.0.0 \ + && gem uninstall elasticsearch -aIx || true \ + && gem install elasticsearch -v 6.8.0 \ + && fluent-gem install fluent-plugin-grok-parser + +USER fluent diff --git a/lesson30/fluentd/fluent.conf b/lesson30/fluentd/fluent.conf new file mode 100644 index 0000000..c0a003d --- /dev/null +++ b/lesson30/fluentd/fluent.conf @@ -0,0 +1,53 @@ + + @type forward + port 24224 + bind 0.0.0.0 + + + + @type parser + format json + key_name log + + + + @type parser + key_name log + + @type regexp + expression /^I,\s+\[(? + + + + @type parser + key_name log + reserve_data true + emit_invalid_record_to_error false + + @type grok + grok_name_key parsed_by + grok_failure_key grok_failure + grok_pattern I,\s+\[%{TIMESTAMP_ISO8601:time}\s+#%{INT:pid}\]\s+%{LOGLEVEL:level}\s+--\s+:\s+service=%{WORD:service}\s+\|\s+event=%{WORD:event}\s+\|\s+request_id=%{UUID:request_id}\s+\|\s+message='%{DATA:message}'\s+\|\s+params:\s+%{GREEDYDATA:params} + + + + + @type copy + + @type elasticsearch + host elasticsearch + port 9200 + logstash_format true + suppress_type_name true + logstash_prefix fluentd + logstash_dateformat %Y%m%d + include_tag_key true + type_name access_log + tag_key @log_name + flush_interval 1s + + + @type stdout + + diff --git a/lesson30/screenshots/Screenshot 2026-01-21 220246.png b/lesson30/screenshots/Screenshot 2026-01-21 220246.png new file mode 100644 index 0000000..e9c148e Binary files /dev/null and b/lesson30/screenshots/Screenshot 2026-01-21 220246.png differ diff --git a/lesson30/screenshots/Screenshot 2026-01-21 220317.png b/lesson30/screenshots/Screenshot 2026-01-21 220317.png new file mode 100644 index 0000000..2d705e1 Binary files /dev/null and b/lesson30/screenshots/Screenshot 2026-01-21 220317.png differ diff --git a/lesson30/screenshots/Screenshot 2026-01-21 220333.png b/lesson30/screenshots/Screenshot 2026-01-21 220333.png new file mode 100644 index 0000000..5ce49fa Binary files /dev/null and b/lesson30/screenshots/Screenshot 2026-01-21 220333.png differ diff --git a/lesson30/screenshots/Screenshot 2026-01-21 220338.png b/lesson30/screenshots/Screenshot 2026-01-21 220338.png new file mode 100644 index 0000000..34f66b8 Binary files /dev/null and b/lesson30/screenshots/Screenshot 2026-01-21 220338.png differ diff --git a/lesson30/screenshots/Screenshot 2026-01-21 220715.png b/lesson30/screenshots/Screenshot 2026-01-21 220715.png new file mode 100644 index 0000000..ccdf498 Binary files /dev/null and b/lesson30/screenshots/Screenshot 2026-01-21 220715.png differ