회사에서 우리 서비스에 대한 모니터링 요구사항이 생겼다. 그래서 프로메테우스라는 것에 대해 알게 되었고 찾아보게 되었다. 내가 해야할 것은 프로메테우스 쪽이 아닌 프로메테우스에 Metric을 Export해주는 Metric Exporter를 개발하는 것이다. 일단 요구사항에 맞춰서 Metric Exporter를 개발을 했는데 코드도 그렇고 좀 맘에 안들어서 다시 제대로 공부하고 하려고 한다. 먼저 프로메테우스가 무엇인지에 대해서 제대로 공부를 좀 해놓고 나서 진행해보려고한다.
https://prometheus.io/docs/introduction/overview/
Overview | Prometheus
An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.
prometheus.io
여기에 있는 내용들 중 필요한 내용을 번역하려고 한다.
프로메테우스는 SoundCloud에서 만든 모니터링과 알림을 위한 오픈소스 시스템이다.
프로메테우스는 시계열의 메트릭 데이터를 수집하고 저장한다, 즉 메트릭 정보는 메트릭이 측정되는 시점의 timestamp와 같이 저장이 된다. 그리고 저장되는 시점에 labels라고 불리는 optional한 key-value 쌍도 같이 저장이 된다.
여태까지 메트릭 메트릭 했는데 메트릭이 뭔지 아직 감이 안올수도 있다. 하나의 용어로 그냥 메트릭을 이해해야한다.
일반인의 용어로 메트릭은 무언가의 측정된 수치이다. Time series(앞에서 시계열 시계열 했던 원래 영어단어, 이제는 그냥 원문 그대로 받아들이자) 의 의미는 변화는 시간이 지날때마다 계속 측정된다는 의미이다. 유저가 측정하고자 하는건 어플리케이션마다 다른데 웹서버 같은 경우에는 http request 횟수가 될 수 있고 데이터베이스 같은 경우에는 연결되어있는 connection 개수같은게 될 수도 있다.
메트릭은 우리의 어플리케이션이 어떤 현상을 보일 때 왜 그러는지를 이해하는데 매우 중요한 역할을 한다. 만약 당신이 어플리케이션을 실행시켰고 어플리케이션이 느리다는 것을 알아차렸다면 어플리케이션이 왜그런지 정보가 필요하다. 예를 들어 http request 횟수가 많으면 어플리케이션이 느려질 수도 있다. 만약 당신이 http request 횟수에 대한 Metric을 측정중이 였다면 어플리케이션이 느려지는 이유를 찾고 서버의 개수를 늘리는 식으로 대응할 수 있었을 것이다.
이것을 보면 메트릭이 어떻게 생겼는지 감이 확 올것이다.
프로메테우스 생태계는 많은 구성요소들로 이뤄져 있는데 이들중 많은 것들은 optional하다
일단 내가 조만간 볼 부분은 Jobs/exporters 쪽이다. 내가 집중할 부분은 어떤 exporter 라이브러리로 어떻게 깔끔하게 metric을 export하는 코드를 짤지이다.
시계열의 수치데이터를 측정할 때에 적합하다.
100퍼센트의 적합성을 가져야하는 경우에는 적합하지 않다.
이렇게 프로메테우스에 대해서 간단하게 알아봤다.. 나중에 프로메테우스를 제대로 써볼 뭔가 나만의 간단한 서비스를 만들어봐야겠다. 현재 회사 서비스에서는 내가 프로메테우스의 모든걸 적용할 필요가 없으니까..
막 공부를 하는중이라 모르는점도 많고 잘못된 내용이 있을 수 있습니다.. 지적 및 내용 보충은 감사합니다..
댓글 영역