- Monitoring 및 Prometheus의 이해
positioning problem을 발견하고 지원하는 역할을 담당
특정 조건이 발생하면 경고를 보내게 하여 미리 장애를 예방 가능
- Metric 수집 방식
pull 기반 모니터링 시스템은 능동적으로 지표를 획득하는 모니터링 시스템으로, 모니터링이 필요한 오브젝트는 원격으로 접근할 수 있어야 한다.
push 기반 모니터링 시스템은 모니터링이 필요한 오브젝트가 적극적으로 지표를 푸시한다.
- Prometheus(pull 방식)
데이터 모델은 이름뿐 아니라 key-value 쌍으로 이뤄진 label로 비정렬 세트로도 모든 시계열을 구별
PromQL 쿼리 언어로 이러한 label중 일부를 집계
프로세스 단위 뿐 아니라 데이터 센터별로도 분석할 수 있으며, 서비스 단위나 직접 정의한 다른 레이블을 통해서도 분석이 가능
결과는 Grafana 같은 대시보드 시스템에서 볼 수 있음(Grafana는 데이터를 시각화 하여 분석 및 모니터링을 용이하게 해주는 오픈소스 분석 플랫폼)
- Alert Manager
모니터링 시스템이므로 문제가 발생하면 slack, hipchat, email 등으로 알람 제공
간단 원리 : Alert Manager가 alert에 대한 queue를 제공하고, Prometheus는 prometheus.yml 파일 내 등록된 rule 조건에 부합하게 되면 queue에 alert를 추가하는 방식
참고 : https://velog.io/@hyunshoon/Monitoring-Prometheus-총-정리https://onestone-note.tistory.com/147
- 커넥션 풀(Connection pool) = DBCP(DataBase Connection Pool)
배경 : WAS(Web Application Server)와 데이터베이스 사이의 연결에는 많은 비용이 든다. 특히 connecting 비용이 큰 비율을 차지한다. 이를 보완하기 위한 방법이 커넥션 풀이다.
- 데이터베이스 연결의 생애주기
- 데이터베이스 드라이버를 사용하여 데이터베이스 연결 열기
- 데이터를 읽고 쓰기 위해 TCP 소켓 열기
- TCP 소켓을 사용하여 데이터 통신
- 데이터베이스 연결 닫기
- TCP 소켓 닫기
커넥션 풀은 데이터베이스와의 커넥션을 미리 만들고 이를 pool로 관리한다. 이를 사용하면 커넥션 수를 지정할 수 있어 서버 자원 고갈을 예방할 수 있다.
커넥션 풀의 동작과정
- connection 요청
- 이전 사용했던 connection 정보 존재 여부 확인
- 이전 사용했던 connection 목록 중 사용 가능한 connection 존재 여부 확인
- 전체 connection 목록 중 사용 가능한 connection 존재 여부 확인
- (2, 3, 4 과정에서 유휴 connection이 있다면 다음 과정을 생략) connection 반환