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๋ฅผ ๋ค๋ฃจ๋๋ฐ ๋ฏธ์ํด ์ค์ ์ ์ ๋๋ก ๋ชปํ ๊ฒ ๊ฐ์ง๋ง ๊ณ์ ์ ๋ณผ ์์ ์ด๋ค.