본문 바로가기

Monitoring

ELK 구축하고 Filebeat로 로그 수집하여 확인해보기 시스템 로그는 중요하다. 서비스가 성장함에 따라 보안요건도 까다로워진다. 그 보안요건 중 하나가 사용자 로그인에 대한 추적 및 증적을 남기는 것이다. 이를 달성하기 위해 ELK와 Filebeat로 각 서버의 syslog를 수집하고 시각화 해보자. 인스턴스 사양 M6g.large Arm 기반 AWS Graviton2 프로세서 vCPU 2 Mem 8GiB ELK 설치 ##라이센스 받아오기 wget -qO - | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg sudo apt-get install apt-transport-https echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyr.. 더보기
access_log 파일 참조 불가 문제 해결 나는 앱을 만들때, 같은 디렉토리에 access_log 파일을 테스트로 둔채, 개발을 진행했다. 따라서 다음과 같은 코드는 파일을 잘 가르키고 있었다. const accessLogFile = process.env.ACCESS_LOG_FILE_LOCATION 왜냐면? 같은 디렉토리에 있으니까 잘 참조가 되었다. 그래서 환경변수를 처리해주어 EC2에서도 경로만 잘 지정하면 파일을 잘 참조할 수 있을줄 알았다. 그러나 에러가 발생하였다. 에러내용을 보자. throw new ERR_INVALID_ARG_TYPE(propName, ['string', 'Buffer', 'URL'], path); ^ TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of .. 더보기
accesslog란? 어떻게 사용하지? 💡 참고자료 [IBM, HTTP accesslog] [Sumologic, accesslog] access log란 무엇일까? 해당 글은 다음과 같은 의문에서 시작하여 다음과 같은 순서로 진행된다. access log에 대하여 직접 설정하고 확인해보기 정의 An HTTP access log contains a record of all inbound client requests handled by HTTP endpoints. 아파치 HTTP 서버에서 생성된 로그파일 중 하나이다. 아파치 HTTP 서버로 처리된 모든 요청을 기록한다. 그래서 만약 사용자가 사이트의 웹페이지에 접근한다면, 이 이벤트와 관련된 모든 상세사항을 access log에 기록한다. 위치 Apache2가 설치된 위치에 따라 다른데 linu.. 더보기
EC2의 accesslog를 cloudwatch로 수집하기 EC2에서 apache2를 설치하여 호스팅을 한 후, 수집된 accesslog를 cloudawatch로 푸쉬해, 확인할 수 있도록 한다. 다음과 같은 순서로 진행된다. EC2 설정 apache2 설치 및 호스팅 cloudwatch 에이전트 설치 수집된 로그 확인 EC2 설정 VPC내 퍼블릭 서브넷에 EC2를 생성한다. 인터넷에서 쉽게 접속하기 위해서이다. 퍼블릭 IP 주소를 자동으로 할당하게 한다. 보안그룹을 ssh, http가 접속 가능하게 한다. Ubuntu 20.04를 사용한다. cloudwatch로 전송하기 위해 EC2 역할을 부여해야만 한다. 새 역할을 만들어 cloudwatch full access 를 부여하도록 한다. 역할 권한은 최소화하는게 좋지만, cloudwatch 로그 그룹 생성, 로.. 더보기
[모니터링]MBps vs. Mbps: latency 측정단위에 관하여 latency 측정단위 latency는 지연시간으로 어떤 서비스를 모니터링할때 판단할 수 있는 중요한 지표이다. 네트워크를 통하는 시간을 포함시키냐 마냐에 따라 다음과 같은 두가지로 나뉜다. seconds, milliseconds: 순전히 서비스에 응답, 요청에 따른 속도이다. MBps, Mbps: 서비스가 네트워크를 거쳐 응답, 요청에 따른 속도이다. 네트워크 상황에 따라 달라진다. MB vs. Mb 똑같은 글자지만 다른 의미를 지녔다. 이건 단위의 문제이다. bit은 가장 작은 데이터 단위로 0과 1같이 binary값이다. 1byte = 8bit 1Mb = 1,000,000bits 1MB = 1,000,000bytes 1GB = 1,000MB 1TB = 1,000GB 100Mbps: 1초에 100Mb.. 더보기
[모니터링]SLI, SLA, SLO 용어와 SRE 직무 SLA (서비스 수준 협약, Service Level Agreements) 서비스를 운영하는 데 있어서, 사용자에게 필요한 적정 수준을 정의하고 제공하기 위해, 서비스 제공자와 사용자는 서로 서비스 수준 협약(Service Level Agreements, SLA)을 맺는다. 가용성을 기준으로 예를들어 본다면 1년간 99%의 업타임을 제공해야한다. 다음과 같은 세부적인 시간을 계산해 낼 수 있다. SLI (서비스 수준 척도, Service Level Indicator) 위의 가용성 뿐만아니라 다양한 지표들이 SLA에 포함될 수있다. 그리고 고객과의 약속이라는 것은 "어느 정도의 서비스를 제공해야 제대로 제공했다고 말할 수 있는 것인지"를 정확하게 명시하지 않으면 안됩니다. SLI는 이런 서비스 수준을 판단.. 더보기
[모니터링]프로메테우스+그라파나 모니터링 시스템 구축 실제 모니터링은 어떻게 진행되는지 알아보기 위해 모니터링 시스템을 구축해볼 것이다. 모니터링에서 중요한 것은 데이터를 질의할 수 있는 언어 PromQL에 대한 세부적인 학습보다 전체적으로 서비스를 모니터링할 때, 어떠한 메트릭을 봐야 하고, 그 메트릭을 어떻게 볼 수 있는지 아는 것이 더욱 중요하다. 따라서 이번 스프린트에서는 구체적인 모니터링 시스템 구축보다는 구축 후 SRE 모니터링의 주요 측정 항목인 "네가지 황금 시그널"을 살펴볼 것이다. Prometheus 및 Grafana 설치 // 클론 git clone https://github.com/prometheus-operator/kube-prometheus.git // 클론한 디렉토리에서 설치, kube-prometheus 배포 # STEP 1 k.. 더보기
[모니터링]쿠버네티스 모니터링, 프로메테우스 Q. 모니터링의 관점에서 워커 노드에 애플리케이션을 별도로 배치하는 것이 왜 유리할까요? A. 쿠버네티스의 구조상 통상적으로 API서버와 주로 통신을 합니다. Pull기반 시스템인 프로메테우스는 주기적으로 스크랩해야 하는 엔드 포인트 목록을 관리합니다. 이 목록은 정적이거나 서비스 검색 시스템으로 자동 업데이트될 수 있습니다. Prometheus는 엔드포인트 목록을 사용하여 메트릭을 스크랩하고 내부 시계열 데이터베이스에 저장합니다. 저장된 메트릭은 API를 사용하여 직접 쿼리하거나 Grafana 대시보드로 시각화할 수 있습니다. 더보기