์๊ฐ ์ ํ.
์ด๊ฒ์ด ๊ตฌํ๋ ์ ์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฐธ์กฐํ์ญ์์ค.
1) ๊ฒฝ๋ณด ์กฐ๊ฑด์ผ๋ก
2) ์๋ฆผ์ ๋ํ ํํฐ๋ก
๋๊ตฌ๋ ์ง ์ด ์๋๋ฆฌ์ค์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๊ฐํด ๋์ต๋๊น? ๋ด ์์คํ ์ด ์ฐ์ค๋ฌดํด๋ก ๊ฐ๋๋์ง ์๋ ํ ์ ์ฒด ์๋ฆผ ๊ธฐ๋ฅ์ด ๋ณธ์ง์ ์ผ๋ก ์ธ๋ชจ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋จ 4๋ช ์ด ์ด ํฐ์ผ์ ์ฐฌ์ฑํ๋ฅผ ๋์ก๋ค๋ ์ฌ์ค์ ์ถฉ๊ฒฉ์ ๋ฐ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์ด ํ๊ณ ์๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด๋ ๊ธฐ์ ์ด ๋๋ฝ๋ ๊ฒ ๊ฐ์ต๋๋ค...
ํ์ฌ ์ํ๋ก ๋ชจ๋ ๊ฒฝ๊ณ ์๋ฆผ์ ๋๊ฑฐ๋ ๋ด ํ๋ก์ธ์ค๊ฐ EOD๋ฅผ ์ข ๋ฃํ ๋ ๋ง์ ๊ฐ์ง ์๋ฆผ์ ๋ฐ๊ฒ ๋๋ค๋ ์ฌ์ค์ ์๋ฝํด์ผ ํฉ๋๋ค.
์ ๋ง ์ค์ํ๊ฒ ๋ค๋ฆฌ๋ ค๊ณ ํ์ง ์๊ณ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์ด ์ด๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ํผ๋์ค๋ฌ์ํฉ๋๋ค. ์ ๋ ๋ช ๋ ๋์ Grafana๋ฅผ ์ฌ๋ํด ์์ผ๋ฉฐ v4์์ ์ฒ์ ๋์ ๋ ์ดํ ๊ฒฝ๊ณ ๊ธฐ๋ฅ์ ์ถ์ ํด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฒฝ๊ณ ์ ๋ฐ์ดํธ๊ฐ ์๊ณ ์ด ์ ํ์ด ํด๊ฒฐ๋์ง ์์ ๋๋ง๋ค ๋จธ๋ฆฌ๋ฅผ ๊ธ์ ์ ๋๋ค.
@bblazei ๋น์ ๋ง์ด ๋ง์! ์ฐ์ ์์๋ฅผ ์ ํด์ผ ํ๊ณ ํ์คํ ๋์์ด ๋๋ ๋๋ผ์ด ๊ธฐ๋ฅ์
๋๋ค!
@torkelo ์ด ๊ธฐ๋ฅ์ด ์ธ์ ๊ณํ๋ ์ง ์์ญ๋๊น?
๋ค์ ๋ ๋ฆด๋ฆฌ์ค(4.3 ๋ฐ 4.4)์ ๋ํ ๋ก๋๋งต์ ์๊ธฐ ๋๋ฌธ์ ํ์ฌ Eta๊ฐ ์๋๋๋ค.
ํ ์์ฝ๋ค์. ์ฐ์ค๋ฌดํด๊ฐ ์๋ ์์คํ ์์ ๊ฒฝ๊ณ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ด๋ป์ต๋๊น?
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ํ๋ฃจ ์ค ์๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฒฝ๋ณด ์์ค์ ๊ฐ์ ธ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ํ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๋ (๊ทธ๋ ์ง ์์ต๋๋ค) ์ฐธ์์ฑ ์๊ฒ ์ด๊ฒ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ์ฌ ์ฃผ๊ธฐ์ ์ผ๋ก Slack ๊ทธ๋ํ์ curl์ ์ฌ์ฉํฉ๋๋ค.
@torkelo ํ ๋ฅด์ผ๋ก. ์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ํ์๋์ง ์๋์ง ์ค๋๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ ํน์ ์๊ฐ ๋์ grafana ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ฐพ๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ ๊ฐ๋ฅํฉ๋๊น?
์ด ๊ธฐ๋ฅ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๊ฒฝ๊ณ ๋ชฉ๋ก ํ์ด์ง์์ ๊ฒฝ๊ณ ๋ฅผ ์๋์ผ๋ก ์ผ์ ์ค์งํ ์ ์์ง๋ง (์๋ฅผ ๋ค์ด) ๋งค์ผ 2:30a DB ์๋ฒ ๋ฐฑ์ ์ค์ "Network I/O Waits In Progress"์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. ํน์ ๊ธฐ๊ฐ ๋์ ์๋ฆฌ์ง ์๋ ๊ฒฝ๊ณ ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค.
grafana๋ ๋ชจ๋๋ก ์์ ์ ์ง์ํฉ๋๊น? ๊ทธ๋ฐ ๋ค์ ID ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํจ๋์์ ์ถ๊ฐ ๋ฉํธ๋ฆญ์ผ๋ก ์ ๋์ค ์๊ฐ์ ์ป์ ์ ์์ด์ผ ํฉ๋๋ค. ๋ชจ๋๋ก ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋์ค ์๊ฐ์ 86400(ํ๋ฃจ์ ์ด ์)์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฒฝ๊ณ ์ ์๊ฐ ์ธก์ ํญ๋ชฉ์ ๋ฒ์ ์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ค๋ฅธ์ชฝ?
์ด ๋ชฉ์ ์ ์ํด ๋ชจ๋๋ก ์ฐ์ฐ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ด๋ ต์ต๋๊น?
์ด ๊ธฐ๋ฅ์ด ์ ๋ง ํ์ํฉ๋๋ค!
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? WIP์ ๋๊น ์๋๋ฉด ์์ง '๊ณ ๋ ค ์ค'์ธ ๊ฒ์ ๋๊น?
์ฐ๋ฆฌ๋ ์ฌ์ฉ๋๊ณผ ๊ฐ์ ํน์ ๊ฒฝ๊ณ ์ ๋ํด ๋ค๋ฅธ ์๊ฐ ํ๋ ์์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ๋ฎ์๋ ํน์ ์๊ณ๊ฐ ์ด์์ผ๋ก ์์๋์ง๋ง ๋ฐค์๋ ๊ทธ๋ ์ง ์์ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
+1
+1
+1
์ฌ๋๋ค( @bascarsija & @maizy)์ด ์ด์ ๋ํ ์ฌ๋๋ค์ ์์ฒญ์ ๋ฐ๋ ํฌํ๋ฅผ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ฌ๋๋ค์ ์ด ์ค๋ ๋๋ฅผ ๊ตฌ๋ ํ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ์ด๋ฉ์ผ ์๋ฆผ์ ๋ณด๋ด๋๋ก ํ๋ ์ด๋ฌํ "+1" ๋ฉ์์ง์ ๋ํด "๋ฐ๋ ํฌํ"ํ๊ณ ์์ต๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ด๋ฌํ "+1" ๋ฉ์์ง๋ฅผ ์ค๋ ๋์ ์ถ๊ฐํ๋ ๋์ ํจ๊ณผ๋ ์ ํธ ๋ ์ก์๋น๋ฅผ ํฌ๊ฒ ์ค์์ผ๋ก์จ ์ค๋ ๋ ๊ตฌ๋ ๊ธฐ๋ฅ์ ๊ฐ์น๋ฅผ ํฌ๊ฒ ์ค์ ๋๋ค.
๋ฐ์์ ํตํด ๋จ์ํ "up-voting" ๋๋ "down-voting"ํ์ฌ ๊ทธ๋ฌํ ์ด๋ฉ์ผ ์๋ฆผ์ ํธ๋ฆฌ๊ฑฐํ์ง ์๊ณ ํน์ ์ ์์ด๋ ์๊ฒฌ์ ๋ํ ๊ด์ฌ ๋๋ ๋์๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๋ฌธ์ ์ ๋ํ ์ฐ๋/์ด์ฒด์ ์ธ ๊ด์ฌ์ ๊ฐ์ฅ ๋๋๋ฌ์ง ํ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ์ ์ด๊ธฐ/๊ธฐ๋ณธ ์ค๋ช ์ ๋ํ ๋ฐ์ ์์ ๋๋ค. ๊ฑฐ๊ธฐ์ ๋ฐ์์ ์ถ๊ฐํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
์์งํ ์ด๊ฒ์ Github์ ์์คํ ์ ์ธ ๋ฌธ์ ์ ๋๋ค. ๋ชจ๋ ํ๋ก์ ํธ์ ๋ชจ๋ ์ด์ ์ค๋ ๋์ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค. Github UI๋ ์ฌ์ฉ์์๊ฒ ์ด ๊ฒฐ๊ณผ๋ฅผ ์๋ฆฌ์ง ์๊ฑฐ๋ ์ด๋ค ์์ผ๋ก๋ ๋ช ๋ฐฑํ๊ฒ ๊ถ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ์ฌ์ฉ์ ์์ฒญํ๋ ๋ค์ํ ์ค๋ ๋์์ ๋ง์ ํญ๋ณ์ ์ฐพ์ ์ ์์ต๋๋ค. ์ค๋ ๋์ ๋ ๋ค๋ฅธ ๋ฉ์์ง๋ฅผ ์ถ๊ฐํ์ฌ ๊ทธ๋ฌํ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋ ๊ฒ์ ์ฃผ์ ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค(๋ฐ๋ผ์ ์ ํธ ๋ ์ก์๋น๋ฅผ ๋ ๊ฐ์์ํด).
์ค๋ช
๊ฐ์ฌํฉ๋๋ค. ๋๋ ๊ทธ +1
๋ฅผ ๊ฒ์ํ๋ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ด ๋จ์ง ์ฑ๊ฐ์ ์ผ์ด๋ผ๋ ๊ฒ์ ์์๋ค๋ฉด ๊ทธ๋ ๊ฒ ํ์ง ์์์ ๊ฒ์ด๋ผ๊ณ ์ถ์ธกํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ํ ์งง์ ์ค๋ช
์ ๊ฒ์ํ๋ฉด ๊ทธ ์ค ๋ช ๊ฐ์ง๊ฐ ์ค๋จ๋์์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ์ง๋ฌธ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ์ซ์ด์๋ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ์๋ฏธํ ์ ์์ต๋๋ค.
์ผ, ์ฃผ, ์, ์ฐ๋ ์ค ํน์ ์๊ฐ์ ์ผ์ ์๋ฆผ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก prometheus๋ฅผ ๋ฐฑ์๋๋ก ์ฌ์ฉ:
hour()
, ์ด๋ ์๊ฐ(0-23)์ ๋ฐํํฉ๋๋ค. ๊ทธ๋ํ์์ ์จ๊ธธ ์ ์์ต๋๋ค.AND
์กฐ๊ฑด์ ์ถ๊ฐํ์ฌ hour()
์ฟผ๋ฆฌ๊ฐ ์ํ๋ ๋ฒ์(์: ๊ทผ๋ฌด ์๊ฐ) ์ฌ์ด์ ์๋ ๊ฒฝ์ฐ์๋ง ๊ฒฝ๊ณ ํฉ๋๋ค.day_of_week()
๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
์ ์ธ๊ณ์ ์ฌ๋ฌ ํ์ ๊ธฐ๋ฐ์ผ๋ก 24์๊ฐ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ค๋ฉด ์ด ๊ธฐ๋ฅ๋ ํ์ํฉ๋๋ค. ์ด์ ๋ํ ๊ณํ์ด ์์ต๋๊น?
๊ทธ๋์ ์ด ๊ธฐ๋ฅ์ด ์ค๋น๋๋ ๋์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค.
์์:
```
metric A : production.application_a.actual_metric = 123(์ด๊ฒ์ ์ค์ ๋ฉํธ๋ฆญ์
๋๋ค)
metric B : helper.time_helper.hour = 1 ~ 24 ( ๋งค๋ถ ๋งค๋ถ ํ์ฐ์ผ๋ก ์ ์ก๋๋ ๊ฐ์ง ์๊ฐ ๋ฉํธ๋ฆญ)
alert requirement :
(๋ฉํธ๋ฆญ A๋ 100 ๋ฏธ๋ง์ด๊ณ ์๊ฐ์ 10 ๋ฐ 20 ๋ฒ์ ๋ด์ ์์)
๋๋
(๋ฉํธ๋ฆญ A๋ 50 ๋ฏธ๋ง์ด๊ณ ์๊ฐ์ 10 ๋ฐ 20 ๋ฒ์๋ฅผ ๋ฒ์ด๋จ)
```
๋ค์ ๋งํด์:
metric A threshold is 100 between 10AM to 8PM and it is 50 for rest of the time
๋ด ์ง๋ฌธ :
์์ ์๋๋ฆฌ์ค์์ ๋จ์ผ ๊ทธ๋ํ ํจ๋๋ก ๋ฌ์ฑํ ์ ์์ต๋๊น? ์๋๋ฉด ๋ด๋ถ ๋ฒ์์ ์ธ๋ถ ๋ฒ์์ ๋ํด ๊ฐ๊ฐ ํ๋์ฉ ๋ ๊ฐ์ ๋ค๋ฅธ ๊ทธ๋ํ ํจ๋์ ์ฌ์ฉํ ์ ์์ต๋๊น? ์๋๋ฉด ์ด๊ฒ์ ๋ฌ์ฑํ๊ธฐ ์ํด grafana์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? (์ฐธ๊ณ : ํ์ฐ 0.9๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.)
๋ํ ์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ grafana์ ์๋ชป๋ ๋ฉํธ๋ฆญ์ ๋ณด๋ด๋ ํฅ๋ฏธ๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๋ฉํธ๋ฆญ์ ์์ฑํ๋ ๊ฐ๋จํ๊ณ ์ข์ ์ต์ ์ด ๋ฌด์์ธ์ง ๊ถ๊ธํ์ญ๋๊น?
+1 ํํ์์ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ์กฐ๊ฑด์ ์ ํํ ์ ์๋ ์์์ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ง ์ ์์ต๋๊น?
1๊ณผ 2 ์ฌ์ด์ ์๊ฐ AND
+1 ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
์กฐ์กํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ์๊ฒฌ
๋๋ collectd / Influxdb๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํ๋ซ ext ํ์ผ์ ์๊ฐ ๊ฐ์ ์ฐ๋ cron ํ๋ก์ธ์ค๊ฐ ์์ต๋๋ค.
ํ
์ด๋ธ ์์ง ํ๋ฌ๊ทธ์ธ์ ์ด๊ฒ์ Table_Value - ์ธ์คํด์ค "์๊ฐ"์ผ๋ก ์ฝ์ต๋๋ค.
๋ฒ์๋ง ์ฌ์ฉํด์ผ ํ๋ ๋ชจ๋ ๊ฒฝ๊ณ ์์ ๋ฉํธ๋ฆญ ์๊ฐ(์ต๋)์ ๋์๋ณด๋์ ์จ๊ฒจ์ง ๋ฉํธ๋ฆญ์ผ๋ก ์ถ๊ฐํ ๋ค์ ๊ฒฝ๊ณ ์์ AND ๋ฒ์ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ์๊ฐ์ด X์ Y ์ฌ์ด์ ์๋ ๊ฒฝ์ฐ์๋ง ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
๊ฐ์ ์ผ์ด ์์ผ์๋ ์๋ํฉ๋๋ค.
ํฌ๋ฐํ์ง๋ง ํจ๊ณผ์ ์ธ
@torkelo ์ด๊ฒ์ด ์ธ์ ๊ตฌํ๋ ์ ์์ต๋๊น?
์๋์, ์ฃ์กํฉ๋๋ค. ํต์ฌ ํ ๋ก๋๋งต์๋ ์์ต๋๋ค.
Cloud vm ์ธ์คํด์ค๊ฐ ์์ฝ ํด์ ๋ก ์ธํด ํด์ ๋๋๋ก ์์ฝ๋ ๋ ๊ฒฝ๊ณ ๊ฐ ์ ์ก๋์ง ์๋๋ก ํ๋ ๋ชจ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ. ๋๋ถ๋ถ์ ์์คํ
์ ์๋
๋์ ์ด๊ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๊ฒ์ ์ถ๊ฐํ์ญ์์ค ;) ๊ฒฝ๊ณ ํผ๋ก ์ค์ .
ํ๋ซ ext ํ์ผ์ ์๊ฐ ๊ฐ์ ์ฐ๋ cron ํ๋ก์ธ์ค๊ฐ ์์ต๋๋ค.
๋ฒ์๋ง ์ฌ์ฉํด์ผ ํ๋ ๋ชจ๋ ๊ฒฝ๊ณ ์์ ๋ฉํธ๋ฆญ ์๊ฐ(์ต๋)์ ๋์๋ณด๋์ ์จ๊ฒจ์ง ๋ฉํธ๋ฆญ์ผ๋ก ์ถ๊ฐํ ๋ค์ ๊ฒฝ๊ณ ์์ AND ๋ฒ์ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ์๊ฐ์ด X์ Y ์ฌ์ด์ ์๋ ๊ฒฝ์ฐ์๋ง ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
์ด๊ฒ์ X - Y ์ฌ์ด์ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์ํ๋ ๊ฒ๋ณด๋ค ๋ฏธ๋ฌํ์ง๋ง ์ ์ฉํ ์ด์ ์ด ์๋ ๋งค์ฐ ํจ๊ณผ์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค. Y ์ ์ ์ํฉ์ด ์์ ๋์ง ์์ผ๋ฉด Y์์ ์ฒซ ๋ฒ์งธ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ต๋๋ค. X - Y ์ฌ์ด์ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์ํ๋ฉด ์ ๋ Y ํ์๋ ๊ฒฝ๊ณ ๊ฐ ํ์๋์ง ์์ต๋๋ค("์๋ฆผ ๋ณด๋ด๊ธฐ" ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์๋ ์์ง๋ง).
ํ์ฐ์ ๋ฐ์ดํฐ ์์ค๋ก ์ฌ์ฉํ ๋ ํฌ๋ก ์์ ์ด ํ์ํ์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
timeSlice(isNonNull(identity(1)), '02:30 -9h', '06:00 -9h')
C
๋ฉํธ๋ฆญ์ ์ถ๊ฐํ๊ณ ๊ฒฝ๊ณ ์กฐ๊ฑด AND max() OF query(C, 1m, now) HAS NO VALUE
์ ์ถ๊ฐํ์ฌ 2:30 - 6:00 ์ฌ์ด์ ๊ฒฝ๊ณ ๋ฅผ ์ ์ธํ์ต๋๋ค. ( -9h
๋ ๋ด ์๊ฐ๋ ์คํ์
์ด +9:00์ด๊ณ timeSlice()๊ฐ UTC๋ก ํ์๋๊ธฐ ๋๋ฌธ์
๋๋ค.)
ํธ์ง: ์ด๊ฒ์ ์๋ํ ํ ๋ฉฐ์น ํ์ timeSlice()
ํธ๋ฆญ์ด ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค... ๋์๋ณด๋๋ฅผ ์ ์ฅํ ์๊ฐ์ ๊ณ ์ ๋์ด ๋งค์ผ ์ด๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ ํฐ ๋๋ฝ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๊ฒ์ด ๋ก๋๋งต์ ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๊ตฌํํ๊ธฐ๊ฐ ์ฌ์ํด ๋ณด์ธ๋ค
Prometheus์ hour() ํจ์๋ฅผ ์ฌ์ฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด @albertvaka ์๊ฒ ์ ๋ง ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋ถํํ๋ hour() ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์๊ฐ๋๋ฅผ ์๋์ผ๋ก ๊ณ ๋ คํ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค(DST๊ฐ ์์ ๋ ๋ฌธ์ ๊ฐ ๋จ). ์๊ณผ ์ผ์ ๊ธฐ์ค์ผ๋ก ์๋์ผ๋ก ์๊ฐ๋๋ฅผ ๊ณ์ฐํ ์๋ง ์์ง๋ง ์ด๋ ์ข์ ์๋ฃจ์ ์ด ์๋๋๋ค.
prometheus/prometheus#4160์ ๋ํ ์ถ๊ฐ ์ ๋ณด
๋ค๋ฅธ ๋ ์ง ์๊ฐ ๊ธฐ๊ฐ์ ๋ํด ๋ค๋ฅธ ์๊ณ๊ฐ ์์ค์ ์ค์ ํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค.
์๋ฅผ ๋ค์ด ๋ฐค์ ์ฌ์ฉ์ ํ๋ ์ด๋ฒคํธ๊ฐ ๊ฑฐ์ ์๋ ๊ฒฝ์ฐ์๋ ๊ด์ฐฎ์ง๋ง ๋ฎ์๋ ๊ด์ฐฎ์ง ์์ต๋๋ค.
์ด ์์ฒญ์ ์ง์ ์ด ์์ต๋๊น?
ํ์คํ์ง ์์ง๋ง Grafana 6.1.3์์ ์ด์ ๊ด๋ จ๋ ์๋ก์ด ๊ฒ์ ์ฐพ์ ์ ์์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ด ๊ตฌํ๋๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ๋ Grafana๋ฅผ ์ ๋ฌด์ ์ค์ํ ๊ฒฝ๊ณ ์ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ๊ฐ ์๊ฐ์ ํ์ํ์ง ์์ ๊ฒฝ์ฐ ํ์ฌ ์ฌ๋๋ค์๊ฒ ์๋ฆฌ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
+1, ์ด๊ฒ์ด ๊ตฌํ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
+1 ์ฃผ๋ง์ ์ง์ ๊ฐ๊ธฐ ์ ์ ๋ชจ๋ํฐ๋ง์ ์ผ์ ์ค์งํ๋ ๊ฒ์ ์์์ต๋๋ค. ์์๋๋ ํ๋์ ๋ํด ์์์ผ์ ์์ฒ ๊ฐ์ ์ด๋ฉ์ผ๋ก ๋์์ต๋๋ค.
+1 ์ต๋ํ ๋นจ๋ฆฌ ๊ตฌํํ์ญ์์ค - ์ด๊ฒ์ด ๊ณง ๊ตฌํ๋์ง ์์ผ๋ฉด ๋ชจ๋ ๊ฒ์ thingsboard๋ก ์ด์ํด์ผ ํ ๊ฒ์ ๋๋ค https://thingsboard.io/
@torkelo ์ด ๋ฌธ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํด ์ฃผ์๊ฒ ์ต๋๊น? ์ด๋ค ์ง์ ์ด ์์ต๋๊น?
์๋ ํ์ธ์, ๊ทธ๊ฒ์ ๊ตฌํํ๊ณ ํ ๋ฆฌํ์คํธ๋ฅผ ํ ์ ์๋ ์ถฉ๋ถํ ์ง์์ ๊ฐ์ง ์ฌ๋์ด ์์ต๋๊น?
์ด ๊ธฐ๋ฅ์ "์ป๊ธฐ ์ํด" ๋ด๊ฐ ํ ์ผ์ ๋งํ ์ ์์ต๋๋ค. ์ด ์ฝ๋๋ ๋ ์ ์ ์ด๊ธฐ ๋๋ฌธ์ ๊ณต์ ํ ์๋ ์์ง๋ง ์์ด๋์ด๋ ๊ณต์ ํ ์ ์์ต๋๋ค. ์ด ์์ด๋์ด๋ ๋ ์ ์ ์ธ ํฉ์ * *์ ๋์์ด ์๋๋๋ค.
๋ด๋ณด๋ธ JSON ํ์ด๋ก๋์์ ์ ์ฒด ๋์๋ณด๋๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด Grafana REST API๋ฅผ ์ฌ์ฉํ๋ cron-scheduled [SomeCloudProviderOfYourChoice]Lambda ํจ์ ๋ช ๊ฐ๋ฅผ ๊ตฌํํ์ต๋๋ค. ๊ทธ์ ๋ฐ๋ผ ์์คํ ์ ํ์ฑ/์ ํด ๊ธฐ๊ฐ์ ๋ฐ๋ผ ๊ฒฝ๊ณ ๋ฐ ์๊ณ๊ฐ์ด ํฌํจ๋ฉ๋๋ค(์ ํฌ ์์คํ ์ ๋งค์ผ 8-10์๊ฐ ํ์ฑํ๋ฉ๋๋ค. ์ฃผ๋ง ์ ์ธ). ๊ทธ๊ฒ์ ๊ฝค ์ ์๋ํฉ๋๋ค.
ํ์ง๋ง.
Grafana Web GUI์์ ๋์๋ณด๋๋ก ์์ ํ ๋๋ง๋ค JSON ๋์๋ณด๋๋ฅผ ๋คํํ๊ณ "Grafana ์ค์ผ์ค๋ฌ" ์ ์ฅ์์ ์ปค๋ฐํ๋ ๊ฒ์ MANDATORY ์ ๋๋ค. ํ์ด๋ก๋(South Park S11E09) ๋คํ์ ์์ด๋ฒ๋ฆฌ๋ฉด ์ค์ผ์ค๋ฌ๊ฐ ์์๋ ๋๋ง๋ค ๋ณ๊ฒฝ ์ฌํญ์ด ์์ค๋ฉ๋๋ค(๋ณต๊ตฌ ๊ฐ๋ฅํ์ง๋ง ๊ณ ํต์ค๋ฝ์ต๋๋ค). ๊ทธ๋ฆฌ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ฑ/์ ํด JSON ๋คํ ๋ชจ๋์ ์ ํํด์ผ ํฉ๋๋ค. ์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋ฐฐ์ ๋ ธ๋ ฅ์ ์๋ฏธํฉ๋๋ค(์ฐจ์ด๊ฐ ์ ์ ํ๊ฒ ๋ฌธ์ํ๋์ง ์์ ๊ฒฝ์ฐ ๋ ๋ง์ด). ํจ๊ณผ์ ์ผ๋ก ์ด "์๋ฃจ์ "์ ์ ๋ฌธ์ํ๋๊ณ ์ ์ง ๊ด๋ฆฌ๋๋ฉฐ ๊ฐ์์ ์ด๊ณ ์๊ฒฉํ๊ฒ ์ค์๋๋ _ํ๋ก์ธ์ค_๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฅ๊ธฐ์ ์ผ๋ก๋ ์ด ๊ธฐ๋ฅ์ด ์ ํ ์๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ง์ฆ๋ ์ ์์ต๋๋ค. ๊ฒฝ๊ณ ์๊ณ๊ฐ์ ๋๋ฌด ๋๋ฌผ๊ฒ ๋ณ๊ฒฝํ์ฌ _process_ ์ค๋ฒํค๋๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๊ทธ๋ค์ง ๋ฒ๊ฑฐ๋กญ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์จ๋ ...
์ ๋ ์ง๊ธ SQLite(์ ๊ณต์์ ์ํด ์ํ๋จ) ์์์ ์คํ๋๋ Aiven Grafana์ ํจ๊ป ์์ ํ๊ณ ์์ผ๋ฏ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ณด๋ค ๋์์ ์ด๊ณ ๊ธฐ๋ฅ์ด ํ๋ถํ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋ฆฌ๊ฑฐ+์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์์ Grafana Web GUI๋ฅผ ํตํ ๋ถ๋ถ ์ ๋ฐ์ดํธ๋ก ์ ์ฒด ํ๋ก์ธ์ค๋ฅผ ๋ณด๋ค ์ํํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๊ณ์ ์ง์ผ๋ด ์ฃผ์ธ์, ํ์ด์ ๋น๋๋ค!
์๋ฃํ๋ ค๋ฉด ์ด๊ฒ์ ์ถ๊ฐํ์ญ์์ค. ์ด๊ฒ์ ๋ค๋ฅธ ํ๋ซํผ์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐ ๋ฐ๋์ ํ์ํฉ๋๋ค.
T-SQL ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ GRAFANA๋ฅผ ์์ด๋ ๊ฒ์ ๋๋ค(ํด๊ฒฐ ๋ฐฉ๋ฒ).
SELECT timestamp AS time,
CASE
WHEN DATEPART(HOUR, SYSDATETIME()) NOT IN (0,1,2,3,4,5,6)
THEN COUNT(document_number)
ELSE 0
END AS Receipts
FROM GRAFANA.dbo.ReceiptsErrorsHistory
WHERE timestamp >= DATEADD(DAY, -7, GETDATE())
AND document_type = 'receipt'
GROUP BY timestamp
์ด ๊ตฌํ์ ์ํ๋ ๋ฌด์์ ๋๊น? ํ์ฌ ๊ฒฝ๊ณ ์ seyren ๋ฐ cabot์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ Grafana ๊ฒฝ๊ณ ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๊ณ ํฉ๋๋ค. ์๊ฐ ์ ํ์ด ์์ผ๋ฉด ์์ผ๋ก ๋์๊ฐ ์ ์์ต๋๋ค.
Elastic search์ ๊ฒฝ์ฐ ์ด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
๋ ์ง ์ํ ์ฌ์ฉ : https://www.elastic.co/guide/en/elasticsearch/client/net-api/7.x/date-math-expressions.htm.
์๋ฅผ ๋ค์ด ๋ฒ์(AM 00:00 ~ PM:12:00)์ ๋ฐ์ดํฐ๋ฅผ ์ํ๋ฉด @timestamp :[now/d TO now/d+12h]๊ฐ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
@sukjoonhong ์๋์ด ์๋๋ค์. ์คํฌ๋ฆฐ์ท์ด ์์ต๋๊น?
cron์ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ผ๊ณ ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋ฐค์ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ๋๋ ค๋ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค(๋๋ ๊ฐ๋ณ ๊ฒฝ๊ณ ๋ฅผ ์คํฌ๋ฆฝํ ํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋ ์ ์๋ ๊ฒฝ์ฐ).
grafana ์์์ crontab์์ ๋ค์์ ์ถ๊ฐํ์ต๋๋ค.
1 * * * * root /root/do-alert-thing.sh
๊ทธ๋ฆฌ๊ณ /root/do-alert-thing.sh์์:
#!/bin/bash
#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)
#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)
Somewhere/Sometime ์ ์๊ฐ๋๋ก ๋ฐ๊พธ๊ณ (ํ: ๋ชฉ๋ก์ ๋ํด timedatectl list-timezones
์คํ) [email protected]
๋์ ์๊ฒฉ ์ฆ๋ช
์ ์ถ๊ฐํ์ธ์. ์ด ๊ด๋ฆฌ ๋์ ์ ์ค๋ช
์์ ๋ฐ๋ผ ๊ธฐ๋ณธ ์ธ์ฆ ๋ชจ๋์์๋ง ์๋ํฉ๋๋ค.
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@Atem18
์ ๊ฒฝ์ฐ์๋ ์ด ์ฟผ๋ฆฌ๊ฐ ํจ๊ณผ๊ฐ ์์์ต๋๋ค.
@sukjoonhong ๊ฐ์ฌํฉ๋๋ค ํ๋ฒ ํด๋ณด๊ฒ ์ต๋๋ค!
cron์ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ผ๊ณ ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋ฐค์ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ๋๋ ค๋ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค(๋๋ ๊ฐ๋ณ ๊ฒฝ๊ณ ๋ฅผ ์คํฌ๋ฆฝํ ํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋ ์ ์๋ ๊ฒฝ์ฐ).
grafana ์์์ crontab์์ ๋ค์์ ์ถ๊ฐํ์ต๋๋ค.
1 * * * * root /root/do-alert-thing.sh
๊ทธ๋ฆฌ๊ณ /root/do-alert-thing.sh์์:
#!/bin/bash #Enable at 6am local TZ='Somewhere/Sometime' date +%H | grep '06' && ( curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json' ) #Disable at 9pm local TZ='Somewhere/Sometime' date +%H | grep '21' && ( curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json' )
Somewhere/Sometime ์ ์๊ฐ๋๋ก ๋ฐ๊พธ๊ณ (ํ: ๋ชฉ๋ก์ ๋ํด
timedatectl list-timezones
์คํ)[email protected]
๋์ ์๊ฒฉ ์ฆ๋ช ์ ์ถ๊ฐํ์ธ์. ์ด ๊ด๋ฆฌ ๋์ ์ ์ค๋ช ์์ ๋ฐ๋ผ ๊ธฐ๋ณธ ์ธ์ฆ ๋ชจ๋์์๋ง ์๋ํฉ๋๋ค.์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋๋ ์ด๊ฒ์ ์๋ํ๊ณ ์๋ํ์ง๋ง grafana ui์์๋ ํ ์๊ฐ ๋์๋ง ์ผ์ ์ค์ง๋๋ค๊ณ ๋งํฉ๋๋ค. ๊ทธ๋์ ๋๋ ....๊น์ง ๋งค์๊ฐ ๋ฐ๋ณต๋๋ crontab์ ๋ง๋ค์ด์ผ ํ ๊ฒ์ ๋๋ค.
๋ฐฑ์ ์คํฌ๋ฆฝํธ๊ฐ ์คํ ์ค์ธ์ง ํ์ธํ๋ ps ๋ช ๋ น๊ณผ ๊ฐ์ด ์คํฌ๋ฆฝํธ์ ์ถ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก prometheus on/off ๋ฉํธ๋ฆญ์ ์์ฑํ๋ ๋ค๋ฅธ ๊ฐ๋์์ ์ ๊ทผํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋์๋ณด๋์ ๋ฐฑ์ ์ํ๋ฅผ ํ์ํ๋ "๋ฐฑ์ ํ์ฑ"์ด ์๊ณ ๋ชจ๋ ์ฟผ๋ฆฌ ๋ฐ ๊ฒฝ๊ณ ๊ฐ ์๋ ๊ธฐ๋ณธ ํจ๋์ ๋ฐฑ์ ๋ฉํธ๋ฆญ์ด 1์ธ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํ์ง ์๋ ์กฐ๊ฑด ํ์ธ์ ์ถ๊ฐํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๊ธฐ๋ก ๋ฉํธ๋ฆญ ๋ฐ์ดํฐ๋ฅผ ๊ณ ๋ คํ ๋ ๋ฐฑ์ ์ด ์์๋ณด๋ค ์ค๋ ์คํ๋๋ ๊ฒฝ์ฐ ์คํ๋๋ ๋ณ๋์ ๊ฒฝ๊ณ ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
cron์ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ผ๊ณ ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋ฐค์ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ๋๋ ค๋ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค(๋๋ ๊ฐ๋ณ ๊ฒฝ๊ณ ๋ฅผ ์คํฌ๋ฆฝํ ํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋ ์ ์๋ ๊ฒฝ์ฐ).
grafana ์์์ crontab์์ ๋ค์์ ์ถ๊ฐํ์ต๋๋ค.
1 * * * * root /root/do-alert-thing.sh
๊ทธ๋ฆฌ๊ณ /root/do-alert-thing.sh์์:#!/bin/bash #Enable at 6am local TZ='Somewhere/Sometime' date +%H | grep '06' && ( curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json' ) #Disable at 9pm local TZ='Somewhere/Sometime' date +%H | grep '21' && ( curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json' )
Somewhere/Sometime ์ ์๊ฐ๋๋ก ๋ฐ๊พธ๊ณ (ํ: ๋ชฉ๋ก์ ๋ํด
timedatectl list-timezones
์คํ)[email protected]
๋์ ์๊ฒฉ ์ฆ๋ช ์ ์ถ๊ฐํ์ธ์. ์ด ๊ด๋ฆฌ ๋์ ์ ์ค๋ช ์์ ๋ฐ๋ผ ๊ธฐ๋ณธ ์ธ์ฆ ๋ชจ๋์์๋ง ์๋ํฉ๋๋ค.
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.๋๋ ์ด๊ฒ์ ์๋ํ๊ณ ์๋ํ์ง๋ง grafana ui์์๋ ํ ์๊ฐ ๋์๋ง ์ผ์ ์ค์ง๋๋ค๊ณ ๋งํฉ๋๋ค. ๊ทธ๋์ ๋๋ ....๊น์ง ๋งค์๊ฐ ๋ฐ๋ณต๋๋ crontab์ ๋ง๋ค์ด์ผ ํ ๊ฒ์ ๋๋ค.
์ ๊ทธ๋ฐ ํ๋์ด ๋ณด์ด๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ฅผ ์ํด ์์นจ cron ๋ผ์ธ์ ์ฌ์ฉํ์ฌ ์ผ์ ์ค์ง๋ฅผ ํด์ ํ ๋๊น์ง ์ผ์ ์ค์ง๋๊ณ 9์๊ฐ ๋์ ์ผ์ ์ค์ง๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
cron์ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ผ๊ณ ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋ฐค์ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ๋๋ ค๋ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค(๋๋ ๊ฐ๋ณ ๊ฒฝ๊ณ ๋ฅผ ์คํฌ๋ฆฝํ ํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋ ์ ์๋ ๊ฒฝ์ฐ).
grafana ์์์ crontab์์ ๋ค์์ ์ถ๊ฐํ์ต๋๋ค.
1 * * * * root /root/do-alert-thing.sh
๊ทธ๋ฆฌ๊ณ /root/do-alert-thing.sh์์:#!/bin/bash #Enable at 6am local TZ='Somewhere/Sometime' date +%H | grep '06' && ( curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json' ) #Disable at 9pm local TZ='Somewhere/Sometime' date +%H | grep '21' && ( curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json' )
Somewhere/Sometime ์ ์๊ฐ๋๋ก ๋ฐ๊พธ๊ณ (ํ: ๋ชฉ๋ก์ ๋ํด
timedatectl list-timezones
์คํ)[email protected]
๋์ ์๊ฒฉ ์ฆ๋ช ์ ์ถ๊ฐํ์ธ์. ์ด ๊ด๋ฆฌ ๋์ ์ ์ค๋ช ์์ ๋ฐ๋ผ ๊ธฐ๋ณธ ์ธ์ฆ ๋ชจ๋์์๋ง ์๋ํฉ๋๋ค.
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.๋๋ ์ด๊ฒ์ ์๋ํ๊ณ ์๋ํ์ง๋ง grafana ui์์๋ ํ ์๊ฐ ๋์๋ง ์ผ์ ์ค์ง๋๋ค๊ณ ๋งํฉ๋๋ค. ๊ทธ๋์ ๋๋ ....๊น์ง ๋งค์๊ฐ ๋ฐ๋ณต๋๋ crontab์ ๋ง๋ค์ด์ผ ํ ๊ฒ์ ๋๋ค.
์ ๊ทธ๋ฐ ํ๋์ด ๋ณด์ด๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ฅผ ์ํด ์์นจ cron ๋ผ์ธ์ ์ฌ์ฉํ์ฌ ์ผ์ ์ค์ง๋ฅผ ํด์ ํ ๋๊น์ง ์ผ์ ์ค์ง๋๊ณ 9์๊ฐ ๋์ ์ผ์ ์ค์ง๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
๋ด๊ฐ ๊ทธ ํ๋์ ๋ณด๊ณ ์๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋ผ ๋ฌธ์ ๊ทธ๋๋ก grafana UI์์ ๋งํฉ๋๋ค. 1์๊ฐ ๋์ ์ผ์ ์ค์ง๋์์ต๋๋ค. ๊ทธ๋์ ๋๋ ์ผ์ ์ ์ง ํธ๋ฆญ์ด 1์๊ฐ ๋์๋ง ์๋ํ๋ค๊ณ ๊ฐ์ ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ด ๊ฑฐ์ง์ด๋ผ๋ฉด ์ ์ ํ๊ฒ ์ต๋๋ค.
๋ด๊ฐ ๊ทธ ํ๋์ ๋ณด๊ณ ์๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋ผ ๋ฌธ์ ๊ทธ๋๋ก grafana UI์์ ๋งํฉ๋๋ค. 1์๊ฐ ๋์ ์ผ์ ์ค์ง๋์์ต๋๋ค. ๊ทธ๋์ ๋๋ ์ผ์ ์ ์ง ํธ๋ฆญ์ด 1์๊ฐ ๋์๋ง ์๋ํ๋ค๊ณ ๊ฐ์ ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ด ๊ฑฐ์ง์ด๋ผ๋ฉด ์ ์ ํ๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ๋จ์ง ๊ฒฝ๊ณ ์ํ์ผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฒฝ๊ณ ๊ฐ ์ ์์ด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
ํ ์๊ฐ ๋์ ์ผ์ ์ค์ง๋ ๊ฒฝ์ฐ "1์๊ฐ ๋์ ์ผ์ ์ค์ง๋จ"์ด๋ผ๊ณ ํ์๋ฉ๋๊น?
๋ฐ๋ณด์ผ, ๋ด๊ฐ ์๋ชป ํด์ํ์ ๊ฒ ๊ฐ์ ๐ก
์ค๋ช ๊ฐ์ฌํฉ๋๋ค!
4๋ ํ 6.6.x > ๋ฒ์ ์์ ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ ๊ณํ์ด ์์ต๋๊น?
์ฐ๋ฆฌ๋ ์ฌ์ ํ ์ด๊ฒ์ด ๊ตฌํ๋๊ธฐ๋ฅผ ๊ณ ๋ํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ํ๊ฐํ ์ฌ์ฉ์, ํด๊ฐ ์ค์ด๊ฑฐ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ฌ์ฉ์๊ฐ ์๋ตํ ํ์๊ฐ ์์ ๋ ์๋ฆผ์ผ๋ก ์คํธ์ ๋ฐ๋ ๊ฒฝ์ฐ ๋งค์ฐ ๋นํจ์จ์ ์ธ ์๋ฆผ ์์คํ ์ ๋๋ค.
๋ค์ํ ์๊ฐ(์ ํฌ์ ๊ฒฝ์ฐ ์ ๋ฌด ์๊ฐ)์ ์๋ฆผ์ผ๋ก ์ค์ ํ๋ ์ต์ ์ ํฌํจํ๊ณ ์ถ์ต๋๋ค.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ผ๋ถ ๋ฐฑ์๋์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์กด์ฌํ์ง๋ง(์ ๋ ์ฟผ๋ฆฌ๋ฅผ ํตํด ํน์ ์๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ์ด๋ฒคํธ๋ฅผ ํํฐ๋งํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ MySQL์ฉ์ ์ฌ์ฉํฉ๋๋ค) ์ด๊ฒ์ "์ ์ ํ ๊ธฐ๋ฅ"์ผ๋ก ๊ฐ๋ ๊ฒ์ ํ์คํ ํ๋ฌ์ค๊ฐ ๋ ๊ฒ์ ๋๋ค.
๋ํ ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ด ๊ธฐ๋ฅ์ ๋ณด๊ณ ์ถ์ต๋๋ค. '๊ทผ๋ฌด ์๊ฐ ์ดํ' ๊ธฐ๊ฐ ๋์ ๊ฒฝ๊ณ ๋ฅผ ํํฐ๋งํ๊ฑฐ๋ ์ต์ ํ ์ ์์ผ๋ฉด ๋์์ด ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์คํ 8์ ์ดํ์ ๋ค์ ๋ ์ค์ 8์ ์ด์ ์ ๋ฐ์ํ๋ ๊ฒฝ๊ณ ๋ฅผ ํํฐ๋งํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ง๊ธ์ ๋ชจ์ต์ ๋ฐค์ ๋๋๊ฐ ์ฐ๋ ์์ด์ ๊ฐ๋ค. ๋๋ ๊ทธ๋ฅ ์๋์ ํด๋ํฐ์ ๋ฃ์๋ค. ๊ฒฝ๊ณ ๋ ์ธ๋ชจ๊ฐ ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์ฐ๋ฆฌ๋ Grafana์ Acknowledgement ๊ธฐ๋ฅ์ด ์ ์คํ ํ์ํฉ๋๋ค. Acknowledge Alert ๊ธฐ๋ฅ์ด ์์ผ๋ฉด Critical Production Service ํ๊ฒฝ์์ Grafana Alerting ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Grafana์์ ์ด ๊ธฐ๋ฅ์ ๋ณด๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค. ํน์ ์๊ฐ ๋์์ ๊ฒฝ๊ณ ๋ง ์ฐ๋ฆฌ์ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ทผ๋ฌด ์๊ฐ์ +-2์๊ฐ์ ๋๋ค. ์ผ๊ฐ์๋ ๋ชจ๋ํฐ๋ง๋๋ ๊ฐ์ด (๊ณํ๋) ์์นํ์ฌ ํ์ฌ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํฉ๋๋ค :-(
๊ธฐ๋ฅ ์์ฒญ ์ +1
ํน์ ์๊ฐ ์ง์ญ์ ๋ํ ์๋์ ์ถ๊ฐํ ์ ์๋ค๋ฉด ์ด๊ฒ์ ํ๋ฅญํ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค. ์๋ ๊ท์น์ ํน์ ์๊ฐ ์์ญ์์๋ง ์๋ํด์ผ ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ๊ธฐ๊ฐ๊ณผ ๊ด๋ จํ์ฌ ๋ค๋ฅธ ์๋ฆผ ์ฑ๋์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๊ธฐ๊ฐ์ ์ฌ์ฉ์๊ฐ ์ ์ํ๊ณ ์๋ฆผ ์ฑ๋์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๋๋ ๋๋ถ๋ถ์ ๋๊ธ์ ํ์ด๋ณด์์ผ๋ฏ๋ก ๋๊ตฐ๊ฐ ๋ค์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ช ํํ ์ค๋ช ํ๋ค๋ฉด ์ฌ๊ณผํ์ง๋ง ๋๋ ๊ทธ๊ฒ์ ๋์น์ฑ์ง ๋ชปํ์ต๋๋ค.
๊ฒฝ๊ณ ์ ๋ํ ์๊ฐ ์ ํ์ ์ง์ํ๋ ์ด์ ๋ ํฌ์ ๋ฐ์ดํฐ ๊ณ์ด ๋๋ฌธ์ ๋๋ค. ๋งค์ผ ์ค์ 8์ ๋ธ๋ฆฌํ์ ์ํ ๋ฐ์ดํฐ๋ฅผ ์ค๋นํ๊ธฐ ์ํด ์์ ๊ณผ ์ค์ 2์ ์ฌ์ด์ ๋ฐฐ์น ์์ ์ด ํ๋ฃจ์ ํ ๋ฒ ์คํ๋๋ ์ค์ ์ ๊ณ ๋ คํ์ญ์์ค. "์์ ์๋ฃ"์ ๋จ์ผ ๋ฐ์ดํฐ ํฌ์ธํธ๋ ์๋ฃ ์ ๋ฐฉ์ถ๋ฉ๋๋ค.
์๊ฐ ์ ํ ์์ด ์ด์ ๋ํด ๊ฒฝ๊ณ ํ๋ ์ข์ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
"์ง๋ X์๊ฐ ๋ด์ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ์์ผ๋ฉด ๊ฒฝ๊ณ "๋ X์๊ฐ ๋์ ์๋ํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด "์ง๋ 24์๊ฐ ๋ด์ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ์์"์ ๋ํด ๊ฒฝ๊ณ ํ๋ฉด ๋ชจ๋ ์์ ์ด ๋งค์ผ ์ฌ๋ฐ๋ฅด๊ฒ ์คํ๋๋ ํ ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์คํจํ๋ฉด ์ค์ 11์์ ์์ ์ ๋ค์ ์คํํ์ฌ ๋ฐ๋ผ์ก์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ค์๋ ์ ๋ํ ๋ด ๊ฒฝ๊ณ ๊ฐ ๊นจ์ก์ต๋๋ค(์ค์ 11์ ์ดํ๊น์ง ํธ๋ฆฌ๊ฑฐ๋์ง ์๊ธฐ ๋๋ฌธ์). ์ด๊ฒ์ ์๊ฐ ์ ํ์ ๋ํ ๋์ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค. ์คํ ๊ฐ๋ฅํ ์ ์ผํ ๊ฒฝ๋ณด๋ ์ค์ 2์๋ถํฐ ์ค์ 8์๊น์ง ๊ฒฝ๋ณด ํ๊ฐ ๋ ผ๋ฆฌ๋ฅผ ์ผ๊ณ "์ง๋ 8์๊ฐ ๋ด์ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ์๋ ๊ฒฝ์ฐ"์ ๊ฒฝ๋ณด๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๋๋ค.
์ด ์ฌ์ฉ ์ฌ๋ก๋ ๊ทผ๋ฌด ์๊ฐ ๋์ ๊ฒฝ๊ณ ๋ฅผ ์ต์ ํ๊ฑฐ๋ ํ๋ฃจ ์ค ํน์ ์๊ฐ ์ฃผ๋ณ์ ์์์ ์ค์ด๋ ๊ฒ์ด ์๋๋๋ค. 24/7 ์์ ์๋์๋ ์๊ฐ ์ ํ ์์ด๋ ์์ ๊ฒฝ๊ณ ๋ฅผ ์ ํํ๊ฒ ํํํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ +1.
์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ํ๋ฃจ/์๊ฐ/์ฃผ 1ํ ์ง๋ N์ผ ๊ฐ์ ์ ๋ณด๊ฐ ํฌํจ๋ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๋ด์ผ ํฉ๋๋ค. ๋ด์ค๋ ํฐ๋ ๋ฐ๋์ ์ ํด์ง ์๊ฐ(8:00, 13:00 ๋ฑ)์ ์์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฒ์ด ๋ณต์กํฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก HTTP Api๋ฅผ ํตํด ๊ฒฝ๊ณ ๋ฅผ ๊ด๋ฆฌํ ๊ณํ์ด์ง๋ง grafana์ ํด๋ผ์ด์ธํธ ๋ถ๋ถ์์ ์ด ๊ธฐ๋ฅ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค. ์: ์ ์ง ๊ด๋ฆฌ ์๊ฐ์ด ์๋ PROD ๋คํธ์ํฌ - ์ด์ ์ด ์ ์ง ๊ด๋ฆฌ ๊ธฐ๊ฐ ๋์ ์ผ๋ถ ์๋ฆผ์ ์ค์งํ๋ ค๊ณ ํฉ๋๋ค. ์: ํน์ ์๊ฐ ํ๋ ์ ์ฌ์ด์ ๋งค์ฃผ ์ผ์์ผ ๋ฐค. ํ์ฌ๋ก์๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฉด ์ ๋ง ์ข์ํ ๊ฒ์ ๋๋ค. 24์๊ฐ ๋ฒ์์ ํน์ ๊ธฐ๊ฐ์ ๋ํ ์๋ฆผ์ ์ค์งํ๊ณ ์ถ์ต๋๋ค.
+100000
๐ +1
Grafana๋ฅผ ์ง์ ํ ์๋ฆผ ์์ง์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ผญ ํ์ํ ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ค์ ์๋น์ค๋ ์ ์ ์ํ๋ฅผ ์ ์งํ์ง๋ง ์ง์ ๋ ์ผ์ ์ ๋ฐ๋ผ ๋ฉํธ๋ฆญ์ด ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
ํด๋น ์ผ์ ๋์ ๊ฒฝ๋ณด๋ฅผ ์ ์ดํ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
+1
์ด๊ฒ์ ํด๋ผ์ด์ธํธ ์ธก์ ์์ผ๋ฉด ์ข์ ๊ธฐ๋ฅ์ ๋๋ค. ์ง๊ธ ๋น์ฅ์ Logstash์์ hourOfDay, dayOfWeek์ ๊ฐ์ ํ๋๋ฅผ ํ์์์ผ ๋ฉํธ๋ฆญ ์ธํธ์ ์ถ๊ฐ ๋ฉํธ๋ฆญ์ ์ถ๊ฐํ๊ณ ๊ฒฝ๊ณ ๊ท์น์ ์ถ๊ฐํ๊ธฐ ์ํด ES์ ํ์ํด์ผ ํฉ๋๋ค.
CPU ์ฌ์ฉ๋์ธ ํ๊ท ๋ฉํธ๋ฆญ A๊ฐ 1m ๋์ 90%๋ฅผ ์ด๊ณผํ๋ฉด ์๋ฆผ
๊ทธ๋ฆฌ๊ณ
๋์ผํ ๋ฌธ์์ ์ต๋ hourOfDay์ธ metric B๊ฐ RANGE ์ฌ์ด์ธ ๊ฒฝ์ฐ.
์๋ํ์ง๋ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ ๊ฒ ์๋ํ๋ ๊ฒ์ด ์ด์ํฉ๋๋ค.
ํนํ Grafana ์ดํ๋ก ๋ค๋ฅธ ์์ญ์์ 2016๋
์ดํ ์์ฒญ๋๊ฒ ๋ฐ์ ํ์ง๋ง 2016๋
์ดํ๋ก๋ ์ํ์ง ์ํ์
๋๋ค.
cron์ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ผ๊ณ ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋ฐค์ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ๋๋ ค๋ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค(๋๋ ๊ฐ๋ณ ๊ฒฝ๊ณ ๋ฅผ ์คํฌ๋ฆฝํ ํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋ ์ ์๋ ๊ฒฝ์ฐ).
grafana ์์์ crontab์์ ๋ค์์ ์ถ๊ฐํ์ต๋๋ค.
1 * * * * root /root/do-alert-thing.sh
๊ทธ๋ฆฌ๊ณ /root/do-alert-thing.sh์์:
#!/bin/bash #Enable at 6am local TZ='Somewhere/Sometime' date +%H | grep '06' && ( curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json' ) #Disable at 9pm local TZ='Somewhere/Sometime' date +%H | grep '21' && ( curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json' )
Somewhere/Sometime ์ ์๊ฐ๋๋ก ๋ฐ๊พธ๊ณ (ํ: ๋ชฉ๋ก์ ๋ํด
timedatectl list-timezones
์คํ)[email protected]
๋์ ์๊ฒฉ ์ฆ๋ช ์ ์ถ๊ฐํ์ธ์. ์ด ๊ด๋ฆฌ ๋์ ์ ์ค๋ช ์์ ๋ฐ๋ผ ๊ธฐ๋ณธ ์ธ์ฆ ๋ชจ๋์์๋ง ์๋ํฉ๋๋ค.์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์๋
๊ฐ๋ณ ์๋ฆผ URL์ ์ป๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์ค ์ ์์ต๋๊น?
์๋
๊ฐ๋ณ ์๋ฆผ URL์ ์ป๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์ค ์ ์์ต๋๊น?
4๋ ์ด ์ง๋ ํ์๋ ๋ถ๋ช ํ ์๊ตฌ๋์๋ ์ด ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ง ์์ ๊ฒ์ด ์ ๊ฐ์ ๋๋ค. ์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ผ์ฐํฐ๊ฐ ๋๋๋ก ๋ค์ ์์๋์ด์ผ ํ๋ ๊ฐ๋จํ ํ ์๋ํ์ ๋๋ค(ISP์ ๊ฒ์ด๋ฉฐ ๊ฐ๋ ์๊ฐ์ 1์ฃผ์ผ ์ด์ ์ง์๋ ์ ์์). ๋งค์ผ ๋ฐค ๋ผ์ฐํฐ๋ฅผ ์ฌ์ค์ ํ๋ ๋ค์ด์ผ์ด ์๋ ๊ฐ๋จํ ์์ผ ์ด๋ํฐ๊ฐ ์์ต๋๋ค. ๊ทธ๋์ ๋งค์ผ ๋ฐค ํ ๋ ๊ทธ๋จ์์ ๋ด ์ผ์๊ฐ ๋ค์ด๋๋ค๋ ๊ฒฝ๊ณ ๋ฅผ ๋ง์ด ๋ฐ์ต๋๋ค. ํน์ ์๊ฐ ๊ฐ๊ฒฉ ๋์ ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ๋ ๊ฐ๋จํ ๊ธฐ๋ฅ์ด ์ ์ฉํ ๊ฒ์ ๋๋ค.
๋งค์ฐ ์ ๊ตํ ์ค์ผ์ค๋ง์ด ๋ฐ๋ก ํ์ํ์ง ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์์๋ ํ๋ฃจ ์ค ์๊ฐ์ผ ์ ์์ต๋๋ค. ์ดํ ๋จ๊ณ์์ ๋ ๋ณต์กํ ์ผ์ ์ด ์ถ๊ฐ๋จ์ ๋ฐ๋ผ
ํน์ ์๊ฐ์ ๊ฒฝ๊ณ ๋ฅผ ์์ฝํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ด ๊ธฐ๋ฅ์ ๋ํด +1์ ๋๋ค.
grafana๋ ๋ชจ๋๋ก ์์ ์ ์ง์ํฉ๋๊น? ๊ทธ๋ฐ ๋ค์ ID ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํจ๋์์ ์ถ๊ฐ ๋ฉํธ๋ฆญ์ผ๋ก ์ ๋์ค ์๊ฐ์ ์ป์ ์ ์์ด์ผ ํฉ๋๋ค. ๋ชจ๋๋ก ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋์ค ์๊ฐ์ 86400(ํ๋ฃจ์ ์ด ์)์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฒฝ๊ณ ์ ์๊ฐ ์ธก์ ํญ๋ชฉ์ ๋ฒ์ ์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ค๋ฅธ์ชฝ?
์ด ๋ชฉ์ ์ ์ํด ๋ชจ๋๋ก ์ฐ์ฐ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ด๋ ต์ต๋๊น?
๋ฏธ์น ์๋ฆฌ ๊ฐ์ง๋ง ์๋ํ๊ณ ๋ด ์ฌ์ฉ ์ฌ๋ก์์๋ ์ถฉ๋ถํ์ต๋๋ค. ๐
time() % 86400
๊ทธ๋๋ ๋ช ๋ฐฑํ ํดํน์ด ์๋ ๋ ํธ๋ฆฌํ ์๋ฃจ์ ์ด ์๋ค๋ ๊ฒ์ ๊ณ ํต์ ๋๋ค. ๐คฆ
๋ฏธ์น ์๋ฆฌ ๊ฐ์ง๋ง ์๋ํ๊ณ ๋ด ์ฌ์ฉ ์ฌ๋ก์์๋ ์ถฉ๋ถํ์ต๋๋ค. ๐
time() % 86400
๊ทธ๋๋ ๋ช ๋ฐฑํ ํดํน์ด ์๋ ๋ ํธ๋ฆฌํ ์๋ฃจ์ ์ด ์๋ค๋ ๊ฒ์ ๊ณ ํต์ ๋๋ค. ๐คฆ
@ochrstn v6.6.1 ์์ ์ด๊ฒ์ ์๋ํ๋๋ฐ ๋ชจ๋๋ก ์ฐ์ฐ์ด ์ฟผ๋ฆฌ์์ ๋ณธ์ง์ ์ผ๋ก ๋ฌด์๋์์ ๋ ์ด๋ค ๋ฒ์ ์ grafana๊ฐ ์์ต๋๊น?
๋ฏธ์น ์๋ฆฌ ๊ฐ์ง๋ง ์๋ํ๊ณ ๋ด ์ฌ์ฉ ์ฌ๋ก์์๋ ์ถฉ๋ถํ์ต๋๋ค. ๐
time() % 86400
๊ทธ๋๋ ๋ช ๋ฐฑํ ํดํน์ด ์๋ ๋ ํธ๋ฆฌํ ์๋ฃจ์ ์ด ์๋ค๋ ๊ฒ์ ๊ณ ํต์ ๋๋ค. ๐คฆ
@ochrstn v6.6.1 ์์ ์ด๊ฒ์ ์๋ํ๋๋ฐ ๋ชจ๋๋ก ์ฐ์ฐ์ด ์ฟผ๋ฆฌ์์ ๋ณธ์ง์ ์ผ๋ก ๋ฌด์๋์์ ๋ ์ด๋ค ๋ฒ์ ์ grafana๊ฐ ์์ต๋๊น?
v6.6.2 ๐
grafana๋ ๋ชจ๋๋ก ์์ ์ ์ง์ํฉ๋๊น? ๊ทธ๋ฐ ๋ค์ ID ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํจ๋์์ ์ถ๊ฐ ๋ฉํธ๋ฆญ์ผ๋ก ์ ๋์ค ์๊ฐ์ ์ป์ ์ ์์ด์ผ ํฉ๋๋ค. ๋ชจ๋๋ก ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋์ค ์๊ฐ์ 86400(ํ๋ฃจ์ ์ด ์)์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฒฝ๊ณ ์ ์๊ฐ ์ธก์ ํญ๋ชฉ์ ๋ฒ์ ์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ค๋ฅธ์ชฝ?
์ด ๋ชฉ์ ์ ์ํด ๋ชจ๋๋ก ์ฐ์ฐ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ด๋ ต์ต๋๊น?๋ฏธ์น ์๋ฆฌ ๊ฐ์ง๋ง ์๋ํ๊ณ ๋ด ์ฌ์ฉ ์ฌ๋ก์์๋ ์ถฉ๋ถํ์ต๋๋ค.
time() % 86400
๊ทธ๋๋ ๋ช ๋ฐฑํ ํดํน์ด ์๋ ๋ ํธ๋ฆฌํ ์๋ฃจ์ ์ด ์๋ค๋ ๊ฒ์ ๊ณ ํต์ ๋๋ค.
์๋ ํ์ธ์ @ochrstn :) ์ด ์์ ์ ์ํํ ๋ฐฉ๋ฒ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก prometheus๋ฅผ ๋ฐฑ์๋๋ก ์ฌ์ฉ:
hour()
, ์ด๋ ์๊ฐ(0-23)์ ๋ฐํํฉ๋๋ค. ๊ทธ๋ํ์์ ์จ๊ธธ ์ ์์ต๋๋ค.AND
์กฐ๊ฑด์ ์ถ๊ฐํ์ฌhour()
์ฟผ๋ฆฌ๊ฐ ์ํ๋ ๋ฒ์(์: ๊ทผ๋ฌด ์๊ฐ) ์ฌ์ด์ ์๋ ๊ฒฝ์ฐ์๋ง ๊ฒฝ๊ณ ํฉ๋๋ค.day_of_week()
๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.