2022/03/11 Observability Conference 2022 イベントURL : https://event.cloudnativedays.jp/o11y2022
݄ؒಈը࠶ੜ2ԯճΛࢧ͑Δ TVerͷΦϒβʔόϏϦςΟגࣜձࣾ TVer / Ճզ وࢤ2022/03/11Observability Conference 2022
View Slide
͜ͷηογϣϯʹ͍ͭͯຊ͓͢Δ͜ͱ● TVerʹ͓͚ΔΦϒβʔόϏϦςΟ࣮ݱϓϩηε● New Relic Oneͷ׆༻ࣄྫ
͜ͷηογϣϯʹ͍ͭͯओͳλʔήοτ● ͜Ε͔ΒΦϒβʔόϏϦςΟΛ࣮ݱ͍ͨ͠● πʔϧಋೖ͚ͨ͠Ͳ׆༻ͰΜͰ͍Δ● New Relic Oneͷ͍ํʹڵຯ͕͋ΔडߨऀϨϕϧ● ΦϒβʔόϏϦςΟॳڃऀ🔰
ΞδΣϯμ● TVerͷհ● αʔϏεͷͱݟ͖͑ͯͨ՝● New Relic OneಋೖʹΑΔվળͷτϥΠ● ΦϒβʔόϏϦςΟ࠶ઃܭ● New Relic Oneͷ׆༻ࣄྫ● ·ͱΊ
TVerͷհ
TVerͷհ[TVer] ྦྷܭΞϓϦμϯϩʔυ͕4,000ສಥഁʂ ϨΪϡϥʔͷ৴൪400൪ʹ https://tver.co.jp/news/20210825-1.html
TVerͷհ[TVer] 202110݄ͷ݄ؒಈը࠶ੜ͕ॳͷ2ԯճΛಥഁʂʙࡢಉ݄ൺ̎ഒʹɺίωΫςουTVࢹௌ৳͕ཁҼʙ https://tver.co.jp/news/20211112-1.html
TVerͷओཁͳٕज़ελοΫ
TVerͷΠϯϑϥετϥΫνϟ
TVer (WebαʔϏε) ͷΠϯϑϥετϥΫνϟ
αʔϏεͷͱݟ͖͑ͯͨ՝
αʔϏεͷͱݟ͖͑ͯͨ՝TVerͷར༻ऀ͕૿Ճ (Ϣʔβʔ / ࠂओ)↓ࣾձతͳӨڹ͕ߴ͍ϓϥοτϑΥʔϜ↓ϞχλϦϯάपΓͷվળ͕՝
αʔϏεͷͱݟ͖͑ͯͨ՝ϞχλϦϯάपΓͷ՝● ϢʔβʔମݧͷѲ● Մ༻ੑύϑΥʔϚϯεͷՄࢹԽ● ൃੜ࣌ͷਝͳղܾ● ϓϩΞΫςΟϒͳϞχλϦϯά● SLI / SLOʹΑΔ৴པੑͷՄࢹԽ
αʔϏεͷͱݟ͖͑ͯͨ՝γεςϜͷ؍ଌൣғΛ͛Δඞཁ͕͋Δ
New Relic OneಋೖʹΑΔվળͷτϥΠ[࠶ܝ] ϞχλϦϯάपΓͷ՝● ϢʔβʔମݧͷѲ● Մ༻ੑύϑΥʔϚϯεͷՄࢹԽ● ൃੜ࣌ͷਝͳղܾ● ϓϩΞΫςΟϒͳϞχλϦϯά● SLI / SLOʹΑΔ৴པੑͷՄࢹԽγεςϜͷ؍ଌൣғΛ͛Δඞཁ͕͋Δ
New Relic OneಋೖʹΑΔվળͷτϥΠ
New Relic OneಋೖʹΑΔվળͷτϥΠWhy New Relic One● ڧྗͳϑϩϯτΤϯυϞχλϦϯά● ΦϒβʔόϏϦςΟϓϥοτϑΥʔϜ● શํҐͰͷϞχλϦϯά͕Մೳ
New Relic OneಋೖʹΑΔվળͷτϥΠಋೖͷྲྀΕ● αʔόαΠυΤϯδχΞ͕ಋೖΛݗҾ● New RelicࣾੵۃతʹಋೖΛαϙʔτ
New Relic OneಋೖʹΑΔվળͷτϥΠNRU101 New Relic One ೖ https://newrelic.com/jp/resources/presentations/nru101_20211027
New Relic OneಋೖʹΑΔվળͷτϥΠɹ“ಈը৴ࢢͷ֦େʹͬͯߴ·Γଓ͚ΔϢʔβʔɺ ɹࠂओํ͔ΒͷधཁʹԠ͑ΔͨΊʹɺαʔϏεͷ ɹՔಇঢ়گෛՙঢ়گɺϢʔβʔͷࢹௌମݧΛৗʹѲ͠ɺ ɹҟৗͷൃݟͱݪҼͷಛఆɾղܾΛਝ͔ͭޮతʹ ɹߦ͑ΔڥΛඋ͢Δඞཁ͕͋Γ·ͨ͠ɻ”TVerɺΦϒβʔόϏϦςΟʢՄ؍ଌੑʣϓϥοτϑΥʔϜʮNew Relic OneʯΛಋೖ https://newrelic.com/jp/press-release/20210302
New Relic OneಋೖʹΑΔվળͷτϥΠNew Relic Oneͷಋೖঢ়گ (202112݄)● ΠϯςάϨʔγϣϯ● ΠϯϑϥετϥΫνϟʔϞχλϦϯά● ϒϥβϞχλϦϯά● ϞόΠϧϞχλϦϯά● ֎ܗࢹ
New Relic OneಋೖʹΑΔվળͷτϥΠΦϒβʔόϏϦςΟΛ࣮ݱ͢ΔͨΊʹԿΛ͢Ε͍͍ͩΖ͏͔
1. New Relicͷࢥ͔ΒΦϒβʔόϏϦςΟΛֶͿ
ΦϒβʔόϏϦςΟ࠶ઃܭNew Relicͷߟ͑ΔΦϒβʔόϏϦςΟ(1)“ࢹࣄલʹఆٛ͞Εͨҟৗ͕ى͖ͨͱ͖ʹ୯ʹ௨͢Δ͚ͩ Ͱ͕͢ɺΦϒβʔόϏϦςΟͰͳͥى͖͔ͨѲ͢Δॿ͚ʹ ͳΓ·͢ɻͦΕʹΑΓνʔϜɺۓٸࣄଶͰਝ͔ͭ༗ޮʹରԠ Ͱ͖ɺظతͳΞϓϦέʔγϣϯύϑΥʔϚϯεͷվળʹऔΓΉ ͜ͱ͕Ͱ͖·͢ɻ”ϞμϯͳՄ؍ଌੑʢΦϒβʔόϏϦςΟʣͱͳʹ͔ https://newrelic.com/jp/blog/best-practices/what-is-modern-observability
ΦϒβʔόϏϦςΟ࠶ઃܭNew Relicͷߟ͑ΔΦϒβʔόϏϦςΟ(2)“New Relic ϝτϦΫεɺΠϕϯτɺϩάɺ͓ΑͼτϨʔε ʢMELT : Metrics, Events, Logs, TracesʣΛՄ؍ଌੑ࣮ݱͷ جຊతͳσʔλλΠϓͩͱߟ͍͑ͯ·͢ɻ ͯ͢Λܭଌ͠ɺMELTΛ༻ͯ͠γεςϜͷؔͱґଘؔɺ ͦͯͦ͠ͷৄࡉͳύϑΥʔϚϯεͱਖ਼ৗੑΛҡ࣋͢Δ͜ͱ͕ Մ؍ଌੑΛ࣮ݱ͢ΔͨΊʹॏཁͰ͢ɻ”Metrics, Events, Logs, Traces ͬͯͳΜͩʁ https://newrelic.com/jp/blog/how-to-relic/metrics-events-logs-and-traces
2. Google͔ΒΦϒβʔόϏϦςΟΛֶͿ
ΦϒβʔόϏϦςΟ࠶ઃܭGoogleͷߟ͑ΔΦϒβʔόϏϦςΟ(1) “ϞχλϦϯάɺνʔϜ͕γεςϜͷঢ়ଶΛࢹͯ͠ѲͰ͖ΔΑ͏ʹ͢Δπʔϧٕज़తͳιϦϡʔγϣϯͰ͢ɻϞχλϦϯάͰɺࣄલʹఆٛͨ͠ࢦඪϩάͷऩूΛߦ͍·͢ɻΦϒβʔόϏϦςΟɺνʔϜ͕γεςϜͷσόοάΛੵۃతʹߦ͑ΔΑ͏ʹ͢Δπʔϧٕज़తͳιϦϡʔγϣϯͰ͢ɻΦϒβʔόϏϦςΟͰɺࣄલʹఆٛ͞Ε͍ͯͳ͍ϓϩύςΟͱύλʔϯͷௐࠪΛߦ͍·͢ɻ”DevOps ଌఆ: ϞχλϦϯάͱΦϒβʔόϏϦςΟ https://cloud.google.com/architecture/devops/devops-measurement-monitoring-and-observability
ΦϒβʔόϏϦςΟ࠶ઃܭGoogleͷߟ͑ΔΦϒβʔόϏϦςΟ(2) “ϗϫΠτϘοΫε ϞχλϦϯάϞχλϦϯάͱΦϒβʔόϏϦςΟɺϫʔΫϩʔυ͔ΒϞχλϦϯά γεςϜʹૹ৴͞ΕΔγάφϧʹґଘ͠·͢ɻ࠷Ұൠతͳཁૉͱͯ͠ɺࢦඪɺϩάɺτϨʔεͷ 3 ͕ͭ͋Γ·͢ɻҰ෦ͷϞχλϦϯά γεςϜͰΠϕϯτΛͯ͠ใࠂ͠·͢ɻΠϕϯτɺγεςϜͰͷϢʔβʔͷૢ࡞γεςϜࣗମͷঢ়ଶͷมԽΛද͠·͢ɻ”DevOps ଌఆ: ϞχλϦϯάͱΦϒβʔόϏϦςΟ https://cloud.google.com/architecture/devops/devops-measurement-monitoring-and-observability
ΦϒβʔόϏϦςΟશʹཧղͨ͠
ΦϒβʔόϏϦςΟ࠶ઃܭ[ํ] શͯͷγεςϜͰMELTΛܭଌ͢Δ● ☑ ΠϯςάϨʔγϣϯ (֦ॆ)● ☑ ΠϯϑϥετϥΫνϟʔϞχλϦϯά● ☑ ϒϥβϞχλϦϯά● ☑ ϞόΠϧϞχλϦϯά● ☑ ֎ܗࢹ● ☐ APM (Ճ)● ☐ Log Management (Ճ)
ΦϒβʔόϏϦςΟ࠶ઃܭ[มߋ]AWS Integrationͷվળ ɹɾར༻͍ͯ͠ΔશͯͷAWS ɹɹαʔϏεͷϝτϦΫεऔಘNew Relic Go AgentͷՃ ɹɾAPMՃ ɹɾLogs in contextՃ
ΦϒβʔόϏϦςΟ࠶ઃܭ͔͠͠ɾɾɾ● Logs in context -> อཹ→ΞϓϦέʔγϣϯͷϩΪϯάपΓͷઃܭ͕ ɹݻ·ͬͨஈ֊ͰվΊͯਖ਼ࣜಋೖ ɹ(Fargate -> CloudWatch LogsͰ༻)
ΦϒβʔόϏϦςΟ࠶ઃܭbeforeɹɹMetricsɹɹEventsɹɹLogsɹɹTracesɹafterɹɹɹMetricsɹɹɹEventsɹɹɹLogsɹɹɹTraces
ΦϒβʔόϏϦςΟ࠶ઃܭ[before] ෦తʹMELT͕ ຬͨ͞Ε͍ͯΔঢ়ଶ ɾAWS Integration ɹMetrics & EventsɾBrowser(Mobile)Agent ɹMetrics & EventsɾInfrastructure Agent ɹMetrics & Events
ΦϒβʔόϏϦςΟ࠶ઃܭ[after] MELT͕શͯ ຬͨ͞Ε͍ͯΔঢ়ଶ ɾAWS Integration ɹMetrics & EventsɾCloudWatch Logs ɹto New Relic One ɹLogsɾBrowser(Mobile)Agent ɹMetrics & EventsɾGo Agent ɹMetrics & TracesɾInfrastructure Agent ɹMetrics & Events
New Relic Oneͷ׆༻ࣄྫNew Relic One Platform https://newrelic.com/jp/platform
ΞϓϦέʔγϣϯ ϞχλϦϯά (APM)
ΞϓϦέʔγϣϯϞχλϦϯά (APM)ΞϓϦέʔγϣϯϞχλϦϯά (APM) ͱ● ϦΫΤετʙϨεϙϯεͷҰ࿈ͷॲཧΛՄࢹԽ● ΞϓϦέʔγϣϯͷύϑΥʔϚϯεΛՄࢹԽओͳ༻్● ΞϓϦέʔγϣϯΤϥʔͷݪҼௐࠪ● APIΤϯυϙΠϯτͷύϑΥʔϚϯεܭଌ
ΞϓϦέʔγϣϯϞχλϦϯά (APM)import ("github.com/newrelic/go-agent/v3/newrelic""github.com/newrelic/go-agent/v3/integrations/nrecho-v3")func main() {app, err := newrelic.NewApplication(newrelic.ConfigAppName("my test app"),newrelic.ConfigLicense("__YOUR_NEW_RELIC_LICENSE_KEY__"),)}GoΞϓϦέʔγϣϯͷಋೖ
ΞϓϦέʔγϣϯϞχλϦϯά (APM)༨ஊ : Instant Observability (༷ʑͳIntegration)
ΞϓϦέʔγϣϯϞχλϦϯά (APM)ಋೖ࣌ͷۤ࿑● New Relic Go Agentͷಋೖ͕͠ΜͲ͍○ ਖ਼֬ͳτϨʔεใΛٻΊΔ߹ɺ ෳͷfunctionʹίʔυΛૠೖ͢Δඞཁ͕͋Δ○ ΫϦʔϯͳಋೖํ๏͕ग़ͨ߹ɺ ૠೖͨ͠ίʔυΛফ͢ඞཁ͕͋ΔͷͰʁ○ pprofΛ׆༻Ͱ͖ͳ͍͔ʁnrseg (budougumi0617) https://github.com/budougumi0617/nrseg
ΞϓϦέʔγϣϯϞχλϦϯά (APM)ղܾ● New Relic Go Agentͷಋೖ͕͠ΜͲ͍○ ࣮func main()ʹಋೖ͢Δ͚ͩͰ ͋Δఔͷσʔλ͕ಘΒΕΔࣄ͕໌○ DBपΓͷτϨʔεޙରԠʹͨ͠ (ContextपΓͰՃͷ࣮͕ඞཁͳͨΊ)
APMͰݟΒΕΔใ (αϚϦʔ)
APMͰݟΒΕΔใ (Transaction)
APMͰݟΒΕΔใ (Go runtime)
APMͰݟΒΕΔใ (Errors)
ΞϓϦέʔγϣϯϞχλϦϯά (APM)ಋೖͰಘΒΕͨޮՌ● APIͷύϑΥʔϚϯεվળʹܨ͕ͬͨ○ ͍APIͷϨΠςϯγ͕ՄࢹԽ͞Εͨ○ Ωϟογϡར༻Ͱվળ● ༏ઌతʹվળ͖͢ର͕໌֬ʹͳͬͨ○ APIผͷݺͼग़͠ճͱ࣮ߦ͕࣌ؒՄࢹԽ͞Εͨ● ΞϓϦέʔγϣϯΤϥʔͷௐ͕ࠪਝʹͳͬͨ○ ࠷ݶͷτϦΞʔδ͕Ͱ͖ΔΑ͏ʹͳͬͨ
ϒϥβϞχλϦϯά
ϒϥβϞχλϦϯάϒϥβϞχλϦϯάͱ● ϒϥβܦ༝ͰͷΤϯυϢʔβʔϞχλϦϯά● RUM (Real User Monitoring)ओͳ༻్● ΤϥʔͷݪҼௐࠪ● ϢʔβʔମݧͷѲ
ϒϥβϞχλϦϯάಋೖ࣌ͷۤ࿑● ίωΫςουTVͷಋೖ͕ͭΒ͔ͬͨ○ PageViewͰΧελϜΞτϦϏϡʔτ͕औಘͰ͖ͳ͍○ ϖʔδϩʔυͷλΠϛϯά͕͍͠○ ϑϩϯτΤϯυԿΘ͔Βͳ͍ϖʔδϩʔυλΠϛϯάͷϓϩηε https://docs.newrelic.com/jp/docs/browser/new-relic-browser/page-load-timing-resources/page-load-timing-process/
ϒϥβϞχλϦϯάղܾ● ίωΫςουTVͷಋೖ͕ͭΒ͔ͬͨ○ νʔϜϝϯόʔʹTVerͷSDKपΓͷରԠΛґཔ○ ࢲͷํͰNew Relicͷ༷֬ೝͱಈ࡞νΣοΫ○ PageViewͰͳ͘PageViewTimingΛݟΔํ
ϒϥβϞχλϦϯάͰݟΒΕΔใ (αϚϦʔ)
ϒϥβϞχλϦϯάͰݟΒΕΔใ (Session traces)
ϒϥβϞχλϦϯάಋೖͰಘΒΕͨޮՌ● ϢʔβʔମݧͷѲʹܨ͛ΒΕͨ○ ࣮ࡍͷϢʔβʔʹ͍ۙϝτϦΫεΛݟΒΕΔ○ ϨΠςϯγͷมԽCore web vitalsͷνΣοΫ● ΞϓϦέʔγϣϯΤϥʔͷௐ͕ࠪਝʹͳͬͨ○ ࠷ݶͷτϦΞʔδ͕Ͱ͖ΔΑ͏ʹͳͬͨ
ϞόΠϧϞχλϦϯά
ϞόΠϧϞχλϦϯάϞόΠϧϞχλϦϯάͱ● ΞϓϦܦ༝ͰͷΤϯυϢʔβʔϞχλϦϯά● RUM (Real User Monitoring)ओͳ༻్● ύϑΥʔϚϯεੳ● ΫϥογϡͷτϥϒϧγϡʔςΟϯά● ϢʔβʔମݧͷѲ
ϞόΠϧϞχλϦϯάಋೖ࣌ͷۤ࿑● ಈըϓϨΠϠʔͷϞχλϦϯάಋೖʹߤ○ New Relic Video Agentͷಋೖ○ ࠷৽όΠφϦͰσʔλΛ֬ೝ͍ͯͨ͠
ϞόΠϧϞχλϦϯάղܾ● ಈըϓϨΠϠʔͷϞχλϦϯάಋೖʹߤ○ σʔλνΣοΫ༻ͷμογϡϘʔυΛ࡞ɾڞ༗͠ɺ ਝʹνΣοΫͰ͖ΔΑ͏උ
ϞόΠϧϞχλϦϯάͰݟΒΕΔใ (αϚϦʔ)
ϞόΠϧϞχλϦϯάͰݟΒΕΔใ (Video Agent)
ϞόΠϧϞχλϦϯάಋೖͰಘΒΕͨޮՌ● ಈըࢹௌपΓͷϢʔβʔମݧ͕ՄࢹԽ͞Εͨ○ ͕ࣗͨͪλονͰ͖ͳ͍৴SaaSपΓ○ ίϯςϯπଆͷͰ࠶ੜͰ͖ͳ͍ಈը● ΞϓϦέʔγϣϯͷΤϥʔௐ͕ࠪՄೳʹͳͬͨ○ ϝλใͱΫϥογϡঢ়گͷ࿈ܞ○ ࣗͨͪͰ؆୯ʹঢ়گΛੳ
TVerʹ͓͚ΔΦϒβʔόϏϦςΟ
·ͱΊTVerʹ͓͚ΔΦϒβʔόϏϦςΟ࣮ݱ·ͰͷಓͷΓ● ࣮ݱͷ伴ςϨϝτϦʔσʔλͰ͋Δͱཧղ● ςϨϝτϦʔσʔλͷऔಘํ๏Λཧ● New Relic OneͰςϨϝτϦʔσʔλΛऩू● ऩूͨ͠ςϨϝτϦʔσʔλΛཧɾੳ·ͣσʔλΛऩू͠؍ଌͰ͖ΔΑ͏ʹ͢Δ
before☐ ϢʔβʔମݧͷѲ☐ Մ༻ੑύϑΥʔϚϯεͷՄࢹԽ☐ ൃੜ࣌ͷਝͳղܾ☐ ϓϩΞΫςΟϒͳϞχλϦϯά☐ SLI / SLOʹΑΔ৴པੑͷՄࢹԽ·ͱΊ (ϞχλϦϯάपΓͷ՝)after☑ ϢʔβʔମݧͷѲ☑ Մ༻ੑύϑΥʔϚϯεͷՄࢹԽ☑ ൃੜ࣌ͷਝͳղܾ☐ ϓϩΞΫςΟϒͳϞχλϦϯά☐ SLI / SLOʹΑΔ৴པੑͷՄࢹԽ
·ͱΊto be continued…
ࣗݾհɾՃզ وࢤ (@TAKA_0411)ɾגࣜձࣾTVer ɹࣄۀຊ෦ ٕज़։ൃ෦ (2022/1ʙ)ɾझຯαφͱΧϝϥͱήʔϜɾ͖ͳςϨϝτϦʔσʔλTrace