diff --git a/docker-compose.yaml b/docker-compose.yaml index e30731c..2c8f185 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -55,41 +55,119 @@ services: depends_on: mysql: condition: service_healthy - rabbitmq: - image: rabbitmq:3-management-alpine - container_name: 'rabbitmq' +# rabbitmq: +# image: rabbitmq:3-management-alpine +# container_name: 'rabbitmq' +# ports: +# - 5672:5672 +# - 15672:15672 +# volumes: +# - ~/.docker-conf/rabbitmq/data/:/var/lib/rabbitmq/ +# - ~/.docker-conf/rabbitmq/log/:/var/log/rabbitmq +# networks: +# - mynet +# prometheus: +# image: prom/prometheus +# ports: +# - 9090:9090 +# volumes: +# - ./prometheus.yaml:/etc/prometheus/prometheus.yml:ro +# networks: +# - mynet +# grafana: +# image: grafana/grafana +# ports: +# - 3001:3000 +# cadvisor: +# image: gcr.io/cadvisor/cadvisor:latest +# platform: linux/amd64 +# container_name: cadvisor +# ports: +# - 8081:8080 +# volumes: +# - /:/rootfs:ro +# - /var/run:/var/run:rw +# - /sys:/sys:ro +# - /var/lib/docker/:/var/lib/docker:ro +# - /var/run/docker.sock:/var/run/docker.sock:rw +# networks: +# - mynet + + prometheus: + image: prom/prometheus:latest + restart: always ports: - - 5672:5672 - - 15672:15672 + - "9090:9090" + links: + - cadvisor + - alertmanager volumes: - - ~/.docker-conf/rabbitmq/data/:/var/lib/rabbitmq/ - - ~/.docker-conf/rabbitmq/log/:/var/log/rabbitmq + - ./monitoring/prometheus/:/etc/prometheus/ + user: root + depends_on: + - cadvisor + # 여기에 대해서 설명 + command: + - '--config.file=/etc/prometheus/prometheus.yml' + - '--storage.tsdb.path=/prometheus' + - '--web.console.libraries=/usr/share/prometheus/console_libraries' + - '--web.console.templates=/usr/share/prometheus/consoles' networks: - - mynet - prometheus: - image: prom/prometheus + - mynet + + grafana: + build: + context: ./monitoring/grafana + container_name: grafana ports: - - 9090:9090 + - "3001:3000" + depends_on: + - prometheus + networks: + - mynet +# node-exporter 역할이 무엇인가요? + node-exporter: + container_name: node-exporter + image: prom/node-exporter volumes: - - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro + - /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|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)" + ports: + - "9100:9100" + restart: always networks: - mynet - grafana: - image: grafana/grafana +# alertmanager가 무엇인가요? + alertmanager: + container_name: alertmanager + image: prom/alertmanager ports: - - 3001:3000 + - "9093:9093" + volumes: + - ./monitoring/alertmanager/:/etc/alertmanager/ + restart: always + command: + - '--config.file=/etc/alertmanager/config.yml' + - '--storage.path=/alertmanager' + networks: + - mynet cadvisor: - image: gcr.io/cadvisor/cadvisor:latest - platform: linux/amd64 container_name: cadvisor - ports: - - 8081:8080 + image: gcr.io/cadvisor/cadvisor:v0.46.0 volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro - - /var/run/docker.sock:/var/run/docker.sock:rw + ports: + - "8080:8080" + restart: always networks: - mynet nginx: @@ -100,8 +178,89 @@ services: - 443:443 volumes: - ./nginx.conf:/etc/nginx/nginx.conf + - ./nginx/log:/var/log/nginx + networks: + - mynet + elasticsearch: + build: + context: elk/elasticsearch + args: + ELASTIC_VERSION: 8.5.2 + volumes: + - ./elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro,Z + ports: + - 9200:9200 + - 9300:9300 + environment: + node.name: elasticsearch + ES_JAVA_OPTS: -Xms512m -Xmx512m + # Bootstrap password. + # Used to initialize the keystore during the initial startup of + # Elasticsearch. Ignored on subsequent runs. + ELASTIC_PASSWORD: changeme + # Use single node discovery in order to disable production mode and avoid bootstrap checks. + # see: https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html + discovery.type: single-node + restart: unless-stopped networks: - mynet + + logstash: + build: + context: elk/logstash + args: + ELASTIC_VERSION: 8.5.2 + volumes: + - ./elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro,Z + - ./elk/logstash/pipeline:/usr/share/logstash/pipeline:ro,Z + ports: + - 5044:5044 + - 50000:50000/tcp + - 50000:50000/udp + - 9600:9600 + environment: + LS_JAVA_OPTS: -Xms256m -Xmx256m + LOGSTASH_INTERNAL_PASSWORD: changeme + depends_on: + - elasticsearch + restart: unless-stopped + networks: + - mynet + + kibana: + build: + context: elk/kibana + args: + ELASTIC_VERSION: 8.5.2 + volumes: + - ./elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:ro,Z + ports: + - 5601:5601 + environment: + KIBANA_SYSTEM_PASSWORD: changeme + depends_on: + - elasticsearch + restart: unless-stopped + networks: + - mynet + + filebeat: + build: + context: elk/filebeat + args: + ELASTIC_VERSION: 8.5.2 + entrypoint: "filebeat -e -strict.perms=false" + volumes: + - ./elk/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml + - ./nginx/log:/var/log/nginx # nginx log path (require same option on nginx container) + depends_on: + - logstash + - elasticsearch + - kibana + restart: unless-stopped + networks: + - mynet + volumes: mysql_data_dev: null diff --git a/elk/.gitattributes b/elk/.gitattributes new file mode 100644 index 0000000..2858dda --- /dev/null +++ b/elk/.gitattributes @@ -0,0 +1,2 @@ +# Declare files that will always have LF line endings on checkout. +*.sh text eol=lf \ No newline at end of file diff --git a/elk/LICENSE b/elk/LICENSE new file mode 100644 index 0000000..0dbd69f --- /dev/null +++ b/elk/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Anthony Lapenna + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/elk/README.md b/elk/README.md new file mode 100644 index 0000000..59ea713 --- /dev/null +++ b/elk/README.md @@ -0,0 +1,67 @@ +# docker-example Repo용 로깅 예제 + +[![Elastic Stack version](https://img.shields.io/badge/Elastic%20Stack-8.5.3-00bfb3?style=flat&logo=elastic-stack)](https://www.elastic.co/blog/category/releases) + +https://github.com/litsynp/docker-example 프로젝트를 위한 로깅 세팅입니다. + +## ELK 로깅 + +- *단일 compose 파일 실행시 동작하지 않습니다.* + +### 동작 방식 +1. NGINX의 로그파일을 Filebeat로 수집 +2. 수집한 로그를 Logstash에 전달 +3. 전달 받은 로그를 Elasticsearch에 저장 +4. 저장된 로그를 Kibana를 통해 분석 + +### 사용법 + + ```sh + $ docker compose -f docker-compose.yml -f docker-compose.logging.yml up --build + ``` + +### Kibana를 통한 로그 시각화 방법 +1. localhost:5601 접속 +2. 상단 메뉴에서 index management 검색 +3. 수집된 로그 인덱스 확인 weblogs-yyyy.MM.dd 형식 +4. 좌측 메뉴의 Analytics의 Dashboard 클릭 +5. Create data view를 통해 인덱스 선택 + - 전체 조회 : Index Pattern에 `weblogs-*` 입력 및 저장 + - 선택 조회 : Index Pattern에 보고싶은 날짜입력 (eg. `weblogs-2023.01.01`) +6. Create Visualization 클릭 +7. 보고 싶은 필드를 화면에 드롭다운 하여 시각화 + +### 필수 파일 +``` +docker-example +├── backend +│ └── ... +├── frontend +│ └── ... +├── logging-example +│ ├── elasticsearch +│ │ ├── config +│ │ │ └── elasticsearch.yml +│ │ └── Dockerfile +│ ├── filebeat +│ │ ├── config +│ │ │ └── filebeat.yml +│ │ └── Dockerfile +│ ├── kibana +│ │ ├── config +│ │ │ └── kibana.yml +│ │ └── Dockerfile +│ └── logstash +│ ├── config +│ │ └── logstash.yml +│ ├── pipeline +│ │ └── logstash.conf +│ └── Dockerfile +├── nginx +│ ├── nginx.conf +│ └── log # 실행시 자동 생성 +│ ├── access.log +│ └── error.log +├── docker-compose.logging.yml +└── docker-compose.prod.yml +``` \ No newline at end of file diff --git a/elk/elasticsearch/.dockerignore b/elk/elasticsearch/.dockerignore new file mode 100644 index 0000000..37eef9d --- /dev/null +++ b/elk/elasticsearch/.dockerignore @@ -0,0 +1,6 @@ +# Ignore Docker build files +Dockerfile +.dockerignore + +# Ignore OS artifacts +**/.DS_Store diff --git a/elk/elasticsearch/Dockerfile b/elk/elasticsearch/Dockerfile new file mode 100644 index 0000000..22528c6 --- /dev/null +++ b/elk/elasticsearch/Dockerfile @@ -0,0 +1,7 @@ +ARG ELASTIC_VERSION + +# https://www.docker.elastic.co/ +FROM docker.elastic.co/elasticsearch/elasticsearch:${ELASTIC_VERSION} + +# Add your elasticsearch plugins setup here +# Example: RUN elasticsearch-plugin install analysis-icu diff --git a/elk/elasticsearch/config/elasticsearch.yml b/elk/elasticsearch/config/elasticsearch.yml new file mode 100644 index 0000000..9432a25 --- /dev/null +++ b/elk/elasticsearch/config/elasticsearch.yml @@ -0,0 +1,12 @@ +--- +## Default Elasticsearch configuration from Elasticsearch base image. +## https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/config/elasticsearch.yml +# +cluster.name: docker-cluster +network.host: 0.0.0.0 + +## X-Pack settings +## see https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html +# +xpack.license.self_generated.type: basic +xpack.security.enabled: false diff --git a/elk/filebeat/.dockerignore b/elk/filebeat/.dockerignore new file mode 100644 index 0000000..37eef9d --- /dev/null +++ b/elk/filebeat/.dockerignore @@ -0,0 +1,6 @@ +# Ignore Docker build files +Dockerfile +.dockerignore + +# Ignore OS artifacts +**/.DS_Store diff --git a/elk/filebeat/Dockerfile b/elk/filebeat/Dockerfile new file mode 100644 index 0000000..b8dd5f3 --- /dev/null +++ b/elk/filebeat/Dockerfile @@ -0,0 +1,3 @@ +ARG ELASTIC_VERSION + +FROM docker.elastic.co/beats/filebeat:${ELASTIC_VERSION} diff --git a/elk/filebeat/config/filebeat.yml b/elk/filebeat/config/filebeat.yml new file mode 100644 index 0000000..b2812cc --- /dev/null +++ b/elk/filebeat/config/filebeat.yml @@ -0,0 +1,14 @@ +filebeat.inputs: + - type: log + enabled: true + paths: + - /var/log/nginx/*.log + +output.logstash: + enabled: true + hosts: ["logstash:5044"] + +setup.kibana: + host: "http://kibana:5601" + username: "elastic" + password: "changeme" \ No newline at end of file diff --git a/elk/kibana/.dockerignore b/elk/kibana/.dockerignore new file mode 100644 index 0000000..37eef9d --- /dev/null +++ b/elk/kibana/.dockerignore @@ -0,0 +1,6 @@ +# Ignore Docker build files +Dockerfile +.dockerignore + +# Ignore OS artifacts +**/.DS_Store diff --git a/elk/kibana/Dockerfile b/elk/kibana/Dockerfile new file mode 100644 index 0000000..9a075be --- /dev/null +++ b/elk/kibana/Dockerfile @@ -0,0 +1,7 @@ +ARG ELASTIC_VERSION + +# https://www.docker.elastic.co/ +FROM docker.elastic.co/kibana/kibana:${ELASTIC_VERSION} + +# Add your kibana plugins setup here +# Example: RUN kibana-plugin install diff --git a/elk/kibana/config/kibana.yml b/elk/kibana/config/kibana.yml new file mode 100644 index 0000000..50f0a6b --- /dev/null +++ b/elk/kibana/config/kibana.yml @@ -0,0 +1,12 @@ +--- +## Default Kibana configuration from Kibana base image. +## https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/templates/kibana_yml.template.ts +# +server.name: kibana +server.host: 0.0.0.0 +elasticsearch.hosts: [ http://elasticsearch:9200 ] + +monitoring.ui.container.elasticsearch.enabled: true +monitoring.ui.container.logstash.enabled: true + +elasticsearch.ssl.verificationMode: none \ No newline at end of file diff --git a/elk/logstash/.dockerignore b/elk/logstash/.dockerignore new file mode 100644 index 0000000..37eef9d --- /dev/null +++ b/elk/logstash/.dockerignore @@ -0,0 +1,6 @@ +# Ignore Docker build files +Dockerfile +.dockerignore + +# Ignore OS artifacts +**/.DS_Store diff --git a/elk/logstash/Dockerfile b/elk/logstash/Dockerfile new file mode 100644 index 0000000..bde5808 --- /dev/null +++ b/elk/logstash/Dockerfile @@ -0,0 +1,7 @@ +ARG ELASTIC_VERSION + +# https://www.docker.elastic.co/ +FROM docker.elastic.co/logstash/logstash:${ELASTIC_VERSION} + +# Add your logstash plugins setup here +# Example: RUN logstash-plugin install logstash-filter-json diff --git a/elk/logstash/config/logstash.yml b/elk/logstash/config/logstash.yml new file mode 100644 index 0000000..a81b89b --- /dev/null +++ b/elk/logstash/config/logstash.yml @@ -0,0 +1,7 @@ +--- +## Default Logstash configuration from Logstash base image. +## https://github.com/elastic/logstash/blob/main/docker/data/logstash/config/logstash-full.yml +# +http.host: 0.0.0.0 + +node.name: logstash diff --git a/elk/logstash/pipeline/logstash.conf b/elk/logstash/pipeline/logstash.conf new file mode 100644 index 0000000..b26991c --- /dev/null +++ b/elk/logstash/pipeline/logstash.conf @@ -0,0 +1,40 @@ +input { + beats { + port => 5044 + } +} + +filter { + grok { + match => [ "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}"] + overwrite => [ "message" ] + } + mutate { + convert => ["response", "integer"] + convert => ["bytes", "integer"] + convert => ["responsetime", "float"] + } + geoip { + source => "clientip" + target => "geoip" + add_tag => [ "nginx-geoip" ] + } + date { + match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ] + remove_field => [ "timestamp" ] + } + useragent { + source => "agent" + } +} + +output { + elasticsearch { + hosts => ["http://elasticsearch:9200"] + index => "stress-logs-%{+YYYY.MM.dd}" + document_type => "nginx_logs" + user => "elastic" + password => "changeme" + } + stdout { codec => rubydebug } +} \ No newline at end of file diff --git a/monitoring/alertmanager/config.yml b/monitoring/alertmanager/config.yml new file mode 100644 index 0000000..7c27524 --- /dev/null +++ b/monitoring/alertmanager/config.yml @@ -0,0 +1,11 @@ +global: + resolve_timeout: 1m + slack_api_url: 'https://hooks.slack.com/services/xxxxxx' + +route: + receiver: 'slack-notifications' + +receivers: +- name: 'slack-notifications' + slack_configs: + - send_resolved: true \ No newline at end of file diff --git a/monitoring/grafana/Dockerfile b/monitoring/grafana/Dockerfile new file mode 100644 index 0000000..f05b60e --- /dev/null +++ b/monitoring/grafana/Dockerfile @@ -0,0 +1,17 @@ +FROM grafana/grafana:7.1.5-ubuntu + +# Disable Login form or not +ENV GF_AUTH_DISABLE_LOGIN_FORM "false" +# Allow anonymous authentication or not +ENV GF_AUTH_ANONYMOUS_ENABLED "true" +# Role of anonymous user +ENV GF_AUTH_ANONYMOUS_ORG_ROLE "Admin" +# Install plugins here our in your own config file +# ENV GF_INSTALL_PLUGINS=" name of the datasource. Required +- name: Prometheus + # datasource type. Required + type: prometheus + # access mode. direct or proxy. Required + access: proxy + # org id. will default to orgId 1 if not specified + orgId: 1 + # url + url: http://prometheus:9090 + # database password, if used + password: + # database user, if used + user: + # database name, if used + database: + # enable/disable basic auth + basicAuth: false + # basic auth username, if used + basicAuthUser: + # basic auth password, if used + basicAuthPassword: + # enable/disable with credentials headers + withCredentials: + # mark as default datasource. Max one per org + isDefault: true + # fields that will be converted to json and stored in json_data + jsonData: + graphiteVersion: "1.1" + tlsAuth: false + tlsAuthWithCACert: false + # json object of data that will be encrypted. + secureJsonData: + tlsCACert: "..." + tlsClientCert: "..." + tlsClientKey: "..." + version: 1 + # allow users to edit datasources from the UI. + editable: true \ No newline at end of file diff --git a/monitoring/prometheus/alert.yml b/monitoring/prometheus/alert.yml new file mode 100644 index 0000000..60edf36 --- /dev/null +++ b/monitoring/prometheus/alert.yml @@ -0,0 +1,22 @@ +groups: +- name: alert + rules: + + # Alert for any instance that is unreachable for >2 minutes. + - alert: service_down + expr: up == 0 + for: 2m + labels: + severity: page + annotations: + summary: "Instance {{ $labels.instance }} down" + description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 2 minutes." + + - alert: high_load + expr: node_load1 > 0.5 + for: 2m + labels: + severity: page + annotations: + summary: "Instance {{ $labels.instance }} under high load" + description: "{{ $labels.instance }} of job {{ $labels.job }} is under high load." \ No newline at end of file diff --git a/monitoring/prometheus/prometheus.yml b/monitoring/prometheus/prometheus.yml new file mode 100644 index 0000000..ca55fc1 --- /dev/null +++ b/monitoring/prometheus/prometheus.yml @@ -0,0 +1,31 @@ +global: + scrape_interval: 20s + scrape_timeout: 10s + +rule_files: + - "alert.yml" + +alerting: + alertmanagers: + - scheme: http + static_configs: + - targets: + - "alertmanager:9093" + +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + - job_name: 'cadvisor' + static_configs: + - targets: [ 'cadvisor:8080' ] + + - job_name: 'node-exporter' + static_configs: + - targets: [ 'node-exporter:9100' ] + + - job_name: 'backend' + static_configs: + - targets: [ 'backend:8000' ] + + - job_name: 'backend-rep' + static_configs: + - targets: [ 'backend-rep:8001' ] \ No newline at end of file diff --git a/nginx.conf b/nginx.conf index 7cec545..1efe76f 100644 --- a/nginx.conf +++ b/nginx.conf @@ -11,7 +11,7 @@ http { server { listen 80; listen [::]:80; - +# build파일 location / { proxy_pass http://frontend; } diff --git a/nginx/log/access.log b/nginx/log/access.log new file mode 100644 index 0000000..2979a1c --- /dev/null +++ b/nginx/log/access.log @@ -0,0 +1,47 @@ +172.27.0.1 - - [25/Jan/2023:21:10:47 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:47 +0000] "GET /@vite/client HTTP/1.1" 304 0 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:47 +0000] "GET /@react-refresh HTTP/1.1" 304 0 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:47 +0000] "GET /src/main.tsx HTTP/1.1" 200 5218 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:47 +0000] "GET /node_modules/vite/dist/client/env.mjs HTTP/1.1" 304 0 "http://localhost/@vite/client" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:47 +0000] "GET /@id/__x00__react/jsx-dev-runtime HTTP/1.1" 200 268 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:47 +0000] "GET /src/App.tsx HTTP/1.1" 200 3363 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:47 +0000] "GET / HTTP/1.1" 404 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/@tanstack_react-query.js?v=9f8b0c51 HTTP/1.1" 200 1657 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/react-dom_client.js?v=2b539c96 HTTP/1.1" 200 1130 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/@tanstack_react-query-devtools.js?v=ef620bb9 HTTP/1.1" 200 94825 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/react-router-dom.js?v=ba93a2cf HTTP/1.1" 200 133191 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/recoil.js?v=0ebf5e63 HTTP/1.1" 200 195807 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/@sentry_react.js?v=b8cb0087 HTTP/1.1" 200 406762 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /src/index.css HTTP/1.1" 304 0 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /src/queryClient.ts HTTP/1.1" 200 4254 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/@sentry_tracing.js?v=73706e80 HTTP/1.1" 200 88035 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /src/reset.scss HTTP/1.1" 304 0 "http://localhost/src/App.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/axios.js?v=04e7062f HTTP/1.1" 200 63683 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/react_jsx-dev-runtime.js?v=4498fc43 HTTP/1.1" 200 35467 "http://localhost/@id/__x00__react/jsx-dev-runtime" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /src/routes.tsx HTTP/1.1" 200 6574 "http://localhost/src/App.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/chunk-AFD4Y7N6.js?v=3e2e3565 HTTP/1.1" 200 103897 "http://localhost/node_modules/.vite/deps/@tanstack_react-query.js?v=9f8b0c51" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/chunk-4RKPAYF3.js?v=3e2e3565 HTTP/1.1" 200 906610 "http://localhost/node_modules/.vite/deps/@tanstack_react-query.js?v=9f8b0c51" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/chunk-K4VEVQG3.js?v=3e2e3565 HTTP/1.1" 200 73391 "http://localhost/node_modules/.vite/deps/@tanstack_react-query.js?v=9f8b0c51" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/chunk-HUBM7RA2.js?v=3e2e3565 HTTP/1.1" 200 1266 "http://localhost/node_modules/.vite/deps/@tanstack_react-query.js?v=9f8b0c51" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/chunk-SYWMNZIP.js?v=3e2e3565 HTTP/1.1" 200 106159 "http://localhost/node_modules/.vite/deps/@sentry_react.js?v=b8cb0087" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/react.js?v=4498fc43 HTTP/1.1" 200 230 "http://localhost/src/routes.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /node_modules/.vite/deps/chunk-NK5DAEHO.js?v=3e2e3565 HTTP/1.1" 200 8264 "http://localhost/node_modules/.vite/deps/@sentry_react.js?v=b8cb0087" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /src/page/_layout.tsx HTTP/1.1" 200 4103 "http://localhost/src/routes.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /src/components/loading/index.tsx HTTP/1.1" 304 0 "http://localhost/src/page/_layout.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:21:10:48 +0000] "GET /src/components/loading/index.scss HTTP/1.1" 304 0 "http://localhost/src/components/loading/index.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET / HTTP/1.1" 304 0 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /@vite/client HTTP/1.1" 304 0 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /src/main.tsx HTTP/1.1" 304 0 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /@id/__x00__react/jsx-dev-runtime HTTP/1.1" 304 0 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /@react-refresh HTTP/1.1" 304 0 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /src/App.tsx HTTP/1.1" 304 0 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /src/index.css HTTP/1.1" 304 0 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /src/queryClient.ts HTTP/1.1" 304 0 "http://localhost/src/main.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /node_modules/vite/dist/client/env.mjs HTTP/1.1" 304 0 "http://localhost/@vite/client" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET / HTTP/1.1" 404 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /src/routes.tsx HTTP/1.1" 304 0 "http://localhost/src/App.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /src/reset.scss HTTP/1.1" 304 0 "http://localhost/src/App.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /src/page/_layout.tsx HTTP/1.1" 304 0 "http://localhost/src/routes.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:19 +0000] "GET /src/components/loading/index.tsx HTTP/1.1" 304 0 "http://localhost/src/page/_layout.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:20 +0000] "GET /src/components/loading/index.scss HTTP/1.1" 304 0 "http://localhost/src/components/loading/index.tsx" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" +172.27.0.1 - - [25/Jan/2023:22:28:20 +0000] "GET /vite.svg HTTP/1.1" 304 0 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" diff --git a/nginx/log/error.log b/nginx/log/error.log new file mode 100644 index 0000000..e69de29 diff --git a/prometheus.yml b/prometheus.yaml similarity index 100% rename from prometheus.yml rename to prometheus.yaml