🎡 prometheus(ν”„λ‘œλ©”ν…Œμš°μŠ€)λž€?

기운찬곰·2020λ…„ 8μ›” 27일
1

prometheus

λͺ©λ‘ 보기
1/2

μ΄ˆλ³΄κ°œλ°œμžκ°€ λ°°μš°λŠ” λ‹¨κ³„μ—μ„œμ˜ 포슀트 κΈ€μž…λ‹ˆλ‹€. λΆ€μ‘±ν•œ 점이 많이 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄ν•΄ν•΄μ£Όμ„Έμš”..πŸ˜‚πŸ˜‚


1. μ†Œκ°œν•©λ‹ˆλ‹€!!

ν”„λ‘œλ©”ν…Œμš°μŠ€λŠ” λ©”νŠΈλ¦­ 기반의 μ˜€ν”ˆμ†ŒμŠ€ λͺ¨λ‹ˆν„°λ§ μ‹œμŠ€ν…œμ΄λ‹€.

λͺ¨λ‹ˆν„°λ§ ν•˜λ©΄ μ•„λ§ˆλ„ μ•„λž˜μ™€ 같은 화면을 λ– μ˜¬λ¦¬μ§€ μ•Šμ„κΉŒμš”?

κ°€λ Ή, μ›Ή μ‚¬μ΄νŠΈλ₯Ό λ‘ μΉ­ν•˜λ©΄ μ‚¬μš©μžκ°€ λ“€μ–΄μ˜€κ²Œ λ©λ‹ˆλ‹€. 그러면 νŠΈλž˜ν”½λ„ λ°œμƒν•  것이고, 그에 λ”°λ₯Έ μ§€μ—°μ‹œκ°„λ„ 생길 κ²ƒμž…λ‹ˆλ‹€. μ„œλ²„μ˜ λ©”λͺ¨λ¦¬λ‚˜ CPU도 μ–Όλ§ˆλ‚˜ μ‚¬μš©λ˜λŠ”μ§€, μ—λŸ¬κ°€ λ‚˜λ©΄ κ·Έ μ—λŸ¬κ°€ μ–΄λ””μ„œ λ°œμƒλ˜λŠ” μ—λŸ¬μΈμ§€ 등을 μœ μ§€λ³΄μˆ˜νŒ€μ€ ν•œλˆˆμ— μ•ŒκΈ° μ‰½κ²Œ 보길 원할 κ²ƒμž…λ‹ˆλ‹€.


κ·Έ λ•Œ μ‚¬μš©ν•  수 μžˆλŠ”κ²Œ ν”„λ‘œλ©”ν…Œμš°μŠ€μž…λ‹ˆλ‹€. μ•„λž˜λŠ” ν”„λ‘œλ©”ν…Œμš°μŠ€μ— λŒ€ν•œ μ†Œκ°œμž…λ‹ˆλ‹€.

  • 이벀트 λͺ¨λ‹ˆν„°λ§ 및 경고에 μ‚¬μš©λ˜λŠ” 무료 μ†Œν”„νŠΈμ›¨μ–΄ μ‘μš© ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€.
  • μœ μ—°ν•œ 쿼리(PromQL) 및 μ‹€μ‹œκ°„ κ²½κ³ κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • Go μ–Έμ–΄λ‘œ μž‘μ„±λ˜μ—ˆμœΌλ©° μ•„νŒŒμΉ˜2 λΌμ΄μ„ μŠ€λ₯Ό λ”°λ₯΄κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • PrometheusλŠ” 2016 년에 Kubernetes 에 이어 두 번째 ν˜ΈμŠ€νŒ… ν”„λ‘œμ νŠΈλ‘œ Cloud Native Computing Foundation 에 ν•©λ₯˜ν–ˆμŠ΅λ‹ˆλ‹€.
  • 이제 λ…λ¦½ν˜• μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ‘œμ νŠΈμ΄λ©° μ–΄λ–€ νšŒμ‚¬μ™€λ„ λ…λ¦½μ μœΌλ‘œ μœ μ§€ κ΄€λ¦¬λ©λ‹ˆλ‹€.

2. κΈ°λŠ₯ 및 ꡬ성

  • λ©”νŠΈλ¦­ 이름 및 ν‚€/κ°’ 쌍으둜 μ‹λ³„λ˜λŠ” μ‹œκ³„μ—΄ 데이터가 μžˆλŠ” 닀차원 데이터 λͺ¨λΈ
  • μ΄λŸ¬ν•œ 차원을 ν™œμš©ν•˜λŠ” μœ μ—°ν•œ 쿼리 언어인 PromQL. 이λ₯Ό 톡해 μ„±λŠ₯ 뢄석이 κ°€λŠ₯.
  • λ‹€μ–‘ν•œ κ·Έλž˜ν”„ 및 λŒ€μ‹œλ³΄λ“œ 지원(예. κ·ΈλΌνŒŒλ‚˜)
  • alertmanagerλ₯Ό ν†΅ν•œ μ•Œλ¦Ό 생성 λ°œμƒ
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œ 계츑을 μœ„ν•œ ν΄λΌμ΄μ–ΈνŠΈ 라이브러리
  • λΆ„μ‚° μŠ€ν† λ¦¬μ§€μ— μ˜μ‘΄ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 단일 μ„œλ²„ λ…Έλ“œλŠ” μžμœ¨μ μž…λ‹ˆλ‹€.

3. μ•„ν‚€ν…μ²˜

λ‹€λ₯Έλͺ¨λ‹ˆν„°λ§ 도ꡬ와 λ‹€λ₯Έμ μ€ λͺ¨λ‹ˆν„°λ§ 도ꡬ가 push 방식이 μ•„λ‹Œ, pull λ°©μ‹μ΄λž€ μ μž…λ‹ˆλ‹€. 즉, ν”„λ‘œλ©”ν…Œμš°μŠ€ μ„œλ²„κ°€ 주기적으둜 ν΄λΌμ΄μ–ΈνŠΈμ— μ ‘μ†ν•΄μ„œ 데이터λ₯Ό κ°€μ Έμ˜€λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

  • Service Discovery : 데이터 μˆ˜μ§‘ λŒ€μƒμ„ 발견. ν”„λ‘œλ©”ν…Œμš°μŠ€λŠ” 기본적으둜 λͺ¨λ‹ˆν„°λ§ λŒ€μƒ λͺ©λ‘μ„ μœ μ§€ν•˜κ³  μžˆλ‹€.

  • Pushgateway : PushgatewayλŠ” μ‰½κ²Œλ§ν•΄ Proxy Forwarding을 ν•΄μ„œ μ ‘κ·Όν•  수 μ—†λŠ” 곳에 데이터가 μ‘΄μž¬ν•˜λŠ” κ²½μš°μ— μ‚¬μš©ν•  수 μžˆλŠ” λŒ€μ•ˆμ΄λ‹€. application 이 pushgateway 에 λ©”νŠΈλ¦­μ„ pushν•œ ν›„, prometheus server κ°€ pushgateway 에 μ ‘κ·Όν•΄ metric 을 pull ν•΄μ„œ μ˜€λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€.

  • Jobs/Exporter : Exporter(μ΅μŠ€ν¬ν„°)λŠ” ν”„λ‘œλ©”ν…Œμš°μŠ€μ—κ²Œ λ©”νŠΈλ¦­μ„ 가져가도둝 νŠΉμ • μ„œλΉ„μŠ€μ— metric을 λ…ΈμΆœν•˜κ²Œ ν•˜λŠ” agent라고 μ΄ν•΄ν•˜λ©΄ νŽΈν•˜λ‹€(κ·Έλ‹ˆκΉŒ λ©”νŠΈλ¦­μ„ κ°€μ Έμ˜€κΈ° νž˜λ“ κ²½μš° μ‚¬μš©). Exporter λŠ” μ„œλ²„ μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” Node exporter , SQL Exporter λ“± λ‹€μ–‘ν•œ μ»€μŠ€ν…€ exporter 이 κ°œλ°œλ˜μ–΄ μ‚¬μš©λ˜κ³  있으며, μ΄λŸ¬ν•œ Exporterλ₯Ό μ‚¬μš©ν•˜μ—¬ metric 을 Prometheus 에 긁어가도둝 ν•  수 μžˆλ‹€.

  • 데이터 μˆ˜μ§‘ : 이제 ν”„λ‘œλ©”ν…Œμš°μŠ€ μ„œλ²„κ°€ μ΅μŠ€ν¬ν„°κ°€ 열어놓은 HTTP μ—”λ“œν¬μΈνŠΈμ— μ ‘μ†ν•΄μ„œ λ©”νŠΈλ¦­μ„ 주기적으둜 μˆ˜μ§‘ν•œλ‹€. μ΄λ ‡κ²Œ λ©”νŠΈλ¦­μ„ κ°€μ Έμ˜€κ³  μˆ˜μ§‘μ— λŒ€ν•œ ꡬ문 뢄석 ν›„ μ €μž₯ μž₯μΉ˜μ— μ €μž₯λœλ‹€. (ν”„λ‘œλ©”ν…Œμš°μŠ€λŠ” pull 기반 μ‹œμŠ€ν…œ!!)

  • λŒ€μ‹œλ³΄λ“œ : κ·ΈλΌνŒŒλ‚˜λ₯Ό 주둜 μ‚¬μš©ν•œλ‹€.

  • Alert manager : PromQL둜 μ‹€ν–‰λœ λͺ¨λ“  κ²°κ³ΌλŠ” μ•Œλ¦Όμ΄κ³ , 이 μ•Œλ¦Ό μ€‘μ—μ„œ νŠΉμ • μ•Œλ¦Όμ— λŒ€ν•΄ κ·œμΉ™μ„ λ§Œλ“€μ–΄μ„œ 이메일, νŽ˜μ΄μ €λ“€ν‹°, 기타 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ μ „μ†‘λ˜κ²Œ ν•  수 μžˆλ‹€.


4. μ‚¬μš©μ‹œ 고렀사항

PrometheusλŠ” μˆœμˆ˜ν•œ 숫자 μ‹œκ³„μ—΄μ„ κΈ°λ‘ν•˜λŠ” 데 μ ν•©ν•©λ‹ˆλ‹€. μ΄λŠ” 기계 쀑심 λͺ¨λ‹ˆν„°λ§κ³Ό 맀우 동적 인 μ„œλΉ„μŠ€ 지ν–₯ μ•„ν‚€ν…μ²˜μ˜ λͺ¨λ‹ˆν„°λ§μ— λͺ¨λ‘ μ ν•©ν•©λ‹ˆλ‹€.

μš”μ²­ λ‹Ή 청ꡬ와 같이 100 % 정확성이 ν•„μš”ν•œ 경우 μˆ˜μ§‘ 된 데이터가 μƒμ„Έν•˜κ³  μ™„μ „ν•˜μ§€ μ•Šμ„ κ°€λŠ₯성이 λ†’μœΌλ―€λ‘œ PrometheusλŠ” 쒋은 선택이 μ•„λ‹™λ‹ˆλ‹€. μ΄λŸ¬ν•œ 경우 λ‹€λ₯Έ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•˜μ—¬ 청ꡬ 데이터λ₯Ό μˆ˜μ§‘ν•˜κ³  λΆ„μ„ν•˜κ³  λ‚˜λ¨Έμ§€ λͺ¨λ‹ˆν„°λ§μ—λŠ” Prometheusλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 κ°€μž₯ μ’‹μŠ΅λ‹ˆλ‹€.


마침

ν”„λ‘œλ©”ν…Œμš°μŠ€λ₯Ό μ²˜μŒμ—λŠ” κ΅λ³΄λ¬Έκ³ μ—μ„œ μ±… ꡬ경을 ν•˜λ‹€κ°€ μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ²°κ΅­ μ§€κΈˆμ€ κ·Έ 책을 κ΅¬μž…ν–ˆκ³  1νšŒλ…μ„ λͺ©ν‘œλ‘œ κ³΅λΆ€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μƒˆλ‘œμš΄ κΈ°μˆ μ„ λ°°μš΄λ‹€λŠ” κ±°μ—μ„œ 항상 μž¬λ°ŒλŠ”κ±° κ°™μŠ΅λ‹ˆλ‹€. λ‹€μŒ μ‹œκ°„μ—λŠ” 싀행해보고 λ§›λ³΄λŠ” μ‹œκ°„μ„ 갖도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ°Έκ³ λ¬Έν—Œ

profile
배움을 μ’‹μ•„ν•©λ‹ˆλ‹€. μƒˆλ‘œμš΄ 것을 μ’‹μ•„ν•©λ‹ˆλ‹€.

0개의 λŒ“κΈ€