ํŠธ๋ ˆ์ด์Šค ์ฟผ๋ฆฌ ๋ฐ ๋ถ„์„

๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์„ ์‚ฌ์šฉํ•˜๋ฉด Cloud Trace ๋ฐ์ดํ„ฐ์— SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์„ฑ๋Šฅ ์ถ”์„ธ๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ์ง‘๊ณ„ ํ†ต๊ณ„๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ฐจํŠธ์™€ ํ‘œ๋กœ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ์ €์žฅํ•œ ๋ชจ๋“  ์ถ”์  ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ธฐ๋ณธ _AllSpans ๋ทฐ์— ๋Œ€ํ•ด ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ ์ปค์Šคํ…€ ๋Œ€์‹œ๋ณด๋“œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ณ„ trace, ์ŠคํŒฌ ๋˜๋Š” ์ŠคํŒฌ ์†์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋ ค๋ฉด Trace ํƒ์ƒ‰๊ธฐ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ trace ์ฐพ๊ธฐ ๋ฐ ํƒ์ƒ‰์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์—ฐ๊ฒฐ๋œ BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ •๋ณด

์ถ”์  ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•˜๊ฑฐ๋‚˜ ์ถ”์  ๋ฐ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•˜๋Š” ๋ฐ ์—ฐ๊ฒฐ๋œ BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์œผ๋กœ ๋กœ๊ทธ ์ฟผ๋ฆฌ ๋ฐ ๋ถ„์„์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์—ฐ๊ฒฐ๋œ BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ํŠธ๋ ˆ์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ์™€ ์กฐ์ธํ•ฉ๋‹ˆ๋‹ค.
  • BigQuery Studio ํŽ˜์ด์ง€ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠœ๋””์˜ค์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์—์„œ ํŠธ๋ ˆ์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • BigQuery ์˜ˆ์•ฝ๋œ ์Šฌ๋กฏ์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ์•Œ๋ฆผ ์ •์ฑ…์œผ๋กœ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง

์ด ๋ฌธ์„œ์—์„œ๋Š” ์—ฐ๊ฒฐ๋œ BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด๋‚˜ ์˜ˆ์•ฝ๋œ ์Šฌ๋กฏ์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฃผ์ œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฐ๊ฒฐ๋œ BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

  1. Google Cloud ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. Google Cloud๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  Google ์ œํ’ˆ์˜ ์‹ค์ œ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•ด ๋ณด์„ธ์š”. ์‹ ๊ทœ ๊ณ ๊ฐ์—๊ฒŒ๋Š” ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” $300์˜ ๋ฌด๋ฃŒ ํฌ๋ ˆ๋”ง์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Observability API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the API

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Observability API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the API

  8. ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ , ์ถ”์  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋น„๊ณต๊ฐœ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑ, ์‹คํ–‰, ์ €์žฅํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋‹ค์Œ IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”.

    • ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ทฐ ์ ‘๊ทผ์ž (roles/observability.viewAccessor) ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ญํ• ์€ IAM ์กฐ๊ฑด์„ ์ง€์›ํ•˜๋ฏ€๋กœ ํŠน์ • ๋ทฐ์— ๋Œ€ํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ญํ•  ๋ถ€์—ฌ์— ์กฐ๊ฑด์„ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์œผ๋ฉด ์ฃผ ๊ตฌ์„ฑ์›์ด ๋ชจ๋“  ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ทฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ์‚ฌ์šฉ์ž (roles/observability.analyticsUser) ์ด ์—ญํ• ์—๋Š” ๋น„๊ณต๊ฐœ ์ฟผ๋ฆฌ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ณ  ๊ณต์œ  ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์ปค์Šคํ…€ ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํ‚ค๋งˆ ํ‘œ์‹œ

์Šคํ‚ค๋งˆ๋Š” ํ•„๋“œ์™€ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ํฌํ•จํ•˜์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋Š” ์Šคํ‚ค๋งˆ์— ๋”ฐ๋ผ ์ฟผ๋ฆฌํ•  ํ•„๋“œ์™€ ํ•„๋“œ๋ฅผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ๊ฒฐ์ •๋˜๋ฏ€๋กœ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด HTTP ์š”์ฒญ์˜ ํ‰๊ท  ์ง€์—ฐ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์ง€์—ฐ ์‹œ๊ฐ„ ํ•„๋“œ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ •์ˆ˜(์˜ˆ: 100)๋กœ ์ €์žฅ๋˜๋Š”์ง€ ๋˜๋Š” ๋ฌธ์ž์—ด(์˜ˆ: "100")๋กœ ์ €์žฅ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€์—ฐ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌธ์ž์—ด๋กœ ์ €์žฅ๋œ ๊ฒฝ์šฐ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์ „์— ์ฟผ๋ฆฌ๊ฐ€ ๊ฐ’์„ ์ˆซ์ž ๊ฐ’์œผ๋กœ ํ˜• ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šคํ‚ค๋งˆ๋ฅผ ์‹๋ณ„ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Google Cloud ์ฝ˜์†”์—์„œ ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์œผ๋กœ ์ด๋™

    ๊ฒ€์ƒ‰์ฐฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํŽ˜์ด์ง€๋ฅผ ์ฐพ์€ ๊ฒฝ์šฐ ๋ถ€์ œ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ทฐ ๋ฉ”๋‰ด์—์„œ ํŠธ๋ ˆ์ด์Šค ์„น์…˜์œผ๋กœ ์ด๋™ํ•œ ๋‹ค์Œ _Trace.Spans._AllSpans๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์Šคํ‚ค๋งˆ ์ฐฝ์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์€ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด JSON์ธ ๊ฒฝ์šฐ ์—ด์˜ ํ•„๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ถ”๋ก ๋œ ํ•„๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ์— ํ‘œ์‹œ๋˜๋Š” ๋นˆ๋„๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ์˜ต์…˜์„ ํด๋ฆญํ•˜๊ณ  ์ •๋ณด ๋ฐ ์„ค๋ช… ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๋ฉด trace ๋ฐ์ดํ„ฐ์˜ ์Šคํ† ๋ฆฌ์ง€ ์Šคํ‚ค๋งˆ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    _Trace.Spans._AllSpans๋ผ๋Š” ๋ทฐ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉดGoogle Cloud ํ”„๋กœ์ ํŠธ์— _Trace๋ผ๋Š” ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ฒ„ํ‚ท์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์‹คํŒจ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ถ”์  ์ €์žฅ์†Œ ์ดˆ๊ธฐํ™” ์‹คํŒจ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

trace ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ

์ด ์„น์…˜์—์„œ๋Š” ํŠธ๋ ˆ์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • ์‹œ์Šคํ…œ ์ •์˜ ์ฟผ๋ฆฌ๋ฅผ ๋กœ๋“œํ•˜๊ณ , ์ด ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งž์ถค ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ์กด ์ฟผ๋ฆฌ๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งž์ถค ์ฟผ๋ฆฌ์—๋Š” ์กฐ์ธ, ์ค‘์ฒฉ๋œ ์ฟผ๋ฆฌ, ๊ธฐํƒ€ ๋ณต์žกํ•œ SQL ๋ฌธ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋Š” ์ƒ˜ํ”Œ SQL ์ฟผ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•œ ๋‹ค์Œ ํ•ด๋‹น ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์€ ์„ ํƒํ•œ ํ•ญ๋ชฉ์„ SQL ์ฟผ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉฐ, ์ด ์ฟผ๋ฆฌ๋Š” ํ™•์ธํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์ •์˜ ์ฟผ๋ฆฌ ๋กœ๋“œ, ์ˆ˜์ •, ์‹คํ–‰

  1. Google Cloud ์ฝ˜์†”์—์„œ ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์œผ๋กœ ์ด๋™

    ๊ฒ€์ƒ‰์ฐฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํŽ˜์ด์ง€๋ฅผ ์ฐพ์€ ๊ฒฝ์šฐ ๋ถ€์ œ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ทฐ ๋ฉ”๋‰ด์—์„œ ํŠธ๋ ˆ์ด์Šค ์„น์…˜์œผ๋กœ ์ด๋™ํ•œ ๋‹ค์Œ _Trace.Spans._AllSpans๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    _Trace.Spans._AllSpans๋ผ๋Š” ๋ทฐ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉดGoogle Cloud ํ”„๋กœ์ ํŠธ์— _Trace๋ผ๋Š” ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ฒ„ํ‚ท์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์‹คํŒจ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ถ”์  ์ €์žฅ์†Œ ์ดˆ๊ธฐํ™” ์‹คํŒจ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

  3. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • ๋ฉ”๋‰ด ์„ ํƒ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ ๋นŒ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ ์ •์˜ ์ฟผ๋ฆฌ๋ฅผ ๋กœ๋“œํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ ์ฐฝ์— ์ฟผ๋ฆฌ ๋นŒ๋”๊ฐ€ ํ‘œ์‹œ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. SQL ํŽธ์ง‘๊ธฐ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ย ๋นŒ๋”๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    • JSON ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š” ์‹œ์Šคํ…œ ์ •์˜ ์ฟผ๋ฆฌ๋ฅผ ๋กœ๋“œํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ ์ฐฝ์— SQL ํŽธ์ง‘๊ธฐ๊ฐ€ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฐฝ์— ์ฟผ๋ฆฌ ๋นŒ๋”๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ย SQL์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์Šคํ‚ค๋งˆ ์ฐฝ์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ๋ฎ์–ด์“ฐ๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ฟผ๋ฆฌ ์ฐฝ์— ์‹œ์Šคํ…œ ์ •์˜ ์ฟผ๋ฆฌ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๋นŒ๋” ๋ชจ๋“œ๋ฅผ ์„ ํƒํ–ˆ์ง€๋งŒ SQL ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ ค๋ฉด ย SQL์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์„ ํƒ์‚ฌํ•ญ: ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

  6. ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํˆด๋ฐ”๋กœ ์ด๋™ํ•˜์—ฌ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์€ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฐจํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ‘œ๋‚˜ ์ฐจํŠธ๋ฅผ ์ปค์Šคํ…€ ๋Œ€์‹œ๋ณด๋“œ์— ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ฐจํŠธ๋กœ ํ‘œ์‹œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    ํˆด๋ฐ”์— BigQuery์—์„œ ์‹คํ–‰์ด ํ‘œ์‹œ๋˜๋ฉด ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์„ ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ ์ฐฝ์˜ ํˆด๋ฐ”์—์„œ ์„ค์ •์„ ํด๋ฆญํ•œ ๋‹ค์Œ ์• ๋„๋ฆฌํ‹ฑ์Šค (๊ธฐ๋ณธ๊ฐ’)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋งž์ถค ์ฟผ๋ฆฌ ์ž…๋ ฅ ๋ฐ ์‹คํ–‰

SQL ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Google Cloud ์ฝ˜์†”์—์„œ ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์œผ๋กœ ์ด๋™

    ๊ฒ€์ƒ‰์ฐฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํŽ˜์ด์ง€๋ฅผ ์ฐพ์€ ๊ฒฝ์šฐ ๋ถ€์ œ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  2. ์ฟผ๋ฆฌ ์ฐฝ์—์„œ ย SQL์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    • ๊ธฐ๊ฐ„์„ ์ง€์ •ํ•˜๋ ค๋ฉด ๊ธฐ๊ฐ„ ์„ ํƒ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. timestamp ํ•„๋“œ๋ฅผ ์ง€์ •ํ•˜๋Š” WHERE ์ ˆ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด ๊ฐ’์ด ๊ธฐ๊ฐ„ ์„ ํƒ๊ธฐ์˜ ์„ค์ •์„ ์žฌ์ •์˜ํ•˜๊ณ  ํ•ด๋‹น ์„ ํƒ๊ธฐ๋Š” ์‚ฌ์šฉ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

    • ์˜ˆ์‹œ๋Š” ์ƒ˜ํ”Œ SQL ์ฟผ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    • SQL ํŽธ์ง‘๊ธฐ์— _Trace.Spans._AllSpans ๋ทฐ์˜ ์ •๊ทœํ™”๋œ ์ด๋ฆ„์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

      FROM `PROJECT_ID.LOCATION._Trace.Spans._AllSpans`

      ์ด์ „ ํ‘œํ˜„์‹์˜ ํ•„๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

      ์ฟผ๋ฆฌ ์ฐฝ์— FROM ๋ฌธ์„ ์ฐธ์กฐํ•˜๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋ทฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์‹คํŒจ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ทฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

  3. ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํˆด๋ฐ”๋กœ ์ด๋™ํ•˜์—ฌ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์€ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฐจํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ‘œ๋‚˜ ์ฐจํŠธ๋ฅผ ์ปค์Šคํ…€ ๋Œ€์‹œ๋ณด๋“œ์— ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ฐจํŠธ๋กœ ํ‘œ์‹œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    ํˆด๋ฐ”์— BigQuery์—์„œ ์‹คํ–‰์ด ํ‘œ์‹œ๋˜๋ฉด ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์„ ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ ์ฐฝ์˜ ํˆด๋ฐ”์—์„œ ์„ค์ •์„ ํด๋ฆญํ•œ ๋‹ค์Œ ์• ๋„๋ฆฌํ‹ฑ์Šค (๊ธฐ๋ณธ๊ฐ’)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ๋นŒ๋“œ, ์ˆ˜์ •, ์‹คํ–‰

์ฟผ๋ฆฌ ๋นŒ๋” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋‰ด์—์„œ ์„ ํƒํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์€ ์„ ํƒ ํ•ญ๋ชฉ์„ SQL ์ฟผ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉฐ, ์ด ์ฟผ๋ฆฌ๋Š” ํ™•์ธํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฟผ๋ฆฌ ๋นŒ๋” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ํ•œ ๋‹ค์Œ SQL ํŽธ์ง‘๊ธฐ๋กœ ์ „ํ™˜ํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ๋ฏธ์„ธ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์€ ํ•ญ์ƒ ์ฟผ๋ฆฌ ๋นŒ๋” ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”๋‰ด ์„ ํƒ์„ SQL ์ฟผ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  SQL ์ฟผ๋ฆฌ๊ฐ€ ์ฟผ๋ฆฌ ๋นŒ๋” ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์กฐ์ธ์ด ์žˆ๋Š” ์ฟผ๋ฆฌ๋Š” ์ด ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์œผ๋กœ ์ด๋™

    ๊ฒ€์ƒ‰์ฐฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํŽ˜์ด์ง€๋ฅผ ์ฐพ์€ ๊ฒฝ์šฐ ๋ถ€์ œ๋ชฉ์ด Logging์ธ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  2. ์ฟผ๋ฆฌ ์ฐฝ์— SQL ํŽธ์ง‘๊ธฐ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋นŒ๋”๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ฟผ๋ฆฌ ๋นŒ๋” ์ฐฝ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค.

  3. ์†Œ์Šค ๋ฉ”๋‰ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌํ•  ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ํ•ญ๋ชฉ์€ SQL ์ฟผ๋ฆฌ์˜ FROM ์ ˆ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

  4. ์„ ํƒ์‚ฌํ•ญ: ๋‹ค์Œ ๋ฉ”๋‰ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ ํ‘œ๋ฅผ ์ œํ•œํ•˜๊ฑฐ๋‚˜ ์„œ์‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    • ๋ชจ๋“  ํ•„๋“œ ๊ฒ€์ƒ‰: ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ํ•ญ๋ชฉ์€ SQL ์ฟผ๋ฆฌ์˜ WHERE ์ ˆ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

    • ์—ด: ๊ฒฐ๊ณผ ํ‘œ์— ํ‘œ์‹œํ•  ์—ด์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ํ•ญ๋ชฉ์€ SQL ์ฟผ๋ฆฌ์˜ SELECT ์ ˆ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

      ์ด ๋ฉ”๋‰ด์—์„œ ํ•„๋“œ ์ด๋ฆ„์„ ์„ ํƒํ•˜๋ฉด ๋Œ€ํ™”์ƒ์ž๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋Œ€ํ™”์ƒ์ž์—์„œ๋Š” ๋‹ค์Œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      • ๋ฉ”๋‰ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.

        ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•œ ์—ด์— ์ ์šฉํ•˜๋Š” ์ง‘๊ณ„ ๋ฐ ๊ทธ๋ฃนํ™”๋Š” ๋‹ค๋ฅธ ์—ด์—๋„ ์ž๋™์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์„ ์ง‘๊ณ„ํ•˜๊ณ  ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ๋Š” ์ฟผ๋ฆฌ ๋นŒ๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ทธ๋ฃนํ™” ๋ฐ ์ง‘๊ณ„๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

      • ๋ชจ๋“  ์œ ํ˜•์˜ ๊ฐ’์„ ์ง€์ •๋œ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ CAST ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

      • ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์˜ ํ•˜์œ„ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ REGEXP_EXTRACT ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    • ํ•„ํ„ฐ: ํŠน์ • ์†์„ฑ ๋˜๋Š” ์ŠคํŒฌ ID๋ฅผ ํฌํ•จํ•˜๋Š” ์ŠคํŒฌ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ œํ•œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋‰ด์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํ•„ํ„ฐ ์˜ต์…˜์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ํ•ญ๋ชฉ์€ SQL ์ฟผ๋ฆฌ์˜ WHERE ์ ˆ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

    • ์ •๋ ฌ ๊ธฐ์ค€: ์ •๋ ฌํ•  ์—ด๊ณผ ์ •๋ ฌ์ด ์˜ค๋ฆ„์ฐจ์ˆœ์ธ์ง€ ๋‚ด๋ฆผ์ฐจ์ˆœ์ธ์ง€ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ํ•ญ๋ชฉ์€ SQL ์ฟผ๋ฆฌ์˜ ORDER BY ์ ˆ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

    • ํ•œ๋„: ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์˜ ์ตœ๋Œ€ ํ–‰ ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ํ•ญ๋ชฉ์€ SQL ์ฟผ๋ฆฌ์˜ LIMIT ์ ˆ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

  5. ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํˆด๋ฐ”๋กœ ์ด๋™ํ•˜์—ฌ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์€ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฐจํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ‘œ๋‚˜ ์ฐจํŠธ๋ฅผ ์ปค์Šคํ…€ ๋Œ€์‹œ๋ณด๋“œ์— ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ฐจํŠธ๋กœ ํ‘œ์‹œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    ํˆด๋ฐ”์— BigQuery์—์„œ ์‹คํ–‰์ด ํ‘œ์‹œ๋˜๋ฉด ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์„ ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ ์ฐฝ์˜ ํˆด๋ฐ”์—์„œ ์„ค์ •์„ ํด๋ฆญํ•œ ๋‹ค์Œ ์• ๋„๋ฆฌํ‹ฑ์Šค (๊ธฐ๋ณธ๊ฐ’)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ: ์ฟผ๋ฆฌ ๋นŒ๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์ง‘๊ณ„ํ•˜๊ธฐ

์ฟผ๋ฆฌ ๋นŒ๋”์—์„œ ์—ด์„ ์„ ํƒํ•˜๋ฉด ๊ฐ ํ•„๋“œ์— ๊ทธ๋ฃนํ™” ๋ฐ ์ง‘๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋‰ด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃนํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜ ์ด์ƒ์˜ ์—ด์˜ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ง‘๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๊ทธ๋ฃน์— ๋Œ€ํ•ด ๊ณ„์‚ฐ์„ ์‹คํ–‰ํ•˜์—ฌ ๋‹จ์ผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ด ์š”์†Œ์—์„œ ์„ ํƒํ•œ ๊ฐ ํ•„๋“œ์—๋Š” ๋‹ค์Œ ์˜ต์…˜์ด ํฌํ•จ๋œ ๋ฉ”๋‰ด๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์—†์Œ: ์ด ํ•„๋“œ๋กœ ๊ทธ๋ฃนํ™”ํ•˜๊ฑฐ๋‚˜ ์ง‘๊ณ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ง‘๊ณ„: ํ•„๋“œ์— ์ง‘๊ณ„๊ฐ€ ์„ ํƒ๋œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์—ด ์š”์†Œ์— ๋‚˜์—ด๋œ ํ•„๋“œ๋ฅผ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•„๋“œ์˜ ๊ฒฝ์šฐ ๊ฐ ๊ทธ๋ฃนํ™”์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ์ž‘์—…์„ ์‹คํ–‰ํ•˜์—ฌ ๊ฐ’์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์€ ํ•„๋“œ์˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜๊ฑฐ๋‚˜ ๊ฐ ๊ทธ๋ฃน์˜ ํ•ญ๋ชฉ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฃนํ™” ๊ธฐ์ค€: ์—ด ์š”์†Œ์— ๋‚˜์—ด๋œ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ญ๋ชฉ์„ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ๋Š” ์ฟผ๋ฆฌ ๋นŒ๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ ์‹œ๊ฐ„, ์ŠคํŒฌ ์ด๋ฆ„, ์ŠคํŒฌ ์ข…๋ฅ˜๋ณ„๋กœ ์ŠคํŒฌ์„ ๊ทธ๋ฃนํ™”ํ•œ ๋‹ค์Œ ๊ฐ ๊ทธ๋ฃน์˜ ํ‰๊ท  ์ง€์† ์‹œ๊ฐ„์„ ๋‚˜๋…ธ์ดˆ ๋‹จ์œ„๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  1. ์—ด ๋ฉ”๋‰ด์—์„œ start_time, name, kind, duration_nano ํ•„๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ์‹œ์ž‘ ์‹œ๊ฐ„์„ ์‹œ๊ฐ„ ๋‹จ์œ„๋กœ ์ž๋ฅด๋ ค๋ฉด start_time ์—ด์˜ ๋ฉ”๋‰ด๋ฅผ ํŽผ์น˜๊ณ  ๊ทธ๋ฃนํ™” ๊ธฐ์ค€์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์„ธ๋ถ€์‚ฌํ•ญ ๋ฉ”๋‰ด๊ฐ€ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ์ ์šฉ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์—ด์— ๋Œ€ํ•ด ๊ทธ๋ฃนํ™” ๊ธฐ์ค€์„ ์„ ํƒํ•˜๋ฉด ์‹œ์Šคํ…œ์—์„œ ๋ชจ๋“  ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ํ•ญ๋ชฉ์„ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ํ•ญ๋ชฉ์ด start_time, ์ŠคํŒฌ ์ด๋ฆ„, ์ŠคํŒฌ ์ข…๋ฅ˜, ๊ธฐ๊ฐ„ ๊ฐ’์˜ ์ž˜๋ฆฐ ๊ฐ’์œผ๋กœ ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค.

    ํ•˜์ง€๋งŒ ์ด ์˜ˆ์˜ ๋ชฉํ‘œ๋Š” ์ž˜๋ฆฐ ์‹œ๊ฐ„, ์ŠคํŒฌ ์ด๋ฆ„, ์ŠคํŒฌ ์ข…๋ฅ˜๋ณ„๋กœ ํ•ญ๋ชฉ์„ ๊ทธ๋ฃนํ™”ํ•œ ๋‹ค์Œ ๊ฐ ๊ทธ๋ฃน์˜ ํ‰๊ท  ๊ธฐ๊ฐ„์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ๊ทธ๋ฃนํ™”๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ง‘๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  4. 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
    
  5. ์ฟผ๋ฆฌ์— ์—ฌ๋Ÿฌ ์ง‘๊ณ„๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ ๊ทธ๋ฃน์˜ ํ•ญ๋ชฉ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์—ด์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ์—ด ์š”์†Œ์—์„œ ์—ด ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    2. ๋ชจ๋‘ (*)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    3. ๋Œ€ํ™”์ƒ์ž์—์„œ ์ง‘๊ณ„๋ฅผ ์„ ํƒํ•˜๊ณ  ์ง‘๊ณ„์— ๊ฐœ์ˆ˜๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ์ ์šฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ๊ทธ๋ฃนํ™”๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์€ ์ž˜๋ฆฐ ์‹œ์ž‘ ์‹œ๊ฐ„, ์ŠคํŒฌ ์ด๋ฆ„, ์ŠคํŒฌ ์ข…๋ฅ˜๋ณ„๋กœ ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ ๊ทธ๋ฃน์— ๋Œ€ํ•ด ์ฟผ๋ฆฌ๋Š” ํ‰๊ท  ๊ธฐ๊ฐ„๊ณผ ํ•ญ๋ชฉ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ์˜ˆ์˜ ํ•ด๋‹น 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

๋‹ค์Œ ๋‹จ๊ณ„