본문 바로가기

분류 전체보기205

ELK 스택을 사용해 Springboot 로그 수집하기 ELK 스택을 사용해 Springboot 로그 수집하기 분산환경을 사용해 서버를 운영하고 있다면, 몇 개 또는 수십개의 서버의 로그를 한번에 보기 힘든 상황이 나타납니다. 예를 들면 터미널을 여러 개로 분할해서 각 서버에 접속 후 로그를 찾는다거나… (제가 그러고 있었죠…) 물론, cloudWatch와 같이 서버의 console에 출력되는 로그의 내용을 한번에 조회할 수 있지만, 이것 또한 불편함이 굉장히 많습니다. 이런 불편함을 해결하고자 미루고 미루던 분산된 Springboot 로그를 ELK스택을 이용해 수집하고, 조회해보고자 합니다. ELK 구축 각각의 서비스의 로그를 수집하는 방법에는 여러가지 방법이 있습니다. 그중 Logstash로 로그를 수집해 ElasticSearch 에 전달, Kibana를.. 2023. 11. 5.
AWS EC2 서버에 Nginx 설치하기 AWS EC2 서버에 Nginx 설치하기 지금까지 수십번 새 서버를 구축하면서 Nginx를 설치하는 과정을 매번 검색하는게 번거로워 정리합니다. Nginx 설치 및 설정 yum update 패키지매니저를 업데이트 합니다. yum info nginx nginx 패키지 정보를 체크합니다. (여기서 없다고 나오는게 정상입니다.) sudo vi /etc/yum.repos.d/nginx.repo nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 yum에서 조회하는 레포에 nginx레포를 추가합니다. sudo yum install nginx -y nginx를 설치합니다... 2023. 11. 5.
AWS EC2 서버에 Docker 설치하기 AWS EC2 서버에 Docker 설치하기 지금까지 수십번 새 서버를 구축하면서 도커를 설치하는 과정을 매번 검색하는게 번거로워 정리합니다. Docker & DockerCompose 설치 및 설정 sudo yum install docker -y yum 명령어를 이용해 Docker을 설치합니다. -y: Docker을 설치하면서 나타나는 모든 yn 선택에 대해 y를 입력하게 합니다. sudo usermod -aG docker ec2-user ec2-user 사용자를 docker 그룹에 추가합니다. sudo: 사용자가 속한 그룹을 수정하기 위해 root 권한으로 명령어를 실행합니다. usermod: 특정 사용자에 대한 시스템 구성을 수정합니다. -a: === --append, 사용자가 속한 그룹 목록에 그룹을.. 2023. 11. 5.
mobile obsidian-git 연동하기 mobile obsidian-git 연동하기 모바일(ANDROID & IOS) 에서는 local git을 사용하지 못한다. obsidian-git에 내장되어있는 isomorphic-git 을 이용해 연동해보자. ==이미 Github에 Obisidan repository가 있다는 가정 하에 진행한다.== 사전 작업 주의 1 Obsidian 내에 이미지 또는 음성(녹음)파일이 있을 경우 용량이 너무 커집니다… 이 때에는 imgur plugin을 이용해 이미지를 서버에 올려놓고 링크로 사용하는 대안이 있습니다. 주의2 repository vault root에 .gitignore을 꼭 만들어야 합니다. 만들지 않고 모바일 PC 아이패드 등 과 같은 여러 기기간 연동시 workspace(tab open정보 등)에.. 2023. 7. 26.
빅오(Big-O) 표기법 빅오(Big-O) 표기법 알고리즘 공부와 시간 복잡도를 판단할 때에 흔히 쓰는 단위?는 빅오 표기법입니다.. 따라서 빅오 표기법에 대해 정리하려 합니다. 빅오 표기법 빅오 표기법은 알고리즘의 효율성(시간복잡도)를 표기해주는 표기법입니다. 데이터의 개수가 n개라 할 때, 해당 알고리즘의 시간 복잡도의 최댓값을 표기합니다. 예를 들어 n^2 + 2n + 3의 연산을 하는 알고리즘의 시간 복잡도를 빅오 표기법으로 따진다면 O(n^2)으로 상수와 영향력이 적은 항을 제외하고 나타낼 수 있습니다. 빅오표기법 시간복잡도 순서 빅오 표기법의 시간복잡도는 다음과 같은 순서로 나열할 수 있습니다. O(2^n) > O(n^2) > O(n log n) > O(n) > O(log n) > O(1) 대표적인 빅오 표기법에 따른.. 2022. 9. 4.
[Kubernetes] 쿠버네티스 오브젝트 (Service, Volume, ConfigMap) 쿠버네티스 오브젝트 (Service, Volume, ConfigMap) 지난 포스팅에 이어 쿠버네티스의 오브젝트에 대하여 알아보겠습니다. Service Pod은 IP를 가지고, 다른 Pod과 통신할 수 있습니다. 하지만 Pod은 쉽게 삭제되고, 생성될 수 있기 때문에 쿠버네티스는 고정된 IP를 가진 서비스를 만들고 서비스를 통해 Pod에 접근합니다. Service(ClusterIP) 만들기 ClusterIP는 클러스터 내부에 새 IP를 할당하고, 여러 Pod을 바라보는 로드밸런서 기능을 제공합니다. 그리고 서비스 이름을 내부 도메인 서버에 등록하고 Pod간 서비스 이름으로 통신할 수 있습니다. apiVersion: apps/v1 kind: Deployment metadata: name: redis spe.. 2022. 8. 30.
[Kubernetes] 쿠버네티스 오브젝트(Pod, ReplicaSet, Deployment) 쿠버네티스 오브젝트 Pod, ReplicaSet, Deployment 이전에 쿠버네티스를 구성하고있는 master을 정리해보았습니다. 이번에는 쿠버네티스를 이용하며 사용하는 오브젝트를 정리해보려 합니다. Pod Pod은 쿠버네티스에서 관리하는 가장 작은 배포단위 입니다. 도커에서는 컨테이너를 관리하지만, 쿠버네티스의 Pod은 하나의 컨테이너 또는 여러 개의 컨테이너를 관리합니다. Pod 생성 예시 # pod run kubectl run echo --image ghcr.io/subicura/echo:v1 # 실행된 pod 확인 kubectl get pod 위와 같이 run 또는 apply 명령어로 pod을 생성할 수 있고, kubectl get pod 명령어로 현재 쿠버네티스에서 관리하는 pod 리스트를 .. 2022. 8. 29.
[Kubernetes] 쿠버네티스 간단 개념 정리 쿠버네티스 간단 개념 정리 많은 기업에서 쿠버네티스를 이용해 서비스를 운영하고 있습니다. 따라서 도커만 사용하는 것이 아닌 쿠버네티스를 사용하기 위해 학습한 내용을 정리하고자 합니다. 먼저 도커 도커, 컨테이너는 다음과 같은 이유로 사랑받고 있습니다. 가상머신에 비해 컨테이너 생성이 쉽고, 효율적이다. 컨테이너 이미지를 이용한 배포와 롤백이 간단하다. 언어나 프레임워크에 상관 없이 애플리케이션을 동일한 방식으로 관리한다. 등… 위처럼 다양한 이유로 도커를 많은 사람들이 사용했는데, 이 과정에서 동일한 앱을 여러 서버에 띄워 사용하는 경우, 관리하는 과정에서 불편함이 생겼습니다. 떄문에 문제를 해결하기 위해 컨테이너를 관리하기 위한 도우 Container Orchestration이 탄생했습니다. Conta.. 2022. 8. 29.
[Spring] ExceptionHandlerLoggedImpl 에러가 나타난다면 ExceptionHandlerLoggedImpl 에러가 나타난다면? 저는 start.spring.io를 이용해 스프링 프로젝트를 생성하고 있습니다. 현재 최신 springboot version은 2.7.3이며, 프로젝트 생성 후 H2DB에 ddl-auto=create 옵션 사용중 이러한 에러를 확인했습니다. GenerationTarget encountered exception accepting command : Error executing DDL 위 에러는 Hibernate 버전과 H2DB 스키마 사이의 에러로 확인되는데 springboot 2.7.3에서 사용하는 Hibernate는 5.6.10 버전입니다. 과거에도 자주 나타났던 에러이고, 최근 진행했던 다른 프로젝트에서 Springboot 2.6.8 .. 2022. 8. 24.