๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์์ ์ฌ์ฉํ๋ฉด Cloud Trace ๋ฐ์ดํฐ์ SQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ์ฑ๋ฅ ์ถ์ธ๋ฅผ ํ์
ํ๊ณ , ์ง๊ณ ํต๊ณ๋ฅผ ์์ฑํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ฐจํธ์ ํ๋ก ์๊ฐํํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ์์ ์ ์ฅํ ๋ชจ๋ ์ถ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ๊ธฐ๋ณธ _AllSpans ๋ทฐ์ ๋ํด ์ฟผ๋ฆฌ๊ฐ ์คํ๋๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ ์ปค์คํ
๋์๋ณด๋์ ์ ์ฅํ ์ ์์ต๋๋ค.
๊ฐ๋ณ trace, ์คํฌ ๋๋ ์คํฌ ์์ฑ์ ๊ฒ์ฌํ๋ ค๋ฉด Trace ํ์๊ธฐ ํ์ด์ง๋ฅผ ์ฌ์ฉํ์ธ์. ์์ธํ ๋ด์ฉ์ trace ์ฐพ๊ธฐ ๋ฐ ํ์์ ์ฐธ๊ณ ํ์ธ์.
์ฐ๊ฒฐ๋ BigQuery ๋ฐ์ดํฐ ์ธํธ ์ ๋ณด
์ถ์ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๊ฑฐ๋ ์ถ์ ๋ฐ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ๋ฐ ์ฐ๊ฒฐ๋ BigQuery ๋ฐ์ดํฐ ์ธํธ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ์๋๋ฆฌ์ค์์๋ ๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์ ํ์ด์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ก๊ทธ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์์ผ๋ก ๋ก๊ทธ ์ฟผ๋ฆฌ ๋ฐ ๋ถ์์ ์ฐธ๊ณ ํ์ธ์.
๋ค์ ์์ ์ ์ํํ๋ ค๋ฉด ์ฐ๊ฒฐ๋ BigQuery ๋ฐ์ดํฐ ์ธํธ๊ฐ ํ์ํฉ๋๋ค.
- ํธ๋ ์ด์ค ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ BigQuery ๋ฐ์ดํฐ ์ธํธ์ ์กฐ์ธํฉ๋๋ค.
- BigQuery Studio ํ์ด์ง ๋๋ ๋ฐ์ดํฐ ์คํ๋์ค์ ๊ฐ์ ๋ค๋ฅธ ์๋น์ค์์ ํธ๋ ์ด์ค ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค.
- BigQuery ์์ฝ๋ ์ฌ๋กฏ์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์ ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- ์๋ฆผ ์ ์ฑ ์ผ๋ก SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๋ชจ๋ํฐ๋ง
์ด ๋ฌธ์์์๋ ์ฐ๊ฒฐ๋ BigQuery ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ด๋ ์์ฝ๋ ์ฌ๋กฏ์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋๋ก ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ์ฃผ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฐ๊ฒฐ๋ BigQuery ๋ฐ์ดํฐ ์ธํธ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์์ํ๊ธฐ ์ ์
- Google Cloud ๊ณ์ ์ ๋ก๊ทธ์ธํฉ๋๋ค. Google Cloud๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ณ์ ์ ๋ง๋ค๊ณ Google ์ ํ์ ์ค์ ์ฑ๋ฅ์ ํ๊ฐํด ๋ณด์ธ์. ์ ๊ท ๊ณ ๊ฐ์๊ฒ๋ ์ํฌ๋ก๋๋ฅผ ์คํ, ํ ์คํธ, ๋ฐฐํฌํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ $300์ ๋ฌด๋ฃ ํฌ๋ ๋ง์ด ์ ๊ณต๋ฉ๋๋ค.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Observability API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Observability API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์ ํ์ด์ง๋ฅผ ๋ก๋ํ๊ณ , ์ถ์ ๋ฐ์ดํฐ์ ๋ํ ๋น๊ณต๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์์ฑ, ์คํ, ์ ์ฅํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ๋ค์ IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
- ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ทฐ ์ ๊ทผ์ (
roles/observability.viewAccessor) ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ์ด ์ญํ ์ IAM ์กฐ๊ฑด์ ์ง์ํ๋ฏ๋ก ํน์ ๋ทฐ์ ๋ํ ๊ถํ ๋ถ์ฌ๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์ญํ ๋ถ์ฌ์ ์กฐ๊ฑด์ ์ฐ๊ฒฐํ์ง ์์ผ๋ฉด ์ฃผ ๊ตฌ์ฑ์์ด ๋ชจ๋ ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ทฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. - ํ๋ก์ ํธ์ ๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์ ์ฌ์ฉ์ (
roles/observability.analyticsUser) ์ด ์ญํ ์๋ ๋น๊ณต๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์ ์ฅํ๊ณ ์คํํ๊ณ ๊ณต์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค.
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ํตํด ํ์ํ ๊ถํ์ ์ป์ ์๋ ์์ต๋๋ค.
- ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ทฐ ์ ๊ทผ์ (
์คํค๋ง ํ์
์คํค๋ง๋ ํ๋์ ๋ฐ์ดํฐ ์ ํ์ ํฌํจํ์ฌ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๋ฐฉ์์ ์ ์ํฉ๋๋ค. ์ด ์ ๋ณด๋ ์คํค๋ง์ ๋ฐ๋ผ ์ฟผ๋ฆฌํ ํ๋์ ํ๋๋ฅผ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ๋ณํํด์ผ ํ๋์ง ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋๋ฏ๋ก ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด HTTP ์์ฒญ์ ํ๊ท ์ง์ฐ ์๊ฐ์ ๊ณ์ฐํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ค๋ฉด ์ง์ฐ ์๊ฐ ํ๋์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ๊ณผ ์ ์(์: 100)๋ก ์ ์ฅ๋๋์ง ๋๋ ๋ฌธ์์ด(์: "100")๋ก ์ ์ฅ๋๋์ง ์ฌ๋ถ๋ฅผ ์์์ผ ํฉ๋๋ค. ์ง์ฐ ์๊ฐ ๋ฐ์ดํฐ๊ฐ ๋ฌธ์์ด๋ก ์ ์ฅ๋ ๊ฒฝ์ฐ ํ๊ท ์ ๊ณ์ฐํ๊ธฐ ์ ์ ์ฟผ๋ฆฌ๊ฐ ๊ฐ์ ์ซ์ ๊ฐ์ผ๋ก ํ ๋ณํํด์ผ ํฉ๋๋ค.
์คํค๋ง๋ฅผ ์๋ณํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
-
Google Cloud ์ฝ์์์ manage_search ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์์ผ๋ก ์ด๋
๊ฒ์์ฐฝ์ ์ฌ์ฉํ์ฌ ์ด ํ์ด์ง๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ ๋ถ์ ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์ ํํฉ๋๋ค.
๋ทฐ ๋ฉ๋ด์์
ํธ๋ ์ด์ค ์น์
์ผ๋ก ์ด๋ํ ๋ค์ _Trace.Spans._AllSpans๋ฅผ ์ ํํฉ๋๋ค.์คํค๋ง ์ฐฝ์ด ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์์ ๋ฐ์ดํฐ ์ ํ์ด JSON์ธ ๊ฒฝ์ฐ ์ด์ ํ๋๋ฅผ ์๋์ผ๋ก ์ถ๋ก ํฉ๋๋ค. ์ถ๋ก ๋ ํ๋๊ฐ ๋ฐ์ดํฐ์ ํ์๋๋ ๋น๋๋ฅผ ํ์ธํ๋ ค๋ฉด more_vert ์ต์ ์ ํด๋ฆญํ๊ณ ์ ๋ณด ๋ฐ ์ค๋ช ๋ณด๊ธฐ๋ฅผ ์ ํํฉ๋๋ค.
์คํค๋ง์ ๋ํด ์์๋ณด๋ ค๋ฉด trace ๋ฐ์ดํฐ์ ์คํ ๋ฆฌ์ง ์คํค๋ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
_Trace.Spans._AllSpans๋ผ๋ ๋ทฐ๊ฐ ํ์๋์ง ์์ผ๋ฉดGoogle Cloud ํ๋ก์ ํธ์_Trace๋ผ๋ ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ฒํท์ด ํฌํจ๋์ด ์์ง ์์ ๊ฒ์ ๋๋ค. ์ด ์คํจ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ถ์ ์ ์ฅ์ ์ด๊ธฐํ ์คํจ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
trace ๋ฐ์ดํฐ ์ฟผ๋ฆฌ
์ด ์น์ ์์๋ ํธ๋ ์ด์ค ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
- ์์คํ ์ ์ ์ฟผ๋ฆฌ๋ฅผ ๋ก๋ํ๊ณ , ์ด ์ฟผ๋ฆฌ๋ฅผ ์์ ํ๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค.
- ๋ง์ถค ์ฟผ๋ฆฌ๋ฅผ ์ ๋ ฅํ๊ณ ์คํํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ธฐ์กด ์ฟผ๋ฆฌ๋ฅผ ๋ถ์ฌ๋ฃ๊ฑฐ๋ ์ง์ ์์ฑํ ์ ์์ต๋๋ค. ๋ง์ถค ์ฟผ๋ฆฌ์๋ ์กฐ์ธ, ์ค์ฒฉ๋ ์ฟผ๋ฆฌ, ๊ธฐํ ๋ณต์กํ SQL ๋ฌธ์ด ํฌํจ๋ ์ ์์ต๋๋ค. ์์๋ ์ํ SQL ์ฟผ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- ๋ฉ๋ด๋ฅผ ์ ํํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ๋น๋ํ ๋ค์ ํด๋น ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค. ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์์ ์ ํํ ํญ๋ชฉ์ SQL ์ฟผ๋ฆฌ๋ก ๋ณํํ๋ฉฐ, ์ด ์ฟผ๋ฆฌ๋ ํ์ธํ๊ณ ์์ ํ ์ ์์ต๋๋ค.
์์คํ ์ ์ ์ฟผ๋ฆฌ ๋ก๋, ์์ , ์คํ
-
Google Cloud ์ฝ์์์ manage_search ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์์ผ๋ก ์ด๋
๊ฒ์์ฐฝ์ ์ฌ์ฉํ์ฌ ์ด ํ์ด์ง๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ ๋ถ์ ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์ ํํฉ๋๋ค.
๋ทฐ ๋ฉ๋ด์์
ํธ๋ ์ด์ค ์น์
์ผ๋ก ์ด๋ํ ๋ค์ _Trace.Spans._AllSpans๋ฅผ ์ ํํฉ๋๋ค._Trace.Spans._AllSpans๋ผ๋ ๋ทฐ๊ฐ ํ์๋์ง ์์ผ๋ฉดGoogle Cloud ํ๋ก์ ํธ์_Trace๋ผ๋ ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ฒํท์ด ํฌํจ๋์ด ์์ง ์์ ๊ฒ์ ๋๋ค. ์ด ์คํจ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ถ์ ์ ์ฅ์ ์ด๊ธฐํ ์คํจ๋ฅผ ์ฐธ๊ณ ํ์ธ์.๋ค์ ์ค ํ๋๋ฅผ ์ํํฉ๋๋ค.
๋ฉ๋ด ์ ํ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์ ์ํ ์ ์๋ ์ฟผ๋ฆฌ ๋น๋๋ฅผ ์ฌ์ฉํ๋ ์์คํ ์ ์ ์ฟผ๋ฆฌ๋ฅผ ๋ก๋ํ๋ ค๋ฉด ์ฟผ๋ฆฌ ์ฐฝ์ ์ฟผ๋ฆฌ ๋น๋๊ฐ ํ์๋์ด ์๋์ง ํ์ธํ์ธ์. SQL ํธ์ง๊ธฐ๊ฐ ํ์๋๋ฉด tuneย ๋น๋๋ฅผ ํด๋ฆญํฉ๋๋ค.
JSON ๊ฐ์ ์ถ์ถํ๋ ์์คํ ์ ์ ์ฟผ๋ฆฌ๋ฅผ ๋ก๋ํ๋ ค๋ฉด ์ฟผ๋ฆฌ ์ฐฝ์ SQL ํธ์ง๊ธฐ๊ฐ ํ์๋์ด์ผ ํฉ๋๋ค. ์ด ์ฐฝ์ ์ฟผ๋ฆฌ ๋น๋๊ฐ ํ์๋๋ฉด codeย SQL์ ํด๋ฆญํฉ๋๋ค.
์คํค๋ง ์ฐฝ์์ ์ฟผ๋ฆฌ๋ฅผ ์ ํํ ๋ค์ ๋ฎ์ด์ฐ๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฟผ๋ฆฌ ์ฐฝ์ ์์คํ ์ ์ ์ฟผ๋ฆฌ๊ฐ ํ์๋ฉ๋๋ค. ์ฟผ๋ฆฌ ๋น๋ ๋ชจ๋๋ฅผ ์ ํํ์ง๋ง SQL ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ ค๋ฉด codeย SQL์ ํด๋ฆญํฉ๋๋ค.
์ ํ์ฌํญ: ์ฟผ๋ฆฌ๋ฅผ ์์ ํฉ๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ฉด ํด๋ฐ๋ก ์ด๋ํ์ฌ ์ฟผ๋ฆฌ ์คํ์ ์ ํํฉ๋๋ค.
๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ๋ก ํ์ํฉ๋๋ค. ํ์ง๋ง ์ฐจํธ๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ ํ๋ ์ฐจํธ๋ฅผ ์ปค์คํ ๋์๋ณด๋์ ์ ์ฅํ ์๋ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ฐจํธ๋ก ํ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
ํด๋ฐ์ BigQuery์์ ์คํ์ด ํ์๋๋ฉด ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ์์ง์ ์ฌ์ฉํ๋๋ก ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์์ ์ ํํด์ผ ํฉ๋๋ค. ์ด ์ค์ ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ฟผ๋ฆฌ ์ฐฝ์ ํด๋ฐ์์ settings ์ค์ ์ ํด๋ฆญํ ๋ค์ ์ ๋๋ฆฌํฑ์ค (๊ธฐ๋ณธ๊ฐ)๋ฅผ ์ ํํฉ๋๋ค.
๋ง์ถค ์ฟผ๋ฆฌ ์ ๋ ฅ ๋ฐ ์คํ
SQL ์ฟผ๋ฆฌ๋ฅผ ์ ๋ ฅํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
-
Google Cloud ์ฝ์์์ manage_search ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์์ผ๋ก ์ด๋
๊ฒ์์ฐฝ์ ์ฌ์ฉํ์ฌ ์ด ํ์ด์ง๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ ๋ถ์ ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์ ํํฉ๋๋ค.
์ฟผ๋ฆฌ ์ฐฝ์์ codeย SQL์ ํด๋ฆญํฉ๋๋ค.
๊ธฐ๊ฐ์ ์ง์ ํ๋ ค๋ฉด ๊ธฐ๊ฐ ์ ํ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
timestampํ๋๋ฅผ ์ง์ ํ๋WHERE์ ์ ์ถ๊ฐํ๋ฉด ์ด ๊ฐ์ด ๊ธฐ๊ฐ ์ ํ๊ธฐ์ ์ค์ ์ ์ฌ์ ์ํ๊ณ ํด๋น ์ ํ๊ธฐ๋ ์ฌ์ฉ ์ค์ง๋ฉ๋๋ค.์์๋ ์ํ SQL ์ฟผ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
SQL ํธ์ง๊ธฐ์
_Trace.Spans._AllSpans๋ทฐ์ ์ ๊ทํ๋ ์ด๋ฆ์ด ํ์๋ฉ๋๋ค. ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.FROM `PROJECT_ID.LOCATION._Trace.Spans._AllSpans`
์ด์ ํํ์์ ํ๋๋ ๋ค์๊ณผ ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ์ต๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ์๋ณ์
- LOCATION: ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ฒํท์ ์์น์ ๋๋ค.
์ฟผ๋ฆฌ ์ฐฝ์
FROM๋ฌธ์ ์ฐธ์กฐํ๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ๋ทฐ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์ด ์คํจ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ทฐ๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ฉด ํด๋ฐ๋ก ์ด๋ํ์ฌ ์ฟผ๋ฆฌ ์คํ์ ์ ํํฉ๋๋ค.
๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ๋ก ํ์ํฉ๋๋ค. ํ์ง๋ง ์ฐจํธ๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ ํ๋ ์ฐจํธ๋ฅผ ์ปค์คํ ๋์๋ณด๋์ ์ ์ฅํ ์๋ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ฐจํธ๋ก ํ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
ํด๋ฐ์ BigQuery์์ ์คํ์ด ํ์๋๋ฉด ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ์์ง์ ์ฌ์ฉํ๋๋ก ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์์ ์ ํํด์ผ ํฉ๋๋ค. ์ด ์ค์ ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ฟผ๋ฆฌ ์ฐฝ์ ํด๋ฐ์์ settings ์ค์ ์ ํด๋ฆญํ ๋ค์ ์ ๋๋ฆฌํฑ์ค (๊ธฐ๋ณธ๊ฐ)๋ฅผ ์ ํํฉ๋๋ค.
์ฟผ๋ฆฌ ๋น๋, ์์ , ์คํ
์ฟผ๋ฆฌ ๋น๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋ด์์ ์ ํํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค. ๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์์ ์ ํ ํญ๋ชฉ์ SQL ์ฟผ๋ฆฌ๋ก ๋ณํํ๋ฉฐ, ์ด ์ฟผ๋ฆฌ๋ ํ์ธํ๊ณ ์์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฟผ๋ฆฌ ๋น๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ํ ๋ค์ SQL ํธ์ง๊ธฐ๋ก ์ ํํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ๋ฏธ์ธ ์กฐ์ ํ ์ ์์ต๋๋ค.
๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์์ ํญ์ ์ฟผ๋ฆฌ ๋น๋ ์ธํฐํ์ด์ค์ ๋ฉ๋ด ์ ํ์ SQL ์ฟผ๋ฆฌ๋ก ๋ณํํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ชจ๋ SQL ์ฟผ๋ฆฌ๊ฐ ์ฟผ๋ฆฌ ๋น๋ ์ธํฐํ์ด์ค๋ก ํํ๋ ์ ์๋ ๊ฒ์ ์๋๋๋ค. ์๋ฅผ ๋ค์ด ์กฐ์ธ์ด ์๋ ์ฟผ๋ฆฌ๋ ์ด ์ธํฐํ์ด์ค๋ก ํํํ ์ ์์ต๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ๋น๋ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
-
Google Cloud ์ฝ์์์ manage_search ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์์ผ๋ก ์ด๋
๊ฒ์์ฐฝ์ ์ฌ์ฉํ์ฌ ์ด ํ์ด์ง๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ ๋ถ์ ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์ ํํฉ๋๋ค.
์ฟผ๋ฆฌ ์ฐฝ์ SQL ํธ์ง๊ธฐ๊ฐ ํ์๋๋ฉด tune ๋น๋๋ฅผ ์ ํํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฟผ๋ฆฌ ๋น๋ ์ฐฝ์ด ์ด๋ฆฝ๋๋ค.
์์ค ๋ฉ๋ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌํ ๋ณด๊ธฐ๋ฅผ ์ ํํฉ๋๋ค. ์ ํํ ํญ๋ชฉ์ SQL ์ฟผ๋ฆฌ์
FROM์ ์ ๋งคํ๋ฉ๋๋ค.์ ํ์ฌํญ: ๋ค์ ๋ฉ๋ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ ํ๋ฅผ ์ ํํ๊ฑฐ๋ ์์์ ์ง์ ํฉ๋๋ค.
๋ชจ๋ ํ๋ ๊ฒ์: ์ผ์นํ๋ ๋ฌธ์์ด์ ๊ฒ์ํฉ๋๋ค. ์ ํํ ํญ๋ชฉ์ SQL ์ฟผ๋ฆฌ์
WHERE์ ์ ๋งคํ๋ฉ๋๋ค.์ด: ๊ฒฐ๊ณผ ํ์ ํ์ํ ์ด์ ์ ํํฉ๋๋ค. ์ ํํ ํญ๋ชฉ์ SQL ์ฟผ๋ฆฌ์
SELECT์ ์ ๋งคํ๋ฉ๋๋ค.์ด ๋ฉ๋ด์์ ํ๋ ์ด๋ฆ์ ์ ํํ๋ฉด ๋ํ์์๊ฐ ์ด๋ฆฝ๋๋ค. ์ด ๋ํ์์์์๋ ๋ค์ ์์ ์ ํ ์ ์์ต๋๋ค.
๋ฉ๋ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํ๊ฑฐ๋ ๊ทธ๋ฃนํํฉ๋๋ค.
๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํ ์ด์ ์ ์ฉํ๋ ์ง๊ณ ๋ฐ ๊ทธ๋ฃนํ๋ ๋ค๋ฅธ ์ด์๋ ์๋์ผ๋ก ์ ์ฉ๋ฉ๋๋ค. ํญ๋ชฉ์ ์ง๊ณํ๊ณ ๊ทธ๋ฃนํํ๋ ๋ฐฉ๋ฒ์ ์๋ ์ฟผ๋ฆฌ ๋น๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๊ทธ๋ฃนํ ๋ฐ ์ง๊ณ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ชจ๋ ์ ํ์ ๊ฐ์ ์ง์ ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ๋ณํํฉ๋๋ค. ์์ธํ ๋ด์ฉ์
CAST๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.์ ๊ท ํํ์์ ์ฌ์ฉํ์ฌ ๊ฐ์ ํ์ ๋ฌธ์์ด์ ์ถ์ถํฉ๋๋ค. ์์ธํ ๋ด์ฉ์
REGEXP_EXTRACT๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
ํํฐ: ํน์ ์์ฑ ๋๋ ์คํฌ ID๋ฅผ ํฌํจํ๋ ์คํฌ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์ ํํ๋ ค๋ ๊ฒฝ์ฐ ํํฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ฉ๋ด์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํํฐ ์ต์ ์ด ํ์๋ฉ๋๋ค. ์ ํํ ํญ๋ชฉ์ SQL ์ฟผ๋ฆฌ์
WHERE์ ์ ๋งคํ๋ฉ๋๋ค.์ ๋ ฌ ๊ธฐ์ค: ์ ๋ ฌํ ์ด๊ณผ ์ ๋ ฌ์ด ์ค๋ฆ์ฐจ์์ธ์ง ๋ด๋ฆผ์ฐจ์์ธ์ง ์ค์ ํฉ๋๋ค. ์ ํํ ํญ๋ชฉ์ SQL ์ฟผ๋ฆฌ์
ORDER BY์ ์ ๋งคํ๋ฉ๋๋ค.ํ๋: ๊ฒฐ๊ณผ ํ ์ด๋ธ์ ์ต๋ ํ ์๋ฅผ ์ค์ ํฉ๋๋ค. ์ ํํ ํญ๋ชฉ์ SQL ์ฟผ๋ฆฌ์
LIMIT์ ์ ๋งคํ๋ฉ๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ฉด ํด๋ฐ๋ก ์ด๋ํ์ฌ ์ฟผ๋ฆฌ ์คํ์ ์ ํํฉ๋๋ค.
๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ์ฑ ๋ถ์์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ๋ก ํ์ํฉ๋๋ค. ํ์ง๋ง ์ฐจํธ๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ ํ๋ ์ฐจํธ๋ฅผ ์ปค์คํ ๋์๋ณด๋์ ์ ์ฅํ ์๋ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ฐจํธ๋ก ํ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
ํด๋ฐ์ BigQuery์์ ์คํ์ด ํ์๋๋ฉด ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ์์ง์ ์ฌ์ฉํ๋๋ก ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ถ์์ ์ ํํด์ผ ํฉ๋๋ค. ์ด ์ค์ ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ฟผ๋ฆฌ ์ฐฝ์ ํด๋ฐ์์ settings ์ค์ ์ ํด๋ฆญํ ๋ค์ ์ ๋๋ฆฌํฑ์ค (๊ธฐ๋ณธ๊ฐ)๋ฅผ ์ ํํฉ๋๋ค.
์: ์ฟผ๋ฆฌ ๋น๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ๊ณ ์ง๊ณํ๊ธฐ
์ฟผ๋ฆฌ ๋น๋์์ ์ด์ ์ ํํ๋ฉด ๊ฐ ํ๋์ ๊ทธ๋ฃนํ ๋ฐ ์ง๊ณ๋ฅผ ์ถ๊ฐํ ์ ์๋ ๋ฉ๋ด๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ทธ๋ฃนํ๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ ์ด์์ ์ด์ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃน์ผ๋ก ์ ๋ฆฌํ ์ ์์ผ๋ฉฐ, ์ง๊ณ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๊ทธ๋ฃน์ ๋ํด ๊ณ์ฐ์ ์คํํ์ฌ ๋จ์ผ ๊ฐ์ ๋ฐํํ ์ ์์ต๋๋ค.
์ด ์์์์ ์ ํํ ๊ฐ ํ๋์๋ ๋ค์ ์ต์ ์ด ํฌํจ๋ ๋ฉ๋ด๊ฐ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค.
- ์์: ์ด ํ๋๋ก ๊ทธ๋ฃนํํ๊ฑฐ๋ ์ง๊ณํ์ง ์์ต๋๋ค.
- ์ง๊ณ: ํ๋์ ์ง๊ณ๊ฐ ์ ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ์ด ์์์ ๋์ด๋ ํ๋๋ฅผ ๊ทธ๋ฃนํํฉ๋๋ค. ์ด๋ฌํ ํ๋์ ๊ฒฝ์ฐ ๊ฐ ๊ทธ๋ฃนํ์ ๋ชจ๋ ํญ๋ชฉ์ ์์ ์ ์คํํ์ฌ ๊ฐ์ ๊ณ์ฐํฉ๋๋ค. ์์ ์ ํ๋์ ํ๊ท ์ ๊ณ์ฐํ๊ฑฐ๋ ๊ฐ ๊ทธ๋ฃน์ ํญ๋ชฉ ์๋ฅผ ๊ณ์ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
- ๊ทธ๋ฃนํ ๊ธฐ์ค: ์ด ์์์ ๋์ด๋ ๋ชจ๋ ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํญ๋ชฉ์ ๊ทธ๋ฃนํํฉ๋๋ค.
์ด ์์์์๋ ์ฟผ๋ฆฌ ๋น๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์๊ฐ, ์คํฌ ์ด๋ฆ, ์คํฌ ์ข ๋ฅ๋ณ๋ก ์คํฌ์ ๊ทธ๋ฃนํํ ๋ค์ ๊ฐ ๊ทธ๋ฃน์ ํ๊ท ์ง์ ์๊ฐ์ ๋๋ ธ์ด ๋จ์๋ก ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
- ์ด ๋ฉ๋ด์์
start_time,name,kind,duration_nanoํ๋๋ฅผ ์ ํํฉ๋๋ค. - ์์ ์๊ฐ์ ์๊ฐ ๋จ์๋ก ์๋ฅด๋ ค๋ฉด
start_time์ด์ ๋ฉ๋ด๋ฅผ ํผ์น๊ณ ๊ทธ๋ฃนํ ๊ธฐ์ค์ ์ ํํฉ๋๋ค. ์ธ๋ถ์ฌํญ ๋ฉ๋ด๊ฐ ์๊ฐ์ผ๋ก ์ค์ ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ ์ฉ์ ํด๋ฆญํฉ๋๋ค.
์ด์ ๋ํด ๊ทธ๋ฃนํ ๊ธฐ์ค์ ์ ํํ๋ฉด ์์คํ ์์ ๋ชจ๋ ์ด์ ๊ธฐ์ค์ผ๋ก ํญ๋ชฉ์ ๊ทธ๋ฃนํํฉ๋๋ค. ์ด ์์์์๋ ํญ๋ชฉ์ด
start_time, ์คํฌ ์ด๋ฆ, ์คํฌ ์ข ๋ฅ, ๊ธฐ๊ฐ ๊ฐ์ ์๋ฆฐ ๊ฐ์ผ๋ก ๊ทธ๋ฃนํ๋ฉ๋๋ค.ํ์ง๋ง ์ด ์์ ๋ชฉํ๋ ์๋ฆฐ ์๊ฐ, ์คํฌ ์ด๋ฆ, ์คํฌ ์ข ๋ฅ๋ณ๋ก ํญ๋ชฉ์ ๊ทธ๋ฃนํํ ๋ค์ ๊ฐ ๊ทธ๋ฃน์ ํ๊ท ๊ธฐ๊ฐ์ ๊ณ์ฐํ๋ ๊ฒ์ ๋๋ค. ๋ค์ ๋จ๊ณ์์๋ ๊ทธ๋ฃนํ๋ฅผ ์์ ํ๊ณ ์ง๊ณ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
duration_nanoํ๋์ ๋ฉ๋ด๋ฅผ ํผ์น๊ณ ์ง๊ณ๋ฅผ ์ ํํ ๋ค์ ์ง๊ณ ํ๋๋ฅผ ํ๊ท ์ผ๋ก ์ค์ ํฉ๋๋ค.์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ๊ฐ ํ์ ์๋ฆฐ ์๊ฐ, ์คํฌ ์ด๋ฆ, ์คํฌ ์ข ๋ฅ๋ก ๊ตฌ์ฑ๋ ๊ทธ๋ฃน์ ํด๋นํฉ๋๋ค. ๊ฐ ํ์ ๋ง์ง๋ง ํญ๋ชฉ์ ํด๋น ๊ทธ๋ฃน์ ๋ชจ๋ ํญ๋ชฉ์ ๋ํ ํ๊ท ๊ธฐ๊ฐ์ ๋๋ค.
์ด ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค.
+-----------------------------------+----------------+----------+-----------------------+ | Row | hour_timestamp | span_name | kind | average_duration_nano | | | TIMESTAMP | STRING | INTEGER | FLOAT | +-----+-----------------------------+-----------+---------------+-----------------------+ | 1 | 2025-10-09 13:00:00.000 EDT | http.receive | 3 | 122138.22813990474 | 2 | 2025-10-09 13:00:00.000 EDT | query.request | 1 | 6740819304.390297 | 3 | 2025-10-09 13:00:00.000 EDT | client.handler | 2 | 6739339098.409376์ฟผ๋ฆฌ์ ์ฌ๋ฌ ์ง๊ณ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ ๊ทธ๋ฃน์ ํญ๋ชฉ ์๋ฅผ ๊ณ์ฐํ๋ ์ด์ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- ์ด ์์์์ ์ด ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ชจ๋ (*)๋ฅผ ์ ํํฉ๋๋ค.
- ๋ํ์์์์ ์ง๊ณ๋ฅผ ์ ํํ๊ณ ์ง๊ณ์ ๊ฐ์๋ฅผ ์ ํํ ๋ค์ ์ ์ฉ์ ์ ํํฉ๋๋ค.
์ด ๋ณ๊ฒฝ์ฌํญ์ผ๋ก ์ธํด ๊ทธ๋ฃนํ๋ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค. ํญ๋ชฉ์ ์๋ฆฐ ์์ ์๊ฐ, ์คํฌ ์ด๋ฆ, ์คํฌ ์ข ๋ฅ๋ณ๋ก ๊ทธ๋ฃนํ๋ฉ๋๋ค. ํ์ง๋ง ๊ฐ ๊ทธ๋ฃน์ ๋ํด ์ฟผ๋ฆฌ๋ ํ๊ท ๊ธฐ๊ฐ๊ณผ ํญ๋ชฉ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
์ด์ ์์ ํด๋น SQL ์ฟผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
WITH
scope_query AS (
SELECT
*
FROM
`PROJECT_ID.us._Trace.Spans._AllSpans` )
SELECT
-- Report the truncated start time, span name, span kind, average duration and number
-- of entries for each group.
TIMESTAMP_TRUNC( start_time, HOUR ) AS hour_start_time,
name AS span_name,
kind,
AVG( duration_nano ) AS average_duration_nano,
COUNT( * ) AS count_all
FROM
scope_query
GROUP BY
TIMESTAMP_TRUNC( start_time, HOUR ),
name,
kind
LIMIT
100
๋ค์ ๋จ๊ณ
- Trace ์ ์ฅ์ ๊ฐ์
- SQL ์ฟผ๋ฆฌ ์ ์ฅ ๋ฐ ๊ณต์
- SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ฐจํธ๋ก ํ์
- ์ํ SQL ์ฟผ๋ฆฌ
- ์ฐ๊ฒฐ๋ BigQuery ๋ฐ์ดํฐ ์ธํธ ๋ง๋ค๊ธฐ