๋ ์ธ์คํด์ค์์ ์ต์ ๋ฒ์ ์ grafana๋ฅผ ์คํํ๊ณ ์์ง๋ง ๋ ์ธ์คํด์ค์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ์น์ธ๋์ง ์์ ์ค๋ฅ๊ฐ ๋ง์ด ๋ฐ์ํฉ๋๋ค. ์ธ์ฆ์ ์ํด ํ์ฌ LDAP๊ฐ ์๋ ๋ด์ฅ db๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ฐ์ดํฐ ์์ค๋ influxdb์ ๋๋ค.
์ด๊ฒ์ ์๋ ค์ง ๋ฒ๊ทธ ๋๋ ์ค์๋์ ๋๊น?
์ข ๋ ์์ธํ ์๋ ค์ฃผ์ค ์ ์๋์?
๋ค๋ฅธ IP/๋๋ฉ์ธ ์ด๋ฆ์ ์ค์ ๋์ด ์์ต๋๊น? ๋๋ฉ์ธ ์ด๋ฆ์ด ๋์ผํ๊ณ ํฌํธ๋ง ๋ค๋ฅธ ๊ฒฝ์ฐ ๊ณ ์ ํ ์ธ์ ์ฟ ํค๊ฐ ํ์ํ๊ณ ๋์๊ฒ ์ฟ ํค๋ฅผ ๊ธฐ์ตํด์ผ ํฉ๋๋ค.
- ๋ณ๊ฐ์ ์ฌ๋ก์
๋๋ค.
- ์ด๋ค ๋์์ด ์น์ธ๋์ง ์์ ๋์์ ์ ๋ฐํ๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๊ทธ๋ํ๋ฅผ ๋ณด๊ฑฐ๋ grafana์ ์ก์ธ์คํ ๋๋ง ๋ฐ์ํฉ๋๋ค.
- ๊ฐ๋ ๋ก๊ทธ์์๋จ
-๋ณ๋์ ๋๋ฉ์ธ
Github๋ฅผ ํตํ oauth๊ฐ ์๋ Grafana 4.6.x์์ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ํญ์ ์ ํํ๊ณ Grafana๋ก ๋์์ฌ ๋ ๋ฌด์์๋ก ๋ณด์ ๋๋ค. ์๋ก ๊ณ ์นจํ๋ฉด ๋ฌธ์ ๊ฐ "์์ "๋์ง๋ง ๋์ค์ ๋ค์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
Grafana v4.6.2(์ปค๋ฐ: 8db5f08)์์ ๋์ผํ ๋ฌธ์ ๊ฐ ํ์๋๊ณ ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํ๋ฉฐ ๊ฐ์๊ธฐ Unauthorized ๊ฒฝ๊ณ ๊ฐ ์์ ๋ฉ๋๋ค(์ผ๋ถ ๊ทธ๋ํ๋ emtpy์ด์ง๋ง ์ผ๋ถ๋ ์ ์์ ์ผ๋ก ํ์๋จ).
์ ๋ Prometheus๋ฅผ DataSource๋ก ์ฌ์ฉํฉ๋๋ค.
๋๋ ๋ํ ์ด๊ฒ์ด ์ฃผ๋ก ๋์ ๋ณด๋๊ฐ ์๋ ์๋ก ๊ณ ์นจ ๋ ๋ ๋ฐ์ํ๋ค๊ณ ์๊ฐํ์ง๋ง ์๋์ผ๋ก ์๋ก ๊ณ ์นจํ๋ฉด ์์ฒด์ ์ผ๋ก ์์ ๋ฉ๋๋ค.
์ฌ๊ธฐ์๋ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์ง๋ง HTTPS ๋ฐ Postgres ๋ฐ์ดํฐ ์์ค๊ฐ ์๋ ๋จ์ผ Grafana ์ธ์คํด์ค๊ฐ ์์ต๋๋ค.
๋์๋ณด๋๋ฅผ ์ด๋ฉด ๋ชจ๋ ๊ทธ๋ํ๊ฐ ์ํธํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋๋ก ์ดํ์ ์ผ๋ถ ๊ทธ๋ํ๋ ์๋ ์๋ก ๊ณ ์นจ ์ "์น์ธ๋์ง ์์" ์ค๋ฅ๋ฅผ ํ์ํ๊ธฐ ์์ํ์ง๋ง ๋ค์(๋๋ ๋ค์ ๋ช ๋ฒ์) ์๋ ์๋ก ๊ณ ์นจ ๋ด์์ ์ ์ ์ํ๋ก ๋ณต๊ตฌ๋์ง๋ง ๋์ค์ ๋ค์ "์น์ธ๋์ง ์์" ์ํ๋ก ๋ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๊ฐ ์๋ ์๋ก ๊ณ ์นจ์์ ์ด ์์์ ๋์.
๊ด๋ จ์ด ์๋์ง ํ์คํ์ง ์์ง๋ง ๋ค์ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์ฐพ์์ต๋๋ค.
lvl=eror msg="ID๋ฅผ ๊ฐ์ง ์ฌ์ฉ์ ๊ฐ์ ธ์ค๊ธฐ ์คํจ" logger=context userId=1 error="์ฌ์ฉ์๋ฅผ ์ฐพ์ ์ ์์"
Grafana ๋ฒ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
lvl=info msg="Grafana ์์" logger=์๋ฒ ๋ฒ์ =5.0.4 commit=7dc36ae ์ปดํ์ผ๋จ=2018-03-28T20:52:41+0900
์ ๋ Firefox๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ๋ ๋์ ๋์๋ณด๋๋ฅผ ์ด์ด๋๊ณ ์๋์ง ์์ ์ํ๋ก ๋๊ณ ํด๋ผ์ด์ธํธ ์ปดํจํฐ(Grafana๋ฅผ ํธ์คํ ํ๋ ์๋ฒ ์ปดํจํฐ๊ฐ ์๋)๊ฐ ๋๋๋ก ์ ์ ๋ชจ๋๋ก ์ ํ๋ฉ๋๋ค.
grafana 5.x์์๋ ๋ ์ด์ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
๋๋ ์ฌ์ ํ Grafana 5.0.4์์ ์ด์ ๋๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค. ๋์ผํ ์ฌ์ฉ์ ๋ฉ์์ง๊ฐ ๋ก๊ทธ์ ์์ต๋๋ค(๋จ์ํ ๋ก์ปฌ Grafana ์ฌ์ฉ์์ ๊ฒฝ์ฐ).
์ ๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฌธ์ ๋ ๋งค์ฐ ํฅ๋ฏธ๋กญ์ต๋๋ค. ๋์ผํ ๋ธ๋ผ์ฐ์ ์์ ๋ฒ์ ์ด ๋ค๋ฅธ ๋ ๊ฐ์ grafana ํ์ด์ง๋ฅผ ์ด๊ณ ์ผ๋ถ ์์ ์ ์ํํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋๋ grafana(v4.3.2 (commit: ed4d170))์ ์ด์ ๋ฒ์ ์ ๊ฐ์ง๊ณ ์๊ณ ์ค๋ซ๋์ grafana.mydomain.com
์์ ์ ์คํ๋์์ต๋๋ค. ์ค๋ ์ ๋ grafana๋ฅผ v5.0.4๋ก ์
๊ทธ๋ ์ด๋ํ๊ณ ์ถ์ต๋๋ค. ์ ์๋ฆฌ์์ ์
๊ทธ๋ ์ด๋ํ๋ ๋์ . ๊ฐ์ ๋จธ์ ์ ์ Grafana๋ฅผ ์ค์ ํ๊ณ ์ํ๋ ๋์๋ณด๋๋ฅผ ๋ณต์ฌํ ๋ค์ ์ด์ ๋์๋ณด๋๋ฅผ ๋ถํดํ๊ณ ์ถ์์ต๋๋ค.
๊ทธ๋์ ๋ด๊ฐ ํ ์ผ:
grafana.mydomain.com
์์ ์ด์ grafana4๋ฅผ ์ด์์ต๋๋ค.grafana.mydomain.com:3005
์ Grafana5 ๋ฐฉ๋ฌธ๋ Grafana ๋ชจ๋ Unauthorized
์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ํ์๋์ง ์์ต๋๋ค.
์
๋ฐ์ดํธ : [ip]:3005๋ก Grafana5๋ฅผ ๋ฐฉ๋ฌธํ์ฌ 3๋จ๊ณ๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค. ์ง๊ธ์ ์ ์๋ํฉ๋๋ค.
๋์ผํ ๋๋ฉ์ธ ๋ด์์ ๋ ๊ฐ์ Grafana ํ์ด์ง๋ฅผ ์ฌ๋ ๋ฐ ์ถฉ๋์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@kehao95 ๋์ผํ ๋ธ๋ผ์ฐ์ ์์ ๋์ผํ ๋๋ฉ์ธ์์ ๋ค๋ฅธ ํฌํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ Grafana ์ธ์คํด์ค๋ฅผ ์ฌ๋ ์ฌ์ฉ ์ฌ๋ก๋ ์ง์๋์ง ์์ต๋๋ค. (Torkel์ ์์์ ์ธ๊ธํ์ต๋๋ค).
@ajardan ์ ๋์ผํ ๋๋ฉ์ธ์ ์๋ ์ธ์คํด์ค์ ๋๊น ์๋๋ฉด ๋ค๋ฅธ ๋๋ฉ์ธ์ ์์ต๋๊น?
@daniellee ์ ๋ ์ค์ ๋ก ํญ์ ํ๋์ ์ธ์คํด์ค๋ง ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ์กฐ์ฌํ๋ ๋์๋ณด๋์ ๊ทธ๋ํ๋ 2๊ฐ์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ์์ค(Prometheus ๋ฐ Cloudera)์์ ๊ฐ์ ธ์จ ๊ฒ์ ๋๋ค.
๋ํ ๋๋๋ก ์ด ์ด์ํ "์น์ธ๋์ง ์์" ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ํ์ด์ง ์๋ก ๊ณ ์นจ์ ๋ฌธ์ ๋ฅผ "์์ "ํฉ๋๋ค. ๊ณต์ Docker ์ด๋ฏธ์ง์์ Grafana v5.1.0(844bdc53a)์ ์คํํฉ๋๋ค. ๋ฐ์ดํฐ ์์ค๋ InfluxDb์ ๋๋ค. Grafana์์ 2๊ฐ์ ์กฐ์ง์ ๋ง๋ค์์ง๋ง ์ค์ ๋ก๋ ํ๋๋ง ์ฌ์ฉํฉ๋๋ค. ๋จ์ผ '๊ด๋ฆฌ์' ์ฌ์ฉ์์ ๋๋ค.
"์ฃผ์ ์ฟผ๋ฆฌ๊ฐ ์คํจํ์ต๋๋ค. ์น์ธ๋์ง ์์"์ด๋ผ๋ ์ ์ค๋ฅ ๋ฉ์์ง์ ํจ๊ป ์ด ์ค๋ฅ๊ฐ ํ ๋ฒ ๋ ๋ํ๋ฉ๋๋ค.
win10 x64์ grafana๋ "Unauthorized"๋ผ๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ ๋๊น์ง ๋ฉฐ์น ๋์ ์๋ฒฝํ๊ฒ ์๋ํ์ต๋๋ค. ๋์์ @dogada ์์ ์ค๋ช ํ ๊ฒ๊ณผ ๋์ผํ๋ฉฐ influxdb์ ํจ๊ป v5.1.0๋ ์คํ ์ค์ ๋๋ค. grafana์ influxdb๋ ๋ชจ๋ ๊ฐ์ ์ปดํจํฐ์ ์์ต๋๋ค.
๊ฐ์ ๋ฌธ์ ์ ๋๋ค. ๋์ปค์ ์๋ ํ๋์ grafana 5.1 ์ธ์คํด์ค. ์น์ธ์ ์ํ Google ์ธ์ฆ.
์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๊ฐ์ ํ๋. ํ์ฌ docker์์ v5.0.3 ์คํ, ๋ด๋ถ ์ธ์ฆ, ๋จ์ผ ๊ด๋ฆฌ์ ์ฌ์ฉ์, nginx๋ฅผ ํตํด ํ๋ก์, ๋ฐ์ดํฐ ์์ค๋ influxdb์ ๋๋ค. ๋์๋ณด๋๋ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์๋ก ๊ณ ์น ๋ ์๋์ผ๋ก ์์ ๋ฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค๋ซ๋์ ํญํ ๋ ์ฃผ๋ก ๋ฐ์
๋์ผํ ์ธ์คํด์ค์ ๋ํด ๋ ๊ฐ์ ํญ์ ์ด ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ํ์๋ฉ๋๋ค.
์ต์ ๋์ปค ์ด๋ฏธ์ง v5.1.2(์ปค๋ฐ: c3c690e21)๋ก ์ ๋ฐ์ดํธํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์
GitHub OAuth๋ฅผ ์ฌ์ฉํ๋ Docker์ Grafana 5.0.0๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. InfluxDB, CloudWatch ๋ฐ ๋ ๋ฐ์ดํฐ ์์ค๊ฐ ํผํฉ๋ ๋์๋ณด๋์์ ์ด๋ฅผ ๋ณด์์ต๋๋ค. (ELB ๋ค์ ํ๋์ ์ธ์คํด์ค, ํ๋์ ํฌํธ, HTTPS.)
์ด ์ค๋ ๋์ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ ์๋ก ๊ณ ์นจ์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ๋ฉด ์ฌ๋ผ์ง๋๋ค. ๋๋ก๋ ๊ธฐ๋ณธ "์น์ธ๋์ง ์์" ์ค๋ฅ ๋ฉ์์ง(๊ทธ๋ํ ๋ก๋ ์คํจ ํฌํจ)์ ๋๋๋ก(๋ ๋๋ฌผ๊ฒ๋) "์ฃผ์ ์ฟผ๋ฆฌ๊ฐ ์คํจํ์ต๋๋ค. ์น์ธ๋์ง ์์" ๋ฉ์์ง๋ ํ์๋ฉ๋๋ค.
~๋ด ์์ฌ์ด OAuth ํ๋ฌ๊ทธ์ธ์ด ์๋ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ผ๊น์?~ ๊ฑฐ์ ํ์คํ๊ฒ ์ธ์ ๋ฐฑ์๋ ๋๋ฌธ์ ๋๋ค. ์๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์ข ๋ ๊น์ด ํ๊ณ ๋ ํ์ ์ฐพ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด ๋ด ๋ก๊ทธ์ ๋ค์๊ณผ ๊ฐ์ ๋ง์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
t=2018-05-16T16:55:39+0000 lvl=eror msg="Failed to get user with id" logger=context userId=2 error="User not found"
์ด๋ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ ์ผํ ์์น๋ ์ด ์ฝ๋ ์ค์ ์์ผ๋ฉฐ ์ด๋ ์ธ์ ๋ฐ ์ธ์ ์ฟ ํค ๊ด๋ฆฌ์ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ธฐ๋ณธ file
๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์
์ ์ ์ฅํ๊ณ ์์ง๋ง ํ์ฌ๋ EFS ๊ณต์ ๋ฅผ ํตํด ์ด๊ฒ์ด ์ ์ฌ์ ์ธ ํฉ๋ณ์ฆ์ธ์ง ๊ถ๊ธํฉ๋๋ค.
๋์ผํ ๋ธ๋ผ์ฐ์ ์์ ๋ ๊ฐ์ ๋ค๋ฅธ Grafana(๋ค๋ฅธ ํฌํธ์์ ์คํ)๋ฅผ ์ด๋ ค๊ณ ํ ๋ ์ด ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค.
์น์ธ๋์ง ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ๋๋๋ก ๋ก๊ทธ์์๋ฉ๋๋ค.
Failed to get user with id log ๋ฉ์์ง
[database]
# Set to true to log the sql calls and execution times.
log_queries = true
๊ฐ์ฌํฉ๋๋ค
@marefr ์ด๋ฌํ ์ค๋ฅ๋ ํญ์ ๋ค์ ๋ ์ฟผ๋ฆฌ ์ค ํ๋๋ก ๋๋ฌ์ธ์ฌ ๋ฐ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
SELECT\n\t\tu.id as user_id,\n\t\tu.is_admin as is_grafana_admin,\n\t\tu.email as email,\n\t\tu.login as login,\n\t\tu.name as name,\n\t\tu.help_flags1 as help_flags1,\n\t\tu.last_seen_at as last_seen_at,\n\t\t(SELECT COUNT(*) FROM org_user where org_user.user_id = u.id) as org_count,\n\t\torg.name as org_name,\n\t\torg_user.role as org_role,\n\t\torg.id as org_id\n\t\tFROM `user` as u\n\t\tLEFT OUTER JOIN org_user on org_user.org_id = 1 and org_user.user_id = u.id\n\t\tLEFT OUTER JOIN org on org.id = org_user.org_id WHERE u.id=? []interface
UPDATE `user` SET `last_seen_at` = ? WHERE `id`=? []interface
์ ์ฒด ์์ ๋ก๊ทธ:
t=2018-05-30T15:59:39+0000 lvl=info msg="[SQL] SELECT\n\t\tu.id as user_id,\n\t\tu.is_admin as is_grafana_admin,\n\t\tu.email as email,\n\t\tu.login as login,\n\t\tu.name as name,\n\t\tu.help_flags1 as help_flags1,\n\t\tu.last_seen_at as last_seen_at,\n\t\t(SELECT COUNT(*) FROM org_user where org_user.user_id = u.id) as org_count,\n\t\torg.name as org_name,\n\t\torg_user.role as org_role,\n\t\torg.id as org_id\n\t\tFROM `user` as u\n\t\tLEFT OUTER JOIN org_user on org_user.org_id = 1 and org_user.user_id = u.id\n\t\tLEFT OUTER JOIN org on org.id = org_user.org_id WHERE u.id=? []interface
{}
{2} - took: 54.517418ms" logger=sqlstore.xorm
t=2018-05-30T15:59:39+0000 lvl=info msg="[SQL] UPDATE `user` SET `last_seen_at` = ? WHERE `id`=? []interface
{}
{\"2018-05-30 15:59:39\", 2} - took: 42.957209ms" logger=sqlstore.xorm
t=2018-05-30T15:59:39+0000 lvl=eror msg="Failed to get user with id" logger=context userId=2 error="User not found"
t=2018-05-30T15:59:39+0000 lvl=info msg="[SQL] SELECT\n\t\tu.id as user_id,\n\t\tu.is_admin as is_grafana_admin,\n\t\tu.email as email,\n\t\tu.login as login,\n\t\tu.name as name,\n\t\tu.help_flags1 as help_flags1,\n\t\tu.last_seen_at as last_seen_at,\n\t\t(SELECT COUNT(*) FROM org_user where org_user.user_id = u.id) as org_count,\n\t\torg.name as org_name,\n\t\torg_user.role as org_role,\n\t\torg.id as org_id\n\t\tFROM `user` as u\n\t\tLEFT OUTER JOIN org_user on org_user.org_id = 1 and org_user.user_id = u.id\n\t\tLEFT OUTER JOIN org on org.id = org_user.org_id WHERE u.id=? []interface
{}
{2} - took: 69.013955ms" logger=sqlstore.xorm
t=2018-05-30T15:59:39+0000 lvl=info msg="[SQL] UPDATE `user` SET `last_seen_at` = ? WHERE `id`=? []interface
{}
{\"2018-05-30 15:59:39\", 2} - took: 5.593997ms" logger=sqlstore.xorm
t=2018-05-30T15:59:39+0000 lvl=eror msg="Failed to get user with id" logger=context userId=2 error="User not found"
t=2018-05-30T15:59:39+0000 lvl=eror msg="Failed to get user with id" logger=context userId=2 error="User not found"
t=2018-05-30T15:59:39+0000 lvl=info msg="[SQL] UPDATE `user` SET `last_seen_at` = ? WHERE `id`=? []interface
{}
{\"2018-05-30 15:59:39\", 2} - took: 46.673ยตs" logger=sqlstore.xorm
t=2018-05-30T15:59:39+0000 lvl=eror msg="Failed to get user with id" logger=context userId=2 error="User not found"
t=2018-05-30T15:59:39+0000 lvl=eror msg="Failed to get user with id" logger=context userId=2 error="User not found"
t=2018-05-30T15:59:39+0000 lvl=info msg="[SQL] UPDATE `user` SET `last_seen_at` = ? WHERE `id`=? []interface
{}
{\"2018-05-30 15:59:39\", 2} - took: 621.538ยตs" logger=sqlstore.xorm
@bjacobel ๊ฐ์ฌํฉ๋๋ค. ๋์ ๋ฐ๋ฅด๋ฉด ๋ชจ๋ ๊ฒ์ด ์ข์ ๋ณด์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๊น์ง ์ ๊ณต๋๋ ์ค์ ์ฌ์ฉ์ ID๊ฐ ์์ต๋๋ค. ์ ๋ง ์ด์ํ๋ค. ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค lib xorm์ ๋ฒ๊ทธ๊ฐ ์๋ค๊ณ ์๊ฐํ๊ธฐ ์์ํ์ต๋๋ค.
ํด๋น ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์์ฑํ๊ธฐ ์ํด ํน์ ์์
์ ์ํํ์ต๋๊น?
์ด๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ์ด๋ค ์ธ์
์คํ ๋ฆฌ์ง?
์น์ธ๋์ง ์์ ์์ฒญ์ผ๋ก ์ธํด ๋ผ์ฐํฐ ๋ก๊น
์ ํ์ฑํํ์ฌ ๋ชจ๋ ์์ฒญ์ ๊ธฐ๋กํ ์ ์์ต๋๋ค.
[server]
router_logging = true
Kubernetes์ 5.1.4์์๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์๋ ํ์ธ์ @marefr , ์ฃ์กํฉ๋๋ค. ์ถ๊ฐ๋ก ์์ฒญํ ์ธ๋ถ ์ ๋ณด๋ฅผ
ํด๋น ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์์ฑํ๊ธฐ ์ํด ํน์ ์์ ์ ์ํํ์ต๋๊น?
์ฟผ๋ฆฌ๋ ๋์๋ณด๋๋ฅผ ๋ก๋ํ ๋ค์ ์๋ ์๋ก ๊ณ ์นจ์ ๋๊ธฐํ์ฌ ์์ฑ๋ฉ๋๋ค. ๋ชจ๋ ์๋ ์๋ก ๊ณ ์นจ์์ ๋ฐ์ํ์ง ์์ผ๋ฉฐ ๋๋ก๋ ๋์๋ณด๋ ์๋ก ๊ณ ์นจ ๋ฒํผ(๋ธ๋ผ์ฐ์ ์๋ก ๊ณ ์นจ ๋ฒํผ์ด ์๋ Grafana์ ๋ด์ฅ๋ ๋ฒํผ)์ ์๋์ผ๋ก ํด๋ฆญํ์ฌ ํธ๋ฆฌ๊ฑฐ๋ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ๋ค์์ ์ํํ ๋ ๋ ์์ฃผ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ๋นํ์ฑ(์: grafana๋ฅผ ๋ฐฐ๊ฒฝ ํญ์ ๋จ๊ฒจ๋ )
์ด๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ์ด๋ค ์ธ์ ์คํ ๋ฆฌ์ง?
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ง์ดํธ๋ NFS(EFS) ๊ณต์ ์ SQLite์ด๊ณ ์ธ์ ์ ์ฅ์๋ ๊ธฐ๋ณธ(ํ์ผ)์ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์ ์ฅ์๋ ์๋ํ์ง๋ง ๋์ผํ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๋ก๋ ๋ฐธ๋ฐ์ ๋ค์ ํ๋์ grafana ํธ์คํธ๊ฐ ์๊ณ ํด๋น ๋ก๋ ๋ฐธ๋ฐ์์์ ์ธ์ ๊ณ ์ ์ ํ์ฑํํ์ต๋๋ค.
์ด๋ค ์์ฒญ์ผ๋ก ์ธํด ์น์ธ๋์ง ์์ต๋๊น?
๋ธ๋ผ์ฐ์ ์์ ์น์ธ๋์ง ์์ ์์ฒญ์ ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ ๋ผ์ฐํฐ ๋ก๊น ์ ํ์ฑํํ์ง ์์์ต๋๋ค.
[์ผ๋ถ ๋ฏผ๊ฐํ ์ ๋ณด ์์ ]
Request URL: https://[my grafana hostname]/api/tsdb/query
Request Method: POST
Status Code: 401
Remote Address: [my load balancer IP]:443
Referrer Policy: no-referrer-when-downgrade
:authority: [my grafana hostname]
:method: POST
:path: /api/tsdb/query
:scheme: https
accept: application/json, text/plain, */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
cache-control: no-cache
content-length: 478
content-type: application/json;charset=UTF-8
cookie: _ga=GA1.2.1782868908.1520436196; __gads=ID=b1c7d78e4fd8b9fb:T=1520436200:S=ALNI_MYT2aRMJqYtHY-CkgaPWmuNtsGEtA; sailthru_hid=919b24e8c99698a8b1829b81eda7135a5956a753dd4c29265f8b45b3a11fb749fc11562ad2abbb1220b9ef37; grafana_sess=[16-char hexadecimal session string]; AWSALB=IUyH6LlTXI/TJlteL8pr838fC7nsvth7s63o5WzqOa6wsCPRpHg20vYurCrYpbIWci27fQtzQpoRxVlIc8Ud/rEPIJvqWvT21an4e9aQmZioTEAFHA3+iWv7bPHs
dnt: 1
origin: https://[my grafana hostname]
pragma: no-cache
referer: https://[my grafana hostname]/d/[dashboard path]?refresh=5m&orgId=1&from=now-1h&to=now
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36
x-grafana-org-id: 1
์๋ ํ์ธ์ @marefr , ์ฃ์กํฉ๋๋ค. ์ถ๊ฐ๋ก ์์ฒญํ ์ธ๋ถ ์ ๋ณด๋ฅผ
@bjacobel ์ด๊ฒ์ ํน์ ๋ฌธ์ ์ ๊ด๋ จ์ด ์์ ์ ์์ง๋ง SQLite์ ๊ฐ๋ฐ์๋ NFS๋ฅผ ํตํด SQLite๋ฅผ ์คํํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ํนํ Grafana ํ๋ก์ธ์ค๋ NFS ๋ง์ดํธ๋ฅผ ํตํด DB์ ์ก์ธ์คํด์๋ ์ ๋๋ฉฐ ๊ฐ๋ ฅํ ํ์ผ ์ ๊ธ ์ง์์ด ์๋ ๋คํธ์ํฌ ํ์ผ ์์คํ ์์ ์คํํ๋ ๊ฒ์ ๊ถ์ฅ๋์ง ์์ต๋๋ค.
์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ๋ SQLite๋ฅผ ์ธ์ ์ ์ฅ์์ ํจ๊ป ์ฌ์ฉํ์ง๋ง ๋ก์ปฌ ํ์ผ ์์คํ ์์ ์ฌ์ฉํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด์ ๋์ผํ ๋ฌธ์ ๋ฅผ ๊ฒฝํํ์ง ์์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ํ ๋ ๋์ ์ฑ๋ฅ์ ์ํด WAL ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋๋ก grafana์์ SQLite ๊ตฌ์ฑ์ ์กฐ์ ํ์ต๋๋ค.
GitHawk ์ ํจ๊ป
๋์ปค Grafana ๋ฐ InfluxDB ์คํ์์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ทธ๋ผํ๋ v5.1.3(์ปค๋ฐ: 087143285)
์ธํ๋ญ์คDB 1.5.3
Grafana๋ sqlite ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํจ๊ป ๋์ปค ๋ณผ๋ฅจ์ ํตํด ๋ก์ปฌ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ณผ๋ฅจ์ด ๋ก์ปฌ SSD๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ช ๋ถ ์ด์ ํญ์ ๋ ๋ ๋๋ง๋ค ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. Firefox์ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ๋จ๊ฒจ๋๋ฉด ๋ค์์ด ํ์๋ฉ๋๋ค.
GET http://x.x.x.x:3000/api/datasources/proxy/1/query?db=(Redacted info)
{"message":"Unauthorized"}
๋ชจ๋ ์ข ๋ฅ์ ์๋ก ๊ณ ์นจ์ ์ค๋ฅ๋ฅผ ์ง์๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์๋ค. ๋๋ฅผ ์ํด ๊ทธ๊ฒ์ "session_provider=memcahched" ๋๋ฝ๊ณผ ๊ด๋ จ์ด ์์์ต๋๋ค.
๋ ๋ง์ ๊ตฌ์ฑ ์ต์ ์ http://docs.grafana.org/installation/configuration/#provider -config๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ฐ์ ๋ฌธ์ ๊ฐ ์ฌ๊ธฐ์๋ ์์ต๋๋ค. ๋ด ๋์ปค ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
FROM grafana/grafana:5.1.0
FROM influxdb:1.5.3
์ค์ /๊ตฌ์ฑ๊ณผ ๊ด๋ จ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฏ๋ก ์ด๊ฒ์ ๋ซ์ต๋๋ค.
@torkelo ์ด ๋ฌธ์ ์ ๋ํ ๋ถ๋ช ํ ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น? ๋๋ ๊ฐ๋ฅํ ํด๊ฒฐ์ฑ ์ ์ฐพ๋ ๋ฐ ๋์์ด ๋๋ ํํธ๊ฐ ์์ต๋๊น?
์ธ์ ์ค์ ์ด HA ์ค์ ์ ๋ํด ์๋ํ๋์ง ๋๋ ๋ก๋ ๋ฐธ๋ฐ์์ ๊ณ ์ ์ธ์ ์ด ์๋ํ๋์ง ํ์ธํ์ญ์์ค.
ํ์ง๋ง ๋ก๋ ๋ฐธ๋ฐ์๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
์ฌ๋ฌ ๋ณต์ ๋ณธ์ด ์๋ ๋์ผํ ๋ฌธ์
/api/login/ping์์ ๋๋๋ก ๋ฌด์์๋ก 401 ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋์ผํ ๋ฌธ์ (5.0์ผ ์ด์ ), ext4์ SQLite, Kubernetes์ ๋จ์ผ ๋ณต์ ๋ณธ. ์ต์ ๊ณต์ Docker ์ด๋ฏธ์ง.
Grafana๋ฅผ ์๋์ผ๋ก ์๋ก ๊ณ ์น ๋ ์์ฒญ์ด ๋ฌด์์๋ก ์คํจํ๊ณ ๊ฒฐ๊ตญ ๋ชจ๋ ์์ ฏ์ด ๋ณด๊ณ ๋ฅผ ์ค์งํฉ๋๋ค. ๊ด๋ จ ๋ก๊ทธ:
t=2018-07-31T01:38:04+0000 lvl=eror msg="Failed to get user with id" logger=context userId=2 error="User not found"
t=2018-07-31T01:38:04+0000 lvl=eror msg="Failed to get user with id" logger=context userId=2 error="User not found"
t=2018-07-31T01:38:04+0000 lvl=eror msg="Failed to get user with id" logger=context userId=2 error="User not found"
t=2018-07-31T01:38:04+0000 lvl=info msg="Request Completed" logger=context userId=0 orgId=0 uname= method=GET path=/api/datasources/proxy/4/query status=401 remote_addr=192.168.1.72 time_ms=28 size=26 referer="REDACTED"
๋๋ฒ๊น ์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๊ฒ์ด Grafana(๋๋ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋) ๋ฒ๊ทธ๋ผ๊ณ 99% ํ์ ํฉ๋๋ค.
/cc @torkelo
SQLite ํ ์ด๋ธ์ด ์ ๊ธด ๊ฒฝ์ฐ ์ฌ์๋๊ฐ ๋๋ฝ๋์๋ค๊ณ 95% ํ์ ํฉ๋๋ค. ์์ ์ฌํญ์ ๋ก์ปฌ์ ๋ฐฐํฌํ๊ณ ์๋ํ๋ ๊ฒฝ์ฐ PRํ๊ฒ ์ต๋๋ค.
ํธ์ง: ๋ค๋ฅธ ์ฝ๋ ๊ฒฝ๋ก๊ฐ ํ์ํฉ๋๋ค.
๋ค์์ ์ ์ค๋ฅ์ ์์ ๋๋ค.
grafana_1 | t=2018-07-31T09:23:06+0100 lvl=eror msg="Failed to get user with id" logger=context userId=1 error="User not found"
grafana_1 | t=2018-07-31T09:23:06+0100 lvl=info msg="Request Completed" logger=context userId=0 orgId=0 uname= method=GET path=/api/login/ping status=401 remote_addr=192.168.33.1 time_ms=35 size=26 referer="http://192.168.33.10:3000/d/ZJ65a0Dmz/yowyow?refresh=5s&orgId=1&from=now-30d&to=now"
grafana_1 | t=2018-07-31T09:23:06+0100 lvl=info msg="Database table locked, sleeping then retrying" logger=sqlstore retry=0
grafana_1 | t=2018-07-31T09:23:06+0100 lvl=info msg="Request Completed" logger=context userId=1 orgId=1 uname=admin method=GET path=/api/login/ping status=401 remote_addr=192.168.33.1 time_ms=24 size=26 referer="http://192.168.33.10:3000/d/ZJ65a0Dmz/yowyow?refresh=5s&orgId=1&from=now-30d&to=now"
๋ช ๊ฐ์ง ๋ ๋ง์ ์คํจ๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ฐค์ ์คํํ๊ณ ์ธ์
์๋ ์๋ฌด ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ์ ํฉ๋๋ค. ORM ๋ ์ด์ด์ ์์ต๋๋ค. ํนํ user.go
GetSignedInUser()
์ ํด๋น ๋ ์ด์ด๊ฐ ์ฌ๋ฐ๋ฅธ ์๋ต์ ๋ฐํํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๋๋ ์ด๋ ๋ ๋ฐค 1๋ถ ๋์ ๋ฑ๋ฑํ 50 ๊ทธ๋ํ ๋์๋ณด๋์ ๋ชจ๋ ์์ฒญ์ ๊ธฐ๋กํ๊ณ ํด๋ฌ์คํฐ๋ ์ค๋ฅ๊ฐ ์๋ ๋งค์ฐ ์์์ ํจํด์ ๋ณด์๊ณ ๋ชจ๋ ๊ฒ์ด ์ผ๋ถ ๋์์ฑ/๊ฒฝ์ฃผ ๋ฌธ์ ๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ํ์ฌ ํ ํ๋
๊ธฐ์ ์ค๋ฅ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ ํํ๋ ํจ์น๋ฅผ ์คํ ์ค์
๋๋ค(์ด ๋ฌธ์ ์ ์ฃผ์ ํ๋ณด). ๋ค๋ฅธ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
๊ทธ๊ฒ์ ๋นจ๋๋ค. ์ค๋ฅ ์ ํ ํจ์น๋ฅผ ์ ์ฉํ์ฌ ๊ทผ๋ณธ ์์ธ์ ์ฐพ์์ต๋๋ค.
t=2018-07-31T17:26:46+0000 lvl=eror msg="Failed to get user with id" logger=context userId=2 error="database table is locked"
์ฌ์๋๋ SQLite ์คํ ๋๋ผ์ด๋ฒ์ ์ด๋๊ฐ์์ ์๋ชป ๊ตฌํ๋ฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ ์ข ๋ ์กฐ์ฌํ๊ณ ์ฌ๊ธฐ์ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ชจ๋ SQLite ์ก์ธ์ค๋ฅผ ๋จ์ผ ๋ฎคํ ์ค๋ก ๋ํํ๊ณ ์์ฒญ๋น ์ SQLite ์ธ์คํด์ค๋ฅผ ์ฌ๋ ๊ฒ์ ํฌํจํ์ฌ ์ด๋ฌํ SQLite ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ์ฌ๋๋ค์ด ์ฌ๋ฌ ๊ฐ์ง ์์ ์ ์ํํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ go-sqlite3์ ํดํนํ์ฌ "์ฐ๊ฒฐ"๋น ๋ฎคํ ์ค๋ฅผ ํฌํจํ๊ณ ๋ชจ๋ ์ก์ธ์ค ๊ถํ์ ์ง๋ ฌํํ๋ ๊ฒ์ ๋๋ค(ํธ์ง: ์ปค์์์ ์ฝ์ ๋ ์ ๊ธ์ด ํ์๋๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ์๋ํ์ง ์์ ๊ฒ์ด๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๊ต์ฐฉ ์ํ์ ์ํ ์์ด ์ ๊ธ ์ ์์). ์ด๊ฒ์ด C ํ๋ก๊ทธ๋จ์ด ์ํํ๋ ๋ฐฉ์์ ๋๋ค(SQLite๊ฐ ๋ง๋ค์ด์ก์ต๋๋ค). ๋๋ฆด ์ ์์ง๋ง ์ฑ๋ฅ์ด ํ์ํ ์ฌ๋๋ค์ ์ด์จ๋ PostgreSQL๋ก ๊ฐ์ผ ํฉ๋๋ค.
@lorenz , ์ด ๋ฌธ์ ๋ฅผ ํํค์ณ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ด sqlite ์์ค์์ ๋ฐ์ํ ์ ์๋ค๋ ๊ทํ์ ํ์๋ก ์ธํด ์ธ์คํด์ค์ ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ SQLite์์ Postgres๋ก ์ด๋ํ๊ณ ์ด์ ์ ํ์ผ ๋ฐฑ์ ์ด์๋ Postgres์๋ ์ธ์ ์ ๋ฐฐ์นํ์ต๋๋ค. ๊ฒฐ์ ์ ์ธ ์ฆ๊ฑฐ๋ ์๋์ง๋ง ๊ทธ ์ดํ๋ก Unauthorized ๋ฌธ์ ๋ฅผ ๋ณด์ง ๋ชปํ์ต๋๋ค.
์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ ๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ์ํด ๊ธฐ๋ณธ ์ค์ ์ผ๋ก pgloader
์ฌ์ฉํ๊ณ ๋ง์ด๊ทธ๋ ์ด์
์ค์ ์ธ์
์ด๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ์ง ์์์ต๋๋ค.
"๋ ํฐ" ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋ชจ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ MVCC๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ ํ์คํ SQLite ๋ฐฑ์๋์๋ง ์์ต๋๋ค. ๋ํ ๊ฐ์ธ์ ์ผ๋ก ํ๋ก๋์ ์ธ์คํด์ค๋ฅผ PostgreSQL๋ก ์ฎ๊ฒผ์ต๋๋ค. ์ฌ์ ํ ๋ฌธ์ ๋ SQLite ๋ฐฑ์๋์ ๋ํด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋์ง ์ฌ๋ถ์ ๋ฐฉ๋ฒ์ ๋๋ค. Grafana(Go๋ก ์์ฑ๋์๊ธฐ ๋๋ฌธ์)๋ SQLite์์ Xorm์ด ํ์ฌ ์ ๊ณตํ๋ ๊ฒ ์ด์์ผ๋ก ํน๋ณํ ์ฃผ์๊ฐ ํ์ํ ๋์์ฑ์ ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ๋ด ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฝ๋์ ์ด๋ฏธ ๋ง์ ์ ๊ธ๊ณผ ์ฌ์๋๊ฐ ์์ง๋ง ์ถฉ๋ถํ์ง ์์ต๋๋ค. ํ ํ๋ ๊ธฐ์ ๋ํ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ์์ ํ๊ธฐ ๋๋ฌธ์(ํ์ฌ ์ ๊ธ ์ค๋ฅ๋ฅผ ์๋์ผ๋ก ์ผ์ผ ์์ธกํ ์ ์๋ ๋์์ ์์ฑํ๋ฏ๋ก ๊ณง ์์ ์ฌํญ์ ํ๋ณดํ ์์ ์ ๋๋ค.) ์ ๊ธ ์ค๋ฅ๊ฐ ๋ฐ์ดํฐ๋ณด๋ค ๋ ๋ง์ ์์น์ ํ์๋๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ์์ค ํ๋ก์์์ ๊ฐ์ฅ ์์ฃผ ์ ์ค๋๋ ๊ฒ์ ์๋ํฌ์ธํธ์ผ ๋ฟ์ด๋ฉฐ ๋ฒ๊ทธ์ ํ๋ฅ ์ ํน์ฑ์ผ๋ก ์ธํด ๊ฐ์ฅ ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ์๋ํฌ์ธํธ์ ๋๋ค. ๋ด๊ฐ ๋ณผ ์ ์๋ ํ ์ด ๋ฌธ์ ์ ๋ํ ๋ชจ๋ ์์ ์ฌํญ์๋ Xorm ๋๋ go-sqlite3 ํดํน์ด ํ์ํ๋ฉฐ ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ๋์งํ์ง ์์ต๋๋ค.
@lorenz ํ๋ฅญํ ๋ถ์ ๊ฐ์ฌํฉ๋๋ค! ์ด ๊ฒฝ์ฐ 500์ ๋ฐํํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ธ ๋จ๊ธฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น? ํ์ฌ์ โโ๋ง์ฐฌ๊ฐ์ง๋ก 401์ ๋ธ๋ผ์ฐ์ (์ต์ํ Chrome)๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ด๋ฒ๋ฆฌ๋๋ก ๊ฐ์ ํ๊ณ ์ฌ์ฉ์๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ค์ ์ ๋ ฅํ๋๋ก ์๊ตฌํฉ๋๋ค. ๋๋ก๋ ์ํธ๊ฐ ์ต์ข ์ ์ผ๋ก ์น์ธ๋ ๋๊น์ง ์ฌ๋ฌ ๋ฒ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
ํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ tmpfs
์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์คํํ๋ ๊ฒ์
๋๋ค. ์ด ๋ฌธ์ ์ ๋น๋๋ฅผ ์ค์ด์ง๋ง ์ฌ์ ํ ๋๋๋ก ๋ฐ์ํฉ๋๋ค.
@kichik ์ค๋ฅ ์ฒ๋ฆฌ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์
๋ฐฉ๊ธ #13007์์ ์ค๋ฅ ๋ณด๊ณ ๋ณ๊ฒฝ ์ฌํญ์ PRํ์ต๋๋ค. ์ด๊ฒ์ ์ฌ๋๋ค์ด ์ ๊ธ ๋ฌธ์ ์ ์ํฅ์ ๋ฐ๋์ง ๋๋ ๊ด๋ จ์ด ์๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
@torkelo ๋ถ๋ช ํ Grafana์ ๋ฌธ์ ์ด๋ฏ๋ก ๋ค์ ์ด ์ ์์ต๋๊น?
ํ์คํ ๋จ์ผ ํญ(๋ฐ ๋จ์ผ ์ฌ์ฉ์)์์ ๋ฐ์ํฉ๋๋ค.
๋ํ sqlite3๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํฅ๋ฏธ๋กญ๊ฒ๋ ์ด์ ์๋ ์ด ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ด์ ๋ช ๊ฐ์ ๋ฌด๊ฑฐ์ด(์ง์์ ์ธ) ํจ๋์ ์ถ๊ฐํ์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ๋ฌด๊ฑฐ์ด ํจ๋ ์ค ํ๋์ ๋ํด์๋ง ์ด ์ค๋ฅ๊ฐ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
๋น sqlite3 DB๋ก ์ ํํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋์ง ํ์ธํฉ๋๋ค. ๋๋ ๋ ๋ฌด๊ฒ๊ณ ๋ฐ์ ํจ๋๋ ๋ ๋์๊ฒ ์๋ํ๋ฉด์ ๋จ์ผ ์ฌ์ฉ์์ ๋จ์ผ ํญ์ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
์ ๋ฐ์ดํธ: ์์ ํ ์์ ์ ์ํด ์ธ์ ์ ๋ณ๋์ db์ ์ ์ฅํ๋๋ก ์ ํํด์ผ ํฉ๋๋ค.
๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ์ฌ mysqldb๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Grafana ๋ฒ์ 5.2.3, Lb ์์ค์์ ๊ณ ์ ์ฑ์ ํ์ฑํํ์ง๋ง ๋ฌธ์ ๋ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค.
๋ํ sqlite๋ฅผ ๋ฐ์ดํฐ ๋ฐฑ์๋๋ก ์ฌ์ฉํ์ง๋ง grafana 5.2.3์์ ์ธ์
์ ์ฅ์๋ก redis๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ฒ์ ๊ฒฝํํฉ๋๋ค.
์ฝ 150๊ฐ์ ์กฐ์ง์ด ๊ตฌ์ฑ๋์์ต๋๋ค. ๋ด๋ถ ์๋ก ๊ณ ์นจ ์ ์น์ธ๋์ง ์์ ๊ฒฝ๊ณ ๊ฐ ํ์๋์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์๋ ์๋ก ๊ณ ์นจ ์ ์ฌ๋ผ์ง๋๋ค.
๋๋๋ก ๋ก๊ทธ์์ ์ด๊ฒ์ ์ป๊ธฐ:
t=2018-09-22T18:10:17+0000 lvl=info msg="Database table locked, sleeping then retrying" logger=sqlstore retry=0
t=2018-09-22T18:10:17+0000 lvl=info msg="Database table locked, sleeping then retrying" logger=sqlstore retry=0
t=2018-09-22T18:10:17+0000 lvl=info msg="Database table locked, sleeping then retrying" logger=sqlstore retry=0
t=2018-09-22T18:10:17+0000 lvl=info msg="Database table locked, sleeping then retrying" logger=sqlstore retry=0
t=2018-09-22T18:10:17+0000 lvl=info msg="Database table locked, sleeping then retrying" logger=sqlstore retry=1
t=2018-09-22T18:10:17+0000 lvl=info msg="Database table locked, sleeping then retrying" logger=sqlstore retry=1
์ด ๋ฌธ์ ๋ mysql ์ฐ๊ฒฐ์ด ๋์ด์ ธ ๋ฐ์ํ ์ ์์ต๋๋ค. max_idle_conn ๋ฐ conn_max_lifetime ๊ฐ์ ๋ฎ์ถ๋ฉด ๋ค์๋ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด ๋์์ ๋ฐ๋๋๋ค
@vishksaj @xiaochai ์ด๊ฒ์ ๋ค๋ฅธ ๋ฌธ์ ์ผ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ต๋๋ค. ์ ๋ฌธ์ ๋ฅผ ์ด์ด ์ฃผ์๊ฒ ์ต๋๊น?
https://github.com/oleh-ozimok/grafana/commit/b19e416549553f582dccfbcaa3f4d3f1a742a462 - ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค(ํซํฝ์ค๊ฐ ์๋ ์ด๋ฏธ์ง docker pull olegozimok/grafana:5.3.2
)
๊ทธ๋ผํ๋ 5.3.2. HA ๊ตฌ์ฑ: 2๊ฐ์ Grafana ์ธ์คํด์ค, MySQL ๋ฉ์ธ DB, ์ธ์ ์ฉ memcached ์ธ์คํด์ค 2๊ฐ, grafana dir ๋ฐ DB๊ฐ NFS์ ์ ์ฅ๋ฉ๋๋ค. ์์ธกํ ์ ์๋ ๋์ผํ "์น์ธ๋์ง ์์" ์ค๋ฅ๊ฐ ํญ์ ๋ฐ์ํฉ๋๋ค. DB๊ฐ NFS์์ SQLite์์ ๋๋ ๋ง์ฐฌ๊ฐ์ง์์ต๋๋ค.
@dev-e์ ๊ฐ์ ๋ฌธ์ ์ด์ง๋ง ๋ ๊ฐ๋จํ ์ค์ ์ ๋๋ค. Grafana 5.3.2, ๋จ์ผ ์ธ์คํด์ค, ๋์ผํ ํธ์คํธ์ InfluxDB, ๋จ์ผ ์กฐ์ง, ๋จ์ผ ์ฌ์ฉ์. ๋ฉ์์ง๋ ๋ฌด์์๋ก ๋ํ๋๊ณ ๋ค์ ํ์ด์ง ์๋ก ๊ณ ์นจ์์ ์ฌ๋ผ์ง๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์๊ณ ์์ด. ๋ฌด๋จ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
grafana 5.3.4๋ก ์
๊ทธ๋ ์ด๋ํ๋ฉด ์ข ๋์์ง๊ธด ํ์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ง์ต๋๋ค.
grafana ๋ก๊ทธ์์:
t=2018-11-19T09:55:07+0200 lvl=eror msg="id๊ฐ ์๋ ์ฌ์ฉ์๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค." logger=context userId=1 error="์ฌ์ฉ์๋ฅผ ์ฐพ์ ์ ์์"
t=2018-11-19T09:55:07+0200 lvl=eror msg="id๊ฐ ์๋ ์ฌ์ฉ์๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค" logger=context userId=1 error="์ฌ์ฉ์๋ฅผ ์ฐพ์ ์ ์์"
t=2018-11-19T09:55:07+0200 lvl=eror msg="id๊ฐ ์๋ ์ฌ์ฉ์๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค." logger=context userId=1 error="์ฌ์ฉ์๋ฅผ ์ฐพ์ ์ ์์"
๊ธฐ๋ณธ ์ค์ :
grafana/ํ์ฌ 5.3.4 amd64
influxdb/ํ์ฌ 1.6.0-1 amd64
๋์ผํ ๋ฌธ์ :
t=2018-12-03T09:28:21+0000 lvl=eror msg="Failed to update last_seen_at" logger=context userId=12 orgId=1 uname=ht error="database table is locked"
t=2018-12-03T10:02:03+0000 lvl=eror msg="Failed to get user with id" logger=context userId=12 error="User not found"
t=2018-12-03T10:02:03+0000 lvl=eror msg="Failed to get user with id" logger=context userId=12 error="User not found"
t=2018-12-03T10:02:03+0000 lvl=eror msg="Failed to get user with id" logger=context userId=12 error="User not found"
t=2018-12-03T10:02:03+0000 lvl=eror msg="Failed to get user with id" logger=context userId=12 error="User not found"
t=2018-12-03T10:46:54+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:46:54+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:46:54+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:46:54+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:46:54+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:46:54+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:46:54+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:46:54+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
2018/12/03 10:51:54 http: proxy error: unexpected EOF
2018/12/03 10:51:54 http: proxy error: unexpected EOF
2018/12/03 10:51:54 http: proxy error: unexpected EOF
t=2018-12-03T10:51:55+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:51:55+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:51:55+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:51:55+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:51:56+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:51:56+0000 lvl=eror msg="Failed to get user with id" logger=context userId=3 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
t=2018-12-03T10:52:25+0000 lvl=eror msg="Failed to get user with id" logger=context userId=17 error="User not found"
๋จ์ผ Grafana 5.3.4, ์คํ ๋ฆฌ์ง๋ Amazon EFS ํ์ผ ์์คํ
(NFS ๋ง์ดํธ)
์ธ์
์ ํ์ผ๋ก ์ค์ ๋๊ณ ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง๋ sqlite( /var/lib/grafana/grafana.db )์
๋๋ค.
Grafana๋ HTTPS ์ข
๋ฃ LB ๋ค์ ์์ต๋๋ค.
@oleh-ozimok ์ ์์ ๊ตฌํํ๋ PR์ ๋ง๋ค์์ต๋๋ค. ์์ ๋กญ๊ฒ ์ฌ์ฉํด ๋ณด์ธ์. ๋๋ ์ฅ๊ธฐ ์คํ ์ธ์คํด์ค๋ฅผ ๊ฐ์ง ์ ์๋๋ก ํด๊ฐ์์ ์ง์ ๋ค์ ํ ๋ฒ ๊ทธ๊ฒ์ ์๋ํฉ๋๋ค :)
@oleh-ozimok PR์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๋ด ๋์ ์ PR์ ๋ณํฉํ์ฌ ํฌ๋ ๋ง์ ์ ๊ณตํ๊ฒ ์ต๋๋ค.
Btw ๋ฉ์ง ์ํ @lorenz !
์ด๋ ๋ฐฐํฌ์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. HA/๋ค์ค ๋ง์คํฐ ๋ชจ๋์์ ์คํ๋๋ ๋ ๊ฐ์ Amazon Auora MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ 401 Unauthorized ์ค๋ฅ๊ฐ ๊ณ์ ๋ฐ์ํฉ๋๋ค. ์ธ์ ์ด ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋์ ์๋์ง ํ์ธํ์ต๋๋ค. ํ์ง๋ง ๊ทธ๋ ๋ค๊ณ ํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋์ง ํ์ธํ๊ธฐ ์ํด ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ง์ ํ์ต๋๋ค. ์ธ์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ธ์ฆ๋๋ ๋ฐ ํ์คํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ Oauth ์ค์ ๊ณผ ํจ๊ป ๋ ๋์๊ฐ๋๋ค. ์ฌ์ฉ์๊ฐ ๊ตฌ์ฑ๋ Oauth ๊ณต๊ธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธํ๊ณ ๋ฆฌ๋๋ ์ ๋๋ฉด ๋ก๊ทธ์ธ์ ์คํจํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ฝ 2~3๋ฒ ๋ก๊ทธ์ธํ๋ฉด ์๋ํฉ๋๋ค.
๊ทธ๊ฒ์ ๋งค์ฐ ์ด์ํฉ๋๋ค. ์๋ง๋ ์๋ฒ์์ ๋ค๋ฅด๊ฒ ๊ตฌ์ฑ๋์ด ์์ต๋๊น?
๋ก๊ทธ ์ธ๋ถ ์ ๋ณด๊ฐ ์์ต๋๊น?
์ธ์ ์ ์ฅ์ ๋ํ ํ์์ฑ์ ์ ๊ฑฐํ๊ณ v6์์ ๋ก๊ทธ์ธ ์ธ์ ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์ ํ ๋ค์ ์์ฑํ๋ฏ๋ก ํด๊ฒฐ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@buroa 6.0-beta1์ ์ฌ์ฉํด ๋ณผ ์ ์๋ ๊ธฐํ๊ฐ ์์ต๋๊น? ์ธ์ฆ ํ ํฐ์ ๋ค์ ์์ฑํ๊ณ ๋๋ถ๋ถ์ ์ธ์ ํ ํฐ ์ฌ์ฉ(auth_proxy๋ฅผ ์ฌ์ฉํ ๋ ์ฌ์ ํ ์ฌ์ฉ๋จ)์ ์์ ํ ์ ๊ฑฐํ์ผ๋ฉฐ ์ด๋ฌํ ๋ฌธ์ ์ ๋๋ถ๋ถ์ด ์ฌ๋ผ์ง๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@bergquist ๋ 2019-02-01T09:58:20+0200์ ๋ด ์ค์ ์ ์ ๋ฐ์ดํธํ์ผ๋ฉฐ ์ง๊ธ์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค.
@buroa 6.0-beta1์ ์ฌ์ฉํด ๋ณผ ์ ์๋ ๊ธฐํ๊ฐ ์์ต๋๊น? ์ธ์ฆ ํ ํฐ์ ๋ค์ ์์ฑํ๊ณ ๋๋ถ๋ถ์ ์ธ์ ํ ํฐ ์ฌ์ฉ(auth_proxy๋ฅผ ์ฌ์ฉํ ๋ ์ฌ์ ํ ์ฌ์ฉ๋จ)์ ์์ ํ ์ ๊ฑฐํ์ผ๋ฉฐ ์ด๋ฌํ ๋ฌธ์ ์ ๋๋ถ๋ถ์ด ์ฌ๋ผ์ง๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ต์ ๋น๋๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. https://github.com/buroa/grafana/tree/us-iso-regions
ํ์ํ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๊น?
@buroa ์, ํ์ง๋ง 6.0-beta1 ์ดํ ๋ช ๊ฐ์ง ๋ณ๊ฒฝ ์ฌํญ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์ต์ ๋ง์คํฐ์์ ๋ณํฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ค๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค
t=2019-02-08T10:05:58+0200 lvl=info msg="์ฟ ํค ๊ธฐ๋ฐ ์ฌ์ฉ์ ์กฐํ ์คํจ" logger=context error="์ฌ์ฉ์ ์ธ์ฆ ํ ํฐ์ ์ฐพ์ ์ ์์"
๋ธ๋ผ์ฐ์ ํญ์ด ๋ซํ์ง ์๊ณ ๋งค์๊ฐ ์๋ ์๋ก๊ณ ์นจ์ด ๋์์ง๋ง PC๋ ์ ๊ฒจ ์์์ต๋๋ค.
@QuantumProjects ๋ Grafana v6.0-pre์ ๋ฌธ์ ๊ฐ ์์ผ๋ฏ๋ก ์ ๋ฌธ์ ๋ฅผ ์ด์ด ์ฃผ์๊ฒ ์ต๋๊น? Grafana ์ค์ ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ญ์์ค. ์ฌ์ฉ ์ค์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฌด์์ ๋๊น? ๊ทธ๋ผํ๋ ๋ฒ์ ? ์ฌ๋ฌ Grafana ์ธ์คํด์ค? ์ธ์ฆ ์ ํ์ ๋ฌด์์ ๋๊น? ๋ฆฌ๋ฒ์ค ํ๋ก์? ๊ฐ์ฌ ํด์
@marefr ์ค์ผ์ด
@marefr ๋์ผํ "์น์ธ๋์ง ์์"ํ์ ์ด ํ์๋ฉ๋๋ค. ์๋ง๋ ๋ด ์ค์ ์ด ๋ฌธ์ ๋ฅผ ํ์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ฐธ๊ณ : ๋ชจ๋ ์๋น์ค๋ ๋์ปค ์ปจํ ์ด๋, traefik x64, grafana ๋ฐ influxdb arm32v7์ ๋๋ค.
์ด๊ฒ์ Grafana 6.0.0(์ปค๋ฐ: 34a9a62, ๋ถ๊ธฐ: HEAD)์์๋ ๋ฐ์ํฉ๋๋ค. SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ Grafana๋ nginx ์ญ ํ๋ก์ ๋ค์์ ์๋ํฉ๋๋ค. LDAP ์ธ์ฆ์ด ๊ตฌ์ฑ๋์์ต๋๋ค. ์ด VM์์ ๋จ์ผ Grafana ์ธ์คํด์ค๊ฐ ์คํ ์ค์ ๋๋ค.
์ค๋ฅ ์ ๋ก๊ทธ ํญ๋ชฉ:
t=2019-03-06T13:39:24+0100 lvl=eror msg="failed to look up user based on cookie" logger=context error="database is locked"
๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด db๋ฅผ sqlite์์ postgres๋ก ์ด๋ํ ํ ์ด๋ฌํ ์ค๋ฅ๊ฐ ํ์๋์ง ์์ต๋๋ค. ์ด์ ์๋ ์์คํ ์ฌ์ฉ์ด ์๋นํ ๋ถํธํ ์ ๋๋ก ์์ฃผ ๋ฐ์ํ์ต๋๋ค. Google oauth๋ก ๋จ์ผ 5.4.3 ์๋ฒ๋ฅผ ์คํํฉ๋๋ค.
postgres์ ์ฐ๊ฒฐ๋ 5.4.3์์ ๋์๊ฒ ๋ฐ์ํ์ต๋๋ค. ์๋นํ ๋ฌด์์์ด์ง๋ง ์๋ ์๋ก ๊ณ ์นจ์ ํ์ฉํ ๋๋ง ๊ฐ๋ฅํฉ๋๋ค. ์ค์น๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ Grafana์ ๋์ผํ ์์์ ์๋ ๋ก์ปฌ ๋คํธ์ํฌ์ ์์ต๋๋ค.
"Unauthorized"๊ฐ ํ์๋ ๋ syslog์์ ์ด๋ฌํ ์ ํ์ ์ค๋ฅ๊ฐ ๋ง์ด ๋ฐ์ํฉ๋๋ค.
...
...
grafana-server[12619]: t=2019-03-06T22:42:02+0100 lvl=info msg="Database table locked, sleeping then retrying" logger=sqlstore retry=0
grafana-server[12619]: t=2019-03-06T22:42:03+0100 lvl=eror msg="Failed to get user with id" logger=context userId=1 error="User not found"
...
grafana-server[12619]: t=2019-03-06T22:42:03+0100 lvl=info msg="Request Completed" logger=context userId=0 orgId=0 uname= method=POST path=/api/tsdb/query status=401 remote_addr=192.168.0.2 time_ms=17 size=26 referer="http://192.168.0.1:3000/d/.....
...
userId=1 ๋๋ 0 ๋ฐ retry=1 ๋๋ 0์ ๋ํ ๋ก๊ทธ์๋ ๋ช ๊ฐ์ง ๋ณํ์ด ์์ต๋๋ค.
์๋ ํ์ญ๋๊น,
๋๋ ์ค๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๋ค. ๋ฉฐ์น ์ ์ ์
๊ทธ๋ ์ด๋๋ ์ผ๋ฐ Debian Stretch์ Grafana 6.0.1์ด ์์ต๋๋ค. Grafana๋ MariaDB 10.2(Galera ํด๋ฌ์คํฐ)๋ฅผ ๋ฐฑ์๋๋ก ์ฌ์ฉํ์ฌ ๋ก๋ ๋ฐธ๋ฐ์(proxysql)์ ์ฐ๊ฒฐํฉ๋๋ค(3๊ฐ์ ๋
ธ๋๊ฐ ์๋ ๋๊ธฐํ ๋ชจ๋).
์ธ์ฆ์ผ๋ก LDAP(Windows AD)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ก๊ทธ ๋ฉ์์ง:
lvl=eror msg="failed to look up user based on cookie" logger=context error="invalid connection"
์๋ํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์๋ ์ง์ IP๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์์ต๋๋ค.
์๋ํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์๋ ์ง์ IP๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์์ต๋๋ค.
์ฐ๋ฆฌ์ ๋ฌธ์ ๋ ๊ฐํ์ ์ด๋ฏ๋ก ๊ฐ์ ๋ฌธ์ ์ฒ๋ผ ๋ค๋ฆฌ์ง ์์ต๋๋ค. ์์ญ ๊ฐ๋ง๋ค ์๋ก ๊ณ ์นจ ์ค ํ๋์ ํจ๋์ด ์ค๋ฅ์ ํจ๊ป ์คํจํ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์๋ํฉ๋๋ค.
6.0.2์์ ๊ฐ์ ์ผ์ด ๋์๊ฒ ์ผ์ด๋๊ณ ์์ต๋๋ค.
๋ก๊ทธ์์:
t=2019-03-23T12:04:22+0000 lvl=eror msg="failed to look up user based on cookie" logger=context error="database is locked"
๊ทธ๋ฆฌ๊ณ
t=2019-03-23T19:05:45+0000 lvl=eror msg="Failed to update last_seen_at" logger=context userId=1 orgId=1 uname=<username> error="database is locked"
์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ์ํด Traefik๊ณผ ํจ๊ป ์ผ๋ฐ ๋์ปค๋ฅผ ์ค์นํฉ๋๋ค.
๋์๊ฒ๋ ๋๊ฐ์ ์ผ์ด ์ผ์ด๋๊ณ ์์ด
๋ฒ์ 6.02
"์ฟ ํค ๊ธฐ๋ฐ ์ฌ์ฉ์ ์กฐํ ์คํจ" logger=context error="๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ๊ฒจ ์์ต๋๋ค"
Sqlite(๊ธฐ๋ณธ๊ฐ)๋ก "๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ๊ฒจ ์์ต๋๋ค"๊ฐ ํ์๋๋ฉด ๋ ๋ง์ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก mysql/postgres๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@bergquist ๋๋ ๊ทธ๊ฒ์ด ์ค์ ๋ก ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ฐฉ๊ธ MariaDB๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ๋ ์ด์ Grafana์์ ์ซ๊ฒจ๋์ง ์์ต๋๋ค. ์์ !
@bergquist ๋๋ ๊ทธ๊ฒ์ด ์ค์ ๋ก ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ฐฉ๊ธ MariaDB๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ๋ ์ด์ Grafana์์ ์ซ๊ฒจ๋์ง ์์ต๋๋ค. ์์ !
๋ช ํํ ํ์๋ฉด "๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ด ์ ๊ฒจ ์์"์ด ์๋๋ผ "๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ๊ฒจ ์์"์ ๋ํ ์๋ฃจ์ ์ผ ์ ์์ต๋๋ค. ์ ๋ PostgreSQL์ ์ฌ์ฉ ์ค์ด๋ฉฐ "ํ ์ด๋ธ ์ ๊ธ"์ ์ง๋ฉดํด ์์ต๋๋ค.
๋๋ฅผ Postgres 9.6(9.4์์)์ผ๋ก ๋ฐ๋ ค๊ฐ Raspbian ์ ๊ทธ๋ ์ด๋ ํ ํด๊ฒฐ๋์์ต๋๋ค. Grafana๋ ์ฌ์ ํ 5.4.3์ ์์ต๋๋ค.
๋๋ฅผ Postgres 9.6(9.4์์)์ผ๋ก ๋ฐ๋ ค๊ฐ Raspbian ์ ๊ทธ๋ ์ด๋ ํ ํด๊ฒฐ๋์์ต๋๋ค. Grafana๋ ์ฌ์ ํ 5.4.3์ ์์ต๋๋ค.
๋ด๊ฐ ํ ๋ง์ ์์ด๋ผ...๋ค์ ๋์์๋ค. ๋ ์์ฃผ, ๋๋ ๋งํ๊ณ ์ถ์ง๋ง ... ์ฌ์ ํ ์ผ์ด๋๊ณ ์์ต๋๋ค.
@ggggh ์ด๋ค ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น? ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ๊ฐ์๊ธฐ ์ผ์ด๋๊ธฐ ์์ํ์ต๋๋ค!
@ggggh ์ด๋ค ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น? ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ๊ฐ์๊ธฐ ์ผ์ด๋๊ธฐ ์์ํ์ต๋๋ค!
์๋ฌด๊ฒ๋...! Postgres ๋ฒ์ ์ ๊ทธ๋ ์ด๋๋ก ์ง์์ก๊ณ , ๋งค์ผ ๋ ์์ฃผ ๋ค์ ๋์์ฌ ๊ฒ ๊ฐ์ต๋๋ค.
@ggggh ๊ฐ์ฌํฉ๋๋ค!
๋๋ Postgres๋ก ์ ํํ์ง๋ง ๊ทธ๊ฒ๋ ๋์์ด๋์ง ์์ต๋๋ค :(
Grafana 6.2.1 ๋ฐ Postgress 11์ ์ฌ์ฉํ์ฌ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ด๊ฒ์ JSON์์ ๋ก๋ํ ๋ค์ ์ก์ธ์ค๋ฅผ ์๋ํ๋ ๋์๋ณด๋์์๋ง ๋ฐ์ํฉ๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๋ค, ์ ๊ฒฝ์ฐ์ ๋ฌธ์ ๋ฅผ ์ฐพ์์ต๋๋ค. ๋ด PG์๋ ์ ํ๋ ์์ ์ฐ๊ฒฐ์ด ์์๊ณ grafana์์ max_open_conn
์ด ์ค์ ๋์ง ์์์ต๋๋ค. ์ด ์ต์
์ ์ค์ ํ ํ์๋ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
Grafana 6.1.6 ๋ฐ ํจํค์ง๋ก ์ ๊ณต๋๋ SQLite DB์์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ์ด ๋ฌธ์ ๋ Grafana๋ฅผ ์ฌ์ฉ์ ์ ์ํ๊ธฐ ์ํ ๋ด๋ถ ๊ฐ๋ฐ ๋
ธ๋ ฅ์ ์ค๋จ์ํต๋๋ค. max_open_conn
๋ณ๊ฒฝ์ด ์๋ํ์ง ์์ต๋๋ค(Postgres์ ์์ ์ฌํญ์ด์๊ธฐ ๋๋ฌธ์ ์์ํ์ง ๋ชปํ์ง๋ง).
์ด๊ฒ์ ๊ทผ๋ณธ ์์ธ์ grafana์ ์ฐ๊ฒฐ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ธ์ฆํ ๋ ๊ธฐ๋ณธ DB๋ฅผ ์ธ์ฆํ์ง๋ง ๊ทธ๋ ๊ฒ ํ์ง ๋ชปํฉ๋๋ค. SQLite๋ฅผ ์ฌ์ฉํ๋ฉด
SQLite ์ ๊ธ ์ดํ๋ก ์์ฃผ ๋ฐ์ํ๋ฉฐ ๋์ ์ฌ์ฉ ํ์๊ฐ ์ ์ต๋๋ค.
๊ทธ๋์ ๊ณต๊ฒฉ์ ์ผ๋ก. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ค์ RDBMS๋ก ๋ง์ด๊ทธ๋ ์ด์
(๋๋ postgres๋ฅผ ์ข์ํจ)
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์
๋๋ค. ์ ๊ฑธ๋ฆฌ๋ฉด ๋ค์ ๋ํ๋ ์ ์์ต๋๋ค.
์ฐ๊ฒฐ ์ ํ(๋๋ ์ด์ ์ ์ฌํ) ๋ฌธ์ ๊ฐ ์์ง๋ง ์ด๋ DB์ ๋ํ ๋ฌธ์ ๋ณด๋ค
๊ทธ๋ผํ๋ ๊ฑฑ์ . ๋ฐ๋ชจ๊ฐ ์๋ ๋ค๋ฅธ ์ฉ๋๋ก Grafana๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
์ค์ DB๋ก ๋ฐฑ์
ํด์ผ ํฉ๋๋ค. ํด๋น DB๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
2019๋
6์ 10์ผ ์์์ผ ์ค์ 11์ 20๋ถ syardumian-chc [email protected]
์ผ๋ค:
Grafana 6.1.6 ๋ฐ ํจํค์ง๋ก ์ ๊ณต๋๋ SQLite DB์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ด๊ฒ
๋ฌธ์ ๋ Grafana๋ฅผ ์ฌ์ฉ์ ์ ์ํ๊ธฐ ์ํ ๋ด๋ถ ๊ฐ๋ฐ ๋ ธ๋ ฅ์ ์ค๋จ์ํต๋๋ค. ๋ฐ๊พธ๋ค
max_open_conn์ด ์๋ํ์ง ์์ต๋๋ค.
Postgres์ ๋ํ ์์ ).โ
์ด ์ค๋ ๋์ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/grafana/grafana/issues/10727?email_source=notifications&email_token=AAAK6YSUDLXPF2E4436CEOTPZ2EMFA5CNFSM4EO23EH2YY3PNVWWK3TUL52HS4DFVEXG43VMVBW63
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAK6YQLR3FSCNEQR7SNEKLPZ2EMFANCNFSM4EO23EHQ
.
์ฐ๊ฒฐ ์ ํ๊ณผ ์ต๋ ์ ํด ์ฐ๊ฒฐ์ ๋๋ ธ์ง๋ง ์ฌ์ ํ ์ด ๋ฌธ์ ๊ฐ ๋ฌด์์๋ก ๋ฐ์ํฉ๋๋ค. ๋ฟ๋ง ์๋๋ผ ์ ์ ์ด๋ ค ์๋ ๋์๋ณด๋๋ ์๋ก ๊ณ ์นจ ์๋๊ฐ ์ ์ ๋๋ ค์ง๋ ๊ฒ ๊ฐ์ผ๋ฉฐ, ๊ฐ ํจ๋์ loading-gif๊ฐ ํ์๋๊ณ ๊ฐ ํจ๋์ ๋ก๋๊ฐ ์๋ฃ๋๋ฉด ์์ฐจ์ ์ผ๋ก ์ฒ์ฒํ ์ฌ๋ผ์ง๋๋ค. ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๋ซ๊ณ ์ ์ฐฝ์ ์ด์ด๋ ๊ด์ฐฎ์ต๋๋ค. ๋ด ๋์๋ณด๋๊ฐ โโ๋ ๋ณต์กํด์ง ๊ฒ ๊ฐ์ง๋ง ํ์ด์ง๋ฅผ ์๋ก ๋ก๋ํ๋ฉด "๊ณ ์ "๋๋ ์ด์ ๊ฐ ์ค๋ช ๋์ง ์์ต๋๋ค.
์ ๋ ๋๋ค ์๋ฌ๊ฐ ๋ฉ๋๋ค. ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์ ๋ง๋ก ๋ชจ๋ฆ ๋๋ค. IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ด์ฐฎ์ ๋ณด์ด์ง๋ง kubeneters ์ธ๊ทธ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ฉด "์ฃผ์ ์ฟผ๋ฆฌ ์คํจ"๊ฐ ๋ฌด์์๋ก ํ์๋ฉ๋๋ค.
FWIW, ์ต๊ทผ์ ๋ด ์์ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ Fabio(Traefik์์)๋ก ์ ํํ๊ณ Grafana(Docker ์ด๋ฏธ์ง, ์ถ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์๋ ์์)๋ฅผ v6.4.2๋ก ์ ๋ฐ์ดํธํ์ผ๋ฉฐ ์๋ ์๋ก ๊ณ ์นจ(๊ฐ๊ฒฉ์ 10์ผ๋ก ์ค์ )์ ์ํํ ๋ 401 ์น์ธ๋์ง ์์ ์ค๋ฅ๊ฐ ์ฌ๋ผ์ง ๊ฒ ๊ฐ์ต๋๋ค. ์ด, ํ๋ฃจ ์ข ์ผ ์คํ). Fabio๋ก ์ ํํ์ฌ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ ๊ฐ๋ฅ์ฑ์ ๋ฎ์ต๋๋ค. Grafana์ ์ต์ ๋ฒ์ ์ด ๋์์ด ๋์๋ค๊ณ ์ถ์ธกํ์ง๋ง 100% ํ์ ํ ์๋ ์์ต๋๋ค.
์ต๊ทผ์ ์๋ก์ด ๋ณด๊ณ ์๊ฐ ์์ด ๋ซ์ต๋๋ค. ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐ๋๋ฉด ์ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค.
์ต๊ทผ์ ๋ด kubernetes ํด๋ฌ์คํฐ์ grafana๋ฅผ ์ค์นํ๋๋ฐ ๋น์ทํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋์ปค ์ด๋ฏธ์ง grafana/ grafana:6.4.3์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ด ํฌ๋ ๋ก๊ทธ๋ฅผ ํ์ธํ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ ํฅ๋ฏธ๋ก์ด ์์ ์ ๋ณด๋ฅผ ์ฐพ์์ต๋๋ค.
t=2019-11-01T15:18:33+0000 lvl=info msg="Successful Login" logger=http.server User=--snip--
t=2019-11-01T15:19:09+0000 lvl=eror msg="Failed to look up user based on cookie" logger=context error="dial tcp: lookup postgres.databases.svc.cluster.local: no such host"
t=2019-11-01T15:19:09+0000 lvl=info msg="Request Completed" logger=context userId=0 orgId=0 uname= method=GET path=/api/datasources/proxy/1/query status=401 remote_addr=--snip-- time_ms=11 size=26 referer="https://--snip--/d/TuobtjoZz/--snip--?orgId=1&refresh=5s&from=now-12h&to=now"
DNS ๋ฌธ์ ๋ ๋ด ํด๋ฌ์คํฐ ๋ด์์ ์ด์ ์ ๋ฐ์ํ ๊ฒ์ด ์๋์ง๋ง ์ธํฐ๋ท ๊ฒ์์ ํตํด ๋ค์๊ณผ ๊ฐ์ ํน์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. https://github.com/kubernetes/kubernetes/issues/30215
๋ง์ docker ์ด๋ฏธ์ง์ฒ๋ผ grafana๊ฐ ์ํ์ธ ์ด๋ฏธ์ง์ ๋น ์ํ์ธ ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ์ ๊ณตํ ์ ์์ต๋๊น? ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ ํ
์คํธํ๊ฑฐ๋ ๋๋ฒ๊ทธ๋ฅผ ๋๋ ๋ฐ ํ ์ ์๋ ์ผ์ด ์์ผ๋ฉด ์์ฒญํ ๋๋ก ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ฒ ์ต๋๋ค.
์ํ์ธ ๊ธฐ๋ฐ์ด ์๋ 6.3.6์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ ํ ๋ฌธ์ ๊ฐ ์์ ํ ์ฌ๋ผ์ก์ต๋๋ค.
๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ๋์ผํ ๋ธ๋ผ์ฐ์ ์์ ๋ ๊ฐ์ ๋ณ๋ Grafana(์ปจํ
์ด๋)๊ฐ ์ด๋ฆฝ๋๋ค.
๋ ๋ฒ์งธ์ ๋ก๊ทธ์ธํ ๋ ์ฒซ ๋ฒ์งธ์ ๋ค์ ๋ก๊ทธ์ธํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํ๊ณ ์ฒซ ๋ฒ์งธ์ ๋ก๊ทธ์ธํ๋ฉด ๋ ๋ฒ์งธ์ ๋ค์ ๋ก๊ทธ์ธํ๋๋ก ์์ฒญํฉ๋๋ค.
๋ ๋ค ๋ก๊ทธ์ธ์ ์ ์งํ ์ ์์ต๋๋ค
๋ด๊ฐ ์ฐพ์ ํด๊ฒฐ์ฑ
์ Grafana default.ini ํ์ผ ์ค ํ๋๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์
๋๋ค.
login_cookie_name = grafana_session
์๊ฒ
๋ก๊ทธ์ธ_์ฟ ํค_์ด๋ฆ = grafana_session_1
์ปจํ
์ด๋์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ค์ ์์ํ๋ฉด ์ด์ ์ ๋๋ก ์๋ํฉ๋๋ค.
์ง๊ธ์ ํ์ผ์ ์ปจํ
์ด๋ ์ธ๋ถ์ ๋ณด๊ดํฉ๋๋ค.
์ปจํ
์ด๋๋ฅผ ์์ฑํ ๋ ์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
@ikkerens ๋ ์ฐ๋ถํฌ ๊ธฐ๋ฐ ์ด๋ฏธ์ง๋ฅผ ์๋ํ์ญ์์ค. ๊ทธ๋ฐ ๋ค์ 6.6.2-ununtu
@n0-bs ์ฃ์กํ์ง๋ง Grafana์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ MySQL ๋๋ Postgres๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฃ์กํฉ๋๋ค. ๊ทธ๋ฌ๋ MySQL ๋๋ Postgres๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋์ผํ ๋ธ๋ผ์ฐ์ ์์ ์ด ๋ ๊ฐ์ ๋ค๋ฅธ Grafana ์ธ์คํด์ค๋ฅผ ์ด ๋ ์ฟ ํค ์ถฉ๋์ ํด๊ฒฐํฉ๋๋ค. HA ์ฌ๋ก์ ๋ํด ๋งํ๋ ๊ฒ์ด ์๋๋๋ค.
๋์ผํ ์๋ฒ์ ๋ ๊ฐ์ ๋ค๋ฅธ Grafana ์ธ์คํด์ค(์ปจํ
์ด๋)๊ฐ ์์ต๋๋ค.
๋๋ 6.7.2์์ ์ด๊ฒ์ ์์ง๋ ๋ณด๊ณ ์๋ค. 6.5์์ 6.6์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ ๋ค์ 6.7๋ก ์ ๊ทธ๋ ์ด๋ํ์ต๋๋ค. PostgreSQL๊ณผ ํจ๊ป docker๋ฅผ ์ฌ์ฉํ์ฌ 6.7.2 ์ด๋ฏธ์ง๋ฅผ ์๋ํ ๋ค์ 6.7.2-ubuntu๋ฅผ ์๋ํ์ต๋๋ค.
์ด๊ฒ์ ๋ก๊ทธ์ ๋ํ๋๋ ์ค๋ฅ์
๋๋ค.
lvl=eror msg="Failed to look up user based on cookie" logger=context error="pq: remaining connection slots are reserved for non-replication superuser connections"
postgres๋ฅผ ๋ค์ ์์ํ์ฌ (์ ์ด๋ ์ง๊ธ์) ์์ ๋์์ต๋๋ค.
์ต์ ๋ฒ์ ์ Grafana๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ ์ก์ธ์คํ ๋๋ง๋ค ์น์ธ๋์ง ์์ ๋ฌธ์ ๊ฐ ๊ณ์ ํ์๋ฉ๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค์์ Grafana๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. 3๊ฐ์ ๋ค๋ฅธ ๋ ธ๋์์ 3๊ฐ์ ๋ค๋ฅธ ํฌ๋์ ๋ฐฐํฌํ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ ์ ์ฌํญ์ด ์์ต๋๊น?
@emzfuu ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ํด์ผ ํฉ๋๋ค. mysql/postgres
@bergquist ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋จ์ผ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ํตํด ์ก์ธ์ค๋๋ 3๊ฐ์ ๋ค๋ฅธ Grafana(๋ ๋ฆฝ ์คํํ)๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ด ์ง๋ฌธ์ ์์ธํ ์ค๋ช ํฉ๋๋ค. 3 Grafana์๋ ์์ฒด db(sqlite3)๊ฐ ์์ต๋๋ค. ์ก์ธ์คํ ๋๋ง๋ค ์น์ธ๋์ง ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. nfs๋ฅผ ์ฌ์ฉํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Grafana v4.6.2(์ปค๋ฐ: 8db5f08)์์ ๋์ผํ ๋ฌธ์ ๊ฐ ํ์๋๊ณ ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํ๋ฉฐ ๊ฐ์๊ธฐ Unauthorized ๊ฒฝ๊ณ ๊ฐ ์์ ๋ฉ๋๋ค(์ผ๋ถ ๊ทธ๋ํ๋ emtpy์ด์ง๋ง ์ผ๋ถ๋ ์ ์์ ์ผ๋ก ํ์๋จ).
์ ๋ Prometheus๋ฅผ DataSource๋ก ์ฌ์ฉํฉ๋๋ค.
๋๋ ๋ํ ์ด๊ฒ์ด ์ฃผ๋ก ๋์ ๋ณด๋๊ฐ ์๋ ์๋ก ๊ณ ์นจ ๋ ๋ ๋ฐ์ํ๋ค๊ณ ์๊ฐํ์ง๋ง ์๋์ผ๋ก ์๋ก ๊ณ ์นจํ๋ฉด ์์ฒด์ ์ผ๋ก ์์ ๋ฉ๋๋ค.