” 모니터링 툴(APM)에 대해서(Application Performance Monitoring)”
IT 기업들이 IT 서비스를 운영할 때에 가장 중요한 것은 안정성입니다.
IT 서비스를 안정적으로 제공하기 위해선 인프라단에서부터 애플리케이션까지 구성이 완벽하여야 합니다.
그러나 구성이 완벽하더라도 유지보수의 문제로 장애가 발생할 수 있습니다.
그렇기 때문에 MTTR(mean time to recovery, Fail over 복구에 들어가는 시간)장애를 최소화, 예방 방지하기위해 Performance를 측정하고 Application 이 문제가 있는지 관제(monitoring)를 해야합니다.
애플리케이션 모니터링 서비스를 사용한다면 장애 시간의 동시 사용자 수, 초당 트랜잭션의 개수, 평균 응답시간, CPU 부하율, 사용된 커넥션의 개수, 쿼리의 응답시간 등의 정보를 항상 확인 할 수 있습니다.
APM tool의 종류는 Prometheus, Grafana, Datadog, InfluxDB, Zabbix, Sensu, munin, scouter, whatap, Nagios 등이 있습니다.
[개 요] ✅ 종 류 : 엔지니어링 ✅ 난이도 : ⭐ ✅ 내용요약 : 모니터링 툴(APM)에 대해서(Application Performance Monitoring) ✅ 테스트환경 : Rocky Linux 9 ✅ 관련직무 : 시스템&클라우드 엔지니어 |
[기초이론&용어설명] |
[관련 기술자료] |
” White Box Monitoring / Black Box Monitoring“
1️⃣White Box Monitoring (APM)
Push 방식 (모니터링 서버에서 값을 받기위해 대기하고 서버에서 어떠한 방식으로 보내주는 방식)
- 보안적 측면에서 안전하다. Auto-scaling 방식에서는 Push 방식이 유리
시스템 내부의 측정 기준에 따라 모니터링하는 것을 의미한다. HTTP 요청, 500 에러 발생 횟수, 레이턴시 등이 해당한다. 현상만 파악하는 것이 아닌, 현상이 발생한 근거를 확인하기 위한 방식이다.
- Prometheus
- Zabbix
2️⃣ Black Box Monitoring (APM)
Pull 방식 (모니터링 서버에서 직접 값들을 가져가는 방식)
- HA 측면에서 유리, 데이터 방식에서 유연성 측면 유리
CPU/메모리/스토리지 등 인프라 수준의 모니터링에 유용하다. 쿠버네티스의 경우, 클러스터 정상 작동 여부 등 쿠버네티스 컴포넌트 그 자체를 모니터링하는 것도 블랙박스 모니터링에 해당한다. 단, 어플리케이션의 문제는 파악할 수 없다.
- Nagios
- DataDog
- Sysdig
3️⃣계층에 따른 모니터링 (APM)
논리적인 리소스의 집합은 하나의 계층을 만들게된다. 컨테이너 오케스트레이션 툴, AWS 서비스의 계층에 따라서 모니터링하는 메트릭은 다르다.
- 쿠버네티스 : 노드 > 클러스터 컴포넌트 > 파드
- ECS : 클러스터 > 서비스 > 테스크
- EC2 : 인스턴스의 메트릭
- Lambda : 함수의 메트릭
Proxy 서버 메트릭
어플리케이션 서버(WAS) 앞단의 캐시 서버, 인증 서버, 로드 밸런서와 같은 Proxy 서버가 존재할 경우에는 어플리케이션 서버와는 별도로 모니터링을 진행해야 한다.
WAS가 각 노드의 컴퓨팅 자원을 모니터링하지만, Proxy 서버는 요청에 관련된 메트릭을 위주로 모니터링해야한다.
HTTP 요청/응답 모니터링 대상
- k8s : Ingress
- ALB(Application Load Balancer)
” APM Tools “
1️⃣Prometheus
Prometheus
프로메테우스는 웹 서버, 데이터베이스 등 다양한 시스템을 모니터링하고, 특정 조건이 발생하면 담당자에게 경고(Alert) 할 수 있는 모니터링 오픈 소스이다.
프로메테우스는 설정된 작업(job)에 대로 매트릭(metrics) 정보를 모니터링 대상 시스템에 설치된 익스포터(Exporter) 혹은 푸시 게이트웨이(Push Gateway)를 통해 수집한다. 수집된 모든 정보를 로컬에 저장하고, 규칙(rule)을 수행하여 시계열 형태의 데이터(TSDB: Time Series Database)로 수집하고 특정 조건에 설정된 경고(Alert) 등을 발생한다.
메트릭 수집
프로메테우스는 다양한 소스로부터 시스템 및 애플리케이션의 메트릭 데이터를 수집하고 있습니다.
이를 위해 클라이언트 라이브러리를 사용하여 애플리케이션에 메트릭 수집 코드를 추가할 수 있으며, 수집 대상에 따라 Exporter를 사용/설치 합니다.
데이터 저장
수집한 메트릭 데이터는 로컬 디스크에 저장
이러한 저장 방식은 효율적인 읽기 및 쿼리 작업을 가능하게하며
데이터를 압축하고 롤링 기반의 시간 계획을 사용하여 오래된 데이터를 정리
쿼리 및 분석
프로메테우스는 내장된 쿼리 언어인 PromQL을 사용하여 저장된 데이터에 대한 강력한 쿼리 및 분석 기능을 제공함 이로 인해 데이터를 검색, 집계, 그룹화하고, 경고 규칙을 정의하고, 대시보드와 그래프를 생성
경고 및 알림
프로메테우스는 사용자가 정의한 경고 규칙에 따라 시스템 및 애플리케이션의 비정상적인 동작을 탐지하고 알림을 생성. 이를 통해 잠재적인 문제 상황을 신속하게 감지하고 대응함
시각화
프로메테우스는 내장된 그래프 및 대시보드 기능을 제공하지 않음
하지만, 수집한 데이터를 외부 시각화 도구인 Grafana와 통합하여 시각화 가능.
Grafana는 프로메테우스 데이터를 사용하여 다양한 형태의 그래프와 대시보드를 생성할 수 있는 도구
추가 사항
프로메테우스는 Cloud Native 환경에서 많은 사용 사례를 가지고 있으며,
Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼과의 통합이 잘 구성되어 있다.
따라서 대규모 분산 시스템의 모니터링 및 경고에 매우 유용한 도구입니다.
2️⃣ Grafana
Grafana
인터랙티브 데이터 시각화 플랫폼으로 여러 대시보드로 통합된 차트와 그래프를 통해 데이터를 확인할 수 있는 tool이다.
패널: 히스토그램, 그래프, 지리 지도, 열 지도 등을 사용하여 사용자가 원하는 대로 데이터를 시각화합니다.
플러그인: 기존 데이터 소스와 연결된 패널 플러그인을 통해 데이터 마이그레이션 없이 사용자 친화적인 API에서 실시간으로 데이터를 렌더링합니다. 또한 데이터 소스 플러그인을 생성하여 모든 사용자 정의 API에서 메트릭을 검색할 수 있습니다.
ex) Prometheus, Graphite, InfluxDB, OpenTSDB, Loki, Elasticsearch, MySQL, PostgreSQL, MSSQL, Azure Monitor, DataDog, Grafana Cloud, CloudWatch, GitLab, MongoDB, Oracle, Jira, 메트릭수집, 시각화, 알림, 서비스 디스커버리
경고: 단일 사용자 인터페이스에서 모든 경고를 생성, 통합, 제어할 수 있습니다.
변환: 데이터 소스 및 쿼리 전반에서 이름 변경, 요약, 결합, 계산을 수행할 수 있습니다.
주석: 다양한 데이터 소스의 풍성한 이벤트를 사용하여 그래프에 주석을 추가할 수 있습니다.
패널 편집기: 패널을 구성 및 커스터마이징하기 위한 일관된 사용자 인터페이스입니다.
아래는 Node Exporter 로 1개의 서버의 CPU, Memory, Network, Disk 를 웹으로 시각화한것 입니다.
3️⃣ Zabbix
Zabbix
오픈 소스의 네트워크 모니터링 및 경고 솔루션으로, 시스템 및 네트워크 리소스의 상태를 실시간으로 모니터링하고 관리하는 데 사용됩니다. 주로 IT 인프라 및 서비스의 성능, 가용성 및 상태를 모니터링하는 데 사용되며, 대규모 환경에서도 사용할 수 있습니다. 다양한 기능과 확장성을 갖추고 있어서 많은 기업 및 조직에서 네트워크 모니터링에 활용되고 있습니다.
특징
– 다양한 모니터링 옵션: Zabbix는 서버, 네트워크 장비, 가상화 플랫폼, 클라우드 서비스 등 다양한 환경에서의 모니터링을 지원합니다. CPU, 메모리, 디스크 사용량부터 네트워크 트래픽, 웹 서비스 상태 등 다양한 지표를 모니터링할 수 있습니다.
– 실시간 모니터링 및 경고: Zabbix는 실시간으로 시스템 및 네트워크의 상태를 모니터링하고, 문제가 발생하면 경고를 생성하여 관리자에게 알려줍니다. 이를 통해 문제가 발생하기 전에 조치를 취할 수 있습니다.
– 고급 데이터 수집 및 분석: Zabbix는 데이터 수집을 위해 에이전트를 사용하며, 다양한 데이터 수집 방법을 지원합니다. 수집된 데이터는 그래프 및 리포트로 시각화되어 사용자가 데이터를 쉽게 분석할 수 있습니다.
– 자동화 및 확장성: Zabbix는 자동화 기능을 제공하여 쉽게 구성하고 관리할 수 있습니다. 또한 확장 가능한 아키텍처를 가지고 있어 대규모 환경에서도 사용할 수 있습니다.
스마일서브에서는 zabbix를 모니터링 상품화 되어 있습니다.
https://www.cloudv.kr/security/monitoring.html
https://www.iwinv.kr/management/monitoring/zabbix.html