๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ž„๊ณ„์น˜ ๋„๋‹ฌ ์‹œ Slack์œผ๋กœ ์•Œ๋ฆผ ๋ฐ›์•„๋ณด๊ธฐ (Grafana Alert)

1. ๊ฐœ์š”

์˜ˆ์ „์— ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค, ๊ทธ๋ผํŒŒ๋‚˜๋ฅผ ๋„์ปค๋กœ ๋„์›Œ ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ชจ๋‹ˆํ„ฐ๋ง ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ์—ˆ๋‹ค. 

ํ•˜์ง€๋งŒ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๋งค๋ฒˆ ๋ˆˆ์œผ๋กœ๋งŒ ํ•˜๊ธฐ๋Š” ํž˜๋“ค๋‹ค. ๊ทธ๋ผํŒŒ๋‚˜์—์„  ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด slack, email ๋“ฑ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด์ค„ ์ˆ˜ ์žˆ๋‹ค. 

 

์‚ฌ์‹ค ์ฒ˜์Œ ๋ชจ๋‹ˆํ„ฐ๋ง ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ์„ ๋•Œ๋„ slack์œผ๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋„๋ก ํ•˜๊ณ ์‹ถ์—ˆ๋Š”๋ฐ, PromQL ๋‹ค๋ฃจ๋Š”๋ฐ ๋ฏธ์ˆ™ํ•ด์„œ ์‹คํŒจํ–ˆ์—ˆ๋‹ค. 

 

์ด๋ฒˆ์— ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด์„œ ๊ธฐ๋กํ•ด๋‘๋ ค ํ•œ๋‹ค. 

 

 

 

 

 

 

2. Slack ์„ค์ •

๋จผ์ € ์•Œ๋žŒ ๋ฉ”์‹œ์ง€๋ฅผ Slack์œผ๋กœ ์ „๋‹ฌ๋ฐ›๊ธฐ ์œ„ํ•ด Slack์˜ Web Hook ์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

Slack App ์ƒ์„ฑํ•˜๊ธฐ 

  • Slack API ํ™ˆํŽ˜์ด์ง€์— ์ ‘์†ํ•œ ํ›„ ๋กœ๊ทธ์ธ ํ•ด์ค€๋‹ค. 
  • ๋กœ๊ทธ์ธ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, Create New App ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด Slack App์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. 
  • ์ƒ์„ฑ ์™„๋ฃŒ ๋˜์—ˆ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด App ๋ชฉ๋ก์ด ๋ณด์ด๊ฒŒ ๋œ๋‹ค. 

 

Token ์ƒ์„ฑ ๋ฐ ๊ธฐํƒ€ ์„ค์ •

  • ์œ„์—์„œ grafana ์ด๋ฆ„์„ ๊ฐ€์ง„ Slack App์„ ์ƒ์„ฑํ•˜์˜€๋‹ค. 
  • ์ƒ์„ฑํ•œ ์•ฑ์œผ๋กœ ๋“ค์–ด๊ฐ„ ํ›„, ์™ผ์ชฝ ์„ค์ • ๋ฉ”๋‰ด๋“ค์—์„œ Oauth & Permissions ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•œ๋‹ค. 

 

  • Oauth & Permissions ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜๋ฉด, ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค.
  • ์—ฌ๊ธฐ์„œ Scopes -> Bot Token Scopes ํ•ญ๋ชฉ์„ ์ฐพ์•„์„œ Oauth Scope์„ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.
  • ์ถ”๊ฐ€ํ•ด์•ผ ํ•  Scope ์€ chat:write, files:wirte 2๊ฐœ ์ด๋‹ค. 
  • ํ•ด๋‹น ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•œ ์ด์œ ๋Š”, ๊ทธ๋ผํŒŒ๋‚˜์—์„œ Slack API๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€์™€ ๊ทธ๋ž˜ํ”„ ์ด๋ฏธ์ง€๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด๋‹ค. 
  • Add an Oauth Scope ๋ฒ„ํŠผ์„ ํ†ตํ•ด chat:write, files:write Scope ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

Bot User OAuth Token ์„ค์ •ํ•˜๊ธฐ

  • OAuth Tokens for Your Workspace ๋ชฉ๋ก์—์„œ Install to Workspace ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ, Bot User OAuth Token ์„ ์ƒ์„ฑํ•ด ์ค€๋‹ค.

 

 

 

 

Webhooks ์ƒ์„ฑํ•˜๊ธฐ

  • Incoming Webhooks ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญ ํ›„ ๋ฒ„ํŠผ์„ on์œผ๋กœ ํ™œ์„ฑํ™” ํ•ด์ค€๋‹ค.

  • ํ™œ์„ฑํ™” ์‹œํ‚ค๋ฉด Webhook URLs for Your Workspace ๋ชฉ๋ก์ด ๋ณด์ด๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ์—ฌ๊ธฐ์„œ Add New Webhook to Workspace ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ์ฑ„๋„์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 
  • ์ถ”๊ฐ€ํ•˜๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ Webhook URL์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค.

 

 

 

 

 

 

 

 

3. Grafana Alert Rule ์„ค์ •

์•„๋ž˜๋Š” ๋‚ด Dashboards์ด๋‹ค.

 

์—ฌ๊ธฐ์„œ ๋‚˜๋Š” Heap Used ๋ฅผ ํƒ€๊ฒŸ์œผ๋กœ ์žก๊ณ  ์ผ์ • ๋ฉ”๋ชจ๋ฆฌ ์ด์ƒ ์˜ฌ๋ผ๊ฐ€๋ฉด ์•Œ๋žŒ์„ ๋ณด๋‚ด๋„๋ก ์„ค์ •ํ•  ๊ฒƒ์ด๋‹ค. 

 

์•„๋ž˜ ๋ฉ”๋‰ด๋“ค ์ค‘ Alert rules๋กœ ๋“ค์–ด๊ฐ„๋‹ค

 

New alert rule์„ ํด๋ฆญํ•ด ์ƒˆ๋กœ์šด ๊ทœ์น™์„ ์ƒ์„ฑํ•ด์ค€๋‹ค. 

 

 

A์˜์—ญ์—์„œ๋Š” ์–ด๋– ํ•œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ Alert๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ง€ ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑ

 

B๋Š” A์˜ ๊ฐ’์„ ์–ด๋– ํ•œ ๊ธฐ์ค€์œผ๋กœ Alert๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ์ง€ Alert ์˜ ๊ธฐ์ค€์„ ์„ค์ •

๋‚˜์˜ ๊ฒฝ์šฐ B ๋ถ€๋ถ„์€ ์ด๋Ÿฐ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ๋– ์„œ ๊ณผ๊ฐํžˆ ์‚ญ์ œํ•˜๊ณ  C๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์„ฑํ•ด์คฌ๋‹ค. 

 

 

ํƒ€๊ฒŸ์œผ๋กœ ์žก์€ A์˜ ๊ฐ’์˜ ์กฐ๊ฑด์„ ์„ค์ •ํ•ด์ค€๋‹ค. 

 

 

๋‹ค๋ฅธ ๋ถ€๋ถ„๋„ ์ฑ„์›Œ์ค€ ๋‹ค์Œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์œ„์—์„œ ์ƒ์„ฑํ•œ Webhook URL์„ ์„ธํŒ…ํ•ด์ค€๋‹ค.

 

 

 

์ƒ์„ฑ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•˜์˜€๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋œจ๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

 

 

 

 

4. Contact Point ์ƒ์„ฑ

alert rule์„ ์ƒ์„ฑํ•˜์˜€๋‹ค๋ฉด, ๋‹ค์Œ์€ ๋‚ด๊ฐ€ ์•Œ๋ฆผ์„ ์ „๋‹ฌ๋ฐ›๊ณ  ์‹ถ์€ ์ˆ˜๋‹จ๊ณผ Grafana๋ฅผ ์—ฐ๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. Contact points์— ๋“ค์–ด๊ฐ€์„œ Add contact point ํด๋ฆญ

 

 

 

Name์— ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  Integration์—๋Š” ๋‚ด๊ฐ€ ์•Œ๋ฆผ์„ ๋ฐ›๊ณ  ์‹ถ์€ ์ˆ˜๋‹จ์„ ์„ ํƒํ•œ๋‹ค. ๋‚˜๋Š” Slack๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ฏ€๋กœ Slack์„ ์„ ํƒํ•˜๊ณ  ์•„๊นŒ ์ƒ์„ฑํ–ˆ๋˜ Webhook URL์„ ๋ณต์‚ฌํ•˜์—ฌ ๋„ฃ์–ด์ค€๋‹ค.

 

 

 

 

์ด์ œ ์ž˜ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Test ํ•ด๋ณด์ž. Test๋ฅผ ํด๋ฆญํ•˜๊ณ  Send test notification์„ ํด๋ฆญํ•˜๋ฉด Slack ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋œ๋‹ค.

 

 

ํ…Œ์ŠคํŠธ๋ฅผ ๋ณด๋‚ด๋ฉด Slack์— ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์„ธ์ง€๊ฐ€ ์™€์•ผํ•œ๋‹ค.

 

 

 

 

 

 

 

 

 

5. Notification policy ์ƒ์„ฑ

์ƒ์„ฑ๋œ contact point๋ฅผ notification policy์— ๋“ฑ๋กํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด alert๊ฐ€ ๋ฐœ์ƒํ•ด๋„ alert ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ๋“ฑ๋ก์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

๋ฉ”๋‰ด์—์„œ Notification policies ํด๋ฆญ. Edit๋ฅผ ๋ˆŒ๋Ÿฌ Deflaut contact point์— ์•„๊นŒ ์„ค์ •ํ•œ contact point์˜ name์„ ์ž…๋ ฅํ•œ๋‹ค.

 

์ด์ œ ๋ชจ๋“  ์„ค์ •์€ ๋๋‚ฌ๋‹ค.

 

 

 

 

 

 

 

 

 

 

6. ์•Œ๋žŒ ๋ฐ›์•„๋ณด๊ธฐ

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ž„๊ณ„์น˜๋ฅผ ๊ต‰์žฅํžˆ ๋‚ฎ๊ฒŒ ์žก์•„๋’€๊ธฐ ๋•Œ๋ฌธ์— ๋ช‡ ๋ฒˆ์˜ curl ์š”์ฒญ ๋งŒ์œผ๋กœ ์•Œ๋žŒ์„ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

์„ค์ •ํ•ด๋‘” ์ž„๊ณ„์น˜๋ฅผ ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด pending์œผ๋กœ ๋ผ๋ฒจ์ด ๋ฐ”๋€๋‹ค.

๋‚˜๋Š” 1๋ถ„๋™์•ˆ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ž„๊ณ„์น˜๋ฅผ ๋„˜์–ด์„œ๋ฉด ์•Œ๋žŒ์„ ๋ณด๋‚ด๋„๋ก ์„ค์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜†์— for 8s ๊ฐ€ 60s๊ฐ€ ๋˜๋Š” ์ˆœ๊ฐ„ slack์œผ๋กœ ์•Œ๋žŒ์„ ๋ฐœ์†กํ•œ๋‹ค.

 

 

firing์œผ๋กœ ๋ผ๋ฒจ์ด ๋ฐ”๋€Œ๊ฒŒ ๋˜๋ฉด์„œ ์•Œ๋žŒ์ด ๊ฐ€๋Š” ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์ด๋ ‡๊ฒŒ Slack์œผ๋กœ ์•Œ๋žŒ์ด ์ž˜ ์˜จ๋‹ค..!!

 

 

์ด๋ ‡๊ฒŒ text๋งŒ์œผ๋กœ ์•Œ๋žŒ์„ ๋ฐ›์•„๋ณด๋Š” ๊ฒƒ ๋ง๊ณ ๋„ ํ˜„์žฌ ๋ชจ๋‹ˆํ„ฐ๋ง ํ˜„ํ™ฉ์„ ์ด๋ฏธ์ง€๋กœ ๋ณด๋‚ผ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์•„์ง Grafana๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ๋ฏธ์ˆ™ํ•ด ์„ค์ •์„ ์ œ๋Œ€๋กœ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ณ„์† ์† ๋ณผ ์˜ˆ์ •์ด๋‹ค.