Redis ๋ ๊ฐ๋ฐ์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์บ์, ์คํธ๋ฆฌ๋ฐ ์์ง ๋ฐ ๋ฉ์์ง ๋ธ๋ก์ปค๋ก ์ฌ์ฉํ๋ ์คํ ์์ค ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์ ์ฅ์์ ๋๋ค.
New Relic์ Prometheus Remote-Write ํตํฉ์ ์ฌ์ฉํ์ฌ Redis ์ธ์คํด์ค๋ฅผ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ์ค์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. Redis ์์คํ ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์ค์ํ ์ฑ๋ฅ ๋ฐ ์ํ ๋ฉํธ๋ฆญ์ ์์ธํ ์ค๋ช ํ๋ ์ฐจํธ๊ฐ ํฌํจ๋ ์๊ฐ์ ๋์๋ณด๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
New Relic์ ์ฌ์ฉํ๋ฉด ๋ค์์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.
- ์ปจํธ๋กค๋ฌ, repo ์๋ฒ ๋ฐ argo ์๋ฒ ํต๊ณ
- ๊ฐ์ ์ค๋ ์ท(#masters, #slaves) + ๋ช ๋ น/์ด ๋ฐ ๋ ธ๋๋ณ ๋ช ๋ น/์ด ์ฐจํธ
- ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ, ๋ ธ๋๋ณ ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ, ๋ ธ๋๋ณ ๋ง์ง๋ง ์ ์ฅ ์ดํ ๋ณ๊ฒฝ ์ฌํญ, ๋ ธ๋๋ณ ๋ง๋ฃ๋ ํค/์ด, ๋ ธ๋์์ ์ฌ์ฉ๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์ฐจ๋จ๋ ํด๋ผ์ด์ธํธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ฐจํธ
- ๋ ธ๋๋ณ ํค์คํ์ด์ค ์ ์ค๋ฅ , ๋ ธ๋๋ณ ์ด๋น ์ ๊ฑฐ๋ ํค, ๋ ธ๋๋ณ ์ด๋น ์ ๋ ฅ ๋ฐ์ดํธ, ์ด๋น ๋คํธ์ํฌ I/O, ๋ ธ๋๋ณ ์ด๋น ์ถ๋ ฅ ๋ฐ์ดํธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ฐจํธ

ํตํฉ ํ์ฑํ
ํตํฉ์ ํ์ฑํํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
Redis ๋ด๋ณด๋ด๊ธฐ ์ค๋ช ์ ์ ๋ฐ๋ผ Prometheus๊ฐ ๋ฉํธ๋ฆญ ์๋ํฌ์ธํธ๋ฅผ ๊ฒ์ํ๋ ๋ฐ ํ์ํ ํ(Pod) ์ฃผ์์ ์ถ๊ฐํ์ญ์์ค.
Prometheus ๋ชจ๋ํฐ๋ง์ ์ค์ ํฉ๋๋ค. Prometheus ์งํ๋ New Relic๊ณผ ํตํฉ๋์ด์ผ ํฉ๋๋ค. Prometheus ์์ด์ ํธ ๋๋ ์๊ฒฉ ์ฐ๊ธฐ ํตํฉ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Prometheus ์งํ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ฐธ์กฐํ์ญ์์ค.
์ค์
Prometheus ์์ด์ ํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ๋ จ์ ํตํฉ ์์ ๋ฉํธ๋ฆญ๋ง ์คํฌ๋ฉํฉ๋๋ค.
์ด ๊ฒฝ์ฐ
redis๋ฌธ์์ด์ ํฌํจํ๋app.kubernetes.io/name,app.newrelic.io/name,k8s-app๋ ์ด๋ธ ์ค ํ๋๋ก ํฌ๋ ๋๋ ์๋ํฌ์ธํธ๋ฅผ ์๋ณํด์ผ ํฉ๋๋ค.๋ค์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉํธ๋ฆญ์ด ์์๋๋ก ์์ง๋๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
FROM Metric SELECT count(*) WHERE metricName LIKE 'redis_%' FACET metricName LIMIT MAXRedis (Prometheus) ํต์คํํธ๋ฅผ ์ค์นํ์ฌ ๊ธฐ๋ณธ ์ ๊ณต ๋ฐ ์๋ฆผ์ ์ก์ธ์คํ์ธ์.
๊ฐ์ ธ์จ ํ์๋ ์์ฐ์ ํธ์งํ๊ฑฐ๋ ๋ณต์ ํ์ฌ ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค.
์ค์
๋์๋ณด๋์ ์ผ๋ถ ์ฐจํธ์๋
redis๋ฌธ์์ด์ ํฌํจํ๋app.kubernetes.io/name,app.newrelic.io/name,k8s-app๋ ์ด๋ธ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ํ(Pod) ๋๋ ์๋ํฌ์ธํธ๋ฅผ ์๋ณํด์ผ ํ๋ ์กฐ๊ฑด์ด ์๋ ์ฟผ๋ฆฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๋ฐ์ดํฐ ์ฐพ๊ธฐ ๋ฐ ์ฌ์ฉ
๋ฉํธ๋ฆญ
Prometheus ๋ฉํธ๋ฆญ์ ์ฐจ์ ๋ฉํธ๋ฆญ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค. NRQL์ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ ํ๊ฑฐ๋ ๋ฐ์ดํฐ ํ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉํธ๋ฆญ, ํจ์ฏ์ ์ฐพ์๋ณด๊ณ ๊ด๋ จ ์ฐจ์๋ณ๋ก ํํฐ๋งํ ์ ์์ต๋๋ค.
์ด ํตํฉ์ ์ํด ๋ ธ์ถ๋๋ ๋ค์ํ ๋ฉํธ๋ฆญ ์งํฉ์ Redis ๋ด๋ณด๋ด๊ธฐ ์ค๋ช ์ ์ ์ ์๋์ด ์์ต๋๋ค.
๋ค์ NRQL ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ New Relic์์ ์์ง๋๋ ๋ฉํธ๋ฆญ์ ์ดํดํ์ญ์์ค.
๊ณ ์ ํ ์ธก์ ํญ๋ชฉ ์ด๋ฆ ๋์ด:
FROM Metric SELECT uniques(metricName) WHERE metricName LIKE 'redis_%' LIMIT MAX๋ฉํธ๋ฆญ ์ ๋ฐ์ดํธ ์ ๊ณ์ฐ:
FROM Metric SELECT datapointcount() WHERE metricName LIKE 'redis_%' FACET metricName๋ฐ์ดํฐ ์์ง ์ถ์ (์ผ์ผ ์์ง, ๋ฐ์ดํธ ๋จ์):
FROM Metric SELECT bytecountestimate() WHERE metricName LIKE 'redis_%' SINCE 1 day ago
์ํฐํฐ
์ด ํตํฉ์ ํตํด ๊ณจ๋ ๋ฉํธ๋ฆญ, ์ํฐํฐ ๋์๋ณด๋, ์ํฌ๋ก๋ ๋ฐ ๊ฐ์์ ๊ฐ์ ์ํฐํฐ ๊ธฐ๋ฅ ์ ์ ์ฒด ์ธํธ๋ฅผ ์ง์ํ๋ Redis ์ํฐํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฌธ์ ์ ํด๊ฒฐ
Redis ๋ด๋ณด๋ด๊ธฐ ๋ฌธ์ ์ ๋ฌธ์ ํด๊ฒฐ ํ์ ๋ฐ๋ผ ๋ฉํธ๋ฆญ์ด ํด๋ฌ์คํฐ์์ ์์๋๋ก ๊ตฌ์ฑ๋์๋์ง ํ์ธํ์ญ์์ค.
Prometheus ํตํฉ์ ๋ํ ํน์ ๋ฌธ์ ํด๊ฒฐ ์ง์นจ์ ํ์ธํ ์๋ ์์ต๋๋ค.