}}
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/3-generate-application-load/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/3-generate-application-load/_index.md
new file mode 100644
index 0000000000..eb460f833b
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/3-generate-application-load/_index.md
@@ -0,0 +1,147 @@
+---
+title: 3. ã¢ããªã±ãŒã·ã§ã³è² è·ã®çæ
+weight: 3
+description: ãã®ã»ã¯ã·ã§ã³ã§ã¯ããµã³ãã«ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããè² è·çæãéå§ããŸã
+---
+ãã®ãšã¯ãµãµã€ãºã§ã¯ã以äžã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
+
+* ãµã³ãã«ã¢ããªãå®è¡ãããŠããããšã確èªããŸãã
+* ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³åãã®è² è·çæãéå§ããŸãã
+* Controller ã§ãã©ã³ã¶ã¯ã·ã§ã³è² è·ã確èªããŸãã
+
+## ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããŠããããšã確èªãã
+
+ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã®ããŒã ããŒãžã¯ã以äžã®åœ¢åŒã® URL ã§ãŠã§ããã©ãŠã¶ããã¢ã¯ã»ã¹ã§ããŸããEC2 ã€ã³ã¹ã¿ã³ã¹ã® IP ã¢ãã¬ã¹ã«çœ®ãæããŠããã® URL ããã©ãŠã¶ã®ã¢ãã¬ã¹ããŒã«å
¥åããŠãã ããã
+
+```bash
+http://[ec2-ip-address]:8080/Supercar-Trader/home.do
+```
+
+Supercar Trader ã¢ããªã±ãŒã·ã§ã³ã®ããŒã ããŒãžã衚瀺ãããã¯ãã§ãã
+
+
+## è² è·çæãéå§ãã
+
+EC2 ã€ã³ã¹ã¿ã³ã¹ã« SSH æ¥ç¶ããè² è·çæãéå§ããŸãããã¹ãŠã®ã¹ã¯ãªããã®å®è¡ã«ã¯æ°åãããå ŽåããããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+cd /opt/appdynamics/lab-artifacts/phantomjs
+./start_load.sh
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+Cleaning up artifacts from previous load...
+Starting home-init-01
+Waiting for additional JVMs to initialize... 1
+Waiting for additional JVMs to initialize... 2
+Waiting for additional JVMs to initialize... 3
+Waiting for additional JVMs to initialize... 4
+Waiting for additional JVMs to initialize... 5
+Waiting for additional JVMs to initialize... 6
+Waiting for additional JVMs to initialize... 7
+Waiting for additional JVMs to initialize... 8
+Waiting for additional JVMs to initialize... 9
+Waiting for additional JVMs to initialize... 10
+Waiting for additional JVMs to initialize... 11
+Waiting for additional JVMs to initialize... 12
+Waiting for additional JVMs to initialize... 13
+Waiting for additional JVMs to initialize... 14
+Waiting for additional JVMs to initialize... 15
+Waiting for additional JVMs to initialize... 16
+Waiting for additional JVMs to initialize... 17
+Waiting for additional JVMs to initialize... 18
+Waiting for additional JVMs to initialize... 19
+Waiting for additional JVMs to initialize... 20
+Starting slow-query-01
+Starting slow-query-02
+Starting slow-query-03
+Starting slow-query-04
+Starting sessions-01
+Starting sessions-02
+Starting sell-car-01
+Starting sell-car-02
+Starting sessions-03
+Starting sessions-04
+Starting search-01
+Starting request-error-01
+Starting mem-leak-insurance
+Finished starting load generator scripts 100% 22MB 255.5KB/s 01:26
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## Controller ã§ãã©ã³ã¶ã¯ã·ã§ã³è² è·ã確èªãã
+
+Getting Started Wizard ããŠã§ããã©ãŠã¶ã§éãããŸãŸã«ããŠããå ŽåããšãŒãžã§ã³ããæ¥ç¶ãããController ãããŒã¿ãåä¿¡ããŠããããšã確èªã§ããã¯ãã§ãã
+
+
+
+**Continue** ãã¯ãªãã¯ãããšã**Application Flow Map** ã«ç§»åããŸãïŒä»¥äžã® Flow Map ã®ç»åãŸã§ã¹ãããããŠãæ§ããŸããïŒã
+
+Controller ã®ãã©ãŠã¶ãŠã£ã³ããŠãæ¢ã«éããŠããå Žåã¯ãController ã«å床ãã°ã€ã³ããŠãã ããã
+
+1. Overview ããŒãžïŒã©ã³ãã£ã³ã°ããŒãžïŒãããå·ŠåŽã®ããã²ãŒã·ã§ã³ããã«ã«ãã **Applications** ã¿ããã¯ãªãã¯ããŸãã
+
+ 
+
+2. **Applications** ããŒãžå
ã§ãã¢ããªã±ãŒã·ã§ã³ãæåã§æ€çŽ¢ããããå³äžã®æ€çŽ¢ããŒã䜿ã£ãŠæ€çŽ¢ãçµã蟌ãããšãã§ããŸãã
+
+ 
+
+ã¢ããªã±ãŒã·ã§ã³åãã¯ãªãã¯ãããšã**Application Flow Map** ã«ç§»åããŸãã12 ååŸã«ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã³ã³ããŒãã³ãã衚瀺ãããã¯ãã§ãã
+
+12 åçµã£ãŠããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã³ã³ããŒãã³ãã衚瀺ãããªãå Žåã¯ãããå°ãåŸ
ã£ãŠãããã©ãŠã¶ã®ã¿ããæŽæ°ããŠã¿ãŠãã ããã
+
+
+
+ãšãŒãžã§ã³ãã®ããŠã³ããŒãæé ã§ã¯ãTomcat ãµãŒããŒçšã« Tier åãš Node åãå²ãåœãŠãŸããã
+
+``` bash
+
Web-Portal
+
Web-Portal_Node-01
+```
+
+ä»ã® 4 ã€ã®ãµãŒãã¹ã«ã©ã®ããã« Tier åãš Node åãå²ãåœãŠãããã®ãçåã«æããããããŸããããµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã¯ãæåã® Tomcat JVM ãã 4 ã€ã®è¿œå ã® JVM ãåçã«äœæãã4 ã€ã®åãµãŒãã¹åãã« Tier åãš Node åã JVM èµ·åã³ãã³ãã® -D ããããã£ãšããŠæž¡ãããšã§å²ãåœãŠãŸããJVM èµ·åã³ãã³ãã©ã€ã³ã«å«ãŸãã -D ããããã£ã¯ãJava ãšãŒãžã§ã³ãã® ```controller-info.xml``` ãã¡ã€ã«ã§å®çŸ©ãããããããã£ãããåªå
ãããŸãã
+
+åçã«èµ·åããã 4 ã€ã®åãµãŒãã¹ã«äœ¿çšããã JVM èµ·åãã©ã¡ãŒã¿ã確èªããã«ã¯ãEC2 ã€ã³ã¹ã¿ã³ã¹ã®ã¿ãŒããã«ãŠã£ã³ããŠã§ä»¥äžã®ã³ãã³ããå®è¡ããŠãã ããã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+ps -ef | grep appdynamics.agent.tierName
+```
+
+{{% /tab %}}
+{{% tab title="Loadgen Output" %}}
+
+``` bash
+splunk 47131 46757 3 15:34 pts/1 00:08:17 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -javaagent:/opt/appdynamics/javaagent/javaagent.jar -Dappdynamics.controller.hostName=se-lab.saas.appdynamics.com -Dappdynamics.controller.port=443 -Dappdynamics.controller.ssl.enabled=true -Dappdynamics.agent.applicationName=Supercar-Trader-AppD-Workshop -Dappdynamics.agent.tierName=Api-Services -Dappdynamics.agent.nodeName=Api-Services_Node-01 -Dappdynamics.agent.accountName=se-lab -Dappdynamics.agent.accountAccessKey=hj6a4d7h2cuq -Xms64m -Xmx512m -XX:MaxPermSize=256m supercars.services.api.ApiService
+splunk 47133 46757 2 15:34 pts/1 00:08:11 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -javaagent:/opt/appdynamics/javaagent/javaagent.jar -Dappdynamics.controller.hostName=se-lab.saas.appdynamics.com -Dappdynamics.controller.port=443 -Dappdynamics.controller.ssl.enabled=true -Dappdynamics.agent.applicationName=Supercar-Trader-AppD-Workshop -Dappdynamics.agent.tierName=Inventory-Services -Dappdynamics.agent.nodeName=Inventory-Services_Node-01 -Dappdynamics.agent.accountName=se-lab -Dappdynamics.agent.accountAccessKey=hj6a4d7h2cuq -Xms64m -Xmx512m -XX:MaxPermSize=256m supercars.services.inventory.InventoryService
+splunk 47151 46757 1 15:34 pts/1 00:04:58 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -javaagent:/opt/appdynamics/javaagent/javaagent.jar -Dappdynamics.controller.hostName=se-lab.saas.appdynamics.com -Dappdynamics.controller.port=443 -Dappdynamics.controller.ssl.enabled=true -Dappdynamics.agent.applicationName=Supercar-Trader-AppD-Workshop -Dappdynamics.agent.tierName=Insurance-Services -Dappdynamics.agent.nodeName=Insurance-Services_Node-01 -Dappdynamics.agent.accountName=se-lab -Dappdynamics.agent.accountAccessKey=hj6a4d7h2cuq -Xms64m -Xmx68m -XX:MaxPermSize=256m supercars.services.insurance.InsuranceService
+splunk 47153 46757 3 15:34 pts/1 00:08:17 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -javaagent:/opt/appdynamics/javaagent/javaagent.jar -Dappdynamics.controller.hostName=se-lab.saas.appdynamics.com -Dappdynamics.controller.port=443 -Dappdynamics.controller.ssl.enabled=true -Dappdynamics.agent.applicationName=Supercar-Trader-AppD-Workshop -Dappdynamics.agent.tierName=Enquiry-Services -Dappdynamics.agent.nodeName=Enquiry-Services_Node-01 -Dappdynamics.agent.accountName=se-lab -Dappdynamics.agent.accountAccessKey=hj6a4d7h2cuq -Xms64m -Xmx512m -XX:MaxPermSize=256m supercars.services.enquiry.EnquiryService
+splunk 144789 46722 0 20:09 pts/1 00:00:00 grep --color=auto appdynamics.agent.tierName
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ãã¹ãŠã®ã³ã³ããŒãã³ãããããŒãããã«è¡šç€ºããããšãInsurance-Services Tier ããåŒã³åºãããŠãã 3 ã€ã® HTTP ããã¯ãšã³ãã衚ã HTTP ã¯ã©ãŠãã¢ã€ã³ã³ãèŠããã¯ãã§ãã
+
+以äžã®æé ã«åŸã£ãŠã3 ã€ã® HTTP ããã¯ãšã³ãã®ã°ã«ãŒããè§£é€ããŸãã
+
+1. ã3 HTTP backendsããšã©ãã«ä»ãããã HTTP ã¯ã©ãŠãã¢ã€ã³ã³ãå³ã¯ãªãã¯ããŸã
+2. ããããããŠã³ã¡ãã¥ãŒãããUngroup BackendsããéžæããŸã
+
+
+
+HTTP ããã¯ãšã³ãã®ã°ã«ãŒããè§£é€ããããšã以äžã®ç»åã®ããã« 3 ã€ã® HTTP ããã¯ãšã³ãããã¹ãŠè¡šç€ºãããã¯ãã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/4-apm-core-concepts/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/4-apm-core-concepts/_index.md
new file mode 100644
index 0000000000..f1159f4fec
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/4-apm-core-concepts/_index.md
@@ -0,0 +1,91 @@
+---
+title: 4. AppDynamics ã®ã³ã¢ã³ã³ã»ãã
+weight: 4
+description: ãã®ã»ã¯ã·ã§ã³ã§ã¯ãSplunk AppDynamics APM æ©èœã®ã³ã¢ã³ã³ã»ããã«ã€ããŠåŠã³ãŸã
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãSplunk AppDynamics APM æ©èœã®ã³ã¢ã³ã³ã»ããã«ã€ããŠåŠã³ãŸãããã®ã»ã¯ã·ã§ã³ãçµããé ã«ã¯ã以äžã®æŠå¿µãçè§£ã§ããããã«ãªããŸãã
+
+- Application Flow Maps
+- Business Transactions (BTs)
+- Snapshots
+- Call Graphs
+
+## Flow Maps
+
+AppDynamics ã¢ããªãšãŒãžã§ã³ãã¯ãæãäžè¬çãªã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ããµãŒãã¹ãèªåçã«æ€åºããŸããçµã¿èŸŒã¿ã®ã¢ããªã±ãŒã·ã§ã³æ€åºæ©èœãšèšå®ã䜿çšããŠããšãŒãžã§ã³ãã¯ã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ãšã¡ããªã¯ã¹ãåéããFlow Maps ãæ§ç¯ããŸãã
+
+AppDynamics ã¯ãã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ãèªåçã«ãã£ããã£ããŠã¹ã³ã¢ãªã³ã°ããŸããFlow Maps ã¯ãéžæããæéæ ã®ã³ã³ããã¹ãã«æ²¿ã£ãŠãç£èŠå¯Ÿè±¡ã®ã¢ããªã±ãŒã·ã§ã³ç°å¢ã®ã³ã³ããŒãã³ããšã¢ã¯ãã£ããã£ãåçã«ããžã¥ã¢ã«è¡šçŸããŸãã
+
+Flow Map ã®ããŸããŸãªæ©èœã«ã€ããŠæ
£ããŠãããŸãããã
+
+1. ããŸããŸãªã¬ã€ã¢ãŠããªãã·ã§ã³ã詊ããŠã¿ãŠãã ããïŒFlow Map äžã®åã¢ã€ã³ã³ãã¯ãªãã¯ããŠãã©ãã°ããäœçœ®ã倿Žããããšãã§ããŸãïŒã
+2. ã¹ã©ã€ããŒãããŠã¹ã®ã¹ã¯ããŒã«ãã€ãŒã«ã䜿ã£ãŠãºãŒã ã¬ãã«ã調æŽããŠã¿ãŸãããã
+3. Transaction Scorecard ã確èªããŸãã
+4. Flow Map ãç·šéããããã®ãªãã·ã§ã³ã確èªããŸãã
+
+Flow Maps ã®è©³çްã«ã€ããŠã¯[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/business-applications/flow-maps/flow-map-overview)ãã芧ãã ããã
+
+
+
+## Business Transactions
+
+AppDynamics ã®ã¢ãã«ã«ãããŠãBusiness Transaction ã¯ãªã¯ãšã¹ãïŒå€ãã®å ŽåãŠãŒã¶ãŒãªã¯ãšã¹ãïŒã«å¯ŸããããŒã¿åŠçãããŒã衚ããŸããå®éã®ã·ã¹ãã ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å€ãã®ç°ãªãã³ã³ããŒãã³ãã飿ºããŠã以äžã®ãããªãªã¯ãšã¹ããåŠçããããã®ãµãŒãã¹ãæäŸããŸãã
+
+- e ã³ããŒã¹ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããŠãŒã¶ãŒããã°ã€ã³ããããååãæ€çŽ¢ããããååãã«ãŒãã«è¿œå ãããããæäœã
+- ã³ã³ãã³ãããŒã¿ã«ã§ã¯ããŠãŒã¶ãŒãã¹ããŒããããžãã¹ããšã³ã¿ãŒãã€ã³ã¡ã³ããªã©ã®ãã¥ãŒã¹ã³ã³ãã³ãããªã¯ãšã¹ãããæäœã
+- æ ªåŒååŒã¢ããªã±ãŒã·ã§ã³ã§ã¯ãæ ªäŸ¡æ
å ±ã®ååŸãæ ªåŒã®å£²è²·ãªã©ã®æäœã
+AppDynamics ã¯ããã©ãŒãã³ã¹ç£èŠã Business Transactions ãäžå¿ã«æ§æããŠããããããŠãŒã¶ãŒèŠç¹ã§ã¢ããªã±ãŒã·ã§ã³ã³ã³ããŒãã³ãã®ããã©ãŒãã³ã¹ã«ãã©ãŒã«ã¹ã§ããŸããã³ã³ããŒãã³ããå©çšå¯èœãªç¶æ
ã«ããããããã©ãŒãã³ã¹ã®åé¡ãçºçããŠããããçŽ æ©ãç¹å®ã§ããŸããäŸãã°ããŠãŒã¶ãŒããã°ã€ã³ããã§ãã¯ã¢ãŠããããŒã¿é²èЧãªã©ã®æäœãå®è¡ã§ããŠãããã確èªã§ããŸãããŠãŒã¶ãŒãžã®ã¬ã¹ãã³ã¹ã¿ã€ã ããåé¡çºçæã®åå ã確èªã§ããŸãã
+
+Business Transactions ã®è©³çްã«ã€ããŠã¯[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/overview-of-application-monitoring/business-transactions)ããã³[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/business-transactions)ãã芧ãã ããã
+
+## Business Transactions ã®ç¢ºèª
+
+以äžã®æé ã§ãBusiness Transactions ãèªåçã«æ€åºãããŠããããšã確èªããŸãã
+
+1. å·Šã¡ãã¥ãŒã® **Business Transactions** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. Business Transactions ã®äžèЧãšãã®ããã©ãŒãã³ã¹ã確èªããŸãã
+
+
+
+## Snapshots
+
+AppDynamics ã¯ãèšè£
ãããç°å¢ã«ãã㊠Business Transaction ã®å®è¡ããã¹ãŠç£èŠããã¡ããªã¯ã¹ã¯ããããã¹ãŠã®å®è¡ãåæ ããŸãããã ãããã©ãã«ã·ã¥ãŒãã£ã³ã°ãç®çãšããŠãAppDynamics ã¯åé¡ãçºçããŠããç¹å®ã®ãã©ã³ã¶ã¯ã·ã§ã³ã€ã³ã¹ã¿ã³ã¹ã«ã€ããŠãæ·±ã蚺ææ
å ±ãå«ãã¹ãããã·ã§ãããååŸããŸãã
+
+以äžã®æé ã§ããã©ã³ã¶ã¯ã·ã§ã³ã¹ãããã·ã§ãããèªåçã«åéãããŠããããšã確èªããŸãã
+
+1. å·Šã¡ãã¥ãŒã® **Application Dashboard** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. **Transaction Snapshots** ã¿ããã¯ãªãã¯ããŸãã
+3. **Exe Time (ms)** ã«ã©ã ãã¯ãªãã¯ããŠãå®è¡æéãæãé·ãã¹ãããã·ã§ããé ã«ãœãŒãããŸãã
+4. Business Transaction ã®ã¹ãããã·ã§ãããããã«ã¯ãªãã¯ãããšãã¹ãããã·ã§ãããã¥ãŒã¢ãŒã衚瀺ãããŸãã
+
+
+
+ãã©ã³ã¶ã¯ã·ã§ã³ã¹ãããã·ã§ããã¯ããã©ã³ã¶ã¯ã·ã§ã³ã® 1 åã®åŒã³åºãã«ã€ããŠããã£ã¢ããŸããã åŠçãããŒã確èªã§ããŸãã
+
+**Potential Issues** ããã«ã§ã¯ãé
ãã¡ãœãããé
ããªã¢ãŒããµãŒãã¹åŒã³åºãã匷調衚瀺ãããããã©ãŒãã³ã¹åé¡ã®æ ¹æ¬åå ã®èª¿æ»ã«åœ¹ç«ã¡ãŸãã
+
+## Drill Downs ãš Call Graphs
+
+Call graphs ãš drill downs ã¯ããã£ã¢äžã§ã®ãã©ã³ã¶ã¯ã·ã§ã³å®è¡ã«é¢ããéèŠãªæ
å ±ãäŸãã°æãé
ãã¡ãœããããšã©ãŒããªã¢ãŒããµãŒãã¹åŒã³åºããªã©ãæäŸããŸããdrill down ã«ã¯ãéšåçãŸãã¯å®å
šãª call graph ãå«ãŸããå ŽåããããŸããCall graphs ã¯ãç¹å®ã®ãã£ã¢ã«ããã Business Transaction ã®åŠçãã³ãŒãã¬ãã«ã§å¯èŠåããŸãã
+
+Business Transaction ã¹ãããã·ã§ããã® Flow Map äžã§ãDrill Down ãªã³ã¯ãä»ããŠãããã£ã¢ã¯ãAppDynamics ããã®ãã£ã¢ã§ call graph ãååŸããŠããããšã瀺ããŸãã
+
+以äžã®æé ã§ããã©ã³ã¶ã¯ã·ã§ã³ã¹ãããã·ã§ããã® call graph ã«ããªã«ããŠã³ããŸãã
+
+1. å·ŠåŽã® Potential Issues ãªã¹ãã§é
ãåŒã³åºããã¯ãªãã¯ããŸãã
+2. Drill Down into Call Graph ãã¯ãªãã¯ããŸãã
+
+
+
+call graph ãã¥ãŒã«ã¯ä»¥äžã®è©³çްæ
å ±ã衚瀺ãããŸãã
+
+1. ã¡ãœããå®è¡ã·ãŒã±ã³ã¹ã¯ããã®ããŒãäžã§ Business Transaction ã®åŠçã«é¢ãã£ãã¯ã©ã¹ãšã¡ãœããã®ååããå¶åŸ¡ãããŒã®é åºã§è¡šç€ºããŸãã
+2. åã¡ãœããã«ã€ããŠãåŠçã«è²»ããããæéãšå²åããœãŒã¹ã³ãŒãå
ã®è¡çªå·ã確èªã§ããããããã©ã³ã¶ã¯ã·ã§ã³ã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããŠããå¯èœæ§ã®ããã³ãŒãäœçœ®ãç¹å®ã§ããŸãã
+3. call graph ã«ã¯ãããŒã¿ããŒã¹ã¯ãšãªããŠã§ããµãŒãã¹åŒã³åºããªã©ãä»ã®ã³ã³ããŒãã³ããžã®å€éšåŒã³åºããè¡ãã¡ãœããã® exit call ãªã³ã¯ã衚瀺ãããŸãã
+
+Transaction Snapshots ã®è©³çްã«ã€ããŠã¯[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/business-transactions/troubleshoot-business-transaction-performance-with-transaction-snapshots)ãã芧ãã ããã
+
+Call Graphs ã®è©³çްã«ã€ããŠã¯[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/business-transactions/troubleshoot-business-transaction-performance-with-transaction-snapshots/call-graphs)ãã芧ãã ããã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/5-configure-controller/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/5-configure-controller/_index.md
new file mode 100644
index 0000000000..da7f2fa656
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/5-configure-controller/_index.md
@@ -0,0 +1,73 @@
+---
+title: 5. Controller ã®èšå®
+weight: 5
+description: ãã®ã»ã¯ã·ã§ã³ã§ã¯ãController ã§ããŸããŸãª APM èšå®ãæ§æããæ¹æ³ãåŠã³ãŸã
+---
+
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ã宿œããŸãã
+
+- Business Transaction ã®èšå®ã調æŽããŸãã
+- Call Graph ã®èšå®ã調æŽããŸãã
+- Business Transaction ã®å€åã芳å¯ããŸãã
+
+## Business Transaction èšå®ã®èª¿æŽ
+
+åã®æŒç¿ã§ãBusiness Transaction ãèªåæ€åºãããŠããããšã確èªããŸãããBusiness Transaction ã®èªåæ€åºã«ãŒã«ãæé©ãªç¶æ
ã«ããããã«ãã«ãŒã«ã調æŽãããå ŽåããããŸããä»åã®ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã¯å€ã Apache Struts ãã¬ãŒã ã¯ãŒã¯ã§æ§ç¯ãããŠããããŸãã«ããããã±ãŒã¹ã«è©²åœããŸãã
+
+次ã®ç»åã§ãã€ã©ã€ããããŠãã Business Transaction ãèŠããšãããããã®ãã¢ã Struts Action (.execute) ãš Servlet ã¿ã€ã (.jsp) ã§æ§æãããŠããããšãããããŸããããã 2 çš®é¡ã®ãã©ã³ã¶ã¯ã·ã§ã³ã 1 ã€ã«çµ±åãããããã«ããã©ã³ã¶ã¯ã·ã§ã³æ€åºã«ãŒã«ã®èšå®ã調æŽããŠãããŸãã
+
+AppDynamics UI ã§æéæ ã»ã¬ã¯ã¿ãŒã衚瀺ãããŠãããšãã¯ã衚瀺ãããŠãããã¥ãŒã¯éžæããæéæ ã®ã³ã³ããã¹ãã衚ããŸãããããããå®çŸ©ãããæéæ ããéžã¶ããšãã確èªãããæ¥ä»ãæéç¯å²ãæå®ããã«ã¹ã¿ã æéæ ãäœæããããšãã§ããŸãã
+
+1. **last 1 hour** ã®æéæ ãéžæããŸãã
+2. ããŠã¹ãéãã¢ã€ã³ã³ã®äžã«ãããŒããŠããã©ã³ã¶ã¯ã·ã§ã³ã® Entry Point Type ã確èªããŸãã
+
+
+
+以äžã®æé ã§ãã©ã³ã¶ã¯ã·ã§ã³æ€åºãæé©åããŸãã
+
+1. å·Šäžã¡ãã¥ãŒã® **Configuration** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. **Instrumentation** ãªã³ã¯ãã¯ãªãã¯ããŸãã
+
+ 
+
+3. Instrumentation ã¡ãã¥ãŒãã **Transaction Detection** ãéžæããŸãã
+4. **Java Auto Discovery Rule** ãéžæããŸãã
+5. **Edit** ãã¯ãªãã¯ããŸãã
+
+ 
+
+6. Rule Editor ã§ **Rule Configuration** ã¿ããéžæããŸãã
+7. **Struts Action** ã»ã¯ã·ã§ã³ã®ãã§ãã¯ããã¯ã¹ããã¹ãŠãªãã«ããŸãã
+8. **Web Service** ã»ã¯ã·ã§ã³ã®ãã§ãã¯ããã¯ã¹ããã¹ãŠãªãã«ããŸãã
+9. äžã«ã¹ã¯ããŒã«ã㊠Servlet èšå®ãèŠã€ããŸãã
+10. **Enable Servlet Filter Detection** ã®ãã§ãã¯ããã¯ã¹ããªã³ã«ããŸãïŒServlet èšå®ã§ã¯ 3 ã€ã®ãã§ãã¯ããã¯ã¹ããã¹ãŠãªã³ã«ãªã£ãŠããç¶æ
ã«ããŸãïŒã
+11. **Save** ãã¯ãªãã¯ããŠå€æŽãä¿åããŸãã
+
+Transaction Detection Rules ã®è©³çްã¯[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/configure-instrumentation/transaction-detection-rules)ã§ç¢ºèªã§ããŸãã
+
+
+
+
+## Call Graph èšå®ã®èª¿æŽ
+
+以äžã® Call Graph Settings ãŠã£ã³ããŠã䜿çšãããšããã©ã³ã¶ã¯ã·ã§ã³ã¹ãããã·ã§ããå
ã® Call Graph ã§ååŸãããããŒã¿ãå¶åŸ¡ã§ããŸãããã®ã¹ãããã§ã¯ãå SQL ã¯ãšãªã®ãã©ã¡ãŒã¿ãå®å
šãªã¯ãšãªãšå
±ã«ååŸããããã« SQL Capture èšå®ã倿ŽããŸããSQL Capture ã®èšå®ã¯ä»¥äžã®æé ã§å€æŽã§ããŸãã
+
+1. Instrumentation ãŠã£ã³ããŠãã **Call Graph Settings** ã¿ããéžæããŸããããã¯åã®æŒç¿ã§éãã **Instrumentation** èšå®ã®äžã«ãããŸãã
+2. èšå®å
ã§ **Java** ã¿ããéžæãããŠããããšã確èªããŸãã
+3. **SQL Capture Settings** ã衚瀺ããããŸã§äžã«ã¹ã¯ããŒã«ããŸãã
+4. **Capture Raw SQL** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+5. **Save** ãã¯ãªãã¯ããŸãã
+
+Call Graph èšå®ã®è©³çްã¯[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/configure-instrumentation/call-graph-settings)ã§ç¢ºèªã§ããŸãã
+
+
+
+## Business Transaction ã®å€åã芳å¯ãã
+
+æ°ãã Business Transaction ã以åã®ãã©ã³ã¶ã¯ã·ã§ã³ã眮ãæãããŸã§ãæå€§ã§ 30 åãããããšããããŸããæ°ãããã©ã³ã¶ã¯ã·ã§ã³ãæ€åºãããåŸã® Business Transaction ã®ãªã¹ãã¯ã次ã®äŸã®ãããªè¡šç€ºã«ãªããŸãã
+
+1. å·Šã¡ãã¥ãŒã® **Business Transactions** ãã¯ãªãã¯ããŸãã
+2. æéç¯å²ããã«ãŒã **last 15 minutes** ã«èª¿æŽããŸãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/6-apm-part1/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/6-apm-part1/_index.md
new file mode 100644
index 0000000000..7044715ca7
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/6-apm-part1/_index.md
@@ -0,0 +1,108 @@
+---
+title: 6. é
ããã©ã³ã¶ã¯ã·ã§ã³ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+weight: 6
+description: ãã®ã»ã¯ã·ã§ã³ã§ã¯ãã¹ãããã·ã§ãããå©çšããŠé
ããã©ã³ã¶ã¯ã·ã§ã³ããã©ãã«ã·ã¥ãŒãã£ã³ã°ããæ¹æ³ãåŠã³ãŸã
+---
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ããŸãã
+
+- ã¢ããªã±ãŒã·ã§ã³ããã·ã¥ããŒããšãããŒããããç£èŠããã
+- é
ããã©ã³ã¶ã¯ã·ã§ã³ã®ã¹ãããã·ã§ããããã©ãã«ã·ã¥ãŒãã£ã³ã°ããã
+
+## ã¢ããªã±ãŒã·ã§ã³ããã·ã¥ããŒããšãããŒãããã®ç£èŠ
+
+ãããŸã§ã®æŒç¿ã§ã¯ãApplication Flow Map ã®åºæ¬çãªæ©èœãããã€ã確èªããŠããŸãããããã§ã¯ãApplication Dashboard ãš Flow Map ãæŽ»çšããŠãã¢ããªã±ãŒã·ã§ã³å
ã®åé¡ãå³åº§ã«ç¹å®ããæ¹æ³ãããæ·±ãèŠãŠãããŸãã
+
+1. Health Rule ViolationsãNode Health ã®åé¡ãããã³ Business Transactions ã®å¥å
šæ§ã¯ãéžæããæéæ ã«ã€ããŠåžžã«ãã®ãšãªã¢ã«è¡šç€ºãããŸããããã§å©çšã§ãããªã³ã¯ãã¯ãªãã¯ãããšã詳现ã«ããªã«ããŠã³ã§ããŸãã
+2. Transaction Scorecard ã§ã¯ãnormalãslowãvery slowãstalledãããã³ãšã©ãŒãçºçãããã©ã³ã¶ã¯ã·ã§ã³ã®æ°ãšå²åã衚瀺ãããŸããã¹ã³ã¢ã«ãŒãã§ã¯ãäŸå€ã¿ã€ãã®äžäœã«ããŽãªã確èªã§ããŸããããã§å©çšã§ãããªã³ã¯ãã¯ãªãã¯ãããšã詳现ã«ããªã«ããŠã³ã§ããŸãã
+3. ç°ãªãã¢ããªã±ãŒã·ã§ã³ã³ã³ããŒãã³ããæ¥ç¶ããŠããéãç·ã®ãããããå·Šã¯ãªãã¯ïŒã·ã³ã°ã«ã¯ãªãã¯ïŒãããšã2 ã€ã®ã³ã³ããŒãã³ãéã®ããåãã®æŠèŠã衚瀺ãããŸãã
+4. Tier ã®è²ä»ããªã³ã°ã®äžãå·Šã¯ãªãã¯ïŒã·ã³ã°ã«ã¯ãªãã¯ïŒãããšãFlow Map ã«çãŸã£ããŸãŸããã® Tier ã«é¢ãã詳现æ
å ±ã衚瀺ãããŸãã
+5. ããã·ã¥ããŒãäžéšã«ãã 3 ã€ã®ãã£ãŒãïŒLoadãResponse TimeãErrorsïŒã®ããããã®æç³»åã«ã«ãŒãœã«ãåããããšãèšé²ãããã¡ããªã¯ã¹ã®è©³çްã衚瀺ãããŸãã
+
+ 
+
+次ã«ãDynamic Baselines ãšãããã·ã¥ããŒãäžéšã®ãã£ãŒãã®ãªãã·ã§ã³ã«ã€ããŠèŠãŠãããŸãã
+
+1. ãã£ãŒãäžã®ã¡ããªã¯ã¹ããåã¡ããªã¯ã¹ã«ã€ããŠèªåçã«èšç®ããã Dynamic Baseline ãšæ¯èŒããŸãã
+2. Dynamic Baseline ã¯ã以äžã®ç»åã«ç€ºãããŠããããã«ãload ãã£ãŒããš response time ãã£ãŒãã«éãç¹ç·ã§è¡šç€ºãããŸãã
+3. ããã·ã¥ããŒãäžéšã«ãã 3 ã€ã®ãã£ãŒãã®ããããã§èŠãããã¹ãã€ã¯ããã€ã©ã€ãããã«ã¯ãå·Šã¯ãªãã¯ãããŸãŸããŠã¹ãã¿ã³ãæŒãç¶ããå·Šããå³ã«ãã©ãã°ããŸãã
+4. ããŠã¹ãã¿ã³ãé¢ãããããã¢ããã¡ãã¥ãŒã«è¡šç€ºããã 3 ã€ã®ãªãã·ã§ã³ã®ãããããéžæããŸãã
+
+ 
+
+AppDynamics ç¬èªã® Dynamic Baselining ã®ç²ŸåºŠã¯æéã®çµéãšãšãã«åäžããã¢ããªã±ãŒã·ã§ã³ããã®ã³ã³ããŒãã³ããããã³ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã®ç¶æ
ãæ£ç¢ºã«ææ¡ã§ããããã«ããŸããããã«ãããç¶æ³ãã¯ãªãã£ã«ã«ãªç¶æ
ã«ãªãåã«ããã¢ã¯ãã£ãã«ã¢ã©ãŒããåãåãããšã³ããŠãŒã¶ãŒã«åœ±é¿ãåã¶åã«å¯Ÿå¿ã§ããŸãã
+
+AppDynamics ã® Dynamic Baselines ã«ã€ããŠã¯ã[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/business-transactions/monitor-the-business-transaction-performance/dynamic-baselines) ã§è©³ãã説æããŠããŸãã
+
+## é
ããã©ã³ã¶ã¯ã·ã§ã³ã¹ãããã·ã§ããã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+
+æ¬¡ã®æé ã«åŸã£ãŠãããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã確èªããvery slow ãªãã©ã³ã¶ã¯ã·ã§ã³ãæãå€ããã®ãèŠã€ããŠã¿ãŸãããã
+
+1. å·Šã¡ãã¥ãŒã® **Business Transactions** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. **View Options** ãã¿ã³ãã¯ãªãã¯ããŸãã
+3. ãªãã·ã§ã³ã®ãã§ãã¯ããã¯ã¹ãã以äžã®ç»åãšäžèŽããããã«ãªã³ãŸãã¯ãªãã«ããŸãã
+
+ 
+
+4. /Supercar-Trader/car.do ãšããååã® Business Transaction ãèŠã€ãããã® Very Slow Transactions ã®æ°å€ãã¯ãªãã¯ããŠãvery slow ãªãã©ã³ã¶ã¯ã·ã§ã³ã®ã¹ãããã·ã§ããã«ããªã«ããŠã³ããŸãã
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+/Supercar-Trader/car.do BT ã« Very Slow Transactions ãååšããªãå Žåã¯ãVery Slow Transactions ãçºçããŠããå¥ã® Business Transaction ãèŠã€ãããã®åã®æ°å€ãã¯ãªãã¯ããŠãã ãããã¹ã¯ãªãŒã³ã·ã§ããã¯å€å°ç°ãªãå ŽåããããŸãããæŠå¿µã¯åãã§ãã
+{{% /notice %}}
+
+ 
+
+5. very slow ãªãã©ã³ã¶ã¯ã·ã§ã³ã®ã¹ãããã·ã§ããäžèЧã衚瀺ãããŸãã以äžã®ããã«ãæãå¿çæéãé·ãã¹ãããã·ã§ãããããã«ã¯ãªãã¯ããŸãã
+
+ 
+
+ ãã©ã³ã¶ã¯ã·ã§ã³ã¹ãããã·ã§ãããã¥ãŒã¢ãéããšããã®ç¹å®ã®ãã©ã³ã¶ã¯ã·ã§ã³ã«å«ãŸããŠãããã¹ãŠã®ã³ã³ããŒãã³ãã® flow map ãã¥ãŒã衚瀺ãããŸãããã®ã¹ãããã·ã§ããã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã以äžã®ã³ã³ããŒãã³ããé ã«ééããããšã瀺ãããŠããŸãã
+
+ - Web-Portal Tier
+ - Api-Services Tier
+ - Enquiry-Services Tier
+ - MySQL Database
+
+ å·ŠåŽã® Potential Issues ããã«ã§ã¯ãslow methods ãš slow remote services ããã€ã©ã€ã衚瀺ãããŸããPotential Issues ããã«ããã³ãŒã«ã°ã©ããžçŽæ¥ããªã«ããŠã³ããããšãã§ããŸããããã®äŸã§ã¯ã¹ãããã·ã§ããå
ã® Flow Map ã䜿çšããŠãã©ã³ã¶ã¯ã·ã§ã³å
šäœã远跡ããŸãã
+
+6. ã¹ãããã·ã§ããã® Flow Map ã«è¡šç€ºãããŠãã Web-Portal Tier ã® Drill Down ãã¯ãªãã¯ããŸãã
+
+ 
+
+ éããã¿ãã«ã¯ãWeb-Portal Tier ã®ã³ãŒã«ã°ã©ãã衚瀺ãããŸããã»ãšãã©ã®æéã outbound HTTP call ã§æ¶è²»ãããŠããããšãããããŸãã
+
+7. ãããã¯ãã¯ãªãã¯ããŠãåé¡ãçºçããŠããã»ã°ã¡ã³ãã«ããªã«ããŠã³ããŸããHTTP ãªã³ã¯ãã¯ãªãã¯ããŠãããŠã³ã¹ããªãŒã åŒã³åºãã®è©³çްã衚瀺ããŸãã
+
+ 
+
+ ããŠã³ã¹ããªãŒã åŒã³åºãã®è©³çްããã«ã«ã¯ãWeb-Portal Tier ã Api-Services Tier ã«å¯Ÿã㊠outbound HTTP call ãè¡ã£ãããšã瀺ãããŠããŸããHTTP call ããã©ã£ãŠ Api-Services Tier ã«é²ã¿ãŸãã
+
+8. Drill Down into Downstream Call ãã¯ãªãã¯ããŸãã
+
+ 
+
+ 次ã«éãã¿ãã«ã¯ãApi-Services Tier ã®ã³ãŒã«ã°ã©ãã衚瀺ãããŸãã100% ã®æéã outbound HTTP call ã«ãããã®ã ã£ãããšãããããŸãã
+
+9. HTTP ãªã³ã¯ãã¯ãªãã¯ããŠãããŠã³ã¹ããªãŒã åŒã³åºãã®è©³çްããã«ãéããŸãã
+
+ 
+
+ ããŠã³ã¹ããªãŒã åŒã³åºãã®è©³çްããã«ã«ã¯ãApi-Services Tier ã Enquiry-Services Tier ã«å¯Ÿã㊠outbound HTTP call ãè¡ã£ãããšã瀺ãããŠããŸããHTTP call ããã©ã£ãŠ Enquiry-Services Tier ã«é²ã¿ãŸãã
+
+10. Drill Down into Downstream Call ãã¯ãªãã¯ããŸãã
+
+ 
+
+ 次ã«éãã¿ãã«ã¯ãEnquiry-Services Tier ã®ã³ãŒã«ã°ã©ãã衚瀺ãããŸããããŒã¿ããŒã¹ãžã® JDBC calls ããã©ã³ã¶ã¯ã·ã§ã³ã®åé¡ãåŒãèµ·ãããŠããããšãããããŸãã
+
+11. æãæéãããã£ãŠãã JDBC ãªã³ã¯ãã¯ãªãã¯ããŠãJDBC calls ã®è©³çްããã«ãéããŸãã
+
+ 
+
+ JDBC exit calls ã®è©³çްããã«ã«ã¯ãæãæéãæ¶è²»ããç¹å®ã®ã¯ãšãªã衚瀺ãããŸããå®å
šãª SQL ã¹ããŒãã¡ã³ããšãSQL ãã©ã¡ãŒã¿ã®å€ã確èªã§ããŸãã
+
+ 
+
+## ãŸãšã
+
+ãã®ã©ãã§ã¯ããŸã Business Transactions ã䜿çšããŠããã©ãã«ã·ã¥ãŒãã£ã³ã°ãå¿
èŠãª very slow ãªãã©ã³ã¶ã¯ã·ã§ã³ãç¹å®ããŸãããæ¬¡ã«ã³ãŒã«ã°ã©ãã調æ»ããŠãé
å»¶ã®åå ãšãªã£ãŠããã³ãŒãã®å
·äœçãªç®æãç¹å®ããŸããããã®åŸãããŠã³ã¹ããªãŒã ãµãŒãã¹ãšããŒã¿ããŒã¹ã«ããªã«ããŠã³ããŠãé
å»¶ã®æ ¹æ¬åå ãããã«åæããŸãããæçµçã«ãããã©ãŒãã³ã¹ã®åé¡ã®åå ãšãªã£ãŠããéå¹ç㪠SQL ã¯ãšãªãæ£ç¢ºã«ç¹å®ããããšãã§ããŸããããã®äžé£ã®ã¢ãããŒãã¯ãAppDynamics ããã©ã³ã¶ã¯ã·ã§ã³ã®ããã«ããã¯ã广çã«åãåããŠè§£æ±ºããã®ã«ã©ã®ããã«åœ¹ç«ã€ãã瀺ããŠããŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/7-apm-part2/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/7-apm-part2/_index.md
new file mode 100644
index 0000000000..9fc0181baa
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/7-apm-part2/_index.md
@@ -0,0 +1,106 @@
+---
+title: 7. ãšã©ãŒãšäŸå€ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+weight: 7
+description: ãã®ã»ã¯ã·ã§ã³ã§ã¯ãã¢ããªã±ãŒã·ã§ã³å
ã®ãšã©ãŒããã©ãã«ã·ã¥ãŒãã£ã³ã°ããæ¹æ³ãåŠã³ãŸã
+---
+
+ãã®æŒç¿ã§ã¯ãã¢ããªã±ãŒã·ã§ã³å
ã®ãšã©ãŒã广çã«æ€åºã»èšºæããæ ¹æ¬åå ãç¹å®ããæ¹æ³ãåŠã³ãŸããããã«ãããã©ãŒãã³ã¹ãäœäžããŠããããšã©ãŒãçºçããŠãããããç¹å®ã®ããŒããç¹å®ããæ¹æ³ãåŠã³ããããã®ããã©ãŒãã³ã¹åé¡ã解決ããããã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ææ³ãé©çšããŸãããã®ãã³ãºãªã³ã®çµéšã«ãããã¢ããªã±ãŒã·ã§ã³ã®å¥å
šæ§ãç¶æããæé©ãªããã©ãŒãã³ã¹ã確ä¿ããèœåãåäžããŸãã
+
+## ã¢ããªã±ãŒã·ã§ã³å
ã®ç¹å®ã®ãšã©ãŒãèŠã€ãã
+
+AppDynamics ã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³å
ã®ãšã©ãŒãäŸå€ãç°¡åã«èŠã€ããããšãã§ããŸãã**Errors** ããã·ã¥ããŒãã䜿çšããŠããšã©ãŒã䌎ããã©ã³ã¶ã¯ã·ã§ã³ã®ã¹ãããã·ã§ããã確èªããããæãé »ç¹ã«çºçããŠããäŸå€ãèŠã€ãããããããšãã§ããŸãããšã©ãŒãè¿
éã«ç¹å®ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®å®å®æ§ãšãŠãŒã¶ãŒäœéšãåäžãããä¿®æ£ã®åªå
é äœä»ãã容æã«ãªããŸããäŸå€ã®çš®é¡ãšé »åºŠãçè§£ããããšã§ãæã圱é¿ã®å€§ããåé¡ã«éäžããããšãã§ããŸãã
+
+1. å·Šã¡ãã¥ãŒã® **Troubleshoot** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. å·Šã¡ãã¥ãŒã® **Errors** ãªãã·ã§ã³ãã¯ãªãã¯ããŸããããã«ããããšã©ãŒã䌎ãããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ãè¿
éã«ç¹å®ã§ãã Errors ããã·ã¥ããŒãã«ç§»åããŸãã
+3. ããã€ãã®ãšã©ãŒãã©ã³ã¶ã¯ã·ã§ã³ã¹ãããã·ã§ããã確èªããŸããã¹ãããã·ã§ããã確èªããããšã§ããšã©ãŒãçºçãããšãã®æ£ç¢ºãªã³ã³ããã¹ããšãããŒãææ¡ã§ããŸãã
+4. **Exceptions** ã¿ããã¯ãªãã¯ããŠãã¿ã€ãå¥ã«ã°ã«ãŒãåãããäŸå€ã確èªããŸããäŸå€ã¿ã€ãå¥ã«ã°ã«ãŒãåããããšã§ãç¹°ãè¿ãçºçããåé¡ããã¿ãŒã³ãç¹å®ãããããªããŸãã
+
+ 
+
+ **Exceptions** ã¿ãã«ã¯ãã¢ããªã±ãŒã·ã§ã³å
ã§æãå€ãçºçããŠããäŸå€ã®ã¿ã€ãã衚瀺ããããããæã圱é¿ã®å€§ãããã®ããåªå
çã«ä¿®æ£ããããšãã§ããŸãã
+
+5. **Exceptions per minute** ãš **Exception count** (6) ã芳å¯ãããšã©ãŒã®é »åºŠãææ¡ããŸããé »åºŠã®é«ãäŸå€ã¯ãå³åº§ã«å¯Ÿå¿ãå¿
èŠãªé倧ãªåé¡ã瀺ããŠããããšããããããŸãã
+6. äŸå€ãçºçããŠãã **Tier** ã«æ³šç®ããŠãã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£å
ã§ã®åé¡ç®æãç¹å®ããŸãã圱é¿ãåããŠãã tier ãç¥ãããšã§ãæ ¹æ¬åå ã®çµã蟌ã¿ã«åœ¹ç«ã¡ãŸãã
+7. MySQLIntegrityConstraintViolationException ã¿ã€ããããã«ã¯ãªãã¯ããŠãããã«è©³ãã調ã¹ãŸãã
+
+ 
+
+8. ãã®äŸå€ã¿ã€ããçºçããã¹ãããã·ã§ããã衚瀺ããæŠèŠããã·ã¥ããŒãã確èªããŸãã
+9. **Stack Traces for this Exception** ãšããã©ãã«ã®ã¿ãã«ã¯ããã®äŸå€ã¿ã€ãã«ãã£ãŠçæãããäžæã®ã¹ã¿ãã¯ãã¬ãŒã¹ã®éèšãªã¹ãã衚瀺ãããŸããã¹ã¿ãã¯ãã¬ãŒã¹ã¯ããšã©ãŒãåŒãèµ·ãããŠããæ£ç¢ºãªã³ãŒããã¹ã瀺ããŠããããããã°ã«äžå¯æ¬ ã§ãã
+10. ã¹ãããã·ã§ãããããã«ã¯ãªãã¯ããŠéããã³ã³ããã¹ãå
ã§ãšã©ãŒã確èªããŸãã
+ããã«ããããã©ã³ã¶ã¯ã·ã§ã³ãããŒã衚瀺ããããšã©ãŒãçºçããå Žæãç¹å®ãããŸãã
+
+ 
+
+ äŸå€ç»é¢ãããšã©ãŒã¹ãããã·ã§ãããéããšãã¹ãããã·ã§ããå
ã®ãšã©ãŒãçºçããç¹å®ã®ã»ã°ã¡ã³ããéããŸãã
+
+11. ãšã©ãŒãäŸå€ã瀺ãèµ€ãããã¹ãã® exit call ã«æ³šç®ããŸãã
+12. exit call ãããªã«ããŠã³ããŠã詳现ãªãšã©ãŒæ
å ±ã衚瀺ããŸãã
+13. **Error Details** ãã¯ãªãã¯ããŠãå®å
šãªã¹ã¿ãã¯ãã¬ãŒã¹ã衚瀺ããŸããå®å
šãªã¹ã¿ãã¯ãã¬ãŒã¹ã¯ãéçºè
ããã°ã远跡ããŠä¿®æ£ããããã«éèŠã§ãã
+
+{{% notice title="Tip" style="primary" icon="lightbulb" %}}
+ãšã©ãŒåŠçãšäŸå€ã«ã€ããŠè©³ããåŠã³ããå Žåã¯ã次ã®ãªã³ã¯ãã AppDynamics ã®å
¬åŒããã¥ã¡ã³ããåç
§ããŠãã ãã: [here](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/troubleshooting-applications/errors-and-exceptions)ã
+{{% /notice %}}
+
+
+
+## ããŒãã®åé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+
+ããŒãã®å¥å
šæ§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšå¯çšæ§ã«çŽæ¥åœ±é¿ããŸããããŒãã®åé¡ãæ©æã«æ€åºããããšã§ãé害ãé²ããã¹ã ãŒãºãªéçšã確ä¿ã§ããŸããAppDynamics 㯠UI å
šäœã«èŠèŠçãªã€ã³ãžã±ãŒã¿ãŒãæäŸããŠãããåé¡ãè¿
éã«ç¹å®ããããšã容æã«ãªããŸãã
+
+ããŒãã®åé¡ã®ã€ã³ãžã±ãŒã¿ãŒã¯ãApplication Dashboard ã® 3 ã€ã®é åã§ç¢ºèªã§ããŸãã
+
+1. **Application Dashboard** ã芳å¯ããŠãããŒãã®åé¡ã®èŠèŠçãªã€ã³ãžã±ãŒã¿ãŒã確èªããŸããè²ã®å€åãã¢ã€ã³ã³ã«ãã£ãŠãåé¡ãå³åº§ã«éç¥ãããŸãã
+2. **Events** ããã«ã«ã¯ãNode Health ã«é¢é£ãããã®ãå«ã Health Rule Violations ã衚瀺ãããŸãã
+3. **Node Health** ããã«ã«ã¯ãããŒãã§çºçããŠãã critical ãŸã㯠warning ã®åé¡ã®æ°ã衚瀺ãããŸãã**Node Health** ããã«ã® Node Health ãªã³ã¯ãã¯ãªãã¯ããŠã**Tiers & Nodes dashboard** ã«ããªã«ããŠã³ããŸãã
+
+ 
+
+4. ãŸãã¯ãå·Šã¡ãã¥ãŒã® **Tiers & Nodes** ãã¯ãªãã¯ããŠã**Tiers & Nodes dashboard** ã«ã¢ã¯ã»ã¹ããããšãã§ããŸãã
+5. Grid View ã«åãæ¿ããŠãæŽçãããããŒãã®ãªã¹ãã衚瀺ããŸããGrid view ã䜿çšãããšãèŠåã®ããããŒãã®ã¹ãã£ã³ãšæ€çŽ¢ã容æã«ãªããŸãã
+6. Insurance-Services_Node-01 ããŒãã®èŠåã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã
+
+ 
+
+7. Health Rule Violations ã®æŠèŠã確èªããéåã®èª¬æãã¯ãªãã¯ããŸãã
+8. **Details** ãã¿ã³ãã¯ãªãã¯ããŠã詳现ã衚瀺ããŸãã
+
+ 
+
+ **Health Rule Violation** ã®è©³çްãã¥ãŒã¢ã«ã¯ãæ¬¡ã®æ
å ±ã衚瀺ãããŸãã
+
+9. éåã®çŸåšã®ç¶æ
ã
+10. éåãçºçããŠããæéã®ã¿ã€ã ã©ã€ã³ã
+11. éåã®å
·äœçãªå
容ãšããããããªã¬ãŒããæ¡ä»¶ã
+12. **View Dashboard During Health Rule Violation** ãã¯ãªãã¯ããŠãåé¡çºçæã®ããŒãã®ã¡ããªã¯ã¹ã確èªããŸããéåãšããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãé¢é£ä»ããããšã§ã蚺æã«åœ¹ç«ã¡ãŸãã
+
+ 
+
+ **View Dashboard During Health Rule Violation** ãã¿ã³ãã¯ãªãã¯ãããšãããã©ã«ãã§ããŒãããã·ã¥ããŒãã® **Server** ã¿ããéããŸãã
+
+ AppDynamics Server Visibility Monitoring agent ããŸã ã€ã³ã¹ããŒã«ããŠããªãå Žåã¯ãããŒãã®ãã¹ãã®ãªãœãŒã¹ã¡ããªã¯ã¹ã¯è¡šç€ºãããŸããããããã®ã¡ããªã¯ã¹ã¯æ¬¡ã®ã©ãã§ç¢ºèªã§ããŸããAppDynamics Java agent ã¯ãJMX ãä»ã㊠JVM ããã¡ã¢ãªã¡ããªã¯ã¹ãåéããŸãã
+
+ 以äžã®æé ã§ JVM ããŒãããŒã¿ã調æ»ããŸãã
+
+13. **Memory** ã¿ããã¯ãªãã¯ããŸãã
+14. çŸåšã®ããŒã䜿çšçã確èªããŸãã
+15. çºçããŠãã Major Garbage Collections ã«æ³šç®ããŸãã
+
+泚: Memory ç»é¢ã®è¡šç€ºã«åé¡ãããå Žåã¯ãå¥ã®ãã©ãŠã¶ã䜿çšããŠã¿ãŠãã ãã (Firefox 㯠WindowsãLinuxãMac ã§æ£ããã¬ã³ããªã³ã°ãããŸã)ã
+
+ 
+
+16. å€åŽã®ã¹ã¯ããŒã«ããŒã䜿çšããŠãç»é¢ã®æäžéšãŸã§ã¹ã¯ããŒã«ããŸãã
+17. **PS Old Gen** ã¡ã¢ãªäœ¿çšéãé«ãå Žåã¯ãã¡ã¢ãªãªãŒã¯ãŸãã¯éå¹çãªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®å
åã§ããå¯èœæ§ãããããæ³šæããŸããã¡ã¢ãªå§è¿«ãæ©æã«ç¹å®ããããšã§ãé害ãé²ãããšãã§ããŸãã
+
+ããŒããš JVM ã®ã¢ãã¿ãªã³ã°ã«ã€ããŠã¯ã[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/tiers-and-nodes/troubleshoot-node-problems) ãš [ãã¡ã](https://help.splunk.com/en/appdynamics-saas/application-performance-monitoring/25.7.0/tiers-and-nodes/monitor-jvms) ã§è©³ãã説æããŠããŸãã
+
+
+
+## ãŸãšã
+
+ãã®ã©ãã§ã¯ãAppDynamics ã广çã«äœ¿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®ãšã©ãŒãšããŒãã®å¥å
šæ§ã®åé¡ãç¹å®ããã³ãã©ãã«ã·ã¥ãŒãã£ã³ã°ããæ¹æ³ãåŠã³ãŸããããŸããErrors ããã·ã¥ããŒãã䜿çšããŠç¹å®ã®ãšã©ãŒãäŸå€ãèŠã€ãããã®é »åºŠãã¿ã€ããã¢ããªã±ãŒã·ã§ã³ãžã®åœ±é¿ãçè§£ããŸããããšã©ãŒã¹ãããã·ã§ãããšã¹ã¿ãã¯ãã¬ãŒã¹ãããªã«ããŠã³ããŠãéå®³ã®æ ¹æ¬åå ãç¹å®ããŸããã
+
+次ã«ãApplication Dashboard ã®èŠèŠçãªã€ã³ãžã±ãŒã¿ãŒãè§£éããHealth Rule Violations ã調æ»ããããšã§ãããŒãã®å¥å
šæ§ã¢ãã¿ãªã³ã°ãæ¢çŽ¢ããŸãããJVM ã¡ã¢ãªã¡ããªã¯ã¹ãåæããŠãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãšããŒã䜿çšéã«é¢é£ããæœåšçãªããã©ãŒãã³ã¹ã®ããã«ããã¯ãæ€åºããæ¹æ³ãåŠã³ãŸããã
+
+ãããã®ã¹ãã«ãçµã¿åãããããšã§ãããã¢ã¯ãã£ããªã¢ãã¿ãªã³ã°ãšè¿
éãªãã©ãã«ã·ã¥ãŒãã£ã³ã°ãå¯èœã«ãªããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšä¿¡é Œæ§ãç¶æã§ããŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/_index.md
new file mode 100644
index 0000000000..193dd42d83
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/1-application-performance-monitoring/_index.md
@@ -0,0 +1,42 @@
+---
+title: Application Performance Monitoring (APM)
+time: 2 minutes
+weight: 1
+description: ãã®ã©ãã§ã¯ãSplunk AppDynamics ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãµãŒãã¹ã®å¥å
šæ§ãç£èŠããæ¹æ³ãåŠã³ãŸãã
+---
+
+## ç®ç
+
+ãã®ã©ãã§ã¯ãAppDynamics ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãµãŒãã¹ã®å¥å
šæ§ãç£èŠããæ¹æ³ãåŠã³ãŸããæ¬ã¯ãŒã¯ã·ã§ããã®ä»ã®ã©ããéå§ããåã«ããŸããã®ã©ããå®äºããå¿
èŠããããŸãã
+
+ãã®ã©ããå®äºãããšã以äžã®ããšãã§ããããã«ãªããŸãã
+
+- AppDynamics Java APM Agent ãããŠã³ããŒãããã
+- AppDynamics Java APM Agent ãã€ã³ã¹ããŒã«ããã
+- ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã«è² è·ããããŠåæåããã
+- AppDynamics APM ã®ã³ã¢ã³ã³ã»ãããçè§£ããã
+- Controller ã§ã³ã¬ã¯ã·ã§ã³èšå®ãæ§æããã
+- ã¢ããªã±ãŒã·ã§ã³ã®å¥å
šæ§ãç£èŠããã
+- ã¢ããªã±ãŒã·ã§ã³ããã©ãŒãã³ã¹ã®åé¡ããã©ãã«ã·ã¥ãŒãã£ã³ã°ããæ ¹æ¬åå ãç¹å®ããã
+- AppDynamics ã«ãã£ãŠåéãããããŒã¿ã«åºã¥ããŠãAppDynamics ã®ç£èŠãµãŒãã¹ã®ã¢ã©ãŒããç£èŠããã
+
+## ã¯ãŒã¯ã·ã§ããç°å¢
+
+ã¯ãŒã¯ã·ã§ããç°å¢ã«ã¯ 2 ã€ã®ãã¹ãããããŸãã
+
+- 1 ã€ç®ã®ãã¹ã㯠AppDynamics Controller ãå®è¡ããŠããã以éãControllerããšåŒã³ãŸãã
+- 2 ã€ç®ã®ãã¹ãã¯ã©ãã§äœ¿çšãã Supercar Trader ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠããŸããAppDynamics ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ãããã¹ãã§ããã以éãApplication VMããšåŒã³ãŸãã
+
+## Controller
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ [AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã䜿çšããŸãã
+
+
+
+## Application VM
+
+Supercar Trader 㯠Java ããŒã¹ã® Web ã¢ããªã±ãŒã·ã§ã³ã§ãã
+
+Supercar-Trader collection ã®ç®çã¯ãAppDynamics Controller ã®ããã«åçãªãã©ãã£ãã¯ïŒBusiness TransactionsïŒãçæããããšã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/1-lab-prerequisites/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/1-lab-prerequisites/_index.md
new file mode 100644
index 0000000000..fde4be6167
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/1-lab-prerequisites/_index.md
@@ -0,0 +1,107 @@
+---
+title: ã©ãã®åææ¡ä»¶
+time: 2 minutes
+weight: 1
+description: ãã®æŒç¿ã§ã¯ãSplunk AppDynamics ã³ã³ãããŒã©ãŒãžã®ã¢ã¯ã»ã¹ãã¢ããªã±ãŒã·ã§ã³ãžã®ãã©ã³ã¶ã¯ã·ã§ã³è² è·ã®ç¢ºèªãå¿
èŠã«å¿ããŠã¢ããªã±ãŒã·ã§ã³ãšãã©ã³ã¶ã¯ã·ã§ã³è² è·ã®åèµ·åãè¡ããŸãã
+draft: true
+---
+
+## ã³ã³ãããŒã©ãŒãžã®ãã°ã€ã³
+
+Cisco ã®èªèšŒæ
å ±ã䜿çšããŠã[AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã«ãã°ã€ã³ããŸãã
+
+## ã¢ããªã±ãŒã·ã§ã³ãžã®ãã©ã³ã¶ã¯ã·ã§ã³è² è·ã確èªãã
+
+ã¢ããªã±ãŒã·ã§ã³ã®ãããŒãããã確èªããŸãã
+
+1. éå» 1 æéã®æéæ ãéžæããŸãã
+2. ãããŒãããäžã§ 5 ã€ã®ç°ãªã Tier ã衚瀺ãããŠããããšã確èªããŸãã
+3. éå» 1 æéã®éã«äžè²«ããè² è·ãããããšã確èªããŸãã
+
+
+
+ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã®äžèЧã確èªããŸãã
+
+1. å·ŠåŽã®ã¡ãã¥ãŒãã Business Transactions ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. 以äžã«ç€ºã 11 ä»¶ã®ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã衚瀺ãããŠããããšã確èªããŸãã
+3. éå» 1 æéã®éã«äœããã®æ°ã®åŒã³åºãããã£ãããšã確èªããŸãã
+
+泚: Calls åã衚瀺ãããŠããªãå Žåã¯ãView Options ããŒã«ããŒãã¿ã³ãã¯ãªãã¯ããŠè©²åœã®åã衚瀺ã§ããŸãã
+
+
+
+ããŒãã®ãšãŒãžã§ã³ãã¹ããŒã¿ã¹ã確èªããŸãã
+
+1. å·ŠåŽã®ã¡ãã¥ãŒãã Tiers & Nodes ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. Grid View ãã¯ãªãã¯ããŸãã
+3. éå» 1 æéã®éãåããŒãã® App Agent Status ã 90% ãè¶
ããŠããããšã確èªããŸãã
+
+
+
+## å¿
èŠã«å¿ããŠã¢ããªã±ãŒã·ã§ã³ãšãã©ã³ã¶ã¯ã·ã§ã³è² è·ãåèµ·åãã
+
+åã®ã¹ãããã§å®è¡ãããã§ãã¯ã®ããããã確èªã§ããªãã£ãå Žåã¯ãApplication VM ã« SSH æ¥ç¶ãã以äžã®æé ã«åŸã£ãŠã¢ããªã±ãŒã·ã§ã³ãšãã©ã³ã¶ã¯ã·ã§ã³è² è·ãåèµ·åããŸããã€ã³ã¹ã¿ã³ã¹ãžã® SSH æ¥ç¶ã«å¿
èŠãª EC2 ã€ã³ã¹ã¿ã³ã¹ã® IP ã¢ãã¬ã¹ããŠãŒã¶ãŒåããã¹ã¯ãŒããæå
ã«ããããšã確èªããŠãã ãããããŒã«ã«ãã·ã³ã§ã¿ãŒããã«ãéãã以äžãå
¥åããŸãã
+
+``` bash
+ssh -P 2222 [username]@http://[ec2-ip-address]
+```
+
+ãã¹ã¯ãŒãã®å
¥åãæ±ããããŸãã
+
+å®è¡äžã® Apache Tomcat ã€ã³ã¹ã¿ã³ã¹ã忢ããã«ã¯ã以äžã®ã³ãã³ãã䜿çšããŸãã
+
+```bash
+cd /usr/local/apache/apache-tomcat-9/bin
+./shutdown.sh
+```
+
+以äžã®ã³ãã³ãã䜿çšããŠããŸã å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ JVM ãæ®ã£ãŠããªãã確èªããŸãã
+
+```bash
+ps -ef | grep Supercar-Trader
+```
+
+å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ JVM ãæ®ã£ãŠããå Žåã¯ã以äžã®ã³ãã³ãã䜿çšããŠæ®ãã® JVM ãçµäºãããŸãã
+
+```bash
+sudo pkill -f Supercar-Trader
+```
+
+ã¢ããªã±ãŒã·ã§ã³ã®è² è·çæã忢ããã«ã¯ã以äžã®ã³ãã³ãã䜿çšããŸãã
+
+```bash
+cd /opt/appdynamics/lab-artifacts/phantomjs
+./stop_load.sh
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+
+
+次ã«ã以äžã®ã³ãã³ãã䜿çšã㊠Apache Tomcat ãèµ·åããŸãã
+
+```bash
+cd /usr/local/apache/apache-tomcat-9/bin
+./startup.sh
+```
+
+2 åéåŸ
ã£ãŠããã以äžã®ã³ãã³ãã䜿çšã㊠Apache Tomcat ãããŒã 8080 ã§åäœããŠããããšã確èªããŸãã
+
+```bash
+sudo netstat -tulpn | grep LISTEN
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããããŒã 8080 ã Apache Tomcat ã«ãã£ãŠäœ¿çšãããŠããããšã瀺ãããã¯ãã§ãã
+
+
+
+ã¢ããªã±ãŒã·ã§ã³ã®è² è·çæãéå§ããã«ã¯ã以äžã®ã³ãã³ãã䜿çšããŸãã
+
+```bash
+cd /opt/appdynamics/lab-artifacts/phantomjs
+./start_load.sh
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/2-deploy-server-agent-option-1/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/2-deploy-server-agent-option-1/_index.md
new file mode 100644
index 0000000000..2ec5764a8b
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/2-deploy-server-agent-option-1/_index.md
@@ -0,0 +1,82 @@
+---
+title: Server Agent ã®ããã〠- Option 1
+time: 2 minutes
+weight: 2
+description: ãå©çšã® AppDynamics Controller ã®ããŒãžã§ã³ã«ãã£ãŠã¯ãOption 1 ã§ç€ºãããã« Controller ãã Server Visibility ãšãŒãžã§ã³ããããŠã³ããŒãã§ããå Žåãšã§ããªãå ŽåããããŸãã
+draft: true
+---
+
+{{% notice title="åææ¡ä»¶" style="primary" icon="lightbulb" %}}
+ãã㯠Application Performance Monitoring ã©ãã®ç¶ãã§ããã¢ããªã±ãŒã·ã§ã³ãèµ·åããŠãããéå» 1 æéã«ããã£ãŠè² è·ãããã£ãŠããããšã確èªããŠãã ãããå¿
èŠã«å¿ã㊠generate-application-load ã»ã¯ã·ã§ã³ã«æ»ããããŒããžã§ãã¬ãŒã¿ãŒãåèµ·åããŠãã ããã
+{{% /notice %}}
+
+以äžã®æé ã Select the agent type for download ã»ã¯ã·ã§ã³ãŸã§é²ããŠãã ãããServers ã¿ã€ã«ã衚瀺ãããªãå Žåã¯ãDeploy Server Agent - Option 2 ã®ã¢ãããŒãã䜿çšããå¿
èŠããããŸãã
+
+Option 1 ã䜿çšããå©ç¹ã¯ããšãŒãžã§ã³ãã Controller ã«æ¥ç¶ããããã«äºåæ§æãããŠããç¹ã§ããäžæ¹ Option 2 ã䜿çšããå Žåã¯ãController ã«æ¥ç¶ããããã«ãšãŒãžã§ã³ãã®æ§æãç·šéããå¿
èŠããããŸãã
+
+## Controller ãžã®ãã°ã€ã³
+
+[AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã« Cisco ã®è³æ Œæ
å ±ã§ãã°ã€ã³ããŸãã
+
+## Getting Started Wizard ãžã®ç§»å
+
+1. ç»é¢å·Šäžã® Home ã¿ããéžæããŸãã
+2. Getting Started ã¿ããéžæããŸãã
+3. Getting Started Wizard ãã¯ãªãã¯ããŸãã
+
+
+
+## ããŠã³ããŒããããšãŒãžã§ã³ãã¿ã€ãã®éžæ
+
+1. Servers ãã¿ã³ãã¯ãªãã¯ããŸãã
+
+
+
+## Server Agent ã®ããŠã³ããŒã
+
+1. Platform Bundle 㯠Linux ãš 64-bit ã®ãŸãŸã«ããŠãããŸãã
+2. Controller connection ã¯ããã©ã«ãã®ãŸãŸã«ããŠãããŸãã
+3. Click Here to Download ãã¯ãªãã¯ããŸãã
+
+
+
+Server Visibility Agent ãã¡ã€ã«ãããŒã«ã«ã®ã¯ãŒã¯ã¹ããŒã·ã§ã³ã«ä¿åããŸãã
+
+ãã©ãŠã¶ã¯ã以äžã®ç»åã®ããã«ïŒOS ã«ãã£ãŠç°ãªããŸãïŒããšãŒãžã§ã³ããã¡ã€ã«ãããŒã«ã«ãã¡ã€ã«ã·ã¹ãã ã«ä¿åããããä¿ããŸãã
+
+
+
+## Server Agent ãã¢ããªã±ãŒã·ã§ã³ VM ã«ã¢ããããŒã
+
+Server ãšãŒãžã§ã³ããã¡ã€ã«ãã¢ããããŒãããããã»ã¹ã¯ãã¯ãŒã¯ã¹ããŒã·ã§ã³ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠç°ãªããŸããOS ã MAC/Linux ã®å Žå㯠SCP ããWindows ã®å Žå㯠WinSCP ã䜿çšã㊠Server ãšãŒãžã§ã³ãã® ZIP ãã¡ã€ã«ãã³ããŒããŠãã ããã
+
+## Server Agent ã®ã€ã³ã¹ããŒã«
+
+Server ãšãŒãžã§ã³ãã® zip ãã¡ã€ã«ãè§£åãããã£ã¬ã¯ããªæ§é ãäœæããŸãã
+
+```bash
+cd /opt/appdynamics
+mkdir machineagent
+```
+
+以äžã®ã³ãã³ãã䜿çšããŠãServer Visibility ãšãŒãžã§ã³ãã® zip ãã¡ã€ã«ããã£ã¬ã¯ããªã«ã³ããŒãããã¡ã€ã«ãè§£åããŸããServer Visibility ãšãŒãžã§ã³ããã¡ã€ã«ã®ååã¯ã以äžã®äŸãšè¥å¹²ç°ãªãå ŽåããããŸããïŒzip ãã¡ã€ã«ã /tmp ãã£ã¬ã¯ããªã«ã¢ããããŒãããããšãåæãšããŠããŸãïŒ
+
+```bash
+cp /tmp/machineagent-bundle-64bit-linux-20.4.0.2571.zip /opt/appdynamics/machineagent/
+cd /opt/appdynamics/machineagent
+unzip machineagent-bundle-64bit-linux-20.4.0.2571.zip
+```
+
+## Server Visibility ãšãŒãžã§ã³ãã®èµ·å
+
+以äžã®ã³ãã³ãã䜿çšã㊠Server Visibility ãšãŒãžã§ã³ããèµ·åããèµ·åããããšã確èªããŸãã
+
+```bash
+cd /opt/appdynamics/machineagent/bin
+nohup ./machine-agent &
+ps -ef | grep machine
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/3-deploy-server-agent/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/3-deploy-server-agent/_index.md
new file mode 100644
index 0000000000..86d696b08c
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/3-deploy-server-agent/_index.md
@@ -0,0 +1,88 @@
+---
+title: Machine Agent ã®ãããã€
+time: 5 minutes
+weight: 3
+description: ãµãŒããŒãšãŒãžã§ã³ããæåã§ã€ã³ã¹ããŒã«ããŸãã
+---
+
+ãã®æŒç¿ã§ã¯ã以äžã®äœæ¥ãè¡ããŸãã
+
+1. Machine Agent ãã€ã³ã¹ããŒã«ããã¹ã¯ãªãããå®è¡ãã
+2. Machine Agent ãæ§æãã
+3. Machine Agent ãèµ·åãã
+
+{{% notice title="Note" style="orange" %}}
+ã¹ã¯ãªããã䜿çšããŠãEC2 ã€ã³ã¹ã¿ã³ã¹ã« Machine Agent ãããŠã³ããŒãããŸããé垞㯠[https://accounts.appdynamics.com/](https://accounts.appdynamics.com/) ã«ãã°ã€ã³ã㊠Machine Agent ãããŠã³ããŒãããå¿
èŠããããŸãããã¢ã¯ã»ã¹å¶éã®å¯èœæ§ããããããããŒã¿ã«ããçŽæ¥ããŠã³ããŒãããã¹ã¯ãªããã䜿çšããŸããAppDynamics ããŒã¿ã«ãžã®ã¢ã¯ã»ã¹æš©ããããMachine Agent ãããŠã³ããŒããããå Žåã¯ã以äžã®æé ã§ããŠã³ããŒãããAPM ã©ãã® Install Agent ã»ã¯ã·ã§ã³ã§äœ¿çšããæé ãåç
§ã㊠VM ã« SCP ã§è»¢éã§ããŸãã
+
+1. [AppDynamics Portal](https://accounts.appdynamics.com/) ã«ãã°ã€ã³ããŸã
+2. å·ŠåŽã®ã¡ãã¥ãŒã§ **Downloads** ãã¯ãªãã¯ããŸã
+3. **Type** ã§ **Machine Agent** ãéžæããŸã
+4. **Operating System** ã§ **Linux** ãéžæããŸã
+5. **Machine Agent Bundle - 64-bit linux (zip)** ãèŠã€ã㊠**Download** ãã¿ã³ãã¯ãªãã¯ããŸã
+6. Install Agent ã»ã¯ã·ã§ã³ã®æé ã«åŸã£ãŠãããŠã³ããŒããããã¡ã€ã«ã EC2 ã€ã³ã¹ã¿ã³ã¹ã« SCP ã§è»¢éããŸã
+7. zip ãã¡ã€ã«ã /opt/appdynamics/machineagent ãã£ã¬ã¯ããªã«å±éãããã®ã©ãã®æ§æã»ã¯ã·ã§ã³ã«é²ã¿ãŸã
+{{% /notice %}}
+
+## ã€ã³ã¹ããŒã«ã¹ã¯ãªããã®å®è¡
+
+以äžã®ã³ãã³ãã䜿çšããŠãã¹ã¯ãªãããé
眮ãããŠãããã£ã¬ã¯ããªã«ç§»åããŸããã¹ã¯ãªãã㯠Machine Agent ãããŠã³ããŒãããŠå±éããŸãã
+
+```bash
+cd /opt/appdynamics/lab-artifacts/machineagent/
+```
+
+以äžã®ã³ãã³ãã䜿çšããŠãã€ã³ã¹ããŒã«ã¹ã¯ãªãããå®è¡ããŸãã
+
+```bash
+chmod +x install_machineagent.sh
+./install_machineagent.sh
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+
+
+## ãµãŒããŒãšãŒãžã§ã³ãã®æ§æ
+
+以äžã«èšèŒãããŠããæ§æããããã£ã®å€ã Java Agent ã® "controller-info.xml" ããååŸããæ¬¡ã®æé ã§äœ¿çšã§ããããã«æºåããŠãããŸãã
+
+```bash
+cat /opt/appdynamics/javaagent/conf/controller-info.xml
+```
+
+- controller-host
+- controller-port
+- controller-ssl-enabled
+- account-name
+- account-access-key
+
+Machine Agent ã® "controller-info.xml" ãã¡ã€ã«ãç·šéããJava Agent ã®æ§æãã¡ã€ã«ããååŸãã以äžã®ããããã£ã®å€ãå
¥åããŸãã
+
+- controller-host
+- controller-port
+- controller-ssl-enabled
+- account-name
+- account-access-key
+
+"sim-enabled" ããããã£ã true ã«èšå®ããŠãããã¡ã€ã«ãä¿åããå¿
èŠããããŸãã以äžã®ç»åã®ããã«ãªãã¯ãã§ãã
+
+```bash
+cd /opt/appdynamics/machineagent/conf
+nano controller-info.xml
+```
+
+
+
+## Server Visibility ãšãŒãžã§ã³ãã®èµ·å
+
+以äžã®ã³ãã³ãã䜿çšããŠãServer Visibility ãšãŒãžã§ã³ããèµ·åããèµ·åããããšã確èªããŸãã
+
+```bash
+cd /opt/appdynamics/machineagent/bin
+nohup ./machine-agent &
+ps -ef | grep machine
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/4-monitor-server-health/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/4-monitor-server-health/_index.md
new file mode 100644
index 0000000000..47142fb4e1
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/4-monitor-server-health/_index.md
@@ -0,0 +1,111 @@
+---
+title: ãµãŒããŒãã«ã¹ã®ç£èŠ
+time: 2 minutes
+weight: 4
+description: ãã®æŒç¿ã§ã¯ããµãŒããŒã®ãã«ã¹ãç£èŠããããã®ããã€ãã®ããã·ã¥ããŒãã確èªãããµãŒããŒãšã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãéãç§»åããŸãã
+---
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®äºããŸãã
+
+- Server Main ããã·ã¥ããŒãã®ç¢ºèª
+- Server Processes ããã·ã¥ããŒãã®ç¢ºèª
+- Server Volumes ããã·ã¥ããŒãã®ç¢ºèª
+- Server Network ããã·ã¥ããŒãã®ç¢ºèª
+- ãµãŒããŒãšã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãéã®ç§»å
+
+## Server Main ããã·ã¥ããŒãã®ç¢ºèª
+
+Machine agent ãã€ã³ã¹ããŒã«ããã®ã§ãServer Visibility ã¢ãžã¥ãŒã«ã§å©çšå¯èœãªããã€ãã®æ©èœãèŠãŠãããŸãããã**Application Dashboard** ãã **Servers** ã¿ããã¯ãªãã¯ãã以äžã®æé ã§ãµãŒããŒã®ã¡ã€ã³ããã·ã¥ããŒããžããªã«ããŠã³ããŸãã
+
+1. å·Šã¡ãã¥ãŒã® **Servers** ã¿ããã¯ãªãã¯ããŸãã
+2. ãµãŒããŒã®å·ŠåŽã® **checkbox** ããªã³ã«ããŸãã
+3. **View Details** ãã¯ãªãã¯ããŸãã
+
+
+
+ããã§ãµãŒããŒããã·ã¥ããŒãã確èªã§ããŸãããã®ããã·ã¥ããŒãã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã
+
+éžæããç£èŠå¯Ÿè±¡ãµãŒããŒã®äž»èŠãªããã©ãŒãã³ã¹ã¡ããªã¯ã¹ã®ãã£ãŒãã確èªã§ããŸããå«ãŸããé
ç®ã¯ä»¥äžã®ãšããã§ãã
+
+- ãµãŒããŒã®å¯çšæ§
+- CPUãã¡ã¢ãªããããã¯ãŒã¯äœ¿çšç
+- ãµãŒããŒã®ããããã£
+- ãã£ã¹ã¯ãããŒãã£ã·ã§ã³ãããªã¥ãŒã ã®ã¡ããªã¯ã¹
+- CPU ãªãœãŒã¹ãšã¡ã¢ãªãæãæ¶è²»ããŠããäžäœ 10 ã®ããã»ã¹
+
+Server Main ããã·ã¥ããŒãã®è©³çްã«ã€ããŠã¯[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/infrastructure-visibility/25.7.0/server-visibility/monitor-your-servers-using-server-visibility/server-dashboard)ãåç
§ããŠãã ããã
+
+ããã·ã¥ããŒãã® **Top Pane** ã確èªãããšã以äžã®æ
å ±ã衚瀺ãããŸãã
+
+- Host Id: Splunk AppDynamics Controller å
ã§ãµãŒããŒãäžæã«èå¥ãã ID ã§ã
+- Health: ãµãŒããŒã®å
šäœçãªãã«ã¹ç¶æ
ã衚瀺ããŸãã
+- Hierachy: ãµãŒããŒãã°ã«ãŒãåããããã®ä»»æã®éå±€æ§é ã§ãã詳现ã«ã€ããŠã¯ããã¥ã¡ã³ã[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/infrastructure-visibility/25.7.0/machine-agent/configure-the-machine-agent/machine-agent-configuration-properties)ãåç
§ããŠãã ãã
+
+1. ãã«ã¹ãµãŒããŒã¢ã€ã³ã³ãã¯ãªãã¯ãããšã**Violations * Anomalies** ããã«ã衚瀺ãããŸããããã«ã確èªããŠæœåšçãªåé¡ãç¹å®ããŸã
+2. **Current Health Rule Evaluation Status** ãã¯ãªãã¯ããŠããã®ãµãŒããŒã§çŸåšã¢ã©ãŒããçºçããŠããåé¡ããããã©ããã確èªããŸã
+
+
+
+
+1. **CPU Usage too high** ã«ãŒã«ãã¯ãªãã¯ããŸã
+2. **Edit Health Rule** ãã¯ãªãã¯ããŸãã**Edit Health Rule** ããã«ãéããŸã
+
+
+
+ãã®ããã«ã§ã¯ Health Rule ãèšå®ã§ããŸããHealth Rule ã®äœæãšã«ã¹ã¿ãã€ãºã®è©³çްã«ã€ããŠã¯å¥ã®ã©ãã§æ±ããŸããããã§ã¯æ¢åã®ã«ãŒã«ã確èªããã ãã§ã
+
+1. **Warning Criteria** ãã¯ãªãã¯ããŸã
+
+
+
+ãã®äŸã§ã¯ãCPU ã 5% ãè¶
ãããšèŠååºæºãèšå®ãããŠããããšãããããŸããããã Health Rule ã healthy ç¶æ
ã§ã¯ãªã warning ã衚瀺ããŠããçç±ã§ãã**Edit Health Rule** ããã«ããã£ã³ã»ã«ã㊠**Server Dashboard** ã«æ»ããŸã
+
+## Server Processes ããã·ã¥ããŒãã®ç¢ºèª
+
+1. **Processes** ã¿ããã¯ãªãã¯ããŸãã
+2. **View Options** ãã¯ãªãã¯ããŠãç°ãªãããŒã¿åãéžæããŸãã衚瀺å¯èœãª KPI ã確èªããŸã
+
+ããã§ Server Processes ããã·ã¥ããŒãã確èªã§ããŸãããã®ããã·ã¥ããŒãã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã
+
+- éžæããæéäžã«ã¢ã¯ãã£ãã ã£ããã¹ãŠã®ããã»ã¹ã衚瀺ããŸããããã»ã¹ã¯ ServerMonitoring.yml ãã¡ã€ã«ã§æå®ãããã¯ã©ã¹ããšã«ã°ã«ãŒãåãããŸãã
+- Command Line åã®ããã»ã¹ãšã³ããªã«ããŠã¹ãªãŒããŒããããšã§ããã®ããã»ã¹ãéå§ããå®å
šãªã³ãã³ãã©ã€ã³ã衚瀺ããŸãã
+- ããã»ã¹ã¯ã©ã¹ãå±éããŠããã®ã¯ã©ã¹ã«é¢é£ä»ããããããã»ã¹ã衚瀺ããŸãã
+- View Options ã䜿çšããŠããã£ãŒãã«è¡šç€ºããåãæ§æããŸãã
+- 衚瀺ãããã¡ããªã¯ã¹ã®æéã倿ŽããŸãã
+- åããœãŒãããŒãšããŠãã£ãŒãããœãŒãããŸããã¹ããŒã¯ã©ã€ã³ãã£ãŒãïŒCPU Trend ãš Memory TrendïŒã¯ãœãŒãã§ããŸããã
+- CPU ãšã¡ã¢ãªã®äœ¿çšåŸåãäžç®ã§ç¢ºèªããŸãã
+
+Server Processes ããã·ã¥ããŒãã®è©³çްã«ã€ããŠã¯[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/infrastructure-visibility/25.7.0/server-visibility/monitor-your-servers-using-server-visibility/server-process-metrics)ãåç
§ããŠãã ããã
+
+
+
+## Server Volumes ããã·ã¥ããŒãã®ç¢ºèª
+
+1. **Volumes** ã¿ããã¯ãªãã¯ããŸãã
+
+ããã§ Server Volumes ããã·ã¥ããŒãã確èªã§ããŸãããã®ããã·ã¥ããŒãã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã
+
+- ããªã¥ãŒã ã®ãªã¹ãã䜿çšçããã£ã¹ã¯ã»ããŒãã£ã·ã§ã³ã»ããªã¥ãŒã ã§å©çšå¯èœãªåèšã¹ãã¬ãŒãžã¹ããŒã¹ã確èªããŸãã
+- ãã£ã¹ã¯äœ¿çšéãš I/O 䜿çšçãã¬ãŒãã1 ç§ãããã®æäœæ°ãåŸ
æ©æéã確èªããŸãã
+- åéããã³è¡šç€ºãããã¡ããªã¯ã¹ã®æéã倿ŽããŸãã
+- ãã£ãŒãäžã®ä»»æã®ãã€ã³ããã¯ãªãã¯ããŠããã®æç¹ã®ã¡ããªã¯ã¹å€ã確èªããŸãã
+
+Server Volumes ããã·ã¥ããŒãã®è©³çްã«ã€ããŠã¯[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/infrastructure-visibility/25.7.0/server-visibility/monitor-your-servers-using-server-visibility/server-volumes-metrics)ãåç
§ããŠãã ããã
+
+
+
+## Server Network ããã·ã¥ããŒãã®ç¢ºèª
+
+1. Network ã¿ããã¯ãªãã¯ããŸãã
+
+ããã§ **Server Network** ããã·ã¥ããŒãã確èªã§ããŸãããã®ããã·ã¥ããŒãã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã
+
+- åãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ã® MACãIPv4ãIPv6 ã¢ãã¬ã¹ã確èªããŸãã
+- ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ãæå¹ãã€æ©èœããŠãããããã®åäœç¶æ
ïŒã€ãŒãµãããã±ãŒãã«ãæ¥ç¶ãããŠããããå
šäºéãŸãã¯åäºéã¢ãŒãã§åäœããŠãããïŒãæå€§è»¢éåäœïŒMTUïŒãŸãã¯ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ã転éã§ããæå€§ãããã³ã«ããŒã¿ãŠãããã®ãµã€ãºïŒãã€ãåäœïŒãã€ãŒãµãããæ¥ç¶ã®é床ïŒMbit/secïŒã確èªããŸãã
+- ãããã¯ãŒã¯ã¹ã«ãŒãããïŒkilobytes/secïŒãšãã±ãããã©ãã£ãã¯ã衚瀺ããŸãã
+- 衚瀺ãããã¡ããªã¯ã¹ã®æéã倿ŽããŸãã
+- ãã£ãŒãäžã®ä»»æã®ãã€ã³ãã«ããŠã¹ãªãŒããŒããŠããã®æç¹ã®ã¡ããªã¯ã¹å€ã確èªããŸãã
+
+Server Network ããã·ã¥ããŒãã®è©³çްã«ã€ããŠã¯[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/infrastructure-visibility/25.7.0/server-visibility/monitor-your-servers-using-server-visibility/server-network-metrics)ãåç
§ããŠãã ããã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/5-apm-to-server/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/5-apm-to-server/_index.md
new file mode 100644
index 0000000000..d7e03b8f02
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/5-apm-to-server/_index.md
@@ -0,0 +1,32 @@
+---
+title: ãµãŒããŒãš APM ã®çžé¢åæ
+time: 3 minutes
+weight: 5
+description: ãµãŒããŒã¡ããªã¯ã¹ãšãµãŒããŒäžã§çšŒåããã¢ããªã±ãŒã·ã§ã³ã®çžé¢åææ¹æ³ã確èªããŸã
+---
+
+## ãµãŒããŒãšã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãéãç§»åãã
+
+Server Visibility Monitoring ãšãŒãžã§ã³ãã¯ãåäžãã¹ãäžã§å®è¡ãããŠãã Splunk AppDynamics APM ãšãŒãžã§ã³ããšèªåçã«é¢é£ä»ããããŸãã
+
+Server Visibility ãæå¹åãããšãã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãã§ãµãŒããŒã®ããã©ãŒãã³ã¹ã¡ããªã¯ã¹ã«ã¢ã¯ã»ã¹ã§ããŸãããµãŒããŒãšã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãéã¯ãããŸããŸãªæ¹æ³ã§åãæ¿ããããŸãã以äžã®æé ã«åŸã£ãŠããµãŒããŒã®ã¡ã€ã³ããã·ã¥ããŒãããããã®ãµãŒããŒäžã§çšŒåããŠãã Node ãžãšç§»åããŸãã
+
+1. **Dashboard** ã¿ããã¯ãªãã¯ããã¡ã€ã³ã® Server Dashboard ã«æ»ããŸãã
+2. **APM Correlation** ãªã³ã¯ãã¯ãªãã¯ããŸãã
+
+
+
+1. 衚瀺ãããŠãã Tier ã®ããããã®äžç¢å°ãã¯ãªãã¯ããŸãã
+2. Tier ã® Node ãªã³ã¯ãã¯ãªãã¯ããŸãã
+
+
+
+ããã§ **Node Dashboard** ã«é·ç§»ããŸãã
+
+1. **Server** ã¿ããã¯ãªãã¯ãããšãé¢é£ãããã¹ãã¡ããªã¯ã¹ã衚瀺ãããŸãã
+
+
+
+Server Visibility Monitoring ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããŠããå Žåããã¹ãã¡ããªã¯ã¹ã¯é¢é£ãã Node ã®ã³ã³ããã¹ãã§åžžã«åç
§ã§ããŸãã
+
+ãµãŒããŒãšã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãéã®ç§»åã«ã€ããŠã¯ã[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/infrastructure-visibility/25.7.0/server-visibility/monitor-your-servers-using-server-visibility/navigating-between-server-and-application-contexts)ã§è©³ãã確èªã§ããŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/_index.md
new file mode 100644
index 0000000000..6eb31e94f0
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/2-server-visibility-monitoring/_index.md
@@ -0,0 +1,43 @@
+---
+title: Server Visibility Monitoring
+time: 2 minutes
+weight: 2
+description: ãã®ã©ãã§ã¯ãAppDynamics Server Visibility Monitoring ãš Service Availability Monitoring ã«ã€ããŠåŠã³ãŸãã
+---
+
+{{% notice title="åææ¡ä»¶" style="primary" icon="lightbulb" %}}
+ãã㯠Application Performance Monitoring ã©ãã®ç¶ãã§ããã¢ããªã±ãŒã·ã§ã³ã皌åããŠãããéå» 1 æéåã®è² è·ãããã£ãŠããããšã確èªããŠãã ãããå¿
èŠã«å¿ã㊠Generate Application Load ã»ã¯ã·ã§ã³ã«æ»ããè² è·çæããŒã«ãåèµ·åããŠãã ããã
+{{% /notice %}}
+
+## Objectives
+
+ãã®ã©ãã§ã¯ãAppDynamics Server Visibility Monitoring ãš Service Availability Monitoring ã«ã€ããŠåŠã³ãŸãã
+
+ãã®ã©ããå®äºãããšã次ã®ããšãã§ããããã«ãªããŸãã
+
+- AppDynamics Server Visibility Agent ãããŠã³ããŒãããã
+- AppDynamics Server Visibility Agent ãã€ã³ã¹ããŒã«ããã
+- ãµãŒããŒã®ãã«ã¹ç¶æ
ãç£èŠããã
+- ãšãŒãžã§ã³ããæäŸããæ¡åŒµããŒããŠã§ã¢ã¡ããªã¯ã¹ãçè§£ããã
+- ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«åœ±é¿ãåãŒãåºç€ã€ã³ãã©ã¹ãã©ã¯ãã£ã®åé¡ãçŽ æ©ãææ¡ããã
+
+## Workshop Environment
+
+ã©ãç°å¢ã«ã¯ 2 å°ã®ãã¹ãããããŸãã
+
+- 1 å°ç®ã®ãã¹ãã§ã¯ AppDynamics Controller ã皌åããŠããã以é㯠Controller ãšåŒã³ãŸãã
+- 2 å°ç®ã®ãã¹ãã§ã¯ãã©ãã§äœ¿çšãã Supercar Trader ã¢ããªã±ãŒã·ã§ã³ã皌åããŠããŸãããã®ãã¹ãã«ã¯ AppDynamics ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããããã以é㯠Application VM ãšåŒã³ãŸãã
+
+## Controller
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ [AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã䜿çšããŸãã
+
+
+
+## Application VM
+
+Supercar Trader 㯠Java ããŒã¹ã® Web ã¢ããªã±ãŒã·ã§ã³ã§ãã
+
+Supercar-Trader ã³ã¬ã¯ã·ã§ã³ã®ç®çã¯ãAppDynamics Controller åãã«åçãªãã©ãã£ã㯠(ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³) ãçæããããšã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/1-lab-prerequisites/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/1-lab-prerequisites/_index.md
new file mode 100644
index 0000000000..66e5e14eb1
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/1-lab-prerequisites/_index.md
@@ -0,0 +1,139 @@
+---
+title: ã©ãã®åææ¡ä»¶
+time: 3 minutes
+weight: 1
+description: ãã®æŒç¿ã§ã¯ãControllerã«ã¢ã¯ã»ã¹ããŠã¢ããªã±ãŒã·ã§ã³ã®è² è·ã確èªããŸãã
+---
+
+ãã®æŒç¿ã§ã¯ã次ã®ã¿ã¹ã¯ã宿œããŸãã
+
+* Webãã©ãŠã¶ãã AppDynamics Controller ã«ã¢ã¯ã»ã¹ããŸãã
+* ã¢ããªã±ãŒã·ã§ã³ãžã®ãã©ã³ã¶ã¯ã·ã§ã³è² è·ã確èªããŸãã
+* å¿
èŠã«å¿ããŠã¢ããªã±ãŒã·ã§ã³ãšãã©ã³ã¶ã¯ã·ã§ã³è² è·ãåèµ·åããŸãã
+
+## Controllerãžã®ãã°ã€ã³
+
+[AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã« Cisco ã®èªèšŒæ
å ±ã§ãã°ã€ã³ããŸãã
+
+## ã¢ããªã±ãŒã·ã§ã³ãžã®ãã©ã³ã¶ã¯ã·ã§ã³è² è·ã®ç¢ºèª
+
+ã¢ããªã±ãŒã·ã§ã³ã®ãããŒãããã確èªããŸãã
+
+1. **last 1 hour** ã®æéæ ãéžæããŸãã
+2. ãããŒãããäžã« 5 ã€ã®ç°ãªã Tier ã衚瀺ãããŠããããšã確èªããŸãã
+3. éå» 1 æéã«ããã£ãŠäžè²«ããè² è·ãçºçããŠããããšã確èªããŸãã
+
+
+
+ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã®äžèЧã確èªããŸãã
+
+1. å·ŠåŽã®ã¡ãã¥ãŒãã **Business Transactions** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. 以äžã«ç€ºã 11 åã®ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã衚瀺ãããŠããããšã確èªããŸãã
+3. éå» 1 æéã«äœããã®ã³ãŒã«æ°ãèšé²ãããŠããããšã確èªããŸãã
+
+**Note:** **Calls** åã衚瀺ãããŠããªãå Žåã¯ã**View Options** ããŒã«ããŒãã¿ã³ãã¯ãªãã¯ãããšåã衚瀺ã§ããŸãã
+
+
+
+Node ã®ãšãŒãžã§ã³ãã¹ããŒã¿ã¹ã確èªããŸãã
+
+1. å·ŠåŽã®ã¡ãã¥ãŒãã **Tiers & Nodes** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. **Grid View** ãã¯ãªãã¯ããŸãã
+3. éå» 1 æéã«ãããŠãå Node ã® **App Agent Status** ã 90% ãè¶
ããŠããããšã確èªããŸãã
+
+
+
+## å¿
èŠã«å¿ããã¢ããªã±ãŒã·ã§ã³ãšè² è·çæã®åèµ·å
+
+åã®ã¹ãããã§ããããã®ç¢ºèªé
ç®ãæºãããªãã£ãå Žåã¯ã**Application VM** ã« SSH æ¥ç¶ããæ¬¡ã®æé ã«åŸã£ãŠã¢ããªã±ãŒã·ã§ã³ãšãã©ã³ã¶ã¯ã·ã§ã³è² è·ãåèµ·åããŸãã
+
+å®è¡äžã® Apache Tomcat ã€ã³ã¹ã¿ã³ã¹ã忢ããã«ã¯ã次ã®ã³ãã³ãã䜿çšããŸãã
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+cd /usr/local/apache/apache-tomcat-9/bin
+./shutdown.sh
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ JVM ãæ®ã£ãŠãããã確èªããã«ã¯ã以äžã®ã³ãã³ãã䜿çšããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+ps -ef | grep Supercar-Trader
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ JVM ãæ®ã£ãŠããå Žåã¯ã以äžã®ã³ãã³ãã§æ®ã£ãŠãã JVM ã匷å¶çµäºããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+sudo pkill -f Supercar-Trader
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ã¢ããªã±ãŒã·ã§ã³ã®è² è·çæã忢ããã«ã¯ã以äžã®ã³ãã³ãã䜿çšããŸãããã¹ãŠã®ããã»ã¹ã忢ãããŸã§åŸ
æ©ããŠãã ããã
+
+``` bash
+cd /opt/appdynamics/lab-artifacts/phantomjs
+./stop_load.sh
+```
+
+Tomcat ãµãŒããŒãåèµ·åããŸãã
+
+``` bash
+cd /usr/local/apache/apache-tomcat-9/bin
+./startup.sh
+```
+
+2 åéåŸ
ã£ãŠããã以äžã®ã³ãã³ãã§ Apache Tomcat ãããŒã 8080 ã§çšŒåããŠããããšã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+curl localhost:8080
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+
+
+
+
+
Apache Tomcat/9.0.50
+
+
+
+
+
+
}}
+
+ã¢ããªã±ãŒã·ã§ã³ã®è² è·çæãéå§ããã«ã¯ã以äžã®ã³ãã³ãã䜿çšããŸãã
+
+``` bash
+cd /opt/appdynamics/lab-artifacts/phantomjs
+./start_load.sh
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/2-enable-analytics/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/2-enable-analytics/_index.md
new file mode 100644
index 0000000000..b7a59ad3aa
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/2-enable-analytics/_index.md
@@ -0,0 +1,35 @@
+---
+title: ã¢ããªã±ãŒã·ã§ã³ã§ã® Analytics ã®æå¹å
+time: 2 minutes
+weight: 2
+description: ãã®æŒç¿ã§ã¯ãWeb ãã©ãŠã¶ãã AppDynamics Controller ã«ã¢ã¯ã»ã¹ãããããã Agentless Analytics ãæå¹åããŸãã
+
+---
+
+Analytics ã¯ãã€ãŠ Machine Agent ã«ãã³ãã«ãããå¥åã®ãšãŒãžã§ã³ããå¿
èŠãšããŠããŸããããããçŸåšã¯ agentless ãšãªããController >= 4.5.16 äžã§ .NET Agent >= 20.10 ããã³ Java Agent >= 4.5.15 ã®äž¡æ¹ã§ APM Agent ã«çµã¿èŸŒãŸããŠããŸãã
+
+ãã®æŒç¿ã§ã¯ãWeb ãã©ãŠã¶ãã AppDynamics Controller ã«ã¢ã¯ã»ã¹ãããããã Agentless Analytics ãæå¹åããŸãã
+
+## Controller ãžã®ãã°ã€ã³
+
+Cisco ã®èªèšŒæ
å ±ã䜿çšã㊠[AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã«ãã°ã€ã³ããŸãã
+
+## Analytics èšå®ãžã®ç§»å
+
+1. ** ç»é¢å·Šäžã® **Analytics** ã¿ããéžæããŸãã
+2. ** å·ŠåŽã® **Configuration** ã¿ããéžæããŸãã
+3. ** **Transaction Analytics - Configuration** ã¿ããéžæããŸãã
+4. ** ã䜿ãã®ã¢ããªã±ãŒã·ã§ã³ **Supercat-Trader-YOURINITIALS** ã®é£ã® **ãã§ãã¯ããã¯ã¹ãããŒã¯** ããŸãã
+5. ** **Save** ãã¿ã³ãã¯ãªãã¯ããŸãã
+
+
+
+## ãã©ã³ã¶ã¯ã·ã§ã³ãµããªãŒã®æ€èšŒ
+
+ãã®ã¢ããªã±ãŒã·ã§ã³ã§ Analytics ãåäœãããã©ã³ã¶ã¯ã·ã§ã³ã衚瀺ãããŠããããšã確èªããŸãã
+
+1. å·Šã¡ãã¥ãŒã® **Analytics tab** ã¿ããéžæããŸãã
+2. **Home** ã¿ããéžæããŸãã
+3. **Transactions from** ã§ãã䜿ãã®ã¢ããªã±ãŒã·ã§ã³ **Supercar-Trader-YOURINITIALS** ã«ãã£ã«ã¿ãŒããŸãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/3-configure-http-data-collectors/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/3-configure-http-data-collectors/_index.md
new file mode 100644
index 0000000000..c30fe786aa
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/3-configure-http-data-collectors/_index.md
@@ -0,0 +1,104 @@
+---
+title: HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒã®èšå®
+time: 2 minutes
+weight: 3
+description: ãã®æŒç¿ã§ã¯ãHTTP ããŒã¿ã³ã¬ã¯ã¿ãŒãæå¹åããŠäœ¿çšããŸãã
+
+---
+ããŒã¿ã³ã¬ã¯ã¿ãŒã䜿çšãããšãããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ããã³ãã©ã³ã¶ã¯ã·ã§ã³åæããŒã¿ãã¢ããªã±ãŒã·ã§ã³ããŒã¿ã§è£åŒ·ã§ããŸããã¢ããªã±ãŒã·ã§ã³ããŒã¿ã¯ãããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã®ããã©ãŒãã³ã¹åé¡ã«ã³ã³ããã¹ãã远å ã§ããŸããããšãã°ãããã©ãŒãã³ã¹åé¡ã®åœ±é¿ãåããŠããããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã«ã€ããŠãç¹å®ã®ãŠãŒã¶ãŒã泚æã補åãšãã£ãç¹å®ã®ãã©ã¡ãŒã¿ã®å€ãæ»ãå€ã衚瀺ã§ããŸãã
+
+HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒã¯ãããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã§ããåãããã HTTP ã¡ãã»ãŒãžã® URLããã©ã¡ãŒã¿å€ãããããŒãCookie ããã£ããã£ããŸãã
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ããŸãã
+
+* ãã¹ãŠã® HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒãæå¹åããŸãã
+* é¢é£ãã HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒã芳å¯ããŠéžå®ããŸãã
+* HTTP ãã©ã¡ãŒã¿ã䜿çšã㊠Analytics ã§ããžãã¹ããŒã¿ããã£ããã£ããŸãã
+* HTTP ãã©ã¡ãŒã¿ã«å¯Ÿãã Analytics ãæ€èšŒããŸãã
+
+## ãã¹ãŠã® HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒãæå¹åãã
+
+æåã¯ããã¹ãŠã® HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒããã£ããã£ããããšã§ãAnalytics ã«åã蟌ãã§ããã·ã¥ããŒãã§æŽ»çšã§ããæçšãªãã©ã¡ãŒã¿ãææ¡ã§ããŸãã
+
+{{% notice title="ãã³ã" style="orange" icon="lightbulb" %}}
+ãã®æé ã¯æ¬çªç°å¢ã§ã¯ãªããUAT ç°å¢ã§å®æœããããšãåŒ·ãæšå¥šããŸãã
+{{% /notice %}}
+
+1. ç»é¢å·Šäžã® **Applications** ã¿ããéžæããŸãã
+2. **Supercar-Trader-YOURINITIALS** ã¢ããªã±ãŒã·ã§ã³ãéžæããŸãã
+3. å·ŠåŽã® **Configuration** ã¿ããéžæããŸãã
+4. **Instrumentation** ãªã³ã¯ãã¯ãªãã¯ããŸãã
+5. **Data Collectors** ã¿ããéžæããŸãã
+6. **HTTP Request Data Collectors** ã«ãã **Add** ãã¿ã³ãã¯ãªãã¯ããŸãã
+
+
+
+ããããããã¹ãŠã® HTTP ãã©ã¡ãŒã¿ããã£ããã£ããããã« HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒãèšå®ããŸããTransaction Analytics ã§å¿
èŠãšãªãæ£ç¢ºãªãã©ã¡ãŒã¿ãç¹å®ãããŸã§ãªãŒããŒããããé¿ãããããTransaction Snapshots ã§ã®ã¿æå¹åããŸãã
+
+1. **Name** ã«ã¯ **All HTTP Param** ãæå®ããŸãã
+2. **Enable Data Collector for** ã§ **Transaction Snapshots** ã®ãã§ãã¯ããã¯ã¹ããªã³ã«ããŸãã
+3. Transaction Analytics 㯠**æå¹åããªãã§ãã ãã**ã
+4. HTTP Parameters ã»ã¯ã·ã§ã³ã® **\+ Add** ãã¯ãªãã¯ããŸãã
+5. æ°ãããã©ã¡ãŒã¿ã® Display Name ã« **All** ãæå®ããŸãã
+6. 次ã«ãHTTP Parameter name ã«ã¢ã¹ã¿ãªã¹ã¯ **\*** ãæå®ããŸãã
+7. **Save** ãã¯ãªãã¯ããŸãã
+
+
+
+1. "Ok" ãã¯ãªãã¯ããŠããŒã¿ã³ã¬ã¯ã¿ãŒã確å®ããŸãã
+2. **/Supercar-Trader/sell.do** ãã©ã³ã¶ã¯ã·ã§ã³ãæå¹åããŸãã
+3. **Save** ãã¯ãªãã¯ããŸãã
+
+
+
+## é¢é£ãã HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒã®èгå¯ãšéžå®
+
+1. ã¢ããªã±ãŒã·ã§ã³ãç¹ã« **SellCar** ãã©ã³ã¶ã¯ã·ã§ã³ã«è² è·ããããŸããFull Call Graph ä»ãã®ã¹ãããã·ã§ãããéãã**Data Collectors Tab** ãéžæããŸãã
+
+ããã§ãã¹ãŠã® HTTP ãã©ã¡ãŒã¿ã衚瀺ãããŸããCar PriceãColorãYear ãªã©ãããã€ãã®éèŠãªã¡ããªã¯ã¹ã確èªã§ããŸãã
+
+1. **HTTP Parameters** ãªã¹ãã«å床远å ã㊠Transaction Analytics ã§æå¹åãããããæ£ç¢ºãªãã©ã¡ãŒã¿åãæ§ããŠãããŸãã
+2. 远å ãå®äºãããã**All HTTP Param** HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒãåé€ããŸãã
+
+
+
+## HTTP ãã©ã¡ãŒã¿ã䜿çšã㊠Analytics ã§ããžãã¹ããŒã¿ããã£ããã£ãã
+
+ãããã HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒãå床èšå®ããŸãããä»åã¯æçšãª HTTP ãã©ã¡ãŒã¿ã®ã¿ããã£ããã£ããTransaction Analytics ã§æå¹åããŸããæ°ãã HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒã远å ããŸããApplication -> Configuration -> Instrumentation -> Data Collector ã¿ã -> **HTTP Request Data Collectors** ã»ã¯ã·ã§ã³ã® **Add** ãã¯ãªãã¯ããŸãã
+
+1. Name ã«ã¯ **CarDetails** ãæå®ããŸãã
+2. **Transaction Snapshots** ãæå¹åããŸãã
+3. **Transaction Analytics** ãæå¹åããŸãã
+4. HTTP Parameters ã»ã¯ã·ã§ã³ã® **\+ Add** ãã¯ãªãã¯ããŸãã
+5. æ°ãããã©ã¡ãŒã¿ã® Display Name ã« **CarPrice\_http** ãæå®ããŸãã
+6. 次ã«ãHTTP Parameter name ã« **carPrice** ãæå®ããŸãã
+7. 以äžã«ç€ºãããã«ãæ®ãã® Car ãã©ã¡ãŒã¿ã«ã€ããŠãç¹°ãè¿ããŸãã
+8. **Save** ãã¯ãªãã¯ããŸãã
+9. **Ok** ãã¯ãªãã¯ããŠããŒã¿ã³ã¬ã¯ã¿ãŒã®å®è£
ã確èªããŸãã
+
+
+
+
+1. **/Supercar-Trader/sell.do** ãã©ã³ã¶ã¯ã·ã§ã³ãæå¹åããŸãã
+2. **Save** ãã¯ãªãã¯ããŸãã
+
+
+
+1. **All HTTP Param** ã³ã¬ã¯ã¿ãŒãã¯ãªãã¯ãã**Delete** ãã¿ã³ãã¯ãªãã¯ããŠåé€ããŸãã
+
+## HTTP ãã©ã¡ãŒã¿ã«å¯Ÿãã Analytics ã®æ€èšŒ
+
+ãããããHTTP ããŒã¿ã³ã¬ã¯ã¿ãŒã«ãã£ãŠããžãã¹ããŒã¿ã AppDynamics Analytics ã§ãã£ããã£ãããããæ€èšŒããŸãã
+
+1. ç»é¢å·Šäžã® **Analytics** ã¿ããéžæããŸãã
+2. **Searches** ã¿ããéžæããŸãã
+3. **+ Add** ãã¿ã³ãã¯ãªãã¯ããŠãæ°ãã **Drag and Drop Search** ãäœæããŸãã
+
+
+
+1. **+ Add Criteria** ãã¯ãªãã¯ããŸãã
+2. **Application** ãéžæãããèªèº«ã®ã¢ããªã±ãŒã·ã§ã³å **Supercar-Trader-YOURINITIALS** ãæ€çŽ¢ããŸãã
+3. **Fields** ããã«ã§ã**Business Parameters** ã Custom HTTP Request Data ã®ãã£ãŒã«ããšããŠè¡šç€ºãããããšã確èªããŸãã
+4. **CarPrice_http** ã®ãã§ãã¯ããã¯ã¹ããªã³ã«ãããã£ãŒã«ãã«ããŒã¿ãå
¥ã£ãŠããããšãæ€èšŒããŸãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/4-configure-method-data-collectors/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/4-configure-method-data-collectors/_index.md
new file mode 100644
index 0000000000..286a3bd43b
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/4-configure-method-data-collectors/_index.md
@@ -0,0 +1,181 @@
+---
+title: ã¡ãœããããŒã¿ã³ã¬ã¯ã¿ãŒã®èšå®
+time: 2 minutes
+weight: 4
+description: ãã®æŒç¿ã§ã¯ãWeb ãã©ãŠã¶ãã AppDynamics Controller ã«ã¢ã¯ã»ã¹ãããããã Agentless Analytics ãæå¹åããŸãã
+---
+ã¡ãœããåŒã³åºãããŒã¿ã³ã¬ã¯ã¿ãŒã¯ãã¡ãœããã®åŒæ°ã倿°ãæ»ãå€ãªã©ã®ã³ãŒãããŒã¿ããã£ããã£ããŸããHTTP ããŒã¿ã³ã¬ã¯ã¿ãŒã§ååãªããžãã¹ããŒã¿ãååŸã§ããªãå Žåã§ããã³ãŒãå®è¡ãããããã®æ
å ±ããã£ããã£ã§ããŸãã
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ããŸãã
+
+* ã¡ãœãããæ€åºããã
+* ãã£ã¹ã«ããªãŒã»ãã·ã§ã³ãéãã
+* ã¡ãœããã®ãã©ã¡ãŒã¿ãŒãæ€åºããã
+* ã³ãŒãå
ã®ãªããžã§ã¯ããããªã«ããŠã³ããã
+* ã¡ãœããåŒã³åºãããŒã¿ã³ã¬ã¯ã¿ãŒãäœæããã
+* ã¡ãœããåŒã³åºãããŒã¿ã³ã¬ã¯ã¿ãŒã®ã¢ããªãã£ã¯ã¹ãæ€èšŒããã
+
+## ãã£ã¹ã«ããªãŒã»ãã·ã§ã³ãéã
+
+ãœãŒã¹ã³ãŒãããã¡ãœããããã©ã¡ãŒã¿ãŒãç¹å®ã§ããã¢ããªã±ãŒã·ã§ã³éçºè
ãããªãå ŽåããããŸããããããAppDynamics ããçŽæ¥ã¢ããªã±ãŒã·ã§ã³ã®ã¡ãœããããªããžã§ã¯ããæ€åºããæ¹æ³ããããŸãã
+
+1. ç»é¢å·Šäžã® **Applications** ã¿ããéžæããŸãã
+2. **Supercar-Trader-YOURINITIALS** ã¢ããªã±ãŒã·ã§ã³ãéžæããŸãã
+3. **Configuration** ã¿ããéžæããŸãã
+4. **Instrumentation** ãªã³ã¯ãã¯ãªãã¯ããŸãã
+5. **Transaction Detection** ã¿ããéžæããŸãã
+6. å³åŽã® **Live Preview Button** ãã¯ãªãã¯ããŸãã
+
+
+
+1. **Start Discovery Session** ãã¿ã³ãã¯ãªãã¯ããŸãã
+2. ãããã¢ãããŠã£ã³ããŠã§ **Web-Portal Node** ãéžæããŸããããã¯ã調æ»å¯Ÿè±¡ã®ã¡ãœãããå®è¡ãããŠããããŒããšåãã§ããå¿
èŠããããŸãã
+3. **Ok** ãã¯ãªãã¯ããŸãã
+
+
+
+1. å³åŽã®ãã°ã«ã§ **Tools** ãéžæããŸãã
+2. ããããããŠã³ãªã¹ãã§ **Classes/Methods** ãéžæããŸãã
+3. **Search** ã»ã¯ã·ã§ã³ã§ **Classes** with name ãéžæããŸãã
+4. ããã¹ãããã¯ã¹ã«ã¯ã©ã¹å **supercars.dataloader.CarDataLoader** ãå
¥åããŸããã¯ã©ã¹åãèŠã€ããã«ã¯ãã³ãŒã«ã°ã©ããæ€çŽ¢ããããã§ããã°ãœãŒã¹ã³ãŒãããæ¢ããŸãã
+5. **Apply** ãã¯ãªãã¯ããŠãäžèŽããã¯ã©ã¹ã¡ãœãããæ€çŽ¢ããŸãã
+6. çµæã衚瀺ãããããæ€çŽ¢ã«äžèŽããã¯ã©ã¹ãå±éããŸãã
+7. **saveCar** ã¡ãœãããæ¢ããŸãã
+
+
+
+**saveCar** ã¡ãœããã¯å
¥åãã©ã¡ãŒã¿ãŒãšã㊠**CarForm** ãªããžã§ã¯ããåãåãããšã«æ³šæããŠãã ããã
+
+## ãªããžã§ã¯ããžã®ããªã«ããŠã³
+
+ã¡ãœãããèŠã€ãããŸããã®ã§ããã®ãã©ã¡ãŒã¿ãŒã調ã¹ãŠãè»ã®è©³çްããããã£ãã©ãããååŸã§ãããã確èªããŸãã
+
+**saveCar** ã¡ãœãããå
¥åãã©ã¡ãŒã¿ãŒãšããŠè€åãªããžã§ã¯ã **CarForm** ãåãåãããšãåãããŸããããã®ãªããžã§ã¯ãã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã® Web ããŒãžã§å
¥åããããã©ãŒã ããŒã¿ãæ ŒçŽãããŸããæ¬¡ã«ããã®ãªããžã§ã¯ããæ€æ»ããŠãããããè»ã®è©³çްãååŸããæ¹æ³ã確èªããå¿
èŠããããŸãã
+
+1. ããã¹ãããã¯ã¹ã«å
¥åãªããžã§ã¯ãã®ã¯ã©ã¹å **supercars.form.CarForm** ãå
¥åããŸãã
+2. **Apply** ãã¯ãªãã¯ããŠã¯ã©ã¹ã¡ãœãããæ€çŽ¢ããŸãã
+3. çµæã衚瀺ãããããæ€çŽ¢ã«äžèŽãã **supercars.form.CarForm** ã¯ã©ã¹ãå±éããŸãã
+4. å¿
èŠãªè»ã®è©³çްãè¿ãã¡ãœãããæ¢ããŸããäŸ¡æ Œãã¢ãã«ãè²ãªã©ã® **get** ã¡ãœãããèŠã€ãããŸãã
+
+
+
+## ã¡ãœããåŒã³åºãããŒã¿ã³ã¬ã¯ã¿ãŒã®äœæ
+
+ãããŸã§ã®æŒç¿ã§åŸãæ
å ±ãããšã«ãã¡ãœããåŒã³åºãããŒã¿ã³ã¬ã¯ã¿ãŒãèšå®ããŠãã©ã³ã¿ã€ã ã§å®è¡äžã®ã³ãŒãããçŽæ¥è»ã®è©³çްãååŸã§ããŸãã
+
+1. **Applications** ã¿ããéžæããŸãã
+2. **Supercar-Trader-YOURINITIALS** ã¢ããªã±ãŒã·ã§ã³ãéžæããŸãã
+3. **Configuration** ã¿ããéžæããŸãã
+4. **Instrumentation** ãªã³ã¯ãã¯ãªãã¯ããŸãã
+5. **Data Collectors** ã¿ããéžæããŸãã
+6. **Method Invocation Data Collectors** ã§ **Add** ãã¯ãªãã¯ããŸãã
+
+
+
+è»ã®è©³çްããã£ããã£ããããã®ã¡ãœããåŒã³åºãããŒã¿ã³ã¬ã¯ã¿ãŒãäœæããŸãã
+
+1. **Name** ã«ã¯ **SellCarMI-YOURINITIALS** ãæå®ããŸãã
+2. **Transaction Snapshots** ãæå¹åããŸãã
+3. **Transaction Analytics** ãæå¹åããŸãã
+4. **with a Class Name that** ãéžæããŸãã
+5. **Class Name** ãšã㊠**supercars.dataloader.CarDataLoader** ã远å ããŸãã
+6. **Method Name** ãšã㊠**saveCar** ã远å ããŸãã
+
+
+
+確èªããããã«ãSaveCar ã¡ãœããã®ã€ã³ããã¯ã¹ 0 ã®å
¥åãã©ã¡ãŒã¿ãŒã¯ **CarForm** ã¯ã©ã¹ã®ãªããžã§ã¯ãã§ããããã®ãªããžã§ã¯ãå
ã« **getPrice()** ãªã©ã®è»ã®è©³çްããããã£ãè¿ã Getter ã¡ãœããããããŸãã
+
+ãã®ãããMIDC ã§ãã®å€ãååŸããæ¹æ³ã説æããããã«ã以äžã®æé ãå®è¡ããŸãã
+
+1. MIDC ããã«ã®äžéšã«ãã **Add** ãã¯ãªãã¯ããŠãåéãããæ°ããããŒã¿ãæå®ããŸãã
+2. Display Name ã«ã¯ **CarPrice_MIDC** ãæå®ããŸãã
+3. Collect Data From ã§ã¯ã**Method Parameter of Index 0** ãéžæããŸãããã㯠**CarForm Object** ã§ãã
+4. **Operation on Method Parameter** ã«ã¯ã**Use Getter Chain** ãéžæããŸããCarForm å
ã®ã¡ãœãããåŒã³åºããŠè»ã®è©³çްãååŸããŸãã
+5. 次ã«ã**CarForm** ã¯ã©ã¹å
ã§äŸ¡æ Œãè¿ã Getter ã¡ãœããã§ãã **getPrice()** ãæå®ããŸãã
+6. **Save** ãã¯ãªãã¯ããŸãã
+
+
+
+1. äžèšã®æé ããè²ãã¢ãã«ããã®ä»ããŒã¿ãåéããããã¹ãŠã®ããããã£ã«å¯ŸããŠç¹°ãè¿ããŸãã
+
+
+
+1. **Save MIDC** ãã¯ãªãã¯ããŠã**â/Supercar-Trader/sell.doâ** ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã«é©çšããŸãã
+
+MIDC ãåæ ãããã«ã¯ãJVM ãåèµ·åããå¿
èŠããããŸãã
+
+1. EC2 ã€ã³ã¹ã¿ã³ã¹ã« SSH æ¥ç¶ããŸãã
+2. Tomcat ãµãŒããŒãã·ã£ããããŠã³ããŸãã
+
+``` bash
+cd /usr/local/apache/apache-tomcat-9/bin
+./shutdown.sh
+```
+
+ã¢ããªã±ãŒã·ã§ã³ã® JVM ããŸã å®è¡äžã®å Žåã¯ã以äžã®ã³ãã³ãã§æ®ãã® JVM ã匷å¶çµäºããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+sudo pkill -f Supercar-Trader
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+1. Tomcat ãµãŒããŒãåèµ·åããŸãã
+
+``` bash
+./startup.sh
+```
+
+1. Tomcat ãµãŒããŒãèµ·åããŠããããšã確èªããŸããããã«ã¯æ°åãããå ŽåããããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+curl localhost:8080
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+
+
+
+
+
Apache Tomcat/9.0.50
+
+
+
+
+
+
}}
+
+## MD ãã©ã¡ãŒã¿ãŒã®ã¢ããªãã£ã¯ã¹ãæ€èšŒãã
+
+Web ãµã€ãã«ã¢ã¯ã»ã¹ããSell Car ããŒãžã§ãã©ãŒã ãæ°åéä¿¡ããŠãæåã§è² è·ããããŸãã
+
+次ã«ãAppDynamics Analytics ã§ HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒã«ãã£ãŠããžãã¹ããŒã¿ããã£ããã£ããããã©ããã確èªããŸãã
+
+1. **Analytics** ã¿ããéžæããŸãã
+2. **Searches** ã¿ããéžæããæ°ãã **Drag and Drop Search** ã远å ããŸãã
+3. **+ Add** ãã¿ã³ãã¯ãªãã¯ããŠãæ°ãã **Drag and Drop Search** ãäœæããŸãã
+4. **+ Add Criteria** ãã¯ãªãã¯ããŸãã
+5. **Application** ãéžæããã¢ããªã±ãŒã·ã§ã³å **Supercar-Trader-YOURINITIALS** ãæ€çŽ¢ããŸãã
+6. **Custom Method Data** ã« **Business Parameters** ããã£ãŒã«ããšããŠè¡šç€ºãããããšã確èªããŸãã
+7. **CarPrice Field** ã«ããŒã¿ãå
¥ã£ãŠããããšã確èªããŸãã
+
+
+
+## ãŸãšã
+
+ããã§ãã©ã³ã¿ã€ã äžã®ããŒããã Sell Car ãã©ã³ã¶ã¯ã·ã§ã³ã®ããžãã¹ããŒã¿ããã£ããã£ã§ããŸããããã®ããŒã¿ã¯ãAppDynamics å
ã®ã¢ããªãã£ã¯ã¹ãããã·ã¥ããŒãæ©èœã§å©çšã§ããããžãã¹ãžã®ã³ã³ããã¹ãæäŸããIT ãããžãã¹ã«äžãã圱é¿ã®æž¬å®ã«åœ¹ç«ã¡ãŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/5-dashboard-components/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/5-dashboard-components/_index.md
new file mode 100644
index 0000000000..881b8b7d6f
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/5-dashboard-components/_index.md
@@ -0,0 +1,135 @@
+---
+title: ããã·ã¥ããŒãã³ã³ããŒãã³ã
+time: 2 minutes
+weight: 5
+description: ãã®æŒç¿ã§ã¯ãé
åçãªããã·ã¥ããŒããæ§ç¯ããããã«äœ¿çšã§ããããã·ã¥ããŒãã³ã³ããŒãã³ãã®ããã€ããæ±ããŸãã
+---
+ããã·ã¥ããŒããæ§ç¯ããæ©èœã¯ãAppDynamicsã®æ©èœãšäŸ¡å€ãæ¯ããéèŠãªã³ã³ããŒãã³ãã§ãããã®æŒç¿ã§ã¯ãé
åçãªããã·ã¥ããŒããæ§ç¯ããããã«äœ¿çšã§ããããã·ã¥ããŒãã³ã³ããŒãã³ãã®ããã€ããæ±ããŸãã
+
+## æ°ããããã·ã¥ããŒããäœæãã
+
+1. **Dashboard & Reports** ã¿ããéžæããŸãã
+2. **Create Dashboard** ãã¯ãªãã¯ããŸãã
+3. **SuperCar-Dashboard-YOURINITIALS** ã®ãããªããã·ã¥ããŒãåãå
¥åããŸãã
+4. **Canvas Type** ãšã㊠**Absolute Layout** ãéžæããŸãã
+5. **OK** ãã¯ãªãã¯ããŸãã
+
+
+
+æ°ããäœæããã空ã®ããã·ã¥ããŒããéããŸããããããããŸããŸãªãŠã£ãžã§ããã¿ã€ãã远å ããŠãããŸãã
+
+## ããã·ã¥ããŒãã³ã³ããŒãã³ãã®ã«ã¹ã¿ã ãŠã£ãžã§ãããã«ããŒ
+
+ã«ã¹ã¿ã ãŠã£ãžã§ãããã«ããŒã¯ãæ°å€ãã¥ãŒãæç³»åãåã°ã©ããªã©ãããŒã¿ã®ããŸããŸãªè¡šçŸãçæã§ããæè»æ§ã®é«ãããŒã«ã§ããAppDynamics AD Query Languageã«åºã¥ããŠããŸãã
+
+ãŠã£ãžã§ãããäœæããã«ã¯ã以äžã®æé ã«åŸããŸãã
+
+1. ããã·ã¥ããŒãå·Šäžã® **Edit Mode** ãåãæ¿ããŸãã
+2. **Add Widget** ãã¯ãªãã¯ããŸãã
+3. å·ŠåŽã® **Analytics** ã¿ããéžæããŸãã
+4. **Custom Widget Builder** ãã¯ãªãã¯ããŸãã
+
+
+
+Custom Widget Builderã§ã¯å€æ°ã®ãã£ãŒãã¿ã€ããäœæã§ããŸããæ
å ±ãåçŽã«ãã©ãã°ïŒããããããããšããAdvancedãã€ã³ã§ AD Query ãäœæããããšãã§ããŸãã
+
+
+
+ããã§ã¯ãNumericãBarãPie ChartsãåãäžããŸãã
+
+### Numeric charts
+
+**æŒç¿:** ãšã©ãŒã«ãã圱é¿ãéé¡ã§å®éåããããšã§ãITããã©ãŒãã³ã¹ãããžãã¹åçã«äžãã圱é¿ã瀺ãããšãã§ããŸãã
+
+1. **Numeric** ãã£ãŒãã¿ã€ããéžæããŸãã
+2. Application ãã£ãŒã«ãã«ãã£ã«ã¿ãŒã远å ããã¢ããªã±ãŒã·ã§ã³å **Supercar-Trader-YOURINITIALS** ãéžæããŸãã
+3. **/Supercar-Trader/sell.do** ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ã«ã¿ãŒã远å ããŸãã
+4. User Experience ãã£ãŒã«ãã«ãã£ã«ã¿ãŒã远å ãããšã©ãŒã®åœ±é¿ã衚瀺ããããã« **Error** ã®ã¿ãéžæããŸãã
+5. å·Šããã«ã§ **CarPrice_MIDC** ãã£ãŒã«ããèŠã€ããY軞ã«ãã©ãã°ïŒããããããŸããSUMãã¢ãã«ããšã®åèšäŸ¡æ ŒãååŸããããã®éèšãšããŠäœ¿çšãããŠããããšã«æ³šç®ããŠãã ããã
+6. èŠèªæ§ãé«ããããããã©ã³ãã®è²ãèµ€ã«å€æŽããŸãã
+7. **Save** ãã¯ãªãã¯ããŸãã
+
+
+
+User Experience ãã£ã«ã¿ãŒãNORMALãSLOWãVERY SLOWã®ã¿ãå«ãããã«å€æŽããã°ã**$ Amount Transacted Successfully** åºæºã«å¯ŸããŠãåãããšãã§ããããšã«æ³šæããŠãã ããã
+
+ãŸããAnalyticsã¢ãžã¥ãŒã«ã§ã«ã¹ã¿ã ã¡ããªã¯ã¹ãäœæãã**$ Amount Impacted** ãããŒã¹ã©ã€ã³ä»¥äžã§ãããã瀺ããã«ã¹ã«ãŒã«ãå®çŸ©ããããšã§ããã®ã¡ããªã¯ã¹ãããŒã¹ã©ã€ã³åããããšãã§ããŸããé貚ã®ã©ãã«ã远å ããããšãã§ããŸãã
+
+
+
+### Bar charts
+
+**æŒç¿:** ããããã¯ã圱é¿ãåããäžäœã®è»çš®ã¢ãã«(Top Impacted Car Models)ãå¯èŠåããæ£ã°ã©ããäœæããŸãããã®ãã£ãŒãã§ã¯ããã¹ãŠã® **SellCar** ãã©ã³ã¶ã¯ã·ã§ã³ã®è»çš®ã¢ãã«ããUser Experienceã§åé¡ããŠè¡šç€ºããŸãã
+
+1. **+ Add Widget**ã**Analytics**ã**Custom Widger Builder** ãã¯ãªãã¯ããŠæ°ãããŠã£ãžã§ãããäœæããŸãã
+2. **Column** ãã£ãŒãã¿ã€ããéžæããŸãã
+3. 以äžã®ãã£ã«ã¿ãŒã远å ããŸã: Application = **Supercar-Trader-YOURINITIALS** ããã³ Business Transaction = **/Supercar-Trader/sell.do**ã
+4. **CarModel\_MIDC** ãš **User Experience** ãX軞ã«è¿œå ããŸãã
+5. **Save** ãã¯ãªãã¯ããŸãã
+
+
+
+ãã®ãã£ãŒãã¿ã€ãã¯ããŒãºã«å¿ããŠèª¿æŽã§ããŸããããšãã°ãX軞ã Customer TypeãCompanyãOrganizationãªã©ã§ã°ã«ãŒãåã§ããŸããæ¬¡ã®äŸãåç
§ããŠãã ããã
+
+
+
+### Pie charts
+
+ããããã¯ã`sellCar` ãã©ã³ã¶ã¯ã·ã§ã³ã§å ±åããããã¹ãŠã®è»çš®ã¢ãã«ãšã¢ãã«ããšã®äŸ¡æ Œåèšã衚瀺ããåã°ã©ããäœæããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³å
ã§æãéèŠã®é«ãã¢ãã«ã衚瀺ãããŸãã
+
+1. æ°ãããŠã£ãžã§ãããäœæããŸãã
+2. **Pie** ãã£ãŒãã¿ã€ããéžæããŸãã
+3. 以äžã®ãã£ã«ã¿ãŒã远å ããŸã: Application = **Supercar-Trader-YOURINITIALS** ããã³ Business Transaction = **/Supercar-Trader/sell.do**ã
+4. **CarModel\_MIDC** ãX軞ã«è¿œå ããŸãã
+5. **CarPrice\_MIDC** ãY軞ã«è¿œå ããŸãã**SUM** ãã¢ãã«ããšã®åèšäŸ¡æ ŒãååŸããããã®éèšãšããŠäœ¿çšãããŠããããšã«æ³šç®ããŠãã ããã
+6. ã¿ã€ãã« **Sold by Car Model** ã远å ããŸãã
+7. **Save** ãã¯ãªãã¯ããŸãã
+
+
+
+åã°ã©ããŠã£ãžã§ããã®è¿œå ã®äœ¿çšäŸã«ã€ããŠã¯ã次ã®äŸãåç
§ããŠãã ããã
+
+
+
+## ããã·ã¥ããŒãã³ã³ããŒãã³ã: ã³ã³ããŒãžã§ã³ãã¡ãã«
+
+ã³ã³ããŒãžã§ã³ãã¡ãã«ã¯ãè€æ°ã®ã¹ããããããªãããã»ã¹ãééãããŠãŒã¶ãŒãã€ãã³ãã®æµããå¯èŠåããã®ã«åœ¹ç«ã¡ãŸããããã«ãããããé«ãã³ã³ããŒãžã§ã³ãå®çŸããããã«ã©ã®ã¹ããããæé©åã§ããããããããçè§£ã§ããŸãããŸããã³ã³ããŒãžã§ã³ãã¡ãã«ã䜿çšããŠåã¹ãããã®ITããã©ãŒãã³ã¹ã調æ»ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã©ã®ãããªåœ±é¿ãäžããããçè§£ãããŠãŒã¶ãŒã®é¢è±åå ãç¹å®ããããšãã§ããŸãã
+
+ãã¡ãã«ã¯ãåã¹ããããžã®ç·èšªåæ°ã§ã¯ãªããç¹å®ã®é åºã§ãã®ãã¹ãå®è¡ãããŠãŒã¶ãŒã«åŸã£ãŠãã£ã«ã¿ãªã³ã°ãããç¹ã«æ³šæããŠãã ããã
+
+ãã¡ãã«äœæã®æåã®ã¹ãããã¯ããã¡ãã«ãééããåãŠãŒã¶ãŒã®ããã²ãŒã·ã§ã³ã衚ãããšãã§ãããã©ã³ã¶ã¯ã·ã§ã³ã®äžæã®èå¥åãéžæããããšã§ããéåžžãSession ID ã¯ãã¡ãã«ã®åã¹ããããéããŠæç¶ãããããæé©ãªéžæè¢ãšãªããŸãã
+
+Session ID ã¯ãã©ã³ã¶ã¯ã·ã§ã³ããååŸã§ããŸãããã¡ãã«ãã©ã³ã¶ã¯ã·ã§ã³ã®ã«ãŠã³ã¿ãšããŠäœ¿çšããããã«ã**SessionId** ããŒã¿ã³ã¬ã¯ã¿ãŒãå¿
èŠã§ãã
+
+Javaã¢ããªã±ãŒã·ã§ã³ã§AppDynamicsã¯ãããã©ã«ãã®HTTPããŒã¿ã³ã¬ã¯ã¿ãŒã§Session IDãæ±ãæ©èœãåããŠããŸãããããæå¹ã«ãªã£ãŠããããšã確èªãããã¹ãŠã®ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã«é©çšããŠããã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ã®Session IDãååŸããŸãã
+
+1. **Applications** ã¿ããéžæããŸãã
+2. **Supercar-Trader-YOURINITIALS** ã¢ããªã±ãŒã·ã§ã³ãéžæããŸãã
+3. å·ŠåŽã® **Configuration** ã¿ããéžæããŸãã
+4. **Instrumentation** ãã¯ãªãã¯ããŸãã
+5. **Data Collectors** ã¿ããéžæããŸãã
+6. **Default HTTP Request Request Data Collectors** ãç·šéããŸãã
+7. **Transaction Analytics** ãéžæããŸãã
+8. **SessionID** ãéžæãããŠããããšã確èªããŸãã
+9. **Save** ãã¯ãªãã¯ããŸãã
+
+
+
+次ã«ã**/Supercar-Trader/home.do** ããŒãžããè€æ°åããã²ãŒãããŠè² è·ããããŸãããã®åŸãã¢ããªã±ãŒã·ã§ã³ã® **/Supercar-Trader/sell.do** ããŒãžã«çŽæ¥ããã²ãŒãããŸãã
+
+ããã·ã¥ããŒãã«æ»ã£ãŠãã¡ãã«ãŠã£ãžã§ãããäœæããŸãã
+
+1. **Edit** ã¹ã©ã€ããŒãåãæ¿ããŸãã
+2. **Add Widget** ãã¯ãªãã¯ããŸãã
+3. **Analytics** ã¿ããéžæããŸãã
+4. **Funnel Analysis** ãã¯ãªãã¯ããŸãã
+5. ããããããŠã³ãªã¹ããã **Transactions** ãéžæããŸãã
+6. **Count Distinct of** ã§ãããããããŠã³ãªã¹ããã **uniqueSessionId** ãéžæããŸãã
+7. **Add Step** ãã¯ãªãã¯ããŸãã**Home Page** ãšããååãä»ããŸãã
+8. **Add Criteria** ãã¯ãªãã¯ããŸããæ¬¡ã®æ¡ä»¶ã远å ããŸã: **Application**: Supercar-Trader-YOURINITIALS ããã³ **Business Transactions**: **/Supercar-Trader/home.do**ã
+9. **Add Step** ãã¯ãªãã¯ããŸãã**SellCar Page** ãšããååãä»ããŸãã
+10. **Add Criteria** ãã¯ãªãã¯ããŸããæ¬¡ã®æ¡ä»¶ã远å ããŸã: **Application:** Supercar-Trader-YOURINITIALS ããã³ **Business Transactions:** /Supercar-Trader/sell.doã
+11. å³ããã«ã® **Show Health** ãã§ãã¯ããã¯ã¹ãéžæããŠããããŒãããã§ãã©ã³ã¶ã¯ã·ã§ã³ã®å¥å
šæ§ãå¯èŠåããŸãã
+12. **Save** ãã¯ãªãã¯ããŸãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/6-build-your-dashboard/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/6-build-your-dashboard/_index.md
new file mode 100644
index 0000000000..26d9d44543
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/6-build-your-dashboard/_index.md
@@ -0,0 +1,15 @@
+---
+title: ããã·ã¥ããŒãã®æ§ç¯
+time: 20 minutes
+weight: 6
+description: ãã®æŒç¿ã§ã¯ãå
ã®æŒç¿ã§ã¡ãœããåŒã³åºãããŒã¿ã³ã¬ã¯ã¿ãŒã䜿çšããŠååŸããããžãã¹ããŒã¿ãšãããã·ã¥ããŒãã³ã³ããŒãã³ãã«é¢ããçè§£ãæŽ»çšããŠãIT ããžãã¹ã€ã³ãã¯ãããã·ã¥ããŒããæ§ç¯ããŸãã
+---
+## æŒç¿ - èªåã®ããã·ã¥ããŒããæ§ç¯ãã
+
+ãã® Learning Lab ã®ç· ãããããšããŠãå
ã®æŒç¿ã§ã¡ãœããåŒã³åºãããŒã¿ã³ã¬ã¯ã¿ãŒã䜿çšããŠååŸããããžãã¹ããŒã¿ãšãããã·ã¥ããŒãã³ã³ããŒãã³ãã«é¢ããçè§£ãæŽ»çšããŠãIT ããžãã¹ã€ã³ãã¯ãããã·ã¥ããŒããæ§ç¯ããŠãã ããã
+
+以äžã®äŸãåèã«ããŠãåãããŒã¿ãšãŠã£ãžã§ããã䜿çšããŠèªåã®ããã·ã¥ããŒããæ§ç¯ããŠãã ããã
+
+
+
+**ããã§ãšãããããŸãïŒBusinessIQ Fundamentals Learning Lab ãå®äºããŸããïŒ**
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/_index.md
new file mode 100644
index 0000000000..aa0bccfb99
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/3-business-iq/_index.md
@@ -0,0 +1,33 @@
+---
+title: Business iQ
+time: 2 minutes
+weight: 3
+description: ãã® Learning Lab ã§ã¯ãAppDynamics Business iQ ã«ã€ããŠåŠã³ãŸãã
+---
+
+## ç®ç
+
+ãã® Learning Lab ã§ã¯ãAppDynamics Business iQ ã«ã€ããŠåŠã³ãŸãã
+
+ãã®ã©ããå®äºãããšã次ã®ããšãã§ããããã«ãªããŸãã
+
+* æ°ãã Agentless Analytics Java Agent (v 4.5.15 +) ã§åæãæå¹åããã
+* HTTP ããŒã¿ã³ã¬ã¯ã¿ãŒãæ§æããã
+* ã¡ãœããåŒã³åºãããŒã¿ã³ã¬ã¯ã¿ãŒãæ§æããã
+* ããã·ã¥ããŒãã®ã³ã³ããŒãã³ããçè§£ããã
+* ããžãã¹ããã·ã¥ããŒããæ§ç¯ããã
+
+## ã¯ãŒã¯ã·ã§ããç°å¢
+
+ã©ãç°å¢ã«ã¯ã2 ã€ã®ãã¹ãããããŸãã
+
+* 1 ã€ç®ã®ãã¹ã㯠AppDynamics Controller ãå®è¡ããŠããããããã㯠Controller ãšåŒã³ãŸãã
+* 2 ã€ç®ã®ãã¹ãã¯ã©ãã§äœ¿çšãã Supercar Trader ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠããŸããAppDynamics ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ãããã¹ãã§ããããããã㯠Application VM ãšåŒã³ãŸãã
+
+#### Controller VM
+
+
+
+#### Application VM
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/1-lab-prerequisites/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/1-lab-prerequisites/_index.md
new file mode 100644
index 0000000000..50f01125eb
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/1-lab-prerequisites/_index.md
@@ -0,0 +1,119 @@
+---
+title: BRUM ã©ãåææ¡ä»¶
+time: 2 minutes
+weight: 1
+description: ãã®æŒç¿ã§ã¯ãController ã«ã¢ã¯ã»ã¹ããã¢ããªã±ãŒã·ã§ã³ã®è² è·ã確èªããŸãã
+---
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®äºããŸãã
+
+* Web ãã©ãŠã¶ãã AppDynamics Controller ã«ã¢ã¯ã»ã¹ããŸãã
+* ã¢ããªã±ãŒã·ã§ã³ãžã®ãã©ã³ã¶ã¯ã·ã§ã³è² è·ã確èªããŸãã
+* å¿
èŠã«å¿ããŠã¢ããªã±ãŒã·ã§ã³ãšãã©ã³ã¶ã¯ã·ã§ã³è² è·ãåèµ·åããŸãã
+
+## Controller ãžã®ãã°ã€ã³
+
+Cisco ã®èªèšŒæ
å ±ã䜿çšã㊠[AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã«ãã°ã€ã³ããŸãã
+
+## ã¢ããªã±ãŒã·ã§ã³ãžã®ãã©ã³ã¶ã¯ã·ã§ã³è² è·ã®ç¢ºèª
+
+ã¢ããªã±ãŒã·ã§ã³ã®ãããŒãããã確èªããŸãã
+
+1. **last 1 hour** ã®æéç¯å²ãéžæããŸãã
+2. ãããŒãããäžã« 5 ã€ã®ç°ãªã Tier ã衚瀺ãããŠããããšã確èªããŸãã
+3. éå» 1 æéã«ããã£ãŠå®å®ããè² è·ããã£ãããšã確èªããŸãã
+
+
+
+ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã®ãªã¹ãã確èªããŸãã
+
+1. å·ŠåŽã®ã¡ãã¥ãŒãã **Business Transactions** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. 以äžã«ç€ºã 11 åã®ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã衚瀺ãããŠããããšã確èªããŸãã
+3. éå» 1 æéã«ããã€ãã®åŒã³åºããè¡ãããŠããããšã確èªããŸãã
+
+**Note:** **Calls** ã«ã©ã ã衚瀺ãããŠããªãå Žåã¯ã**View Options** ããŒã«ããŒãã¿ã³ãã¯ãªãã¯ããŠãã®ã«ã©ã ã衚瀺ã§ããŸãã
+
+
+
+Node ã®ãšãŒãžã§ã³ãã¹ããŒã¿ã¹ã確èªããŸãã
+
+1. å·ŠåŽã®ã¡ãã¥ãŒãã **Tiers & Nodes** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. **Grid View** ãã¯ãªãã¯ããŸãã
+3. å Node ã® **App Agent Status** ãéå» 1 æéã«ãã㊠90% 以äžã§ããããšã確èªããŸãã
+
+
+
+## å¿
èŠã«å¿ããŠã¢ããªã±ãŒã·ã§ã³ãšè² è·çæãåèµ·åãã
+
+åã®ã¹ãããã§å®è¡ãã確èªã®ãããããæ€èšŒã§ããªãã£ãå Žåã¯ã**Application VM** ã« SSH æ¥ç¶ãã以äžã®æé ã«åŸã£ãŠã¢ããªã±ãŒã·ã§ã³ãšãã©ã³ã¶ã¯ã·ã§ã³è² è·ãåèµ·åããŸãã
+
+å®è¡äžã® Apache Tomcat ã€ã³ã¹ã¿ã³ã¹ã忢ããã«ã¯ã以äžã®ã³ãã³ãã䜿çšããŸãã
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+cd /usr/local/apache/apache-tomcat-9/bin
+./shutdown.sh
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+以äžã®ã³ãã³ãã䜿çšããŠããŸã å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ JVM ãæ®ã£ãŠããªãã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+ps -ef | grep Supercar-Trader
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ãŸã å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ JVM ãæ®ã£ãŠããå Žåã¯ã以äžã®ã³ãã³ãã䜿çšããŠæ®ãã® JVM ã匷å¶çµäºããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+sudo pkill -f Supercar-Trader
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+以äžã®ã³ãã³ãã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®è² è·çæã忢ããŸãããã¹ãŠã®ããã»ã¹ã忢ãããŸã§åŸ
ã¡ãŸãã
+
+``` bash
+cd /opt/appdynamics/lab-artifacts/phantomjs
+./stop_load.sh
+```
+
+Tomcat ãµãŒããŒãåèµ·åããŸãã
+
+``` bash
+cd /usr/local/apache/apache-tomcat-9/bin
+./startup.sh
+```
+
+2 åéåŸ
ã£ãŠããã以äžã®ã³ãã³ãã䜿çšã㊠Apache Tomcat ãããŒã 8080 ã§å®è¡ãããŠããããšã確èªããŸãã
+
+``` bash
+sudo netstat -tulpn | grep LISTEN
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããããŒã 8080 ã Apache Tomcat ã«ãã£ãŠäœ¿çšãããŠããããšã確èªã§ããŸãã
+
+
+
+以äžã®ã³ãã³ãã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®è² è·çæãéå§ããŸãã
+
+``` bash
+cd /opt/appdynamics/lab-artifacts/phantomjs
+./start_load.sh
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããŸãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/2-create-browser-application/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/2-create-browser-application/_index.md
new file mode 100644
index 0000000000..6684d300a1
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/2-create-browser-application/_index.md
@@ -0,0 +1,53 @@
+---
+title: ãã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ã®äœæ
+time: 2 minutes
+weight: 2
+description: ãã®æŒç¿ã§ã¯ãController ã§ã¢ããªã±ãŒã·ã§ã³ãäœæããã³æ§æããŸãã
+---
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®äºããŸãã
+
+* Web ãã©ãŠã¶ãã AppDynamics Controller ã«ã¢ã¯ã»ã¹ããŸãã
+* Controller ã§ãã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã
+* ãã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ãæ§æããŸãã
+
+## Controller ãžã®ãã°ã€ã³
+
+[AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã« Cisco ã®èªèšŒæ
å ±ã䜿çšããŠãã°ã€ã³ããŸãã
+
+## Controller ã§ã®ãã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ã®äœæ
+
+以äžã®æé ã§æ°ãããã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã
+
+{{% notice title="Note" style="primary" %}}
+äžèšã®ã¹ããã 5 ã§ãã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ã«äžæã®ååãä»ããããšã**éåžžã«éèŠ**ã§ãã
+{{% /notice %}}
+
+1. ãããã¡ãã¥ãŒã® **User Experience** ã¿ããã¯ãªãã¯ããŸãã
+2. **User Experience** ã®äžã«ãã **Browser Apps** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+3. **Add App** ãã¯ãªãã¯ããŸãã
+4. **Create an Application manually** ãªãã·ã§ã³ãéžæããŸãã
+5. ãã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ã®äžæã®ååã _Supercar-Trader-Web-
-_ ã®åœ¢åŒã§å
¥åããŸãã
+ * äŸ 1: Supercar-Trader-Web-JFK-3179
+ * äŸ 2: Supercar-Trader-Web-JohnSmith-0953
+6. **OK** ãã¯ãªãã¯ããŸãã
+
+
+
+ããã§ **Supercar-Trader-Web-##-####** ã¢ããªã±ãŒã·ã§ã³ã® **Browser App Dashboard** ã衚瀺ãããã¯ãã§ãã
+
+1. å·Šã¡ãã¥ãŒã® **Configuration** ã¿ããã¯ãªãã¯ããŸãã
+2. **Instrumentation** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+
+
+
+以äžã®æé ã«åŸã£ãŠããã©ãŠã¶ã¢ãã¿ãªã³ã°ãšãŒãžã§ã³ããååŸããããŒã¿ãšäžç·ã« IP ã¢ãã¬ã¹ãä¿åããããã«ããã©ã«ãã®æ§æã倿ŽããŸãã
+
+1. **Settings** ã¿ããã¯ãªãã¯ããŸãã
+2. å³åŽã®ã¹ã¯ããŒã«ããŒã䜿çšããŠç»é¢ã®äžçªäžãŸã§ã¹ã¯ããŒã«ããŸãã
+3. **Store IP Address** ãã§ãã¯ããã¯ã¹ããªã³ã«ããŸãã
+4. **Save** ãã¯ãªãã¯ããŸãã
+
+Browser RUM çšã® Controller UI ã®æ§æã«ã€ããŠè©³ããã¯ã[ãã¡ã](https://help.splunk.com/en/appdynamics-saas/end-user-monitoring/25.7.0/end-user-monitoring/browser-monitoring/browser-real-user-monitoring/overview-of-the-controller-ui-for-browser-rum/configure-the-controller-ui-for-browser-rum) ãåç
§ããŠãã ããã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/3-configure-agent-injection/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/3-configure-agent-injection/_index.md
new file mode 100644
index 0000000000..e3cfdee891
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/3-configure-agent-injection/_index.md
@@ -0,0 +1,55 @@
+---
+title: ãšãŒãžã§ã³ãæ¿å
¥ã®èšå®
+time: 3 minutes
+weight: 3
+description: ãã®æŒç¿ã§ã¯ãJavaScript ã®æ¿å
¥ãæå¹åããæ¿å
¥å¯Ÿè±¡ã® BT ãéžæããŸãã
+---
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ããŸãã
+
+* JavaScript Agent ã®æ¿å
¥ãæå¹åããã
+* æ¿å
¥å¯Ÿè±¡ã® Business Transaction ãéžæããã
+
+## JavaScript Agent ã®æ¿å
¥ãæå¹åãã
+
+AppDynamics 㯠JavaScript Agent ãæ¿å
¥ããããã®ããŸããŸãªæ¹æ³ããµããŒãããŠããŸããããã®ã©ãã§ã¯ Auto-Injection ã®æ¹åŒã䜿çšããŸããæ¬¡ã®æé ã«åŸã£ãŠãJavaScript Agent ã® Auto-Injection ãæå¹åããŠãã ããã
+
+1. å·Šã¡ãã¥ãŒã® **Applications** ã¿ããã¯ãªãã¯ããSupercar-Trader-## ã¢ããªã±ãŒã·ã§ã³ã«ããªã«ããŠã³ããŸãã
+2. å·Šã¡ãã¥ãŒã®äžçªäžã«ãã **Configuration** ã¿ããã¯ãªãã¯ããŸãã
+3. **User Experience App Integration** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+
+
+
+1. **JavaScript Agent Injection** ã¿ããã¯ãªãã¯ããŸãã
+2. **Enable** ãã¯ãªãã¯ããŠéè²ã«ãªãããã«ããŸãã
+3. éžæãããŠãããã©ãŠã¶ãŒã¢ããªã **Supercar-Trader-Web-##-####** ã§ããããšã確èªããŸããåã®ã»ã¯ã·ã§ã³ã§äœæããã¢ããªã±ãŒã·ã§ã³ãéžæããŠãã ããã
+4. **Enable JavaScript Injection** ã®äžã«ãã **Enable** ãã§ãã¯ããã¯ã¹ããªã³ã«ããŸãã
+5. **Save** ãã¯ãªãã¯ããŸãã
+
+
+
+Auto-Injection ãåè£ãšãªã Business Transaction ãæ€åºãããŸã§ã«æ°åããããŸãããã®éã«ã以äžã®æé ã§ Business Transaction Correlation ãæå¹åããŸããæ°ãã APM ãšãŒãžã§ã³ãã§ã¯ãããã¯èªåçã«è¡ãããŸãã
+
+1. **Business Transaction Correlation** ã¿ããã¯ãªãã¯ããŸãã
+2. **Manually Enable Business Transactions** ã»ã¯ã·ã§ã³ã®äžã«ãã **Enable** ãã¿ã³ãã¯ãªãã¯ããŸãã
+3. **Save** ãã¯ãªãã¯ããŸãã
+
+
+
+## æ¿å
¥å¯Ÿè±¡ã® Business Transaction ãéžæãã
+
+æ¬¡ã®æé ã§ãAuto-Injection ã®å¯Ÿè±¡ãšãªã Business Transaction ãéžæããŸãã
+
+1. **JavaScript Agent Injection** ã¿ããã¯ãªãã¯ããŸãã
+2. æ€çŽ¢ããã¯ã¹ã« **.do** ãšå
¥åããŸãã
+3. 9 ã€ã® BT ããã¹ãŠè¡šç€ºããããŸã§ãBusiness Transaction ã® **Refresh List** ãªã³ã¯ãã¯ãªãã¯ããŸãã
+4. å³åŽã®ãªã¹ãããã¯ã¹ãããã¹ãŠã® Business Transaction ãéžæããŸãã
+5. ç¢å°ãã¿ã³ãã¯ãªãã¯ããŠãå·ŠåŽã®ãªã¹ãããã¯ã¹ã«ç§»åããŸãã
+6. ãã¹ãŠã® Business Transaction ãå·ŠåŽã®ãªã¹ãããã¯ã¹ã«ç§»åãããããšã確èªããŸãã
+7. **Save** ãã¯ãªãã¯ããŸãã
+
+JavaScript Agent ã® Automatic Injection ã®èšå®ã«ã€ããŠè©³ããã¯ã[**ãã¡ã**](https://help.splunk.com/en/appdynamics-saas/end-user-monitoring/25.7.0/end-user-monitoring/browser-monitoring/browser-real-user-monitoring/inject-the-javascript-agent/automatic-injection-of-the-javascript-agent)ãåç
§ããŠãã ããã
+
+
+
+æ°ååŸ
ã€ãšãBrowser Application ã«è² è·ã衚瀺ããå§ããŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/4-monitor-and-troubleshoot-part-1/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/4-monitor-and-troubleshoot-part-1/_index.md
new file mode 100644
index 0000000000..af4a2b7cf7
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/4-monitor-and-troubleshoot-part-1/_index.md
@@ -0,0 +1,152 @@
+---
+title: ã¢ãã¿ãªã³ã°ãšãã©ãã«ã·ã¥ãŒãã£ã³ã° - ããŒã 1
+time: 2 minutes
+weight: 4
+description: ãã®æŒç¿ã§ã¯ãããã·ã¥ããŒãã確èªãããã¢ã¢ããªãæäœããŸãã
+---
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ããŸãã
+
+* Browser Application Overview ããã·ã¥ããŒãã®ç¢ºèª
+* Browser Application Geo ããã·ã¥ããŒãã®ç¢ºèª
+* Browser Application Usage Stats ããã·ã¥ããŒãã®ç¢ºèª
+* Supercar-Trader ã¢ããªã±ãŒã·ã§ã³ Web ããŒãžã®æäœ
+
+## Browser Application Overview ããã·ã¥ããŒãã®ç¢ºèª
+
+User Experience ããã·ã¥ããŒãã«ç§»åãã以äžã®æé ã§ Browser Application Overview ããã·ã¥ããŒãã«ããªã«ããŠã³ããŸãã
+
+1. å·Šã¡ãã¥ãŒã® **User Experience** ã¿ããã¯ãªãã¯ããŸãã
+2. ãèªèº«ã® Web ã¢ããªã±ãŒã·ã§ã³ **Supercar-Trader-Web-##-###** ãæ€çŽ¢ããŸãã
+3. **Details** ãã¯ãªãã¯ããããã¢ããªã±ãŒã·ã§ã³åãããã«ã¯ãªãã¯ããŸãã
+
+
+
+Overview ããã·ã¥ããŒãã«ã¯ãèšå®å¯èœãªãŠã£ãžã§ããã®ã»ããã衚瀺ãããŸããããã©ã«ãã®ãŠã£ãžã§ããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ããã©ãŒãã³ã¹ã®äžè¬çãªãã€ã¬ãã«ææšã瀺ãè€æ°ã®ã°ã©ããšãªã¹ããå«ãŸããŠããŸããããšãã°æ¬¡ã®ãšããã§ãã
+
+* End User Response Time Distribution
+* End User Response Time Trend
+* Total Page Requests by Geo
+* End User Response Time by Geo
+* Top 10 Browsers
+* Top 10 Devices
+* Page Requests per Minute
+* Top 5 Pages by Total Requests
+* Top 5 Countries by Total Page Requests
+
+ããã·ã¥ããŒãã®æ©èœã詊ããŠã¿ãŸãããã
+
+1. **+** ãã¯ãªãã¯ããŠãããã·ã¥ããŒãã«è¿œå ããã°ã©ãããŠã£ãžã§ãããéžæããŸãã
+2. ä»»æã®ãŠã£ãžã§ããã®å³äžé
ãã¯ãªãã¯ããŠãã©ãã°ãããšããµã€ãºã倿Žã§ããŸãã
+3. ãŠã£ãžã§ããå
ã®æ ç·ã§å²ãŸããé åãéžæããããã·ã¥ããŒãäžã§ç§»åã»é
眮ããŸãã
+4. ä»»æã®ãŠã£ãžã§ããã®ã¿ã€ãã«ãã¯ãªãã¯ãããšã詳现ããã·ã¥ããŒãã«ããªã«ããŠã³ããŸãã
+5. ä»»æã®ãŠã£ãžã§ããã®å³äžé
ã«ãã **X** ãã¯ãªãã¯ãããšãããã·ã¥ããŒããããŠã£ãžã§ãããåé€ã§ããŸãã
+
+ããã·ã¥ããŒãã®ãŠã£ãžã§ããã¬ã€ã¢ãŠãã«å ãã倿Žã¯èªåçã«ä¿åãããŸãã
+
+Browser Application Overview ããã·ã¥ããŒãã®è©³çްã«ã€ããŠã¯ã[**ãã¡ã**](https://help.splunk.com/en/appdynamics-saas/end-user-monitoring/25.7.0/end-user-monitoring/browser-monitoring/browser-app-dashboard/overview) ãåç
§ããŠãã ããã
+
+
+
+## Browser Application Geo ããã·ã¥ããŒãã®ç¢ºèª
+
+Geo Dashboard ã§ã¯ãããŒãžããŒãã«åºã¥ããŠå°ççãªäœçœ®ããšã®äž»èŠããã©ãŒãã³ã¹ææšã衚瀺ãããŸããããã·ã¥ããŒãå
šäœã«è¡šç€ºãããææšã¯ãããããŸãã¯ã°ãªããã§çŸåšéžæãããŠãããªãŒãžã§ã³ã®ãã®ã§ããããããã¥ãŒã«ã¯ãå³åŽã®ããã«ã«è¡šç€ºãããããŒã¿ã€ãã³ã°ã¡ããªã¯ã¹ã«è©²åœããåœã®ã©ãã«ä»ãããŒããµãŒã¯ã«ã衚瀺ãããŸãããã ããäžéšã®åœããªãŒãžã§ã³ã¯ã°ãªãããã¥ãŒã«ã®ã¿è¡šç€ºãããŸãã
+
+Browser Application Geo ããã·ã¥ããŒãã«ç§»åãã以äžã«èª¬æããããã·ã¥ããŒãã®æ©èœã詊ããŠã¿ãŸãããã
+
+1. **Geo Dashboard** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. ããŒããµãŒã¯ã«ã® 1 ã€ãã¯ãªãã¯ããŠããªãŒãžã§ã³ã«ããªã«ããŠã³ããŸãã
+3. ãªãŒãžã§ã³ã® 1 ã€ã«ããŠã¹ãªãŒããŒãããšããªãŒãžã§ã³ã®è©³çްã衚瀺ãããŸãã
+4. ãºãŒã ã¹ã©ã€ããŒã䜿çšããŠãºãŒã ã¬ãã«ã調æŽããŸãã
+5. **Configuration** ãã¯ãªãã¯ããŠãããããªãã·ã§ã³ã詊ããŠã¿ãŸãããã
+6. ã°ãªãããã¥ãŒãšããããã¥ãŒãåãæ¿ããŸãã
+
+Browser Application Geo ããã·ã¥ããŒãã®è©³çްã«ã€ããŠã¯ã[**ãã¡ã**](https://help.splunk.com/en/appdynamics-saas/end-user-monitoring/25.7.0/end-user-monitoring/browser-monitoring/browser-app-dashboard/geo-tab) ãåç
§ããŠãã ããã
+
+
+
+## Browser Application Usage Stats ããã·ã¥ããŒãã®ç¢ºèª
+
+**Usage Stats** ããã·ã¥ããŒãã§ã¯ããŠãŒã¶ãŒã®ãã©ãŠã¶ã¿ã€ããšããã€ã¹/ãã©ãããã©ãŒã ã«åºã¥ããéèšãããããŒãžããŒãã®å©çšçµ±èšããŒã¿ã衚瀺ãããŸãã
+
+Browser Application Usage Stats ããã·ã¥ããŒãã§ã¯ã以äžã®ç¹ãææ¡ã§ããŸãã
+
+* ãšã³ããŠãŒã¶ãŒå¿çæéã®åèšãæãé
ããã©ãŠã¶
+* å¿çããŒãžã®ã¬ã³ããªã³ã°ãæãé
ããã©ãŠã¶
+* å€ãã®ãšã³ããŠãŒã¶ãŒã䜿çšããŠãããã©ãŠã¶
+* ç¹å®ã®åœãŸãã¯å°åã§å€ãã®ãšã³ããŠãŒã¶ãŒã䜿çšããŠãããã©ãŠã¶
+
+Browser Application Usage Stats ããã·ã¥ããŒãã«ç§»åãã以äžã«èª¬æããããã·ã¥ããŒãã®æ©èœã詊ããŠã¿ãŸãããã
+
+1. **Usage Stats** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. **Show Versions** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+3. ããŒãå¥ã«ãããŸããŸãªãã©ãŠã¶ãšããŒãžã§ã³ã確èªããŸãã
+4. åã°ã©ãã®ã»ã¯ã·ã§ã³ã«ããŠã¹ãªãŒããŒãããšã詳现ã衚瀺ãããŸãã
+
+
+
+以äžã®æé ã§ããã©ãŠã¶ãšããŒãžã§ã³å¥ã«ããã«å€ãã®ã¡ããªã¯ã¹ã確èªããŸãã
+
+1. å³åŽã®ã¹ã¯ããŒã«ããŒã䜿çšããŠãããŒãžã®äžçªäžãŸã§ã¹ã¯ããŒã«ããŸãã
+2. ãã©ãŠã¶ãšããŒãžã§ã³å¥ã«å©çšå¯èœãªã¡ããªã¯ã¹ã確èªããŸãã
+3. åœå¥ã«å©çšå¯èœãªã¡ããªã¯ã¹ã確èªããŸãã
+
+
+
+Devices ããã·ã¥ããŒãã«ç§»åãã以äžã«èª¬æããããã·ã¥ããŒãã®æ©èœã詊ããŠã¿ãŸãããã
+
+1. **Devices** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. ããã€ã¹å¥ã®ããŒãå
èš³ã確èªããŸãã
+3. åã°ã©ãã®ã»ã¯ã·ã§ã³ã«ããŠã¹ãªãŒããŒãããšã詳现ã衚瀺ãããŸãã
+4. ããã€ã¹å¥ã«å©çšå¯èœãªããã©ãŒãã³ã¹ã¡ããªã¯ã¹ã確èªããŸãã
+
+Browser Application Usage Stats ããã·ã¥ããŒãã®è©³çްã«ã€ããŠã¯ã[**ãã¡ã**](https://help.splunk.com/en/appdynamics-saas/end-user-monitoring/25.7.0/end-user-monitoring/browser-monitoring/browser-app-dashboard/usage-stats) ãåç
§ããŠãã ããã
+
+
+
+## Supercar-Trader ã¢ããªã±ãŒã·ã§ã³ Web ããŒãžã®æäœ
+
+Browser Real User Monitoring ãšãŒãžã§ã³ããèšå®ããæåã®äžé£ã®æ©èœã確èªã§ããã®ã§ã次㯠Supercar-Trader ã¢ããªã±ãŒã·ã§ã³ã® Web ããŒãžãæäœããŠã远å ã®ããŒããçæããåºæã®ãã©ãŠã¶ã»ãã·ã§ã³ãèšé²ããŠã¿ãŸãããã
+
+Web ãã©ãŠã¶ã§ã¢ããªã®ã¡ã€ã³ããŒãžãéããŸãã以äžã® URL ã®äŸã§ã¯ããèªèº«ã® Application VM ã® IP ã¢ãã¬ã¹ãŸãã¯å®å
šä¿®é£Ÿãã¡ã€ã³åã«çœ®ãæããŠãã ããã
+
+``` bash
+http://[application-vm-ip-address]:8080/Supercar-Trader/home.do
+```
+
+ã¢ããªã±ãŒã·ã§ã³ã®ããŒã ããŒãžã衚瀺ãããŸãã
+
+
+
+å©çšå¯èœãª Ferrari ã®äžèЧãéããŸãã
+
+1. äžéšã¡ãã¥ãŒã® **Supercars** ã¿ããã¯ãªãã¯ããŸãã
+2. Ferrari ã®ããŽãã¯ãªãã¯ããŸãã
+
+
+
+Ferrari ã®äžèЧã衚瀺ãããŸãã
+
+
+
+æåã® Ferrari ã®ç»åãã¯ãªãã¯ããŸãã
+
+1. **View Enquiries** ãã¯ãªãã¯ããŸãã
+2. **Enquire** ãã¯ãªãã¯ããŸãã
+
+
+
+ãã®è»ã«é¢ããåãåãããéä¿¡ããŸãã
+
+1. åãåãããã©ãŒã ã®åé
ç®ã«é©åãªããŒã¿ãå
¥åããŸãã
+2. **Submit** ãã¯ãªãã¯ããŸãã
+
+
+
+è»ãæ€çŽ¢ããåŒãç¶ããµã€ããé²èЧããŸãã
+
+1. äžéšã¡ãã¥ãŒã® **Search** ã¿ããã¯ãªãã¯ããŸãã
+2. æ€çŽ¢ããã¯ã¹ã« **A** ã®æåãå
¥åãã**Search** ãã¯ãªãã¯ããŸãã
+3. æ®ãã®ã¿ããã¯ãªãã¯ããŠãWeb ãµã€ããæäœããŠã¿ãŸãããã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/5-monitor-and-troubleshoot-part-2/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/5-monitor-and-troubleshoot-part-2/_index.md
new file mode 100644
index 0000000000..71538eb0b6
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/5-monitor-and-troubleshoot-part-2/_index.md
@@ -0,0 +1,117 @@
+---
+title: ã¢ãã¿ãªã³ã°ãšãã©ãã«ã·ã¥ãŒãã£ã³ã° - ããŒã 2
+time: 2 minutes
+weight: 5
+description: ãã®æŒç¿ã§ã¯ãããã·ã¥ããŒãã確èªããBrowser Snapshot ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¡ããŸãã
+---
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®äºããŸãã
+
+* äœæãã Browser Session ã確èªããŸãã
+* Pages & AJAX Requests Dashboard ã確èªããŸãã
+* ç¹å®ã® Base Page ã®ããã·ã¥ããŒãã確èªããŸãã
+* Browser Snapshot ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¡ããŸãã
+
+## äœæãã Browser Session ã確èªãã
+
+ã»ãã·ã§ã³ã¯ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ãæäœããäœéšãåæããããã®æéããŒã¹ã®ã³ã³ããã¹ããšããŠèããããšãã§ããŸãããã©ãŠã¶ã»ãã·ã§ã³ã調ã¹ãããšã§ãã¢ããªã±ãŒã·ã§ã³ãã©ã®ããã«åäœããŠãããããŠãŒã¶ãŒãã©ã®ããã«æäœããŠããããçè§£ã§ããŸããããã«ãããUI ã®ä¿®æ£ããµãŒããŒåŽã®ããã©ãŒãã³ã¹æé©åãªã©ãã¢ããªã±ãŒã·ã§ã³ãããé©åã«ç®¡çãæ¹åããããšãå¯èœã«ãªããŸãã
+
+Sessions ããã·ã¥ããŒãã«ç§»åããåã®æŒç¿ã§ Web ã¢ããªã±ãŒã·ã§ã³ã®ããŒãžãæäœããããšã«ãã£ãŠäœæãããã©ãŠã¶ã»ãã·ã§ã³ãèŠã€ããŸãã以äžã®æé ã«åŸã£ãŠãã ããã
+
+{{% notice title="Note" style="orange" %}}
+Web ã¢ããªã±ãŒã·ã§ã³ã§æåŸã®ããŒãžã«ã¢ã¯ã»ã¹ããŠããããã©ãŠã¶ã»ãã·ã§ã³ãã»ãã·ã§ã³ãªã¹ãã«è¡šç€ºããããŸã§ 10 åã»ã©åŸ
ã€å¿
èŠãããå ŽåããããŸãã10 åçµã£ãŠãã»ãã·ã§ã³ã衚瀺ãããªãå Žåã¯ã䜿çšããŠãã Java Agent ã®ããŒãžã§ã³ã«åé¡ãããå¯èœæ§ããããŸãã
+{{% /notice %}}
+
+1. å·Šã¡ãã¥ãŒã® **Sessions** ã¿ããã¯ãªãã¯ããŸãã
+2. Session Fields ãªã¹ãã§ **IP Address** ã«ãã§ãã¯ãå
¥ããŸãã
+3. ãèªèº«ã® IP ã¢ãã¬ã¹ã§äœæããã»ãã·ã§ã³ãèŠã€ããŸãã
+4. ãèªèº«ã®ã»ãã·ã§ã³ãã¯ãªãã¯ãã**View Details** ãã¯ãªãã¯ããŸãã
+
+
+
+äœæããã»ãã·ã§ã³ãèŠã€ããŠéãããã以äžã®æé ã«åŸã£ãŠã»ãã·ã§ã³ãã¥ãŒã®ããŸããŸãªæ©èœãæ¢çŽ¢ããŸãã
+
+> _Note:_ ãèªèº«ã®ã»ãã·ã§ã³ã§ã¯ããããã®ããŒãžã«ã **View Snapshot** ãªã³ã¯ããªãå ŽåããããŸãïŒæé 5 ã®ããã«ïŒããã®æŒç¿ã®åŸåã§ããªã³ã¯ãããã»ãã·ã§ã³ãèŠã€ããŠæ¢çŽ¢ããŸãã
+
+1. **Session Summary** ãªã³ã¯ãã¯ãªãã¯ããŠããµããªãŒããŒã¿ã衚瀺ããŸãã
+2. å·ŠåŽã«è¡šç€ºãããŠããããŒãžãã¯ãªãã¯ãããšããã®ããŒãžã®è©³çްãå³åŽã«è¡šç€ºãããŸãã
+3. å·ŠåŽã®ãªã¹ãã§éžæããŠããããŒãžã®å®å
šãªååã¯åžžã«ç¢ºèªã§ããŸãã
+4. ãŠã©ãŒã¿ãŒãã©ãŒã«ãã¥ãŒã®æ°Žå¹³ãªéè²ã®ããŒãã¯ãªãã¯ãããšããã®é
ç®ã®è©³çްã衚瀺ãããŸãã
+5. ããŒãžã«ãã£ãŠã¯ããµãŒããŒåŽã§ååŸãããçžé¢ã¹ãããã·ã§ãããžã®ãªã³ã¯ãããå ŽåããããŸãã
+6. èšå®ã¢ã€ã³ã³ãã¯ãªãã¯ãããšãããŒãžãªã¹ãã«è¡šç€ºãããåã倿Žã§ããŸãã
+
+Browser RUM Sessions ã®è©³çްã«ã€ããŠã¯ã[**ãã¡ã**](https://help.splunk.com/en/appdynamics-saas/end-user-monitoring/25.7.0/end-user-monitoring/browser-monitoring/browser-real-user-monitoring/overview-of-the-controller-ui-for-browser-rum/browser-rum-sessions) ãåç
§ããŠãã ããã
+
+
+
+## Pages & AJAX Requests Dashboard ã確èªãã
+
+Pages & AJAX Requests ããã·ã¥ããŒãã«ç§»åããããã«ãããªãã·ã§ã³ã確èªããŠãç¹å®ã® Base Page ããã·ã¥ããŒããéããŸãã以äžã®æé ã«åŸã£ãŠãã ããã
+
+1. å·Šã¡ãã¥ãŒã® **Pages & AJAX Requests** ã¿ããã¯ãªãã¯ããŸãã
+2. ããŒã«ããŒã®ãªãã·ã§ã³ãæ¢çŽ¢ããŸãã
+3. **localhost:8080/supercar-trader/car.do** ããŒãžãã¯ãªãã¯ããŸãã
+4. **Details** ãã¯ãªãã¯ã㊠Base Page ããã·ã¥ããŒããéããŸãã
+
+
+
+## ç¹å®ã® Base Page ã®ããã·ã¥ããŒãã確èªãã
+
+Base Page ããã·ã¥ããŒãã®äžéšã«ã¯ãController UI ã®å³äžã«ããæéç¯å²ããããããŠã³ã§éžæãããæéã«ãããäž»èŠãªããã©ãŒãã³ã¹ææšãšããŠãEnd User Response TimeãLoadãCache HitsãPage Views with JS errors ã衚瀺ãããŸããCache Hits ã¯ããœãŒã¹ããã§ã¯ãªããCDN ãªã©ã®ãã£ãã·ã¥ããååŸããããªãœãŒã¹ã瀺ããŸãã
+
+Timing Breakdown ã»ã¯ã·ã§ã³ã«ã¯ãããŒãžèªã¿èŸŒã¿ããã»ã¹ã®ååŽé¢ã«å¿
èŠãªå¹³åæéã衚瀺ãããŠã©ãŒã¿ãŒãã©ãŒã«ã°ã©ãã衚瀺ãããŸããåã¡ããªã¯ã¹ãäœã枬å®ããŠãããã®è©³çްã«ã€ããŠã¯ãå·ŠåŽã«ããååã«ã«ãŒãœã«ãåãããŠãã ãããå®çŸ©ã®ãããã¢ããã衚瀺ãããŸããããã«è©³çŽ°ãªæ
å ±ã«ã€ããŠã¯ã[**Browser RUM Metrics**](https://help.splunk.com/en/appdynamics-saas/end-user-monitoring/25.7.0/end-user-monitoring/browser-monitoring/browser-real-user-monitoring/browser-rum-metrics) ãåç
§ããŠãã ããã
+
+以äžã®æé ã«åŸã£ãŠã**localhost:8080/supercar-trader/car.do** Base Page ã®è©³çްã確èªããŸãã
+
+1. æéç¯å²ããããããŠã³ã **last 2 hours** ã«å€æŽããŸãã
+2. äž»èŠãªããã©ãŒãã³ã¹ææšãæ¢çŽ¢ããŸãã
+3. ãŠã©ãŒã¿ãŒãã©ãŒã«ãã¥ãŒã®ã¡ããªã¯ã¹ãæ¢çŽ¢ããŸãã
+4. 瞊ã®ã¹ã¯ããŒã«ããŒã䜿çšããŠããŒãžãäžã«ç§»åããŸãã
+5. ãã¹ãŠã® KPI Trends ã®ã°ã©ããæ¢çŽ¢ããŸãã
+
+Base Page ããã·ã¥ããŒãã®è©³çްã«ã€ããŠã¯ã[**ãã¡ã**](https://help.splunk.com/en/appdynamics-saas/end-user-monitoring/25.7.0/end-user-monitoring/browser-monitoring/browser-real-user-monitoring/overview-of-the-controller-ui-for-browser-rum/pages-and-ajax-requests/page-ajax-and-iframe-dashboards/page-and-iframe-dashboards) ãåç
§ããŠãã ããã
+
+
+
+## Browser Snapshot ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+
+{{% notice title="Note" style="orange" %}}
+ãèªèº«ã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯ Browser Snapshot ãååšããªãå Žåãããããã®å Žåã¯ã¯ãŒã¯ãããŒå
šäœãé²ããããšãã§ããŸãããå¥ã®ãã¢ã¢ããªã±ãŒã·ã§ã³ã§ãã®ã»ã¯ã·ã§ã³ãé²ãããå Žåã¯ããã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ **AD-Ecommerce-Browser** ã«åãæ¿ããããšãã§ããŸãã
+{{% /notice %}}
+
+Browser Snapshots ãªã¹ãããã·ã¥ããŒãã«ç§»åããç¹å®ã® Browser Snapshot ãéããŸãã以äžã®æé ã«åŸã£ãŠãã ããã
+
+1. **Browser Snapshots** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. **End User Response Time** åã®ããããŒã 2 åã¯ãªãã¯ããŠãæå€§ã®å¿çæéãäžã«è¡šç€ºãããããã«ããŸãã
+3. å·Šãã 3 åç®ã«ã°ã¬ãŒãŸãã¯éã®ã¢ã€ã³ã³ããã Browser Snapshot ãã¯ãªãã¯ããŸãã
+4. **Details** ãã¯ãªãã¯ã㊠Browser Snapshot ãéããŸãã
+
+
+
+Browser Snapshot ãéãããã以äžã®æé ã«åŸã£ãŠè©³çްã確èªããå¿çæéãé·ããªã£ãæ ¹æ¬åå ãèŠã€ããŸãã
+
+1. ãŠã©ãŒã¿ãŒãã©ãŒã«ãã¥ãŒã確èªããŠãå¿çæéãã©ãã§åœ±é¿ãåããããææ¡ããŸãã
+2. å»¶é·ããã **Server Time** ã¡ããªã¯ã¹ã«æ³šç®ããŸãã**Server Time** ã®ã©ãã«ã«ã«ãŒãœã«ãåãããŠãã®æå³ãçè§£ããŸãã
+3. Browser Snapshot ã«èªåçã«ãã£ããã£ããçžé¢ä»ãããããµãŒããŒåŽã®ãã©ã³ã¶ã¯ã·ã§ã³ãã¯ãªãã¯ããŸãã
+4. **View Details** ãã¯ãªãã¯ããŠãé¢é£ãããµãŒããŒåŽã®ã¹ãããã·ã§ãããéããŸãã
+
+
+
+çžé¢ä»ãããããµãŒããŒåŽã®ã¹ãããã·ã§ãããéãããã以äžã®æé ã䜿çšããŠããã©ãŒãã³ã¹äœäžã®æ ¹æ¬åå ãç¹å®ããŸãã
+
+1. ãã©ãŠã¶ã§è²»ãããããã©ã³ã¶ã¯ã·ã§ã³æéã®å²åãæå°éã§ããããšãããããŸãã
+2. ãã©ãŠã¶ãš Web-Portal Tier ã®éã®ã¿ã€ãã³ã°ã¯ããã©ãŠã¶ããã®åææ¥ç¶ããå®å
šãªå¿çãè¿ããããŸã§ã衚ããŠããŸãã
+3. JDBC åŒã³åºããæãæéãèŠããŠããããšãããããŸãã
+4. **Drill Down** ãã¯ãªãã¯ããŠãEnquiry-Services Tier å
ã®ã³ãŒãã¬ãã«ãã¥ãŒã確èªããŸãã
+
+
+
+Enquiry-Services Tier ã®ã¹ãããã·ã§ããã»ã°ã¡ã³ããéããšããã©ã³ã¶ã¯ã·ã§ã³ã«åé¡ãåŒãèµ·ãããããŒã¿ããŒã¹ãžã® JDBC åŒã³åºãããã£ãããšãããããŸãã
+
+1. æå€§æéãããã£ãŠãã **JDBC** ãªã³ã¯ãã¯ãªãã¯ããŠãJDBC åŒã³åºãã®è©³çްããã«ãéããŸãã
+2. JDBC çµäºåŒã³åºãã®è©³çްããã«ã«ã¯ãæãæéãèŠããç¹å®ã®ã¯ãšãªã衚瀺ãããŸãã
+3. SQL ãã©ã¡ãŒã¿å€ãšãšãã«ãå®å
šãª SQL ã¹ããŒãã¡ã³ãã確èªã§ããŸãã
+
+Browser Snapshots ã®è©³çްã«ã€ããŠã¯ã[**ãã¡ã**](https://help.splunk.com/en/appdynamics-saas/end-user-monitoring/25.7.0/end-user-monitoring/browser-monitoring/browser-app-dashboard/browser-snapshots_1) ããã³ [**ãã¡ã**](https://help.splunk.com/en/appdynamics-saas/end-user-monitoring/25.7.0/end-user-monitoring/browser-monitoring/browser-app-dashboard/browser-snapshots_1/page-snapshots) ãåç
§ããŠãã ããã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/_index.md
new file mode 100644
index 0000000000..e27abcbb9c
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/4-brum-monitoring/_index.md
@@ -0,0 +1,37 @@
+---
+title: Browser Real User Monitoring (BRUM)
+time: 2 minutes
+weight: 4
+description: ãã®Learning Labã§ã¯ãAppDynamicsã䜿çšããŠãã©ãŠã¶ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã®ãã«ã¹ãç£èŠããæ¹æ³ãåŠã³ãŸãã
+---
+
+## ç®ç
+
+ãã®Learning Labã§ã¯ãAppDynamicsã䜿çšããŠãã©ãŠã¶ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã®ãã«ã¹ãç£èŠããæ¹æ³ãåŠã³ãŸãã
+
+ãã®ã©ããå®äºãããšã以äžã宿œã§ããããã«ãªããŸãã
+
+- Controllerã§ãã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ãäœæãã
+- Browser Real User Monitoring (BRUM) ãšãŒãžã§ã³ããæ§æããŠãWebã¢ããªã±ãŒã·ã§ã³ã®ãã«ã¹ãç£èŠãã
+- ããã©ãŒãã³ã¹åé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¡ãããã©ã³ã¶ã¯ã·ã§ã³ã®ãã©ãŠã¶åŽãšãµãŒããŒåŽã®ã©ã¡ãã§çºçããŠãããã«ããããããæ ¹æ¬åå ãç¹å®ãã
+
+## ã¯ãŒã¯ã·ã§ããç°å¢
+
+ã¯ãŒã¯ã·ã§ããç°å¢ã«ã¯2ã€ã®ãã¹ãããããŸãã
+
+- 1ã€ç®ã®ãã¹ãã¯AppDynamics Controllerãå®è¡ããŠããã以éã¯ControllerãšåŒã³ãŸãã
+- 2ã€ç®ã®ãã¹ãã¯ã©ãã§äœ¿çšããSupercar Traderã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠããŸããAppDynamicsãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ãããã¹ãã§ããã以éã¯Application VMãšåŒã³ãŸãã
+
+## Controller
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã [AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã䜿çšããŸãã
+
+
+
+## Application VM
+
+Supercar Traderã¯JavaããŒã¹ã®Webã¢ããªã±ãŒã·ã§ã³ã§ãã
+
+Supercar-Traderã³ã¬ã¯ã·ã§ã³ã®ç®çã¯ãAppDynamics Controlleråãã«åçãªãã©ãã£ãã¯ïŒããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ïŒãçæããããšã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/1-lab-prerequisites/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/1-lab-prerequisites/_index.md
new file mode 100644
index 0000000000..07ec1f9f67
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/1-lab-prerequisites/_index.md
@@ -0,0 +1,119 @@
+---
+title: ã©ãã®åææ¡ä»¶
+time: 3 minutes
+weight: 1
+description: ãã®æŒç¿ã§ã¯ãController ãžã¢ã¯ã»ã¹ããã¢ããªã±ãŒã·ã§ã³ã®è² è·ã確èªããŸãã
+---
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ã宿œããŸãã
+
+* Web ãã©ãŠã¶ãã AppDynamics Controller ã«ã¢ã¯ã»ã¹ããŸãã
+* ã¢ããªã±ãŒã·ã§ã³ãžã®ãã©ã³ã¶ã¯ã·ã§ã³è² è·ã確èªããŸãã
+* å¿
èŠã«å¿ããŠãã¢ããªã±ãŒã·ã§ã³ãšãã©ã³ã¶ã¯ã·ã§ã³è² è·ãåèµ·åããŸãã
+
+## Controller ãžã®ãã°ã€ã³
+
+[AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã« Cisco ã®è³æ Œæ
å ±ã§ãã°ã€ã³ããŸãã
+
+## ã¢ããªã±ãŒã·ã§ã³ãžã®ãã©ã³ã¶ã¯ã·ã§ã³è² è·ã確èªãã
+
+ã¢ããªã±ãŒã·ã§ã³ã®ãããŒãããã確èªããŸãã
+
+1. æéç¯å²ãšã㊠**last 1 hour** ãéžæããŸãã
+2. ãããŒãããäžã§ 5 ã€ã®ç°ãªã Tier ã衚瀺ãããŠããããšã確èªããŸãã
+3. éå» 1 æéã«ãããäžè²«ããè² è·ãããã£ãŠããããšã確èªããŸãã
+
+
+
+ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã®äžèЧã確èªããŸãã
+
+1. å·ŠåŽã®ã¡ãã¥ãŒã® **Business Transactions** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. 以äžã«ç€ºã 11 åã®ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã衚瀺ãããŠããããšã確èªããŸãã
+3. éå» 1 æéã«äœããã®æ°ã®åŒã³åºããããããšã確èªããŸãã
+
+**Note:** **Calls** åã衚瀺ãããŠããªãå Žåã¯ã**View Options** ããŒã«ããŒãã¿ã³ãã¯ãªãã¯ããŠåã衚瀺ã§ããŸãã
+
+
+
+Node ã®ãšãŒãžã§ã³ãã¹ããŒã¿ã¹ã確èªããŸãã
+
+1. å·ŠåŽã®ã¡ãã¥ãŒã® **Tiers & Nodes** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+2. **Grid View** ãã¯ãªãã¯ããŸãã
+3. éå» 1 æéã«ãããå Node ã® **App Agent Status** ã 90% ãè¶
ããŠããããšã確èªããŸãã
+
+
+
+## å¿
èŠã«å¿ããŠã¢ããªã±ãŒã·ã§ã³ãšè² è·çæãåèµ·åãã
+
+åè¿°ã®ã¹ãããã§å®æœãããã§ãã¯ã®ããããã確èªã§ããªãå Žåã¯ã**Application VM** ã« SSH æ¥ç¶ãã以äžã®æé ã«åŸã£ãŠã¢ããªã±ãŒã·ã§ã³ãšãã©ã³ã¶ã¯ã·ã§ã³è² è·ãåèµ·åããŸãã
+
+å®è¡äžã® Apache Tomcat ã€ã³ã¹ã¿ã³ã¹ã忢ããã«ã¯ã以äžã®ã³ãã³ãã䜿çšããŸãã
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+cd /usr/local/apache/apache-tomcat-9/bin
+./shutdown.sh
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+以äžã®ã³ãã³ãã䜿çšããŠããŸã å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ JVM ãæ®ã£ãŠããªãã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+ps -ef | grep Supercar-Trader
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ JVM ãæ®ã£ãŠããå Žåã¯ã以äžã®ã³ãã³ãã§æ®ã£ãŠãã JVM ã忢ããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+sudo pkill -f Supercar-Trader
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+以äžã®ã³ãã³ãã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®è² è·çæã忢ããŸãããã¹ãŠã®ããã»ã¹ã忢ãããŸã§åŸ
æ©ããŸãã
+
+``` bash
+cd /opt/appdynamics/lab-artifacts/phantomjs
+./stop_load.sh
+```
+
+Tomcat ãµãŒããŒãåèµ·åããŸãã
+
+``` bash
+cd /usr/local/apache/apache-tomcat-9/bin
+./startup.sh
+```
+
+2 åéåŸ
æ©ããŠããã以äžã®ã³ãã³ãã䜿çšã㊠Apache Tomcat ãããŒã 8080 ã§å®è¡äžã§ããããšã確èªããŸãã
+
+``` bash
+sudo netstat -tulpn | grep LISTEN
+```
+
+以äžã®ç»åã®ããã«ãããŒã 8080 ã Apache Tomcat ã«ãã䜿çšãããŠããããšã瀺ãåºåã衚瀺ãããã¯ãã§ãã
+
+
+
+以äžã®ã³ãã³ãã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®è² è·çæãéå§ããŸãã
+
+``` bash
+cd /opt/appdynamics/lab-artifacts/phantomjs
+./start_load.sh
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/2-download-database-agent/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/2-download-database-agent/_index.md
new file mode 100644
index 0000000000..f7b61decd3
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/2-download-database-agent/_index.md
@@ -0,0 +1,38 @@
+---
+title: Database Agent ã®ããŠã³ããŒã
+time: 2 minutes
+weight: 2
+description: ãã®æŒç¿ã§ã¯ãWeb ãã©ãŠã¶ãã AppDynamics Controller ã«ã¢ã¯ã»ã¹ãããããã Database Visibility agent ãããŠã³ããŒãããŸãã
+---
+
+ãã®æŒç¿ã§ã¯ãWeb ãã©ãŠã¶ãã AppDynamics Controller ã«ã¢ã¯ã»ã¹ãããããã Database Visibility agent ãããŠã³ããŒãããŸãã
+
+## Controller ãžã®ãã°ã€ã³
+
+[AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã« Cisco ã®èªèšŒæ
å ±ã§ãã°ã€ã³ããŸãã
+
+## Database Agent ã®ããŠã³ããŒã
+
+1. ç»é¢å·Šäžã® Home ã¿ããéžæããŸãã
+2. **Getting Started** ã¿ããéžæããŸãã
+3. **Getting Started Wizard** ãã¯ãªãã¯ããŸãã
+
+
+
+1. **Databases** ãã¯ãªãã¯ããŸãã
+
+
+
+## Database Agent ã®ããŠã³ããŒã
+
+1. Select Database Type ã®ããããããŠã³ã¡ãã¥ãŒãã **MySQL** ãéžæããŸãã
+2. Controller ã®æ¥ç¶èšå®ã¯ããã©ã«ãã®ãŸãŸã«ããŸãã
+3. **Click Here to Download** ãã¯ãªãã¯ããŸãã
+
+
+
+Database Visibility Agent ã®ãã¡ã€ã«ãããŒã«ã«ãã¡ã€ã«ã·ã¹ãã ã«ä¿åããŸãã
+
+ãã©ãŠã¶ããã以äžã®ç»åã®ãããªåœ¢åŒïŒOS ã«ãã£ãŠç°ãªããŸãïŒã§ agent ãã¡ã€ã«ãããŒã«ã«ãã¡ã€ã«ã·ã¹ãã ã«ä¿åããããä¿ãããŸãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/3-install-database-agent/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/3-install-database-agent/_index.md
new file mode 100644
index 0000000000..c458da61be
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/3-install-database-agent/_index.md
@@ -0,0 +1,77 @@
+---
+title: Database Agent ã®ã€ã³ã¹ããŒã«
+time: 2 minutes
+weight: 3
+description: ãã®æŒç¿ã§ã¯ãDatabase Visibility ãšãŒãžã§ã³ããã¢ããããŒãããããŠã³ããŒããããã¡ã€ã«ãè§£åããŠãDatabase Visibility ãšãŒãžã§ã³ããèµ·åããŸãã
+---
+
+AppDynamics Database Agent ã¯ãããŒã¿ããŒã¹ã€ã³ã¹ã¿ã³ã¹ããã³ããŒã¿ããŒã¹ãµãŒããŒã«é¢ããããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãåéããã¹ã¿ã³ãã¢ãã³ã® Java ããã°ã©ã ã§ããDatabase Agent 㯠Java 1.8 以äžãåäœããä»»æã®ãã·ã³ã«ãããã€ã§ããŸãããã·ã³ã¯ãAppDynamics Controller ããã³ç£èŠå¯Ÿè±¡ã®ããŒã¿ããŒã¹ã€ã³ã¹ã¿ã³ã¹ãžã®ãããã¯ãŒã¯ã¢ã¯ã»ã¹ãå¿
èŠã§ãã
+
+ã¡ã¢ãª 16 GB ã®äžè¬çãªãã·ã³ã§åäœãã Database Agent ã¯ãçŽ 25 åã®ããŒã¿ããŒã¹ãç£èŠã§ããŸãããã倧ããªãã·ã³ã§ã¯ãDatabase Agent ã¯æå€§ 200 åã®ããŒã¿ããŒã¹ãç£èŠã§ããŸãã
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ããŸãã
+
+- Database Visibility ãšãŒãžã§ã³ããã¡ã€ã«ã Application VM ã«ã¢ããããŒããã
+- ãã¡ã€ã«ã·ã¹ãã äžã®ç¹å®ã®ãã£ã¬ã¯ããªã«ãã¡ã€ã«ãè§£åãã
+- Database Visibility ãšãŒãžã§ã³ããèµ·åãã
+
+## Database Agent ã Application VM ã«ã¢ããããŒããã
+
+ãã®æç¹ã§ãæ¬ã¯ãŒã¯ã·ã§ããã§äœ¿çšãã EC2 ã€ã³ã¹ã¿ã³ã¹ã«é¢ããæ
å ±ãåãåã£ãŠããã¯ãã§ããEC2 ã€ã³ã¹ã¿ã³ã¹ã® IP ã¢ãã¬ã¹ãSSH æ¥ç¶ã«å¿
èŠãªãŠãŒã¶ãŒåããã³ãã¹ã¯ãŒããæºåããŠãã ããã
+
+ããŒã«ã«ãã·ã³ã§ã¿ãŒããã«ãŠã£ã³ããŠãéããDatabase Agent ãã¡ã€ã«ãããŠã³ããŒããããã£ã¬ã¯ããªã«ç§»åããŸãã以äžã®ã³ãã³ãã䜿çšããŠããã¡ã€ã«ã EC2 ã€ã³ã¹ã¿ã³ã¹ã«ã¢ããããŒãããŸããå®äºãŸã§ã«æéããããå ŽåããããŸããWindows OS ããå©çšã®å Žåã¯ãWinSCP ãªã©ã®ããã°ã©ã ã䜿çšããå¿
èŠããããããããŸããã
+
+- ã€ã³ã¹ã¿ã³ã¹ã® IP ã¢ãã¬ã¹ãŸãã¯ãããªã㯠DNS ãæŽæ°ããŠãã ããã
+- ã䜿ãã®æ£ç¢ºãªããŒãžã§ã³ã«åãããŠãã¡ã€ã«åãæŽæ°ããŠãã ããã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+cd ~/Downloads
+scp -P 2222 db-agent-*.zip splunk@i-0267b13f78f891b64.splunk.show:/home/splunk
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+splunk@i-0267b13f78f891b64.splunk.show's password:
+db-agent-25.7.0.5137.zip 100% 70MB 5.6MB/s 00:12
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## Database Agent ãã€ã³ã¹ããŒã«ãã
+
+Database Agent ã® zip ãã¡ã€ã«ãè§£åãããã£ã¬ã¯ããªæ§é ãäœæããŸãã
+
+```bash
+cd /opt/appdynamics
+mkdir dbagent
+```
+
+以äžã®ã³ãã³ãã䜿çšããŠãDatabase Agent ã® zip ãã¡ã€ã«ããã£ã¬ã¯ããªã«ã³ããŒãããã¡ã€ã«ãè§£åããŸããDatabase Agent ãã¡ã€ã«ã®ååã¯ã以äžã®äŸãšå°ãç°ãªãå ŽåããããŸãã
+
+```bash
+cp ~/db-agent-*.zip /opt/appdynamics/dbagent/
+cd /opt/appdynamics/dbagent
+unzip db-agent-*.zip
+```
+
+## Database Visibility ãšãŒãžã§ã³ããèµ·åãã
+
+以äžã®ã³ãã³ãã䜿çšã㊠Database Agent ãèµ·åããèµ·åããããšã確èªããŸãã
+
+**db agent åã«ããªãã®ã€ãã·ã£ã«ãä»å ããŠãã ãã**ãããã¯æ¬¡ã®ã»ã¯ã·ã§ã³ã§äœ¿çšããŸããäŸ: DBMon-Lab-Agent-IO
+
+```bash
+cd /opt/appdynamics/dbagent
+nohup java -Dappdynamics.agent.maxMetrics=300000 -Ddbagent.name=DBMon-Lab-Agent-YOURINITIALS -jar db-agent.jar &
+ps -ef | grep db-agent
+```
+
+以äžã®ç»åã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/4-configure-database-collector/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/4-configure-database-collector/_index.md
new file mode 100644
index 0000000000..70fb471890
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/4-configure-database-collector/_index.md
@@ -0,0 +1,73 @@
+---
+title: Database Collector ã®èšå®
+time: 2 minutes
+weight: 4
+description: ãã®æŒç¿ã§ã¯ãã³ã³ãããŒã©ãŒã«ã¢ã¯ã»ã¹ããDatabase Collector ãèšå®ããDatabase Collector ãããŒã¿ãåéããŠããããšã確èªããŸãã
+---
+
+## Database Collector ã®èšå®
+
+Database Agent Collector ã¯ãDatabase Agent å
ã§å®è¡ãããããŒã¿ããŒã¹ã€ã³ã¹ã¿ã³ã¹ããã³ããŒã¿ããŒã¹ãµãŒããŒã«é¢ããããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãåéããããã»ã¹ã§ãã1 ã€ã® Collector 㯠1 ã€ã®ããŒã¿ããŒã¹ã€ã³ã¹ã¿ã³ã¹ã®ã¡ããªã¯ã¹ãåéããŸãã1 ã€ã® Database Agent å
ã§è€æ°ã® Collector ãå®è¡ã§ããŸããDatabase Agent ãã³ã³ãããŒã©ãŒã«æ¥ç¶ããããšãã³ã³ãããŒã©ãŒäžã§ 1 ã€ä»¥äžã® Collector ãèšå®ã§ããŸãã
+
+ãã®æŒç¿ã§ã¯ã次ã®ã¿ã¹ã¯ãå®è¡ããŸãã
+
+- Web ãã©ãŠã¶ãã AppDynamics ã³ã³ãããŒã©ãŒã«ã¢ã¯ã»ã¹ãã
+- ã³ã³ãããŒã©ãŒã§ Database Collector ãèšå®ãã
+- Database Collector ãããŒã¿ãåéããŠããããšã確èªãã
+
+## ã³ã³ãããŒã©ãŒãžã®ãã°ã€ã³
+
+Cisco ã®èªèšŒæ
å ±ã䜿çšããŠã[AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã«ãã°ã€ã³ããŸãã
+
+## ã³ã³ãããŒã©ãŒã§ã® Database Collector ã®èšå®
+
+æ¬¡ã®æé ã§ãã¯ãšãªãªãã©ã«ã®èšå®ã倿ŽããCollector ã®èšå®ç»é¢ã«ç§»åããŸãã
+
+1. å·ŠåŽã®ã¡ãã¥ãŒã§ **Databases** ã¿ããã¯ãªãã¯ããŸãã
+2. å·Šäžã® **Configuration** ã¿ããã¯ãªãã¯ããŸãã
+3. **Remove literals from the queries** ã®ãã§ãã¯ããã¯ã¹ããªãã«ããŸãã
+4. **Collectors** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+
+
+
+æ¬¡ã®æé ã§ãæ°ãã Database Collector ãèšå®ããŸãã
+
+1. **Add** ãã¿ã³ãã¯ãªãã¯ããŸãã
+2. ããŒã¿ããŒã¹ã¿ã€ããšã㊠**MySQL** ãéžæããŸãã
+3. ããŒã¿ããŒã¹ãšãŒãžã§ã³ããšã㊠**DBMon-Lab-Agent** ãéžæããæ¬¡ã®ãã©ã¡ãŒã¿ãå
¥åããŸãã
+4. Collector Name: **Supercar-MySQL-YOURINITIALS**
+5. Hostname or IP Address: **localhost**
+6. Listener Port: **3306**
+
+
+
+1. Username: **root**
+2. Password: **Welcome1!**
+
+
+
+1. **Advanced Options** ã®äžã«ãã **Monitor Operating System** ãã§ãã¯ããã¯ã¹ãéžæããŸãã
+2. ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšã㊠**Linux** ãéžæããæ¬¡ã®ãã©ã¡ãŒã¿ãå
¥åããŸãã
+3. SSH Port: **22**
+4. Username: **splunk**
+5. Password: **ã€ã³ã¹ãã©ã¯ã¿ãŒããæäŸããããEC2 ã€ã³ã¹ã¿ã³ã¹ãž SSH æ¥ç¶ããããã®ãã¹ã¯ãŒã**
+6. **OK** ãã¯ãªãã¯ã㊠Collector ãä¿åããŸãã
+
+
+
+## Database Collector ãããŒã¿ãåéããŠããããšã®ç¢ºèª
+
+Collector ãå®è¡ããããŒã¿ãéä¿¡ããããŸã§ 10 åéåŸ
æ©ããæ¬¡ã®æé ã§ Database Collector ãããŒã¿ããŒã¹ã«æ¥ç¶ããŠããŒã¿ããŒã¹ã¡ããªã¯ã¹ãåéããŠããããšã確èªããŸãã
+
+1. å·ŠåŽã®ã¡ãã¥ãŒã§ **Databases** ã¿ããã¯ãªãã¯ããŸã
+2. åã®ã»ã¯ã·ã§ã³ã§äœæãã Collector ãæ€çŽ¢ããŸã: **Supercar-MySQL-YOURINITIALS**
+3. ã¹ããŒã¿ã¹ãç·è²ã§ããããšã©ãŒã衚瀺ãããŠããªãããšã確èªããŸãã
+4. Supercar-MySQL ã®ãªã³ã¯ãã¯ãªãã¯ããŠãããŒã¿ããŒã¹ã®è©³çްã衚瀺ããŸãã
+
+_泚: Collector ãèšå®ããŠãã Top 10 SQL Wait States ã Queries ã¿ãã®åã¯ãšãªã衚瀺ããããŸã§ã«ãæå€§ 18 åãããå ŽåããããŸãã_
+
+
+
+
+
+Database Collector ã®èšå®ã«ã€ããŠè©³ããã¯ã[ãã¡ã](https://docs.appdynamics.com/appd/24.x/latest/en/database-visibility/add-database-collectors) ãåç
§ããŠãã ãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/5-monitor-and-troubleshoot-option-1/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/5-monitor-and-troubleshoot-option-1/_index.md
new file mode 100644
index 0000000000..08e40aa14c
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/5-monitor-and-troubleshoot-option-1/_index.md
@@ -0,0 +1,102 @@
+---
+title: Monitor and Troubleshoot - Part 1
+time: 2 minutes
+weight: 4
+description: ãã®æŒç¿ã§ã¯ãããŒã¿ããŒã¹ãšãµãŒããŒå
šäœã®ããã·ã¥ããŒãã確èªããã¡ã€ã³ã®ããã·ã¥ããŒãã確èªããããŒã¿ããŒã¹ã¢ã¯ãã£ããã£ãŠã£ã³ããŠã®ã¬ããŒãã確èªããŸãã
+---
+
+## Monitor and Troubleshoot - Part 1
+
+ãã®æŒç¿ã§ã¯ã以äžã®ã¿ã¹ã¯ãå®è¡ããŸãã
+
+- Overall Database and Server Performance Dashboard ã確èªãã
+- Main Database Dashboard ã確èªãã
+- Database Activity Window ã®ã¬ããŒãã確èªãã
+
+## Overall Database and Server Performance Dashboard ã確èªãã
+
+Overall Database and Server Performance Dashboard ã䜿çšãããšãåããŒã¿ããŒã¹ã®å¥å
šæ§ãäžç®ã§çŽ æ©ã確èªã§ããŸãã
+
+1. Filters: ãã«ã¹ãè² è·ãããŒã¿ããŒã¹å
ã®æéããŸãã¯ã¿ã€ãã«ãã£ãŠãã£ã«ã¿ãªã³ã°ãããªãã·ã§ã³ãæ¢çŽ¢ã§ããŸãã
+2. Actions: ãã®ãŠã£ã³ããŠã®ããŒã¿ã .csv 圢åŒã®ãã¡ã€ã«ã«ãšã¯ã¹ããŒãããŸãã
+3. View Options: ã¹ããŒã¯ãã£ãŒãã®ãªã³/ãªããåãæ¿ããŸãã
+4. View: ã«ãŒããã¥ãŒãšãªã¹ããã¥ãŒãåãæ¿ããŸãã
+5. Sort: äžŠã¹æ¿ããªãã·ã§ã³ã衚瀺ããŸãã
+6. Supercar-MySQL: ã¡ã€ã³ã®ããŒã¿ããŒã¹ããã·ã¥ããŒãã«ããªã«ããŠã³ããŸãã
+
+
+
+## Main Database Dashboard ã確èªãã
+
+ã¡ã€ã³ã®ããŒã¿ããŒã¹ããã·ã¥ããŒãã§ã¯ã以äžãå«ãããŒã¿ããŒã¹ã®äž»èŠãªæ
å ±ã確èªã§ããŸãã
+
+- ããŒã¿ããŒã¹ãå®è¡ããŠãããµãŒããŒã®å¥å
šæ§ã
+- æå®ãããæéäžã®ã³ãŒã«ã®ç·æ°ã
+- ä»»æã®æç¹ã®ã³ãŒã«æ°ã
+- æå®ãããæéäžã« SQL ã¹ããŒãã¡ã³ãã®å®è¡ã«è²»ããããåèšæéã
+- äžäœ 10 ä»¶ã®ã¯ãšãªåŸ
æ©ç¶æ
ã
+- å¹³åæ¥ç¶æ°ã
+- ããŒã¿ããŒã¹ã®ã¿ã€ããŸãã¯ãã³ããŒã
+- ããã·ã¥ããŒãã®æ©èœãæ¢çŽ¢ããŸãã
+
+1. ãã«ã¹ã¹ããŒã¿ã¹ã®åãã¯ãªãã¯ããŠããµãŒããŒã®å¥å
šæ§ã®è©³çްã確èªããŸãã
+
+- Green: ãµãŒããŒã¯æ£åžžã§ãã
+- Yellow: èŠåã¬ãã«ã®éåããããµãŒããŒã
+- Red: é倧ã¬ãã«ã®éåããããµãŒããŒã
+
+1. ããŒã¿ããŒã¹ã®ã¿ã€ããŸãã¯ãã³ããŒã¯åžžã«ããã«è¡šç€ºãããŸãã
+2. æå®ãããæéäžã« SQL ã¹ããŒãã¡ã³ãã®å®è¡ã«è²»ããããåèšæéã確èªããŸãã
+3. æå®ãããæéäžã®å®è¡ã®ç·æ°ã確èªããŸãã
+4. ãã£ãŒãã®æç³»åã«ã«ãŒãœã«ãåããããšãèšé²ãããã¡ããªã¯ã¹ã®è©³çްã確èªã§ããŸãã
+
+ããŒã¿ãã€ã³ãã®äžéšã«ãããªã¬ã³ãžè²ã®åãã¯ãªãã¯ãããšãéžæããæå»ã® 15 ååãã 15 ååŸãŸã§ã®ã¯ãšãªå®è¡æéãšåŸ
æ©ç¶æ
ã瀺ãæéæ¯èŒã¬ããŒãã衚瀺ãããŸãã
+
+1. ããŠã¹ã®å·Šãã¿ã³ãæŒãããŸãŸå·Šããå³ã«ãã©ãã°ããŠããã£ãŒãã§èŠãããã¹ãã€ã¯ããã€ã©ã€ãããŸãã
+2. èšå®ãã¿ã³ãã¯ãªãã¯ããŠãäžèŠãªåŸ
æ©ç¶æ
ãäžäœ 10 ä»¶ããé€å€ããŸãã
+3. ååŸ
æ©ç¶æ
ã®ã©ãã«ã«ã«ãŒãœã«ãåããããšããã詳现ãªèª¬æã衚瀺ãããŸãã
+4. éžæããæéäžã«ã¯ãšãªãå®è¡ããŠãããã¢ã¯ãã£ããªæ¥ç¶ã®å¹³åæ°ã確èªããŸãã
+
+
+
+éžæããæéã® DB ãµãŒããŒã® OS ã¡ããªã¯ã¹ã衚瀺ããã«ã¯ã以äžãè¡ããŸãã
+
+1. å³åŽã®ã¹ã¯ããŒã«ããŒã䜿ã£ãŠããã·ã¥ããŒãã®äžçªäžãŸã§ã¹ã¯ããŒã«ããŸã
+2. CPU
+3. Memory
+4. Disk IO
+5. Network IO
+
+
+
+## Database Activity Window ã®ã¬ããŒãã確èªãã
+
+Database Visibility ã® Database Activity Window ã§ã¯ãæå€§ 9 çš®é¡ã®ç°ãªãã¬ããŒããå©çšã§ããŸããå©çšå¯èœãªã¬ããŒãã¯ãç£èŠå¯Ÿè±¡ã®ããŒã¿ããŒã¹ãã©ãããã©ãŒã ã«ãã£ãŠç°ãªããŸãããã®æŒç¿ã§ã¯ãæãäžè¬ç㪠3 ã€ã®ã¬ããŒãã確èªããŸãã
+
+- Wait State Report
+- Top Activity Report
+- Query Wait State Report
+
+## Wait State Report
+
+ãã®ã¬ããŒãã¯ãããŒã¿ããŒã¹å
ã® Wait Events (states) ã®æç³»åããŒã¿ã衚瀺ããŸããããããç°ãªãåŸ
æ©ã¯è²åããããY 軞ã«ã¯ç§åäœã®æéã衚瀺ãããŸãããã®ã¬ããŒãã§ã¯ãããŒã¿ã衚圢åŒã§ã衚瀺ããå SQL ã¹ããŒãã¡ã³ãã®ååŸ
æ©ç¶æ
ã«è²»ããããæéããã€ã©ã€ã衚瀺ããŸãã
+
+æãæéãæ¶è²»ããŠããåŸ
æ©ç¶æ
ã¯ãããã©ãŒãã³ã¹ã®ããã«ããã¯ã瀺ããŠããå¯èœæ§ããããŸããããšãã°ãdb file sequential reads ã¯ãã€ã³ããã¯ã¹ã®ã»ã°ã¡ã³ãããããŒç«¶åããã£ã¹ã¯ç«¶åã«ãã£ãŠçºçããå¯èœæ§ããããŸãã
+
+
+
+## Top Activity Report
+
+ãã®ã¬ããŒãã¯ãããŒã¿ããŒã¹å
ã§æéãèŠããŠããäžäœã® SQL ã¹ããŒãã¡ã³ããæç³»åãã¥ãŒã§è¡šç€ºããŸãããã®ã¬ããŒãã§ã¯ãããŒã¿ã衚圢åŒã§ã衚瀺ããäžäœ 10 ä»¶ã® SQL ã¹ããŒãã¡ã³ãããšã«ããŒã¿ããŒã¹å
ã§è²»ããããæéããã€ã©ã€ã衚瀺ããŸãã
+
+ãã®ã¬ããŒãã䜿çšããŠãã©ã® SQL ã¹ããŒãã¡ã³ããæãå€ãã®ããŒã¿ããŒã¹æéã䜿çšããŠãããã確èªããŸããããã«ãããç¹å®ã® SQL ã¹ããŒãã¡ã³ããã·ã¹ãã å
šäœã®ããã©ãŒãã³ã¹ã«äžãã圱é¿ã倿ã§ããããŒã¿ããŒã¹ããã©ãŒãã³ã¹ãžã®åœ±é¿ãæã倧ããã¹ããŒãã¡ã³ãã«ãã¥ãŒãã³ã°äœæ¥ãéäžãããããšãã§ããŸãã
+
+
+
+## Query Wait State Report
+
+ãã®ã¬ããŒãã¯ãäžäœ (10ã50ã100ã200) ã®ã¯ãšãªã®åŸ
æ©æéã衚瀺ããŸãããã®ã¬ããŒãã§ã¯ãããŒã¿ã衚圢åŒã§ã衚瀺ããåã¯ãšãªãããŸããŸãªåŸ
æ©ç¶æ
ã«è²»ãããŠããæéããã€ã©ã€ã衚瀺ããŸããåã䜿ã£ãŠãç°ãªãåŸ
æ©ç¶æ
ã§ã¯ãšãªãäžŠã¹æ¿ããããšãã§ããŸãã
+
+Database Activity Window ã®ã¬ããŒãã®è©³çްã«ã€ããŠã¯ã[ãã¡ã](https://help.splunk.com/en/appdynamics-on-premises/database-visibility/25.4.0/monitor-databases-and-database-servers/monitor-database-performance/database-activity-window/features-of-the-database-activity-windows) ãåç
§ããŠãã ããã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/6-monitor-and-troubleshoot-option-2/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/6-monitor-and-troubleshoot-option-2/_index.md
new file mode 100644
index 0000000000..d02abb6155
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/6-monitor-and-troubleshoot-option-2/_index.md
@@ -0,0 +1,77 @@
+---
+title: Monitor and Troubleshoot - Part 2
+weight: 5
+description: ãã®æŒç¿ã§ã¯ãQueries ããã·ã¥ããŒãã確èªããã³ã¹ãã®é«ãã¯ãšãªã®è©³çްã確èªããã³ã¹ãã®é«ãã¯ãšãªã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¡ããŸãã
+---
+
+## Queries ããã·ã¥ããŒãã確èªãã
+
+Queries ç»é¢ã«ã¯ãããŒã¿ããŒã¹ã§æãæéãæ¶è²»ããŠãã SQL ã¹ããŒãã¡ã³ããšã¹ãã¢ãããã·ãŒãžã£ã衚瀺ãããŸããã¯ãšãªã®éã¿ä»ãã SQL åŸ
æ©æéãªã©ã®ä»ã®ã¡ããªã¯ã¹ãšæ¯èŒããããšã§ããã¥ãŒãã³ã°ãå¿
èŠãª SQL ãç¹å®ã§ããŸãã
+
+1. **Queries** ã¿ã: queries ç»é¢ã衚瀺ããŸãã
+2. **Top Queries** ããããããŠã³: äžäœ 5ã10ã100ã200 ä»¶ã®ã¯ãšãªã衚瀺ããŸãã
+3. **Filter by Wait States**: åŸ
æ©ç¶æ
ãéžæã㊠Query ãªã¹ãããã£ã«ã¿ãªã³ã°ã§ããŸãã
+4. **Group Similar**: åãæ§æã®ã¯ãšãªãã°ã«ãŒãåããŸãã
+5. æå€§ã® **Weight (%)** ã䜿çšããŠããã¯ãšãªãã¯ãªãã¯ããŸãã
+6. **View Query Details**: ã¯ãšãªã®è©³çްãæãäžããŸãã
+
+
+
+## ã³ã¹ãã®é«ãã¯ãšãªã®è©³çްã確èªãã
+
+Database Queries ç»é¢ã§ããŒã¿ããŒã¹å
ã§æãå€ãã®æéãè²»ãããŠããã¹ããŒãã¡ã³ããç¹å®ãããããããã® SQL ã¹ããŒãã¡ã³ãã®ãã¥ãŒãã³ã°ã«åœ¹ç«ã€è©³çްãããã«æãäžããããšãã§ããŸããããŒã¿ããŒã¹ã€ã³ã¹ã¿ã³ã¹ã® Query Details ç»é¢ã«ã¯ãDatabase Queries ç»é¢ã§éžæããã¯ãšãªã®è©³çްã衚瀺ãããŸãã
+
+1. **Resource consumption over time**: ã¯ãšãªããªãœãŒã¹ã䜿çšããŠããŒã¿ããŒã¹å
ã§è²»ãããæéãå®è¡åæ°ãæ¶è²»ãã CPU æéã衚瀺ããŸãã
+2. **Wait states**: éžæãã SQL ã¹ããŒãã¡ã³ãã®ããŒã¿ããŒã¹åŠçã«ãããæéã«å¯äžããã¢ã¯ãã£ããã£ã§ããæãæéãæ¶è²»ããŠããåŸ
æ©ç¶æ
ã¯ãããã©ãŒãã³ã¹ã®ããã«ããã¯ã瀺ããŠããå¯èœæ§ããããŸãã
+3. **Components Executing Similar Queries**: ãã®ã¯ãšãªãšé¡äŒŒããã¯ãšãªãå®è¡ãã Node ã衚瀺ããŸãã
+4. **Business Transactions Executing Similar Queries**: ãã®ã¯ãšãªãšé¡äŒŒããã¯ãšãªãå®è¡ãã Java ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã衚瀺ããŸãã
+
+
+
+1. å³åŽã®å€åŽã®ã¹ã¯ããŒã«ããŒã䜿çšããŠäžã«ã¹ã¯ããŒã«ããŸãã
+2. **Clients**: éžæãã SQL ã¹ããŒãã¡ã³ããå®è¡ãããã·ã³ãšãåãã·ã³ãã¹ããŒãã¡ã³ãã®å®è¡ã«èŠããåèšæéã«å¯Ÿããå²åã衚瀺ããŸãã
+3. **Sessions**: åããŒã¿ããŒã¹ã€ã³ã¹ã¿ã³ã¹äœ¿çšã®ã»ãã·ã§ã³ã§ãã
+4. **Query Active in Database**: ãã® SQL ã«ãã£ãŠã¢ã¯ã»ã¹ãããã¹ããŒãã衚瀺ããŸãã
+5. **Users**: ãã®ã¯ãšãªãå®è¡ãããŠãŒã¶ãŒã衚瀺ããŸãã
+6. **Query Hashcode**: ã¯ãšãªã®äžæã® ID ã衚瀺ããŸããããã«ãããããŒã¿ããŒã¹ãµãŒããŒããã£ãã·ã¥å
ã§ãã® SQL ã¹ããŒãã¡ã³ããããè¿
éã«æ€çŽ¢ã§ããŸãã
+7. **Query**: éžæãã SQL ã¹ããŒãã¡ã³ãã®æ§æå
šäœã衚瀺ããŸããQuery ã«ãŒãã®å³äžã«ããéçã¢ã€ã³ã³ãã¯ãªãã¯ããŠãèå¥ããããããã«ã¯ãšãªåãç·šéã§ããŸãã
+8. **Execution Plan**: ã¯ãšãªå®è¡èšç»ãŠã£ã³ããŠã衚瀺ããŸãã
+
+
+
+## ã³ã¹ãã®é«ãã¯ãšãªã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+
+Database Query Execution Plan ç»é¢ã¯ãã¯ãšãªã«ãšã£ãŠæãå¹ççãªå®è¡èšç»ã倿ããã®ã«åœ¹ç«ã¡ãŸããåé¡ã®ããå¯èœæ§ãããã¯ãšãªãçºèŠããããEXPLAIN PLAN ã¹ããŒãã¡ã³ããå®è¡ããŠãããŒã¿ããŒã¹ãäœæããå®è¡èšç»ã確èªã§ããŸãã
+
+ã¯ãšãªã®å®è¡èšç»ã§ã¯ãã¯ãšãªãã€ã³ããã¯ã¹ã®äœ¿çšãæé©åããå¹ççã«å®è¡ãããŠãããã©ãããæããã«ãªããŸãããã®æ
å ±ã¯ãå®è¡ãé
ãã¯ãšãªã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«åœ¹ç«ã¡ãŸãã
+
+1. **Execution Plan** ã¿ããã¯ãªãã¯ããŸãã
+2. **Type** åã®çµåã¿ã€ããåããŒãã«ã§ ALL ã«ãªã£ãŠããããšã«æ³šç®ããŠãã ããã
+3. çµåã¿ã€ãã® 1 ã€ã«ããŠã¹ãªãŒããŒããŠãçµåã¿ã€ãã®èª¬æã確èªããŸãã
+4. **Extras** åã®ãšã³ããªã調ã¹ãŸãã
+5. åãšã³ããªã«ããŠã¹ãªãŒããŒããŠããšã³ããªã®èª¬æã確èªããŸãã
+
+
+
+次ã«ãObject Browser ã䜿çšããŠããŒãã«ã®ã€ã³ããã¯ã¹ã調æ»ããŸãã
+
+1. **Object Browser** ãªãã·ã§ã³ãã¯ãªãã¯ããŠãããŒãã«ã®ã¹ããŒãã®è©³çްã衚瀺ããŸãã
+2. **Database** ãªãã·ã§ã³ãã¯ãªãã¯ããŸãã
+3. **supercars** ã¹ããŒããã¯ãªãã¯ããŠãããŒãã«ã®ãªã¹ããå±éããŸãã
+4. **CARS** ããŒãã«ãã¯ãªãã¯ããŠãããŒãã«ã®è©³çްã確èªããŸãã
+5. CAR_ID åãäž»ããŒãšããŠå®çŸ©ãããŠããããšãããããŸãã
+
+
+
+1. å€åŽã®ã¹ã¯ããŒã«ããŒã䜿çšããŠããŒãžãäžã«ã¹ã¯ããŒã«ããŸãã
+2. ããŒãã«ã«å®çŸ©ãããäž»ããŒã€ã³ããã¯ã¹ã«æ³šç®ããŠãã ããã
+
+
+
+1. **MANUFACTURER** ããŒãã«ãã¯ãªãã¯ããŠããã®è©³çްã衚瀺ããŸãã
+2. **MANUFACTURER_ID** åãäž»ããŒãšããŠå®çŸ©ãããŠããªãããšã«æ³šç®ããŠãã ããã
+3. ããŒãžãäžã«ã¹ã¯ããŒã«ãããšãããŒãã«ã«ã€ã³ããã¯ã¹ãå®çŸ©ãããŠããªãããšãããããŸãã
+
+
+
+ããŒãã«ã«å¯Ÿããã¯ãšãªã®ããã©ãŒãã³ã¹ãåäžãããããã«ã¯ãMANUFACTURER_ID åã«ã€ã³ããã¯ã¹ãäœæããå¿
èŠããããŸããå¥ã®ã¯ãšãªãåæããå Žåãæ ¹æ¬çãªåé¡ã¯ç°ãªããããããŸãããããã®ã©ãã§ç€ºãããæãäžè¬çãªåé¡ã¯ãã¯ãšãªã MANUFACTURER ããŒãã«ãšã®çµåãå®è¡ããŠãããããã®ããŒãã«ãçŽæ¥ã¯ãšãªããŠããããšã«èµ·å ããŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/_index.md
new file mode 100644
index 0000000000..5fc16f24e0
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/5-database-monitoring/_index.md
@@ -0,0 +1,39 @@
+---
+title: Database Monitoring
+time: 2 minutes
+weight: 5
+description: ãã®ã©ãã§ã¯ãAppDynamics Database Visibility Monitoring ã«ã€ããŠåŠç¿ããŸãã
+---
+
+## ç®ç
+
+ãã®ã©ãã§ã¯ãAppDynamics Database Visibility Monitoring ã«ã€ããŠåŠç¿ããŸãã
+
+ãã®ã©ããå®äºãããšã次ã®ããšãã§ããããã«ãªããŸãã
+
+- AppDynamics Database Visibility Agent ãããŠã³ããŒãããã
+- AppDynamics Database Visibility Agent ãã€ã³ã¹ããŒã«ããã
+- Controller ã§ Database Collector ãæ§æããã
+- ããŒã¿ããŒã¹ã®ãã«ã¹ç¶æ
ãç£èŠããã
+- ããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹åé¡ããã©ãã«ã·ã¥ãŒãããã
+
+## ã¯ãŒã¯ã·ã§ããç°å¢
+
+ã©ãç°å¢ã«ã¯ 2 å°ã®ãã¹ãããããŸãã
+
+- 1 å°ç®ã®ãã¹ãã§ã¯ AppDynamics Controller ã皌åããŠããã以éãã®ãã¹ãã Controller ãšåŒã³ãŸãã
+- 2 å°ç®ã®ãã¹ãã§ã¯ã©ãã§äœ¿çšãã Supercar Trader ã¢ããªã±ãŒã·ã§ã³ã皌åããŠããŸããAppDynamics ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ãããã¹ãã§ããã以éãã®ãã¹ãã Application VM ãšåŒã³ãŸãã
+
+## Controller VM
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ [AppDynamics SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã䜿çšããŸãã
+
+
+
+## Application VM
+
+Supercar Trader 㯠Java ããŒã¹ã® Web ã¢ããªã±ãŒã·ã§ã³ã§ãã
+
+Supercar-Trader collection ã®ç®çã¯ãAppDynamics Controller åãã«åçãªãã©ãã£ãã¯ïŒããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ïŒãçæããããšã§ãã
+
+
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/1-prerequisites.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/1-prerequisites.md
new file mode 100644
index 0000000000..df06e47970
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/1-prerequisites.md
@@ -0,0 +1,95 @@
+---
+title: 1. åææ¡ä»¶
+weight: 1
+---
+
+ãªã¢ãŒããã¹ããžã® Smart Agent ã®ã€ã³ã¹ããŒã«ãéå§ããåã«ã以äžã®åææ¡ä»¶ãæŽã£ãŠããããšã確èªããŠãã ããã
+
+## å¿
èŠãªã¢ã¯ã»ã¹æš©
+
+- **SSH ã¢ã¯ã»ã¹**: Smart Agent ãã€ã³ã¹ããŒã«ããäºå®ã®ãã¹ãŠã®ãªã¢ãŒããã¹ãã«å¯Ÿã㊠SSH ã¢ã¯ã»ã¹ãå¿
èŠã§ã
+- **SSH ç§å¯éµ**: èªèšŒçšã«æ§æããã SSH ç§å¯éµ
+- **sudo æš©é**: ã³ã³ãããŒã«ããŒãã®ãŠãŒã¶ãŒã« smartagentctl ãå®è¡ããããã® sudo æš©éãå¿
èŠã§ã
+- **ãªã¢ãŒã SSH**: ãªã¢ãŒããã¹ãã§ SSH ãæå¹åãããã¢ã¯ã»ã¹å¯èœã§ããå¿
èŠããããŸã
+
+## ãã£ã¬ã¯ããªæ§é
+
+Smart Agent ã®ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªã¯ãã³ã³ãããŒã«ããŒãäžã«é
眮ããå¿
èŠããããŸãã
+
+```bash
+cd /home/ubuntu/appdsm
+```
+
+ãã£ã¬ã¯ããªã«ã¯ä»¥äžãå«ãŸããŸãã
+
+- `smartagentctl` - SmartAgent ã管çããããã®ã³ãã³ãã©ã€ã³ãŠãŒãã£ãªãã£
+- `smartagent` - SmartAgent ã®ãã€ããª
+- `config.ini` - ã¡ã€ã³æ§æãã¡ã€ã«
+- `remote.yaml` - ãªã¢ãŒããã¹ãæ§æãã¡ã€ã«
+- `conf/` - 远å ã®æ§æãã¡ã€ã«
+- `lib/` - å¿
èŠãªã©ã€ãã©ãª
+
+## AppDynamics ã¢ã«ãŠã³ãæ
å ±
+
+AppDynamics ã¢ã«ãŠã³ããã以äžã®æ
å ±ãå¿
èŠã§ãã
+
+- **Controller URL**: AppDynamics SaaS ã³ã³ãããŒã©ãŒã®ãšã³ããã€ã³ãïŒäŸ: `fso-tme.saas.appdynamics.com`ïŒ
+- **Account Name**: AppDynamics ã®ã¢ã«ãŠã³ãå
+- **Account Access Key**: AppDynamics ã®ã¢ã«ãŠã³ãã¢ã¯ã»ã¹ããŒ
+- **Controller Port**: é垞㯠HTTPS æ¥ç¶çšã® 443
+
+## ã¿ãŒã²ãããã¹ãã®èŠä»¶
+
+ãªã¢ãŒããã¹ãã¯ä»¥äžã®èŠä»¶ãæºãããŠããå¿
èŠããããŸãã
+
+- **ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã **: Ubuntu/Linux ããŒã¹ã®ã·ã¹ãã
+- **SSH ãµãŒããŒ**: SSH ããŒã¢ã³ãèµ·åããŠãããæ¥ç¶ãåãä»ããŠãã
+- **ãŠãŒã¶ãŒã¢ã«ãŠã³ã**: é©åãªæš©éãæã€ãŠãŒã¶ãŒã¢ã«ãŠã³ãïŒé垞㯠rootïŒ
+- **ãããã¯ãŒã¯ã¢ã¯ã»ã¹**: AppDynamics Controller ã«å°éå¯èœã§ããããš
+- **ãã£ã¹ã¯å®¹é**: Smart Agent ã®ã€ã³ã¹ããŒã«ã«ååãªç©ºã容éïŒé垞㯠100MB æªæºïŒ
+
+## ã»ãã¥ãªãã£äžã®èæ
®äºé
+
+äœæ¥ãé²ããåã«ã以äžã®ã»ãã¥ãªãã£ã®ãã¹ããã©ã¯ãã£ã¹ã確èªããŠãã ããã
+
+1. **SSH éµ**: 匷å㪠SSH éµã䜿çšããïŒRSA 4096 ããããŸã㯠ED25519ïŒ
+2. **ã¢ã¯ã»ã¹ããŒ**: AccountAccessKey ãå®å
šã«ä¿ç®¡ãã
+3. **ãã¹ãéµã®æ€èšŒ**: æ¬çªç°å¢ã§ã¯ãã¹ãéµãæ€èšŒããèšç»ãç«ãŠã
+4. **SSL/TLS**: ã³ã³ãããŒã©ãŒãšã®éä¿¡ã«ã¯åžžã« SSL/TLS ã䜿çšãã
+5. **ãã°ãã¡ã€ã«**: æ©å¯æ
å ±ãå«ããã°ãã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ãå¶éãã
+
+## åææ¡ä»¶ã®ç¢ºèª
+
+### SSH æ¥ç¶æ§ã®ç¢ºèª
+
+ãªã¢ãŒããã¹ããžã® SSH æ¥ç¶ããã¹ãããŸãã
+
+```bash
+ssh -i /home/ubuntu/.ssh/id_rsa ubuntu@
+```
+
+### SSH éµã®ããŒããã·ã§ã³ç¢ºèª
+
+SSH éµã«é©åãªããŒããã·ã§ã³ãèšå®ãããŠããããšã確èªããŸãã
+
+```bash
+chmod 600 /home/ubuntu/.ssh/id_rsa
+```
+
+### ãããã¯ãŒã¯æ¥ç¶æ§ã®ç¢ºèª
+
+ãªã¢ãŒããã¹ãå士ãããã³ã€ã³ã¿ãŒãããã«å°éã§ããããšã確èªããŸãã
+
+```bash
+ping
+```
+
+### sudo ã¢ã¯ã»ã¹ã®ç¢ºèª
+
+sudo æš©éãããããšã確èªããŸãã
+
+```bash
+sudo -v
+```
+
+ãã¹ãŠã®åææ¡ä»¶ãæºããããŠããã°ãæ§æã®ã¹ãããã«é²ãæºåãæŽã£ãŠããŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/2-configuration.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/2-configuration.md
new file mode 100644
index 0000000000..7bc4806d7f
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/2-configuration.md
@@ -0,0 +1,310 @@
+---
+title: 2. èšå®
+weight: 2
+---
+
+Smart Agent ã®ãªã¢ãŒãã€ã³ã¹ããŒã«ã«ã¯ã2 ã€ã®äž»èŠãªèšå®ãã¡ã€ã«ãå¿
èŠã§ããSmart Agent ã®èšå®çšã® `config.ini` ãšããªã¢ãŒããã¹ãããã³æ¥ç¶ãã©ã¡ãŒã¿ãå®çŸ©ãã `remote.yaml` ã§ãã
+
+## èšå®ãã¡ã€ã«ã®æŠèŠ
+
+äž¡æ¹ã®èšå®ãã¡ã€ã«ã¯ Smart Agent ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªå
ã«é
眮ããå¿
èŠããããŸãã
+
+```bash
+cd /home/ubuntu/appdsm
+```
+
+èšå®ãã 2 ã€ã®ãã¡ã€ã«ã¯æ¬¡ã®ãšããã§ãã
+
+- `config.ini` - ãã¹ãŠã®ãªã¢ãŒããã¹ãã«ãããã€ããã Smart Agent èšå®
+- `remote.yaml` - ãªã¢ãŒããã¹ãããã³ SSH æ¥ç¶èšå®
+
+## config.ini - Smart Agent ã®èšå®
+
+`config.ini` ãã¡ã€ã«ã«ã¯ããã¹ãŠã®ãªã¢ãŒããã¹ãã«ãããã€ããã Smart Agent ã®ã¡ã€ã³èšå®ãå«ãŸããŸãã
+
+**å Žæ:** `/home/ubuntu/appdsm/config.ini`
+
+### Controller ã®èšå®
+
+AppDynamics Controller ãžã®æ¥ç¶ãèšå®ããŸãã
+
+```ini
+ControllerURL = fso-tme.saas.appdynamics.com
+ControllerPort = 443
+FMServicePort = 443
+AccountAccessKey = your-access-key-here
+AccountName = your-account-name
+EnableSSL = true
+```
+
+**äž»èŠãªãã©ã¡ãŒã¿:**
+
+- `ControllerURL`: AppDynamics SaaS ã³ã³ãããŒã©ãŒã®ãšã³ããã€ã³ã
+- `ControllerPort`: ã³ã³ãããŒã©ãŒçšã® HTTPS ããŒã (ããã©ã«ã: 443)
+- `FMServicePort`: Flow Monitoring ãµãŒãã¹ã®ããŒã
+- `AccountAccessKey`: AppDynamics ã¢ã«ãŠã³ãã®ã¢ã¯ã»ã¹ããŒ
+- `AccountName`: AppDynamics ã¢ã«ãŠã³ãå
+- `EnableSSL`: SSL/TLS æå·åãæå¹å (æ¬çªç°å¢ã§ã¯ `true` ãæšå¥š)
+
+### å
±éèšå®
+
+ãšãŒãžã§ã³ãã®ã¢ã€ãã³ãã£ãã£ãšããŒãªã³ã°åäœãå®çŸ©ããŸãã
+
+```ini
+[CommonConfig]
+AgentName = smartagent
+PollingIntervalInSec = 300
+Tags = environment:production,region:us-east
+ServiceName = my-application
+```
+
+**ãã©ã¡ãŒã¿:**
+
+- `AgentName`: ãšãŒãžã§ã³ãã®ååèå¥å
+- `PollingIntervalInSec`: ãšãŒãžã§ã³ããããŒã¿ãããŒãªã³ã°ããé »åºŠ (ç§åäœ)
+- `Tags`: ãšãŒãžã§ã³ããåé¡ããããã®ã«ã¹ã¿ã ã¿ã° (ã«ã³ãåºåã)
+- `ServiceName`: è«ççãªã°ã«ãŒãåã®ããã®ãªãã·ã§ã³ã®ãµãŒãã¹å
+
+### Telemetry èšå®
+
+ãã®ã³ã°ãšãããã¡ã€ãªã³ã°ãèšå®ããŸãã
+
+```ini
+[Telemetry]
+LogLevel = DEBUG
+LogFile = /opt/appdynamics/appdsmartagent/log.log
+Profiling = false
+```
+
+**ãã©ã¡ãŒã¿:**
+
+- `LogLevel`: ãã®ã³ã°ã®è©³çŽ°åºŠ (`DEBUG`, `INFO`, `WARN`, `ERROR`)
+- `LogFile`: ãªã¢ãŒããã¹ãã§ãã°ãæžã蟌ãŸãããã¹
+- `Profiling`: ããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ã®æå¹å (`true`/`false`)
+
+### TLS ã¯ã©ã€ã¢ã³ãèšå®
+
+ãããã·ããã³ TLS ã®èšå®ãè¡ããŸãã
+
+```ini
+[TLSClientSetting]
+Insecure = false
+AgentHTTPProxy =
+AgentHTTPSProxy =
+AgentNoProxy =
+```
+
+**ãã©ã¡ãŒã¿:**
+
+- `Insecure`: TLS èšŒææžã®æ€èšŒãã¹ããã (æ¬çªç°å¢ã§ã¯éæšå¥š)
+- `AgentHTTPProxy`: HTTP ãããã·ãµãŒããŒã® URL (å¿
èŠãªå Žå)
+- `AgentHTTPSProxy`: HTTPS ãããã·ãµãŒããŒã® URL (å¿
èŠãªå Žå)
+- `AgentNoProxy`: ãããã·ããã€ãã¹ãããã¹ãã®ã«ã³ãåºåããªã¹ã
+
+### èªåæ€åº
+
+ã¢ããªã±ãŒã·ã§ã³ã®èªåæ€åºãèšå®ããŸãã
+
+```ini
+[AutoDiscovery]
+RunAutoDiscovery = false
+ExcludeLabels = process.cpu.usage,process.memory.usage
+ExcludeProcesses =
+ExcludeUsers =
+AutoDiscoveryTimeInterval = 4h
+AutoInstall = false
+```
+
+**ãã©ã¡ãŒã¿:**
+
+- `RunAutoDiscovery`: ã¢ããªã±ãŒã·ã§ã³ãèªåæ€åºãã (`true`/`false`)
+- `ExcludeLabels`: æ€åºããé€å€ããã¡ããªã¯ã¹
+- `ExcludeProcesses`: ç£èŠããé€å€ããããã»ã¹å
+- `ExcludeUsers`: ç£èŠããé€å€ãããŠãŒã¶ãŒã¢ã«ãŠã³ã
+- `AutoDiscoveryTimeInterval`: æ€åºãå®è¡ããé »åºŠ (äŸ: `4h`ã`30m`)
+- `AutoInstall`: æ€åºãããã¢ããªã±ãŒã·ã§ã³ãèªåã€ã³ã¹ããŒã«
+
+### ã¿ã¹ã¯èšå®
+
+ãã€ãã£ãã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ãèšå®ããŸãã
+
+```ini
+[TaskConfig]
+NativeEnable = true
+UserPortalUserName =
+UserPortalPassword =
+UserPortalAuth = none
+AutoUpdateLdPreload = true
+```
+
+**ãã©ã¡ãŒã¿:**
+
+- `NativeEnable`: ãã€ãã£ãã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ãæå¹å
+- `AutoUpdateLdPreload`: LD_PRELOAD èšå®ãèªåæŽæ°
+
+## remote.yaml - ãªã¢ãŒããã¹ãã®èšå®
+
+`remote.yaml` ãã¡ã€ã«ã§ã¯ãSmart Agent ãã€ã³ã¹ããŒã«ãããªã¢ãŒããã¹ããšæ¥ç¶ãã©ã¡ãŒã¿ãå®çŸ©ããŸãã
+
+**å Žæ:** `/home/ubuntu/appdsm/remote.yaml`
+
+### èšå®äŸ
+
+```yaml
+max_concurrency: 4
+remote_dir: "/opt/appdynamics/appdsmartagent"
+protocol:
+ type: ssh
+ auth:
+ username: ubuntu
+ private_key_path: /home/ubuntu/.ssh/id_rsa
+ privileged: true
+ ignore_host_key_validation: true
+ known_hosts_path: /home/ubuntu/.ssh/known_hosts
+hosts:
+ - host: "172.31.1.243"
+ port: 22
+ user: root
+ group: root
+ - host: "172.31.1.48"
+ port: 22
+ user: root
+ group: root
+ - host: "172.31.1.142"
+ port: 22
+ user: root
+ group: root
+ - host: "172.31.1.5"
+ port: 22
+ user: root
+ group: root
+```
+
+### ã°ããŒãã«èšå®
+
+**max_concurrency:** åæã«åŠçãããã¹ãã®æå€§æ°
+
+- ããã©ã«ã: `4`
+- 倿°ã®ãã¹ããžé«éã«ãããã€ããå Žåã¯å¢ãããŸã
+- ãããã¯ãŒã¯ããªãœãŒã¹ã®å¶çŽãããå Žåã¯æžãããŸã
+
+**remote_dir:** ãªã¢ãŒããã¹ãäžã®ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããª
+
+- ããã©ã«ã: `/opt/appdynamics/appdsmartagent`
+- 絶察ãã¹ã§ããå¿
èŠããããŸã
+- ãŠãŒã¶ãŒã«ã¯æžãèŸŒã¿æš©éãå¿
èŠã§ã
+
+### ãããã³ã«èšå®
+
+**type:** æ¥ç¶ãããã³ã«
+
+- å€: `ssh`
+
+**auth.username:** èªèšŒçšã® SSH ãŠãŒã¶ãŒå
+
+- äŸ: `ubuntu`ã`ec2-user`ã`centos`
+- ãªã¢ãŒããã¹ãã§èšå®ãããŠãããŠãŒã¶ãŒãšäžèŽããå¿
èŠããããŸã
+
+**auth.private_key_path:** SSH ç§å¯éµã®ãã¹
+
+- 絶察ãã¹ã§ããå¿
èŠããããŸã
+- éµã«ã¢ã¯ã»ã¹ã§ããé©åãªããŒããã·ã§ã³ (600) ãèšå®ãããŠããå¿
èŠããããŸã
+
+**auth.privileged:** ææ Œãããæš©éã§ãšãŒãžã§ã³ããå®è¡
+
+- `true`: root / systemd ãµãŒãã¹ãšããŠã€ã³ã¹ããŒã«
+- `false`: ãŠãŒã¶ãŒããã»ã¹ãšããŠã€ã³ã¹ããŒã«
+- æšå¥š: æ¬çªãããã€ã§ã¯ `true`
+
+**auth.ignore_host_key_validation:** SSH ãã¹ãããŒæ€èšŒãã¹ããã
+
+- `true`: æ€èšŒãã¹ããã (ãã¹ãã«äŸ¿å©)
+- `false`: ãã¹ãããŒãæ€èšŒ (æ¬çªç°å¢ã§æšå¥š)
+
+**auth.known_hosts_path:** SSH known_hosts ãã¡ã€ã«ã®ãã¹
+
+- ããã©ã«ã: `/home/ubuntu/.ssh/known_hosts`
+- ãã¹ãããŒæ€èšŒãæå¹ãªå Žåã«äœ¿çšãããŸã
+
+### ãã¹ãå®çŸ©
+
+åãã¹ããšã³ããªã«ã¯ä»¥äžãå¿
èŠã§ãã
+
+**host:** ãªã¢ãŒããã·ã³ã® IP ã¢ãã¬ã¹ãŸãã¯ãã¹ãå
+
+- IPv4ãIPv6ããŸãã¯ãã¹ãåã䜿çšå¯èœã§ã
+- å¶åŸ¡ããŒãããå°éå¯èœã§ããå¿
èŠããããŸã
+
+**port:** SSH ããŒã
+
+- ããã©ã«ã: `22`
+- SSH ãæšæºä»¥å€ã®ããŒãã§åäœããŠããå Žåã¯å€æŽããŸã
+
+**user:** Smart Agent ããã»ã¹ãææãããŠãŒã¶ãŒã¢ã«ãŠã³ã
+
+- ã·ã¹ãã å
šäœã®ã€ã³ã¹ããŒã«ã§ã¯éåžž `root`
+- ãŠãŒã¶ãŒåºæã®ã€ã³ã¹ããŒã«ã§ã¯äžè¬ãŠãŒã¶ãŒãæå®å¯èœ
+
+**group:** Smart Agent ããã»ã¹ãææããã°ã«ãŒã
+
+- éåžžã¯ãŠãŒã¶ãŒãšäžèŽããŸã (äŸ: `root`)
+
+### ãã¹ãã®è¿œå
+
+ãªã¢ãŒããã¹ãã远å ããã«ã¯ã`hosts` ãªã¹ãã«è¿œèšããŸãã
+
+```yaml
+hosts:
+ - host: "10.0.1.10"
+ port: 22
+ user: root
+ group: root
+ - host: "10.0.1.11"
+ port: 22
+ user: root
+ group: root
+```
+
+{{% notice title="ãã³ã" style="info" icon="info-circle" %}}
+å¿
èŠã«å¿ããŠä»»æã®æ°ã®ãã¹ãã远å ã§ããŸãã`max_concurrency` èšå®ã«ãã£ãŠäžŠååŠçããããã¹ãæ°ãå¶åŸ¡ãããŸãã
+{{% /notice %}}
+
+## èšå®ã®ç¢ºèª
+
+ã€ã³ã¹ããŒã«ã«é²ãåã«ãèšå®ãã¡ã€ã«ã確èªããŸãã
+
+### remote.yaml ã®ç¢ºèª
+
+```bash
+cat /home/ubuntu/appdsm/remote.yaml
+```
+
+次ã®ç¹ã確èªããŸãã
+
+- ãã¹ãŠã®ãã¹ã IP ã¢ãã¬ã¹ãæ£ããããš
+- SSH ããŒã®ãã¹ãæå¹ã§ããããš
+- ãªã¢ãŒããã£ã¬ã¯ããªã®ãã¹ãé©åã§ããããš
+
+### config.ini ã®ç¢ºèª
+
+```bash
+cat /home/ubuntu/appdsm/config.ini
+```
+
+次ã®ç¹ã確èªããŸãã
+
+- Controller URL ãšã¢ã«ãŠã³ãæ
å ±ãæ£ããããš
+- ãã°ãã¡ã€ã«ã®ãã¹ãæå¹ã§ããããš
+- èšå®ãç°å¢èŠä»¶ã«åèŽããŠããããš
+
+### YAML æ§æã®æ€èšŒ
+
+YAML ãã¡ã€ã«ãæ£ãããã©ãŒããããããŠããããšã確èªããŸãã
+
+```bash
+python3 -c "import yaml; yaml.safe_load(open('/home/ubuntu/appdsm/remote.yaml'))"
+```
+
+ã³ãã³ãããšã©ãŒãªãå®äºããã°ãYAML æ§æã¯æå¹ã§ãã
+
+èšå®ãã¡ã€ã«ã®æºåãå®äºããããã€ã³ã¹ããŒã«ã«é²ã¿ãŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/3-installation.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/3-installation.md
new file mode 100644
index 0000000000..a1084ac486
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/3-installation.md
@@ -0,0 +1,229 @@
+---
+title: 3. ã€ã³ã¹ããŒã«ãšèµ·å
+weight: 3
+---
+
+èšå®ãã¡ã€ã«ã®æºåãå®äºããã®ã§ã`smartagentctl` ã³ãã³ãã©ã€ã³ããŒã«ã䜿çšããŠãªã¢ãŒããã¹ãã« Smart Agent ãã€ã³ã¹ããŒã«ããŠèµ·åã§ããŸãã
+
+## ã€ã³ã¹ããŒã«ããã»ã¹ã®æŠèŠ
+
+ã€ã³ã¹ããŒã«ããã»ã¹ã«ã¯ä»¥äžãå«ãŸããŸãã
+
+1. **æ¥ç¶**: å®çŸ©ããããã¹ãŠã®ãã¹ãã«å¯Ÿã㊠SSH æ¥ç¶ã確ç«ããŸã
+2. **転é**: Smart Agent ã®ãã€ããªãšèšå®ããªã¢ãŒããã¹ãã«ã³ããŒããŸã
+3. **ã€ã³ã¹ããŒã«**: åãã¹ãã® `/opt/appdynamics/appdsmartagent/` ã« Smart Agent ãã€ã³ã¹ããŒã«ããŸã
+4. **èµ·å**: åãªã¢ãŒããã¹ãã§ Smart Agent ããã»ã¹ãèµ·åããŸã
+5. **ãã®ã³ã°**: ã³ã³ãœãŒã«ãšãã°ãã¡ã€ã«ã«è©³çްãªé²è¡ç¶æ³ãåºåããŸã
+
+## ã¹ããã 1: ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªãžã®ç§»å
+
+Smart Agent ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªã«ç§»åããŸãã
+
+```bash
+cd /home/ubuntu/appdsm
+```
+
+## ã¹ããã 2: èšå®ãã¡ã€ã«ã®ç¢ºèª
+
+ã€ã³ã¹ããŒã«ãéå§ããåã«ãèšå®ãã¡ã€ã«ãæ£ããã»ããã¢ãããããŠããããšã確èªããŸãã
+
+### ãªã¢ãŒããã¹ãèšå®ã®ç¢ºèª
+
+```bash
+cat remote.yaml
+```
+
+ãã¹ãŠã®ãã¹ã IP ã¢ãã¬ã¹ãããŒããSSH èšå®ãæ£ããããšã確èªããŠãã ããã
+
+### ãšãŒãžã§ã³ãèšå®ã®ç¢ºèª
+
+```bash
+cat config.ini
+```
+
+ã³ã³ãããŒã©ãŒã® URLãã¢ã«ãŠã³ãèªèšŒæ
å ±ããã®ä»ã®èšå®ãæ£ç¢ºã§ããããšã確èªããŠãã ããã
+
+## ã¹ããã 3: ãªã¢ãŒããã¹ãã§ã® Smart Agent ã®èµ·å
+
+`remote.yaml` ã§å®çŸ©ããããã¹ãŠã®ãªã¢ãŒããã¹ãã§ Smart Agent ãèµ·åããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash
+sudo ./smartagentctl start --remote --verbose
+```
+
+### ã³ãã³ãã®å
èš³
+
+- `sudo`: ç¹æš©æäœã«å¿
èŠã§ã
+- `./smartagentctl`: å¶åŸ¡ãŠãŒãã£ãªãã£ã§ã
+- `start`: Smart Agent ãèµ·åããã³ãã³ãã§ã
+- `--remote`: ãªã¢ãŒããã¹ããžãããã€ããŸãïŒ`remote.yaml` ããèªã¿èŸŒã¿ãŸãïŒ
+- `--verbose`: 詳现ãªãããã°ãã°ãæå¹ã«ããŸã
+
+{{% notice title="泚æ" style="warning" icon="triangle-exclamation" %}}
+`--verbose` ãã©ã°ã¯ãã€ã³ã¹ããŒã«ã®é²è¡ç¶æ³ã«é¢ãã詳现ãªåºåãæäŸããåé¡ã®ç¹å®ã«åœ¹ç«ã€ãããåŒ·ãæšå¥šãããŸãã
+{{% /notice %}}
+
+## ã¹ããã 4: ã€ã³ã¹ããŒã«ã®ç£èŠ
+
+`--verbose` ãã©ã°ã¯ã以äžãå«ã詳现ãªåºåãæäŸããŸãã
+
+- SSH æ¥ç¶ã¹ããŒã¿ã¹
+- ãã¡ã€ã«è»¢éã®é²è¡ç¶æ³
+- åãã¹ãã§ã®ã€ã³ã¹ããŒã«æé
+- ãšãŒãžã§ã³ãã®èµ·åã¹ããŒã¿ã¹
+- ãšã©ãŒãèŠå
+
+### æåŸ
ãããåºå
+
+次ã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+```
+Starting Smart Agent deployment to remote hosts...
+Connecting to 172.31.1.243:22...
+Connection successful: 172.31.1.243
+Transferring Smart Agent binaries...
+Installing Smart Agent on 172.31.1.243...
+Starting Smart Agent on 172.31.1.243...
+Smart Agent started successfully on 172.31.1.243
+
+Connecting to 172.31.1.48:22...
+...
+```
+
+## ã¹ããã 5: ã€ã³ã¹ããŒã«ã®ç¢ºèª
+
+ã€ã³ã¹ããŒã«ãå®äºãããããªã¢ãŒããã¹ãã§ Smart Agent ã皌åããŠããããšã確èªããŸãã
+
+### ãªã¢ãŒãã§ã®ã¹ããŒã¿ã¹ç¢ºèª
+
+status ã³ãã³ãã䜿çšããŠããã¹ãŠã®ãªã¢ãŒããã¹ãã確èªããŸãã
+
+```bash
+sudo ./smartagentctl status --remote --verbose
+```
+
+ããã«ãããåãã¹ãã«ã¯ãšãªãå®è¡ããSmart Agent ã皌åããŠãããã©ãããå ±åããŸãã
+
+### ã³ã³ãããŒã«ããŒãã§ã®ãã°ç¢ºèª
+
+ã³ã³ãããŒã«ããŒãã§ãã°ã衚瀺ããŸãã
+
+```bash
+tail -f /home/ubuntu/appdsm/log.log
+```
+
+### ãªã¢ãŒããã¹ããžã® SSH æ¥ç¶ã«ãã確èª
+
+ãªã¢ãŒããã¹ãã« SSH ã§æ¥ç¶ããŠãçŽæ¥ç¢ºèªããããšãã§ããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+tail -f /opt/appdynamics/appdsmartagent/log.log
+ps aux | grep smartagent
+```
+
+## 远å ã³ãã³ã
+
+### èµ·åããã«ã€ã³ã¹ããŒã«
+
+Smart Agent ãèµ·åããã«ã€ã³ã¹ããŒã«ããã«ã¯ã以äžãå®è¡ããŸãã
+
+```bash
+sudo ./smartagentctl install --remote --verbose
+```
+
+ããã¯ããã€ããªãšèšå®ãã³ããŒããŸããããšãŒãžã§ã³ãããã»ã¹ã¯èµ·åããŸããã
+
+### Smart Agent ã®åæ¢
+
+ãã¹ãŠã®ãªã¢ãŒããã¹ãã§ Smart Agent ã忢ããã«ã¯ã以äžãå®è¡ããŸãã
+
+```bash
+sudo ./smartagentctl stop --remote --verbose
+```
+
+### ã·ã¹ãã ãµãŒãã¹ãšããŠã®ã€ã³ã¹ããŒã«
+
+Smart Agent ã systemd ãµãŒãã¹ãšããŠã€ã³ã¹ããŒã«ããã«ã¯ïŒæ¬çªç°å¢ã§ã¯æšå¥šïŒã以äžãå®è¡ããŸãã
+
+```bash
+sudo ./smartagentctl start --remote --verbose --service
+```
+
+ãµãŒãã¹ãšããŠã€ã³ã¹ããŒã«ããå Žåã
+
+- Smart Agent ã¯ã·ã¹ãã èµ·åæã«èªåçã«éå§ããŸã
+- `systemctl` ã³ãã³ãã䜿çšããŠç®¡çã§ããŸã
+- ã·ã¹ãã ãã®ã³ã°ãšã®çµ±åãåäžããŸã
+
+### Smart Agent ã®ã¢ã³ã€ã³ã¹ããŒã«
+
+ãªã¢ãŒããã¹ããã Smart Agent ãå®å
šã«åé€ããã«ã¯ã以äžãå®è¡ããŸãã
+
+```bash
+sudo ./smartagentctl uninstall --remote --verbose
+```
+
+{{% notice title="èŠå" style="danger" icon="exclamation-triangle" %}}
+uninstall ã³ãã³ãã¯ããªã¢ãŒããã¹ããããã¹ãŠã® Smart Agent ãã¡ã€ã«ãåé€ããŸããéèŠãªèšå®ãã¡ã€ã«ããã°ãã¡ã€ã«ã®ããã¯ã¢ãããããããšã確èªããŠãã ããã
+{{% /notice %}}
+
+## AppDynamics Controller ã§ã®ç¢ºèª
+
+ãªã¢ãŒããã¹ãã§ Smart Agent ãèµ·åããåŸã
+
+1. **AppDynamics Controller ãžã®ãã°ã€ã³**: ã³ã³ãããŒã©ãŒã® URL ã«ç§»åããŸã
+2. **Servers ãžã®ç§»å**: Controller UI ã® Servers ã»ã¯ã·ã§ã³ã確èªããŸã
+3. **ãšãŒãžã§ã³ãã®ç¢ºèª**: ãªã¹ãã« Smart Agent ã衚瀺ãããã¯ãã§ã
+4. **ã¡ããªã¯ã¹ã®ç¢ºèª**: åãã¹ãããã¡ããªã¯ã¹ãåéãããŠããããšã確èªããŸã
+
+### æåŸ
ãããã¿ã€ã ã©ã€ã³
+
+- **ãšãŒãžã§ã³ãç»é²**: ãšãŒãžã§ã³ãã¯éåžž 1ã2 å以å
ã« Controller ã«è¡šç€ºãããŸã
+- **åæã¡ããªã¯ã¹**: æåã®ã¡ããªã¯ã¹ã¯éåžž 5 å以å
ã«å°çããŸã
+- **å®å
šãªããŒã¿**: å®å
šãªããŒã¿åéã¯ãæåã®ããŒãªã³ã°ééïŒ`config.ini` ã§èšå®ïŒã®åŸã«éå§ããŸã
+
+## ãã°ãã¡ã€ã«ã®å Žæ
+
+ãã°ã¯ã³ã³ãããŒã«ããŒããšãªã¢ãŒããã¹ãã®äž¡æ¹ã«æžã蟌ãŸããŸãã
+
+| å Žæ | ãã¹ | 説æ |
+|----------|------|-------------|
+| **ã³ã³ãããŒã«ããŒã** | `/home/ubuntu/appdsm/log.log` | ã€ã³ã¹ããŒã«ããã³ãããã€ã®ãã° |
+| **ãªã¢ãŒããã¹ã** | `/opt/appdynamics/appdsmartagent/log.log` | ãšãŒãžã§ã³ãã®ã©ã³ã¿ã€ã ãã° |
+
+## 䞊ååŠçã«ã€ããŠ
+
+`remote.yaml` ã® `max_concurrency` èšå®ã¯ã䞊åå®è¡ãå¶åŸ¡ããŸãã
+
+- **äœãå€ (1ã2)**: é æ¬¡åŠçãäœéã ãå®å
š
+- **ããã©ã«ã (4)**: ã»ãšãã©ã®ç°å¢ã§é©åãªãã©ã³ã¹
+- **é«ãå€ (8 以äž)**: 倿°ã®ãã¹ããžã®é«éãããã€ãããå€ãã®ãªãœãŒã¹ãå¿
èŠ
+
+äŸ: 12 åã®ãã¹ããš `max_concurrency: 4` ã®å Žåã
+
+- 第 1 ããã: ãã¹ã 1ã4 ãåæã«åŠçãããŸã
+- 第 2 ããã: ãã¹ã 5ã8 ãåæã«åŠçãããŸã
+- 第 3 ããã: ãã¹ã 9ã12 ãåæã«åŠçãããŸã
+
+## åãªã¢ãŒããã¹ãã§äœãèµ·ããã
+
+start ã³ãã³ããå®è¡ãããšãåãªã¢ãŒããã¹ãã§ä»¥äžãçºçããŸãã
+
+1. **ãã£ã¬ã¯ããªäœæ**: `/opt/appdynamics/appdsmartagent/` ãäœæããŸã
+2. **ãã¡ã€ã«è»¢é**: `smartagent` ãã€ããªã`config.ini`ãã©ã€ãã©ãªãã³ããŒããŸã
+3. **æš©éèšå®**: é©åãªãã¡ã€ã«æš©éãèšå®ããŸã
+4. **ããã»ã¹éå§**: Smart Agent ããã»ã¹ãèµ·åããŸã
+5. **æ€èšŒ**: ããã»ã¹ã皌åããŠããããšã確èªããŸã
+
+## 次ã®ã¹ããã
+
+Smart Agent ã®ã€ã³ã¹ããŒã«ãšèµ·åãæåãããã
+
+1. â
AppDynamics Controller UI ã«ãšãŒãžã§ã³ãã衚瀺ãããããšã確èªããŸã
+2. â
ã¡ããªã¯ã¹ãåéãããŠããããšã確èªããŸã
+3. â
å¿
èŠã«å¿ããŠã¢ããªã±ãŒã·ã§ã³ç£èŠãèšå®ããŸã
+4. â
ã¢ã©ãŒããšããã·ã¥ããŒããã»ããã¢ããããŸã
+5. â
ãšãŒãžã§ã³ãã®ãã«ã¹ãšããã©ãŒãã³ã¹ãç£èŠããŸã
+
+åé¡ãçºçããå Žåã¯ãTroubleshooting ã»ã¯ã·ã§ã³ã«é²ãã§ãã ããã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/4-troubleshooting.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/4-troubleshooting.md
new file mode 100644
index 0000000000..1e9a13546c
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/4-troubleshooting.md
@@ -0,0 +1,465 @@
+---
+title: 4. Troubleshooting
+weight: 4
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãSmart Agent ããªã¢ãŒããã¹ããžãããã€ããéã«çºçãããäžè¬çãªåé¡ãšããã®è§£æ±ºæ¹æ³ã«ã€ããŠèª¬æããŸãã
+
+## SSH æ¥ç¶ã®åé¡
+
+### åé¡: ãªã¢ãŒããã¹ãã«æ¥ç¶ã§ããªã
+
+**çç¶:**
+
+- æ¥ç¶ã¿ã€ã ã¢ãŠããšã©ãŒ
+- "Permission denied" ã¡ãã»ãŒãž
+- ãã¹ãããŒæ€èšŒãšã©ãŒ
+
+**è§£æ±ºæ¹æ³:**
+
+#### 1. SSH ããŒã®ããŒããã·ã§ã³ã確èªãã
+
+SSH ããŒã«ã¯æ£ããããŒããã·ã§ã³ãèšå®ãããŠããå¿
èŠããããŸãã
+
+```bash
+chmod 600 /home/ubuntu/.ssh/id_rsa
+chmod 644 /home/ubuntu/.ssh/id_rsa.pub
+chmod 700 /home/ubuntu/.ssh
+```
+
+#### 2. SSH æ¥ç¶ãæåã§ãã¹ããã
+
+åãªã¢ãŒããã¹ããžã®æ¥ç¶ããã¹ãããŸãã
+
+```bash
+ssh -i /home/ubuntu/.ssh/id_rsa ubuntu@172.31.1.243
+```
+
+ããã倱æããå Žåãåé¡ã¯ smartagentctl ã§ã¯ãªã SSH èšå®ã«ãããŸãã
+
+#### 3. ãªã¢ãŒããã¹ããžã®å°éæ§ã確èªãã
+
+ãããã¯ãŒã¯æ¥ç¶æ§ã確èªããŸãã
+
+```bash
+ping 172.31.1.243
+telnet 172.31.1.243 22
+```
+
+#### 4. SSH ãŠãŒã¶ãŒã確èªãã
+
+`remote.yaml` å
ã®ãŠãŒã¶ãŒåã SSH ãŠãŒã¶ãŒãšäžèŽããŠããããšã確èªããŸãã
+
+```yaml
+protocol:
+ auth:
+ username: ubuntu # Must match your SSH user
+```
+
+#### 5. known_hosts ã確èªãã
+
+ãã¹ãããŒã®æ€èšŒãæå¹ãªå Žåããã¹ãã known_hosts ã«ç»é²ãããŠããããšã確èªããŸãã
+
+```bash
+ssh-keyscan 172.31.1.243 >> /home/ubuntu/.ssh/known_hosts
+```
+
+ãŸãã¯ã`remote.yaml` å
ã§äžæçã«ãã¹ãããŒæ€èšŒãç¡å¹ã«ããŸãã
+
+```yaml
+protocol:
+ auth:
+ ignore_host_key_validation: true
+```
+
+{{% notice title="Warning" style="danger" icon="exclamation-triangle" %}}
+ãã¹ãããŒæ€èšŒã®ç¡å¹åã¯ãã¹ãç®çã®ã¿ã§äœ¿çšããŠãã ãããæ¬çªç°å¢ã§ã¯å¿
ãæå¹ã«ããŠãã ããã
+{{% /notice %}}
+
+## ããŒããã·ã§ã³ã®åé¡
+
+### åé¡: ã€ã³ã¹ããŒã«æã« Permission Denied ãçºçãã
+
+**çç¶:**
+
+- ãã£ã¬ã¯ããªäœææã® "Permission denied"
+- `/opt/appdynamics/` ãžã®æžã蟌ã¿äžå¯
+- æš©éäžè¶³ãšã©ãŒ
+
+**è§£æ±ºæ¹æ³:**
+
+#### 1. ã³ã³ãããŒã«ããŒãã§ã® sudo ã¢ã¯ã»ã¹ã確èªãã
+
+```bash
+sudo -v
+```
+
+#### 2. Privileged èšå®ã確èªãã
+
+`remote.yaml` ã§ `privileged: true` ãèšå®ãããŠããããšã確èªããŸãã
+
+```yaml
+protocol:
+ auth:
+ privileged: true
+```
+
+#### 3. ãªã¢ãŒããŠãŒã¶ãŒã®æš©éã確èªãã
+
+ãªã¢ãŒããŠãŒã¶ãŒã¯ sudo æš©éãæã£ãŠããã root ã§ããå¿
èŠããããŸãããªã¢ãŒããã¹ãäžã§ä»¥äžããã¹ãããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+sudo mkdir -p /opt/appdynamics/test
+sudo rm -rf /opt/appdynamics/test
+```
+
+#### 4. ãªã¢ãŒããã£ã¬ã¯ããªã®ããŒããã·ã§ã³ã確èªãã
+
+ã«ã¹ã¿ã ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªã䜿çšããŠããå Žåããã®ãã£ã¬ã¯ããªãæžã蟌ã¿å¯èœã§ããããšã確èªããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+ls -la /opt/appdynamics/
+```
+
+## Agent ãèµ·åããªã
+
+### åé¡: ãšãŒãžã§ã³ãã®ã€ã³ã¹ããŒã«ã¯æåããããšãŒãžã§ã³ããèµ·åããªã
+
+**çç¶:**
+
+- ã€ã³ã¹ããŒã«ã¯ãšã©ãŒãªãå®äºãã
+- ãªã¢ãŒããã¹ãäžã§ãšãŒãžã§ã³ãããã»ã¹ãåäœããŠããªã
+- ã³ã³ãããŒã«ããŒãã®ãã°ã«ãšã©ãŒããªã
+
+**è§£æ±ºæ¹æ³:**
+
+#### 1. ãªã¢ãŒããã¹ãã®ãã°ã確èªãã
+
+ãªã¢ãŒããã¹ãã« SSH æ¥ç¶ãããšãŒãžã§ã³ããã°ã確èªããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+tail -100 /opt/appdynamics/appdsmartagent/log.log
+```
+
+以äžã瀺ããšã©ãŒã¡ãã»ãŒãžãæ¢ããŸãã
+
+- èšå®ãšã©ãŒ
+- ãããã¯ãŒã¯æ¥ç¶æ§ã®åé¡
+- äŸåé¢ä¿ã®äžè¶³
+
+#### 2. ãšãŒãžã§ã³ãããã»ã¹ã確èªãã
+
+ãšãŒãžã§ã³ãããã»ã¹ãåäœããŠããã確èªããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+ps aux | grep smartagent
+```
+
+åäœããŠããªãå Žåãæåã§èµ·åã詊ã¿ãŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+cd /opt/appdynamics/appdsmartagent
+sudo ./smartagent
+```
+
+#### 3. èšå®ãã¡ã€ã«ã確èªãã
+
+`config.ini` ãæ£ãã転éãããŠããã確èªããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+cat /opt/appdynamics/appdsmartagent/config.ini
+```
+
+以äžã確èªããŸãã
+
+- Controller URL ãæ£ãã
+- ã¢ã«ãŠã³ãèªèšŒæ
å ±ãæå¹ã§ãã
+- å¿
é ãã£ãŒã«ãããã¹ãŠå
¥åãããŠãã
+
+#### 4. Controller ãžã®æ¥ç¶ããã¹ããã
+
+ãªã¢ãŒããã¹ããã AppDynamics Controller ãžã®æ¥ç¶ã確èªããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+curl -I https://fso-tme.saas.appdynamics.com
+```
+
+#### 5. ã·ã¹ãã ãªãœãŒã¹ã確èªãã
+
+ãªã¢ãŒããã¹ãã«ååãªãªãœãŒã¹ãããããšã確èªããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+df -h # Check disk space
+free -m # Check memory
+```
+
+## èšå®ãšã©ãŒ
+
+### åé¡: èšå®ãç¡å¹ã§ãã
+
+**çç¶:**
+
+- YAML ããŒã¹ãšã©ãŒ
+- ç¡å¹ãªèšå®ãã©ã¡ãŒã¿ãšã©ãŒ
+- èšå®ãšã©ãŒã«ãããšãŒãžã§ã³ããèµ·åããªã
+
+**è§£æ±ºæ¹æ³:**
+
+#### 1. YAML æ§æãæ€èšŒãã
+
+`remote.yaml` ã® YAML æ§æãšã©ãŒã確èªããŸãã
+
+```bash
+python3 -c "import yaml; yaml.safe_load(open('/home/ubuntu/appdsm/remote.yaml'))"
+```
+
+YAML ã§ããããåé¡:
+
+- äžæ£ãªã€ã³ãã³ã (ã¿ãã§ã¯ãªãã¹ããŒã¹ã䜿çš)
+- ã³ãã³ã®æ¬ èœ
+- åŒçšç¬Šã§å²ãŸããŠããªãç¹æ®æå
+
+#### 2. INI ãã¡ã€ã«ã®åœ¢åŒã確èªãã
+
+`config.ini` ã®æ§æãšã©ãŒã確èªããŸãã
+
+```bash
+cat /home/ubuntu/appdsm/config.ini
+```
+
+INI ã§ããããåé¡:
+
+- ã»ã¯ã·ã§ã³ããããŒã®æ¬ èœ (äŸ: `[CommonConfig]`)
+- ç¡å¹ãªãã©ã¡ãŒã¿å
+- ã€ã³ãŒã«èšå·ã®æ¬ èœ
+
+#### 3. Controller ã®èªèšŒæ
å ±ãæ€èšŒãã
+
+AppDynamics ã®èªèšŒæ
å ±ãæ£ããããšã確èªããŸãã
+
+- **ControllerURL**: `https://` ã `/controller` ãå«ããã¹ãã§ã¯ãããŸãã
+- **AccountAccessKey**: å®å
šãªã¢ã¯ã»ã¹ããŒã§ããå¿
èŠããããŸã
+- **AccountName**: ã¢ã«ãŠã³ãåãšå®å
šäžèŽããå¿
èŠããããŸã
+
+æ£ãã圢åŒã®äŸ:
+
+```ini
+ControllerURL = fso-tme.saas.appdynamics.com
+AccountAccessKey = abc123xyz789
+AccountName = fso-tme
+```
+
+## Agent ã Controller ã«è¡šç€ºãããªã
+
+### åé¡: ãšãŒãžã§ã³ãã¯èµ·åããã Controller UI ã«è¡šç€ºãããªã
+
+**çç¶:**
+
+- ãªã¢ãŒããã¹ãäžã§ãšãŒãžã§ã³ãããã»ã¹ãåäœããŠãã
+- ãšãŒãžã§ã³ããã°ã«ãšã©ãŒããªã
+- Controller UI ã«ãšãŒãžã§ã³ãã衚瀺ãããªã
+
+**è§£æ±ºæ¹æ³:**
+
+#### 1. ååç»é²ãåŸ
ã€
+
+ãšãŒãžã§ã³ãã¯èµ·ååŸãController ã«è¡šç€ºããããŸã§ã« 1ã5 åãããå ŽåããããŸãã
+
+#### 2. Controller ã®èšå®ã確èªãã
+
+ãšãŒãžã§ã³ãã Controller ã«å°éã§ãããã確èªããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+ping fso-tme.saas.appdynamics.com
+curl -I https://fso-tme.saas.appdynamics.com
+```
+
+#### 3. ãšãŒãžã§ã³ããã°ã§æ¥ç¶ãšã©ãŒã確èªãã
+
+Controller ãžã®æ¥ç¶ãšã©ãŒãæ¢ããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+grep -i "error\|fail\|controller" /opt/appdynamics/appdsmartagent/log.log
+```
+
+#### 4. SSL/TLS èšå®ã確èªãã
+
+`config.ini` ã§ SSL ãæå¹ã«ãªã£ãŠããããšã確èªããŸãã
+
+```ini
+EnableSSL = true
+```
+
+#### 5. ãã¡ã€ã¢ãŠã©ãŒã«ã«ãŒã«ã確èªãã
+
+ãªã¢ãŒããã¹ããã Controller ãžã®ã¢ãŠãããŠã³ã HTTPS (ããŒã 443) ãèš±å¯ãããŠããããšã確èªããŸãã
+
+#### 6. ã¢ã«ãŠã³ãèªèšŒæ
å ±ã確èªãã
+
+Controller UI ã§ AccountAccessKey ãš AccountName ãæ£ããããå確èªããŸãã
+
+- AppDynamics Controller ã«ãã°ã€ã³ããŸã
+- Settings â License ã«ç§»åããŸã
+- ã¢ã«ãŠã³ãåãšã¢ã¯ã»ã¹ããŒã確èªããŸã
+
+## ããã©ãŒãã³ã¹ãšã¹ã±ãŒãªã³ã°ã®åé¡
+
+### åé¡: ãããã€ãé
ãããŸãã¯ã¿ã€ã ã¢ãŠããã
+
+**çç¶:**
+
+- ãããã€ã«æéããããããã
+- 倿°ã®ãã¹ãã«ãããã€ããéã®ã¿ã€ã ã¢ãŠããšã©ãŒ
+- ã·ã¹ãã ãªãœãŒã¹ã®æ¯æž
+
+**è§£æ±ºæ¹æ³:**
+
+#### 1. åæå®è¡æ°ã調æŽãã
+
+åé¡ãçºçããå Žå㯠`remote.yaml` ã® `max_concurrency` ãæžãããŸãã
+
+```yaml
+max_concurrency: 2 # Lower value for slower, more stable deployment
+```
+
+ãªãœãŒã¹ã«äœè£ãããå Žåã¯ãããé«éãªãããã€ã®ããã«å¢ãããŸãã
+
+```yaml
+max_concurrency: 8 # Higher value for faster deployment
+```
+
+#### 2. ãããã§ãããã€ãã
+
+éåžžã«å€§èŠæš¡ãªãããã€ã§ã¯ããã¹ããè€æ°ã®ã°ã«ãŒãã«åå²ããŸãã
+
+**remote-batch1.yaml:**
+
+```yaml
+hosts:
+ - host: "172.31.1.1"
+ - host: "172.31.1.2"
+ - host: "172.31.1.3"
+```
+
+**remote-batch2.yaml:**
+
+```yaml
+hosts:
+ - host: "172.31.1.4"
+ - host: "172.31.1.5"
+ - host: "172.31.1.6"
+```
+
+ãã®åŸãåããããåå¥ã«ãããã€ããŸãã
+
+#### 3. ãããã¯ãŒã¯åž¯åå¹
ã確èªãã
+
+ãããã€äžã®ãããã¯ãŒã¯äœ¿çšç¶æ³ãç£èŠããŸãã
+
+```bash
+iftop
+```
+
+垯åå¹
ã飜åããŠããå Žåãåæå®è¡æ°ãæžãããããªãããŒã¯æé垯ã«ãããã€ããŸãã
+
+## ãã°åæ
+
+### ã³ã³ãããŒã«ããŒãã®ãã°ã確èªãã
+
+詳现ãªãããã€ãã°ã衚瀺ããŸãã
+
+```bash
+tail -f /home/ubuntu/appdsm/log.log
+```
+
+以äžãæ¢ããŸãã
+
+- SSH æ¥ç¶ã®å€±æ
+- ãã¡ã€ã«è»¢éãšã©ãŒ
+- ããŒããã·ã§ã³æåŠãšã©ãŒ
+- ã¿ã€ã ã¢ãŠãã¡ãã»ãŒãž
+
+### ãªã¢ãŒããã¹ãã®ãã°ã確èªãã
+
+ãªã¢ãŒããã¹ãäžã®ãšãŒãžã§ã³ãã©ã³ã¿ã€ã ãã°ã衚瀺ããŸãã
+
+```bash
+ssh ubuntu@172.31.1.243
+tail -f /opt/appdynamics/appdsmartagent/log.log
+```
+
+以äžãæ¢ããŸãã
+
+- Controller ãžã®æ¥ç¶ãšã©ãŒ
+- èšå®ãšã©ãŒ
+- ãšãŒãžã§ã³ãã®èµ·å倱æ
+- ãããã¯ãŒã¯ã®åé¡
+
+### ãã°ã®è©³çŽ°åºŠãäžãã
+
+ãã詳现ãªãã®ã³ã°ã®ããã`config.ini` ã§ `LogLevel` ã `DEBUG` ã«èšå®ããŸãã
+
+```ini
+[Telemetry]
+LogLevel = DEBUG
+```
+
+## ãã«ãã®ååŸ
+
+ããã§ãåé¡ã解決ããªãå Žå:
+
+1. **ããã¥ã¡ã³ãã確èªãã**: smartagentctl ã®ãã«ãã確èªããŸãã
+
+ ```bash
+ ./smartagentctl --help
+ ./smartagentctl start --help
+ ```
+
+2. **AppDynamics ããã¥ã¡ã³ãã確èªãã**: AppDynamics ã®ããã¥ã¡ã³ãããŒã¿ã«ãåç
§ããŸãã
+
+3. **ãã°ãã¡ã€ã«ã確èªãã**: ã³ã³ãããŒã«ããŒããšãªã¢ãŒããã¹ãã®äž¡æ¹ã®ãã°ãå¿
ã確èªããŸãã
+
+4. **ã³ã³ããŒãã³ããåå¥ã«ãã¹ããã**:
+ - SSH æ¥ç¶æ§ãåå¥ã«ãã¹ããã
+ - åäžãã¹ãã§ãšãŒãžã§ã³ãã®èµ·åãæåã§ãã¹ããã
+ - Controller ãžã®æ¥ç¶æ§ãåå¥ã«æ€èšŒãã
+
+5. **蚺ææ
å ±ãåéãã**:
+ - ã³ã³ãããŒã«ããŒãã®ãã°
+ - ãªã¢ãŒããã¹ãã®ãã°
+ - èšå®ãã¡ã€ã« (æ©å¯ããŒã¿ã¯ãã¹ã¯ãã)
+ - ãšã©ãŒã¡ãã»ãŒãžãšã¹ã¿ãã¯ãã¬ãŒã¹
+
+## äžè¬çãªãšã©ãŒã¡ãã»ãŒãž
+
+| ãšã©ãŒã¡ãã»ãŒãž | åå | è§£æ±ºæ¹æ³ |
+|--------------|-------|----------|
+| "Permission denied (publickey)" | SSH ããŒèªèšŒã®å€±æ | SSH ããŒã®ãã¹ãšããŒããã·ã§ã³ã確èªãã |
+| "Connection refused" | SSH ããŒãã«ã¢ã¯ã»ã¹ã§ããªã | ãã¡ã€ã¢ãŠã©ãŒã«ã«ãŒã«ãš SSH ããŒã¢ã³ã確èªãã |
+| "No such file or directory" | èšå®ãã¡ã€ã«ã®æ¬ èœ | èšå®ãã¡ã€ã«ãååšããã¹ãæ£ããããšã確èªãã |
+| "YAML parse error" | ç¡å¹ãª YAML æ§æ | ããŒãµãŒã§ YAML æ§æãæ€èšŒãã |
+| "Controller unreachable" | ãããã¯ãŒã¯æ¥ç¶æ§ã®åé¡ | ãªã¢ãŒããã¹ããã Controller ãžã®æ¥ç¶ããã¹ããã |
+| "Invalid credentials" | ã¢ã«ãŠã³ãããŒãŸãã¯ååã誀ã£ãŠãã | AppDynamics ã®èªèšŒæ
å ±ã確èªãã |
+
+## ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ãã¹ããã©ã¯ãã£ã¹
+
+1. **åžžã« --verbose ãã©ã°ã䜿çšãã**: ãããã°ã®ããã®è©³çްãªåºåãæäŸããŸã
+2. **ãŸãåäžãã¹ãã§ãã¹ããã**: ã¹ã±ãŒã«ããåã« 1 å°ã®ãã¹ãã«ãããã€ããŸã
+3. **ããã«ãã°ã確èªãã**: ãããã€çŽåŸã«ãã°ã確èªããŸã
+4. **åææ¡ä»¶ã確èªãã**: ãããã€åã«ãã¹ãŠã®èŠä»¶ãæºããããŠããããšã確èªããŸã
+5. **æ¥ç¶æ§ãåå¥ã«ãã¹ããã**: SSH ãšãããã¯ãŒã¯ã®æ¥ç¶æ§ãåå¥ã«æ€èšŒããŸã
+6. **æåã³ãã³ãã䜿çšãã**: æåã® SSH ãšãšãŒãžã§ã³ãèµ·åããã¹ãããŠåé¡ãåãåããŸã
+
+{{% notice title="Tip" style="info" icon="lightbulb" %}}
+ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¡ãéã¯ãè€éãªåé¡ã«åãçµãåã«ããŸãæãåçŽãªãã¹ã (äŸ: pingãSSH æ¥ç¶æ§) ããå§ããŠãã ããã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/_index.md
new file mode 100644
index 0000000000..b606457130
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/1-remote-installation/_index.md
@@ -0,0 +1,81 @@
+---
+title: Remote Installation
+weight: 1
+time: 2 minutes
+description: smartagentctl ã䜿çšããŠãè€æ°ã®ãªã¢ãŒããã¹ãã« AppDynamics Smart Agent ãã€ã³ã¹ããŒã«ããã³ç®¡çããæ¹æ³ãåŠã³ãŸãã
+---
+
+## ã¯ããã«
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã**smartagentctl** ã³ãã³ãã©ã€ã³ããŒã«ã䜿çšããŠãè€æ°ã®ãªã¢ãŒããã¹ãã« **AppDynamics Smart Agent** ãåæã«ã€ã³ã¹ããŒã«ããã³ç®¡çããæ¹æ³ã玹ä»ããŸãããã®ã¢ãããŒãã¯ãJenkins ã GitHub Actions ãªã©ã®è¿œå ã®èªååããŒã«ãå¿
èŠãšããã«ãSSH ããŒã¹ã®ãªã¢ãŒãå®è¡ã䜿çšããŠãµãŒããŒçŸ€ã« Smart Agent ãè¿
éã«ãããã€ããã®ã«çæ³çã§ãã
+
+
+
+## åŠç¿å
容
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã以äžã®æ¹æ³ãåŠç¿ããŸãã
+
+- `remote.yaml` ãã¡ã€ã«ã䜿çšãã**ãªã¢ãŒããã¹ãã®èšå®**
+- `config.ini` ã䜿çšãã **Smart Agent ã®èšå®**
+- SSH çµç±ã§è€æ°ã®ãã¹ãã« **Smart Agent ãåæã«ãããã€**
+- ã€ã³ãã©å
šäœã§**ãšãŒãžã§ã³ãããªã¢ãŒãã§éå§ããã³åæ¢**
+- ãã¹ãŠã®ãªã¢ãŒããã¹ãã§**ãšãŒãžã§ã³ãã®ã¹ããŒã¿ã¹ã確èª**
+- äžè¬çãªã€ã³ã¹ããŒã«ããã³æ¥ç¶ã®åé¡ã®**ãã©ãã«ã·ã¥ãŒãã£ã³ã°**
+
+## äž»ãªæ©èœ
+
+- ð **çŽæ¥ SSH ãããã€ã¡ã³ã** - 远å ã®èªååãã©ãããã©ãŒã ã¯äžèŠ
+- ð **å®å
šãªã©ã€ããµã€ã¯ã«ç®¡ç** - ãšãŒãžã§ã³ãã®ã€ã³ã¹ããŒã«ãéå§ã忢ãã¢ã³ã€ã³ã¹ããŒã«
+- ðïž **Configuration as Code** - YAML ããã³ INI ããŒã¹ã®èšå®ãã¡ã€ã«
+- ð **ã»ãã¥ã¢** - SSH éµããŒã¹ã®èªèšŒ
+- ð **䞊è¡å®è¡** - 䞊åãããã€ã¡ã³ãçšã®èšå®å¯èœãªäžŠè¡æ§
+- ðïž **ã·ã³ãã«ãª CLI** - 䜿ãããã smartagentctl ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹
+
+## ã¢ãŒããã¯ãã£æŠèŠ
+
+```text
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
+â Remote Installation Architecture â
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
+â â
+â Control Node (smartagentctl) âââ¶ SSH Connection â
+â â â
+â ââââ¶ Host 1 (SSH) â
+â ââââ¶ Host 2 (SSH) â
+â ââââ¶ Host 3 (SSH) â
+â ââââ¶ Host N (SSH) â
+â â
+â All hosts send metrics âââ¶ AppDynamics Controller â
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
+```
+
+## ã¯ãŒã¯ã·ã§ããæ§æ
+
+ãã®ã¯ãŒã¯ã·ã§ããã«ã¯ä»¥äžãå«ãŸããŸãã
+
+1. **åææ¡ä»¶** - å¿
èŠãªã¢ã¯ã»ã¹ãããŒã«ãæš©é
+2. **èšå®** - `config.ini` ããã³ `remote.yaml` ã®ã»ããã¢ãã
+3. **ã€ã³ã¹ããŒã«ãšèµ·å** - ãªã¢ãŒããã¹ããžã® Smart Agent ã®ãããã€ãšèµ·å
+4. **ãã©ãã«ã·ã¥ãŒãã£ã³ã°** - äžè¬çãªåé¡ãšè§£æ±ºç
+
+## åææ¡ä»¶
+
+- smartagentctl ãã€ã³ã¹ããŒã«ãããã³ã³ãããŒã«ããŒã
+- ãã¹ãŠã®ãªã¢ãŒããã¹ããžã® SSH ã¢ã¯ã»ã¹
+- èªèšŒçšã«èšå®ããã SSH ç§å¯éµ
+- ã³ã³ãããŒã«ããŒãã§ã® sudo æš©é
+- SSH ãæå¹åããããªã¢ãŒããã¹ã
+- AppDynamics ã¢ã«ãŠã³ãã®èªèšŒæ
å ±
+
+## å©çšå¯èœãªã³ãã³ã
+
+`smartagentctl` ããŒã«ã¯ä»¥äžã®ãªã¢ãŒãæäœããµããŒãããŠããŸãã
+
+- `start --remote` - ãªã¢ãŒããã¹ãã« Smart Agent ãã€ã³ã¹ããŒã«ããŠéå§
+- `stop --remote` - ãªã¢ãŒããã¹ãã§ Smart Agent ã忢
+- `status --remote` - ãªã¢ãŒããã¹ãã§ Smart Agent ã®ã¹ããŒã¿ã¹ã確èª
+- `install --remote` - éå§ããã« Smart Agent ãã€ã³ã¹ããŒã«
+- `uninstall --remote` - ãªã¢ãŒããã¹ããã Smart Agent ãåé€
+- `--service` ãã©ã° - systemd ãµãŒãã¹ãšããŠã€ã³ã¹ããŒã«
+
+ãã¹ãŠã®ã³ãã³ãã§è©³çްãã°çšã® `--verbose` ãã©ã°ããµããŒããããŠããŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/1-architecture.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/1-architecture.md
new file mode 100644
index 0000000000..36af7fb6a2
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/1-architecture.md
@@ -0,0 +1,306 @@
+---
+title: ã¢ãŒããã¯ãã£ãšèšèš
+weight: 1
+time: 5 minutes
+---
+
+## ã·ã¹ãã ã¢ãŒããã¯ãã£
+
+Jenkins ããŒã¹ã® Smart Agent ãããã€ã¡ã³ãã·ã¹ãã ã¯ãããã¢ã³ãã¹ããŒã¯åã®ã¢ãŒããã¯ãã£ãæ¡çšããŠãããAWS VPC å
ã® Jenkins agent ã SSH çµç±ã§è€æ°ã®ã¿ãŒã²ãããã¹ããžã®ãããã€ã¡ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŸãã
+
+### ãã€ã¬ãã«ã¢ãŒããã¯ãã£
+
+```mermaid
+graph TB
+ subgraph "Jenkins Infrastructure"
+ JM[Jenkins Master
Web UI + Orchestration]
+ JA[Jenkins Agent
EC2 in VPC
Label: linux]
+ end
+
+ subgraph "AWS VPC - Private Network"
+ subgraph "Target EC2 Instances"
+ H1[Host 1
172.31.1.243]
+ H2[Host 2
172.31.1.48]
+ H3[Host 3
172.31.1.5]
+ HN[Host N
172.31.x.x]
+ end
+ end
+
+ DEV[Developer/Operator]
+ APPD[AppDynamics
Controller]
+
+ DEV -->|1. Triggers Pipeline| JM
+ JM -->|2. Assigns Job| JA
+ JA -->|3. SSH Deploy
Private IPs| H1
+ JA -->|3. SSH Deploy
Private IPs| H2
+ JA -->|3. SSH Deploy
Private IPs| H3
+ JA -->|3. SSH Deploy
Private IPs| HN
+
+ H1 -.->|Metrics| APPD
+ H2 -.->|Metrics| APPD
+ H3 -.->|Metrics| APPD
+ HN -.->|Metrics| APPD
+
+ style JM fill:#d4e6f1
+ style JA fill:#a9cce3
+ style H1 fill:#aed6f1
+ style H2 fill:#aed6f1
+ style H3 fill:#aed6f1
+ style HN fill:#aed6f1
+```
+
+## ãããã¯ãŒã¯ã¢ãŒããã¯ãã£
+
+ãã¹ãŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãå
±æã®ã»ãã¥ãªãã£ã°ã«ãŒããæã€åäžã® AWS VPC å
ã§çšŒåããŸããJenkins agent ã¯ãã©ã€ããŒã IP ãä»ããŠã¿ãŒã²ãããã¹ããšéä¿¡ãããããã¿ãŒã²ãããã¹ãã«ãããªã㯠IP ã¢ãã¬ã¹ãå²ãåœãŠãå¿
èŠã¯ãããŸããã
+
+### VPC ã¬ã€ã¢ãŠã
+
+```
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
+â AWS VPC (10.0.0.0/16) â
+â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
+â â Security Group: app-agents-sg â â
+â â Rules: â â
+â â - Inbound: SSH (22) from Jenkins Agent only â â
+â â - Outbound: HTTPS (443) to AppDynamics Controller â â
+â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
+â â
+â ââââââââââââââââ ââââââââââââââââ ââââââââââââââââ â
+â â Jenkins Agentâ â Target EC2 â â Target EC2 â â
+â â â â â â â â
+â â Private IP: âââââ¶â Private IP: â â Private IP: â â
+â â 172.31.50.10 âSSH â 172.31.1.243 â â 172.31.1.48 â â
+â â âââââ¶â â â â â
+â â Label: linux â â Ubuntu 20.04 â â Ubuntu 20.04 â â
+â ââââââââââââââââ ââââââââââââââââ ââââââââââââââââ â
+â â â â â
+â â â â â
+â ââââââââââââââââââââââŽâââââââââââââââââââââ â
+â â â
+ââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââââ
+ â
+ âŒ
+ ââââââââââââââââââââ
+ â AppDynamics â
+ â Controller â
+ â (SaaS/On-Prem) â
+ ââââââââââââââââââââ
+```
+
+## ãããã€ã¡ã³ããããŒ
+
+### ãããã€ã¡ã³ãã®å
šäœã·ãŒã±ã³ã¹
+
+```mermaid
+sequenceDiagram
+ participant Dev as Developer
+ participant JM as Jenkins Master
+ participant JA as Jenkins Agent
(VPC)
+ participant TH as Target Hosts
(VPC)
+ participant AppD as AppDynamics
Controller
+
+ Dev->>JM: 1. Trigger Pipeline
+ JM->>JM: 2. Load Credentials
+ JM->>JA: 3. Schedule Job
+ JA->>JA: 4. Prepare Batches
+
+ loop For Each Batch
+ JA->>TH: 5. SSH Copy Files (SCP)
+ JA->>TH: 6. SSH Execute Commands
+ TH->>TH: 7. Install/Config Agent
+ TH-->>JA: 8. Return Status
+ end
+
+ JA->>JM: 9. Report Results
+ JM->>Dev: 10. Show Build Status
+
+ TH->>AppD: 11. Send Metrics (Post-Install)
+ AppD-->>Dev: 12. View Monitoring Data
+```
+
+## ã³ã³ããŒãã³ãã®è©³çް
+
+### Jenkins Master
+
+**圹å²:**
+
+- ãŠãŒã¶ãŒåã Web UI
+- ãã€ãã©ã€ã³ã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³
+- èªèšŒæ
å ±ã®ç®¡ç
+- ãã«ãå±¥æŽãšãã°
+- ãžã§ãã®ã¹ã±ãžã¥ãŒãªã³ã°
+
+**èŠä»¶:**
+
+- Jenkins 2.300+
+- ãã©ã°ã€ã³: PipelineãSSH AgentãCredentialsãGit
+- agent ãžã®ãããã¯ãŒã¯ã¢ã¯ã»ã¹
+
+### Jenkins Agent
+
+**é
çœ®å Žæ:**
+
+- AWS VPCïŒã¿ãŒã²ãããšåäžã® VPCïŒ
+- ãã©ã€ããŒããããã¯ãŒã¯ã¢ã¯ã»ã¹
+
+**圹å²:**
+
+- ãã€ãã©ã€ã³ã¹ããŒãžã®å®è¡
+- ã¿ãŒã²ãããã¹ããžã® SSH æ¥ç¶
+- ãã¡ã€ã«è»¢é (SCP)
+- ãããåŠçããžãã¯
+- ãšã©ãŒã®åé
+
+**èŠä»¶:**
+
+- ã©ãã«: `linux`
+- Java 11+
+- SSH ã¯ã©ã€ã¢ã³ã
+- ãããã¯ãŒã¯: ãã¹ãŠã®ã¿ãŒã²ãããžã® SSH æ¥ç¶
+- ãã£ã¹ã¯: ã¢ãŒãã£ãã¡ã¯ãçšã«çŽ 20GB
+
+### ã¿ãŒã²ãããã¹ã
+
+**åææ¡ä»¶:**
+
+- Ubuntu 20.04+
+- SSH ãµãŒããŒã皌åããŠããããš
+- sudo æš©éãæã€ãŠãŒã¶ãŒ
+- èªå¯ããã SSH ããŒ
+
+**ãããã€ã¡ã³ãåŸ:**
+
+```
+/opt/appdynamics/
+âââ appdsmartagent/
+ âââ smartagentctl
+ âââ config.ini
+ âââ agents/
+ âââ machine/
+ âââ java/
+ âââ node/
+ âââ db/
+```
+
+## ã»ãã¥ãªãã£ã¢ãŒããã¯ãã£
+
+### ã»ãã¥ãªãã£ã¬ã€ã€ãŒ
+
+1. **AWS VPC ã«ããåé¢**
+ - agent çšã®ãã©ã€ããŒããµãããã
+ - ã€ã³ã¿ãŒããããžã®çŽæ¥ã¢ã¯ã»ã¹ã¯äžèŠ
+ - VPC ãããŒãã°ãæå¹å
+
+2. **ã»ãã¥ãªãã£ã°ã«ãŒã**
+ - Jenkins Agent ã® IP ããã¯ã€ããªã¹ãç»é²
+ - ããŒã 22 (SSH) ã®ã¿ãèš±å¯
+ - ã¹ããŒããã«ãªãã¡ã€ã¢ãŠã©ãŒã«ã«ãŒã«
+
+3. **SSH ããŒèªèšŒ**
+ - ãã¹ã¯ãŒãèªèšŒã¯äœ¿çšããªã
+ - ããŒã¯ Jenkins credentials ã«ä¿ç®¡
+ - äžæçãªããŒãã¡ã€ã« (600 ããŒããã·ã§ã³)
+ - åãã«ãå®äºåŸã«ããŒãåé€
+
+4. **Jenkins RBAC**
+ - ããŒã«ããŒã¹ã®ã¢ã¯ã»ã¹å¶åŸ¡
+ - ãã€ãã©ã€ã³ã¬ãã«ã®æš©é管ç
+ - èªèšŒæ
å ±ãžã®ã¢ã¯ã»ã¹å¶é
+ - ç£æ»ãã°ãæå¹å
+
+5. **ã·ãŒã¯ã¬ãã管ç**
+ - ã³ãŒãããã°ã«ã·ãŒã¯ã¬ãããå«ããªã
+ - Credentials binding ã®ã¿ã䜿çš
+ - ç°å¢å€æ°ã®ãã¹ãã³ã°
+ - ã·ãŒã¯ã¬ããã®èªåããŒããŒã·ã§ã³ (ãªãã·ã§ã³)
+
+### èªèšŒæ
å ±ã®ãããŒ
+
+```mermaid
+flowchart LR
+ subgraph "Jenkins Master"
+ CS[Credentials Store
Encrypted at Rest]
+ JM[Jenkins Master]
+ end
+
+ subgraph "Jenkins Agent"
+ WS[Workspace
Temp Files]
+ KEY[SSH Key File
600 permissions]
+ end
+
+ subgraph "Target Hosts"
+ TH[EC2 Instances
Authorized Keys]
+ end
+
+ CS -->|Binding| JM
+ JM -->|Secure Copy| KEY
+ KEY -->|SSH Auth| TH
+ WS -.->|Cleanup| X[Deleted]
+ KEY -.->|Cleanup| X
+
+ style CS fill:#fdeaa8
+ style KEY fill:#fadbd8
+ style X fill:#e8e8e8
+```
+
+## ãããåŠç
+
+ãã®ã·ã¹ãã ã¯ãããããèŠæš¡ã®ãããã€ã¡ã³ãã«å¯Ÿå¿ããããèªåãããåŠçãæ¡çšããŠããŸããããã©ã«ãã§ã¯ããã¹ã㯠256 å°ãã€ã®ãããã§åŠçãããåãããå
ã®ãã¹ãŠã®ãã¹ãã¯äžŠåã«ãããã€ãããŸãã
+
+### ãããåŠçã®ä»çµã¿
+
+```
+HOST LIST (1000 hosts) BATCH_SIZE = 256
+
+Host 001: 172.31.1.1 ââââââââââââââââââââ
+Host 002: 172.31.1.2 âââââââââ¶ â BATCH 1 â
+ ... â Hosts 1-256 â ââââ
+Host 256: 172.31.1.256 â Sequential â â
+ ââââââââââââââââââââ â
+Host 257: 172.31.1.257 ââââââââââââââââââââ â
+Host 258: 172.31.1.258 âââââââââ¶ â BATCH 2 â â SEQUENTIAL
+ ... â Hosts 257-512 â â EXECUTION
+Host 512: 172.31.1.512 â Sequential â â
+ ââââââââââââââââââââ â
+Host 513: 172.31.1.513 ââââââââââââââââââââ â
+ ... â BATCH 3 â â
+Host 768: 172.31.1.768 âââââââââ¶ â Hosts 513-768 â ââââ
+ ââââââââââââââââââââ
+Host 769: 172.31.1.769 ââââââââââââââââââââ
+ ... â BATCH 4 â
+Host 1000: 172.31.2.232 âââââââââ¶ â Hosts 769-1000 â
+ â (232 hosts) â
+ ââââââââââââââââââââ
+
+WITHIN EACH BATCH:
+ââââââââââââââââââââââââââââââââââââââââââ
+â All hosts deploy in PARALLEL â
+â â
+â Host 1 âââ â
+â Host 2 ââ†â
+â Host 3 âââŒââ¶ Background processes (&)â
+â ... â â
+â Host 256ââ âââ¶ wait command â
+ââââââââââââââââââââââââââââââââââââââââââ
+```
+
+### ã¹ã±ãŒãªã³ã°ç¹æ§
+
+**ãããã€ã¡ã³ãé床 (ããã©ã«ã BATCH_SIZE=256):**
+
+- 10 ãã¹ã â 1 ããã â çŽ 2 å
+- 100 ãã¹ã â 1 ããã â çŽ 3 å
+- 500 ãã¹ã â 2 ããã â çŽ 6 å
+- 1,000 ãã¹ã â 4 ããã â çŽ 12 å
+- 5,000 ãã¹ã â 20 ããã â çŽ 60 å
+
+**é床ã«åœ±é¿ããèŠå :**
+
+- ãããã¯ãŒã¯åž¯åå¹
(ãã¹ã 1 å°ããã 19MB ã®ããã±ãŒãž)
+- SSH æ¥ç¶ã®ãªãŒããŒããã (ãã¹ã 1 å°ãããçŽ 1 ç§)
+- ã¿ãŒã²ãããã¹ãã® CPU ãšãã£ã¹ã¯é床
+- Jenkins agent ã®ãªãœãŒã¹
+
+## 次ã®ã¹ããã
+
+ã¢ãŒããã¯ãã£ã®çè§£ãåŸãããããæ¬¡ã¯ Jenkins ã®ã»ããã¢ãããšèªèšŒæ
å ±ã®æ§æã«é²ã¿ãŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/2-jenkins-setup.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/2-jenkins-setup.md
new file mode 100644
index 0000000000..9068609867
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/2-jenkins-setup.md
@@ -0,0 +1,294 @@
+---
+title: Jenkins ã»ããã¢ãã
+weight: 2
+time: 10 minutes
+---
+
+## åææ¡ä»¶
+
+éå§ããåã«ã以äžãæã£ãŠããããšã確èªããŠãã ããã
+
+- Jenkins ãµãŒããŒïŒããŒãžã§ã³ 2.300 以éïŒ
+- ã¿ãŒã²ãã EC2 ã€ã³ã¹ã¿ã³ã¹ãšåã AWS VPC å
ã«ãã Jenkins ãšãŒãžã§ã³ã
+- ã¿ãŒã²ãããã¹ããžã®èªèšŒçš SSH ããŒãã¢
+- AppDynamics Smart Agent ããã±ãŒãž
+- SSH ã¢ã¯ã»ã¹å¯èœãªã¿ãŒã²ãã Ubuntu EC2 ã€ã³ã¹ã¿ã³ã¹
+
+## å¿
èŠãª Jenkins ãã©ã°ã€ã³
+
+**Manage Jenkins â Plugins â Available Plugins** ãã以äžã®ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããŸãã
+
+1. **Pipeline**ïŒã³ã¢ãã©ã°ã€ã³ãéåžžã¯ããªã€ã³ã¹ããŒã«æžã¿ïŒ
+2. **SSH Agent Plugin**
+3. **Credentials Plugin**ïŒéåžžã¯ããªã€ã³ã¹ããŒã«æžã¿ïŒ
+4. **Git Plugin**ïŒSCM ã䜿çšããå ŽåïŒ
+
+ã€ã³ã¹ããŒã«æé ã¯æ¬¡ã®ãšããã§ãã
+
+1. **Manage Jenkins â Plugins** ã«ç§»åããŸã
+2. **Available** ã¿ããã¯ãªãã¯ããŸã
+3. åãã©ã°ã€ã³ãæ€çŽ¢ããŸã
+4. éžæã㊠**Install** ãã¯ãªãã¯ããŸã
+
+## Jenkins ãšãŒãžã§ã³ãã®æ§æ
+
+Jenkins ãšãŒãžã§ã³ãã¯ããã©ã€ããŒã IP çµç±ã§ã¿ãŒã²ãã EC2 ã€ã³ã¹ã¿ã³ã¹ã«å°éã§ããå¿
èŠããããŸãã䞻㫠2 ã€ã®ãªãã·ã§ã³ããããŸãã
+
+### ãªãã·ã§ã³ A: EC2 ã€ã³ã¹ã¿ã³ã¹ããšãŒãžã§ã³ããšããŠäœ¿çš
+
+1. **EC2 ã€ã³ã¹ã¿ã³ã¹ãã¿ãŒã²ãããã¹ããšåã VPC å
ã§èµ·å** ããŸã
+
+2. **Java ãã€ã³ã¹ããŒã«** ããŸãïŒJenkins ã«å¿
èŠïŒã
+
+ ```bash
+ sudo apt-get update
+ sudo apt-get install -y openjdk-11-jdk
+ ```
+
+3. **Jenkins ã«ãšãŒãžã§ã³ãã远å ** ããŸãã
+ - **Manage Jenkins â Nodes â New Node** ã«ç§»åããŸã
+ - Name: `aws-vpc-agent`ïŒãŸãã¯ä»»æã®ååïŒ
+ - Type: **Permanent Agent**
+ - èšå®:
+ - **Remote root directory**: `/home/ubuntu/jenkins`
+ - **Labels**: `linux`ïŒãã€ãã©ã€ã³ã®ãšãŒãžã§ã³ãã©ãã«ãšäžèŽãããå¿
èŠããããŸãïŒ
+ - **Launch method**: Launch agent via SSH
+ - **Host**: EC2 ã®ãã©ã€ããŒã IP
+ - **Credentials**: ãšãŒãžã§ã³ãçšã® SSH èªèšŒæ
å ±ã远å ããŸã
+
+### ãªãã·ã§ã³ B: æ¢åã® Linux ãšãŒãžã§ã³ãã䜿çš
+
+- ãšãŒãžã§ã³ãã« `linux` ã©ãã«ãä»ããŠããããšã確èªããŸã
+- ã¿ãŒã²ãããã¹ããžã®ãããã¯ãŒã¯æ¥ç¶ã確èªããŸã
+- SSH ã¯ã©ã€ã¢ã³ããã€ã³ã¹ããŒã«ãããŠããããšã確èªããŸã
+
+### ãšãŒãžã§ã³ãã©ãã«ã®æ§æ
+
+{{% notice style="warning" %}}
+ãã®ã¯ãŒã¯ã·ã§ããã®ãã¹ãŠã®ãã€ãã©ã€ã³ã¯ `linux` ã©ãã«ã䜿çšããŸãããšãŒãžã§ã³ãããã®ã©ãã«ã§æ§æãããŠããããšã確èªããŠãã ããã
+{{% /notice %}}
+
+ã©ãã«ãèšå®ãŸãã¯å€æŽããã«ã¯ãæ¬¡ã®æé ã«åŸããŸãã
+
+1. **Manage Jenkins â Nodes** ã«ç§»åããŸã
+2. ãšãŒãžã§ã³ããã¯ãªãã¯ããŸã
+3. **Configure** ãã¯ãªãã¯ããŸã
+4. **Labels** ã `linux` ã«èšå®ããŸã
+5. **Save** ãã¯ãªãã¯ããŸã
+
+## èªèšŒæ
å ±ã®ã»ããã¢ãã
+
+**Manage Jenkins â Credentials â System â Global credentials (unrestricted)** ã«ç§»åããŸãã
+
+ãã€ãã©ã€ã³ãåäœãããããã«ã3 ã€ã®èªèšŒæ
å ±ãäœæããå¿
èŠããããŸãã
+
+### 1. ã¿ãŒã²ãããã¹ãçšã® SSH ç§å¯éµ
+
+ãã®èªèšŒæ
å ±ã«ãããJenkins ãã¿ãŒã²ãã EC2 ã€ã³ã¹ã¿ã³ã¹ã« SSH æ¥ç¶ã§ããŸãã
+
+**Type**: SSH Username with private key
+
+- **ID**: `ssh-private-key`ïŒå®å
šã«äžèŽããå¿
èŠããããŸãïŒ
+- **Description**: `SSH key for EC2 target hosts`
+- **Username**: `ubuntu`ïŒãŸãã¯äœ¿çšãã SSH ãŠãŒã¶ãŒïŒ
+- **Private Key**: 次ã®ãããããéžæããŸã:
+ - **Enter directly**: PEM ãã¡ã€ã«ã®å
容ã貌ãä»ããŸã
+ - **From file**: PEM ãã¡ã€ã«ãã¢ããããŒãããŸã
+ - **From Jenkins master**: ãã¹ãæå®ããŸã
+
+**ãã©ãŒãããäŸ**:
+
+```
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEA...
+...
+-----END RSA PRIVATE KEY-----
+```
+
+### 2. ãããã€å
ãã¹ãäžèЧ
+
+ãã®èªèšŒæ
å ±ã«ã¯ãSmart Agent ããããã€ãããã¹ãŠã®ã¿ãŒã²ãããã¹ãã®äžèЧãå«ãŸããŸãã
+
+**Type**: Secret text
+
+- **ID**: `deployment-hosts`ïŒå®å
šã«äžèŽããå¿
èŠããããŸãïŒ
+- **Description**: `List of target EC2 host IPs`
+- **Secret**: æ¹è¡åºåãã® IP ãå
¥åããŸã
+
+**äŸ**:
+
+```
+172.31.1.243
+172.31.1.48
+172.31.1.5
+172.31.10.20
+172.31.10.21
+```
+
+{{% notice style="important" %}}
+**ãã©ãŒãããèŠä»¶:**
+
+- 1 è¡ã« 1 ã€ã® IP
+- ã«ã³ããªã
+- ã¹ããŒã¹ãªã
+- äœåãªæåãªã
+- Unix 圢åŒã®æ¹è¡ã³ãŒãã䜿çšïŒCRLF ã§ã¯ãªã LFïŒ
+{{% /notice %}}
+
+### 3. AppDynamics ã¢ã«ãŠã³ãã¢ã¯ã»ã¹ããŒ
+
+ãã®èªèšŒæ
å ±ã«ã¯ãSmart Agent èªèšŒçšã® AppDynamics ã¢ã«ãŠã³ãã¢ã¯ã»ã¹ããŒãå«ãŸããŸãã
+
+**Type**: Secret text
+
+- **ID**: `account-access-key`ïŒå®å
šã«äžèŽããå¿
èŠããããŸãïŒ
+- **Description**: `AppDynamics account access key`
+- **Secret**: AppDynamics ã®ã¢ã¯ã»ã¹ããŒ
+
+**äŸ**: `abcd1234-ef56-7890-gh12-ijklmnopqrst`
+
+{{% notice style="tip" %}}
+AppDynamics ã®ã¢ã¯ã»ã¹ããŒã¯ãController ã® **Settings â License â Account** ã§ç¢ºèªã§ããŸãã
+{{% /notice %}}
+
+## èªèšŒæ
å ±ã®ã»ãã¥ãªãã£ã«é¢ãããã¹ããã©ã¯ãã£ã¹
+
+èªèšŒæ
å ±ã®ç®¡çã«ããã£ãŠã¯ã以äžã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããã
+
+- â
Jenkins ã®èªèšŒæ
å ±æå·åïŒçµã¿èŸŒã¿æ©èœïŒã䜿çšãã
+- â
Jenkins ã®ããŒã«ããŒã¹èªå¯ã«ããã¢ã¯ã»ã¹ãå¶éãã
+- â
SSH ããŒã宿çã«ããŒããŒã·ã§ã³ãã
+- â
EC2 ã€ã³ã¹ã¿ã³ã¹ã«ã¯æå°æš©éã® IAM ããŒã«ã䜿çšãã
+- â
èªèšŒæ
å ±ã¢ã¯ã»ã¹ã®ç£æ»ãã°ãæå¹åãã
+- â
èªèšŒæ
å ±ãããŒãžã§ã³ç®¡çã«ã³ãããããªã
+
+## Smart Agent ããã±ãŒãžã®ã»ããã¢ãã
+
+Smart Agent ã® ZIP ãã¡ã€ã«ã¯ãJenkins ããã¢ã¯ã»ã¹å¯èœãªå Žæã«é
眮ããå¿
èŠããããŸããæšå¥šãããã¢ãããŒãã¯ãJenkins ããŒã ãã£ã¬ã¯ããªã«ä¿åããããšã§ãã
+
+### Smart Agent ã®ããŠã³ããŒã
+
+```bash
+# Download from AppDynamics
+curl -o appdsmartagent_64_linux.zip \
+ "https://download.appdynamics.com/download/prox/download-file/smart-agent/latest/appdsmartagent_64_linux.zip"
+
+# Verify the download
+ls -lh appdsmartagent_64_linux.zip
+```
+
+### ä¿åå Žæ
+
+ãã€ãã©ã€ã³ã¯ãSmart Agent ã® ZIP ã `/var/jenkins_home/smartagent/appdsmartagent.zip` ã§åç
§ããŸãã
+
+次ã®ãããããéžæã§ããŸãã
+
+1. ZIP ããã®æ£ç¢ºãªå Žæã«é
眮ãã
+2. `SMARTAGENT_ZIP_PATH` ãã€ãã©ã€ã³ãã©ã¡ãŒã¿ãŒã倿ŽããŠãZIP ã®å Žæãæå®ãã
+
+## æ§æã®æ€èšŒ
+
+ãã€ãã©ã€ã³ã®äœæã«é²ãåã«ãã»ããã¢ãããæ€èšŒããŸãã
+
+### 1. ãšãŒãžã§ã³ãã®ã¹ããŒã¿ã¹ç¢ºèª
+
+1. **Manage Jenkins â Nodes** ã«ç§»åããŸã
+2. ãšãŒãžã§ã³ãããonlineããšè¡šç€ºãããŠããããšã確èªããŸã
+3. ã©ãã«ã `linux` ã«èšå®ãããŠããããšã確èªããŸã
+
+### 2. SSH æ¥ç¶ã®ãã¹ã
+
+SSH ãåäœããããšã確èªããããã«ãã·ã³ãã«ãªãã¹ããã€ãã©ã€ã³ãäœæããŸãã
+
+```groovy
+pipeline {
+ agent { label 'linux' }
+ stages {
+ stage('Test SSH') {
+ steps {
+ withCredentials([
+ sshUserPrivateKey(credentialsId: 'ssh-private-key',
+ keyFileVariable: 'SSH_KEY',
+ usernameVariable: 'SSH_USER'),
+ string(credentialsId: 'deployment-hosts', variable: 'HOSTS')
+ ]) {
+ sh '''
+ echo "Testing SSH credentials..."
+ echo "$HOSTS" | head -1 | while read HOST; do
+ ssh -i $SSH_KEY \
+ -o StrictHostKeyChecking=no \
+ -o ConnectTimeout=10 \
+ $SSH_USER@$HOST \
+ "echo 'Connection successful'"
+ done
+ '''
+ }
+ }
+ }
+ }
+}
+```
+
+### 3. èªèšŒæ
å ±ã®ååšç¢ºèª
+
+1. **Manage Jenkins â Credentials** ã«ç§»åããŸã
+2. 3 ã€ã®èªèšŒæ
å ±ããã¹ãŠãªã¹ããããŠããããšã確èªããŸã:
+ - `ssh-private-key`
+ - `deployment-hosts`
+ - `account-access-key`
+
+## ããããåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+
+### ãšãŒãžã§ã³ããå©çšã§ããªã
+
+**çç¶**: ãã€ãã©ã€ã³å®è¡æã«ãNo agent availableããšã©ãŒã衚瀺ããã
+
+**解決ç**:
+
+- **Manage Jenkins â Nodes** ã確èªããŸã
+- ãšãŒãžã§ã³ãããªã³ã©ã€ã³ã§ããããšã確èªããŸã
+- ãšãŒãžã§ã³ãã« `linux` ã©ãã«ãä»ããŠããããšã確èªããŸã
+- ãšãŒãžã§ã³ãã®æ¥ç¶æ§ããã¹ãããŸã
+
+### SSH æ¥ç¶ã®å€±æ
+
+**çç¶**: SSH çµç±ã§ã¿ãŒã²ãããã¹ãã«æ¥ç¶ã§ããªã
+
+**解決ç**:
+
+```bash
+# Test from Jenkins agent machine
+ssh -i /path/to/key ubuntu@172.31.1.243 -o ConnectTimeout=10
+
+# Check security group allows SSH from agent
+# Verify private key matches public key on target
+```
+
+### èªèšŒæ
å ±ãèŠã€ãããªã
+
+**çç¶**: ãCredential not foundããšã©ãŒã衚瀺ããã
+
+**解決ç**:
+
+- èªèšŒæ
å ±ã® ID ãå®å
šã«äžèŽããããšã確èªããŸã:
+ - `ssh-private-key`
+ - `deployment-hosts`
+ - `account-access-key`
+- èªèšŒæ
å ±ã®ã¹ã³ãŒãã **Global** ã«èšå®ãããŠããããšã確èªããŸã
+
+### ã¿ãŒã²ãããã¹ãã§ã®ããŒããã·ã§ã³æåŠ
+
+**çç¶**: SSH ã¯æåããããã³ãã³ãã permission denied ã§å€±æãã
+
+**解決ç**:
+
+```bash
+# On target host, verify user is in sudoers
+sudo visudo
+# Add line:
+ubuntu ALL=(ALL) NOPASSWD: ALL
+```
+
+## 次ã®ã¹ããã
+
+ããã§ Jenkins ã«èªèšŒæ
å ±ãšãšãŒãžã§ã³ããæ§æãããã®ã§ããããã€ãã€ãã©ã€ã³ãäœæããæºåãæŽããŸããã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/3-pipeline-creation.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/3-pipeline-creation.md
new file mode 100644
index 0000000000..81ce8ff634
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/3-pipeline-creation.md
@@ -0,0 +1,268 @@
+---
+title: ãã€ãã©ã€ã³ã®äœæ
+weight: 3
+time: 10 minutes
+---
+
+## æŠèŠ
+
+GitHubãªããžããªã«ã¯ãSmart Agentã®ã©ã€ããµã€ã¯ã«ã管çããããã®4ã€ã®äž»èŠãªãã€ãã©ã€ã³ãå«ãŸããŠããŸãã
+
+1. **Deploy Smart Agent** - Smart AgentãµãŒãã¹ã®ã€ã³ã¹ããŒã«ãšèµ·å
+2. **Install Machine Agent** - smartagentctlçµç±ã§Machine Agentãã€ã³ã¹ããŒã«
+3. **Install Database Agent** - smartagentctlçµç±ã§Database Agentãã€ã³ã¹ããŒã«
+4. **Cleanup All Agents** - /opt/appdynamicsãã£ã¬ã¯ããªãåé€
+
+ãã¹ãŠã®ãã€ãã©ã€ã³ã³ãŒãã¯ã[sm-jenkins GitHubãªããžããª](https://github.com/chambear2809/sm-jenkins)ã§å
¥æã§ããŸãã
+
+## ãã€ãã©ã€ã³ãã¡ã€ã«
+
+ãªããžããªã«ã¯ã以äžã®Jenkinsfileãã€ãã©ã€ã³å®çŸ©ãå«ãŸããŠããŸãã
+
+```
+sm-jenkins/
+âââ pipelines/
+ âââ Jenkinsfile.deploy # Deploy Smart Agent
+ âââ Jenkinsfile.install-machine-agent # Install Machine Agent
+ âââ Jenkinsfile.install-db-agent # Install Database Agent
+ âââ Jenkinsfile.cleanup # Cleanup All Agents
+```
+
+## Jenkinsã§ã®ãã€ãã©ã€ã³äœæ
+
+䜿çšãããåJenkinsfileã«ã€ããŠã以äžã®æé ã«åŸã£ãŠJenkinsã§ãã€ãã©ã€ã³ãäœæããŸãã
+
+### æ¹æ³1: SCMããã®ãã€ãã©ã€ã³ïŒæšå¥šïŒ
+
+ãã®æ¹æ³ã§ã¯ããã€ãã©ã€ã³ã³ãŒããããŒãžã§ã³ç®¡çäžã«ä¿ã¡ã倿Žãèªåçã«åæããŸãã
+
+#### ã¹ããã1: ãªããžããªã®ãã©ãŒã¯ãŸãã¯ã¯ããŒã³
+
+ãŸãããªããžããªãèªèº«ã®GitHubã¢ã«ãŠã³ããŸãã¯çµç¹ã«ãã©ãŒã¯ããããå
ã®ãªããžããªãçŽæ¥äœ¿çšããŸãã
+
+**Repository URL**: `https://github.com/chambear2809/sm-jenkins`
+
+#### ã¹ããã2: Jenkinsã§ãã€ãã©ã€ã³ãäœæ
+
+1. **Jenkins Dashboard** ã«ç§»åããŸã
+2. **New Item** ãã¯ãªãã¯ããŸã
+3. ã¢ã€ãã åãå
¥åããŸãïŒäŸ: `Deploy-Smart-Agent`ïŒ
+4. **Pipeline** ãéžæããŸã
+5. **OK** ãã¯ãªãã¯ããŸã
+
+#### ã¹ããã3: ãã€ãã©ã€ã³ã®æ§æ
+
+ãã€ãã©ã€ã³ã®æ§æããŒãžã§ä»¥äžãèšå®ããŸãã
+
+**General Section:**
+
+- **Description**: `Deploys AppDynamics Smart Agent to multiple hosts`
+- **Discard old builds** ã¯ãã§ãã¯ãå€ãããŸãŸã«ããŸãïŒãŸãã¯å¿
èŠã«å¿ããŠèšå®ïŒ
+
+**Build Triggers:**
+
+- æåå®è¡ã®ã¿ãšããå Žåã¯ãã§ãã¯ãå€ãããŸãŸã«ããŸã
+- å¿
èŠã«å¿ããŠwebhookãããŒãªã³ã°ãæ§æããŸã
+
+**Pipeline Section:**
+
+- **Definition**: `Pipeline script from SCM` ãéžæããŸã
+- **SCM**: `Git` ãéžæããŸã
+- **Repository URL**: `https://github.com/chambear2809/sm-jenkins`
+- **Credentials**: ãã©ã€ããŒããªããžããªã䜿çšããå Žåã¯è¿œå ããŸã
+- **Branch Specifier**: `*/main`ïŒãŸã㯠`*/master`ïŒ
+- **Script Path**: `pipelines/Jenkinsfile.deploy`
+
+#### ã¹ããã4: ä¿å
+
+**Save** ãã¯ãªãã¯ããŠãã€ãã©ã€ã³ãäœæããŸãã
+
+#### ã¹ããã5: ä»ã®ãã€ãã©ã€ã³ã«å¯ŸããŠãç¹°ãè¿ã
+
+äœæãããåãã€ãã©ã€ã³ã«å¯ŸããŠãé©åãªã¹ã¯ãªãããã¹ã䜿çšããŠã¹ããã2ã4ãç¹°ãè¿ããŸãã
+
+| Pipeline Name | Script Path |
+|---------------|-------------|
+| Deploy-Smart-Agent | `pipelines/Jenkinsfile.deploy` |
+| Install-Machine-Agent | `pipelines/Jenkinsfile.install-machine-agent` |
+| Install-Database-Agent | `pipelines/Jenkinsfile.install-db-agent` |
+| Cleanup-All-Agents | `pipelines/Jenkinsfile.cleanup` |
+
+### æ¹æ³2: çŽæ¥ãã€ãã©ã€ã³ã¹ã¯ãªãã
+
+代ããã«ãJenkinsfileã®å
容ãçŽæ¥Jenkinsã«ã³ããŒããããšãã§ããŸãã
+
+1. **Create New Item**ïŒæ¹æ³1ãšåãïŒ
+2. **Pipeline** ã»ã¯ã·ã§ã³ã§ä»¥äžãèšå®ããŸã:
+ - **Definition**: `Pipeline script` ãéžæããŸã
+ - **Script**: GitHubãã Jenkinsfile ã®å
容å
šäœãã³ããŒïŒããŒã¹ãããŸã
+3. **Save**
+
+{{% notice style="tip" %}}
+æ¹æ³1ïŒSCMïŒã¯ããã€ãã©ã€ã³ãããŒãžã§ã³ç®¡çäžã«ä¿ã¡ãæŽæ°ã容æã«ããããæšå¥šãããŸãã
+{{% /notice %}}
+
+## ãã€ãã©ã€ã³ãã©ã¡ãŒã¿ãŒ
+
+åãã€ãã©ã€ã³ã¯æ§æå¯èœãªãã©ã¡ãŒã¿ãŒãåãåããŸããã¡ã€ã³ã®ãããã€ã¡ã³ããã€ãã©ã€ã³ã®äž»èŠãªãã©ã¡ãŒã¿ãŒã¯ä»¥äžã®ãšããã§ãã
+
+### Deploy Smart Agent ãã€ãã©ã€ã³ã®ãã©ã¡ãŒã¿ãŒ
+
+| Parameter | Default | Description |
+|-----------|---------|-------------|
+| `SMARTAGENT_ZIP_PATH` | `/var/jenkins_home/smartagent/appdsmartagent.zip` | JenkinsãµãŒããŒã®Smart Agent ZIPãžã®ãã¹ |
+| `REMOTE_INSTALL_DIR` | `/opt/appdynamics/appdsmartagent` | ã¿ãŒã²ãããã¹ãã®ã€ã³ã¹ããŒã«ãã£ã¬ã¯ã㪠|
+| `APPD_USER` | `ubuntu` | Smart Agentããã»ã¹ãå®è¡ãããŠãŒã¶ãŒ |
+| `APPD_GROUP` | `ubuntu` | Smart Agentããã»ã¹ãå®è¡ããã°ã«ãŒã |
+| `SSH_PORT` | `22` | ãªã¢ãŒããã¹ãçšã®SSHããŒã |
+| `AGENT_NAME` | `smartagent` | Smart Agentã®åå |
+| `LOG_LEVEL` | `DEBUG` | ãã°ã¬ãã«ïŒDEBUGãINFOãWARNãERRORïŒ |
+
+### Cleanup ãã€ãã©ã€ã³ã®ãã©ã¡ãŒã¿ãŒ
+
+| Parameter | Default | Description |
+|-----------|---------|-------------|
+| `REMOTE_INSTALL_DIR` | `/opt/appdynamics/appdsmartagent` | åé€ãããã£ã¬ã¯ã㪠|
+| `SSH_PORT` | `22` | ãªã¢ãŒããã¹ãçšã®SSHããŒã |
+| `CONFIRM_CLEANUP` | `false` | ã¯ãªãŒã³ã¢ãããé²ããããã«ãã§ãã¯ããå¿
èŠããããŸã |
+
+{{% notice style="warning" %}}
+ã¯ãªãŒã³ã¢ãããã€ãã©ã€ã³ã«ã¯ã誀ã£ãåé€ãé²ãããã®ç¢ºèªãã©ã¡ãŒã¿ãŒãå«ãŸããŠããŸããã¯ãªãŒã³ã¢ãããå®è¡ããã«ã¯ã`CONFIRM_CLEANUP` ããã§ãã¯ããå¿
èŠããããŸãã
+{{% /notice %}}
+
+## ãã€ãã©ã€ã³æ§é ã®çè§£
+
+ãããã€ã¡ã³ããã€ãã©ã€ã³ã®äž»èŠãªã³ã³ããŒãã³ãã確èªããŠã¿ãŸãããã
+
+### 1. Agent宣èš
+
+```groovy
+agent { label 'linux' }
+```
+
+ããã«ããã`linux` ã©ãã«ãæã€JenkinsãšãŒãžã§ã³ãäžã§ãã€ãã©ã€ã³ãå®è¡ãããããšãä¿èšŒãããŸãã
+
+### 2. Parametersãããã¯
+
+```groovy
+parameters {
+ string(name: 'SMARTAGENT_ZIP_PATH', ...)
+ string(name: 'REMOTE_INSTALL_DIR', ...)
+ // ... more parameters
+}
+```
+
+ãã«ãã®ããªã¬ãŒæã«èšå®å¯èœãªæ§æãã©ã¡ãŒã¿ãŒãå®çŸ©ããŸãã
+
+### 3. Stages
+
+ãããã€ã¡ã³ããã€ãã©ã€ã³ã«ã¯ã以äžã®ã¹ããŒãžããããŸãã
+
+1. **Preparation** - èªèšŒæ
å ±ããã¿ãŒã²ãããã¹ããèªã¿èŸŒã¿ãŸã
+2. **Extract Smart Agent** - ZIPãã¡ã€ã«ãã¹ããŒãžã³ã°ãã£ã¬ã¯ããªã«å±éããŸã
+3. **Configure Smart Agent** - config.iniãã³ãã¬ãŒããäœæããŸã
+4. **Deploy to Remote Hosts** - åãã¹ãã«ãã¡ã€ã«ãã³ããŒããSmart Agentãèµ·åããŸã
+5. **Verify Installation** - å
šãã¹ãã§Smart Agentã®ã¹ããŒã¿ã¹ã確èªããŸã
+
+### 4. Credentialsãã€ã³ãã£ã³ã°
+
+```groovy
+withCredentials([
+ sshUserPrivateKey(credentialsId: 'ssh-private-key', ...),
+ string(credentialsId: 'account-access-key', ...)
+]) {
+ // Pipeline code with access to credentials
+}
+```
+
+ãã°ã«èªèšŒæ
å ±ãé²åºãããããšãªããå®å
šã«èªèšŒæ
å ±ãèªã¿èŸŒã¿ãŸãã
+
+### 5. Post Actions
+
+```groovy
+post {
+ success { ... }
+ failure { ... }
+ always { ... }
+}
+```
+
+æåã»å€±æã«é¢ãããããã€ãã©ã€ã³å®äºåŸã«å®è¡ããã¢ã¯ã·ã§ã³ãå®çŸ©ããŸãã
+
+## ãã€ãã©ã€ã³ã®åœåèŠå
+
+æç¢ºããšæŽçã®ããã«ãäžè²«ããåœåèŠåã䜿çšããŸãã
+
+**æšå¥šãããåå:**
+
+```
+01-Deploy-Smart-Agent
+02-Install-Machine-Agent
+03-Install-Database-Agent
+04-Cleanup-All-Agents
+```
+
+æ°å€ãã¬ãã£ãã¯ã¹ã¯ãJenkinsããã·ã¥ããŒãã§ã®è«ççãªé åºãç¶æããã®ã«åœ¹ç«ã¡ãŸãã
+
+## ãã©ã«ããŒã«ãããã€ãã©ã€ã³ã®æŽç
+
+ããè¯ãæŽçã®ããã«ãJenkinsãã©ã«ããŒã䜿çšã§ããŸãã
+
+1. **ãã©ã«ããŒã®äœæ**:
+ - **New Item** ãã¯ãªãã¯ããŸã
+ - ååãå
¥åããŸã: `AppDynamics Smart Agent`
+ - **Folder** ãéžæããŸã
+ - **OK** ãã¯ãªãã¯ããŸã
+
+2. **ãã©ã«ããŒå
ã«ãã€ãã©ã€ã³ãäœæ**:
+ - ãã©ã«ããŒã«å
¥ããŸã
+ - äžèšã®æé ã«åŸã£ãŠãã€ãã©ã€ã³ãäœæããŸã
+
+**æ§é ã®äŸ:**
+
+```
+AppDynamics Smart Agent/
+âââ Deployment/
+â âââ 01-Deploy-Smart-Agent
+âââ Agent Installation/
+â âââ 02-Install-Machine-Agent
+â âââ 03-Install-Database-Agent
+âââ Cleanup/
+ âââ 04-Cleanup-All-Agents
+```
+
+## ãã€ãã©ã€ã³ã³ãŒãã®åç
§
+
+GitHubãªããžããªã§ãå®å
šãªãã€ãã©ã€ã³ã³ãŒããåç
§ã§ããŸãã
+
+**ã¡ã€ã³ã®ãããã€ã¡ã³ããã€ãã©ã€ã³:**
+[https://github.com/chambear2809/sm-jenkins/blob/main/pipelines/Jenkinsfile.deploy](https://github.com/chambear2809/sm-jenkins/blob/main/pipelines/Jenkinsfile.deploy)
+
+**ãã®ä»ã®ãã€ãã©ã€ã³:**
+
+- [Jenkinsfile.install-machine-agent](https://github.com/chambear2809/sm-jenkins/blob/main/pipelines/Jenkinsfile.install-machine-agent)
+- [Jenkinsfile.install-db-agent](https://github.com/chambear2809/sm-jenkins/blob/main/pipelines/Jenkinsfile.install-db-agent)
+- [Jenkinsfile.cleanup](https://github.com/chambear2809/sm-jenkins/blob/main/pipelines/Jenkinsfile.cleanup)
+
+## ãã€ãã©ã€ã³æ§æã®ãã¹ã
+
+å®å
šãªãããã€ã¡ã³ããå®è¡ããåã«ããã€ãã©ã€ã³æ§æããã¹ãããŸãã
+
+### 1. åäžãã¹ãã§ã®ãã©ã€ã©ã³
+
+1. 1ã€ã®IPã®ã¿ãæã€ãã¹ãèªèšŒæ
å ± `deployment-hosts-test` ãäœæããŸã
+2. ãã€ãã©ã€ã³ãäžæçã«å€æŽããŠããã®èªèšŒæ
å ±ã䜿çšããããã«ããŸã
+3. ãã€ãã©ã€ã³ãå®è¡ããåäžãã¹ãã§åäœããããšã確èªããŸã
+4. 確èªã§ããããå®å
šãªãã¹ããªã¹ãã䜿çšããããã«æŽæ°ããŸã
+
+### 2. æ§æãã§ãã¯
+
+Jenkinsã«ã¯çµã¿èŸŒã¿ã®æ§æããªããŒã¿ãŒãæäŸãããŠããŸãã
+
+1. ãã€ãã©ã€ã³ã«ç§»åããŸã
+2. **Pipeline Syntax** ãªã³ã¯ãã¯ãªãã¯ããŸã
+3. **Declarative Directive Generator** ã䜿çšããŠæ§æãæ€èšŒããŸã
+
+## 次ã®ã¹ããã
+
+ãã€ãã©ã€ã³ãäœæã§ããã®ã§ãæåã®Smart Agentãããã€ã¡ã³ããå®è¡ããæºåãæŽããŸããïŒ
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/4-deployment-workflow.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/4-deployment-workflow.md
new file mode 100644
index 0000000000..51e7ae6f5f
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/4-deployment-workflow.md
@@ -0,0 +1,366 @@
+---
+title: ãããã€ã¡ã³ãã¯ãŒã¯ãããŒ
+weight: 4
+time: 15 minutes
+---
+
+## ååãããã€ã¡ã³ã
+
+ãã€ãã©ã€ã³ã®èšå®ãå®äºããã®ã§ãåããŠã® Smart Agent ãããã€ã¡ã³ããå®è¡ããæé ã説æããŸãã
+
+### Step 1: ãã€ãã©ã€ã³ãžç§»åãã
+
+1. **Jenkins Dashboard** ã«ç§»åããŸã
+2. **Deploy-Smart-Agent** ãã€ãã©ã€ã³ãã¯ãªãã¯ããŸã
+
+### Step 2: ãã©ã¡ãŒã¿ãŒä»ãã§ãã«ããã
+
+1. å·Šãµã€ãããŒã® **Build with Parameters** ãã¯ãªãã¯ããŸã
+2. ããã©ã«ããã©ã¡ãŒã¿ãŒã確èªããŸã:
+ - **SMARTAGENT_ZIP_PATH**: ãã¹ãæ£ããã確èªããŸã
+ - **REMOTE_INSTALL_DIR**: `/opt/appdynamics/appdsmartagent`
+ - **APPD_USER**: `ubuntu` (ãŸãã¯äœ¿çšããŠãã SSH ãŠãŒã¶ãŒ)
+ - **APPD_GROUP**: `ubuntu`
+ - **SSH_PORT**: `22`
+ - **AGENT_NAME**: `smartagent`
+ - **LOG_LEVEL**: `DEBUG`
+
+3. å¿
èŠã«å¿ããŠãã©ã¡ãŒã¿ãŒã調æŽããŸã
+4. **Build** ãã¯ãªãã¯ããŸã
+
+{{% notice style="tip" %}}
+ååãããã€ã¡ã³ãã§ã¯ãIP ã¢ãã¬ã¹ã1ã€ã ãèšèŒããå¥ã®èªèšŒæ
å ±ãäœæããåäžãã¹ãã§ãã¹ãããããšãæ€èšããŠãã ããã
+{{% /notice %}}
+
+### Step 3: ãã€ãã©ã€ã³å®è¡ãç£èŠãã
+
+**Build** ãã¯ãªãã¯ãããšã以äžã衚瀺ãããŸã:
+
+1. **Build added to queue** - Build History ã«ãã«ãçªå·ã衚瀺ãããŸã
+2. **ãã«ãçªå·ãã¯ãªãã¯** (äŸ: #1) ããŠè©³çްã衚瀺ããŸã
+3. **Console Output ãã¯ãªãã¯** ããŠãªã¢ã«ã¿ã€ã ã®ãã°ã衚瀺ããŸã
+
+### Step 4: ã³ã³ãœãŒã«åºåãçè§£ãã
+
+ã³ã³ãœãŒã«åºåã«ã¯ãããã€ã¡ã³ãã®åã¹ããŒãžã衚瀺ãããŸã:
+
+```
+Started by user admin
+Running in Durability level: MAX_SURVIVABILITY
+[Pipeline] Start of Pipeline
+[Pipeline] node
+Running on aws-vpc-agent in /home/ubuntu/jenkins/workspace/Deploy-Smart-Agent
+[Pipeline] {
+[Pipeline] stage
+[Pipeline] { (Preparation)
+[Pipeline] script
+[Pipeline] {
+Preparing Smart Agent deployment to 3 hosts: 172.31.1.243, 172.31.1.48, 172.31.1.5
+...
+```
+
+衚瀺ãããäž»ãªã¹ããŒãž:
+
+1. â
**Preparation** - ãã¹ããªã¹ããèªã¿èŸŒã¿ãæ€èšŒããŸã
+2. â
**Extract Smart Agent** - ZIP ãã¡ã€ã«ãå±éããŸã
+3. â
**Configure Smart Agent** - config.ini ãäœæããŸã
+4. â
**Deploy to Remote Hosts** - åãã¹ããžãããã€ããŸã
+5. â
**Verify Installation** - Smart Agent ã®ã¹ããŒã¿ã¹ã確èªããŸã
+
+### Step 5: çµæã確èªãã
+
+å®äºåŸã以äžã衚瀺ãããŸã:
+
+**æå:**
+
+```
+Smart Agent successfully deployed to all hosts
+Finished: SUCCESS
+```
+
+**éšåçãªæå:**
+
+```
+Deployment completed with some failures
+Failed hosts: 172.31.1.48
+Finished: UNSTABLE
+```
+
+**倱æ:**
+
+```
+Smart Agent deployment failed. Check logs for details.
+Finished: FAILURE
+```
+
+## ã€ã³ã¹ããŒã«ã®æ€èšŒ
+
+ãããã€ã¡ã³ããæåãããã察象ãã¹ãã§ Smart Agent ã皌åããŠããããšãæ€èšŒããŸãã
+
+### Smart Agent ã¹ããŒã¿ã¹ã®ç¢ºèª
+
+察象ãã¹ããž SSH æ¥ç¶ããã¹ããŒã¿ã¹ã確èªããŸã:
+
+```bash
+# SSH to target host
+ssh ubuntu@172.31.1.243
+
+# Navigate to installation directory
+cd /opt/appdynamics/appdsmartagent
+
+# Check Smart Agent status
+sudo ./smartagentctl status
+```
+
+**æåŸ
ãããåºå:**
+
+```
+Smart Agent is running (PID: 12345)
+Service: appdsmartagent.service
+Status: active (running)
+```
+
+### ã€ã³ã¹ããŒã«æžã¿ãšãŒãžã§ã³ãã®äžèŠ§è¡šç€º
+
+```bash
+cd /opt/appdynamics/appdsmartagent
+sudo ./smartagentctl list
+```
+
+**æåŸ
ãããåºå:**
+
+```
+No agents currently installed
+(Use install-machine-agent or install-db-agent pipelines to add agents)
+```
+
+### ãã°ã®ç¢ºèª
+
+```bash
+cd /opt/appdynamics/appdsmartagent
+tail -f log.log
+```
+
+AppDynamics ã³ã³ãããŒã©ãŒãžã®æ¥ç¶æåã¡ãã»ãŒãžã確èªããŸãã
+
+### AppDynamics Controller ã§ã®æ€èšŒ
+
+1. AppDynamics Controller ã«ãã°ã€ã³ããŸã
+2. **Servers â Servers** ã«ç§»åããŸã
+3. æ°ãããããã€ããããã¹ããæ¢ããŸã
+4. Smart Agent ãã¡ããªã¯ã¹ãéä¿¡ããŠããããšã確èªããŸã
+
+## 远å ãšãŒãžã§ã³ãã®ã€ã³ã¹ããŒã«
+
+Smart Agent ããããã€ãããããä»ã®ãã€ãã©ã€ã³ã䜿çšããŠç¹å®ã®ãšãŒãžã§ã³ãã¿ã€ããã€ã³ã¹ããŒã«ã§ããŸãã
+
+### Machine Agent ã®ã€ã³ã¹ããŒã«
+
+1. **Install-Machine-Agent** ãã€ãã©ã€ã³ãžç§»åããŸã
+2. **Build with Parameters** ãã¯ãªãã¯ããŸã
+3. ãã©ã¡ãŒã¿ãŒã確èªããŸã:
+ - **AGENT_NAME**: `machine-agent`
+ - **SSH_PORT**: `22`
+4. **Build** ãã¯ãªãã¯ããŸã
+
+ãã€ãã©ã€ã³ã¯åãã¹ããž SSH æ¥ç¶ãã以äžãå®è¡ããŸã:
+
+```bash
+cd /opt/appdynamics/appdsmartagent
+sudo ./smartagentctl install --component machine
+```
+
+### Database Agent ã®ã€ã³ã¹ããŒã«
+
+1. **Install-Database-Agent** ãã€ãã©ã€ã³ãžç§»åããŸã
+2. **Build with Parameters** ãã¯ãªãã¯ããŸã
+3. ããŒã¿ããŒã¹æ¥ç¶ãã©ã¡ãŒã¿ãŒãèšå®ããŸã
+4. **Build** ãã¯ãªãã¯ããŸã
+
+ãã€ãã©ã€ã³ã¯å
šãã¹ãã« Database Agent ãã€ã³ã¹ããŒã«ããã³èšå®ããŸãã
+
+### ãšãŒãžã§ã³ãã€ã³ã¹ããŒã«ã®æ€èšŒ
+
+ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«åŸã衚瀺ãããããšãæ€èšŒããŸã:
+
+```bash
+cd /opt/appdynamics/appdsmartagent
+sudo ./smartagentctl list
+```
+
+**æåŸ
ãããåºå:**
+
+```
+Installed agents:
+- machine-agent (running)
+- db-agent (running)
+```
+
+## äžè¬çãªãããã€ã¡ã³ãã·ããªãª
+
+### ã·ããªãª 1: ååãããã€ã¡ã³ã
+
+**ã¯ãŒã¯ãããŒ:**
+
+1. **Deploy-Smart-Agent** ãã€ãã©ã€ã³ãå®è¡ããŸã
+2. å®äºãåŸ
ã¡ãæ€èšŒããŸã
+3. å¿
èŠã«å¿ã㊠**Install-Machine-Agent** ãå®è¡ããŸã
+4. å¿
èŠã«å¿ã㊠**Install-Database-Agent** ãå®è¡ããŸã
+
+### ã·ããªãª 2: Smart Agent ã®æŽæ°
+
+Smart Agent ãæ°ããããŒãžã§ã³ã«æŽæ°ããå Žå:
+
+1. æ°ãã Smart Agent ZIP ãããŠã³ããŒãããŸã
+2. èšå®æžã¿ã®ãã¹ã§ Jenkins ã«é
眮ããŸã
+3. **Deploy-Smart-Agent** ãã€ãã©ã€ã³ãå床å®è¡ããŸã
+
+ãã€ãã©ã€ã³ã¯èªåçã«ä»¥äžãå®è¡ããŸã:
+
+- æ¢åã® Smart Agent ã忢ãã
+- å€ããã¡ã€ã«ãåé€ãã
+- æ°ããããŒãžã§ã³ãã€ã³ã¹ããŒã«ãã
+- Smart Agent ãåèµ·åãã
+
+### ã·ããªãª 3: æ°èŠãã¹ãã®è¿œå
+
+æ°ãããã¹ãã« Smart Agent ã远å ããå Žå:
+
+1. Jenkins ã® `deployment-hosts` èªèšŒæ
å ±ãæŽæ°ããŸã
+2. æ°ãã IP ã¢ãã¬ã¹ã远å ããŸã (1 è¡ã« 1 ã€)
+3. **Deploy-Smart-Agent** ãã€ãã©ã€ã³ãå®è¡ããŸã
+
+ãã€ãã©ã€ã³ã¯ä»¥äžãå®è¡ããŸã:
+
+- èšå®æžã¿ã®ãã¹ããã¹ããããã (åªçãªå Žå)
+- æ°ãããã¹ãã«ã®ã¿ãããã€ãã
+
+### ã·ããªãª 4: å®å
šãªåé€
+
+å
šãã¹ããã Smart Agent ãå®å
šã«åé€ããå Žå:
+
+1. **Cleanup-All-Agents** ãã€ãã©ã€ã³ãžç§»åããŸã
+2. **Build with Parameters** ãã¯ãªãã¯ããŸã
+3. `CONFIRM_CLEANUP` ãã§ãã¯ããã¯ã¹ã **ãã§ãã¯** ããŸã
+4. **Build** ãã¯ãªãã¯ããŸã
+
+{{% notice style="danger" %}}
+ããã«ãã `/opt/appdynamics/appdsmartagent` ãã£ã¬ã¯ããªãå
šãã¹ãããå®å
šã«åé€ãããŸãããã®æäœã¯åãæ¶ããŸããã
+{{% /notice %}}
+
+## ãããã€ã¡ã³ãã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+
+### Preparation ã¹ããŒãžã§ãã«ãã倱æãã
+
+**çç¶**: ãã¹ããªã¹ãã®èªã¿èŸŒã¿æã«ãã€ãã©ã€ã³ã倱æããŸã
+
+**åå **: `deployment-hosts` èªèšŒæ
å ±ãäžè¶³ãŸãã¯äžæ£ã§ã
+
+**解決ç**:
+
+1. **Manage Jenkins â Credentials** ãžç§»åããŸã
+2. `deployment-hosts` èªèšŒæ
å ±ãååšããããšã確èªããŸã
+3. ãã©ãŒãããã確èªããŸã (1 è¡ã« 1 IPãã«ã³ããªã)
+4. æ«å°Ÿã®ã¹ããŒã¹ããªãããšã確èªããŸã
+
+### SSH æ¥ç¶ã®å€±æ
+
+**çç¶**: "Permission denied" ãŸã㯠"Connection refused" ãšã©ãŒ
+
+**解決ç**:
+
+**ã»ãã¥ãªãã£ã°ã«ãŒãã®ç¢ºèª:**
+
+```bash
+# Verify Jenkins agent can reach target
+ping 172.31.1.243
+telnet 172.31.1.243 22
+```
+
+**SSH ãæåã§ãã¹ã:**
+
+```bash
+# From Jenkins agent machine
+ssh -i /path/to/key ubuntu@172.31.1.243
+```
+
+**SSH ããŒã®æ€èšŒ:**
+
+1. `ssh-private-key` èªèšŒæ
å ±ãæ£ããããšã確èªããŸã
+2. å
¬éããŒã察象ãã¹ãã® `~/.ssh/authorized_keys` ã«ããããšã確èªããŸã
+
+### Smart Agent ãèµ·åããªã
+
+**çç¶**: ãããã€ã¡ã³ãã¯å®äºããã Smart Agent ã皌åããŠããŸãã
+
+**解決ç**:
+
+**察象ãã¹ãã®ãã°ã確èª:**
+
+```bash
+cd /opt/appdynamics/appdsmartagent
+cat log.log
+```
+
+**ããããåé¡:**
+
+- **ã¢ã¯ã»ã¹ããŒãç¡å¹**: `account-access-key` èªèšŒæ
å ±ã確èªããŸã
+- **ãããã¯ãŒã¯æ¥ç¶**: Controller ãžã®éä¿¡ HTTPS ã確èªããŸã
+- **æš©éã®åé¡**: APPD_USER ã«æ£ããæš©éãããããšã確èªããŸã
+
+### éšåçãªãããã€ã¡ã³ãæå
+
+**çç¶**: äžéšã®ãã¹ãã¯æåããä»ã¯å€±æããŸã
+
+**解決ç**:
+
+1. **Console Output ã確èª** - ã©ã®ãã¹ãã倱æããããç¹å®ããŸã
+2. **倱æãããã¹ãã調æ»** - SSH æ¥ç¶ããŠæåã§ãã¹ãããŸã
+3. **ãã€ãã©ã€ã³ãåå®è¡** - Jenkins ã¯å詊è¡ãå¿
èŠãªãã¹ãã远跡ããŸã
+
+## ãã€ãã©ã€ã³ã®ãã¹ããã©ã¯ãã£ã¹
+
+### 1. ãŸãåäžãã¹ãã§ãã¹ããã
+
+æ°ããèšå®ã¯ãæ¬çªç°å¢ã«ãããã€ããåã«å¿
ãåäžãã¹ãã§ãã¹ãããŸã:
+
+```
+1. Create deployment-hosts-test credential (1 IP)
+2. Create test pipeline pointing to this credential
+3. Verify success
+4. Deploy to full host list
+```
+
+### 2. 説æçãªãã«ã説æã䜿çšãã
+
+ãã«ããããªã¬ãŒããåŸã説æã远å ããŸã:
+
+1. ãã«ãããŒãžãžç§»åããŸã
+2. **Edit Build Information** ãã¯ãªãã¯ããŸã
+3. 説æã远å ããŸã: "Production deployment - Q4 2024"
+
+### 3. ãã«ãå±¥æŽãç£èŠãã
+
+宿çã«ãã«ãå±¥æŽã®ãã¿ãŒã³ã確èªããŸã:
+
+- 倱æãããã«ã
+- å®è¡æéã®åŸå
+- ãšã©ãŒã¡ãã»ãŒãž
+
+### 4. ã¡ã³ããã³ã¹ãŠã£ã³ããŠäžã«ãããã€ã¡ã³ããã¹ã±ãžã¥ãŒã«ãã
+
+æ¬çªã·ã¹ãã ã®å Žå:
+
+- Jenkins ã®ã¹ã±ãžã¥ãŒã«ãã«ãã䜿çšãã
+- ãã©ãã£ãã¯ã®å°ãªãæé垯ã«ãããã€ãã
+- ããŒã«ããã¯èšç»ãæºåããŠãã
+
+### 5. èªèšŒæ
å ±ãææ°ã«ä¿ã€
+
+- SSH ããŒãååæããšã«ããŒããŒã·ã§ã³ãã
+- ã€ã³ãã©ã¹ãã©ã¯ãã£ã®å€æŽã«å¿ããŠãã¹ããªã¹ããæŽæ°ãã
+- AppDynamics ã¢ã¯ã»ã¹ããŒã®æå¹æ§ãæ€èšŒãã
+
+## Next Steps
+
+次ã«ãå€§èŠæš¡ãããã€ã¡ã³ãã«åããã¹ã±ãŒãªã³ã°ãšéçšäžã®èæ
®äºé
ãèŠãŠãããŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/_index.md
new file mode 100644
index 0000000000..580be6eb77
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/2-jenkins-automation/_index.md
@@ -0,0 +1,80 @@
+---
+title: Jenkins Automation
+weight: 2
+time: 2 minutes
+description: Jenkins ãã€ãã©ã€ã³ã䜿çšããŠãè€æ°ã®ãã¹ãã«ãŸããã AppDynamics Smart Agent ã®ãããã€ãšã©ã€ããµã€ã¯ã«ç®¡çãèªååããæ¹æ³ãåŠã³ãŸãã
+---
+
+## ã¯ããã«
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã**Jenkins** ã䜿çšããŠãè€æ°ã® EC2 ã€ã³ã¹ã¿ã³ã¹ã«ãŸããã **AppDynamics Smart Agent** ã®ãããã€ãšã©ã€ããµã€ã¯ã«ç®¡çãèªååããæ¹æ³ã解説ããŸãã10 å°ã®ãã¹ãã管çããå Žåã§ãã10,000 å°ã®ãã¹ãã管çããå Žåã§ããæ¬ã¬ã€ãã§ã¯ã¹ã±ãŒã©ãã«ã§ã»ãã¥ã¢ããã€åçŸæ§ã®ãã Smart Agent éçšã®ããã« Jenkins ãã€ãã©ã€ã³ã掻çšããæ¹æ³ã玹ä»ããŸãã
+
+ 
+
+## åŠç¿å
容
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã以äžã®æ¹æ³ãåŠã³ãŸãã
+
+- Jenkins ã䜿ã£ãŠè€æ°ã®ãã¹ããž **Smart Agent ããããã€** ãã
+- ã»ãã¥ã¢ãª SSH ããã³ AppDynamics ã¢ã¯ã»ã¹ã®ããã« **Jenkins ã¯ã¬ãã³ã·ã£ã«ãæ§æ** ãã
+- æè»ãªãããã€ã·ããªãªã«å¯Ÿå¿ãã **ãã©ã¡ãŒã¿åããããã€ãã©ã€ã³ãäœæ** ãã
+- æ°åå°ã®ãã¹ããžã¹ã±ãŒã«ãããããã« **ãããåŠçãå®è£
** ãã
+- ã€ã³ã¹ããŒã«ãæ§æã忢ãã¯ãªãŒã³ã¢ãããªã© **ãšãŒãžã§ã³ãã®å®å
šãªã©ã€ããµã€ã¯ã«ã管ç** ãã
+- èªåçãªãšã©ãŒè¿œè·¡ãšã¬ããŒãã£ã³ã°ã«ãã **倱æãé©åã«åŠç** ãã
+
+## äž»ãªç¹åŸŽ
+
+- ð **䞊åãããã€** - è€æ°ã®ãã¹ããžåæã«ãããã€
+- ð **å®å
šãªã©ã€ããµã€ã¯ã«ç®¡ç** - ãšãŒãžã§ã³ãã®ã€ã³ã¹ããŒã«ãã¢ã³ã€ã³ã¹ããŒã«ã忢ãã¯ãªãŒã³ã¢ãã
+- ðïž **Infrastructure as Code** - ãã¹ãŠã®ãã€ãã©ã€ã³ãããŒãžã§ã³ç®¡ç
+- ð **ã»ãã¥ã¢** - Jenkins ã¯ã¬ãã³ã·ã£ã«çµç±ã® SSH éµããŒã¹èªèšŒ
+- ð **å€§èŠæš¡ã«ã¹ã±ãŒã«å¯èœ** - èªåãããåŠçã§æ°åå°ã®ãã¹ããžãããã€
+- ðïž **Jenkins Agent** - AWS VPC å
ã§å®è¡
+
+## ã¢ãŒããã¯ãã£æŠèŠ
+
+```text
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
+â Jenkins-based Deployment â
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
+â â
+â Developer âââ¶ Jenkins Master âââ¶ Jenkins Agent (AWS VPC) â
+â â â
+â ââââ¶ Host 1 (SSH) â
+â ââââ¶ Host 2 (SSH) â
+â ââââ¶ Host 3 (SSH) â
+â ââââ¶ Host N (SSH) â
+â â
+â All hosts send metrics âââ¶ AppDynamics Controller â
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
+```
+
+## ã¯ãŒã¯ã·ã§ããã®æ§æ
+
+ãã®ã¯ãŒã¯ã·ã§ããã«ã¯ä»¥äžãå«ãŸããŸãã
+
+1. **ã¢ãŒããã¯ãã£ãšèšèš** - ã·ã¹ãã èšèšãšãããã¯ãŒã¯ããããžãŒã®çè§£
+2. **Jenkins ã®ã»ããã¢ãã** - Jenkinsãã¯ã¬ãã³ã·ã£ã«ããšãŒãžã§ã³ãã®æ§æ
+3. **ãã€ãã©ã€ã³ã®äœæ** - ãããã€ãã€ãã©ã€ã³ã®äœæãšæ§æ
+4. **ãããã€ã¯ãŒã¯ãããŒ** - ãããã€ã®å®è¡ãšã€ã³ã¹ããŒã«ã®æ€èšŒ
+
+## åææ¡ä»¶
+
+- Pipeline ãã©ã°ã€ã³ãåãã Jenkins ãµãŒããŒïŒ2.300 以éïŒ
+- ã¿ãŒã²ãã EC2 ã€ã³ã¹ã¿ã³ã¹ãšåã VPC å
ã«ãã Jenkins agent
+- èªèšŒçšã® SSH éµãã¢
+- AppDynamics Smart Agent ããã±ãŒãž
+- SSH ã¢ã¯ã»ã¹å¯èœãªã¿ãŒã²ãã Ubuntu EC2 ã€ã³ã¹ã¿ã³ã¹
+
+## GitHub ãªããžããª
+
+ãã¹ãŠã®ãã€ãã©ã€ã³ã³ãŒããšæ§æãã¡ã€ã«ã¯ GitHub ãªããžããªã§æäŸãããŠããŸãã
+
+**[https://github.com/chambear2809/sm-jenkins](https://github.com/chambear2809/sm-jenkins)**
+
+ãªããžããªã«ã¯ä»¥äžãå«ãŸããŸãã
+
+- å®å
šãª Jenkinsfile ãã€ãã©ã€ã³å®çŸ©
+- 詳现ãªã»ããã¢ããããã¥ã¡ã³ã
+- æ§æäŸ
+- ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã¬ã€ã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/1-architecture.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/1-architecture.md
new file mode 100644
index 0000000000..5d8a79a332
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/1-architecture.md
@@ -0,0 +1,312 @@
+---
+title: ã¢ãŒããã¯ãã£ãšèšèš
+weight: 1
+time: 5 minutes
+---
+
+## ã·ã¹ãã ã¢ãŒããã¯ãã£
+
+GitHub Actions ããŒã¹ã® Smart Agent ãããã€ã¡ã³ãã·ã¹ãã ã¯ãAWS VPC å
ã®ã»ã«ããã¹ãã©ã³ããŒã䜿çšããŠãSSH çµç±ã§è€æ°ã®ã¿ãŒã²ãããã¹ããžã®ãããã€ã¡ã³ãã調æŽããŸãã
+
+### é«ã¬ãã«ã¢ãŒããã¯ãã£
+
+```mermaid
+graph TB
+ subgraph Internet
+ GH[GitHub.com
Repository & Actions]
+ User[Developer
Local Machine]
+ end
+
+ subgraph AWS["AWS VPC (172.31.0.0/16)"]
+ subgraph SG["Security Group: smartagent-lab"]
+ Runner[Self-hosted Runner
EC2 Instance
172.31.1.x]
+
+ subgraph Targets["Target Hosts"]
+ T1[Target Host 1
Ubuntu EC2
172.31.1.243]
+ T2[Target Host 2
Ubuntu EC2
172.31.1.48]
+ T3[Target Host 3
Ubuntu EC2
172.31.1.5]
+ end
+ end
+ end
+
+ User -->|git push| GH
+ GH <-->|HTTPS:443
Poll for jobs| Runner
+ Runner -->|SSH:22
Private IPs| T1
+ Runner -->|SSH:22
Private IPs| T2
+ Runner -->|SSH:22
Private IPs| T3
+
+ style GH fill:#24292e,color:#fff
+ style User fill:#0366d6,color:#fff
+ style Runner fill:#28a745,color:#fff
+ style T1 fill:#ffd33d,color:#000
+ style T2 fill:#ffd33d,color:#000
+ style T3 fill:#ffd33d,color:#000
+```
+
+## ãããã¯ãŒã¯ã¢ãŒããã¯ãã£
+
+ãã¹ãŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãå
±æã®ã»ãã¥ãªãã£ã°ã«ãŒããæã€åäžã® AWS VPC äžã§çšŒåããŸããã»ã«ããã¹ãã©ã³ããŒã¯ããã©ã€ããŒã IP ãä»ããŠã¿ãŒã²ãããã¹ããšéä¿¡ããŸãã
+
+### VPC ã¬ã€ã¢ãŠã
+
+```
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
+â AWS VPC (172.31.0.0/16) â
+â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
+â â Security Group: smartagent-lab â â
+â â Rules: â â
+â â - Inbound: SSH (22) from same security group â â
+â â - Outbound: HTTPS (443) to GitHub â â
+â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
+â â
+â âââââââââââââââ ââââââââââââââââ ââââââââââââââââ â
+â â Self-hosted â â Target EC2 â â Target EC2 â â
+â â Runner â â â â â â
+â â âââââ¶â Private IP: â â Private IP: â â
+â â 172.31.1.x âSSH â 172.31.1.243 â â 172.31.1.48 â â
+â â âââââ¶â â â â â
+â â Polls GitHubâ â Ubuntu 20.04 â â Ubuntu 20.04 â â
+â âââââââââââââââ ââââââââââââââââ ââââââââââââââââ â
+â â â â â
+â â â â â
+â ââââââââââââââââââââââŽâââââââââââââââââââââ â
+â â â
+ââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââââââ
+ â
+ âŒ
+ ââââââââââââââââââââ
+ â AppDynamics â
+ â Controller â
+ â (SaaS/On-Prem) â
+ ââââââââââââââââââââ
+```
+
+## ã¯ãŒã¯ãããŒå®è¡ãããŒ
+
+### å®å
šãªãããã€ã¡ã³ãã·ãŒã±ã³ã¹
+
+```mermaid
+sequenceDiagram
+ participant Dev as Developer
+ participant GH as GitHub
+ participant Runner as Self-hosted Runner
+ participant Target as Target Host(s)
+
+ Dev->>GH: 1. Push code or trigger workflow
+ GH->>GH: 2. Workflow event triggered
+ Runner->>GH: 3. Poll for jobs (HTTPS:443)
+ GH->>Runner: 4. Assign job to runner
+ Runner->>Runner: 5. Execute prepare job
(load host matrix)
+
+ par Parallel Execution
+ Runner->>Target: 6a. SSH to Host 1
(port 22)
+ Runner->>Target: 6b. SSH to Host 2
(port 22)
+ Runner->>Target: 6c. SSH to Host 3
(port 22)
+ end
+
+ Target->>Target: 7. Execute commands
(install/uninstall/stop/clean)
+ Target-->>Runner: 8. Return results
+ Runner-->>GH: 9. Report job status
+ GH-->>Dev: 10. Notify completion
+```
+
+## ã³ã³ããŒãã³ãã®è©³çް
+
+### GitHub ãªããžããª
+
+**ä¿ç®¡å¯Ÿè±¡:**
+
+- 11 åã®ã¯ãŒã¯ãã㌠YAML ãã¡ã€ã«
+- Smart Agent ã€ã³ã¹ããŒã«ããã±ãŒãž
+- èšå®ãã¡ã€ã« (config.ini)
+
+**ã·ãŒã¯ã¬ãã:**
+
+- SSH ç§å¯éµ
+
+**倿°:**
+
+- ãã¹ããªã¹ã (DEPLOYMENT_HOSTS)
+- ãŠãŒã¶ãŒ/ã°ã«ãŒãèšå® (ãªãã·ã§ã³)
+
+### ã»ã«ããã¹ãã©ã³ããŒ
+
+**é
çœ®å Žæ:**
+
+- AWS VPC (ã¿ãŒã²ãããšåã)
+- ãã©ã€ããŒããããã¯ãŒã¯ã¢ã¯ã»ã¹
+
+**圹å²:**
+
+- GitHub ã®ã¯ãŒã¯ãããŒãžã§ããããŒãªã³ã°
+- ã¯ãŒã¯ãããŒã¹ãããã®å®è¡
+- ã¿ãŒã²ãããã¹ããžã® SSH æ¥ç¶
+- ãã¡ã€ã«è»¢é (SCP)
+- 䞊åå®è¡
+- ãšã©ãŒåé
+
+**èŠä»¶:**
+
+- Ubuntu/Amazon Linux 2
+- GitHub ãžã®éä¿¡ HTTPS (443)
+- ã¿ãŒã²ãããã¹ããžã®éä¿¡ SSH (22)
+- SSH éµèªèšŒ
+
+**ã¢ã¯ã»ã¹:**
+
+- GitHub ãžã®éä¿¡ HTTPS (443)
+- ã¿ãŒã²ãããã¹ããžã®éä¿¡ SSH (22)
+- SSH éµèªèšŒã䜿çš
+
+### ã¿ãŒã²ãããã¹ã
+
+**åææ¡ä»¶:**
+
+- Ubuntu 20.04 以äž
+- SSH ãµãŒããŒã皌åäž
+- sudo æš©éãæã€ãŠãŒã¶ãŒ
+- èªèšŒæžã¿ SSH éµ
+
+**ãããã€åŸ:**
+
+```
+/opt/appdynamics/
+âââ appdsmartagent/
+ âââ smartagentctl
+ âââ config.ini
+ âââ agents/
+ âââ machine/
+ âââ java/
+ âââ node/
+ âââ db/
+```
+
+## ã»ãã¥ãªãã£ã¢ãŒããã¯ãã£
+
+### ã»ãã¥ãªãã£ã¬ã€ã€ãŒ
+
+1. **AWS VPC ã®åé¢**
+ - ãã¹ãçšã®ãã©ã€ããŒããµãããã
+ - ã€ã³ã¿ãŒããããžã®çŽæ¥ã¢ã¯ã»ã¹ã¯äžèŠ
+ - VPC ãããŒãã°ãæå¹å
+
+2. **ã»ãã¥ãªãã£ã°ã«ãŒã**
+ - SSH (22) ã¯åäžã»ãã¥ãªãã£ã°ã«ãŒãå
ã®ã¿
+ - GitHub ã¢ã¯ã»ã¹çšã®éä¿¡ HTTPS (443)
+ - ã¹ããŒããã«ãªãã¡ã€ã¢ãŠã©ãŒã«ã«ãŒã«
+
+3. **SSH éµèªèšŒ**
+ - ãã¹ã¯ãŒãèªèšŒãªã
+ - éµã¯ GitHub Secrets ã«ä¿å
+ - ã©ã³ããŒäžã®äžæçãªéµãã¡ã€ã«
+ - ã¯ãŒã¯ãããŒçµäºåŸã«éµãåé€
+
+4. **GitHub ã®ã»ãã¥ãªãã£**
+ - ãªããžããªã®ã¢ã¯ã»ã¹å¶åŸ¡
+ - ãã©ã³ãä¿è·ã«ãŒã«
+ - ã·ãŒã¯ã¬ããããã°ã«åºåãããããšã¯ãªã
+ - ç°å¢å€æ°ã®ãã¹ãã³ã°
+
+5. **ãããã¯ãŒã¯ã»ãã¥ãªãã£**
+ - ãã©ã€ããŒã IP éä¿¡ã®ã¿
+ - ãããªã㯠IP ã¯äžèŠ
+ - ã©ã³ããŒãã¿ãŒã²ãããšåäžã® VPC ã«é
眮
+
+## ã¯ãŒã¯ãããŒã®ã«ããŽãª
+
+ãã®ã·ã¹ãã ã«ã¯ã4 ã€ã®ã«ããŽãªã«æŽçããã 11 åã®ã¯ãŒã¯ãããŒãå«ãŸããŠããŸãã
+
+```
+GitHub Actions Workflows (11 Total)
+âââ Deployment (1 workflow)
+â âââ Deploy Smart Agent (Batched)
+âââ Agent Installation (4 workflows)
+â âââ Install Node Agent (Batched)
+â âââ Install Machine Agent (Batched)
+â âââ Install DB Agent (Batched)
+â âââ Install Java Agent (Batched)
+âââ Agent Uninstallation (4 workflows)
+â âââ Uninstall Node Agent (Batched)
+â âââ Uninstall Machine Agent (Batched)
+â âââ Uninstall DB Agent (Batched)
+â âââ Uninstall Java Agent (Batched)
+âââ Smart Agent Management (2 workflows)
+ âââ Stop and Clean Smart Agent (Batched)
+ âââ Cleanup All Agents (Batched)
+```
+
+## ãããåŠçæŠç¥
+
+ãã¹ãŠã®ã¯ãŒã¯ãããŒã¯ãããããèŠæš¡ã®ãããã€ã¡ã³ãã«å¯Ÿå¿ãããããèªåãããåŠçãæ¡çšããŠããŸãã
+
+### ãããåŠçã®ä»çµã¿
+
+```
+HOST LIST (1000 hosts) BATCH_SIZE = 256
+
+Host 001: 172.31.1.1 ââââââââââââââââââââ
+Host 002: 172.31.1.2 âââââââââ¶ â BATCH 1 â
+ ... â Hosts 1-256 â ââââ
+Host 256: 172.31.1.256 â Sequential â â
+ ââââââââââââââââââââ â
+Host 257: 172.31.1.257 ââââââââââââââââââââ â
+Host 258: 172.31.1.258 âââââââââ¶ â BATCH 2 â â SEQUENTIAL
+ ... â Hosts 257-512 â â EXECUTION
+Host 512: 172.31.1.512 â Sequential â â
+ ââââââââââââââââââââ â
+Host 513: 172.31.1.513 ââââââââââââââââââââ â
+ ... â BATCH 3 â â
+Host 768: 172.31.1.768 âââââââââ¶ â Hosts 513-768 â ââââ
+ ââââââââââââââââââââ
+Host 769: 172.31.1.769 ââââââââââââââââââââ
+ ... â BATCH 4 â
+Host 1000: 172.31.2.232 âââââââââ¶ â Hosts 769-1000 â
+ â (232 hosts) â
+ ââââââââââââââââââââ
+
+WITHIN EACH BATCH:
+ââââââââââââââââââââââââââââââââââââââââââ
+â All hosts deploy in PARALLEL â
+â â
+â Host 1 âââ â
+â Host 2 ââ†â
+â Host 3 âââŒââ¶ Background processes (&)â
+â ... â â
+â Host 256ââ âââ¶ wait command â
+ââââââââââââââââââââââââââââââââââââââââââ
+```
+
+### ãªããããã鿬¡å®è¡ããã®ã
+
+**ãªãœãŒã¹ç®¡ç:**
+
+- ã»ã«ããã¹ãã©ã³ããŒãžã®éå°ãªè² è·ã鲿¢
+- åãããã§ 256 åã® SSH æ¥ç¶ã䞊åã«éã
+- 鿬¡åŠçã«ããå®å®ããããã©ãŒãã³ã¹ã確ä¿
+
+**èšå®å¯èœ:**
+
+- ããã©ã«ãã®ããããµã€ãº: 256 (GitHub Actions ã®ãããªã¯ã¹äžé)
+- ã¯ãŒã¯ãããŒå
¥åã«ãããããå°ããªãããã«èª¿æŽå¯èœ
+- é床ãšãªãœãŒã¹äœ¿çšéã®ãã©ã³ã¹èª¿æŽ
+
+### ã¹ã±ãŒãªã³ã°ç¹æ§
+
+**ãããã€ã¡ã³ãé床 (ããã©ã«ã BATCH_SIZE=256):**
+
+- 10 ãã¹ã â 1 ããã â çŽ 2 å
+- 100 ãã¹ã â 1 ããã â çŽ 3 å
+- 500 ãã¹ã â 2 ããã â çŽ 6 å
+- 1,000 ãã¹ã â 4 ããã â çŽ 12 å
+- 5,000 ãã¹ã â 20 ããã â çŽ 60 å
+
+**é床ã«åœ±é¿ããèŠå :**
+
+- ãããã¯ãŒã¯åž¯åå¹
(ãã¹ãããã 19MB ã®ããã±ãŒãž)
+- SSH æ¥ç¶ã®ãªãŒããŒããã (ãã¹ããããçŽ 1 ç§)
+- ã¿ãŒã²ãããã¹ãã® CPU/ãã£ã¹ã¯é床
+- ã©ã³ããŒã®ãªãœãŒã¹ (CPU/ã¡ã¢ãª)
+
+## 次ã®ã¹ããã
+
+ã¢ãŒããã¯ãã£ãçè§£ã§ãããšããã§ã次㯠GitHub ã®ã»ããã¢ãããšã»ã«ããã¹ãã©ã³ããŒã®æ§æã«é²ã¿ãŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/2-github-setup.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/2-github-setup.md
new file mode 100644
index 0000000000..0bde92e7c6
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/2-github-setup.md
@@ -0,0 +1,286 @@
+---
+title: GitHub Setup
+weight: 2
+time: 10 minutes
+---
+
+## åææ¡ä»¶
+
+éå§ããåã«ã以äžãæºåããŠããããšã確èªããŠãã ããã
+
+- ãªããžããªã¢ã¯ã»ã¹æš©éã®ãã GitHub ã¢ã«ãŠã³ã
+- Ubuntu EC2 ã€ã³ã¹ã¿ã³ã¹ãå«ã AWS VPC
+- ã¿ãŒã²ãããã¹ããžã®èªèšŒçš SSH ããŒãã¢ïŒPEM ãã¡ã€ã«ïŒ
+- AppDynamics Smart Agent ããã±ãŒãž
+- SSH ã¢ã¯ã»ã¹å¯èœãªã¿ãŒã²ãã Ubuntu EC2 ã€ã³ã¹ã¿ã³ã¹
+
+## ãªããžããªã® Fork ãŸã㯠Clone
+
+æåã«ãGitHub Actions ã©ããªããžããªãžã®ã¢ã¯ã»ã¹ãååŸããŸãã
+
+**Repository URL**: [https://github.com/chambear2809/github-actions-lab](https://github.com/chambear2809/github-actions-lab)
+
+```bash
+# Option 1: Fork the repository via GitHub UI
+# Go to https://github.com/chambear2809/github-actions-lab
+# Click "Fork" button
+
+# Option 2: Clone directly (for testing)
+git clone https://github.com/chambear2809/github-actions-lab.git
+cd github-actions-lab
+```
+
+## ã»ã«ããã¹ãã©ã³ããŒã®æ§æ
+
+ã»ã«ããã¹ãã©ã³ããŒã¯ãã¿ãŒã²ãã EC2 ã€ã³ã¹ã¿ã³ã¹ãšåã AWS VPC ã«ãããã€ããå¿
èŠããããŸãã
+
+### EC2 ã€ã³ã¹ã¿ã³ã¹ãžã®ã©ã³ããŒã®ã€ã³ã¹ããŒã«
+
+1. VPC å
ã« **EC2 ã€ã³ã¹ã¿ã³ã¹ãèµ·å** ããŸãïŒUbuntu ãŸã㯠Amazon Linux 2ïŒ
+
+2. Fork ãããªããžããªã§ **ã©ã³ããŒèšå®ã«ç§»å** ããŸã:
+
+ ```
+ Settings â Actions â Runners â New self-hosted runner
+ ```
+
+3. **ã©ã³ããŒã€ã³ã¹ã¿ã³ã¹ã« SSH æ¥ç¶** ããã€ã³ã¹ããŒã«ã³ãã³ããå®è¡ããŸã:
+
+```bash
+# Create runner directory
+mkdir actions-runner && cd actions-runner
+
+# Download runner (check GitHub for latest version)
+curl -o actions-runner-linux-x64-2.311.0.tar.gz -L \
+ https://github.com/actions/runner/releases/download/v2.311.0/actions-runner-linux-x64-2.311.0.tar.gz
+
+# Extract
+tar xzf ./actions-runner-linux-x64-2.311.0.tar.gz
+
+# Configure (use token from GitHub UI)
+./config.sh --url https://github.com/YOUR_USERNAME/github-actions-lab --token YOUR_TOKEN
+
+# Install as service
+sudo ./svc.sh install
+
+# Start service
+sudo ./svc.sh start
+```
+
+### ã©ã³ããŒã¹ããŒã¿ã¹ã®ç¢ºèª
+
+以äžã®å Žæã§ã©ã³ããŒã **"Idle"**ïŒç·è²ïŒãšããŠè¡šç€ºãããŠããããšã確èªããŸã:
+
+```
+Settings â Actions â Runners
+```
+
+{{% notice style="tip" %}}
+ã¯ãŒã¯ãããŒãžã§ããååŸããã«ã¯ãã©ã³ããŒããªã³ã©ã€ã³ãã€ã¢ã€ãã«ç¶æ
ãç¶æããŠããå¿
èŠããããŸãããªãã©ã€ã³ãšè¡šç€ºãããŠããå Žåã¯ããµãŒãã¹ã¹ããŒã¿ã¹ã確èªããŠãã ãã: `sudo ./svc.sh status`
+{{% /notice %}}
+
+## GitHub Secrets ã®æ§æ
+
+以äžã«ç§»åããŸã: **Settings â Secrets and variables â Actions â Secrets**
+
+### SSH Private Key Secret
+
+ãã®ã·ãŒã¯ã¬ããã«ã¯ãã¿ãŒã²ãããã¹ãã«ã¢ã¯ã»ã¹ããããã® SSH ç§å¯éµãå«ãŸããŸãã
+
+1. **"New repository secret"** ãã¯ãªãã¯ããŸã
+2. **Name**: `SSH_PRIVATE_KEY`
+3. **Value**: PEM ãã¡ã€ã«ã®å
容ã貌ãä»ããŸã
+
+```bash
+# View your PEM file
+cat /path/to/your-key.pem
+```
+
+圢åŒã®äŸ:
+
+```
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEA...
+...
+-----END RSA PRIVATE KEY-----
+```
+
+1. **"Add secret"** ãã¯ãªãã¯ããŸã
+
+{{% notice style="important" %}}
+SSH ããŒããªããžããªã«ã³ãããããªãã§ãã ãããæ©å¯æ§ã®é«ãèªèšŒæ
å ±ã«ã¯åžžã« GitHub Secrets ã䜿çšããŠãã ããã
+{{% /notice %}}
+
+## GitHub Variables ã®æ§æ
+
+以äžã«ç§»åããŸã: **Settings â Secrets and variables â Actions â Variables**
+
+### Deployment Hosts VariableïŒå¿
é ïŒ
+
+ãã®å€æ°ã«ã¯ãSmart Agent ããããã€ãããã¹ãŠã®ã¿ãŒã²ãããã¹ãã®ãªã¹ããå«ãŸããŸãã
+
+1. **"New repository variable"** ãã¯ãªãã¯ããŸã
+2. **Name**: `DEPLOYMENT_HOSTS`
+3. **Value**: ã¿ãŒã²ãããã¹ãã® IP ãå
¥åããŸãïŒ1 è¡ã« 1 ã€ïŒ
+
+```
+172.31.1.243
+172.31.1.48
+172.31.1.5
+172.31.10.20
+172.31.10.21
+```
+
+**圢åŒã®èŠä»¶:**
+
+- 1 è¡ã« 1 ã€ã® IP
+- ã«ã³ããªã
+- ã¹ããŒã¹ãªã
+- äœèšãªæåãªã
+- Unix æ¹è¡ã³ãŒãã䜿çšïŒCRLF ã§ã¯ãªã LFïŒ
+
+1. **"Add variable"** ãã¯ãªãã¯ããŸã
+
+### ãªãã·ã§ã³å€æ°
+
+ãããã®å€æ°ã¯ãªãã·ã§ã³ã§ãSmart Agent ãµãŒãã¹ã®ãŠãŒã¶ãŒ/ã°ã«ãŒãæ§æã«äœ¿çšãããŸãã
+
+#### SMARTAGENT_USER
+
+1. **"New repository variable"** ãã¯ãªãã¯ããŸã
+2. **Name**: `SMARTAGENT_USER`
+3. **Value**: äŸ: `appdynamics`
+4. **"Add variable"** ãã¯ãªãã¯ããŸã
+
+#### SMARTAGENT_GROUP
+
+1. **"New repository variable"** ãã¯ãªãã¯ããŸã
+2. **Name**: `SMARTAGENT_GROUP`
+3. **Value**: äŸ: `appdynamics`
+4. **"Add variable"** ãã¯ãªãã¯ããŸã
+
+## ãããã¯ãŒã¯æ§æ
+
+ãã¹ãŠã® EC2 ã€ã³ã¹ã¿ã³ã¹ãåã VPC ããã³ã»ãã¥ãªãã£ã°ã«ãŒãã«é
眮ããã©ãã»ããã¢ããã§ã¯ã以äžã®æ§æãè¡ããŸãã
+
+### ã»ãã¥ãªãã£ã°ã«ãŒãã«ãŒã«
+
+**ã€ã³ããŠã³ãã«ãŒã«:**
+
+- åãã»ãã¥ãªãã£ã°ã«ãŒãããã® SSHïŒããŒã 22ïŒïŒéä¿¡å
: åã SGïŒ
+
+**ã¢ãŠãããŠã³ãã«ãŒã«:**
+
+- 0.0.0.0/0 ãžã® HTTPSïŒããŒã 443ïŒïŒGitHub API ã¢ã¯ã»ã¹çšïŒ
+- åãã»ãã¥ãªãã£ã°ã«ãŒããžã® SSHïŒããŒã 22ïŒïŒã¿ãŒã²ããã¢ã¯ã»ã¹çšïŒ
+
+### ãããã¯ãŒã¯ã®ãã¹ããã©ã¯ãã£ã¹
+
+- â
`DEPLOYMENT_HOSTS` ã«ã¯ãã©ã€ããŒã IP ã¢ãã¬ã¹ïŒ172.31.x.xïŒã䜿çšãã
+- â
ã©ã³ããŒãšã¿ãŒã²ãããåãã»ãã¥ãªãã£ã°ã«ãŒãã«é
眮ãã
+- â
ã¿ãŒã²ãããã¹ãã«ãããªã㯠IP ã¯äžèŠ
+- â
ã©ã³ããŒã¯ãã©ã€ããŒããããã¯ãŒã¯çµç±ã§éä¿¡ãã
+- â
GitHub ããŒãªã³ã°ã®ããã«ã¢ãŠãããŠã³ã HTTPS ãå¿
èŠ
+
+## æ§æã®ç¢ºèª
+
+ã¯ãŒã¯ãããŒãå®è¡ããåã«ãã»ããã¢ããã確èªããŸãã
+
+### 1. ã©ã³ããŒã¹ããŒã¿ã¹ã®ç¢ºèª
+
+1. **Settings â Actions â Runners** ã«ç§»åããŸã
+2. ã©ã³ããŒã "Idle"ïŒç·è²ïŒãšããŠè¡šç€ºãããããšã確èªããŸã
+3. "Last seen" ã®ã¿ã€ã ã¹ã¿ã³ããæè¿ã®ãã®ã§ããããšã確èªããŸã
+
+### 2. SSH æ¥ç¶ã®ãã¹ã
+
+ã©ã³ããŒã€ã³ã¹ã¿ã³ã¹ããã¿ãŒã²ãããã¹ããž SSH æ¥ç¶ããŸã:
+
+```bash
+# On runner instance
+ssh -i ~/.ssh/your-key.pem ubuntu@172.31.1.243
+```
+
+æåããå Žåãã¿ãŒã²ãããã¹ãäžã®ã·ã§ã«ããã³ããã衚瀺ãããŸãã
+
+### 3. Secrets ãš Variables ã®ç¢ºèª
+
+1. **Settings â Secrets and variables â Actions** ã«ç§»åããŸã
+2. Secrets ã¿ãã« `SSH_PRIVATE_KEY` ã衚瀺ãããããšã確èªããŸã
+3. Variables ã¿ãã« `DEPLOYMENT_HOSTS` ã衚瀺ãããããšã確èªããŸã
+
+### 4. ãªããžããªã¢ã¯ã»ã¹ã®ç¢ºèª
+
+ã©ã³ããŒããªããžããªã«ã¢ã¯ã»ã¹ã§ããããšã確èªããŸã:
+
+```bash
+# On runner instance, as the runner user
+cd ~/actions-runner
+./run.sh # Test run (Ctrl+C to stop)
+```
+
+"Listening for Jobs" ãšè¡šç€ºãããã¯ãã§ãã
+
+## ããããåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+
+### ã©ã³ããŒããžã§ããååŸããªã
+
+**çç¶**: ã¯ãŒã¯ãããŒã "queued" ç¶æ
ã®ãŸãŸã«ãªã
+
+**解決ç**:
+
+- ã©ã³ããŒã®ã¹ããŒã¿ã¹ã確èªãã: `sudo systemctl status actions.runner.*`
+- ã©ã³ããŒãåèµ·åãã: `sudo ./svc.sh restart`
+- GitHub ãžã® HTTPSïŒ443ïŒã¢ãŠãããŠã³ãæ¥ç¶ã確èªãã
+
+### SSH æ¥ç¶ã®å€±æ
+
+**çç¶**: ã¯ãŒã¯ãããŒã "Permission denied" ãŸã㯠"Connection refused" ã§å€±æãã
+
+**解決ç**:
+
+```bash
+# Test from runner
+ssh -i ~/.ssh/test-key.pem ubuntu@172.31.1.243 -o ConnectTimeout=10
+
+# Check security group allows SSH from runner
+# Verify private key matches public key on targets
+```
+
+### ãã¹ãåã«ç¡å¹ãªæåãå«ãŸãã
+
+**çç¶**: ãšã©ãŒ: "hostname contains invalid characters"
+
+**解決ç**:
+
+- `DEPLOYMENT_HOSTS` 倿°ãç·šéãã
+- æ«å°Ÿã®ã¹ããŒã¹ããªãããšã確èªãã
+- Unix æ¹è¡ã³ãŒãã䜿çšããïŒCRLF ã§ã¯ãªã LFïŒ
+- 1 è¡ã« 1 ã€ã® IPãäœèšãªæåãå
¥ããªã
+
+### Secrets ãèŠã€ãããªã
+
+**çç¶**: ãšã©ãŒ: "Secret SSH_PRIVATE_KEY not found"
+
+**解決ç**:
+
+- ã·ãŒã¯ã¬ããåã `SSH_PRIVATE_KEY` ãšå®å
šã«äžèŽããããšã確èªãã
+- ã·ãŒã¯ã¬ããããªããžã㪠SecretsïŒç°å¢ã·ãŒã¯ã¬ããã§ã¯ãªãïŒã«ããããšã確èªãã
+- ãªããžããªã®ç®¡çè
æš©éãããããšã確èªãã
+
+## ã»ãã¥ãªãã£ã®ãã¹ããã©ã¯ãã£ã¹
+
+ã»ãã¥ã¢ãªéçšã®ããã«ä»¥äžã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããã
+
+- â
ãã¹ãŠã®ç§å¯éµã« GitHub Secrets ã䜿çšãã
+- â
SSH ããŒã宿çã«ããŒããŒã·ã§ã³ãã
+- â
ã©ã³ããŒããã©ã€ããŒã VPC ãµããããå
ã«é
眮ãã
+- â
ã©ã³ããŒã®ã»ãã¥ãªãã£ã°ã«ãŒãã®ã¢ã¯ã»ã¹ãæå°éã«å¶éãã
+- â
ã©ã³ããŒã®ãœãããŠã§ã¢ã宿çã«æŽæ°ãã
+- â
ãã©ã³ãä¿è·ã«ãŒã«ãæå¹åãã
+- â
ç°å¢ããšã«ç°ãªãããŒã䜿çšãã
+- â
ãªããžããªã¢ã¯ã»ã¹ã®ç£æ»ãã°ãæå¹åãã
+
+## 次ã®ã¹ããã
+
+GitHub ã®æ§æãšã©ã³ããŒã®ã»ããã¢ãããå®äºããã®ã§ãå©çšå¯èœãªã¯ãŒã¯ãããŒã確èªããæåã®ãããã€ãå®è¡ããæºåãæŽããŸããã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/3-workflows.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/3-workflows.md
new file mode 100644
index 0000000000..3dd6478f3e
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/3-workflows.md
@@ -0,0 +1,229 @@
+---
+title: ã¯ãŒã¯ãããŒã®çè§£
+weight: 3
+time: 10 minutes
+---
+
+## å©çšå¯èœãªã¯ãŒã¯ãããŒ
+
+ãã® GitHub Actions ã©ãã«ã¯ãSmart Agent ã®ã©ã€ããµã€ã¯ã«å
šäœã管çããããã® **11 åã®ã¯ãŒã¯ãããŒ** ãå«ãŸããŠããŸãããã¹ãŠã®ã¯ãŒã¯ãããŒãã¡ã€ã«ã¯ããªããžããªã® `.github/workflows/` ã§åç
§ã§ããŸãã
+
+**Repository**: [https://github.com/chambear2809/github-actions-lab](https://github.com/chambear2809/github-actions-lab)
+
+## ã¯ãŒã¯ãããŒã®ã«ããŽãª
+
+### 1. ãããã€ã¡ã³ã (1 ã¯ãŒã¯ãããŒ)
+
+#### Deploy Smart Agent (Batched)
+
+- **File**: `deploy-agent-batched.yml`
+- **ç®ç**: Smart Agent ãã€ã³ã¹ããŒã«ãããµãŒãã¹ãéå§ããŸã
+- **ç¹åŸŽ**:
+ - èªåãããåŠç (ããã©ã«ã: 1 ãããããã 256 ãã¹ã)
+ - ããããµã€ãºã®èšå®ãå¯èœ
+ - åãããå
ã§ã¯äžŠåãããã€
+ - ãããéã¯é 次åŠç
+- **Inputs**:
+ - `batch_size`: ããããããã®ãã¹ãæ° (ããã©ã«ã: 256)
+- **Trigger**: æåã®ã¿ (`workflow_dispatch`)
+
+### 2. ãšãŒãžã§ã³ãã®ã€ã³ã¹ããŒã« (4 ã¯ãŒã¯ãããŒ)
+
+ãã¹ãŠã®ã€ã³ã¹ããŒã«ã¯ãŒã¯ãããŒã¯ã`smartagentctl` ã䜿çšããŠç¹å®ã®çš®é¡ã®ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããŸãã
+
+#### Install Node Agent (Batched)
+
+- **File**: `install-node-batched.yml`
+- **Command**: `smartagentctl install node`
+- **Batched**: ãã (èšå®å¯èœ)
+
+#### Install Machine Agent (Batched)
+
+- **File**: `install-machine-batched.yml`
+- **Command**: `smartagentctl install machine`
+- **Batched**: ãã (èšå®å¯èœ)
+
+#### Install DB Agent (Batched)
+
+- **File**: `install-db-batched.yml`
+- **Command**: `smartagentctl install db`
+- **Batched**: ãã (èšå®å¯èœ)
+
+#### Install Java Agent (Batched)
+
+- **File**: `install-java-batched.yml`
+- **Command**: `smartagentctl install java`
+- **Batched**: ãã (èšå®å¯èœ)
+
+### 3. ãšãŒãžã§ã³ãã®ã¢ã³ã€ã³ã¹ããŒã« (4 ã¯ãŒã¯ãããŒ)
+
+ãã¹ãŠã®ã¢ã³ã€ã³ã¹ããŒã«ã¯ãŒã¯ãããŒã¯ã`smartagentctl` ã䜿çšããŠç¹å®ã®çš®é¡ã®ãšãŒãžã§ã³ããåé€ããŸãã
+
+#### Uninstall Node Agent (Batched)
+
+- **File**: `uninstall-node-batched.yml`
+- **Command**: `smartagentctl uninstall node`
+- **Batched**: ãã (èšå®å¯èœ)
+
+#### Uninstall Machine Agent (Batched)
+
+- **File**: `uninstall-machine-batched.yml`
+- **Command**: `smartagentctl uninstall machine`
+- **Batched**: ãã (èšå®å¯èœ)
+
+#### Uninstall DB Agent (Batched)
+
+- **File**: `uninstall-db-batched.yml`
+- **Command**: `smartagentctl uninstall db`
+- **Batched**: ãã (èšå®å¯èœ)
+
+#### Uninstall Java Agent (Batched)
+
+- **File**: `uninstall-java-batched.yml`
+- **Command**: `smartagentctl uninstall java`
+- **Batched**: ãã (èšå®å¯èœ)
+
+### 4. Smart Agent ã®ç®¡ç (2 ã¯ãŒã¯ãããŒ)
+
+#### Stop and Clean Smart Agent (Batched)
+
+- **File**: `stop-clean-smartagent-batched.yml`
+- **Commands**:
+ - `smartagentctl stop`
+ - `smartagentctl clean`
+- **ç®ç**: Smart Agent ãµãŒãã¹ã忢ãããã¹ãŠã®ããŒã¿ãåé€ããŸã
+- **Batched**: ãã (èšå®å¯èœ)
+
+#### Cleanup All Agents (Batched)
+
+- **File**: `cleanup-appdynamics.yml`
+- **Command**: `sudo rm -rf /opt/appdynamics`
+- **ç®ç**: /opt/appdynamics ãã£ã¬ã¯ããªãå®å
šã«åé€ããŸã
+- **Batched**: ãã (èšå®å¯èœ)
+- **èŠå**: ãã®æäœã¯ãã¹ãŠã® AppDynamics ã³ã³ããŒãã³ããå®å
šã«åé€ããŸã
+
+{{% notice style="danger" %}}
+"Cleanup All Agents" ã¯ãŒã¯ãããŒã¯ `/opt/appdynamics` ãå®å
šã«åé€ããŸãããã®æäœã¯å
ã«æ»ããŸãããæ
éã«äœ¿çšããŠãã ããã
+{{% /notice %}}
+
+## ã¯ãŒã¯ãããŒã®æ§é
+
+ãã¹ãŠã®ãããåŠç察å¿ã¯ãŒã¯ãããŒã¯ãäžè²«ãã 2 ãžã§ãæ§é ã«åŸããŸãã
+
+### Job 1: Prepare
+
+```yaml
+prepare:
+ runs-on: self-hosted
+ outputs:
+ batches: ${{ steps.create-batches.outputs.batches }}
+ steps:
+ - name: Load hosts and create batches
+ run: |
+ # Load DEPLOYMENT_HOSTS variable
+ # Split into batches of N hosts
+ # Output as JSON array
+```
+
+**ç®ç**: GitHub variables ãã察象ãã¹ããèªã¿èŸŒã¿ãããããããªãã¯ã¹ãäœæããŸã
+
+### Job 2: Deploy/Install/Uninstall
+
+```yaml
+deploy:
+ needs: prepare
+ runs-on: self-hosted
+ strategy:
+ matrix:
+ batch: ${{ fromJson(needs.prepare.outputs.batches) }}
+ steps:
+ - name: Setup SSH key
+ - name: Execute operation on all hosts in batch (parallel)
+```
+
+**ç®ç**: åãããã«å¯ŸããŠäžŠåã«å®è¡ããããããå
ã®ãã¹ãŠã®ãã¹ãã§æå®ãããæäœãå®è¡ããŸã
+
+## ãããåŠçã®åäœ
+
+### ä»çµã¿
+
+1. **Prepare Job** ã `DEPLOYMENT_HOSTS` ãèªã¿èŸŒã¿ããããã«åå²ããŸã
+2. **Deploy Job** ãåãããã«å¯Ÿã㊠1 ã€ã®ãããªãã¯ã¹ãšã³ããªãäœæããŸã
+3. **ãããã¯é 次åŠç** ãããã©ã³ããŒãžã®éè² è·ãé²ããŸã
+4. **åãããå
** ã§ã¯ãããã¯ã°ã©ãŠã³ãããã»ã¹ã䜿çšããŠãã¹ãŠã®ãã¹ããžäžŠåã§ãããã€ããŸã
+
+### ããããµã€ãºã®èšå®
+
+ãã¹ãŠã®ã¯ãŒã¯ãããŒã¯ `batch_size` å
¥åãåãä»ããŸã (ããã©ã«ã: 256)ã
+
+```bash
+# Via GitHub CLI
+gh workflow run "Deploy Smart Agent" -f batch_size=128
+
+# Via GitHub UI
+Actions â Select workflow â Run workflow â Set batch_size
+```
+
+### äŸ
+
+- **100 ãã¹ããbatch_size=256**: 1 ããããçŽ 3 å
+- **500 ãã¹ããbatch_size=256**: 2 ããããçŽ 6 å
+- **1,000 ãã¹ããbatch_size=128**: 8 ããããçŽ 16 å
+- **5,000 ãã¹ããbatch_size=256**: 20 ããããçŽ 60 å
+
+## ã¯ãŒã¯ãããŒã®å®è¡é åº
+
+### äžè¬çãªãããã€ã¡ã³ãã®æµã
+
+1. **Deploy Smart Agent** - åæãããã€
+2. **Install Machine Agent** - å¿
èŠã«å¿ããŠç¹å®ã®ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«
+3. **Install DB Agent** - ããŒã¿ããŒã¹ç£èŠã®ã€ã³ã¹ããŒã«
+4. (å¿
èŠã«å¿ããŠä»ã®ã€ã³ã¹ããŒã«ã¯ãŒã¯ãããŒã䜿çš)
+
+### ã¡ã³ããã³ã¹ã»æŽæ°ã®æµã
+
+1. **Stop and Clean Smart Agent** - ãµãŒãã¹ã忢ããããŒã¿ãã¯ãªãŒã³ã¢ãã
+2. **Deploy Smart Agent** - æŽæ°çã§åãããã€
+3. **Install agents again** - å¿
èŠãªãšãŒãžã§ã³ããåã€ã³ã¹ããŒã«
+
+### å®å
šåé€ã®æµã
+
+1. **Stop and Clean Smart Agent** - ãµãŒãã¹ã忢
+2. **Cleanup All Agents** - /opt/appdynamics ãã£ã¬ã¯ããªãåé€
+
+## ã¯ãŒã¯ãããŒã®ã³ãŒãã確èªãã
+
+ãªããžããªã§å®å
šãªã¯ãŒã¯ãã㌠YAML ãã¡ã€ã«ã確èªã§ããŸãã
+
+**ã¡ã€ã³ã®ãããã€ã¡ã³ãã¯ãŒã¯ãããŒ:**
+[https://github.com/chambear2809/github-actions-lab/blob/main/.github/workflows/deploy-agent-batched.yml](https://github.com/chambear2809/github-actions-lab/blob/main/.github/workflows/deploy-agent-batched.yml)
+
+**ãã¹ãŠã®ã¯ãŒã¯ãããŒ:**
+[https://github.com/chambear2809/github-actions-lab/tree/main/.github/workflows](https://github.com/chambear2809/github-actions-lab/tree/main/.github/workflows)
+
+## ã¯ãŒã¯ãããŒã®æ©èœ
+
+### çµã¿èŸŒã¿ã®ãšã©ãŒãã³ããªã³ã°
+
+- ãã¹ãåäœã®ãšã©ãŒè¿œè·¡
+- 倱æãããã¹ãã®ã¬ããŒã
+- ãããã¬ãã«ã§ã®å€±æåŠç
+- å¿
ãå®è¡ããããµããªãŒ
+
+### 䞊åå®è¡
+
+- ãããå
ã®ãã¹ãŠã®ãã¹ããžåæã«ãããã€
+- SSH ã®ããã¯ã°ã©ãŠã³ãããã»ã¹ (`&`) ã䜿çš
+- wait ã³ãã³ãã§ãã¹ãŠã®å®äºãä¿èšŒ
+- ãªãœãŒã¹å¶éå
ã§ã®æå€§éã®äžŠåæ§
+
+### ã»ãã¥ãªãã£
+
+- SSH ããŒããã°ã«è¡šç€ºãããããšã¯ãããŸãã
+- èªèšŒæ
å ±ã¯ç°å¢å€æ°ãšããŠãã€ã³ããããŸã
+- èªååã®ããå³å¯ãªãã¹ãããŒãã§ãã¯ã¯ç¡å¹åãããŠããŸã
+- ã¯ãŒã¯ãããŒå®äºåŸã«ããŒã¯åé€ãããŸã
+
+## 次ã®ã¹ããã
+
+å©çšå¯èœãªã¯ãŒã¯ãããŒãçè§£ãããšããã§ãæåã®ãããã€ãå®è¡ããŠã¿ãŸãããã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/4-running-workflows.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/4-running-workflows.md
new file mode 100644
index 0000000000..60cc775b14
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/4-running-workflows.md
@@ -0,0 +1,401 @@
+---
+title: ã¯ãŒã¯ãããŒã®å®è¡
+weight: 4
+time: 15 minutes
+---
+
+## ã¯ãŒã¯ãããŒã®ããªã¬ãŒ
+
+ãã¹ãŠã®ã¯ãŒã¯ãããŒã¯ `workflow_dispatch` ã§æ§æãããŠãããæåã§ããªã¬ãŒããå¿
èŠããããŸããã¯ãŒã¯ãããŒãå®è¡ããäž»ãªæ¹æ³ã¯2ã€ãããŸãã
+
+1. **GitHub UI** - ããžã¥ã¢ã«ã€ã³ã¿ãŒãã§ãŒã¹ã§ãã»ãšãã©ã®ãŠãŒã¶ãŒã«ãšã£ãŠæãç°¡åã§ã
+2. **GitHub CLI** - ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ã§ãèªååã«æé©ã§ã
+
+## æ¹æ³1: GitHub UI
+
+### ã¹ããã1: Actionsã¿ãã«ç§»å
+
+1. GitHubäžã®ãã©ãŒã¯ãããªããžããªã«ç§»åããŸã
+2. äžéšã® **Actions** ã¿ããã¯ãªãã¯ããŸã
+
+### ã¹ããã2: ã¯ãŒã¯ãããŒãéžæ
+
+å·ŠåŽã®ãµã€ãããŒã«ãå©çšå¯èœãªãã¹ãŠã®ã¯ãŒã¯ãããŒã衚瀺ãããŸãã
+
+- Deploy Smart Agent
+- Install Node Agent (Batched)
+- Install Machine Agent (Batched)
+- Install DB Agent (Batched)
+- Install Java Agent (Batched)
+- Uninstall Node Agent (Batched)
+- Uninstall Machine Agent (Batched)
+- Uninstall DB Agent (Batched)
+- Uninstall Java Agent (Batched)
+- Stop and Clean Smart Agent (Batched)
+- Cleanup All Agents
+
+å®è¡ãããã¯ãŒã¯ãããŒãã¯ãªãã¯ããŸãã
+
+### ã¹ããã3: ã¯ãŒã¯ãããŒãå®è¡
+
+1. **"Run workflow"** ãã¿ã³ïŒå³äžïŒãã¯ãªãã¯ããŸã
+2. ãã©ã³ããéžæããŸã: **main**
+3. ïŒãªãã·ã§ã³ïŒå¿
èŠã«å¿ã㊠**batch_size** ã調æŽããŸã
+4. **"Run workflow"** ãã¿ã³ãã¯ãªãã¯ããŸã
+
+### ã¹ããã4: å®è¡ãç£èŠ
+
+1. ã¯ãŒã¯ãããŒãäžã®ãªã¹ãã«è¡šç€ºãããŸã
+2. ã¯ãŒã¯ãããŒå®è¡ãã¯ãªãã¯ããŠè©³çްã衚瀺ããŸã
+3. ãªã¢ã«ã¿ã€ã ã§é²è¡ç¶æ³ã確èªããŸã
+4. ãžã§ãåãã¯ãªãã¯ããŠè©³çްãªãã°ã確èªããŸã
+
+## æ¹æ³2: GitHub CLI
+
+### GitHub CLIãã€ã³ã¹ããŒã«
+
+```bash
+# macOS
+brew install gh
+
+# Linux
+curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
+echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
+sudo apt update
+sudo apt install gh
+```
+
+### èªèšŒ
+
+```bash
+gh auth login
+```
+
+### ã¯ãŒã¯ãããŒã®å®è¡
+
+```bash
+# Deploy Smart Agent (default batch size)
+gh workflow run "Deploy Smart Agent" --repo YOUR_USERNAME/github-actions-lab
+
+# Deploy with custom batch size
+gh workflow run "Deploy Smart Agent" \
+ --repo YOUR_USERNAME/github-actions-lab \
+ -f batch_size=128
+
+# Install agents
+gh workflow run "Install Node Agent (Batched for Large Scale)" \
+ --repo YOUR_USERNAME/github-actions-lab
+
+gh workflow run "Install Machine Agent (Batched for Large Scale)" \
+ --repo YOUR_USERNAME/github-actions-lab
+
+# Uninstall agents
+gh workflow run "Uninstall Node Agent (Batched for Large Scale)" \
+ --repo YOUR_USERNAME/github-actions-lab
+
+# Stop and clean
+gh workflow run "Stop and Clean Smart Agent (Batched for Large Scale)" \
+ --repo YOUR_USERNAME/github-actions-lab
+
+# Complete cleanup
+gh workflow run "Cleanup All Agents" \
+ --repo YOUR_USERNAME/github-actions-lab
+```
+
+### ã¯ãŒã¯ãããŒã®ç£èŠ
+
+```bash
+# List recent workflow runs
+gh run list --repo YOUR_USERNAME/github-actions-lab
+
+# View specific run
+gh run view RUN_ID --repo YOUR_USERNAME/github-actions-lab
+
+# Watch run in progress
+gh run watch RUN_ID --repo YOUR_USERNAME/github-actions-lab
+
+# View failed logs
+gh run view RUN_ID --log-failed --repo YOUR_USERNAME/github-actions-lab
+```
+
+## ååãããã€ã®ãŠã©ãŒã¯ã¹ã«ãŒ
+
+å®å
šãªååãããã€ã®æé ãèŠãŠãããŸãããã
+
+### ã¹ããã1: ã»ããã¢ããã確èª
+
+ã¯ãŒã¯ãããŒãå®è¡ããåã«ã以äžã確èªããŸãã
+
+- â
ã»ã«ããã¹ãã©ã³ããŒã "Idle"ïŒç·è²ïŒãšè¡šç€ºãããŠãã
+- â
`SSH_PRIVATE_KEY` ã·ãŒã¯ã¬ãããæ§æãããŠãã
+- â
`DEPLOYMENT_HOSTS` 倿°ã«ã¿ãŒã²ããIPãå«ãŸããŠãã
+- â
ãããã¯ãŒã¯æ¥ç¶ã確èªãããŠãã
+
+### ã¹ããã2: Smart Agentããããã€
+
+**GitHub UIçµç±:**
+
+1. **Actions** ã¿ãã«ç§»åããŸã
+2. **"Deploy Smart Agent"** ãéžæããŸã
+3. **"Run workflow"** ãã¯ãªãã¯ããŸã
+4. ããã©ã«ãã® batch_size (256) ãåãå
¥ããŸã
+5. **"Run workflow"** ãã¯ãªãã¯ããŸã
+
+**GitHub CLIçµç±:**
+
+```bash
+gh workflow run "Deploy Smart Agent" --repo YOUR_USERNAME/github-actions-lab
+```
+
+### ã¹ããã3: å®è¡ãç£èŠ
+
+ã¯ãŒã¯ãããŒã«ã¯æ¬¡ã®ããã«è¡šç€ºãããŸãã
+
+1. **Prepare** ãžã§ã - ããããããªãã¯ã¹ãäœæ
+2. **Deploy** ãžã§ãïŒãããããšã«1ã€ïŒ - ãã¹ããžã®ãããã€
+
+åãžã§ããã¯ãªãã¯ããŠè©³çްãªãã°ã確èªããŸãã
+
+### ã¹ããã4: ã€ã³ã¹ããŒã«ã確èª
+
+ã¿ãŒã²ãããã¹ãã«SSHæ¥ç¶ããŠç¢ºèªããŸãã
+
+```bash
+# SSH to target
+ssh ubuntu@172.31.1.243
+
+# Check Smart Agent status
+cd /opt/appdynamics/appdsmartagent
+sudo ./smartagentctl status
+```
+
+**æåŸ
ãããåºå:**
+
+```
+Smart Agent is running (PID: 12345)
+Service: appdsmartagent.service
+Status: active (running)
+```
+
+### ã¹ããã5: 远å ã®ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ïŒãªãã·ã§ã³ïŒ
+
+å¿
èŠã«å¿ããŠãç¹å®ã®ãšãŒãžã§ã³ãã¿ã€ããã€ã³ã¹ããŒã«ããŸãã
+
+```bash
+# Install Machine Agent
+gh workflow run "Install Machine Agent (Batched for Large Scale)" \
+ --repo YOUR_USERNAME/github-actions-lab
+
+# Install DB Agent
+gh workflow run "Install DB Agent (Batched for Large Scale)" \
+ --repo YOUR_USERNAME/github-actions-lab
+```
+
+## ã¯ãŒã¯ãããŒåºåã®çè§£
+
+### Prepareãžã§ãã®åºå
+
+```
+Loading deployment hosts...
+Total hosts: 1000
+Batch size: 256
+Creating 4 batches...
+Batch 1: Hosts 1-256
+Batch 2: Hosts 257-512
+Batch 3: Hosts 513-768
+Batch 4: Hosts 769-1000
+```
+
+### Deployãžã§ãã®åºåïŒãããããšïŒ
+
+```
+Processing batch 1 of 4
+Deploying to 256 hosts in parallel...
+Host 172.31.1.1: SUCCESS
+Host 172.31.1.2: SUCCESS
+Host 172.31.1.3: SUCCESS
+...
+Batch 1 complete: 256/256 succeeded
+```
+
+### å®äºãµããªãŒ
+
+```
+Deployment Summary:
+Total hosts: 1000
+Successful: 998
+Failed: 2
+Failed hosts:
+ - 172.31.1.48
+ - 172.31.1.125
+```
+
+## äžè¬çãªãããã€ã·ããªãª
+
+### ã·ããªãª1: ååãããã€
+
+```bash
+# 1. Deploy Smart Agent
+gh workflow run "Deploy Smart Agent"
+
+# 2. Verify deployment
+# SSH to a host and check status
+
+# 3. Install agents as needed
+gh workflow run "Install Machine Agent (Batched for Large Scale)"
+gh workflow run "Install DB Agent (Batched for Large Scale)"
+```
+
+### ã·ããªãª2: Smart Agentã®æŽæ°
+
+```bash
+# 1. Stop and clean current installation
+gh workflow run "Stop and Clean Smart Agent (Batched for Large Scale)"
+
+# 2. Update Smart Agent ZIP in repository
+# (Push new version to repository)
+
+# 3. Deploy new version
+gh workflow run "Deploy Smart Agent"
+
+# 4. Reinstall agents
+gh workflow run "Install Machine Agent (Batched for Large Scale)"
+```
+
+### ã·ããªãª3: æ°ãããã¹ãã®è¿œå
+
+```bash
+# 1. Update DEPLOYMENT_HOSTS variable in GitHub
+# Add new IPs
+
+# 2. Deploy to all hosts (will skip existing ones with idempotent logic)
+gh workflow run "Deploy Smart Agent"
+```
+
+### ã·ããªãª4: å®å
šåé€
+
+```bash
+# 1. Stop and clean
+gh workflow run "Stop and Clean Smart Agent (Batched for Large Scale)"
+
+# 2. Complete removal
+gh workflow run "Cleanup All Agents"
+```
+
+{{% notice style="danger" %}}
+"Cleanup All Agents" 㯠`/opt/appdynamics` ãå®å
šã«åé€ããŸããããã¯å
ã«æ»ããŸããïŒ
+{{% /notice %}}
+
+## ã¯ãŒã¯ãããŒå€±æã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+
+### ã¯ãŒã¯ãããŒã "Queued" ã®ãŸãŸã«ãªã
+
+**çç¶**: ã¯ãŒã¯ãããŒãéå§ããªã
+
+**åå **: ã©ã³ããŒãå©çšã§ããªããããªãã©ã€ã³ã«ãªã£ãŠãã
+
+**解決ç**:
+
+1. ã©ã³ããŒã®ã¹ããŒã¿ã¹ã確èª: Settings â Actions â Runners
+2. ã©ã³ããŒã "Idle"ïŒç·è²ïŒãšè¡šç€ºãããŠããããšã確èªããŸã
+3. å¿
èŠã«å¿ããŠã©ã³ããŒãåèµ·å: `sudo ./svc.sh restart`
+
+### SSHæ¥ç¶ã®å€±æ
+
+**çç¶**: "Permission denied" ãŸã㯠"Connection refused" ãšã©ãŒ
+
+**解決ç**:
+
+**SSHãæåã§ãã¹ã:**
+
+```bash
+# From runner instance
+ssh -i ~/.ssh/test-key.pem ubuntu@172.31.1.243
+```
+
+**ã»ãã¥ãªãã£ã°ã«ãŒãã確èª:**
+
+- SSH (22) ãã©ã³ããŒããèš±å¯ãããŠããã確èªããŸã
+- ã©ã³ããŒãšã¿ãŒã²ãããåãã»ãã¥ãªãã£ã°ã«ãŒãã«ããããšã確èªããŸã
+
+**SSHããŒã確èª:**
+
+- `SSH_PRIVATE_KEY` ã·ãŒã¯ã¬ãããå®éã®ããŒãšäžèŽããŠããããšã確èªããŸã
+- å
¬éããŒãã¿ãŒã²ãããã¹ãã«ããããšã確èªããŸã
+
+### ãããã®éšåçãªå€±æ
+
+**çç¶**: äžéšã®ãã¹ãã¯æåããä»ã®ãã¹ãã¯å€±æãã
+
+**解決ç**:
+
+1. ã¯ãŒã¯ãããŒã®ãã°ã衚瀺ããŠå€±æãããã¹ããç¹å®ããŸã
+2. 倱æãããã¹ãã«SSHæ¥ç¶ããŠèª¿æ»ããŸã
+3. ã¯ãŒã¯ãããŒãåå®è¡ããŸãïŒåªçæ§ã«ãããæåãããã¹ãã¯ã¹ããããããŸãïŒ
+
+### ããããžã§ãã®ãšã©ãŒ
+
+**çç¶**: "Error splitting hosts into batches"
+
+**解決ç**:
+
+- `DEPLOYMENT_HOSTS` 倿°ã®ãã©ãŒãããã確èªããŸã
+- 1è¡ã«1ã€ã®IPã§ããããšã確èªããŸã
+- æ«å°Ÿã®ã¹ããŒã¹ãç¹æ®æåããªãããšã確èªããŸã
+- Unixã®æ¹è¡ã³ãŒãïŒCRLFã§ã¯ãªãLFïŒã䜿çšããŸã
+
+## ããã©ãŒãã³ã¹ãã¥ãŒãã³ã°
+
+### ããããµã€ãºã®èª¿æŽ
+
+**å°ããªããã**ïŒãªãœãŒã¹å°ãåŠçé
ïŒ:
+
+```bash
+gh workflow run "Deploy Smart Agent" -f batch_size=128
+```
+
+**倧ããªããã**ïŒãªãœãŒã¹å€ãåŠçéãïŒ:
+
+```bash
+gh workflow run "Deploy Smart Agent" -f batch_size=256
+```
+
+### ã©ã³ããŒãªãœãŒã¹ã®æšå¥šå€
+
+| ãã¹ãæ° | CPU | ã¡ã¢ãª | ããããµã€ãº |
+|-------|-----|--------|------------|
+| 1-100 | 2 cores | 4 GB | 256 |
+| 100-500 | 4 cores | 8 GB | 256 |
+| 500-2000 | 8 cores | 16 GB | 256 |
+| 2000+ | 16 cores | 32 GB | 256 |
+
+## ãã¹ããã©ã¯ãã£ã¹
+
+1. **ãŸãåäžãã¹ãã§ãã¹ã**
+ - 1ã€ã®IPã§ãã¹ã倿°ãäœæããŸã
+ - ã¯ãŒã¯ãããŒãå®è¡ããŠç¢ºèªããŸã
+ - ãã®åŸãå®å
šãªãªã¹ãã«ãããã€ããŸã
+
+2. **ã¯ãŒã¯ãããŒå®è¡ãç£èŠ**
+ - ãã°ããªã¢ã«ã¿ã€ã ã§ç£èŠããŸã
+ - ãšã©ãŒãããã«ç¢ºèªããŸã
+ - ãµã³ãã«ãã¹ãã§ç¢ºèªããŸã
+
+3. **é©åãªããããµã€ãºã䜿çš**
+ - ããã©ã«ã (256) ã¯ã»ãšãã©ã®å Žåã«æ©èœããŸã
+ - ã©ã³ããŒãèŠæŠããå Žåã¯æžãããŸã
+ - ã©ã³ããŒã®ãªãœãŒã¹äœ¿çšéãç£èŠããŸã
+
+4. **ã¯ãŒã¯ãããŒãææ°ã®ç¶æ
ã«ä¿ã€**
+ - ãªããžããªããææ°ã®å€æŽããã«ããŸã
+ - 鿬çªç°å¢ã§æŽæ°ããã¹ãããŸã
+ - ã«ã¹ã¿ãã€ãºãææžåããŸã
+
+5. **ã©ã³ããŒã®æ£åžžæ§ãç¶æ**
+ - ã©ã³ããŒããªã³ã©ã€ã³ã§ã¢ã€ãã«ç¶æ
ã«ä¿ã¡ãŸã
+ - ã©ã³ããŒãœãããŠã§ã¢ã宿çã«æŽæ°ããŸã
+ - ãã£ã¹ã¯å®¹éãšãªãœãŒã¹ãç£èŠããŸã
+
+## 次ã®ã¹ããã
+
+ããã§ãšãããããŸãïŒGitHub Actionsã䜿çšããŠAppDynamics Smart Agentã®ãããã€ãèªååããæ¹æ³ãåŠã³ãŸããã詳现ã«ã€ããŠã¯ã[å®å
šãªãªããžããª](https://github.com/chambear2809/github-actions-lab)ãåç
§ããŠãã ããã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/_index.md
new file mode 100644
index 0000000000..b9b2414dbd
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/3-github-actions/_index.md
@@ -0,0 +1,93 @@
+---
+title: GitHub Actions ã«ããèªåå
+weight: 3
+time: 2 minutes
+description: GitHub Actions ãšã»ã«ããã¹ãã©ã³ããŒãå©çšããŠãAppDynamics Smart Agent ã®ãããã€ãèªååããæ¹æ³ãåŠã³ãŸãã
+---
+
+## ã¯ããã«
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã**GitHub Actions** ãšã»ã«ããã¹ãã©ã³ããŒã䜿çšããŠãè€æ°ã® EC2 ã€ã³ã¹ã¿ã³ã¹ãžã® **AppDynamics Smart Agent** ã®ãããã€ãšã©ã€ããµã€ã¯ã«ç®¡çãèªååããæ¹æ³ã解説ããŸãã10 å°ã®ãã¹ãã管çããå Žåã§ãã10,000 å°ã®ãã¹ãã管çããå Žåã§ããæ¬ã¬ã€ãã§ã¯ã¹ã±ãŒã©ãã«ãã€ã»ãã¥ã¢ã§åçŸå¯èœãª Smart Agent ãªãã¬ãŒã·ã§ã³ãå®çŸããããã® GitHub Actions ã¯ãŒã¯ãããŒæŽ»çšæ¹æ³ã玹ä»ããŸãã
+
+ 
+
+## ãã®ã¯ãŒã¯ã·ã§ããã§åŠã¶ããš
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã以äžã®å
容ãåŠç¿ããŸãã
+
+- GitHub Actions ã¯ãŒã¯ãããŒãå©çšããŠãè€æ°ã®ãã¹ãã« **Smart Agent ããããã€**ããæ¹æ³
+- å®å
šãªèªèšŒæ
å ±ç®¡çã®ããã« **GitHub ã® secrets ãš variables ãèšå®**ããæ¹æ³
+- AWS VPC å
ã«**ã»ã«ããã¹ãã©ã³ããŒãã»ããã¢ãã**ããæ¹æ³
+- æ°åå°ã®ãã¹ãã«å¯Ÿå¿ããããã®**èªåãããåŠçãå®è£
**ããæ¹æ³
+- ã€ã³ã¹ããŒã«ãã¢ã³ã€ã³ã¹ããŒã«ã忢ãã¯ãªãŒã³ã¢ãããå«ã**ãšãŒãžã§ã³ãã®å®å
šãªã©ã€ããµã€ã¯ã«ç®¡ç**
+- **ã¯ãŒã¯ãããŒã®å®è¡ç¶æ³ãç£èŠ**ããåé¡ããã©ãã«ã·ã¥ãŒãããæ¹æ³
+
+## äž»ãªæ©èœ
+
+- ð **䞊åãããã€** - è€æ°ã®ãã¹ãã«åæã«ãããã€
+- ð **å®å
šãªã©ã€ããµã€ã¯ã«ç®¡ç** - ãšãŒãžã§ã³ãã®å
šãªãã¬ãŒã·ã§ã³ãç¶²çŸ
ãã 11 åã®ã¯ãŒã¯ãããŒ
+- ðïž **Infrastructure as Code** - ãã¹ãŠã®ã¯ãŒã¯ãããŒã GitHub ã§ããŒãžã§ã³ç®¡ç
+- ð **ã»ãã¥ã¢** - SSH ããŒã GitHub secrets ãšããŠä¿åãããã©ã€ããŒã VPC ãããã¯ãŒãã³ã°ã䜿çš
+- ð **å€§èŠæš¡ãªã¹ã±ãŒã©ããªãã£** - èªåãããåŠçã«ããæ°åå°ã®ãã¹ããžã®ãããã€ã«å¯Ÿå¿
+- ðïž **ã»ã«ããã¹ãã©ã³ããŒ** - èªèº«ã® AWS VPC å
ã§å®è¡
+
+## ã¢ãŒããã¯ãã£æŠèŠ
+
+```text
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
+â GitHub Actions-based Deployment â
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
+â â
+â Developer âââ¶ GitHub.com âââ¶ Self-hosted Runner (AWS VPC) â
+â â â
+â ââââ¶ Host 1 (SSH) â
+â ââââ¶ Host 2 (SSH) â
+â ââââ¶ Host 3 (SSH) â
+â ââââ¶ Host N (SSH) â
+â â
+â All hosts send metrics âââ¶ AppDynamics Controller â
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
+```
+
+## ã¯ãŒã¯ã·ã§ããã®æ§æ
+
+ãã®ã¯ãŒã¯ã·ã§ããã«ã¯ã以äžã®å
容ãå«ãŸããŸãã
+
+1. **ã¢ãŒããã¯ãã£ãšèšèš** - GitHub Actions ã¯ãŒã¯ãããŒã®ã¢ãŒããã¯ãã£ãçè§£ãã
+2. **GitHub ã®ã»ããã¢ãã** - secretsãvariablesãã»ã«ããã¹ãã©ã³ããŒã®èšå®
+3. **ã¯ãŒã¯ãããŒã®äœæ** - å©çšå¯èœãª 11 åã®ã¯ãŒã¯ãããŒã®çè§£ãšäœ¿ç𿹿³
+4. **ãããã€ã®å®è¡** - ã¯ãŒã¯ãããŒã®å®è¡ãšã€ã³ã¹ããŒã«ã®æ€èšŒ
+
+## å©çšå¯èœãªã¯ãŒã¯ãããŒ
+
+ãã®ãœãªã¥ãŒã·ã§ã³ã«ã¯ãSmart Agent ã®å®å
šãªã©ã€ããµã€ã¯ã«ç®¡çã®ããã® **11 åã®ã¯ãŒã¯ãããŒ**ãå«ãŸããŠããŸãã
+
+| ã«ããŽãª | ã¯ãŒã¯ãããŒæ° | 説æ |
+| -------- | --------- | ----------- |
+| **ãããã€** | 1 | Smart Agent ã®ãããã€ãšèµ·å |
+| **ãšãŒãžã§ã³ãã®ã€ã³ã¹ããŒã«** | 4 | NodeãMachineãDBãJava ã®åãšãŒãžã§ã³ããã€ã³ã¹ããŒã« |
+| **ãšãŒãžã§ã³ãã®ã¢ã³ã€ã³ã¹ããŒã«** | 4 | ç¹å®ã®ãšãŒãžã§ã³ãã¿ã€ããã¢ã³ã€ã³ã¹ããŒã« |
+| **ãšãŒãžã§ã³ã管ç** | 2 | 忢ïŒã¯ãªãŒã³ã¢ãããšå®å
šã¯ãªãŒã³ã¢ãã |
+
+ãã¹ãŠã®ã¯ãŒã¯ãããŒã¯ã¹ã±ãŒã©ããªãã£ã®ããã®èªåãããåŠçã«å¯Ÿå¿ããŠããŸãã
+
+## åææ¡ä»¶
+
+- ãªããžããªãžã®ã¢ã¯ã»ã¹æš©ãæã€ GitHub ã¢ã«ãŠã³ã
+- Ubuntu EC2 ã€ã³ã¹ã¿ã³ã¹ãå«ã AWS VPC
+- åã VPC å
ã®ã»ã«ããã¹ã GitHub Actions ã©ã³ããŒ
+- èªèšŒçšã® SSH ããŒãã¢
+- AppDynamics Smart Agent ããã±ãŒãž
+
+## GitHub ãªããžããª
+
+ãã¹ãŠã®ã¯ãŒã¯ãããŒã³ãŒããšèšå®ãã¡ã€ã«ã¯ã以äžã® GitHub ãªããžããªã§å
¬éãããŠããŸãã
+
+**[https://github.com/chambear2809/github-actions-lab](https://github.com/chambear2809/github-actions-lab)**
+
+ãªããžããªã«ã¯ä»¥äžãå«ãŸããŸãã
+
+- 11 åã®å®å
šãªã¯ãŒã¯ãã㌠YAML ãã¡ã€ã«
+- 詳现ãªã»ããã¢ããããã¥ã¡ã³ã
+- ã¢ãŒããã¯ãã£å³
+- ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã¬ã€ã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/4-ansible-automation/2-setup.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/4-ansible-automation/2-setup.md
new file mode 100644
index 0000000000..0a4d2583ae
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/4-ansible-automation/2-setup.md
@@ -0,0 +1,95 @@
+---
+title: ã»ããã¢ãããšèšå®
+weight: 2
+time: 10 minutes
+---
+
+## Step 2: ãã¡ã€ã«ãšãã£ã¬ã¯ããªæ§é ã®æºå
+
+Ansible ãããã€ã¡ã³ãçšã®ãããžã§ã¯ããã£ã¬ã¯ããªãäœæããŸããæ¬¡ã®ãã¡ã€ã«ãå«ããŠãã ããã
+
+```text
+.
+âââ appdsmartagent_64_linux_24.6.0.2143.deb # Debian package
+âââ appdsmartagent_64_linux_24.6.0.2143.rpm # RedHat package
+âââ inventory-cloud.yaml # Inventory file
+âââ smartagent.yaml # Playbook
+âââ variables.yaml # Variables file
+```
+
+ã¿ãŒã²ããç°å¢çšã«é©å㪠Smart Agent ããã±ãŒãžãããŠã³ããŒãæžã¿ã§ããããšã確èªããŠãã ããã
+
+## Step 3: ãã¡ã€ã«ã®çè§£
+
+### 1. Inventory ãã¡ã€ã« (`inventory-cloud.yaml`)
+
+inventory ãã¡ã€ã«ã«ã¯ Smart Agent ããããã€ãããã¹ããèšèŒããŸããããã§ãã¹ããšèªèšŒæ
å ±ãå®çŸ©ããŸãã
+
+```yaml
+all:
+ hosts:
+ smartagent-host-1:
+ ansible_host: 54.173.1.106
+ ansible_username: ec2-user
+ ansible_password: ins3965!
+ ansible_become: yes
+ ansible_become_method: sudo
+ ansible_become_password: ins3965!
+ ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
+
+ smartagent-host-2:
+ ansible_host: 192.168.86.107
+ ansible_username: aleccham
+ ansible_password: ins3965!
+ ansible_become: yes
+ ansible_become_method: sudo
+ ansible_become_password: ins3965!
+
+ smartagent-host-3:
+ ansible_host: 54.82.95.69
+ ansible_username: ubuntu
+ ansible_password: ins3965!
+ ansible_become: yes
+ ansible_become_method: sudo
+ ansible_become_password: ins3965!
+```
+
+**äœæ¥å
容**: `ansible_host` ã® IP ãšèªèšŒæ
å ±ããå®éã®ã©ãç°å¢ã®å€ã«æŽæ°ããŠãã ããã
+
+### 2. 倿°ãã¡ã€ã« (`variables.yaml`)
+
+ãã®ãã¡ã€ã«ã«ã¯ Smart Agent ã®èšå®æ
å ±ãå«ãŸããŠããŸãã
+
+```yaml
+smart_agent:
+ controller_url: 'CONTROLLER URL HERE, JUST THE BASE URL' # o11y.saas.appdynamics.com
+ account_name: 'Account Name Here'
+ account_access_key: 'YOUR ACCESS KEY HERE'
+ fm_service_port: '443' # Use 443 or 8080 depending on your environment.
+ ssl: true
+
+smart_agent_package_debian: 'appdsmartagent_64_linux_24.6.0.2143.deb' # or the appropriate package name
+smart_agent_package_redhat: 'appdsmartagent_64_linux_24.6.0.2143.rpm' # or the appropriate package name
+```
+
+**äœæ¥å
容**: `smart_agent` ã»ã¯ã·ã§ã³ãããèªèº«ã®ã³ã³ãããŒã©ãŒ URLãã¢ã«ãŠã³ãåãã¢ã¯ã»ã¹ããŒã§æŽæ°ããŠãã ããã
+
+### 3. Playbook (`smartagent.yaml`)
+
+ãã® playbook 㯠Cisco AppDynamics Distribution of OpenTelemetry Collector ã®ãããã€ã¡ã³ããçµ±æ¬ããŸããã¿ã¹ã¯ã®æŠèŠã¯æ¬¡ã®ãšããã§ãã
+
+1. **åææ¡ä»¶**: å¿
èŠãªããã±ãŒãžãã€ã³ã¹ããŒã«ããŸã (RedHat 系㯠`yum-utils`ãDebian 系㯠`curl`/`apt-transport-https`)ã
+2. **ãã£ã¬ã¯ããªã®æºå**: `/opt/appdynamics/appdsmartagent` ãã£ã¬ã¯ããªãååšããããšã確èªããŸãã
+3. **èšå®**:
+ * `config.ini` ãååšããã確èªããŸãã
+ * ååšããªãå Žåã¯ã`variables.yaml` ã®å€ã䜿çšããŠããã©ã«ãã® `config.ini` ãäœæããŸãã
+ * `lineinfile` ã䜿çšããŠèšå®ã㌠(AccountAccessKeyãControllerURL ãªã©) ãæŽæ°ããèšå®ãæ£ããããšãä¿èšŒããŸãã
+4. **ããã±ãŒãžç®¡ç**:
+ * OS ãã¡ã㪠(Debian/RedHat) ã«å¿ããŠæ£ããããã±ãŒãžãã¹ãå€å®ããŸãã
+ * ããã±ãŒãžãããŒã«ã«ã«ååšããªãå Žåã¯å€±æããŸãã
+ * ããã±ãŒãžãã¿ãŒã²ãããã¹ãã® `/tmp` ãã£ã¬ã¯ããªã«ã³ããŒããŸãã
+ * `dpkg` ãŸã㯠`yum` ã䜿çšããŠããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã
+5. **ãµãŒãã¹ç®¡ç**: `smartagent` ãµãŒãã¹ãåèµ·åããŸãã
+6. **ã¯ãªãŒã³ã¢ãã**: äžæçãªããã±ãŒãžãã¡ã€ã«ãåé€ããŸãã
+
+ãã® playbook 㯠`when: ansible_os_family == ...` æ¡ä»¶åå²ã䜿çšããŠãåãã¯ãŒã¯ãããŒå
ã§ RedHat 系㚠Debian ç³»ã®äž¡æ¹ã®ã·ã¹ãã ã«å¯Ÿå¿ããŠããŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/4-ansible-automation/3-deployment.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/4-ansible-automation/3-deployment.md
new file mode 100644
index 0000000000..cf22bf2d0c
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/4-ansible-automation/3-deployment.md
@@ -0,0 +1,25 @@
+---
+title: ãããã€
+weight: 3
+time: 5 minutes
+---
+
+## ã¹ããã4: Playbook ã®å®è¡
+
+Smart Agent ããããã€ããã«ã¯ããããžã§ã¯ããã£ã¬ã¯ããªããæ¬¡ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash
+ansible-playbook -i inventory-cloud.yaml smartagent.yaml
+```
+
+å¥ã®ååã§äœæããŠããå Žåã¯ã `inventory-cloud.yaml` ããå©çšã®ç°å¢ã«åã£ã inventory ãã¡ã€ã«ã«çœ®ãæããŠãã ããã
+
+### æ€èšŒ
+
+Playbook ãæ£åžžã«å®äºãããã察象ãã¹ãã®ããããã«ãã°ã€ã³ããŠãµãŒãã¹ã®ç¶æ
ã確èªããããšã§ããããã€ãæ€èšŒã§ããŸãã
+
+```bash
+systemctl status smartagent
+```
+
+ãµãŒãã¹ã active (running) ã«ãªã£ãŠããããšã確èªã§ããã¯ãã§ãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/4-ansible-automation/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/4-ansible-automation/_index.md
new file mode 100644
index 0000000000..35caefebcf
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/4-ansible-automation/_index.md
@@ -0,0 +1,72 @@
+---
+title: Monitoring as Code with Smart Agent and Ansible
+linkTitle: Ansible Automation
+weight: 4
+time: 10 minutes
+description: Ansible ã䜿çšã㊠AppDynamics Smart Agent ã®ãããã€ãèªååããæ¹æ³ãåŠã³ãŸãã
+---
+
+## ã¯ããã«
+
+ãã®ã¬ã€ãã§ã¯ãAnsible ã䜿çšã㊠Cisco AppDynamics Smart Agent ãè€æ°ã®ãã¹ãã«ãããã€ããæ¹æ³ã«ã€ããŠè©³ãã説æããŸããèªååãæŽ»çšããããšã§ãç£èŠã€ã³ãã©ã¹ãã©ã¯ãã£ã®äžè²«æ§ãå
ç¢æ§ããããŠå®¹æãªã¹ã±ãŒã©ããªãã£ã確ä¿ã§ããŸãã
+
+## ã¢ãŒããã¯ãã£ã®æŠèŠ
+
+ãã®ãããã€ã¢ãŒããã¯ãã£ã§ã¯ãAnsible Control Node ãæŽ»çšããŠãã¿ãŒã²ãããã¹ããžã® Smart Agent ã®ã€ã³ã¹ããŒã«ãšæ§æããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŸãã
+
+```mermaid
+graph TD
+ CN[Ansible Control Node
(macOS/Linux)] -->|SSH| H1[Target Host 1
(Debian/RedHat)]
+ CN -->|SSH| H2[Target Host 2
(Debian/RedHat)]
+ CN -->|SSH| H3[Target Host N
(Debian/RedHat)]
+
+ subgraph "Target Host Configuration"
+ SA[Smart Agent Service]
+ Config[config.ini]
+ Package[Installer .deb/.rpm]
+ end
+
+ H1 --> SA
+ H2 --> SA
+ H3 --> SA
+```
+
+### äž»èŠãªã³ã³ããŒãã³ã
+
+* **Ansible Control Node**: Playbook ãå®è¡ãããã·ã³ïŒäŸ: èªèº«ã®ã©ãããããããžã£ã³ããã¹ãïŒã§ãã
+* **Target Hosts**: Smart Agent ãã€ã³ã¹ããŒã«ãããµãŒããŒã§ãã
+* **Inventory**: ã¿ãŒã²ãããã¹ããšãã®æ¥ç¶æ
å ±ã®äžèЧã§ãã
+* **Playbook**: ãããã€ã¿ã¹ã¯ãå®çŸ©ãã YAML ãã¡ã€ã«ã§ãã
+
+## åææ¡ä»¶
+
+éå§ããåã«ã以äžãæºãããŠããããšã確èªããŠãã ããã
+
+* SSH çµç±ã§ã¿ãŒã²ãããã¹ãã«ã¢ã¯ã»ã¹ã§ããããšã
+* ã¿ãŒã²ãããã¹ãã§ sudo æš©éãæã£ãŠããããšã
+* Smart Agent ã®ã€ã³ã¹ããŒã«ããã±ãŒãžïŒ`.deb` ãŸã㯠`.rpm`ïŒãããŠã³ããŒãæžã¿ã§ããããšã
+* AppDynamics Controller ã®ã¢ã«ãŠã³ãæ
å ±ïŒAccess KeyãAccount NameãURLïŒã
+
+## ã¹ããã 1: macOS ã« Ansible ãã€ã³ã¹ããŒã«ãã
+
+ãŸããControl Node ã« Ansible ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã
+
+1. **Homebrew ã®ã€ã³ã¹ããŒã«**ïŒãŸã ã€ã³ã¹ããŒã«ããŠããªãå ŽåïŒ:
+
+ ```bash
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+ ```
+
+2. **Ansible ã®ã€ã³ã¹ããŒã«**:
+
+ ```bash
+ brew install ansible
+ ```
+
+3. **ã€ã³ã¹ããŒã«ã®æ€èšŒ**:
+
+ ```bash
+ ansible --version
+ ```
+
+ ã€ã³ã¹ããŒã«ããã Ansible ã®ããŒãžã§ã³ãåºåãããŠããã¯ãã§ãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/_index.md
new file mode 100644
index 0000000000..8822385cd4
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/6-smartagent/_index.md
@@ -0,0 +1,155 @@
+---
+title: SmartAgent Deployment
+weight: 6
+time: 2 minutes
+description: AppDynamics Smart Agent ãã€ã³ãã©å
šäœã«ã¹ã±ãŒã«ããŠãããã€ã»ç®¡çããããã®è€æ°ã®ã¢ãããŒããåŠã³ãŸãã
+---
+
+## ã¯ããã«
+
+AppDynamics **Smart Agent** ã¯ãã€ã³ãã©ã«å¯ŸããŠå
æ¬çãªç£èŠæ©èœãæäŸãã軜éã§ã€ã³ããªãžã§ã³ããªãšãŒãžã§ã³ãã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ 4 ã€ã®ç°ãªããããã€ã¢ãããŒããåãäžããçµç¹ã®ããŒãºãæ¢åã®ããŒã«ã«æãé©ããæ¹æ³ãéžæã§ããããã«ããŸãã
+
+
+
+## Smart Agent ãšã¯
+
+Smart Agent 㯠AppDynamics ã®æ¬¡äžä»£ç£èŠãšãŒãžã§ã³ãã§ã以äžãæäŸããŸãã
+
+- **çµ±åç£èŠ**: ã€ã³ãã©ãã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãåäžã®ãšãŒãžã§ã³ãã§ç£èŠ
+- **軜éèšèš**: æå°éã®ãªãœãŒã¹ãããããªã³ã
+- **èªåæ€åº**: ã¢ããªã±ãŒã·ã§ã³ãèªåçã«æ€åºããŠç£èŠ
+- **ãã€ãã£ãèšè£
**: ã¢ããªã±ãŒã·ã§ã³ããã©ãŒãã³ã¹ãžã®æ·±ãå¯èŠæ§
+- **æè»ãªãããã€**: è€æ°ã®ã€ã³ã¹ããŒã«ã»ç®¡çãªãã·ã§ã³
+
+## ãããã€ã¢ãããŒã
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãSmart Agent ãã¹ã±ãŒã«ããŠãããã€ããããã® 4 ã€ã®ç°ãªãã¢ãããŒããåãäžããŸãã
+
+### 1. ãªã¢ãŒãã€ã³ã¹ããŒã« (smartagentctl)
+
+`smartagentctl` CLI ããŒã«ã䜿çšã㊠SSH çµç±ã§ãããã€ããæãçŽæ¥çãªã¢ãããŒãã§ãã
+
+**æé©ãªçšé:**
+
+- äžèŠæš¡ãªæ°ã®ãã¹ããžã®è¿
éãªãããã€
+- æ¢åã® CI/CD ã€ã³ãã©ãæããªãç°å¢
+- ãã¹ãããã³æŠå¿µå®èšŒã®ã·ããªãª
+- ãããã€ããã»ã¹ãçŽæ¥å¶åŸ¡ãããå Žå
+
+**äž»ãªç¹åŸŽ:**
+
+- çŽæ¥ SSH ããŒã¹ã®ãããã€
+- ã·ã³ãã«ãª YAML èšå®
+- 远å ããŒã«äžèŠ
+- 䞊åå®è¡ãµããŒã
+
+### 2. Jenkins Automation
+
+Jenkins ãã€ãã©ã€ã³ã䜿çšããŠã©ã€ããµã€ã¯ã«å
šäœã管çããããšã³ã¿ãŒãã©ã€ãºã°ã¬ãŒãã®ãããã€æ¹æ³ã§ãã
+
+**æé©ãªçšé:**
+
+- ãã§ã« Jenkins ã䜿çšããŠããçµç¹
+- è€éãªãããã€ã¯ãŒã¯ãããŒ
+- æ¿èªã²ãŒããå¿
èŠãšããç°å¢
+- æ¢åã® CI/CD ãã€ãã©ã€ã³ãšã®çµ±å
+
+**äž»ãªç¹åŸŽ:**
+
+- ãã©ã¡ãŒã¿åããããã€ãã©ã€ã³
+- æ°åå°ã®ãã¹ãã«å¯ŸãããããåŠç
+- å®å
šãªã©ã€ããµã€ã¯ã«ç®¡ç
+- éäžãã°ãšã¬ããŒã
+
+### 3. GitHub Actions Automation
+
+ã»ã«ããã¹ãåã©ã³ããŒã䜿çšãã GitHub Actions ã¯ãŒã¯ãããŒã«ãããã¢ãã³ãª CI/CD ã¢ãããŒãã§ãã
+
+**æé©ãªçšé:**
+
+- ããŒãžã§ã³ç®¡çã« GitHub ã䜿çšããŠããããŒã
+- ã¯ã©ãŠããã€ãã£ããªç°å¢
+- GitOps ã¯ãŒã¯ãããŒ
+- Web ããŒã¹ã®ç®¡çã奜ã忣ããŒã
+
+**äž»ãªç¹åŸŽ:**
+
+- 11 åã®å°çšã¯ãŒã¯ãããŒ
+- VPC å
ã®ã»ã«ããã¹ãåã©ã³ããŒ
+- GitHub Secrets ãšã®çµ±å
+- ã¹ã±ãŒã©ããªãã£ã®ããã®èªåãããåŠç
+
+### 4. Ansible Automation
+
+Ansible playbook ã䜿çšãã Infrastructure as Code ã«ããèšå®ç®¡çã¢ãããŒãã§ãã
+
+**æé©ãªçšé:**
+
+- èšå®ç®¡çã« Ansible ã䜿çšããŠããããŒã
+- 宣èšçãªã€ã³ãã©å®çŸ©
+- ããªãŒãå
šäœã§ã®äžè²«ããç¶æ
管ç
+
+**äž»ãªç¹åŸŽ:**
+
+- Infrastructure as Code (IaC)
+- åªç㪠playbook
+- ã€ã³ãã³ããªç®¡ç
+- ããŒã«ããŒã¹ã®æ§æ
+
+## é©åãªã¢ãããŒãã®éžæ
+
+| èŠçŽ | ãªã¢ãŒãã€ã³ã¹ããŒã« | Jenkins | GitHub Actions | Ansible |
+|--------|-------------------|---------|----------------|---------|
+| **ã»ããã¢ããã®è€éã** | äœ | äž | äž | äœ |
+| **ã¹ã±ãŒã©ããªãã£** | è¯ (æ°çŸå°ã®ãã¹ã) | åª (æ°åå°) | åª (æ°åå°) | åª (æ°åå°) |
+| **åææ¡ä»¶** | SSH ã¢ã¯ã»ã¹ã®ã¿ | Jenkins ãµãŒã㌠| GitHub ã¢ã«ãŠã³ã | Ansible ã³ã³ãããŒã«ããŒã |
+| **åŠç¿æ²ç·** | æå°é | äžçšåºŠ | äžçšåºŠ | äœïœäžçšåºŠ |
+| **èªååã¬ãã«** | æåå®è¡ | å®å
šèªåå | å®å
šèªåå | å®å
šèªåå |
+| **æé©ãªãŠãŒã¹ã±ãŒã¹** | è¿
éãªããã〠| ãšã³ã¿ãŒãã©ã€ãº CI/CD | ã¢ãã³ DevOps | Infrastructure as Code |
+
+## ãã¹ãŠã®ã¢ãããŒãã«å
±éããæ©èœ
+
+ã©ã®ãããã€æ¹æ³ãéžæããŠãããã¹ãŠã®ã¢ãããŒãã§ä»¥äžãæäŸãããŸãã
+
+- â
ãªã¢ãŒããã¹ããžã® **SSH ããŒã¹ã®ãããã€**
+- â
ããé«éãªãããã€ã®ããã® **䞊åå®è¡**
+- â
**å®å
šãªã©ã€ããµã€ã¯ã«ç®¡ç** (ã€ã³ã¹ããŒã«ãèµ·åã忢ãã¢ã³ã€ã³ã¹ããŒã«)
+- â
ã³ã³ãããŒã©ãŒèšå®ã® **æ§æç®¡ç**
+- â
**ãšã©ãŒãã³ããªã³ã°** ãšãã°èšé²
+- â
æ°çŸïœæ°åå°ã®ãã¹ããžã® **ã¹ã±ãŒã©ããªãã£**
+
+## ã¯ãŒã¯ã·ã§ããæ§æ
+
+åãããã€ã¢ãããŒãã«ã¯å°çšã®ã»ã¯ã·ã§ã³ããããŸãã
+
+1. **Remote Installation** - çŽæ¥ CLI ããŒã¹ã®ãããã€
+2. **Jenkins Automation** - ãã€ãã©ã€ã³ããŒã¹ã®ãšã³ã¿ãŒãã©ã€ãºãããã€
+3. **GitHub Actions** - ã¢ãã³ãªã¯ãŒã¯ãããŒããŒã¹ã®ãããã€
+4. **Ansible Automation** - Infrastructure as Code ãããã€
+
+ããŒãºã«å¿ããŠã1 ã€ãŸãã¯ãã¹ãŠã®ã¢ãããŒãã宿œã§ããŸãã
+
+{{% notice title="Tip" style="primary" icon="lightbulb" %}}
+Smart Agent ã®ãããã€ãåããŠã®æ¹ã¯ãããèªååããããœãªã¥ãŒã·ã§ã³ã«é²ãåã«ããŸã **Remote Installation** ã¢ãããŒãããå§ããŠåºæ¬ãçè§£ããããšãããããããŸãã
+{{% /notice %}}
+
+## åææ¡ä»¶
+
+ããããã®ãããã€ã¢ãããŒããé²ããåã«ã以äžã確èªããŠãã ããã
+
+- ã³ã³ãããŒã©ãŒãžã®ã¢ã¯ã»ã¹ãå¯èœãª AppDynamics ã¢ã«ãŠã³ã
+- ã¢ã«ãŠã³ãåãšã¢ã¯ã»ã¹ããŒ
+- SSH ã¢ã¯ã»ã¹å¯èœãªã¿ãŒã²ãããã¹ã
+- ãã¹ããã AppDynamics Controller ãžã®ãããã¯ãŒã¯æ¥ç¶
+- ã¿ãŒã²ãããã¹ãäžã®é©åãªæš©é
+
+## 次ã®ã¹ããã
+
+åªå
ãããããã€ã¢ãããŒããéžæããŠã該åœããã»ã¯ã·ã§ã³ã«é²ãã§ãã ããã
+
+- **ã·ã³ãã«ã«å§ãã**: Remote Installation ããå§ããŠåºæ¬ãåŠç¿
+- **Jenkins ã§ã¹ã±ãŒã«**: ãšã³ã¿ãŒãã©ã€ãºã°ã¬ãŒãã®èªååã®ããã« Jenkins ãžç§»è¡
+- **GitHub ã§ã¢ãã³å**: ã¯ã©ãŠããã€ãã£ããªã¯ãŒã¯ãããŒã®ããã« GitHub Actions ãæ¡çš
+- **Ansible ã§èªåå**: 宣èšçãªèšå®ç®¡çã®ããã« Ansible ãæŽ»çš
+
+åã»ã¯ã·ã§ã³ã§ã¯ãSmart Agent ãã¹ã±ãŒã«ããŠãããã€ããããã®å®å
šãªãã³ãºãªã³ã¬ã€ããæäŸããŸãã
diff --git a/content/ja/ninja-workshops/apm/15-appd-workshop/_index.md b/content/ja/ninja-workshops/apm/15-appd-workshop/_index.md
new file mode 100644
index 0000000000..1efa8587b7
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/15-appd-workshop/_index.md
@@ -0,0 +1,38 @@
+---
+title: Splunk4Ninjas AppDynamics
+weight: 15
+time: 90 minutes
+description: ãã«ã¹ã¿ã㯠AppDynamics ãŠã©ãŒã¯ã¹ã«ãŒ â Java APMããµãŒããŒå¯èŠåããã©ãŠã¶ RUMãããŒã¿ããŒã¹ç£èŠãBusiness iQ ã¢ããªãã£ã¯ã¹ã
+aliases:
+ - /ninja-workshops/15-appd-workshop/
+---
+
+## ã¯ããã«
+
+Splunk AppDynamics ã¯ãããžãã¹ã¯ãªãã£ã«ã«ãªã¢ããªã±ãŒã·ã§ã³åãã®ãã«ã¹ã¿ãã¯æ§èœç£èŠãœãªã¥ãŒã·ã§ã³ã§ããã以äžã®æ©èœãæäŸããŸãã
+
+- åŸæ¥åããã€ããªãããã¯ã©ãŠããã€ãã£ããåãããç°å¢ãéžã°ãªãäžè²«ãããšã³ãããŒãšã³ãã®ã¢ããªã±ãŒã·ã§ã³ç£èŠã
+- ãããã€å
ãåãããã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿããã¯ã©ãŠãç§»è¡ã®å éãšãšã³ã¿ãŒãã©ã€ãºã°ã¬ãŒãã®ãšã³ãããŒãšã³ãã®æŽå¯ã
+- æ§èœåé¡ãããžãã¹äžã®åé¡ã«çºå±ããåã«è¿
éã«è§£æ±ºã§ãã3 ã¯ãªãã¯ã§æ ¹æ¬åå ã«ãã©ãçããçµ±åç£èŠã
+
+åŸæ¥åãã¯ã©ãŠãããã€ããªããã®ãããã®ãããã€ã¡ã³ãã«ãããŠããAppDynamics ãã©ãããã©ãŒã ã«é¢ããæ¢åã®äººæãããã»ã¹ããã¬ãŒãã³ã°ã掻çšããããšã§ãç·ææã³ã¹ã (TCO) ãæé©åã§ããŸãã
+
+
+
+## ã¯ãŒã¯ã·ã§ããæŠèŠ
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãSplunk AppDynamics ã®åºæ¬ãæ±ããŸããSplunk AppDynamics ã䜿ã£ãŠãã¢ããªã±ãŒã·ã§ã³ãµãŒãã¹ãWeb ã¢ããªã±ãŒã·ã§ã³ãããŒã¿ããŒã¹ãªã©ã®å¥å
šæ§ãã©ã®ããã«ç£èŠã§ãããã宿ŒããŸããæ¬ã¯ãŒã¯ã·ã§ãããå®äºãããšã以äžã®ããšãã§ããããã«ãªããŸãã
+
+- AppDynamics Java APM Agent ã®ããŠã³ããŒããšã€ã³ã¹ããŒã«ã
+- Controller ã«ãããåéèšå®ã®æ§æã
+- ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã®å¥å
šæ§ã®ç£èŠãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã
+- AppDynamics ãååŸããããŒã¿ã«åºã¥ãã¢ãã¿ãªã³ã°ãµãŒãã¹ã®ã¢ã©ãŒãç£èŠã
+- ãµãŒããŒã®å¥å
šæ§ã®ç£èŠãšåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã
+- BRUM ãçšãããã©ãŠã¶ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã®å¥å
šæ§ã®ç£èŠã
+- ããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ã®ç£èŠãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã
+- Splunk AppDynamics Business IQ ã«ãããŠãŒã¶ãŒè¡åãžã®æ·±ãå¯èŠæ§ã®ç²åŸã
+
+## ä»åŸè¿œå äºå®ã®äœæ¥
+
+- ãã«ã¹ã«ãŒã«ã«é¢ããã»ã¯ã·ã§ã³ã®è¿œå ïŒæ¢åã®ãã«ã¹ã«ãŒã«ã®ç¢ºèªæ¹æ³ãæ°ãããã«ã¹ã«ãŒã«ã®äœæïŒã
+- ã¢ããªã±ãŒã·ã§ã³ã»ãã¥ãªãã£ã
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/1-overview/_index.md b/content/ja/ninja-workshops/apm/17-appd-ingest/1-overview/_index.md
new file mode 100644
index 0000000000..47db911ca7
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/1-overview/_index.md
@@ -0,0 +1,105 @@
+---
+title: ã¯ãŒã¯ã·ã§ããæŠèŠ
+linkTitle: 1. æŠèŠ
+weight: 1
+archetype: chapter
+time: 5 minutes
+description: ãŠãŒã¹ã±ãŒã¹ãã¢ãŒããã¯ãã£ãåææ¡ä»¶ãããã³ãã€ããªããã¢ãŒããšãã¥ã¢ã«ã·ã°ãã«ã¢ãŒãã®éãã«ã€ããŠè§£èª¬ããŸãã
+---
+
+## ãŠãŒã¹ã±ãŒã¹
+
+ããªãã®çµç¹ã§ã¯çŸåšãAPM ãšã㊠AppDynamics ãéçšããŠããŸããããŒã¿ã®å¯èŠæ§ãšã¬ããã³ã¹ã«é¢ããåãçµã¿ã®äžç°ãšããŠãçµå¶é£ã¯ã¢ããªã±ãŒã·ã§ã³ããã©ãŒãã³ã¹ããŒã¿ã **Splunk Observability Cloud** ã«ãæµã蟌ã¿ããã§ã« Splunk ã«ååšããã€ã³ãã©ã¹ãã©ã¯ãã£ã¡ããªã¯ã¹ããã°ããã®ä»ã®ã·ã°ãã«ãšäžŠã¹ãŠãããŒã ã«çµ±äžããããã¥ãŒãæäŸããããšèããŠããŸãã
+
+ãã¹ãŠã®ãµãŒãã¹ãå¥åã® OpenTelemetry SDK ã§åèšè£
ãã代ããã«ãAppDynamics Java Agent 㯠**ãã¥ã¢ã«ã·ã°ãã«ã¢ãŒã** ããµããŒãããŠããŸããããã¯ãåäžã®ãšãŒãžã§ã³ãã AppDynamics APM ããŒã¿ãš OpenTelemetry ãã¬ãŒã¹ã®äž¡æ¹ãåæã«çæããä»çµã¿ã§ããããã«ãããAppDynamics ã®æ©èœããã«ã«ç¶æããªãããåããã¬ã¡ããªãŒã OpenTelemetry Collector çµç±ã§ Splunk Observability Cloud ã«ã¹ããªãŒãã³ã°ã§ããŸãã
+
+ããã¯ãçŸåš AppDynamics ãçç¥ããäŸåããŠãã L1 ããã³ L2 ããŒã ã«ãšã£ãŠç¹ã«æçšã§ãããã¥ã¢ã«ã€ã³ãžã§ã¹ãã¯ã圌ããæ
åœããã¢ããªã±ãŒã·ã§ã³ãšãµãŒãã¹ãã¯ã©ãŠãäžã® SaaS ãã©ãããã©ãŒã ã§ãã¹ããããæ°ãããµãŒãã¹ãšãŸããŸã飿ºããŠããäžã§ãã³ã³ããã¹ããç¶æããã®ã«åœ¹ç«ã¡ãŸãã
+
+## ãã®ã¯ãŒã¯ã·ã§ããã§åŠã¶ããš
+
+ãã®ã¯ãŒã¯ã·ã§ãããçµããé ã«ã¯ã次ã®ããšãã§ããããã«ãªããŸãã
+
+- AppDynamics Java Agent ã䜿ã£ãã·ã³ãã«ãª Java ãµãŒãã¹ã®ãã«ããšå®è¡
+- **ãã€ããªããã¢ãŒã** ãš **ãã¥ã¢ã«ã·ã°ãã«ã¢ãŒã** ã®éãã®çè§£
+- ãã¥ã¢ã«ã·ã°ãã«ã¢ãŒããæå¹åããŠãAPM ããŒã¿ã AppDynamics ãš Splunk Observability Cloud ã®äž¡æ¹ã«éä¿¡
+- äž¡ãã©ãããã©ãŒã ã§ã®ãã¬ãŒã¹ãšã¡ããªã¯ã¹ã®ç¢ºèª
+- ã¯ã³ã¯ãªãã¯ã§ AppDynamics ã«é·ç§»ã§ãã **global data link** ã Splunk Observability Cloud ã§äœæ
+
+## ã¢ãŒããã¯ãã£
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãSpring Boot Java ã¢ããªã±ãŒã·ã§ã³ã EC2 ã€ã³ã¹ã¿ã³ã¹äžã§çŽæ¥å®è¡ããŸããAppDynamics Java Agent 㯠JVM ããã»ã¹ã«ã¢ã¿ãããããŸãã
+
+**ãã§ãŒãº 1: éåžžã® AppD èšè£
:**
+
+```text
+Java App + AppD Agent âââ¶ AppD Controller
+```
+
+**ãã§ãŒãº 2: ãã¥ã¢ã«ã·ã°ãã«ã¢ãŒãæå¹å:**
+
+```text
+Java App + AppD Agent âââ¶ AppD Controller (AppD protocol, unchanged)
+ âââ¶ OTel Collector (OTLP on localhost:4317)
+ â
+ âŒ
+ Splunk Observability Cloud
+```
+
+OpenTelemetry Collector ã¯åã EC2 ã€ã³ã¹ã¿ã³ã¹äžã§å®è¡ããããšãŒãžã§ã³ããã OTLP ãåä¿¡ãããã¬ãŒã¹ãšã¡ããªã¯ã¹ã Splunk Observability Cloud ã«ãšã¯ã¹ããŒãããŸãã
+
+**Note:** Collector ãä»ããã«ãšãŒãžã§ã³ãããçŽæ¥åœç€Ÿã® [OTLP ingest endpoint](https://dev.splunk.com/observability/docs/datamodel/ingest/#Send-data-points) ã«ããŒã¿ãéä¿¡ããããšãå¯èœã§ãããOTel èšå®ã§é¢äžããäžéšã®å±æ§ãé¢é£ä»ãã倱ãããå¯èœæ§ããããŸãã
+
+## ãã€ããªããã¢ãŒã vs ãã¥ã¢ã«ã·ã°ãã«ã¢ãŒã
+
+AppDynamics Java Agent ã¯ãOpenTelemetry ããŒã¿ãéåºããããã® 2 ã€ã®ã¢ãŒãããµããŒãããŠããŸãã
+
+äž¡è
ã®éããçè§£ããããšã¯éèŠã§ãã
+
+### ãã€ããªããã¢ãŒã - å€ããŠåããã¶ã£ãæ¹åŒ (GA, Java Agent 22.3+)
+
+- AppDynamics ç¬èªã® **èšè£
ã«ãŒã«** ã OTel ãã©ãŒãããã®ã¹ãã³ãçæ
+- ãšãŒãžã§ã³ãã¯æ¢åã®èšè£
ãåå©çšã㊠OTel ããŒã¿ãçæ (å€ãã»ãã³ãã£ãã¯ããŒãžã§ã³)
+- ãã¬ãŒã ã¯ãŒã¯ã®ã«ãã¬ããžã¯ AppDynamics ãèšè£
ãããã®ã«éå®
+- æå¹åæ¹æ³: `-Dagent.deployment.mode=hybrid`
+
+### ãã¥ã¢ã«ã·ã°ãã«ã¢ãŒã - æ°ããæ³šç®ã®æ¹åŒ (Beta, Java Agent 25.6+)
+
+- å®å
šãª [OpenTelemetry Java auto-instrumentation](https://github.com/open-telemetry/opentelemetry-java-instrumentation/) ã AppD ãšãŒãžã§ã³ããš **䞊è¡ããŠ** å®è¡
+- 2 ã€ã®ç¬ç«ããèšè£
ãšã³ãžã³ã䞊åã§åäœ
+- **ããåºç¯ãªãã¬ãŒã ã¯ãŒã¯ã«ãã¬ããž** OTel Java ãšãŒãžã§ã³ãããµããŒããããã¹ãŠ
+- CPU ãšã¡ã¢ãªã®æ¶è²»éãå¢å
+- æå¹åæ¹æ³: `-Dagent.deployment.mode=dual` ãŸãã¯ç°å¢å€æ° `AGENT_DEPLOYMENT_MODE=dual`
+
+### ãã®ã¯ãŒã¯ã·ã§ããã§ãã¥ã¢ã«ã¢ãŒãã䜿ãçç±
+
+ãã¥ã¢ã«ã·ã°ãã«ã¢ãŒãã§ã¯ããã€ããªããã¢ãŒãã«ã¯ãªã **çžé¢å±æ§** ãã«ãŒãã¹ãã³ã«è¿œå ãããŸãã
+
+| 屿§ | 説æ |
+|---|---|
+| `appd.app.name` | AppDynamics ã¢ããªã±ãŒã·ã§ã³å |
+| `appd.tier.name` | AppDynamics ãã£ã¢å (ãã£ã¢ãå€åããéã«ã¯ãã¬ãŒã¹ã®éäžã«ãçŸããŸã) |
+| `appd.bt.name` | AppDynamics ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³å |
+| `appd.request.guid` | AppDynamics ãªã¯ãšã¹ã GUID |
+
+ãããã®å±æ§ã«ããã**global data links** ãå©çšå¯èœã«ãªããŸãããã㯠Splunk Observability Cloud ã®ãã¬ãŒã¹äžã®ã¯ãªãã¯å¯èœãªãªã³ã¯ã§ã察å¿ãã AppDynamics ãã¥ãŒã«çŽæ¥é·ç§»ã§ããŸããããã«ããã¥ã¢ã«ã¢ãŒãã§ãã£ããã£ããã AppDynamics ã¹ãããã·ã§ããã«ã¯ãData Collectors ã¿ãã« OTel `TraceId` ãå«ãŸãããããåæ¹åã®ããã²ãŒã·ã§ã³ãå¯èœã§ãã
+
+## åææ¡ä»¶
+
+ã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã«ã¯ãå¿
èŠãªããŒã«ããããããèšå®ãããŠããŸãã
+
+| èŠä»¶ | ã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã§ã®ç¶æ
|
+|---|---|
+| Linux ãã¹ã (Ubuntu) | æäŸæžã¿ |
+| OpenJDK 17 | ããªã€ã³ã¹ããŒã«æžã¿ |
+| Maven | ããªã€ã³ã¹ããŒã«æžã¿ |
+| ã¯ãŒã¯ã·ã§ããè³æ | `~/workshop/appd/` ã«ãããã€æžã¿ |
+
+ãŸãã以äžãå¿
èŠã§ãã
+
+| èŠä»¶ | ååŸæ¹æ³ |
+|---|---|
+| Splunk Observability Cloud ã¢ã«ãŠã³ã | ã€ã³ã¹ãã©ã¯ã¿ãŒããæäŸ |
+| **Splunk Access Token** (Ingest) | ã€ã³ã¹ã¿ã³ã¹äžã§ `echo $ACCESS_TOKEN` ãå®è¡ |
+| **Splunk Realm** (äŸ `us0`, `us1`, `eu0`) | ã€ã³ã¹ã¿ã³ã¹äžã§ `echo $REALM` ãå®è¡ |
+| **Instance name** | ã€ã³ã¹ã¿ã³ã¹äžã§ `echo $INSTANCE` ãå®è¡ |
+| AppDynamics Controller ã¢ã¯ã»ã¹ | [SE Lab Controller](https://se-lab.saas.appdynamics.com/controller/) ã« Cisco ã®èªèšŒæ
å ±ã§ãã°ã€ã³ |
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/1-build-the-app.md b/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/1-build-the-app.md
new file mode 100644
index 0000000000..7a49aaee37
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/1-build-the-app.md
@@ -0,0 +1,91 @@
+---
+title: 1. ã¢ããªã±ãŒã·ã§ã³ã®ãã«ã
+weight: 1
+---
+
+ãã®ã¯ãŒã¯ã·ã§ããã«ã¯ãããã€ãã® REST ãšã³ããã€ã³ããæã€ã·ã³ãã«ãª Spring Boot ã¢ããªã±ãŒã·ã§ã³ãå«ãŸããŠããŸãããŸãã¯ããããã«ãããŸãããã
+
+## Java ãš Maven ã®ç¢ºèª
+
+ã€ã³ã¹ã¿ã³ã¹ã«ã¯ OpenJDK 17 ãš Maven ãããªã€ã³ã¹ããŒã«ãããŠããŸãã以äžã®ã³ãã³ãã§ç¢ºèªããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+```bash
+java -version && mvn -version
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```text
+openjdk version "17.0.x" ...
+Apache Maven 3.x.x ...
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## ã¢ããªã±ãŒã·ã§ã³ã®ãã«ã
+
+ã¯ãŒã¯ã·ã§ããã¢ããªã®ãã£ã¬ã¯ããªã«ç§»åããfat JAR ããã«ãããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+```bash
+cd ~/workshop/appd/app
+mvn package -DskipTests
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```text
+[INFO] BUILD SUCCESS
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+{{% notice title="ååãã«ã" style="info" icon="info-circle" %}}
+æåã® `mvn package` å®è¡æã«ã¯ Spring Boot ã®äŸåé¢ä¿ãããŠã³ããŒãããŸãããã®åŠçã«ã¯ 30ã60 ç§ã»ã©ããããŸãã2 åç®ä»¥éã®ãã«ãã¯å€§å¹
ã«é«éã«ãªããŸãã
+{{% /notice %}}
+
+## ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãïŒAppD ãªãïŒ
+
+ã¢ããªãèµ·åããããšã確èªãããããçæéå®è¡ããŸãã
+
+```bash
+java -jar target/ingest-workshop-1.0.0.jar &
+```
+
+æ°ç§åŸ
ã£ãŠãã return ããŒãæŒããŠããã³ããã«æ»ãã以äžã®ã³ãã³ãã§ãã¹ãããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+```bash
+curl -s localhost:8080/health | jq .
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```json
+{
+ "status": "healthy"
+}
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+次ã«é²ãåã«ãã¢ããªã忢ããŸãã
+
+```bash
+kill %1
+```
+
+ã¢ããªã±ãŒã·ã§ã³ãæ£åžžã«åäœããããšã確èªã§ããŸãããæ¬¡ã«ããã®ããã»ã¹ã«ã¢ã¿ããããããã® AppDynamics Java Agent ãããŠã³ããŒãããŸãã
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/2-download-appd-agent.md b/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/2-download-appd-agent.md
new file mode 100644
index 0000000000..ffeefbcc52
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/2-download-appd-agent.md
@@ -0,0 +1,32 @@
+---
+title: 2. AppD ãšãŒãžã§ã³ãã®ããŠã³ããŒã
+weight: 2
+---
+
+dual signal ã¢ãŒãã䜿çšããã«ã¯ãAppDynamics Java Agent (ããŒãžã§ã³ 25.6.0 以äž) ãå¿
èŠã§ãããããã€ã³ã¹ã¿ã³ã¹ã«è¿œå ããŸãã
+
+## ãšãŒãžã§ã³ãã®è§£å
+
+ã€ã³ã¹ã¿ã³ã¹ã« SSH æ¥ç¶ããŠããŠã³ããŒãã¹ã¯ãªãããå®è¡ãããšãå
ã»ã©äœæãã `agent` ãã£ã¬ã¯ããªã«ãšãŒãžã§ã³ããå±éãããŸãã
+
+```bash
+cd ~/workshop/appd
+mkdir -p agent
+chmod +x ./download-appd-agent.sh
+./download-appd-agent.sh
+```
+
+ããã§ `~/workshop/appd/agent/javaagent.jar` ã«ãšãŒãžã§ã³ãã® JAR ãã¡ã€ã«ãé
眮ãããŠããã¯ãã§ãã
+
+## Account Access Key ã®ç¢ºèª
+
+ã¢ããªãå®è¡ããéã« [**Account Access Key**](https://se-lab.saas.appdynamics.com/controller/#/licensing/license-management-account?timeRange=last_15_minutes.BEFORE_NOW.-1.-1.15) ãå¿
èŠã«ãªããŸããAppDynamics Controller ã§æ¬¡ã®ããã«ç¢ºèªã§ããŸãã
+
+1. ç»é¢å³äžã®èªåã®ååãã¯ãªãã¯ããŸã
+2. **Admin** â **License** ã«ç§»åããŸã
+3. å·ŠåŽã®ãµã€ãããŒã§ **Account** ãã¯ãªãã¯ããŸã
+4. **Account** ã®äžã«ãã **Name** (`se-lab`) ãš **Access Key** ãæ§ããŠãããŸã
+
+{{% notice title="æå
ã«æ§ããŠãããŸããã" style="primary" icon="lightbulb" %}}
+次ã®ã¹ãããã§ Account Name ãš Access Key ã JVM ããããã£ãšããŠäœ¿çšããŸãããããã¯ãšãŒãžã§ã³ãã Controller ã«èªèšŒãããããã«äœ¿ãããŸãã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/3-run-and-verify.md b/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/3-run-and-verify.md
new file mode 100644
index 0000000000..b4e4044c37
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/3-run-and-verify.md
@@ -0,0 +1,98 @@
+---
+title: 3. AppD ã§å®è¡ããŠæ€èšŒ
+weight: 3
+---
+
+ããã§ã¯ AppDynamics ãšãŒãžã§ã³ããã¢ã¿ããããç¶æ
ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸããããã¯ãéåžžãã®ã·ã³ã°ã«å®å
èšè£
ã§ãã
+
+## AppDynamics ãšãŒãžã§ã³ãã§å®è¡ãã
+
+`` ãåã®ã¹ãããã§ååŸãã AppDynamics ããŒã¯ã³ã«çœ®ãæããŠãã ããã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+ç°å¢å€æ°ããšã¯ã¹ããŒãããŸã
+
+```bash
+export APPD_ACCESS_KEY=
+```
+
+ããã³
+
+```bash
+export APPD_APP_NAME=Dual-Ingest-${INSTANCE}
+```
+
+ãã®åŸããšãŒãžã§ã³ãä»ãã§ java ãèµ·åã§ããŸãã
+
+```bash
+cd ~/workshop/appd
+
+java -javaagent:agent/javaagent.jar \
+ -Dappdynamics.controller.hostName=se-lab.saas.appdynamics.com \
+ -Dappdynamics.controller.port=443 \
+ -Dappdynamics.controller.ssl.enabled=true \
+ -Dappdynamics.agent.applicationName=${APPD_APP_NAME} \
+ -Dappdynamics.agent.tierName=OrderService \
+ -Dappdynamics.agent.nodeName=OrderService-Node \
+ -Dappdynamics.agent.accountName=se-lab \
+ -Dappdynamics.agent.accountAccessKey=${APPD_ACCESS_KEY} \
+ -jar app/target/ingest-workshop-1.0.0.jar &
+```
+
+{{% /tab %}}
+{{% tab title="Example" %}}
+
+```text
+java -javaagent:agent/javaagent.jar \
+ -Dappdynamics.controller.hostName=se-lab.saas.appdynamics.com \
+ -Dappdynamics.controller.port=443 \
+ -Dappdynamics.controller.ssl.enabled=true \
+ -Dappdynamics.agent.applicationName=Dual-Ingest-shw-4267 \
+ -Dappdynamics.agent.tierName=OrderService \
+ -Dappdynamics.agent.nodeName=OrderService-Node \
+ -Dappdynamics.agent.accountName=se-lab \
+ -Dappdynamics.agent.accountAccessKey="hj9999999999" \
+ -jar app/target/ingest-workshop-1.0.0.jar &
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+Spring Boot ã®èµ·åãããŒã衚瀺ããããŸã§åŸ
ã¡ãŸã (çŽ 10ã15 ç§)ã
+Enter ããŒãæŒããŠããã³ããã«æ»ããŸãã
+
+## è² è·ãçæãã
+
+ã·ã³ãã«ãªè² è·çæã¹ã¯ãªãããããã¯ã°ã©ãŠã³ãã§èµ·åããŸãã
+
+```bash
+while true; do
+ curl -s localhost:8080/order > /dev/null
+ curl -s localhost:8080/inventory > /dev/null
+ sleep 2
+done &
+```
+
+## AppDynamics Controller ã§æ€èšŒãã
+
+1. [AppDynamics Controller](https://se-lab.saas.appdynamics.com/controller/) ãéããŸã
+2. **Applications** ã«ç§»åããŠèªåã®ã¢ããªã±ãŒã·ã§ã³ (äŸ: `Dual-Ingest-`) ãèŠã€ããŸã
+3. ã¢ããªã±ãŒã·ã§ã³ãã¯ãªãã¯ã㊠**Flow Map** ã衚瀺ããŸã
+
+{{% notice title="ãã°ãããåŸ
ã¡ãã ãã" style="info" icon="info-circle" %}}
+ã¢ããªã±ãŒã·ã§ã³ãç»é²ãããããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ããããŒãããã«è¡šç€ºããããŸã§ 2ã5 åãããå ŽåããããŸããå¿
èŠã«å¿ããŠããŒãžãæŽæ°ããŠãã ããã
+{{% /notice %}}
+
+以äžã衚瀺ãããã¯ãã§ãã
+
+- ãããŒãããäžã® **OrderService** ãã£ã¢
+- `/order` ããã³ `/inventory` ãšã³ããã€ã³ãã®ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³
+- Controller ã«æµã蟌ãã¡ããªãã¯ããŒã¿
+
+ãã®æç¹ã§ã¯ãããŒã¿ã¯ **AppDynamics ã®ã¿** ã«æµããŠããŸããã¢ããªã±ãŒã·ã§ã³ã¯ Splunk Observability Cloud ã«æ¥ç¶ãããŠããŸãããæ¬¡ã®ãã§ãŒãºã§ã¯ããã¥ã¢ã«ã·ã°ãã«ã¢ãŒããæå¹ã«ããŠããã倿ŽããŸãã
+
+
+{{% notice title="å®è¡ãç¶ç¶ããŠãã ãã" style="warning" icon="exclamation-triangle" %}}
+ã¢ããªã±ãŒã·ã§ã³ãšè² è·çæã¹ã¯ãªããã¯èµ·åãããŸãŸã«ããŠãããŠãã ãããæ¬¡ã®ã»ã¯ã·ã§ã³ã§ãã¥ã¢ã«ã¢ãŒããã©ã°ã远å ããããã«åæ¢ããŸãã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/_index.md b/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/_index.md
new file mode 100644
index 0000000000..e860394fc2
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/2-run-with-appd/_index.md
@@ -0,0 +1,12 @@
+---
+title: "Phase 1: Run with AppDynamics"
+linkTitle: 2. Run with AppD
+weight: 2
+archetype: chapter
+time: 15 minutes
+description: ã¯ãŒã¯ã·ã§ããã¢ããªããã«ãããAppDynamics Java AgentãããŠã³ããŒãããŠãµãŒãã¹ãå®è¡ããAppDynamics Controllerã«ããŒã¿ã衚瀺ãããããšã確èªããŸãã
+---
+
+ãã®ãã§ãŒãºã§ã¯ãã·ã³ãã«ãªJavaã¢ããªã±ãŒã·ã§ã³ããã«ãããAppDynamics Java Agentãã¢ã¿ããããŠãAPMããŒã¿ãAppDynamics Controllerã«è¡šç€ºãããããšã確èªããŸãã
+
+ããã¯ãçŸåšã»ãšãã©ã®AppDynamicsã®ã客æ§ãå©çšããŠãããéåžžãã®åäžå®å
ãžã®èšè£
æ¹æ³ã§ãã
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/1-install-otel-collector.md b/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/1-install-otel-collector.md
new file mode 100644
index 0000000000..8fad5a4adb
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/1-install-otel-collector.md
@@ -0,0 +1,161 @@
+---
+title: 1. OTel Collector ã®ã€ã³ã¹ããŒã«
+weight: 1
+---
+
+dual ã¢ãŒãã® AppDynamics ãšãŒãžã§ã³ã㯠OpenTelemetry ããŒã¿ã OTLP ã§åºåããŸãããã®ããŒã¿ãåä¿¡ã㊠Splunk Observability Cloud ã«è»¢éãããããåããã¹ãäžã«ã³ã¬ã¯ã¿ãŒãå¿
èŠã§ãã
+
+## ç°å¢å€æ°ã®ç¢ºèª
+
+ã€ã³ã¹ã¿ã³ã¹ã«ã¯ãããã®å€æ°ããããããèšå®ãããŠããã¯ãã§ãã`env` ãŸãã¯ä»¥äžã®ã³ãã³ãã§å©çšå¯èœã§ããããšã確èªããŠãã ããã
+
+```bash
+echo "REALM=$REALM"
+echo "ACCESS_TOKEN=$ACCESS_TOKEN"
+echo "INSTANCE=$INSTANCE"
+```
+
+3 ã€ãã¹ãŠã«å€ãèšå®ãããŠããå¿
èŠããããŸããããããã空ã®å Žåã¯ãè¬åž«ã«ç¢ºèªããŠãã ããã
+
+## Splunk OpenTelemetry Collector ã®ã€ã³ã¹ããŒã«
+
+Splunk OTel Collector ã®ã€ã³ã¹ããŒã«ã¹ã¯ãªãããå®è¡ããŸããããã«ããã³ã¬ã¯ã¿ãŒã `systemd` ãµãŒãã¹ãšããŠã€ã³ã¹ããŒã«ãããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+```bash
+curl -sSL https://dl.signalfx.com/splunk-otel-collector.sh > /tmp/splunk-otel-collector.sh && \
+ sudo sh /tmp/splunk-otel-collector.sh --realm $REALM --deployment-environment ${INSTANCE}-appd-dual --hec-token ${HEC_TOKEN} --hec-url ${HEC_URL} -- $ACCESS_TOKEN
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```text
+Splunk OpenTelemetry Collector has been successfully installed.
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ããã§ã¯ `--deployment-environment` ã§ç°å¢ãã`--hec-token` ãš `--hec-url` ã§ HEC ãã°ãšã¯ã¹ããŒãã®è©³çްã確å®ã«æž¡ããŠããŸããããã¯ãã°ãååŸããŠçžé¢ãããããã«éèŠã§ãã
+
+## Workshop çš Collector èšå®ã®é©çš
+
+ããã©ã«ãã®ã³ã¬ã¯ã¿ãŒèšå®ã¯æ±çšçãªãã®ã§ããããããAppDynamics ãšãŒãžã§ã³ããã OTLP ãåä¿¡ã Splunk Observability Cloud ã«ãšã¯ã¹ããŒãããã¯ãŒã¯ã·ã§ããå°çšã®èšå®ã«çœ®ãæããŸãããã®åã«ãäœã远å ããã®ãèŠãŠã¿ãŸãããã
+
+```bash
+vim ~/workshop/appd/collector-config.yaml
+```
+
+`processors:` ã®äžã«ãã以äžã®ã»ã¯ã·ã§ã³ãæ¢ããŠãã ããã
+{{< tabs >}}
+{{% tab title="collector-config.yaml" %}}
+
+```yaml
+ transform/drop_dims_high_cardinality:
+ error_mode: ignore
+ metric_statements:
+ - context: resource
+ conditions:
+ - Len(resource.attributes) + Len(attributes) > 34
+ statements:
+ # Delete from datapoint attributes (where the Java agent puts them)
+ - delete_key(attributes, "process.command_args") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "process.executable.path") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "process.runtime.description") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "process.runtime.name") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "process.runtime.version") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "process.pid") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "os.description") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "os.version") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "host.arch") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "host.image.id") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "telemetry.distro.name") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "telemetry.distro.version") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "telemetry.sdk.version") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "telemetry.sdk.name") where Len(resource.attributes) + Len(attributes) >= 34
+ - delete_key(attributes, "telemetry.sdk.language") where Len(resource.attributes) + Len(attributes) >= 34
+
+ # Add marker
+ - set(resource.attributes["cardinality.trimmed"], "true")
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+`transform/drop_dims_high_cardinality` ããã»ããµãŒã¯ [OpenTelemetry Transformation Language (OTTL)](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/pkg/ottl/LANGUAGE.md) ã䜿çšããŠã屿§ã 34 ãè¶
ããã¡ããªã¯ã¹ããªãããã§ãã¯ããŸãïŒã¡ããªã¯ã¹ã«ã¢ã¿ãããããå®éã®å€ã 1 ãã€ã³ããšããŠã«ãŠã³ããããŸãïŒã
+
+- **éèŠ: çŸåšã屿§ãå€ãããïŒ>36ïŒã¡ããªã¯ã¹ã¯ããã¯ãšã³ãã§ãããããããŸãã** ããã¯è¿œå ã®å±æ§ã«ãã AppDynamics ã®ãã¬ã¡ããªãŒã§çºçããå¯èœæ§ããããŸãã
+
+`transform` èšå®ã§ã¯ãã¡ããªã¯ã¹ã®å±æ§æ°ã®åèšã 34 ãè¶
ãããããã§ãã¯ããè¶
ããŠããå Žåã¯éèŠåºŠã®äœã屿§ãé æ¬¡åé€ããŠããŸãã
+æåŸã«ãåé€ããã屿§ãæã€ã¡ããªã¯ã¹ãç°¡åã«èå¥ã§ããããã空ããããã° `cardinality.trimmed` ã®ãã£ã¡ã³ã·ã§ã³ã远å ãããã§ãã¯ãè¡ããŸãã
+
+ãããã®ããã»ããµãŒã¯ãããããèšå®å
ã®ã¡ããªã¯ã¹çš `pipeline:` ã®æ«å°Ÿã«çµã¿èŸŒãŸããŠããŸãã
+
+次ã«ããã®ã«ã¹ã¿ã èšå®ã `agent_config.yaml` ã«äžæžãã³ããŒããŸãã
+
+```bash
+sudo cp ~/workshop/appd/collector-config.yaml /etc/otel/collector/agent_config.yaml
+```
+
+## Collector ã®åèµ·å
+
+æ°ããèšå®ãåæ ãããããã«åèµ·åããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+```bash
+sudo systemctl restart splunk-otel-collector
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## Collector ã皌åããŠããããšã®ç¢ºèª
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+```bash
+sudo systemctl status splunk-otel-collector --no-pager
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```text
+â splunk-otel-collector.service - Splunk OpenTelemetry Collector
+ Loaded: loaded (/lib/systemd/system/splunk-otel-collector.service; enabled)
+ Active: active (running) since ...
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ãã«ã¹ãšã³ããã€ã³ãã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+```bash
+curl -s http://localhost:13133/ | jq
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```text
+splunk@ip-172-31-47-33 ~/workshop/appd $ curl -s http://localhost:13133/ | jq
+{
+ "status": "Server available",
+ "upSince": "2026-05-04T16:02:29.509202038Z",
+ "uptime": "30.174963775s"
+}
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ããã§ã³ã¬ã¯ã¿ãŒã¯ããŒã **4317**ïŒgRPCïŒããã³ **4318**ïŒHTTPïŒã§ OTLP ããªãã¹ã³ããããã«ãªããŸããã
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/2-enable-dual-mode.md b/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/2-enable-dual-mode.md
new file mode 100644
index 0000000000..df5acb222c
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/2-enable-dual-mode.md
@@ -0,0 +1,96 @@
+---
+title: 2. ãã¥ã¢ã«ã¢ãŒããæå¹åãã
+weight: 2
+---
+
+JVMã³ãã³ãã©ã€ã³ã«ãã¥ã¢ã«ã·ã°ãã«ã¢ãŒãã®ãã©ã°ã远å ããŠãã¢ããªã±ãŒã·ã§ã³ãåèµ·åããŸãã
+
+## å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ã忢ãã
+
+Phase 1 ã®ã¢ããªãšè² è·çæããã»ã¹ã忢ããŸã:
+
+```bash
+kill %2 2>/dev/null # stop load generator
+kill %1 2>/dev/null # stop the java app
+```
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+`kill %1` ãããŸããããªãå Žåã¯ã`ps aux | grep ingest-workshop` ã§ PID ã確èªããçŽæ¥ kill ããŠãã ããã
+{{% /notice %}}
+
+## ãã¥ã¢ã«ã¢ãŒãã§åèµ·åãã
+
+åã AppD ã®ãã©ã°ã«å ãããã¥ã¢ã«ã¢ãŒããš OTel ãšã¯ã¹ããŒã¿ãŒã®ãã©ã°ãæå®ããŠã¢ããªãå床å®è¡ããŸããPhase 1 ã§äœ¿çšããå€ãšåã `${APPD_ACCESS_KEY}` ããã³ `${APPD_APP_NAME}` ã®å€æ°ããã®ãŸãŸå©çšããŸã:
+
+ã¢ããªã±ãŒã·ã§ã³èµ·åè¡ `-jar app/target/ingest-workshop-1.0.0.jar &` ã®çŽåã« 4 è¡ã远å ããŸãã
+
+```bash
+cd ~/workshop/appd
+
+java -javaagent:agent/javaagent.jar \
+ -Dappdynamics.controller.hostName=se-lab.saas.appdynamics.com \
+ -Dappdynamics.controller.port=443 \
+ -Dappdynamics.controller.ssl.enabled=true \
+ -Dappdynamics.agent.applicationName=${APPD_APP_NAME} \
+ -Dappdynamics.agent.tierName=OrderService \
+ -Dappdynamics.agent.nodeName=OrderService-Node \
+ -Dappdynamics.agent.accountName=se-lab \
+ -Dappdynamics.agent.accountAccessKey=${APPD_ACCESS_KEY} \
+ -Dagent.deployment.mode=dual \
+ -Dotel.traces.exporter=otlp \
+ -Dotel.exporter.otlp.endpoint=http://localhost:4318 \
+ -Dotel.resource.attributes=service.name=OrderService,service.namespace=Dual-Ingest-${INSTANCE},deployment.environment=${INSTANCE}-appd-dual,deployment.environment.name=${INSTANCE}-appd-dual \
+ -jar app/target/ingest-workshop-1.0.0.jar &
+```
+
+Spring Boot ã®èµ·åãããŒã衚瀺ããããŸã§åŸ
æ©ããŸãã
+return ããŒãæŒããŠããã³ããã«æ»ããŸãã
+
+### æ°ãã远å ãããã©ã°ã®åœ¹å²
+
+| ãã©ã° | ç®ç |
+|---|---|
+| `-Dagent.deployment.mode=dual` | ãã¥ã¢ã«ã·ã°ãã«ã¢ãŒããæå¹åããŸããOTel Java ã®èªåèšè£
ã AppD ãšãŒãžã§ã³ããšäžŠè¡ããŠåäœããŸã |
+| `-Dotel.traces.exporter=otlp` | OTel èšè£
ã«å¯ŸããŠãã¹ãã³ã OTLP çµç±ã§ãšã¯ã¹ããŒãããããæç€ºããŸã |
+| `-Dotel.exporter.otlp.endpoint` | ããŒã 4318 (HTTP/protobuf) ã§åäœããããŒã«ã«ã® OTel Collector ãæå®ããŸã |
+| `-Dotel.resource.attributes` | OTel ã®ãªãœãŒã¹å±æ§ãèšå®ããŸã: `service.name` 㯠AppD ã®ãã£ã¢ã`service.namespace` 㯠AppD ã®ã¢ããªã±ãŒã·ã§ã³ã«ãããã³ã°ããã`deployment.environment`/`deployment.environment.name` ã¯ã¯ãŒã¯ã·ã§ããã®ã€ã³ã¹ã¿ã³ã¹åãã«ããŒã¿ãã¿ã°ä»ãããŸã |
+
+## è² è·çæããã»ã¹ãåèµ·åãã
+
+```bash
+while true; do
+ curl -s localhost:8080/order > /dev/null
+ curl -s localhost:8080/inventory > /dev/null
+ sleep 2
+done &
+```
+
+## ãã¥ã¢ã«ã¢ãŒããæå¹åãããŠããããšã確èªãã
+
+ã¢ããªã±ãŒã·ã§ã³ãã°ã§ãã¥ã¢ã«ã¢ãŒããèµ·åããããšã確èªããŸã:
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+```bash
+ps aux | grep "deployment.mode=dual"
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```text
+splunk@ip-172-31-77-108 ~/workshop/appd $ ps aux | grep "deployment.mode=dual" | grep -v grep
+splunk 181598 172 2.1 14402900 717736 pts/0 SNl 21:31 1:02 java -javaagent:agent/javaagent.jar -Dappdynamics.controller.hostName=se-lab.saas.appdynamics.com -Dappdynamics.controller.port=443 -Dappdynamics.controller.ssl.enabled=true -Dappdynamics.agent.applicationName=Dual-Ingest-shw-1123 -Dappdynamics.agent.tierName=OrderService -Dappdynamics.agent.nodeName=OrderService-Node -Dappdynamics.agent.accountName=se-lab -Dappdynamics.agent.accountAccessKey=hj9999999999 -Dagent.deployment.mode=dual -Dotel.traces.exporter=otlp -Dotel.exporter.otlp.endpoint=http://localhost:4318 -Dotel.resource.attributes=service.name=OrderService,service.namespace=Dual-Ingest-shw-a79e,deployment.environment=shw-a79e-appd-dual -jar app/target/ingest-workshop-1.0.0.jar
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+`deployment.mode=dual` ãã©ã°ãä»äžããã java ããã»ã¹ã確èªã§ããã¯ãã§ãã
+
+ããã§ AppDynamics ãšãŒãžã§ã³ãã¯ä»¥äžãéä¿¡ããŠããŸã:
+
+- **AppD APM ããŒã¿** ã AppDynamics Controller ãžéä¿¡ (倿Žãªã)
+- **OTLP ãã¬ãŒã¹** ã `localhost:4318` ã®ããŒã«ã« OTel Collector ãžéä¿¡ãããããã Splunk Observability Cloud ãžè»¢é
+ - èªåã®ã€ã³ã¹ã¿ã³ã¹ã§ `env` ãå®è¡ãããšãç°å¢ã§äœ¿çšãããŠãã `{INSTANCE}` ã®å€ã確èªã§ããŸã (`deployment.environment=${INSTANCE}-appd-dual`)
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/3-verify-in-both.md b/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/3-verify-in-both.md
new file mode 100644
index 0000000000..3fe9a8b295
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/3-verify-in-both.md
@@ -0,0 +1,57 @@
+---
+title: 3. äž¡ãã©ãããã©ãŒã ã§ç¢ºèªãã
+weight: 3
+---
+
+ãã¥ã¢ã«ã¢ãŒããæå¹ã«ãªãè² è·ãæµããŠããç¶æ
ã§ããã¬ãŒã¹ã¯æ°å以å
ã« Splunk Observability Cloud ã«å°çããŠããã¯ãã§ããäž¡æ¹ã®å®å
ã確èªããŸãããã
+
+## AppDynamics ã®ç¢ºèªïŒå€æŽãªãïŒ
+
+[AppDynamics Controller](https://se-lab.saas.appdynamics.com/controller/) ã«æ»ã£ãŠã¢ããªã±ãŒã·ã§ã³ãéãã以äžã確èªããŸãã
+
+- **OrderService** ãã£ã¢ãåŒãç¶ããããŒãããã«è¡šç€ºãããŠãã
+- `/order` ããã³ `/inventory` ã®ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ãåŒãç¶ãèšé²ãããŠãã
+- ãã¥ã¢ã«ã¢ãŒãã远å ããããšã«ãããšã©ãŒãæ§èœå£åããªã
+
+ãã¥ã¢ã«ã¢ãŒã㯠AppDynamics ã®ããŒã¿åéã«åœ±é¿ãäžããªãã¯ãã§ããäž¡æ¹ã®ã¹ããªãŒã ã¯ç¬ç«ããŠåäœããŸãã
+
+## Splunk Observability Cloud ã®ç¢ºèª
+
+1. [Splunk Observability Cloud](https://app.signalfx.com) ã«ç§»åããè¬åž«ããæäŸãããè³æ Œæ
å ±ã§ãã°ã€ã³ããŸãã
+2. å·ŠåŽã®ããã²ãŒã·ã§ã³ããã«ã§ **APM** ãã¯ãªãã¯ããŸãã
+3. **Environment** ããããããŠã³ã§ `-appd-dual` ãéžæããŸãïŒããã¯ãªãœãŒã¹å±æ§ã§èšå®ãã `deployment.environment` ã®å€ãšäžèŽããŸãïŒã
+
+
+{{% notice title="æ°ååŸ
ã¡ãŸããã" style="info" icon="info-circle" %}}
+ãã¥ã¢ã«ã¢ãŒããæå¹ã«ããŠãããã¬ãŒã¹ã衚瀺ããããŸã§ 2ã5 åãããããšããããŸãããµãŒãã¹ããŸã 衚瀺ãããªãå Žåã¯ãå°ãåŸ
ã£ãŠããããŒãžãæŽæ°ããŠãã ããã
+{{% /notice %}}
+
+1. ãµãŒãã¹ãªã¹ãã« **OrderService** ã衚瀺ãããŠããã¯ãã§ãã
+
+## ãã¬ãŒã¹ãæ¢çŽ¢ãã
+
+1. **OrderService** ãµãŒãã¹ãã¯ãªãã¯ããŸãã
+2. **Traces** ãã¯ãªãã¯ããŠåã
ã®ãã¬ãŒã¹ã衚瀺ããŸãã
+3. `GET /order` ã®ãã¬ãŒã¹ãéžæããŠããã¬ãŒã¹è©³çްã®ãŠã©ãŒã¿ãŒãã©ãŒã«ãéããŸãã
+
+ãã¬ãŒã¹ãŠã©ãŒã¿ãŒãã©ãŒã«ã«ã¯ãOTel Java èªåèšè£
ã«ãã£ãŠçæãããã¹ãã³ã衚瀺ãããŸããããã㯠AppDynamics ãç£èŠããŠããã®ãšåããªã¯ãšã¹ãã§ãã
+
+
+## AppDynamics çžé¢å±æ§ã確èªãã
+
+**ã«ãŒãã¹ãã³** ãã¯ãªãã¯ããŠã¹ãã³å±æ§ã確èªããŸããAppDynamics ã®çžé¢å±æ§ã衚瀺ãããŠããã¯ãã§ãã
+
+| 屿§ | å€ã®äŸ |
+|---|---|
+| `appd.app.name` | `Dual-Ingest-YOURINITIALS` |
+| `appd.tier.name` | `OrderService` |
+| `appd.bt.name` | `/order` ãŸã㯠`/inventory` |
+| `appd.request.guid` | *(AppDynamics ãªã¯ãšã¹ã GUID)* |
+
+ãããã®å±æ§ã¯ããã¥ã¢ã«ã¢ãŒãã® AppDynamics ãšãŒãžã§ã³ãã«ãã£ãŠèªåçã«è¿œå ãããŸãããããã«ããããã® OTel ãã¬ãŒã¹ãš AppDynamics Controller å
ã®å¯Ÿå¿ããããŒã¿ã®éã«çŽæ¥çãªãªã³ã¯ãäœæãããŸãã
+
+{{% notice title="éèŠãªãã€ã³ã" style="primary" icon="lightbulb" %}}
+`appd.tier.name` 屿§ã¯ããã£ã¢ãå€ãããã³ã«ãã¬ãŒã¹ã®äžéã«ããã¹ãã³ã«ãä»äžãããŸãããã«ããã£ã¢ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãåã¹ãã³ãæ£ãã AppDynamics ãã£ã¢ã®èå¥åãä¿æããŸãã
+{{% /notice %}}
+
+ããã§ãåãã¢ããªã±ãŒã·ã§ã³ãåäžã®ãšãŒãžã§ã³ããã **2 ã€ã®ãã©ãããã©ãŒã ã«åæã«** APM ããŒã¿ãéä¿¡ããããã«ãªããŸãããæ¬¡ã®ã»ã¯ã·ã§ã³ã§ã¯ãã°ããŒãã«ããŒã¿ãªã³ã¯ãäœæããããšã§äž¡è
ãæ¥ç¶ããŸãã
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/_index.md b/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/_index.md
new file mode 100644
index 0000000000..d74c31b835
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/3-enable-dual-mode/_index.md
@@ -0,0 +1,12 @@
+---
+title: "Phase 2: Enable Dual Signal Mode"
+linkTitle: 3. ãã¥ã¢ã«ã¢ãŒãã®æå¹å
+weight: 3
+archetype: chapter
+time: 15 minutes
+description: OpenTelemetry Collector ãã€ã³ã¹ããŒã«ããAppDynamics ãšãŒãžã§ã³ãã§ãã¥ã¢ã«ã·ã°ãã«ã¢ãŒããæå¹åããŠãAppDynamics ãš Splunk Observability Cloud ã®äž¡æ¹ã«ãã¬ãŒã¹ã衚瀺ãããããšã確èªããŸãã
+---
+
+ãã®ãã§ãŒãºã§ã¯ãSplunk Observability Cloud ã«ããŒã¿ã転éããããã® OpenTelemetry Collector ããããã€ãããã¥ã¢ã«ã·ã°ãã«ã¢ãŒããæå¹åããç¶æ
ã§ã¢ããªã±ãŒã·ã§ã³ãåèµ·åããŸãã
+
+ãããŸã§ AppDynamics ã®ã¿ã«ããŒã¿ãéä¿¡ããŠããåããšãŒãžã§ã³ãããäž¡æ¹ã®å®å
ã«åæã«éä¿¡ããããã«ãªããŸãã
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/4-global-data-links/_index.md b/content/ja/ninja-workshops/apm/17-appd-ingest/4-global-data-links/_index.md
new file mode 100644
index 0000000000..748654842a
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/4-global-data-links/_index.md
@@ -0,0 +1,77 @@
+---
+title: "Phase 3: Global Data Links"
+linkTitle: 4. Global Data Links
+weight: 4
+archetype: chapter
+time: 10 minutes
+description: appd.* ã¹ãã³å±æ§ã䜿çšããŠã察å¿ãã AppDynamics ã® tier ãã¥ãŒã«çŽæ¥é·ç§»ãã global data link ã Splunk Observability Cloud ã«äœæããŸãã
+---
+
+{{% notice title="NOTICE" style="primary" icon="lightbulb" %}}
+ã°ã«ãŒãã¯ãŒã¯ã·ã§ããã«åå ããŠããå Žåã¯ãã€ã³ã¹ãã©ã¯ã¿ãŒã®æäœã確èªããã ãã«ãšã©ãã远å ã® global data link ãäœæããªãã§ãã ããã
+ãã®ã»ã¯ã·ã§ã³ããèªèº«ã§å®äºããå¿
èŠã¯ãããŸãããæé ã¯åŠç¿ç®çãšããã¥ã¡ã³ãç®çã§èšèŒãããŠããŸãã
+ãååããããšãããããŸãã
+{{% /notice %}}
+
+ãã¬ãŒã¹äžã® `appd.*` 屿§ã¯åãªãã¡ã¿ããŒã¿ã§ã¯ãããŸãããããã㯠**global data links** ãå®çŸããããã®æ
å ±æºãšãªããSplunk Observability Cloud ã§ãã¬ãŒã¹ãé²èЧããŠãã人ãªã誰ã§ãã察å¿ãã AppDynamics ã®ãã¥ãŒã«ã¯ã³ã¯ãªãã¯ã§çŽæ¥ãžã£ã³ãã§ããããã«ããŸãã
+
+## Global Data Links ãšã¯
+
+Global data links 㯠Splunk Observability Cloud ã®æ©èœã§ãã¹ãã³å±æ§ãã¿ã°å€ãã¡ããªã¯ã¹ã®ãã£ã¡ã³ã·ã§ã³ã«å¯ŸããŠã¯ãªãã¯å¯èœãªãªã³ã¯ãäœæããŸãããŠãŒã¶ãŒããªã³ã¯ãããå€ãã¯ãªãã¯ãããšãå®çŸ©ããå€éš URL ã«é·ç§»ããURL ãã³ãã¬ãŒãã«ã¯å®éã®å±æ§å€ã代å
¥ãããŸãã
+
+### Data Link ã®åææ¡ä»¶
+
+AppDynamics å
ã®ã¢ããªã±ãŒã·ã§ã³ãžã® URL ãã³ããŒããŸããã¢ããªã±ãŒã·ã§ã³ãèå¥ãã URL ã®éèŠãªéšåã¯ãURL ã®ã¯ãšãªãã©ã¡ãŒã¿ãŒã§ãïŒäŸïŒ `&application=99999`ïŒã
+application ã¯ãšãªãã©ã¡ãŒã¿ãŒãå«ãå®å
šãª URL ã䜿çšã㊠global data link ãæ§ç¯ããŸãã
+
+
+## Global Data Link ã®äœæ
+
+1. Splunk Observability Cloud ã§ãå·ŠåŽã®ããã²ãŒã·ã§ã³ããã«ã«ãã **Settings**ïŒæ¯è»ã¢ã€ã³ã³ïŒãã¯ãªãã¯ããŸãã
+2. **Global Data Links** ãã¯ãªãã¯ããŸãã
+3. **New Link** ãã¯ãªãã¯ããŸãã
+4. ãªã³ã¯ãèšå®ããŸãã
+
+| Field | Value |
+| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Link Label** | `Open in AppDynamics` |
+| **Link to** | `Custom URL` |
+| **Show on** | `Property:Value pair` - `appd.app.name:` ãéžæïŒäŸïŒ `appd.app.name:Dual-Ingest-JRH`ïŒ |
+| **URL** | `https://se-lab.saas.appdynamics.com/controller/#/location=APP_DASHBOARD&timeRange=Custom_Time_Range.BETWEEN_TIMES.{{ end_time }}.{{ start_time }}.6&application=&dashboardMode=force` |
+| **Time format** | `Unix time: epoch milliseconds` |
+| **Minimum trigger** | `appd.tier.name` |
+
+{{% notice title="URL Template Syntax" style="primary" icon="lightbulb" %}}
+äºéäžæ¬åŒ§ã® `{{ end_time }}` ããã³ `{{ start_time }}` ã¯ãã³ãã¬ãŒã倿°ã§ããSplunk Observability Cloud ã¯ãã¯ãªãã¯æã«ããããå®éã®å€ã«çœ®ãæããŸãã
+
+`` ã¯ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã®ã¯ãšãªãã©ã¡ãŒã¿ãŒããååŸããçªå·ã§ãã
+{{% /notice %}}
+
+
+1. **Save** ãã¯ãªãã¯ããŸãã
+
+## Global Data Link ã®ãã¹ã
+
+1. **APM** ã«æ»ãã**OrderService** ãµãŒãã¹ã®ãã¬ãŒã¹ãéããŸãã
+2. ã«ãŒãã¹ãã³ãã¯ãªãã¯ããŠããã®å±æ§ã衚瀺ããŸãã
+3. 屿§ãªã¹ããã `appd.app.name` ãèŠã€ããŸãã**Open in AppDynamics** ãšã©ãã«ä»ããããã¯ãªãã¯å¯èœãªãªã³ã¯ã«ãªã£ãŠããã¯ãã§ãã
+4. ãªã³ã¯ãã¯ãªãã¯ããŸããæ°ãããã©ãŠã¶ã¿ããéããAppDynamics Controller ã® **OrderService** ã¢ããªã±ãŒã·ã§ã³ãã¥ãŒã«çŽæ¥é·ç§»ããŸãã
+
+
+{{% notice title="Note" style="info" icon="info-circle" %}}
+ãªã³ã¯ãæ©èœããããã«ã¯ãåããã©ãŠã¶ã§ AppDynamics Controller ã«ãã°ã€ã³ããŠããå¿
èŠããããŸãããã°ã€ã³ãæ±ããããå Žåã¯ãCisco ã®èªèšŒæ
å ±ã䜿çšããŠãã ããã
+{{% /notice %}}
+
+## éæ¹åã®ããã²ãŒã·ã§ã³ïŒAppD ãã Splunk ãžïŒ
+
+éæ¹åã®ããã²ãŒã·ã§ã³ãå¯èœã§ããdual ã¢ãŒãã§ãã£ããã£ããã AppDynamics ã¹ãããã·ã§ããã«ã¯ã**Data Collectors** ã¿ãã®äžã« OTel ã® `TraceId` ãå«ãŸããŸãã
+
+Splunk Observability Cloud ã§å¯Ÿå¿ãããã¬ãŒã¹ãèŠã€ããã«ã¯ã以äžãè¡ããŸãã
+
+1. AppDynamics Controller ã§ãããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ã® **Transaction Snapshot** ãéããŸãã
+2. **Data Collectors** ã¿ãã«ç§»åããŸãã
+3. `TraceId` ã®å€ãèŠã€ããŸãã
+4. Splunk Observability Cloud ã§ **APM â Traces** ã«ç§»åãããã®ãã¬ãŒã¹ ID ãæ€çŽ¢ããŸãã
+
+ããã«ãããäž¡ãã©ãããã©ãŒã éã® **åæ¹åã®é¢é£ä»ã** ãå¯èœã«ãªããŸãã
+
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/5-wrap-up/_index.md b/content/ja/ninja-workshops/apm/17-appd-ingest/5-wrap-up/_index.md
new file mode 100644
index 0000000000..4ecee4f1cd
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/5-wrap-up/_index.md
@@ -0,0 +1,52 @@
+---
+title: Wrap Up
+linkTitle: 5. Wrap Up
+weight: 5
+archetype: chapter
+time: 5 minutes
+description: ãŸãšããã¯ãªãŒã³ã¢ãããæ¬¡ã®ã¹ãããã
+---
+
+## éæããããš
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã以äžãè¡ããŸããã
+
+1. **éåžžã® AppDynamics ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã§ Java ãµãŒãã¹ããã«ãããŠå®è¡**: APM ããŒã¿ã AppDynamics Controller ã®ã¿ã«éä¿¡ããåäžãšãŒãžã§ã³ãã䜿çšããŸããã
+
+2. **hybrid ã¢ãŒããš dual signal ã¢ãŒãã®éããçè§£**: hybrid 㯠AppD èªèº«ã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ãåå©çšã㊠OTel ã¹ãã³ãçæããŸãïŒãªãŒããŒããããäœããã«ããŒç¯å²ã¯çãïŒãäžæ¹ãdual 㯠AppD ãšäžŠè¡ã㊠OTel Java auto-instrumentation ã®å
šæ©èœãå®è¡ããŸãïŒã«ããŒç¯å²ãåºããçžé¢å±æ§ã远å ãããŸãïŒã
+
+3. **dual signal ã¢ãŒããæå¹å**: åäžããã»ã¹ã« 4 ã€ã® JVM ãã©ã°ã远å ããã ãã§å®çŸããŸãããã³ãŒã倿Žãã2 ã€ç®ã®ãšãŒãžã§ã³ãããåã³ã³ãã€ã«ãäžèŠã§ããåã AppDynamics ãšãŒãžã§ã³ãããAppDynamics ãš Splunk Observability Cloud ã®äž¡æ¹ã«åæã«ããŒã¿ãéä¿¡ã§ããããã«ãªããŸããã
+
+4. **Global data link ãäœæ**: Splunk Observability Cloud ã§ `appd.*` ã¹ãã³å±æ§ã䜿çšãã察å¿ãã AppDynamics tier ãã¥ãŒã«çŽæ¥é·ç§»ã§ããããã«ããŸããã
+
+## ã¯ãªãŒã³ã¢ãã
+
+ã¢ããªã±ãŒã·ã§ã³ãšè² è·çæããŒã«ã忢ããŸãã
+
+```bash
+kill %2 2>/dev/null # load generator
+kill %1 2>/dev/null # java app
+```
+
+å¿
èŠã«å¿ã㊠collector ã忢ããŸãã
+
+```bash
+sudo systemctl stop splunk-otel-collector
+```
+
+## éèŠãªãã€ã³ã
+
+- **dual ã¢ãŒãã¯ã³ãŒã倿Žã§ã¯ãªããèšå®å€æŽã§ãã** ãã§ã«ã€ã³ã¹ãã«ã¡ã³ãæžã¿ã®ã¢ããªã±ãŒã·ã§ã³ã« JVM ãã©ã°ã远å ããã ãã§æå¹åã§ããŸãããããã«ãããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã«æãå ããããšãªããçµç¹å
šäœãžã®å±éãçŸå®çã«ãªããŸãã
+
+- **`appd.*` çžé¢å±æ§ãããããã®çµ±åã«äŸ¡å€ããããããŸãã** ããããç¡ãå ŽåïŒhybrid ã¢ãŒãïŒãSplunk O11y ã§ OTel ãã¬ãŒã¹ã¯ååŸã§ããŸãããç¹å®ã® AppDynamics ããžãã¹ãã©ã³ã¶ã¯ã·ã§ã³ãtierãã¢ããªã±ãŒã·ã§ã³ã«çŽä»ããææ®µããããŸãããdual ã¢ãŒãã¯ãã®çŽä»ããæäŸããŸãã
+
+- **Global data link ã¯çžé¢ãã¯ãŒã¯ãããŒãžãšå€æããŸãã** 2 ã€ã®ããŒã«ãæäœæ¥ã§çžäºåç
§ãã代ããã«ããšã³ãžãã¢ã¯ Splunk O11y ã®ãã¬ãŒã¹ãã AppDynamics ã®ãã¥ãŒã«çŽæ¥ã¯ãªãã¯ã§ç§»åã§ããŸãã
+
+- **ãã®ãã¿ãŒã³ã¯æ®µéçãªç§»è¡ãå¯èœã«ããŸãã** çµç¹ã¯äžå®æé dual ã¢ãŒããå®è¡ããããšã§ãSplunk Observability Cloud ãåçã®ã·ã°ãã«åè³ªãææããŠããããšãæ€èšŒã§ããŸãããã®åŸããµãŒãã¹ããšã« dual ãç¶ç¶ããããSplunk ã®ã¿ã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã«åãæ¿ããããAppDynamics ã«çãŸããã倿ã§ããŸãã
+
+## åèæ
å ±
+
+- [Enable Dual Signal Mode](https://help.splunk.com/en/appdynamics-on-premises/virtual-appliance-self-hosted/25.7.0/splunk-appdynamics-for-opentelemetry/instrument-applications-with-splunk-appdynamics-for-opentelemetry/enable-opentelemetry-in-the-java-agent/enable-dual-signal-mode) (AppDynamics ããã¥ã¡ã³ã)
+- [Enable Hybrid Mode](https://help.splunk.com/en/appdynamics-on-premises/virtual-appliance-self-hosted/25.7.0/splunk-appdynamics-for-opentelemetry/instrument-applications-with-splunk-appdynamics-for-opentelemetry/enable-opentelemetry-in-the-java-agent/enable-hybrid-mode) (AppDynamics ããã¥ã¡ã³ã)
+- [Java Agent Frameworks for OpenTelemetry](https://help.splunk.com/en/appdynamics-on-premises/virtual-appliance-self-hosted/25.7.0/splunk-appdynamics-for-opentelemetry/support-for-appdynamics-for-opentelemetry/java-agent-frameworks-for-opentelemetry) (ãµããŒã察象ãã¬ãŒã ã¯ãŒã¯äžèЧ)
+- [Global Data Links](https://docs.splunk.com/observability/en/data-visualization/navigate-with-data-links.html) (Splunk Observability ããã¥ã¡ã³ã)
diff --git a/content/ja/ninja-workshops/apm/17-appd-ingest/_index.md b/content/ja/ninja-workshops/apm/17-appd-ingest/_index.md
new file mode 100644
index 0000000000..3321fa2dc5
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/17-appd-ingest/_index.md
@@ -0,0 +1,15 @@
+---
+draft: false
+hidden: false
+title: AppDynamics Dual Ingest to Splunk Observability
+linkTitle: AppD Dual Ingest
+weight: 17
+archetype: chapter
+time: 45 minutes
+authors: ["Jeremy Hicks"]
+description: åäžã® AppDynamics Java Agent ãã AppDynamics ãš Splunk Observability Cloud ã®äž¡æ¹ã« APM ããŒã¿ãã¹ããªãŒãã³ã°ããã°ããŒãã«ããŒã¿ãªã³ã¯ã§äž¡è
ã飿ºããŸãã
+aliases:
+ - /ninja-workshops/17-appd-ingest/
+---
+
+AppDynamics Java ãšãŒãžã§ã³ãã䜿ã£ã Dual Ingest ã«ã€ããŠãAppDynamics ãš Splunk Observability Cloud ã®äž¡æ¹ã«ããŒã¿ãéä¿¡ããæ¹æ³ãåŠã³ãŸãã
diff --git a/content/ja/ninja-workshops/apm/_index.md b/content/ja/ninja-workshops/apm/_index.md
new file mode 100644
index 0000000000..1aa1378962
--- /dev/null
+++ b/content/ja/ninja-workshops/apm/_index.md
@@ -0,0 +1,9 @@
+---
+title: APM & AppDynamics
+linkTitle: APM
+weight: 4
+description: Splunk AppDynamics ã®è©³çŽ°è§£èª¬ãš Observability Cloud ãžã®ãã¥ã¢ã«åã蟌ã¿ãæ±ããŸãã
+time: 2 hours 15 minutes
+layout: "hero"
+---
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/1-otel-collector.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/1-otel-collector.md
new file mode 100644
index 0000000000..c22b6b3a0d
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/1-otel-collector.md
@@ -0,0 +1,76 @@
+---
+title: OpenTelemetry Collector ã®ã€ã³ã¹ããŒã«
+linkTitle: 1. OpenTelemetry Collector
+weight: 1
+---
+
+Splunk OpenTelemetry Collector ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ãšã¢ããªã±ãŒã·ã§ã³ãèšè£
ããããã®ã³ã¢ã³ã³ããŒãã³ãã§ãããã®åœ¹å²ã¯ã以äžã®ããŒã¿ãåéããŠéä¿¡ããããšã§ãã
+
+* ã€ã³ãã©ã¹ãã©ã¯ãã£ã¡ããªã¯ã¹ïŒdiskãCPUãmemory ãªã©ïŒ
+* Application Performance MonitoringïŒAPMïŒãã¬ãŒã¹
+* ãããã¡ã€ãªã³ã°ããŒã¿
+* ãã¹ãããã³ã¢ããªã±ãŒã·ã§ã³ãã°
+
+{{% notice title="æ¢åã® OpenTelemetry Collector ãåé€ãã" style="warning" %}}
+Splunk IM ã¯ãŒã¯ã·ã§ãããå®äºããŠããå Žåã¯ãç¶è¡ããåã« Kubernetes äžã§åäœããŠãã collector ãåé€ããŠãããŠãã ããã以äžã®ã³ãã³ããå®è¡ããããšã§åé€ã§ããŸãã
+
+``` bash
+helm delete splunk-otel-collector
+```
+
+EC2 ã€ã³ã¹ã¿ã³ã¹ã«ã¯ããã§ã«å€ãããŒãžã§ã³ã® collector ãã€ã³ã¹ããŒã«ãããŠããå¯èœæ§ããããŸããcollector ãã¢ã³ã€ã³ã¹ããŒã«ããã«ã¯ã以äžã®ã³ãã³ããå®è¡ããŠãã ããã
+
+``` bash
+curl -sSL https://dl.signalfx.com/splunk-otel-collector.sh > /tmp/splunk-otel-collector.sh
+sudo sh /tmp/splunk-otel-collector.sh --uninstall
+```
+
+{{% /notice %}}
+
+ã€ã³ã¹ã¿ã³ã¹ãæ£ããæ§æãããŠããããšã確èªããããããã®ã¯ãŒã¯ã·ã§ããã§å¿
èŠãšãªãç°å¢å€æ°ãæ£ããèšå®ãããŠãããã確èªããå¿
èŠããããŸããã¿ãŒããã«ã§ä»¥äžã®ã³ãã³ããå®è¡ããŠãã ããã
+
+``` bash
+. ~/workshop/petclinic/scripts/check_env.sh
+```
+
+åºåçµæã§ã以äžã®ãã¹ãŠã®ç°å¢å€æ°ãååšããå€ãèšå®ãããŠããããšã確èªããŠãã ãããäžè¶³ããŠãããã®ãããå Žåã¯ãè¬åž«ã«ãåãåãããã ããã
+
+```text
+ACCESS_TOKEN
+REALM
+RUM_TOKEN
+HEC_TOKEN
+HEC_URL
+INSTANCE
+```
+
+確èªã§ããããCollector ãã€ã³ã¹ããŒã«ã§ããŸããã€ã³ã¹ããŒã«ã¹ã¯ãªããã«ã¯ãããã€ãã®è¿œå ãã©ã¡ãŒã¿ãŒãæž¡ãããŸãã
+
+* `--with-instrumentation` - Splunk distribution of OpenTelemetry Java ãããšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããŸãããã㯠PetClinic ã® Java ã¢ããªã±ãŒã·ã§ã³èµ·åæã«èªåçã«èªã¿èŸŒãŸããŸããèšå®ã¯äžèŠã§ãïŒ
+* `--deployment-environment` - ãªãœãŒã¹å±æ§ `deployment.environment` ã«æž¡ãããå€ãèšå®ããŸãããã㯠UI ã§ãã¥ãŒããã£ã«ã¿ãªã³ã°ããããã«äœ¿çšãããŸãã
+* `--enable-profiler` - Java ã¢ããªã±ãŒã·ã§ã³çšã®ãããã¡ã€ã©ãŒãæå¹åããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã® CPU ãããã¡ã€ã«ãçæãããŸãã
+* `--enable-profiler-memory` - Java ã¢ããªã±ãŒã·ã§ã³çšã®ãããã¡ã€ã©ãŒãæå¹åããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¢ãªãããã¡ã€ã«ãçæãããŸãã
+* `--enable-metrics` - Micrometer ã¡ããªã¯ã¹ã®ãšã¯ã¹ããŒããæå¹åããŸãã
+* `--hec-token` - collector ã䜿çšãã HEC ããŒã¯ã³ãèšå®ããŸãã
+* `--hec-url` - collector ã䜿çšãã HEC URL ãèšå®ããŸãã
+
+``` bash
+curl -sSL https://dl.signalfx.com/splunk-otel-collector.sh > /tmp/splunk-otel-collector.sh && \
+sudo sh /tmp/splunk-otel-collector.sh --realm $REALM -- $ACCESS_TOKEN --mode agent --with-instrumentation --deployment-environment $INSTANCE-petclinic --enable-profiler --enable-profiler-memory --enable-metrics --hec-token $HEC_TOKEN --hec-url $HEC_URL
+```
+
+次ã«ãAWS ã€ã³ã¹ã¿ã³ã¹ ID ã§ã¯ãªãã€ã³ã¹ã¿ã³ã¹ã®ãã¹ãåãå
¬éããããã«ãcollector ã«ããããåœãŠãŸããããã«ãããUI ã§ããŒã¿ããã£ã«ã¿ãªã³ã°ãããããªããŸãã
+
+``` bash
+sudo sed -i 's/gcp, ecs, ec2, azure, system/system, gcp, ecs, ec2, azure/g' /etc/otel/collector/agent_config.yaml
+```
+
+`agent_config.yaml` ã«ããããåœãŠãããcollector ãåèµ·åããå¿
èŠããããŸãã
+
+``` bash
+sudo systemctl restart splunk-otel-collector
+```
+
+ã€ã³ã¹ããŒã«ãå®äºãããšã**Hosts with agent installed** ããã·ã¥ããŒãã«ç§»åããŠããã¹ãããã®ããŒã¿ã確èªã§ããŸãã**Dashboards â Hosts with agent installed** ã®é ã«é²ãã§ãã ããã
+
+ãã£ã«ã¿ãŒããã«ã®ãHostããã£ãŒã«ãå
ãã¯ãªãã¯ããã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã®ãã¹ãåãå
¥åãŸãã¯éžæããŸãïŒãã¹ãåã¯ã¿ãŒããã«ã»ãã·ã§ã³ã®ã³ãã³ãããã³ããããååŸã§ããŸãïŒããã¹ãã®ããŒã¿ãæµããŠããããšã確èªã§ããããAPM ã³ã³ããŒãã³ããéå§ããæºåãæŽããŸããã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/2-building-petclinic.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/2-building-petclinic.md
new file mode 100644
index 0000000000..f697833191
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/2-building-petclinic.md
@@ -0,0 +1,55 @@
+---
+title: Spring PetClinic ã¢ããªã±ãŒã·ã§ã³ã®ãã«ã
+linkTitle: 2. PetClinic ã®ãã«ã
+weight: 2
+---
+
+APM ãã»ããã¢ããããããã«ãŸãå¿
èŠãªãã®ã¯âŠãããã¢ããªã±ãŒã·ã§ã³ã§ãããã®æŒç¿ã§ã¯ãSpring PetClinic ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŸãããã㯠Spring frameworkïŒSpring Boot çµç±ïŒã§æ§ç¯ããããéåžžã«ãã䜿ããã Java ã®ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã§ãã
+
+ãŸããSpring PetClinic ã® GitHub ãªããžããªãã¯ããŒã³ããŸããåŸã»ã©ãã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ãã€ã«ããã«ããããã±ãŒãžã³ã°ããã¹ããè¡ããŸãã
+
+```bash
+git clone https://github.com/spring-projects/spring-petclinic
+```
+
+`spring-petclinic` ãã£ã¬ã¯ããªã«ç§»åããŸãã
+
+
+
+```bash
+cd spring-petclinic
+git checkout b26f235250627a235a2974a22f2317dbef27338d
+```
+
+Docker ã䜿çšããŠãPetClinic ãå©çšãã MySQL ããŒã¿ããŒã¹ãèµ·åããŸãã
+
+```bash
+docker run -d -e MYSQL_USER=petclinic -e MYSQL_PASSWORD=petclinic -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=petclinic -p 3306:3306 docker.io/biarms/mysql:5.7
+```
+
+次ã«ãSpring PetClinic ã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠãã©ãã£ãã¯ãçæãããããLocust ãå®è¡ããå¥ã®ã³ã³ãããèµ·åããŸããLocust ã¯ã·ã³ãã«ãªè² è·ãã¹ãããŒã«ã§ãã
+
+```bash
+docker run --network="host" -d -p 8090:8090 -v ~/workshop/petclinic:/mnt/locust docker.io/locustio/locust -f /mnt/locust/locustfile.py --headless -u 1 -r 1 -H http://127.0.0.1:8083
+```
+
+ç¶ããŠã`maven` ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã€ã«ããã«ããããã±ãŒãžã³ã°ããŸãã
+
+```bash
+./mvnw package -Dmaven.test.skip=true
+```
+
+> [!INFO]
+> ãã®ã³ãã³ãã¯ãååå®è¡æã«ã¯ã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã€ã«ããåã«å€ãã®äŸåé¢ä¿ãããŠã³ããŒããããããå®äºãããŸã§ã«æ°åããããŸãã2 åç®ä»¥éã®ãã«ãã¯ããé«éã«ãªããŸãã
+
+ãã«ããå®äºããããå®è¡äžã®ã€ã³ã¹ã¿ã³ã¹ã®ãããªã㯠IP ã¢ãã¬ã¹ãååŸããå¿
èŠããããŸããæ¬¡ã®ã³ãã³ããå®è¡ããããšã§ååŸã§ããŸãã
+
+```bash
+curl http://ifconfig.me
+```
+
+ãã®ã³ãã³ãã§è¿ããã IP ã¢ãã¬ã¹ã¯ãã¢ããªã±ãŒã·ã§ã³ãåäœããŠããããšã確èªããããã«å¿
èŠãšãªããããã¡ã¢ããŠãããŠãã ããã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/3-auto-discovery.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/3-auto-discovery.md
new file mode 100644
index 0000000000..eec7c4853c
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/3-auto-discovery.md
@@ -0,0 +1,64 @@
+---
+title: Java åãã®èªåæ€åºãšèªåæ§æ
+linkTitle: 3. Automatic Discovery
+weight: 3
+---
+
+ããã§ã以äžã®ã³ãã³ãã§ã¢ããªã±ãŒã·ã§ã³ãèµ·åã§ããŸããã¢ããªã±ãŒã·ã§ã³ã«ã¯ `mysql` ãããã¡ã€ã«ãæž¡ããŠããç¹ã«æ³šæããŠãã ãããããã«ãããã¢ããªã±ãŒã·ã§ã³ã¯å
ã»ã©èµ·åãã MySQL ããŒã¿ããŒã¹ã䜿çšããããã«ãªããŸãããŸãã`otel.service.name` ãš `otel.resource.attributes` ã«ã¯ãã€ã³ã¹ã¿ã³ã¹åã䜿çšããè«ççãªååãèšå®ããŠããŸããããã㯠UI ã§ã®ãã£ã«ã¿ãªã³ã°ã«ã䜿çšãããŸãã
+
+```bash
+java \
+-Dserver.port=8083 \
+-Dotel.service.name=$INSTANCE-petclinic-service \
+-Dotel.resource.attributes=deployment.environment=$INSTANCE-petclinic-env \
+-jar target/spring-petclinic-*.jar --spring.profiles.active=mysql
+```
+
+`http://:8083` ã«ã¢ã¯ã»ã¹ãããšãã¢ããªã±ãŒã·ã§ã³ãåäœããŠããããšã確èªã§ããŸãïŒ`` ã¯å
ã»ã©ååŸãã IP ã¢ãã¬ã¹ã«çœ®ãæããŠãã ããïŒã
+
+Collector ãã€ã³ã¹ããŒã«ããéã**AlwaysOn Profiling** ãš **Metrics** ãæå¹åããããæ§æããŸãããããã«ãããCollector ã¯ã¢ããªã±ãŒã·ã§ã³ã® CPU ããã³ã¡ã¢ãªã®ãããã¡ã€ã«ãèªåçã«çæããSplunk Observability Cloud ã«éä¿¡ããŸãã
+
+PetClinic ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããšãCollector ãã¢ããªã±ãŒã·ã§ã³ãèªåçã«æ€åºãããã¬ãŒã¹ãšãããã¡ã€ãªã³ã°ã®ããã«èšè£
ããæ§åã確èªã§ããŸãã
+
+{{% tab title="Example output" %}}
+
+``` text {wrap="false"}
+Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar
+OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
+[otel.javaagent 2024-08-20 11:35:58:970 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: splunk-2.6.0-otel-2.6.0
+[otel.javaagent 2024-08-20 11:35:59:730 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - -----------------------
+[otel.javaagent 2024-08-20 11:35:59:730 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - Profiler configuration:
+[otel.javaagent 2024-08-20 11:35:59:730 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.enabled : true
+[otel.javaagent 2024-08-20 11:35:59:731 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.directory : /tmp
+[otel.javaagent 2024-08-20 11:35:59:731 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.recording.duration : 20s
+[otel.javaagent 2024-08-20 11:35:59:731 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.keep-files : false
+[otel.javaagent 2024-08-20 11:35:59:732 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.logs-endpoint : null
+[otel.javaagent 2024-08-20 11:35:59:732 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - otel.exporter.otlp.endpoint : null
+[otel.javaagent 2024-08-20 11:35:59:732 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.memory.enabled : true
+[otel.javaagent 2024-08-20 11:35:59:732 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.memory.event.rate : 150/s
+[otel.javaagent 2024-08-20 11:35:59:732 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.call.stack.interval : PT10S
+[otel.javaagent 2024-08-20 11:35:59:733 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.include.internal.stacks : false
+[otel.javaagent 2024-08-20 11:35:59:733 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.tracing.stacks.only : false
+[otel.javaagent 2024-08-20 11:35:59:733 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - -----------------------
+[otel.javaagent 2024-08-20 11:35:59:733 +0000] [main] INFO com.splunk.opentelemetry.profiler.JfrActivator - Profiler is active.
+```
+
+{{% /tab %}}
+
+ããã§ Splunk APM UI ã«ã¢ã¯ã»ã¹ããã¢ããªã±ãŒã·ã§ã³ã³ã³ããŒãã³ãããã¬ãŒã¹ããããã¡ã€ãªã³ã°ãDB Query Performanceãã¡ããªã¯ã¹ã確èªã§ããŸããå·ŠåŽã®ã¡ãã¥ãŒãã **APM** ãã¯ãªãã¯ãã**Environment** ããããããŠã³ãã¯ãªãã¯ããŠãèªèº«ã®ç°å¢ïŒäŸïŒ`-petclinic`ïŒãéžæããŠãã ããïŒ`` ã¯å
ã»ã©æ§ããå€ã«çœ®ãæããŸãïŒã
+
+確èªãå®äºãããã`Ctrl-c` ãæŒããŠã¢ããªã±ãŒã·ã§ã³ã忢ã§ããŸãã
+
+ãªãœãŒã¹å±æ§ã¯ãã¬ããŒããããåã¹ãã³ã«è¿œå ã§ããŸããäŸãã° `version=0.314` ã®ããã«æå®ããŸãã`key1=val1,key2=val2` ã®ããã«ãã«ã³ãåºåãã§ãªãœãŒã¹å±æ§ã®ãªã¹ããå®çŸ©ããããšãã§ããŸãã
+
+æ°ãããªãœãŒã¹å±æ§ã䜿çšã㊠PetClinic ãå床起åããŠã¿ãŸãããããªããå®è¡ã³ãã³ãã«ãªãœãŒã¹å±æ§ã远å ãããšãCollector ã®ã€ã³ã¹ããŒã«æã«å®çŸ©ããå
容ãäžæžãããç¹ã«æ³šæããŠãã ãããæ°ãããªãœãŒã¹å±æ§ `version=0.314` ã远å ããŠã¿ãŸãããã
+
+```bash
+java \
+-Dserver.port=8083 \
+-Dotel.service.name=$INSTANCE-petclinic-service \
+-Dotel.resource.attributes=deployment.environment=$INSTANCE-petclinic-env,version=0.314 \
+-jar target/spring-petclinic-*.jar --spring.profiles.active=mysql
+```
+
+Splunk APM UI ã«æ»ããæè¿ã®ãã¬ãŒã¹ãããªã«ããŠã³ãããšãã¹ãã³ã«æ°ãã `version` 屿§ã衚瀺ãããŠããããšã確èªã§ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/4-rum.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/4-rum.md
new file mode 100644
index 0000000000..2931553b23
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/4-rum.md
@@ -0,0 +1,78 @@
+---
+title: 3. Real User Monitoring
+weight: 3
+---
+
+Real User Monitoring (RUM) ã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã§ã¯ãOpen Telemetry Javascript [**https://github.com/signalfx/splunk-otel-js-web**](https://github.com/signalfx/splunk-otel-js-web) ã®ã¹ãããããããŒãžã«è¿œå ããŸããåã³ãŠã£ã¶ãŒã **Data Management â Add Integration â RUM Instrumentation â Browser Instrumentation** ã䜿çšããŸãã
+
+ããããããŠã³ãã䜿çšããããŒã¯ã³ã«ã€ããŠã¯ã€ã³ã¹ãã©ã¯ã¿ãŒããæ¡å
ããããŸããããŒã¯ã³ãéžæããã **Next** ãã¯ãªãã¯ããŸãã**App name** ãš **Environment** ã以äžã®æ§æã§å
¥åããŠãã ããã
+
+- `-petclinic-service` - `` ã¯å
ã»ã©ã¡ã¢ããå€ã«çœ®ãæããŠãã ããã
+- `-petclinic-env` - `` ã¯å
ã»ã©ã¡ã¢ããå€ã«çœ®ãæããŠãã ããã
+
+ãŠã£ã¶ãŒãã§ã¯ãããŒãžã® `` ã»ã¯ã·ã§ã³å
é ã«é
眮ãã HTML ã³ãŒãã®ã¹ããããã衚瀺ãããŸãã以äžã¯ãã®äŸã§ãïŒãã®ã¹ããããã¯äœ¿çšããããŠã£ã¶ãŒãã§çæããããã®ã䜿çšããŠãã ããïŒã
+
+``` html
+/*
+
+IMPORTANT: Replace the placeholder in the src URL with a
+version from https://github.com/signalfx/splunk-otel-js-web/releases
+
+*/
+
+
+```
+
+Spring PetClinic ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãåäžã® HTML ããŒãžããã¬ã€ã¢ãŠããããŒãžãšããŠäœ¿çšããŠããããããã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ããŒãžã§åå©çšãããŠããŸããSplunk RUM Instrumentation Library ãæ¿å
¥ããã«ã¯æé©ãªå Žæã§ããããã¹ãŠã®ããŒãžã§èªåçã«èªã¿èŸŒãŸããŸãã
+
+ããã§ã¯ãã¬ã€ã¢ãŠãããŒãžãç·šéããŸãããã
+
+```bash
+vi src/main/resources/templates/fragments/layout.html
+```
+
+次ã«ãäžã§çæããã¹ãããããããŒãžã® `` ã»ã¯ã·ã§ã³ã«æ¿å
¥ããŸããã³ã¡ã³ãéšåã¯å«ããªãããã«ããsource URL ã® `` ã `latest` ã«çœ®ãæããŠãã ãããäŸïŒ
+
+```html
+
+
+
+
+
+
+...
+```
+
+ã³ãŒãã®å€æŽãå®äºããããã¢ããªã±ãŒã·ã§ã³ããªãã«ãããŠå床å®è¡ããå¿
èŠããããŸãã`maven` ã³ãã³ããå®è¡ã㊠PetClinic ãã³ã³ãã€ã«/ãã«ã/ããã±ãŒãžåããŸãã
+
+```bash
+./mvnw package -Dmaven.test.skip=true
+```
+
+```bash
+java \
+-Dserver.port=8083 \
+-Dotel.service.name=$INSTANCE-petclinic-service \
+-Dotel.resource.attributes=deployment.environment=$INSTANCE-petclinic-env,version=0.314 \
+-jar target/spring-petclinic-*.jar --spring.profiles.active=mysql
+```
+
+次ã«ãã©ãŠã¶ã§ `http://:8083` ã«ã¢ã¯ã»ã¹ããå®ãŠãŒã¶ãŒã®ãã©ãã£ãã¯ãçæããŸãã
+
+RUM ã§ã¯ãäžèšã® RUM ã¹ããããã§å®çŸ©ãã environment ã§çµã蟌ã¿ãããã·ã¥ããŒããŸã§ã¯ãªãã¯ããŠé²ã¿ãŸãã
+
+RUM ãã¬ãŒã¹ãããªã«ããŠã³ãããšãã¹ãã³å
ã« APM ãžã®ãªã³ã¯ã衚瀺ãããŸããtrace ID ãã¯ãªãã¯ãããšãçŸåšã® RUM ãã¬ãŒã¹ã«å¯Ÿå¿ãã APM ãã¬ãŒã¹ã«ç§»åã§ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/5-log-observer.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/5-log-observer.md
new file mode 100644
index 0000000000..6df314a2f0
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/5-log-observer.md
@@ -0,0 +1,24 @@
+---
+title: 4. Log Observer
+weight: 4
+---
+
+Splunk Log Observer ã³ã³ããŒãã³ãã«ã€ããŠã¯ãSplunk OpenTelemetry Collector ã Spring PetClinic ã¢ããªã±ãŒã·ã§ã³ã®ãã°ãèªåçã«åéããOTLP ãšã¯ã¹ããŒã¿ãŒã䜿çšã㊠Splunk Observability Cloud ã«éä¿¡ããŸãããã®éããã°ã€ãã³ãã«ã¯ `trace_id`ã`span_id` ããã³ãã¬ãŒã¹ãã©ã°ãä»äžãããŸãã
+
+Log Observer ã¯ãã¢ããªã±ãŒã·ã§ã³ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãã°ããªã¢ã«ã¿ã€ã ã§è¡šç€ºããŸãããã°ãæ€çŽ¢ããã£ã«ã¿ãªã³ã°ãåæããããšã§ãåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãç°å¢ã®ã¢ãã¿ãªã³ã°ãå¯èœã§ãã
+
+PetClinic Web ã¢ããªã±ãŒã·ã§ã³ã«æ»ãã**Error** ãªã³ã¯ãæ°åã¯ãªãã¯ããŠãã ãããããã«ãããPetClinic ã¢ããªã±ãŒã·ã§ã³ã®ãã°ã«ããã€ãã®ãã°ã¡ãã»ãŒãžãçæãããŸãã
+
+
+
+å·ŠåŽã®ã¡ãã¥ãŒãã **Log Observer** ãã¯ãªãã¯ãã**Index** ã **splunk4rookies-workshop** ã«èšå®ãããŠããããšã確èªããŸãã
+
+次ã«ã**Add Filter** ãã¯ãªãã¯ã㊠`service.name` ãã£ãŒã«ããæ€çŽ¢ãã`-petclinic-service` ã®å€ãéžæã㊠`=`ïŒincludeïŒãã¯ãªãã¯ããŸããããã§ãPetClinic ã¢ããªã±ãŒã·ã§ã³ã®ãã°ã¡ãã»ãŒãžã®ã¿ã衚瀺ãããããã«ãªããŸãã
+
+PetClinic ã¢ããªã±ãŒã·ã§ã³ã§ **Error** ãªã³ã¯ãã¯ãªãã¯ããŠçæããããã°ãšã³ããªã®ãããããéžæããŠãã ããããã°ã¡ãã»ãŒãžãšããã°ã¡ãã»ãŒãžã«èªåçã«æ¿å
¥ããããã¬ãŒã¹ã¡ã¿ããŒã¿ã衚瀺ãããŸãããŸããAPM ãšã€ã³ãã©ã¹ãã©ã¯ãã£ã® Related Content ãå©çšå¯èœã§ããããšãããããŸãã
+
+
+
+ããã§ã¯ãŒã¯ã·ã§ããã¯çµäºã§ãããããŸã§éåžžã«å€ãã®å
å®¹ãæ±ã£ãŠããŸããããã®æç¹ã§ãã¡ããªã¯ã¹ããã¬ãŒã¹ïŒAPM ããã³ RUMïŒããã°ãããŒã¿ããŒã¹ã¯ãšãªã®ããã©ãŒãã³ã¹ãã³ãŒããããã¡ã€ãªã³ã°ã Splunk Observability Cloud ã«ã¬ããŒããããŠããã¯ãã§ããããããPetClinic ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã倿Žããããšãªãå®çŸã§ããŠããŸãïŒãã ã RUM ã¯äŸå€ã§ãïŒã
+
+**ããã§ãšãããããŸã!**
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/_index.md
new file mode 100644
index 0000000000..54f6963ce0
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/1-petclinic-monolith/_index.md
@@ -0,0 +1,36 @@
+---
+title: PetClinic ã¢ããªã¹ã¯ãŒã¯ã·ã§ãã
+weight: 1
+description: Spring PetClinic ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ãçšããŠãJava ã¢ããªã±ãŒã·ã§ã³åãã® Splunk Observability Cloud ã®èªåæ€åºã»èªåèšå®æ©èœãäœéšãããã³ãºãªã³ã¯ãŒã¯ã·ã§ããã§ãã
+archetype: chapter
+authors: ["Robert Castley"]
+time: 30 minutes
+---
+
+ãã®ã¯ãŒã¯ã·ã§ããã®ç®çã¯ã**Splunk Observability Cloud** ãã©ãããã©ãŒã ã®ä»¥äžã®ã³ã³ããŒãã³ããèšå®ããåºæ¬çãªæé ãäžéãäœéšããããšã§ãã
+
+* Splunk Infrastructure Monitoring (IM)
+* Splunk Automatic Discovery for Java (APM)
+ * Database Query Performance
+ * AlwaysOn Profiling
+* Splunk Real User Monitoring (RUM)
+* RUM to APM Correlation
+* Splunk Log Observer (LO)
+
+ãŸãããµã³ãã«ã® Java ã¢ããªã±ãŒã·ã§ã³ (Spring PetClinic) ã®ã¯ããŒã³ (ããŠã³ããŒã)ãã³ã³ãã€ã«ãããã±ãŒãžã³ã°ãå®è¡ã®æé ã䜵ããŠç¢ºèªããŸãã
+
+ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããšã**Splunk APM** ã§å©çšããã Java 2.x åãã® **èªåæ€åºãšèªåèšå® (automatic discovery and configuration)** ã«ãã£ãŠãã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ãããã«ç¢ºèªã§ããããã«ãªããŸãã
+
+ãã®åŸãPetClinic ã®ãšã³ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ (ã¢ããªã±ãŒã·ã§ã³ãã¬ã³ããªã³ã°ãã HTML ããŒãž) ã **Splunk OpenTelemetry Javascript Libraries (RUM)** ã§èšè£
ãããšã³ããŠãŒã¶ãŒãè¡ããã¹ãŠã®ã¯ãªãã¯ãããŒãžããŒãã«é¢ãã RUM ãã¬ãŒã¹ãçæããŸãã
+
+æåŸã«ãPetClinic ã¢ããªã±ãŒã·ã§ã³ãã°ã«ãã¬ãŒã¹ã¡ã¿ããŒã¿ãèªåçã«æ³šå
¥ãããããšã§çæããããã°ã確èªããŸãã
+
+{{% notice title="åææ¡ä»¶" style="primary" icon="info" %}}
+
+* ããŒã `2222` ãžã®ã¢ãŠãããŠã³ã SSH ã¢ã¯ã»ã¹ã
+* ããŒã `8083` ãžã®ã¢ãŠãããŠã³ã HTTP ã¢ã¯ã»ã¹ã
+* `bash` ã·ã§ã«ããã³ `vi/vim` ãšãã£ã¿ã®åºæ¬çãªæäœã«æ
£ããŠããããšã
+
+{{% /notice %}}
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/1-architecture/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/1-architecture/_index.md
new file mode 100644
index 0000000000..4f008a7189
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/1-architecture/_index.md
@@ -0,0 +1,18 @@
+---
+title: Architecture
+linkTitle: 1. ã¢ãŒããã¯ãã£
+weight: 2
+time: 5 minutes
+---
+
+Spring PetClinic Java ã¢ããªã±ãŒã·ã§ã³ã¯ãããã³ããšã³ããµãŒãã¹ãšããã¯ãšã³ããµãŒãã¹ã§æ§æãããã·ã³ãã«ãªãã€ã¯ããµãŒãã¹ã¢ããªã±ãŒã·ã§ã³ã§ããããã³ããšã³ããµãŒãã¹ã¯ Spring Boot ã¢ããªã±ãŒã·ã§ã³ã§ãããã¯ãšã³ããµãŒãã¹ãšããåãããããã® Web ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸããããã¯ãšã³ããµãŒãã¹ã¯ Spring Boot ã¢ããªã±ãŒã·ã§ã³ã§ãMySQL ããŒã¿ããŒã¹ãšããåãããããã® RESTful API ãæäŸããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ãããå®äºããããã«ã¯ãKubernetes äžã§åäœãã Java ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿã㊠**automatic discovery and configuration** ãæå¹åããæ¹æ³ã«ã€ããŠãããæ·±ãçè§£ã§ããããã«ãªããŸãã
+
+äžå³ã¯ãSplunk OpenTelemetry Operator ãš automatic discovery and configuration ãæå¹åããç¶æ
ã§ãKubernetes äžã§åäœãã Spring PetClinic Java ã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ã瀺ããŠããŸãã
+
+
+
+---
+
+**Josh Voravong** ãäœæãã [**example**](https://github.com/signalfx/splunk-otel-collector-chart/blob/main/examples/enable-operator-and-auto-instrumentation/spring-petclinic-java.md) ãããŒã¹ã«ããŠããŸãã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/1-otel.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/1-otel.md
new file mode 100644
index 0000000000..bf31267f7b
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/1-otel.md
@@ -0,0 +1,138 @@
+---
+
+title: Splunk OpenTelemetry Collector ã®ãããã€
+linkTitle: 1. OpenTelemetry Collector ã®ãããã€
+weight: 1
+---
+
+Observability ã·ã°ãã«ïŒ**ã¡ããªã¯ã¹ããã¬ãŒã¹**ã**ãã°**ïŒã **Splunk Observability Cloud** ã«åã蟌ãã«ã¯ãSplunk OpenTelemetry Collector ã Kubernetes ã¯ã©ã¹ã¿ãŒã«ãããã€ããå¿
èŠããããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãSplunk OpenTelemetry Collector Helm Chart ã䜿çšããŸãããŸããHelm chart ãªããžããªã Helm ã«è¿œå ãã`helm repo update` ãå®è¡ããŠææ°ããŒãžã§ã³ãååŸããŸãã
+
+{{< tabs >}}
+{{% tab title="Install Helm Chart" %}}
+
+``` bash
+helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart && helm repo update
+```
+
+{{% /tab %}}
+{{% tab title="Output" %}}
+
+```text
+Using ACCESS_TOKEN={REDACTED}
+Using REALM=eu0
+"splunk-otel-collector-chart" has been added to your repositories
+Using ACCESS_TOKEN={REDACTED}
+Using REALM=eu0
+Hang tight while we grab the latest from your chart repositories...
+...Successfully got an update from the "splunk-otel-collector-chart" chart repository
+Update Complete. âHappy Helming!â
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+**Splunk Observability Cloud** ã«ã¯ãKubernetes äžã§ã® OpenTelemetry Collector ã®ã»ããã¢ãããæ¡å
ãã UI ãŠã£ã¶ãŒããçšæãããŠããŸãããæéççž®ã®ãããããã§ã¯äžèšã® Helm install ã³ãã³ãã䜿çšããŸããèªåæ€åºãšèšå®ãã³ãŒããããã¡ã€ãªã³ã°ã®ããã« operator ãæå¹åãã远å ãã©ã¡ãŒã¿ãŒãèšå®ããŠããŸãã
+
+* `--set="operator.enabled=true"` - èªåæ€åºãšèšå®ãæ±ã OpenTelemetry operator ãã€ã³ã¹ããŒã«ãããŸãã
+* `--set="splunkObservability.profilingEnabled=true"` - operator çµç±ã§ã³ãŒããããã¡ã€ãªã³ã°ãæå¹åããŸãã
+
+Collector ãã€ã³ã¹ããŒã«ããã«ã¯ã以äžã®ã³ãã³ããå®è¡ããŸãã**ç·šéã¯ããªãã§ãã ãã**ã
+
+{{< tabs >}}
+{{% tab title="Helm Install" %}}
+
+```bash
+helm install splunk-otel-collector --version {{< otel-version >}} \
+--set="operatorcrds.install=true", \
+--set="operator.enabled=true", \
+--set="splunkObservability.realm=$REALM" \
+--set="splunkObservability.accessToken=$ACCESS_TOKEN" \
+--set="clusterName=$INSTANCE-k3s-cluster" \
+--set="splunkObservability.profilingEnabled=true" \
+--set="agent.service.enabled=true" \
+--set="environment=$INSTANCE-workshop" \
+--set="splunkPlatform.endpoint=$HEC_URL" \
+--set="splunkPlatform.token=$HEC_TOKEN" \
+--set="splunkPlatform.index=splunk4rookies-workshop" \
+splunk-otel-collector-chart/splunk-otel-collector \
+-f ~/workshop/k3s/otel-collector.yaml
+
+{{% /tab %}}
+{{% tab title="Output" %}}
+
+``` plaintext
+LAST DEPLOYED: Fri Apr 19 09:39:54 2024
+NAMESPACE: default
+STATUS: deployed
+REVISION: 1
+NOTES:
+Splunk OpenTelemetry Collector is installed and configured to send data to Splunk Platform endpoint "https://http-inputs-o11y-workshop-eu0.splunkcloud.com:443/services/collector/event".
+
+Splunk OpenTelemetry Collector is installed and configured to send data to Splunk Observability realm eu0.
+
+[INFO] You've enabled the operator's auto-instrumentation feature (operator.enabled=true)! The operator can automatically instrument Kubernetes hosted applications.
+ - Status: Instrumentation language maturity varies. See `operator.instrumentation.spec` and documentation for utilized instrumentation details.
+ - Splunk Support: We offer full support for Splunk distributions and best-effort support for native OpenTelemetry distributions of auto-instrumentation libraries.
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+次ã«é²ãåã«ãPod ã **Running** ãšããŠå ±åãããŠããããšã確èªããŠãã ããïŒéåžžã¯çŽ 30 ç§ããããŸãïŒã
+
+{{< tabs >}}
+{{% tab title="kubectl get pods" %}}
+
+``` bash
+kubectl get pods | grep splunk-otel
+```
+
+{{% /tab %}}
+{{% tab title="Output" %}}
+
+``` text
+splunk-otel-collector-k8s-cluster-receiver-6bd5567d95-5f8cj 1/1 Running 0 10m
+splunk-otel-collector-agent-tspd2 1/1 Running 0 10m
+splunk-otel-collector-operator-69d476cb7-j7zwd 2/2 Running 0 10m
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+Splunk OpenTelemetry Collector ãããšã©ãŒãå ±åãããŠããªãããšã確èªããŸãïŒçµäºããã«ã¯ `ctrl + c` ãæŒããŸãïŒããããã¯ãããŒãã¹ãã€ã³ããšããŠã€ã³ã¹ããŒã«æžã¿ã® **awesome** 㪠`k9s` ã¿ãŒããã« UI ã䜿çšããŠã¿ãŠãã ããã
+
+{{< tabs >}}
+{{% tab title="kubectl logs" %}}
+
+``` bash
+kubectl logs -l app=splunk-otel-collector -f --container otel-collector
+```
+
+{{% /tab %}}
+{{% tab title="Output" %}}
+
+```text
+2021-03-21T16:11:10.900Z INFO service/service.go:364 Starting receivers...
+2021-03-21T16:11:10.900Z INFO builder/receivers_builder.go:70 Receiver is starting... {"component_kind": "receiver", "component_type": "prometheus", "component_name": "prometheus"}
+2021-03-21T16:11:11.009Z INFO builder/receivers_builder.go:75 Receiver started. {"component_kind": "receiver", "component_type": "prometheus", "component_name": "prometheus"}
+2021-03-21T16:11:11.009Z INFO builder/receivers_builder.go:70 Receiver is starting... {"component_kind": "receiver", "component_type": "k8s_cluster", "component_name": "k8s_cluster"}
+2021-03-21T16:11:11.009Z INFO k8sclusterreceiver@v0.21.0/watcher.go:195 Configured Kubernetes MetadataExporter {"component_kind": "receiver", "component_type": "k8s_cluster", "component_name": "k8s_cluster", "exporter_name": "signalfx"}
+2021-03-21T16:11:11.009Z INFO builder/receivers_builder.go:75 Receiver started. {"component_kind": "receiver", "component_type": "k8s_cluster", "component_name": "k8s_cluster"}
+2021-03-21T16:11:11.009Z INFO healthcheck/handler.go:128 Health Check state change {"component_kind": "extension", "component_type": "health_check", "component_name": "health_check", "status": "ready"}
+2021-03-21T16:11:11.009Z INFO service/service.go:267 Everything is ready. Begin running and processing data.
+2021-03-21T16:11:11.009Z INFO k8sclusterreceiver@v0.21.0/receiver.go:59 Starting shared informers and wait for initial cache sync. {"component_kind": "receiver", "component_type": "k8s_cluster", "component_name": "k8s_cluster"}
+2021-03-21T16:11:11.281Z INFO k8sclusterreceiver@v0.21.0/receiver.go:75 Completed syncing shared informer caches. {"component_kind": "receiver", "component_type": "k8s_cluster", "component_name": "k8s_cluster"}
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+>[!INFO] 倱æããã€ã³ã¹ããŒã«ã®åé€
+>OpenTelemetry Collector ã®ã€ã³ã¹ããŒã«ã§ãšã©ãŒãçºçããå Žåã¯ã以äžã®ã³ãã³ãã§
+>ã€ã³ã¹ããŒã«ãåé€ããŠããçŽãããšãã§ããŸãã
+>
+>``` bash
+>helm delete splunk-otel-collector
+>```
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/2-petclinic.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/2-petclinic.md
new file mode 100644
index 0000000000..421a7fbc6e
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/2-petclinic.md
@@ -0,0 +1,120 @@
+---
+title: Deploy the PetClinic Application
+linkTitle: 2. Deploy PetClinic Application
+weight: 3
+---
+
+ã¢ããªã±ãŒã·ã§ã³ã®æåã®ãããã€ã§ã¯ãäºåã«ãã«ããããã³ã³ããã䜿çšããŠã芳枬察象ãšããã Kubernetes äžã§åäœããäžè¬ç㪠Java ãã€ã¯ããµãŒãã¹ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ãšããããŒã¹ã·ããªãªãæ§ç¯ããŸããããã§ã¯ãã¢ããªã±ãŒã·ã§ã³ããããã€ããŸãããã
+
+{{< tabs >}}
+{{% tab title="kubectl apply" %}}
+
+``` bash
+kubectl apply -f ~/workshop/petclinic/deployment.yaml
+```
+
+{{% /tab %}}
+{{% tab title="Output" %}}
+
+``` text
+deployment.apps/config-server created
+service/config-server created
+deployment.apps/discovery-server created
+service/discovery-server created
+deployment.apps/api-gateway created
+service/api-gateway created
+service/api-gateway-external created
+deployment.apps/customers-service created
+service/customers-service created
+deployment.apps/vets-service created
+service/vets-service created
+deployment.apps/visits-service created
+service/visits-service created
+deployment.apps/admin-server created
+service/admin-server created
+service/petclinic-db created
+deployment.apps/petclinic-db created
+configmap/petclinic-db-initdb-config created
+deployment.apps/petclinic-loadgen-deployment created
+configmap/scriptfile created
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ããã§ãPod ãåäœããŠããããšã確èªããããšã§ããããã€ãæåããããæ€èšŒã§ããŸããã³ã³ããã¯ããŠã³ããŒãããŠèµ·åããå¿
èŠããããããæ°åãããå ŽåããããŸãã
+
+{{< tabs >}}
+{{% tab title="kubectl get pods" %}}
+
+``` bash
+kubectl get pods
+```
+
+{{% /tab %}}
+{{% tab title="Output" %}}
+
+```bash
+NAME READY STATUS RESTARTS AGE
+splunk-otel-collector-k8s-cluster-receiver-655dcd9b6b-dcvkb 1/1 Running 0 114s
+splunk-otel-collector-agent-dg2vj 1/1 Running 0 114s
+splunk-otel-collector-operator-57cbb8d7b4-dk5wf 2/2 Running 0 114s
+petclinic-db-64d998bb66-2vzpn 1/1 Running 0 58s
+api-gateway-d88bc765-jd5lg 1/1 Running 0 58s
+visits-service-7f97b6c579-bh9zj 1/1 Running 0 58s
+admin-server-76d8b956c5-mb2zv 1/1 Running 0 58s
+customers-service-847db99f79-mzlg2 1/1 Running 0 58s
+vets-service-7bdcd7dd6d-2tcfd 1/1 Running 0 58s
+petclinic-loadgen-deployment-5d69d7f4dd-xxkn4 1/1 Running 0 58s
+config-server-67f7876d48-qrsr5 1/1 Running 0 58s
+discovery-server-554b45cfb-bqhgt 1/1 Running 0 58s
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+`kubectl get pods` ã®åºåããäžèšã® Output ã¿ãã«è¡šç€ºãããŠããåºåãšäžèŽããããšã確èªããŠãã ããããã¹ãŠã®ãµãŒãã¹ã **Running** ãšè¡šç€ºãããŠããããšã確èªããŸãïŒãŸã㯠`k9s` ã䜿çšããŠã¹ããŒã¿ã¹ãç¶ç¶çã«ç£èŠããŸãïŒã
+
+ã¢ããªã±ãŒã·ã§ã³ããã¹ãããã«ã¯ãã€ã³ã¹ã¿ã³ã¹ã®ãããªã㯠IP ã¢ãã¬ã¹ãååŸããå¿
èŠããããŸããæ¬¡ã®ã³ãã³ããå®è¡ããŠååŸã§ããŸãã
+
+``` bash
+curl http://ifconfig.me
+
+```
+
+**http://:81** ã«ã¢ã¯ã»ã¹ããŠãã¢ããªã±ãŒã·ã§ã³ãåäœããŠãããã確èªããŸãïŒ**** ã¯äžèšã§ååŸãã IP ã¢ãã¬ã¹ã«çœ®ãæããŠãã ããïŒãPetClinic ã¢ããªã±ãŒã·ã§ã³ãåäœããŠããã¯ãã§ããããŒã **81** ã«å°éã§ããªãå Žåããå¥ã®ããŒãã䜿çšãããå Žåã¯ãããŒã **80** ããã³ **443** ã§ãåäœããŠããŸãã
+
+
+
+**All Owners** **(1)** ããã³ **Veterinarians** **(2)** ã¿ãã«ã¢ã¯ã»ã¹ããŠãããããã®ããŒãžã«ååã®ãªã¹ãã衚瀺ãããããšã確èªããã¢ããªã±ãŒã·ã§ã³ãæ£ããåäœããŠããããšã確ãããŠãã ããã
+
+
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/_index.md
new file mode 100644
index 0000000000..d8810af3d4
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/_index.md
@@ -0,0 +1,61 @@
+---
+title: ã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã®æºå
+linkTitle: 2. æºå
+weight: 3
+archetype: chapter
+time: 15 minutes
+---
+
+ã¯ãŒã¯ã·ã§ããäžã«äœ¿çšããã€ã³ã¹ã¿ã³ã¹ã®ãã°ã€ã³æ
å ±ã¯ãã€ã³ã¹ãã©ã¯ã¿ãŒããæäŸãããŸãã
+
+ã€ã³ã¹ã¿ã³ã¹ã«åããŠãã°ã€ã³ãããšã以äžã®ããã« Splunk ã®ããŽã衚瀺ãããŸããã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶ã«åé¡ãããå Žåã¯ãã€ã³ã¹ãã©ã¯ã¿ãŒãŸã§ãé£çµ¡ãã ããã
+
+``` text
+$ ssh -p 2222 splunk@
+
+âââââââââââââââ âââ âââ âââââââ ââââââ âââ âââ
+âââââââââââââââââââ âââ ââââââââ ââââââ ââââ ââââ
+âââââââââââââââââââ âââ âââââââââ ââââââââââ ââââ
+âââââââââââââââ âââ âââ ââââââââââââââââââââ ââââ
+âââââââââââ ââââââââââââââââââââ âââââââââ âââ ââââ
+âââââââââââ ââââââââ âââââââ âââ ââââââââ âââ âââ
+Last login: Mon Feb 5 11:04:54 2024 from [Redacted]
+splunk@show-no-config-i-0d1b29d967cb2e6ff ~ $
+```
+
+ã€ã³ã¹ã¿ã³ã¹ãæ£ããæ§æãããŠããããšã確èªããããããã®ã¯ãŒã¯ã·ã§ããã§å¿
èŠãªç°å¢å€æ°ãæ£ããèšå®ãããŠãããããã§ãã¯ããå¿
èŠããããŸããã¿ãŒããã«ã§ä»¥äžã®ã¹ã¯ãªãããå®è¡ããç°å¢å€æ°ãååšããæå¹ãªå€ãèšå®ãããŠããããšã確èªããŠãã ããã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+. ~/workshop/petclinic/scripts/check_env.sh
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+ACCESS_TOKEN =
+REALM =
+RUM_TOKEN =
+HEC_TOKEN =
+HEC_URL = https://<...>/services/collector/event
+INSTANCE =
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+`INSTANCE` ç°å¢å€æ°ã®å€ã¯ãåŸã»ã© **Splunk Observability Cloud** ã§ããŒã¿ããã£ã«ã¿ãªã³ã°ããéã«äœ¿çšãããããã¡ã¢ããŠãããŠãã ããã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãäžèšã®ç°å¢å€æ°ã **ãã¹ãŠ** å¿
èŠã§ããå€ãäžè¶³ããŠãããã®ãããå Žåã¯ãã€ã³ã¹ãã©ã¯ã¿ãŒãŸã§ãåãåãããã ããã
+
+> [!SPLUNK] æ¢åã® OpenTelemetry Collector ãåé€ãã
+>ãã® EC2 ã€ã³ã¹ã¿ã³ã¹ã§ä»¥åã« Splunk Observability ã¯ãŒã¯ã·ã§ãããå®äºããããšãããå Žåã¯ã
+>æ¢åã® Splunk OpenTelemetry Collector ã®ã€ã³ã¹ããŒã«ã
+>åé€ãããŠããããšã確èªããå¿
èŠããããŸãã以äžã®ã³ãã³ããå®è¡ããããšã§åé€ã§ããŸãã
+>
+>``` bash
+>helm delete splunk-otel-collector
+>```
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/3-verify-setup/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/3-verify-setup/_index.md
new file mode 100644
index 0000000000..a719d0ca87
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/3-verify-setup/_index.md
@@ -0,0 +1,28 @@
+---
+title: Kubernetes ã¯ã©ã¹ã¿ãŒã¡ããªã¯ã¹ã®ç¢ºèª
+linkTitle: 3. ã¯ã©ã¹ã¿ãŒã¡ããªã¯ã¹ã®ç¢ºèª
+weight: 4
+time: 10 minutes
+---
+
+ã€ã³ã¹ããŒã«ãå®äºãããã**Splunk Observability Cloud** ã«ãã°ã€ã³ããKubernetes ã¯ã©ã¹ã¿ãŒããã¡ããªã¯ã¹ãæµã蟌ãã§ããããšã確èªããŸãã
+
+å·ŠåŽã®ã¡ãã¥ãŒãã **Infrastructure** ãã¯ãªãã¯ãã**Kubernetes** ãéžæããŠã**Kubernetes nodes** ã¿ã€ã«ãéžæããŸãã
+
+
+
+**Kubernetes nodes** ã®æŠèŠç»é¢ã«å
¥ã£ããã**Time** ãã£ã«ã¿ãŒã **-1h** ããçŽè¿ 15 å **(-15m)** ã«å€æŽããŠææ°ã®ããŒã¿ã«çŠç¹ãåœãŠã**Table** ãéžæããŠã¡ããªã¯ã¹ãã¬ããŒãããŠãããã¹ãŠã®ããŒããäžèŠ§è¡šç€ºããŸãã
+
+次ã«ã**Refine by:** ããã«ã§ **Cluster name** ãéžæãããªã¹ããããèªèº«ã®ã¯ã©ã¹ã¿ãŒãéžæããŸãã
+
+{{% notice title="ãã³ã" style="info" icon="lightbulb" %}}
+ãèªèº«ã®ã¯ã©ã¹ã¿ãŒãç¹å®ããã«ã¯ãã»ããã¢ããæã«å®è¡ããã·ã§ã«ã¹ã¯ãªããã®åºåã«ãã `INSTANCE` ã®å€ã䜿çšããŸãããã®äžæã®èå¥åã«ããããªã¹ãå
ã®ä»ã®ããŒãã®äžããã¯ãŒã¯ã·ã§ããçšã®ã¯ã©ã¹ã¿ãŒãèŠã€ããããšãã§ããŸãã
+{{% /notice %}}
+
+ããã«ããããªã¹ãã«ã¯ãèªèº«ã®ã¯ã©ã¹ã¿ãŒã®ããŒãã®ã¿ã衚瀺ãããããã«ãã£ã«ã¿ãŒãããŸãã
+
+
+
+**K8s node logs** ãã¥ãŒã«åãæ¿ããŠãããŒãããã®ãã°ã確èªããŸãã
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/4-apm/1-patching-deployment.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/4-apm/1-patching-deployment.md
new file mode 100644
index 0000000000..3b8def4505
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/4-apm/1-patching-deployment.md
@@ -0,0 +1,79 @@
+---
+title: Patching the Deployment
+linkTitle: 1. Patching the Deployment
+weight: 1
+---
+
+**èªåæ€åºãšèšå®ïŒautomatic discovery and configurationïŒ**ãæ§æããã«ã¯ãèšè£
çšã®ã¢ãããŒã·ã§ã³ã远å ããããã« Deployment ã«ããããé©çšããå¿
èŠããããŸããããããé©çšããããšãOpenTelemetry Collector ãèªåæ€åºãšèšå®ã®ã©ã€ãã©ãªã泚å
¥ããPod ãåèµ·åãããŠãã¬ãŒã¹ãšãããã¡ã€ãªã³ã°ããŒã¿ã®éä¿¡ãéå§ãããŸãããŸãã以äžãå®è¡ã㊠`api-gateway` ã« `splunk-otel-java` ã€ã¡ãŒãžãå«ãŸããŠããªãããšã確èªããŸãã
+
+{{< tabs >}}
+{P}{{% tab title="Describe api-gateway" %}}
+
+``` bash
+kubectl describe pods api-gateway | grep Image:
+```
+
+{{% /tab %}}
+{{% tab title="Describe Output" %}}
+
+``` text
+Image: quay.io/phagen/spring-petclinic-api-gateway:0.0.2
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+次ã«ãDeployment ã«ã¢ãããŒã·ã§ã³ã远å ããŠããã¹ãŠã®ãµãŒãã¹ã«å¯Ÿã㊠Java ã®èªåæ€åºãšèšå®ãæå¹ã«ããŸããæ¬¡ã®ã³ãã³ãã¯ãã¹ãŠã® Deployment ã«ããããé©çšããŸããããã«ãããOpenTelemetry Operator ãããªã¬ãŒããã`splunk-otel-java` ã€ã¡ãŒãžã Pod ã«æ³šå
¥ãããŸãã
+
+{{< tabs >}}
+{{% tab title="Patch all PetClinic services" %}}
+
+``` bash
+kubectl get deployments -l app.kubernetes.io/part-of=spring-petclinic -o name | xargs -I % kubectl patch % -p "{\"spec\": {\"template\":{\"metadata\":{\"annotations\":{\"instrumentation.opentelemetry.io/inject-java\":\"default/splunk-otel-collector\"}}}}}"
+```
+
+{{% /tab %}}
+{{% tab title="Patch Output" %}}
+
+``` text
+deployment.apps/config-server patched (no change)
+deployment.apps/admin-server patched (no change)
+deployment.apps/customers-service patched
+deployment.apps/visits-service patched
+deployment.apps/discovery-server patched (no change)
+deployment.apps/vets-service patched
+deployment.apps/api-gateway patched
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+**config-server**ã**discovery-server**ã**admin-server** ã¯ãã§ã«ããããé©çšãããŠããããã倿Žã¯ãããŸããã
+
+`api-gateway` Pod ã®ã³ã³ããã€ã¡ãŒãžãå床確èªããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã
+
+{{< tabs >}}
+{{% tab title="Describe api-gateway" %}}
+
+``` bash
+kubectl describe pods api-gateway | grep Image:
+```
+
+{{% /tab %}}
+{{% tab title="Describe Output" %}}
+
+```text
+Image: ghcr.io/signalfx/splunk-otel-java/splunk-otel-java:v1.30.0
+Image: quay.io/phagen/spring-petclinic-api-gateway:0.0.2
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+`api-gateway` ã«æ°ããã€ã¡ãŒãžã远å ããã`ghcr.io` ãã `splunk-otel-java` ããã«ãããŸãïŒæ³šïŒ`api-gateway` ã³ã³ããã2ã€è¡šç€ºãããå Žåãå
ã®ã³ã³ããããŸã çµäºåŠçäžã§ããå¯èœæ§ãé«ãã®ã§ãæ°ç§åŸ
ã£ãŠãã ããïŒã
+
+**Splunk Observability Cloud** ã® Kubernetes Navigator ã«æ»ããŸããæ°ååŸãOperator ã«ãã£ãŠ Pod ãåèµ·åãããèªåæ€åºãšèšå®ã®ã³ã³ããã远å ãããããšã確èªã§ããŸããããã¯ä»¥äžã®ã¹ã¯ãªãŒã³ã·ã§ããã®ããã«è¡šç€ºãããŸãã
+
+
+
+Kubernetes Navigator ã§ Pod ãç·è²ã«ãªããŸã§åŸ
ã£ãŠãããæ¬¡ã®ã»ã¯ã·ã§ã³ã«é²ãã§ãã ããã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/4-apm/2-apm-data.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/4-apm/2-apm-data.md
new file mode 100644
index 0000000000..5c0ca863c0
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/4-apm/2-apm-data.md
@@ -0,0 +1,16 @@
+---
+title: Splunk APM ã§ã®ããŒã¿ã®ç¢ºèª
+linkTitle: 2. APM ããŒã¿ã®ç¢ºèª
+weight: 2
+---
+
+å·ŠåŽã®ã¡ãã¥ãŒã§ **APM** ãã¯ãªãã¯ããæ°ããèšè£
ããããµãŒãã¹ã®ãã¬ãŒã¹ããçæãããããŒã¿ã確èªããŸãã
+
+**Environment** ãã£ã«ã¿ãŒ **(1)** ããããããããŠã³ããã¯ã¹ã§ã䜿ãã®ã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã®ååã«å€æŽããŸãã
+
+> [!NOTE]
+> ãã㯠**`-workshop`** ãšãªããŸãã**`INSTANCE`** ã¯ãå
ã»ã©å®è¡ããã·ã§ã«ã¹ã¯ãªããã®å€ã§ããããã ããéžæãããŠããããšã確èªããŠãã ããã
+
+
+
+次ã®ã»ã¯ã·ã§ã³ã®æºåãšããŠã**Service Map** **(2)** ãã€ã³ãã¯ãªãã¯ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/4-apm/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/4-apm/_index.md
new file mode 100644
index 0000000000..a470dab453
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/4-apm/_index.md
@@ -0,0 +1,49 @@
+---
+title: APM åãèªåæ€åºãšèªåæ§æã®ã»ããã¢ãã
+linkTitle: 4. èªåæ€åºãšèªåæ§æ
+weight: 5
+time: 10 minutes
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãKubernetes äžã§å®è¡ãããŠãã Java ãµãŒãã¹ã«å¯Ÿã㊠**èªåæ€åºãšèªåæ§æ** ãæå¹ã«ããŸããããã«ãããOpenTelemetry Collector 㯠Pod ã®ã¢ãããŒã·ã§ã³ãåç
§ããŠãJava ã¢ããªã±ãŒã·ã§ã³ã Splunk OpenTelemetry Java ãšãŒãžã§ã³ãã§ã€ã³ã¹ãã«ã¡ã³ããã¹ããã©ããã倿ããŸããããã«ãã£ãŠãã¯ã©ã¹ã¿ãŒäžã§å®è¡ãããŠãã Java ãµãŒãã¹ãããã¬ãŒã¹ãã¹ãã³ããããã¡ã€ãªã³ã°ããŒã¿ãååŸã§ããããã«ãªããŸãã
+
+{{% notice title="èªåæ€åºãšèªåæ§æ" style="note" %}}
+
+èªåæ€åºãšèªåæ§æã¯ã**ã³ãŒãã®å€æŽãåã³ã³ãã€ã«ãå¿
èŠãšããã«**ãã¢ããªã±ãŒã·ã§ã³ãã **ãã¬ãŒã¹ãã¹ãã³ããããã¡ã€ãªã³ã°** ããŒã¿ãååŸããããšãç®çã«èšèšãããŠããç¹ãçè§£ããŠããããšãéèŠã§ãã
+
+ãã㯠APM ãå§ããããã§éåžžã«äŸ¿å©ãªæ¹æ³ã§ãããæåã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã®ä»£æ¿ã«ã¯ **ãªããŸãã**ãæåã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã§ã¯ãã«ã¹ã¿ã ã¹ãã³ãã¿ã°ããã°ãã¢ããªã±ãŒã·ã§ã³ã«è¿œå ã§ãããã¬ãŒã¹ã«å¯ŸããŠããå€ãã®ã³ã³ããã¹ããšè©³çްæ
å ±ãä»äžã§ããŸãã
+
+{{% /notice %}}
+
+Java ã¢ããªã±ãŒã·ã§ã³ã®å ŽåãOpenTelemetry Collector ã¯ã¢ãããŒã·ã§ã³ `instrumentation.opentelemetry.io/inject-java` ãåç
§ããŸãã
+
+ãã®ã¢ãããŒã·ã§ã³ã«ã¯ãå€ãšã㊠`true` ãæå®ããããOpenTelemetry Collector ã® `namespace/daemonset`ïŒäŸïŒ`default/splunk-otel-collector`ïŒãæå®ã§ããŸããåŸè
ã®æ¹åŒã䜿ããšåå空éããŸããã§åäœãããããšãã§ããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ãã¡ãã䜿çšããŸãã
+
+{{% notice title="deployment.yaml ã®äœ¿çš" style="info" %}}
+
+Pod ãèªåçã«ãã¬ãŒã¹ãéä¿¡ããããã«ãããå Žåã¯ã以äžã®ããã« `deployment.yaml` ã«ã¢ãããŒã·ã§ã³ã远å ã§ããŸããããã«ãã£ãŠãååã®ãããã€æã«ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã©ã€ãã©ãªã远å ãããŸããäœæ¥ãå¹çåããããã以äžã® Pod ã«ã€ããŠã¯ãã§ã«ãã®èšå®ãè¡ã£ãŠããŸã:
+
+- **admin-server**
+- **config-server**
+- **discovery-server**
+
+``` yaml
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: admin-server
+ labels:
+ app.kubernetes.io/part-of: spring-petclinic
+spec:
+ selector:
+ matchLabels:
+ app: admin-server
+ template:
+ metadata:
+ labels:
+ app: admin-server
+ annotations:
+ instrumentation.opentelemetry.io/inject-java: "default/splunk-otel-collector"
+```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/1-service-map.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/1-service-map.md
new file mode 100644
index 0000000000..c7ea769063
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/1-service-map.md
@@ -0,0 +1,19 @@
+---
+title: APM Service Map
+linkTitle: 1. APM Service Map
+weight: 1
+---
+
+
+
+äžèšã®ãããã¯ããã¹ãŠã®ãµãŒãã¹éã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã瀺ããŠããŸããPetClinic Microservice ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŠå®å
šã«åæããããŸã§æ°åãããããããããã¯ãŸã äžéç¶æ
ã§ããå¯èœæ§ããããŸãã**-2m** ãšå
¥åããŠæéãã£ã«ã¿ãŒãã«ã¹ã¿ã æé **2 minutes** ã«ççž®ãããšèŠããããªããŸããç»é¢å³äžã® **Refresh** ãã¿ã³ **(1)** ãã¯ãªãã¯ããŠãã ãããèµ€ãåã§ç€ºãããèµ·åæã®åæãšã©ãŒã¯ãæçµçã«æ¶ããŠãããŸãã
+
+次ã«ãrequest, error, and duration (RED) ã¡ããªã¯ã¹ããã·ã¥ããŒãã確èªããããšã§ãèšè£
ãããåãµãŒãã¹ã§å©çšå¯èœãªã¡ããªã¯ã¹ã調ã¹ãŠã¿ãŸãããã
+
+ãã®æŒç¿ã§ã¯ããµãŒãã¹ã®ãªãã¬ãŒã·ã§ã³ã§é«ãã¬ã€ãã³ã·ããšã©ãŒãçºçããŠããå Žåã«äœ¿çšããäžè¬çãªã·ããªãªã䜿çšããŸãã
+
+Dependency map ã§ **customers-service** ãã¯ãªãã¯ãã**Services** ããããããŠã³ããã¯ã¹ **(1)** ã§ `customers-service` ãéžæãããŠããããšã確èªããŸããæ¬¡ã«ãService åã®é£ã«ãã Operations ããããããŠã³ **(2)** ãã `GET /owners` ãéžæããŸãã
+
+ããã«ããã以äžã«ç€ºãããã« `GET /owners` ã§ãã£ã«ã¿ãªã³ã°ãããã¯ãŒã¯ãããŒã衚瀺ãããŸãã
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/2-trace.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/2-trace.md
new file mode 100644
index 0000000000..46317cbde8
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/2-trace.md
@@ -0,0 +1,23 @@
+---
+title: APM Trace
+linkTitle: 2. APM Trace
+weight: 2
+---
+
+ãã¬ãŒã¹ãéžæããã«ã¯ã`Service Requests & Errors` ãã£ãŒãå
ã®è¡ãéžæããŸã **(1)**ãé¢é£ãããã¬ãŒã¹ã®äžèЧã衚瀺ãããŸãã
+
+é¢é£ãã¬ãŒã¹ã®äžèЧã衚瀺ãããããéè²ã® **(2)** Trace ID ãªã³ã¯ãã¯ãªãã¯ããŸãããã®éãéžæãããã¬ãŒã¹ã® Services åã«ããããŸã§ã«èšåããã 3 ã€ã®ãµãŒãã¹ãå«ãŸããŠããããšã確èªããŠãã ããã
+
+
+
+ããã«ãããéžæãããã¬ãŒã¹ã Waterfall ãã¥ãŒã§è¡šç€ºãããŸãã
+
+ããã§ã¯ãããã€ãã®ã»ã¯ã·ã§ã³ã確èªã§ããŸãã
+
+* Waterfall ãã€ã³ **(1)** ã§ã¯ããã¬ãŒã¹ããã³èšè£
ããããã¹ãŠã®é¢æ°ãã¹ãã³ãšããŠè¡šç€ºããããã®æèŠæéãé åºã»é¢ä¿æ§ãèŠèŠçã«ç¢ºèªã§ããŸãã
+* Trace Info ãã€ã³ **(2)** ã§ã¯ãéžæããã¹ãã³ã®æ
å ±ã衚瀺ãããŸãïŒWaterfall ãã€ã³å
ã§å¯Ÿè±¡ã®ã¹ãã³ãæ ã§åŒ·èª¿è¡šç€ºãããŸãïŒã
+* Span ãã€ã³ **(3)** ã§ã¯ãéžæããã¹ãã³ã«éä¿¡ããããã¹ãŠã®ã¿ã°ã確èªã§ããŸããäžã«ã¹ã¯ããŒã«ãããšãã¹ãŠã®ã¿ã°ãåç
§ã§ããŸãã
+* Process ãã€ã³ã§ã¯ãã¹ãã³ãçæããããã»ã¹ã«é¢é£ããã¿ã°ã衚瀺ãããŸãïŒã¹ã¯ãªãŒã³ã·ã§ããã«ã¯å«ãŸããŠããªããããäžã«ã¹ã¯ããŒã«ããŠç¢ºèªããŠãã ããïŒã
+* Trace Properties ã¯ãã€ã³ã®å³äžã«äœçœ®ããããã©ã«ãã§ã¯æããããŸããç¶æ
ã«ãªã£ãŠããŸãã
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/3-spans.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/3-spans.md
new file mode 100644
index 0000000000..f786536056
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/3-spans.md
@@ -0,0 +1,46 @@
+---
+title: APM Span
+linkTitle: 3. APM Spans
+weight: 3
+---
+
+ã¹ãã³ã確èªããªããããã¬ãŒã¹ã«å ã㊠**automatic discovery and configuration** ã䜿çšããéã« **ã³ãŒãã倿Žããããšãªã** å©çšã§ãããããã€ãã®ã¢ãŠããªãã¶ããã¯ã¹æ©èœãèŠãŠãããŸãããã
+
+ãŸããWaterfall Pane ã§ã以äžã®ã¹ã¯ãªãŒã³ã·ã§ããã®ããã« `customers-service:SELECT petclinic` ãŸãã¯é¡äŒŒã®ã¹ãã³ãéžæãããŠããããšã確èªããŠãã ããã
+
+
+
+* åºæ¬çãªã¬ã€ãã³ã·ãŒæ
å ±ã¯ãèšè£
ããã颿°ãŸãã¯åŒã³åºãã«å¯ŸããããŒãšããŠè¡šç€ºãããŸããäžèšã®äŸã§ã¯ã17.8 ããªç§ããã£ãŠããŸãã
+* Several similar Spans **(1)** ã¯ãã¹ãã³ãè€æ°åç¹°ãè¿ãããŠããå Žåã«ã®ã¿è¡šç€ºãããŸãããã®äŸã§ã¯ã10 åç¹°ãè¿ãããŠããŸãã`10x` ãã¯ãªãã¯ãããšããã¹ãŠã®ã¹ãã³ã衚瀺ïŒé衚瀺ã«ã§ãããã¹ãŠã®ã¹ãã³ãé çªã«è¡šç€ºãããŸãã
+* **Inferred Services**: èšè£
ãããŠããªãå€éšã·ã¹ãã ãžã®åŒã³åºãã¯ãã°ã¬ãŒã®ãinferredãã¹ãã³ãšããŠè¡šç€ºãããŸãããã®äŸã«ããã Inferred Service ãŸãã¯ã¹ãã³ã¯ãäžèšã®éã Mysql Database ãžã®åŒã³åºã `mysql:petclinic SELECT petclinic` **(2)** ã§ãã
+* **Span Tags**: Tag Pane ã§ã¯ãautomatic discovery and configuration ã«ãã£ãŠçæãããæšæºçãªã¿ã°ã確èªã§ããŸãããã®å Žåãã¹ãã³ã¯ããŒã¿ããŒã¹ãåŒã³åºããŠããããã`db.statement` ã¿ã° **(3)** ãå«ãŸããŠããŸãããã®ã¿ã°ã«ã¯ DB ã¯ãšãª ã¹ããŒãã¡ã³ããæ ŒçŽããããã®ã¹ãã³äžã«å®è¡ãããããŒã¿ããŒã¹åŒã³åºãã§äœ¿çšãããŸãããã㯠DB-Query Performance æ©èœã§å©çšãããŸããDB-Query Performance ã«ã€ããŠã¯æ¬¡ã®ã»ã¯ã·ã§ã³ã§èŠãŠãããŸãã
+* **Always-on Profiling**: ã¹ãã³ã®ã©ã€ããµã€ã¯ã«äžã«ãããã¡ã€ãªã³ã° ããŒã¿ããã£ããã£ããããã«ã·ã¹ãã ãèšå®ãããŠãã **å Žå**ãã¹ãã³ã®ã¿ã€ã ã©ã€ã³ã«ãã£ããã£ãããã³ãŒã« ã¹ã¿ãã¯ã®æ°ã衚瀺ãããŸããäžèšã®äŸã§ã¯ã`customer-service:GET /owners` ã¹ãã³ã«å¯Ÿã㊠18 åã®ã³ãŒã« ã¹ã¿ãã¯ã衚瀺ãããŠããŸãã**(4)**
+
+ãããã¡ã€ãªã³ã°ã«ã€ããŠã¯æ¬¡ã®ã»ã¯ã·ã§ã³ã§èŠãŠãããŸãã
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/4-red-metrics.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/4-red-metrics.md
new file mode 100644
index 0000000000..bf42dac848
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/4-red-metrics.md
@@ -0,0 +1,13 @@
+---
+title: Service Centric View
+linkTitle: 4. Service Centric View
+weight: 4
+---
+
+Splunk APM 㯠**Service Centric Views** ãæäŸããŠããããšã³ãžãã¢ã¯ãµãŒãã¹ã®ããã©ãŒãã³ã¹ãäžå
çãªãã¥ãŒã§æ·±ãçè§£ã§ããŸãããã¹ãŠã®ãµãŒãã¹ã«ããã£ãŠããšã³ãžãã¢ã¯ãµãŒãã¹ã®åºç€ãšãªãã€ã³ãã©ã¹ãã©ã¯ãã£ãããšã©ãŒãããã«ããã¯ãçŽ æ©ãç¹å®ããæ°ãããããã€ã«ããããã©ãŒãã³ã¹äœäžããã³ãã€ã³ãã§ææ¡ãããã¹ãŠã®ãµãŒãããŒãã£äŸåé¢ä¿ã®å¥å
šæ§ãå¯èŠåã§ããŸãã
+
+`api-gateway` ã®ãã®ããã·ã¥ããŒãã衚瀺ããã«ã¯ãå·ŠåŽã®ã¡ãã¥ãŒãã **APM** ãã¯ãªãã¯ããç¶ããŠãªã¹ãå
ã® `api-gateway` ãµãŒãã¹ãã¯ãªãã¯ããŸããããã«ãããService Centric View ããã·ã¥ããŒãã衚瀺ãããŸãã
+
+
+
+èšè£
ããããã¹ãŠã®ãµãŒãã¹ã§å©çšå¯èœãªãã®ãã¥ãŒã§ã¯ã**Service metrics**ã**Error breakdown**ã**Runtime metrics (Java)**ã**Infrastructure metrics** ã®æŠèŠã確èªã§ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/_index.md
new file mode 100644
index 0000000000..5db17e19a5
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/5-traces/_index.md
@@ -0,0 +1,13 @@
+---
+title: APM ã®æ©èœ
+linkTitle: 5. APM ã®æ©èœ
+weight: 6
+archetype: chapter
+time: 15 minutes
+---
+
+åã®ã»ã¯ã·ã§ã³ã§èŠãŠããããã«ããµãŒãã¹äžã§ **automatic discovery and configuration** ãæå¹ã«ãããšããã¬ãŒã¹ã **Splunk Observability Cloud** ã«éä¿¡ãããŸãã
+
+ãããã®ãã¬ãŒã¹ãå©çšããŠãSplunk 㯠**Service Maps** ãš **RED Metrics** ãèªåçã«çæããŸãããããã¯ãµãŒãã¹ã®åäœãšããµãŒãã¹å士ãã©ã®ããã«çžäºäœçšããŠããããçè§£ããããã®æåã®ã¹ãããã§ãã
+
+次ã®ã»ã¯ã·ã§ã³ã§ã¯ããã¬ãŒã¹ãã®ãã®ãšããããæäŸããæ
å ±ã詳ããèŠãŠãããŸããã³ãŒãã«äžåæãå ããããšãªãããµãŒãã¹ã®åäœãçè§£ããã®ã«åœ¹ç«ã¡ãŸãã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/1-profiling.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/1-profiling.md
new file mode 100644
index 0000000000..2ef6af8de0
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/1-profiling.md
@@ -0,0 +1,69 @@
+---
+title: Always-On Profiling & Metrics
+linkTitle: 1. Always-On Profiling
+weight: 1
+---
+
+å
ã»ã© Helm chart ã䜿ã£ãŠ Splunk Distribution of the OpenTelemetry Collector ãã€ã³ã¹ããŒã«ããéã«ã**AlwaysOn Profiling** ãš **Metrics** ãæå¹ã«ãªãããèšå®ããŸãããããã«ãããOpenTelemetry Java ã¯ã¢ããªã±ãŒã·ã§ã³ã® CPU ããã³ã¡ã¢ãªã®ãããã¡ã€ãªã³ã°ãèªåçã«çæããSplunk Observability Cloud ã«éä¿¡ããŸãã
+
+PetClinic ã¢ããªã±ãŒã·ã§ã³ããããã€ããŠã¢ãããŒã·ã§ã³ãèšå®ãããšãCollector ã¯ã¢ããªã±ãŒã·ã§ã³ãèªåæ€åºãããã¬ãŒã¹ãšãããã¡ã€ãªã³ã°ã®ããã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ãè¡ããŸããæ¬¡ã®ã¹ã¯ãªãããå®è¡ããŠãã€ã³ã¹ãã«ã¡ã³ãããŠãã Java ã³ã³ããã®ããããã®èµ·åãã°ã確èªããããšã§ããããæ€èšŒã§ããŸãã
+
+ãã°ã«ã¯ãJava ã®èªåæ€åºãšèšå®ã§èªã¿èŸŒãŸãããã©ã°ã衚瀺ãããŸãã
+
+{{< tabs >}}
+{{% tab title="Run the script" %}}
+
+``` logs
+. ~/workshop/petclinic/scripts/get_logs.sh
+```
+
+{{% /tab %}}
+{{% tab title="Example output" %}}
+
+``` text {wrap="false"}
+2024/02/15 09:42:00 Problem with dial: dial tcp 10.43.104.25:8761: connect: connection refused. Sleeping 1s
+2024/02/15 09:42:01 Problem with dial: dial tcp 10.43.104.25:8761: connect: connection refused. Sleeping 1s
+2024/02/15 09:42:02 Connected to tcp://discovery-server:8761
+Picked up JAVA_TOOL_OPTIONS: -javaagent:/otel-auto-instrumentation-java/javaagent.jar
+Picked up _JAVA_OPTIONS: -Dspring.profiles.active=docker,mysql -Dsplunk.profiler.call.stack.interval=150
+OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
+[otel.javaagent 2024-02-15 09:42:03:056 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: splunk-1.30.1-otel-1.32.1
+[otel.javaagent 2024-02-15 09:42:03:768 +0000] [main] INFO com.splunk.javaagent.shaded.io.micrometer.core.instrument.push.PushMeterRegistry - publishing metrics for SignalFxMeterRegistry every 30s
+[otel.javaagent 2024-02-15 09:42:07:478 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - -----------------------
+[otel.javaagent 2024-02-15 09:42:07:478 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - Profiler configuration:
+[otel.javaagent 2024-02-15 09:42:07:480 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.enabled : true
+[otel.javaagent 2024-02-15 09:42:07:505 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.directory : /tmp
+[otel.javaagent 2024-02-15 09:42:07:505 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.recording.duration : 20s
+[otel.javaagent 2024-02-15 09:42:07:506 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.keep-files : false
+[otel.javaagent 2024-02-15 09:42:07:510 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.logs-endpoint : http://10.13.2.38:4317
+[otel.javaagent 2024-02-15 09:42:07:513 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - otel.exporter.otlp.endpoint : http://10.13.2.38:4317
+[otel.javaagent 2024-02-15 09:42:07:513 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.memory.enabled : true
+[otel.javaagent 2024-02-15 09:42:07:515 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.tlab.enabled : true
+[otel.javaagent 2024-02-15 09:42:07:516 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.memory.event.rate : 150/s
+[otel.javaagent 2024-02-15 09:42:07:516 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.call.stack.interval : PT0.15S
+[otel.javaagent 2024-02-15 09:42:07:517 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.include.internal.stacks : false
+[otel.javaagent 2024-02-15 09:42:07:517 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.tracing.stacks.only : false
+[otel.javaagent 2024-02-15 09:42:07:517 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - -----------------------
+[otel.javaagent 2024-02-15 09:42:07:518 +0000] [main] INFO com.splunk.opentelemetry.profiler.JfrActivator - Profiler is active.
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+ããã§æ³šç®ããã®ã¯ã`com.splunk.opentelemetry.profiler.ConfigurationLogger` ã«ãã£ãŠåºåãããŠããã»ã¯ã·ã§ã³ãã€ãŸã **Profiling Configuration** ã®éšåã§ãã
+
+`splunk.profiler.directory` ã®ããã«ãå¶åŸ¡å¯èœãªããŸããŸãªèšå®ã確èªã§ããŸããããã¯ããšãŒãžã§ã³ãã Splunk ã«éä¿¡ããåã«ã³ãŒã«ã¹ã¿ãã¯ãæžã蟌ãå Žæã§ãïŒã³ã³ããã®æ§ææ¹æ³ã«ãã£ãŠã¯ç°ãªãå ŽåããããŸãïŒã
+
+倿Žãæ€èšãããããäžã€ã®ãã©ã¡ãŒã¿ã¯ `splunk.profiler.call.stack.interval` ã§ããããã¯ãã·ã¹ãã ã CPU ã¹ã¿ãã¯ãã¬ãŒã¹ããã£ããã£ããé »åºŠã§ããPet Clinic ã¢ããªã±ãŒã·ã§ã³ã®ãããªçãã¹ãã³ãããå Žåã¯ããã®ã€ã³ã¿ãŒãã«èšå®ãçãããããšãæ€èšãããšããã§ãããããã¢ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã©ã«ãã®ã€ã³ã¿ãŒãã«å€ã倿ŽããŠããªããããã¹ãã³ã«åžžã« CPU ã³ãŒã«ã¹ã¿ãã¯ãé¢é£ä»ããããŠãããšã¯éããŸããã
+
+ãããã®ãã©ã¡ãŒã¿ã®èšå®æ¹æ³ã¯[ãã¡ã](https://help.splunk.com/en/splunk-observability-cloud/manage-data/available-data-sources/supported-integrations-in-splunk-observability-cloud/apm-instrumentation/instrument-a-java-application/configure-the-java-agent#profiling-configuration-java)ã§ç¢ºèªã§ããŸãã以äžã®äŸã§ã¯ã`deployment.yaml` ã® JAVA_OPTIONS èšå®ã»ã¯ã·ã§ã³ã§ãã®å€ãèšå®ããããšã«ãããã³ãŒã«ã¹ã¿ãã¯ã®åéã¬ãŒããé«ãããæ¹æ³ã瀺ããŠããŸãã
+
+``` yaml
+env:
+- name: JAVA_OPTIONS
+ value: "-Xdebug -Dsplunk.profiler.call.stack.interval=150"
+```
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/2-waterfall.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/2-waterfall.md
new file mode 100644
index 0000000000..0cb7615bfb
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/2-waterfall.md
@@ -0,0 +1,32 @@
+---
+title: Always-On Profiling in the Trace Waterfall
+linkTitle: 2. Trace Waterfall
+weight: 2
+---
+
+APM Waterfall ãã¥ãŒã§å
ã® (ãŸãã¯é¡äŒŒã®) Trace ãš Span **(1)** ãéžæããŠããããšã確èªããå³åŽã®ãã€ã³ãã **Memory Stack Traces (2)** ãéžæããŠãã ããã
+
+
+
+ãã€ã³ã« Memory Stack Trace Flame Graph **(3)** ã衚瀺ãããŸããã¹ã¯ããŒã«ãããããã€ã³ã®å³ç«¯ããã©ãã°ããŠæ¡å€§ãããã§ããŸãã
+
+AlwaysOn Profiling ã¯ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã®ã¹ãããã·ã§ãã (ã¹ã¿ãã¯ãã¬ãŒã¹) ãç¶ç¶çã«ååŸããŠããŸããäœåãã®ã¹ã¿ãã¯ãã¬ãŒã¹ãèªã¿èŸŒãŸãªããã°ãªããªãããšãæ³åããŠã¿ãŠãã ãããããã¯çŸå®çã§ã¯ãããŸããããããæ¯æŽããããã«ãAlwaysOn Profiling ã¯ãããã¡ã€ãªã³ã°ããŒã¿ãéçŽã»ãµãã©ã€ãºãã**Flame Graph** ãšåŒã°ãããã¥ãŒã§ Call Stack ãç°¡åã«æ¢çŽ¢ã§ããããã«ããŠããŸããããã¯ã¢ããªã±ãŒã·ã§ã³ããååŸãããã¹ãŠã®ã¹ã¿ãã¯ãã¬ãŒã¹ã®ãµããªãŒã衚ããŠããŸããFlame Graph ã䜿çšããŠãã©ã®ã³ãŒãè¡ãããã©ãŒãã³ã¹åé¡ãåŒãèµ·ãããŠããå¯èœæ§ãããããçºèŠããã³ãŒãã«å ãã倿Žãæå³ãã广ããããããã確èªã§ããŸãã
+
+Always-on Profiling ãããã«è©³ãã調ã¹ãã«ã¯ãProfiling ãã€ã³ã® **Memory Stack Traces** ã®äžã«ãã Span **(3)** (äžèšç»åã§åç
§) ãéžæããŸããããã«ãããMemory ãã¥ãŒãäºåéžæãããç¶æ
ã§ Always-on Profiling ã®ã¡ã€ã³ç»é¢ãéããŸãã
+
+
+
+* Time ãã£ã«ã¿ãŒã¯ãéžæãã Span ã®æéæ ã«èšå®ãããŸã **(1)**
+* Java Memory Metric Charts **(2)** ã§ã¯ã`Monitor Heap Memory, Application Activity` ãšã㊠`Memory Allocation Rate` ã `Garbage Collecting` ãªã©ã®ã¡ããªã¯ã¹ã確èªã§ããŸãã
+* Span ã«é¢é£ããã¡ããªã¯ã¹ãšã¹ã¿ãã¯ãã¬ãŒã¹ã®ã¿ã«ãã©ãŒã«ã¹/衚瀺ããæ©èœ **(3)**ãããã«ãããå¿
èŠã«å¿ã㊠Java ã¢ããªã±ãŒã·ã§ã³ã§å®è¡ãããŠããããã¯ã°ã©ãŠã³ãã¢ã¯ãã£ããã£ããã£ã«ã¿ãªã³ã°ã§ããŸãã
+* èå¥ããã Java 颿°åŒã³åºã **(4)**ããã®é¢æ°ããåŒã³åºãããã¡ãœããã«ããªã«ããŠã³ã§ããŸãã
+* Flame Graph **(5)**ããããã¡ã€ã«å¯Ÿè±¡ãµãŒãã¹ã®ã¹ã¿ãã¯ãã¬ãŒã¹ã«åºã¥ããéå±€ãå¯èŠåããŸãã
+* ãµãŒãã¹ãèªèº«ã®è€æ°ããŒãžã§ã³ãèµ·åããå Žåã« Service ã€ã³ã¹ã¿ã³ã¹ãéžæããæ©èœ **(6)**ã
+
+ãããªã調æ»ã®ããã«ãUI ã§ã¯ã¹ã¿ãã¯ãã¬ãŒã¹ãã¯ãªãã¯ããŠãåŒã³åºããã颿°ãš Flame Chart å
ã®é¢é£ããè¡ã確èªã§ããŸããããã䜿ãã°ãã³ãŒãã£ã³ã°ãã©ãããã©ãŒã (ãã¡ããã奜ã¿ã®ã³ãŒãã£ã³ã°ãã©ãããã©ãŒã ã«ãããŸã) ã§å®éã®ã³ãŒãè¡ã衚瀺ããããšãã§ããŸãã
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/3-dbquery.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/3-dbquery.md
new file mode 100644
index 0000000000..e7a448f104
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/3-dbquery.md
@@ -0,0 +1,54 @@
+---
+title: Database Query Performance
+linkTitle: 3. Database Query Performance
+weight: 3
+---
+
+Database Query Performance ã䜿çšãããšãããŒã¿ããŒã¹ã¯ãšãªããµãŒãã¹ã®å¯çšæ§ã«äžãã圱é¿ã Splunk APM ã§çŽæ¥ã¢ãã¿ãªã³ã°ã§ããŸããããã«ãããããŒã¿ããŒã¹ãã€ã³ã¹ãã«ã¡ã³ãããããšãªããé·æéå®è¡ãããŠããã¯ãšãªãæé©åãããŠããªãã¯ãšãªãéãã¯ãšãªãè¿
éã«ç¹å®ããããããåŒãèµ·ãããŠããå¯èœæ§ã®ããåé¡ã軜æžã§ããŸãã
+
+ããŒã¿ããŒã¹ã¯ãšãªã®ããã©ãŒãã³ã¹ã確èªããã«ã¯ããã©ãŠã¶ã§æ»ãããã¡ãã¥ãŒããŒã® APM ã»ã¯ã·ã§ã³ã«ç§»åã㊠**Service Map** ã¿ã€ã«ãã¯ãªãã¯ããAPM ã® **Service Map** ããŒãžã«ããããšã確èªããŠãã ããã
+
+Dependency map ã§æšè«ãããããŒã¿ããŒã¹ãµãŒãã¹ `mysql:petclinic` Inferred Database server ãéžæã **(1)**ãå³åŽã®ãã€ã³ãã¹ã¯ããŒã«ã㊠**Database Query Performance** ãã€ã³ãèŠã€ããŸã **(2)**ã
+
+
+
+ãããã§éžæãããµãŒãã¹ãå®éã«ïŒæšè«ãããïŒããŒã¿ããŒã¹ãµãŒããŒã§ããå Žåããã®ãã€ã³ã¯ç¶ç¶æéã«åºã¥ãäžäœ 90%ïŒP90ïŒã®ããŒã¿ããŒã¹åŒã³åºãã§åããããŸããdb-query performance æ©èœãããã«æ·±ãæãäžããã«ã¯ããã€ã³äžéšã® **Database Query Performance** ãšããåèªã®ããããã¯ãªãã¯ããŸãã
+
+ããã«ãããDB-query Performance æŠèŠç»é¢ã衚瀺ãããŸãã
+
+
+
+{{% notice title="Database Query Normalization" style="info" %}}
+ããã©ã«ãã§ã¯ãSplunk APM ã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã¯ãã·ãŒã¯ã¬ãããå人ãç¹å®ã§ããæ
å ±ïŒPIIïŒãªã©ã®æ©å¯ããŒã¿ã `db.statements` ããåé€ãŸãã¯ãã¹ã¯ããããã«ããŒã¿ããŒã¹ã¯ãšãªããµãã¿ã€ãºããŸããããŒã¿ããŒã¹ã¯ãšãªã®æ£èŠåãç¡å¹ã«ããæ¹æ³ã¯[ãã¡ã](https://help.splunk.com/en/splunk-observability-cloud/monitor-application-performance/monitor-database-query-performance/troubleshoot-database-query-performance#turn-off-database-query-normalization)ã§ç¢ºèªã§ããŸãã
+{{% /notice %}}
+
+ãã®ç»é¢ã§ã¯ãSplunk Observability Cloud ã«éä¿¡ããã Traces ãš Spans ã«åºã¥ããŠãã¢ããªã±ãŒã·ã§ã³ããããŒã¿ããŒã¹ã«å¯ŸããŠè¡ããããã¹ãŠã®ããŒã¿ããŒã¹ã¯ãšãª **(1)** ã衚瀺ãããŸããæéãããã¯éã§æ¯èŒããããTotal TimeãP90 LatencyãRequests ã§ãœãŒããããã§ããããšã«æ³šæããŠãã ãã **(2)**ã
+
+ãªã¹ãå
ã®åããŒã¿ããŒã¹ã¯ãšãªã«ã€ããŠãæãé«ãã¬ã€ãã³ã·ãŒãæéæ å
ã®ç·åŒã³åºãåæ°ã1 ç§ãããã®ãªã¯ãšã¹ãæ°ã衚瀺ãããŸã **(3)**ãããã«ãããã¯ãšãªãæé©åã§ããç®æãç¹å®ã§ããŸãã
+
+å³åŽã®ãã€ã³ã® 2 ã€ã®ãã£ãŒã **(5)** ãä»ããŠãããŒã¿ããŒã¹åŒã³åºããå«ããã¬ãŒã¹ãéžæã§ããŸããTag Spotlight ãã€ã³ **(6)** ã䜿çšããŠããšã³ããã€ã³ããã¿ã°ã«åºã¥ããŠãããŒã¿ããŒã¹åŒã³åºãã«é¢é£ããã¿ã°ãæãäžããŠç¢ºèªããŸãã
+
+ã¯ãšãªã®è©³çްãã¥ãŒã確èªããå¿
èŠãããå Žåã¯ã次ã®ãšããã§ãã
+
+
+
+ç¹å®ã®ã¯ãšãªãã¯ãªãã¯ããŸã **(1)**ãããã«ãããQuery Details ãã€ã³ **(2)** ãéãããã詳现ãªèª¿æ»ã«äœ¿çšã§ããŸãã
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/_index.md
new file mode 100644
index 0000000000..72d08541a2
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/_index.md
@@ -0,0 +1,16 @@
+---
+title: Always-On Profiling & DB Query Performance
+linkTitle: 6. Advanced Features
+weight: 7
+archetype: chapter
+time: 15 minutes
+---
+
+åç« ã§èŠãŠããããã«ãAPM ã䜿ãã°ã³ãŒãã«æãå ããããšãªãåãµãŒãã¹éã®ããåãããã¬ãŒã¹ã§ããåé¡ãããè¿
éã«ç¹å®ã§ããŸãã
+
+ãã¬ãŒã¹ã«å ããŠã**èªåæ€åºãšæ§æ** ã¯ããã«äœ¿ããè¿œå æ©èœãæäŸããŠãããåé¡ãããã«çŽ æ©ãçºèŠããã®ã«åœ¹ç«ã¡ãŸããæ¬ã»ã¯ã·ã§ã³ã§ã¯ããã®äžããæ¬¡ã® 2 ã€ãåãäžããŸãã
+
+- **Always-on Profiling ãš Java ã¡ããªã¯ã¹**
+- **Database Query Performance**
+
+Always-on Profiling ã DB-Query Performance ã«ã€ããŠããã«æ·±ãåŠã³ããå Žåã¯ãå¥ã® Ninja Workshop ã§ãã [**Debug Problems in Microservices**](/en/scenarios/debug_problems/) ãåç
§ããŠãã ããã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/1-view-logs.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/1-view-logs.md
new file mode 100644
index 0000000000..03904e6319
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/1-view-logs.md
@@ -0,0 +1,21 @@
+---
+title: ãã°ã®è¡šç€º
+linkTitle: 1. ãã°ã®è¡šç€º
+weight: 2
+---
+
+ãã°ã確èªããã«ã¯ãå·ŠåŽã®ã¡ãã¥ãŒãã  **Log Observer** ãã¯ãªãã¯ããŸããLog Observer ã«å
¥ã£ããããã£ã«ã¿ãŒããŒã® **Index** ã **splunk4rookies-workshop** ã«èšå®ãããŠããããšã確èªããŠãã ããã**(1)**
+
+次ã«ã**Add Filter** ãã¯ãªãã¯ãã*Fields* **(2)** ãªãã·ã§ã³ã䜿ã£ãŠãã£ãŒã«ã `deployment.environment` **(3)** ãæ€çŽ¢ããŸããç¶ããŠãããããããŠã³ãªã¹ãããèªåã®ã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ãéžæã **(4)**ã`=`ïŒå«ããïŒãã¯ãªãã¯ããŸããããã§ãPetClinic ã¢ããªã±ãŒã·ã§ã³ããã®ãã°ã¡ãã»ãŒãžã®ã¿ã衚瀺ãããããã«ãªããŸãã
+
+
+
+次ã«ããã£ãŒã«ã `service.name` ãæ€çŽ¢ããå€ `customers-service` ãéžæã㊠`=`ïŒå«ããïŒãã¯ãªãã¯ããŸããããããã£ã«ã¿ãŒããŒã«è¡šç€ºãããã¯ãã§ã **(1)**ãç¶ã㊠**Run Search** ãã¿ã³ **(2)** ãã¯ãªãã¯ããŸãã
+
+
+
+ããã«ãããã°ãšã³ããªãæŽæ°ããã`customers-service` ã®ã¿ã®ãšã³ããªã«çµã蟌ãŸããŠè¡šç€ºãããŸãã
+
+
+
+*"Saving pet"* ã§å§ãŸããšã³ããªãã¯ãªãã¯ããŸã **(1)**ããµã€ããã€ã³ãéããé¢é£ãããã¬ãŒã¹ ID ããã³ã¹ãã³ ID ãå«ã詳现æ
å ±ã確èªã§ããŸã **(2)**ã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/2-related-content.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/2-related-content.md
new file mode 100644
index 0000000000..52d99d2a4a
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/2-related-content.md
@@ -0,0 +1,15 @@
+---
+title: Related Content
+linkTitle: 2. Related Content
+weight: 3
+---
+
+äžéšã®ãã€ã³ã«ã¯ãé¢é£ããã³ã³ãã³ãã衚瀺ãããŸããæ¬¡ã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯ãAPM ããã®ãã°è¡ã«é¢é£ãããã¬ãŒã¹ãæ€åºããŠããããšã確èªã§ããŸã **(1)**ã
+
+
+
+**Trace for 960432ac9f16b98be84618778905af50** ã **(2)** ã¯ãªãã¯ãããšããã®ãã°è¡ãçæãããç¹å®ã®ãã¬ãŒã¹ã® APM å
ã®ãŠã©ãŒã¿ãŒãã©ãŒã«ç»é¢ã«ç§»åããŸãã
+
+
+
+ããã§ãLogs çšã® **Related Content** ãã€ã³ã衚瀺ãããŠãã **(1)** ããšã«æ³šç®ããŠãã ããããããã¯ãªãã¯ãããš Log Observer ã«æ»ãããã®ãã¬ãŒã¹ã«å«ãŸãããã¹ãŠã®ãã°è¡ã衚瀺ãããŸãã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/_index.md
new file mode 100644
index 0000000000..5b59805b07
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/_index.md
@@ -0,0 +1,17 @@
+---
+title: Log Observer
+linkTitle: 7. Log Observer
+weight: 8
+archetype: chapter
+time: 10 minutes
+---
+
+ãããŸã§ã®å·¥çšã§ã¯**ã³ãŒãã®å€æŽã¯äžåè¡ã£ãŠããŸãã**ãããã¬ãŒã¹ããããã¡ã€ãªã³ã°ãDatabase Query Performance ã®ããŒã¿ã Splunk Observability Cloud ã«éä¿¡ãããŠããŸãã
+
+次㯠**Splunk Log Observer** ã䜿ã£ãŠãSpring PetClinic ã¢ããªã±ãŒã·ã§ã³ãããã°ããŒã¿ãååŸããŸãã
+
+**Splunk OpenTelemetry Collector** 㯠Spring PetClinic ã¢ããªã±ãŒã·ã§ã³ãããã°ãèªåçã«åéããOTLP exporter ã䜿ã£ãŠ Splunk Observability Cloud ã«éä¿¡ããŸãããã®éããã°ã€ãã³ãã«ã¯ `trace_id`ã`span_id`ããã¬ãŒã¹ãã©ã°ãä»äžãããŸãã
+
+ãã㊠**Splunk Log Observer** ã䜿ã£ãŠãã°ã衚瀺ãããã°æ
å ±ããµãŒãã¹ããã¬ãŒã¹ãšèªåçã«çžé¢ä»ãããŸãã
+
+ãã®æ©èœã¯ [**Related Content**](https://help.splunk.com/en/splunk-observability-cloud/data-tools/related-content) ãšåŒã°ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/1-rum-tour.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/1-rum-tour.md
new file mode 100644
index 0000000000..390a42d039
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/1-rum-tour.md
@@ -0,0 +1,22 @@
+---
+title: Petclinic ã¢ããªã® RUM ãã¥ãŒãéžæãã
+linkTitle: 1. RUM ããŒã¿ã確èªãã
+weight: 1
+---
+
+ãŸã㯠RUM ã®æŠèŠããã£ãšèŠãŠãããŸããããå·ŠåŽã®ã¡ãã¥ãŒãã **RUM** ãã¯ãªãã¯ããŠãã ãããæ¬¡ã« **Environment** ãã£ã«ã¿ãŒ **(1)** ããããããããŠã³ããã¯ã¹ããã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã®ååã«å€æŽãã**`-workshop`** **(1)** ãéžæããŸãïŒ**`INSTANCE`** ã¯å
ã»ã©å®è¡ããã·ã§ã«ã¹ã¯ãªããã®å€ã§ãïŒãããã ããéžæãããŠããç¶æ
ã«ããŠãã ããã
+
+ç¶ããŠã**App** **(2)** ããããããŠã³ããã¯ã¹ãã¢ããªã®ååïŒ**`-store`**ïŒã«å€æŽããŸãã
+
+
+
+**Environment** ãš **App** ãéžæãããšãã¢ããªã±ãŒã·ã§ã³ã® RUM ã¹ããŒã¿ã¹ãç€ºãæŠèŠããŒãžã衚瀺ãããŸããïŒSummary Dashboard ãæ°å€ã® 1 è¡ã ãã«ãªã£ãŠããå Žåã¯ãçž®å°è¡šç€ºã®ç¶æ
ã§ããã¢ããªã±ãŒã·ã§ã³åã®åã«ãã **> (1)** ãã¯ãªãã¯ããŠå±éã§ããŸããïŒJavaScript ãšã©ãŒãçºçããŠããå Žåã¯ã以äžã®ããã«è¡šç€ºãããŸãã
+
+
+
+ç¶ããã«ã¯ãéããªã³ã¯ïŒã¯ãŒã¯ã·ã§ããåã衚瀺ãããŠãããã®ïŒãã¯ãªãã¯ããŠè©³çްããŒãžã«ç§»åããŸãããããšãUX MetricsãFront-end HealthãBack-end HealthãCustom Events ããšã«ã€ã³ã¿ã©ã¯ã·ã§ã³ãåè§£ããéå»ã®ã¡ããªã¯ã¹ïŒããã©ã«ãã§ã¯ 1 æéïŒãšæ¯èŒããæ°ããããã·ã¥ããŒããã¥ãŒã衚瀺ãããŸãã
+
+
+éåžžãæåã®ãã£ãŒãã«ã¯ 1 æ¬ã®ç·ã ãã衚瀺ãããŸããPetclinic ã·ã§ããã«é¢é£ãããªã³ã¯ãã¯ãªãã¯ããŠãã ããããã®äŸã§ã¯ ã§ãã
+
+ããã«ãããTag Spotlight ããŒãžã«ç§»åããŸãã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/2-rum-tour.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/2-rum-tour.md
new file mode 100644
index 0000000000..e998b650d6
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/2-rum-tour.md
@@ -0,0 +1,14 @@
+---
+title: RUMãã¬ãŒã¹ã®ãŠã©ãŒã¿ãŒãã©ãŒã«ãã¥ãŒãšAPMãžã®ãªã³ã¯
+linkTitle: 2. RUMãã¬ãŒã¹ããã©ã
+weight: 2
+---
+TAG Spotlightãã¥ãŒã§ã¯ãRUMããŒã¿ã«é¢é£ä»ãããããã¹ãŠã®ã¿ã°ã衚瀺ãããŸããã¿ã°ã¯ãããŒã¿ãèå¥ããããã«äœ¿çšãããããŒãšå€ã®ãã¢ã§ããä»åã®å Žåãã¿ã°ã¯OpenTelemetryã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã«ãã£ãŠèªåçã«çæãããŠããŸããã¿ã°ã¯ãããŒã¿ããã£ã«ã¿ãªã³ã°ãããããã£ãŒããããŒãã«ãäœæããããã«äœ¿çšãããŸããTag Spotlightãã¥ãŒã§ã¯ãæåã®ãã¬ã³ããæ€åºãããŠãŒã¶ãŒã»ãã·ã§ã³ãããªã«ããŠã³ããŠèª¿æ»ã§ããŸãã
+
+
+
+User Sessions **(1)** ãã¯ãªãã¯ãããšããã®æé垯ã«çºçãããŠãŒã¶ãŒã»ãã·ã§ã³ã®äžèЧã衚瀺ãããŸãã
+
+ãã®ãã¡ã®1ã€ã確èªãããã®ã§ã*Duration* **(2)** ãã¯ãªãã¯ããŠæèŠæéã§ãœãŒãããæèŠæéãé·ãã»ãã·ã§ã³ã®ããããã®ãªã³ã¯ **(3)** ãã¯ãªãã¯ããŠãã ããã
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/3-rum-tour.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/3-rum-tour.md
new file mode 100644
index 0000000000..91228941ef
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/3-rum-tour.md
@@ -0,0 +1,19 @@
+---
+title: RUMãã¬ãŒã¹ãŠã©ãŒã¿ãŒãã©ãŒã«ãã¥ãŒãšAPMãžã®ãªã³ã¯
+linkTitle: 3. RUMãŠã©ãŒã¿ãŒãã©ãŒã«
+weight: 3
+---
+
+ããã§ã¯RUMãã¬ãŒã¹ãŠã©ãŒã¿ãŒãã©ãŒã«ãèŠãŠããŸããããã«ããããŠãŒã¶ãŒãpetclinicã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã蚪åããéã«ããŠãŒã¶ãŒã®ããã€ã¹äžã§ã»ãã·ã§ã³äžã«äœãèµ·ãã£ããã確èªã§ããŸãã
+
+ãŠã©ãŒã¿ãŒãã©ãŒã«ãäžã«ã¹ã¯ããŒã«ããŠå³åŽã® **#!/owners/details** ã»ã°ã¡ã³ã **(1)** ãã¯ãªãã¯ãããšãVetsãªã¯ãšã¹ãã®åŠçäžã«çºçããã¢ã¯ã·ã§ã³ã®ãªã¹ãã衚瀺ãããŸããHTTPãªã¯ãšã¹ãã«ã¯ããªã¿ãŒã³ã³ãŒãã®åã«éè²ã® **APM** ãªã³ã¯ã衚瀺ãããŠããããšã«æ³šç®ããŠãã ããããããã1ã€ãéžã³ãAPMãªã³ã¯ãã¯ãªãã¯ããŸããããã«ãããKubernetesäžã§ãã¹ããããŠãããã®ããã¯ãšã³ããµãŒãã¹åŒã³åºãã®APMæ
å ±ã衚瀺ãããŸãã
+
+
+
+ãªã¯ãšã¹ãã§äœãèµ·ãã£ãããããªã«ããŠã³ããŠç¢ºèªãããå Žåã¯ãTrace IDã®URLãã¯ãªãã¯ããŠãã ããã
+
+ããã«ãããRUMããã®ãªã¯ãšã¹ãã«é¢é£ãããã¬ãŒã¹ã衚瀺ãããŸã:
+
+
+
+ãµãŒãã¹ãžã®ãšã³ããªãã€ã³ãã« **RUM (1)** é¢é£ã®ã³ã³ãã³ããªã³ã¯ã远å ãããããã¯ãšã³ããµãŒãã¹ã§äœãèµ·ãã£ãããæ€èšŒããåŸã«RUMã»ãã·ã§ã³ãžæ»ããããã«ãªã£ãŠããããšãããããŸãã
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/_index.md
new file mode 100644
index 0000000000..7b964c115a
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/8-rum/_index.md
@@ -0,0 +1,53 @@
+---
+title: Real User Monitoring
+linkTitle: 8. Real User Monitoring
+weight: 9
+time: 10 minutes
+archetype: chapter
+---
+
+ã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿã㊠Real User Monitoring (RUM) ã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ãæå¹åããã«ã¯ãOpen Telemetry Javascript ã® [**https://github.com/signalfx/splunk-otel-js-web**](https://github.com/signalfx/splunk-otel-js-web) ã¹ãããããã³ãŒãããŒã¹ã«è¿œå ããå¿
èŠããããŸãã
+
+Spring PetClinic ã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ãã¥ãŒã§åå©çšãããåäžã® [**index**](https://github.com/spring-petclinic/spring-petclinic-microservices/blob/main/spring-petclinic-api-gateway/src/main/resources/static/index.html) HTML ããŒãžã䜿çšããŠããŸãããã®ããŒãžã¯ããã¹ãŠã®ããŒãžã§èªåçã«èªã¿èŸŒãŸãããããSplunk RUM ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã©ã€ãã©ãªãæ¿å
¥ããã®ã«æé©ãªå Žæã§ãã
+
+`api-gateway` ãµãŒãã¹ã§ã¯ãã§ã«ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ãåäœããŠãããRUM ãã¬ãŒã¹ã Splunk Observability Cloud ã«éä¿¡ããŠããŸããæ¬¡ã®ã»ã¯ã·ã§ã³ã§ãã®ããŒã¿ã確èªããŸãã
+
+ã¹ããããã確èªãããå Žåã¯ããã©ãŠã¶ã§ããŒãžãå³ã¯ãªãã¯ãã**View Page Source** ãéžæããŠããŒãžãœãŒã¹ã衚瀺ã§ããŸãã
+
+``` html
+
+
+
+
+
+```
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/9-wrap-up/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/9-wrap-up/_index.md
new file mode 100644
index 0000000000..d6927c6599
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/9-wrap-up/_index.md
@@ -0,0 +1,17 @@
+---
+title: ã¯ãŒã¯ã·ã§ããã®ãŸãšã ð
+linkTitle: 9. ã¯ãŒã¯ã·ã§ããã®ãŸãšã
+weight: 9
+archetype: chapter
+description: ããã§ãšãããããŸããGet the Most Out of Your Existing Kubernetes Java Applications Using Automatic Discovery and Configuration With OpenTelemetry ãå®äºããŸãããæ¬æ¥ã¯ãKubernetes äžã®æ¢åã® Java ã¢ããªã±ãŒã·ã§ã³ã« TracingãCode ProfilingãDatabase Query Performance ã远å ããŠãã¢ããªã±ãŒã·ã§ã³ãšã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãªãã¶ãŒãããªãã£ãå³åº§ã«åäžãããæ¹æ³ãããã«ç°¡åããåŠã³ãŸããã
+---
+
+ããã§ãšãããããŸãã**Get the Most Out of Your Existing Kubernetes Java Applications Using Automatic Discovery and Configuration With OpenTelemetry** ã¯ãŒã¯ã·ã§ãããå®äºããŸããã
+
+æ¬æ¥ã¯ãKubernetes äžã®æ¢åã® Java ã¢ããªã±ãŒã·ã§ã³ã« TracingãCode ProfilingãDatabase Query Performance ã远å ããããšãããã«ç°¡åããåŠã³ãŸããã
+
+**Automatic Discovery and Configuration** ã䜿çšããããšã§ãã³ãŒããèšå®ãäžè¡ã倿Žããããšãªããã¢ããªã±ãŒã·ã§ã³ãšã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãªãã¶ãŒãããªãã£ãå³åº§ã«åäžãããããšãã§ããŸããã
+
+ãŸããã·ã³ãã«ãªèšå®å€æŽã ãã§ããšã³ãããŒãšã³ãã®ãªãã¶ãŒãããªãã£ãå®çŸããããã«ãã¢ããªã±ãŒã·ã§ã³ã«ããã«å€ãã®ãªãã¶ãŒãããªãã£ïŒ**logging** ãš **RUM**ïŒã远å ã§ããããšãåŠã³ãŸããã
+
+
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/_index.md
new file mode 100644
index 0000000000..b69c7a1b50
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/2-petclinic-kubernetes/_index.md
@@ -0,0 +1,32 @@
+---
+title: Spring PetClinic SpringBoot Based Microservices On Kubernetes
+linkTitle: PetClinic Kubernetes Workshop
+weight: 2
+archetype: chapter
+authors: ["Pieter Hagen"]
+description: Kubernetes äžã§çšŒåãã Java ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠãèªåæ€åºãšèªåèšå®ãæå¹åããæ¹æ³ãåŠã³ãŸãããšã³ãããŒãšã³ãã®å¯èŠæ§ã«ããã¢ããªã±ãŒã·ã§ã³ã®åäœãæå€§éã«ææ¡ã§ããããªã¢ã«ã¿ã€ã ç£èŠãäœéšããŠãã ããã
+time: 90 minutes
+---
+
+ãã®ã¯ãŒã¯ã·ã§ããã®ç®çã¯ãJava åãã® Splunk ã® **automatic discovery and configuration**ïŒèªåæ€åºãšèªåèšå®ïŒã®æ©èœã玹ä»ããããšã§ãã
+
+ã¯ãŒã¯ã·ã§ããã®ã·ããªãªã¯ãã·ã³ãã«ãªïŒ**èšè£
ãããŠããªã**ïŒJava ãã€ã¯ããµãŒãã¹ã¢ããªã±ãŒã·ã§ã³ã Kubernetes ã«ã€ã³ã¹ããŒã«ããŠæ§ç¯ããŸãã
+
+æ¢åã® Java ããŒã¹ã®ãããã€ã¡ã³ãã«å¯ŸããŠèªåæ€åºæ©èœä»ãã® Splunk OpenTelemetry Collector ãã€ã³ã¹ããŒã«ããã·ã³ãã«ãªæé ã«åŸãããšã§ãã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ã **Splunk Observability Cloud** ãžéä¿¡ããããšãããã«ç°¡åã§ãããã確èªããŸãã
+
+> [!SPLUNK]åææ¡ä»¶
+>
+> * ããŒã **2222** ãžã®ã¢ãŠãããŠã³ã SSH ã¢ã¯ã»ã¹ã
+> * ããŒã **81** ãžã®ã¢ãŠãããŠã³ã HTTP ã¢ã¯ã»ã¹ã
+> * Linux ã³ãã³ãã©ã€ã³ã®åºæ¬çãªç¥èã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã以äžã®ã³ã³ããŒãã³ããåãäžããŸãã
+
+* Splunk Infrastructure Monitoring (**IM**)
+* Splunk automatic discovery and configuration for Java (**APM**)
+ * Database Query Performance
+ * AlwaysOn Profiling
+* Splunk Log Observer (**LO**)
+* Splunk Real User Monitoring (**RUM**)
+
+_Splunk Synthetics ã¯ä»åå°ãèåž³ã®å€ã§ãããä»ã®ã¯ãŒã¯ã·ã§ããã§ã«ããŒããŠããŸã_ {{% icon icon="heart" %}}
diff --git a/content/ja/ninja-workshops/foundations/1-automatic-discovery/_index.md b/content/ja/ninja-workshops/foundations/1-automatic-discovery/_index.md
new file mode 100644
index 0000000000..fd3957ac97
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/1-automatic-discovery/_index.md
@@ -0,0 +1,9 @@
+---
+title: Automatic Discovery ã¯ãŒã¯ã·ã§ãã
+description: ãŒãã³ãŒãã§ã® Java ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã®å®äŸ â ã¢ããªã¹ããã³ Kubernetes ç°å¢ã«ããããµãŒãã¹ã®èªåæ€åºãšãã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ã®éä¿¡ãäœéšããŸãã
+weight: 1
+time: 60 minutes
+aliases:
+ - /ninja-workshops/1-automatic-discovery/
+layout: "hero"
+---
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/1-installation/1-confirmation.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/1-installation/1-confirmation.md
new file mode 100644
index 0000000000..95e6549d21
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/1-installation/1-confirmation.md
@@ -0,0 +1,310 @@
+---
+title: Installing OpenTelemetry Collector Contrib
+linkTitle: 1.1 Confirm Installation
+weight: 1
+---
+
+## Collector ãåäœããŠããããšã確èªãã
+
+Collector ã¯çŸåšåäœããŠããã¯ãã§ãã`systemctl` ã³ãã³ãã䜿ã£ãŠ root æš©éã§ç¢ºèªããŸããã¹ããŒã¿ã¹è¡šç€ºãçµäºããã«ã¯ `q` ãæŒãã ãã§ãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+sudo systemctl status otelcol-contrib
+```
+
+{{% /tab %}}
+{{% tab title="Status Output" %}}
+
+``` text
+â otelcol-contrib.service - OpenTelemetry Collector Contrib
+ Loaded: loaded (/lib/systemd/system/otelcol-contrib.service; enabled; vendor preset: enabled)
+ Active: active (running) since Mon 2024-10-07 10:27:49 BST; 52s ago
+ Main PID: 17113 (otelcol-contrib)
+ Tasks: 13 (limit: 19238)
+ Memory: 34.8M
+ CPU: 155ms
+ CGroup: /system.slice/otelcol-contrib.service
+ ââ17113 /usr/bin/otelcol-contrib --config=/etc/otelcol-contrib/config.yaml
+
+Oct 07 10:28:36 petclinic-rum-testing otelcol-contrib[17113]: Descriptor:
+Oct 07 10:28:36 petclinic-rum-testing otelcol-contrib[17113]: -> Name: up
+Oct 07 10:28:36 petclinic-rum-testing otelcol-contrib[17113]: -> Description: The scraping was successful
+Oct 07 10:28:36 petclinic-rum-testing otelcol-contrib[17113]: -> Unit:
+Oct 07 10:28:36 petclinic-rum-testing otelcol-contrib[17113]: -> DataType: Gauge
+Oct 07 10:28:36 petclinic-rum-testing otelcol-contrib[17113]: NumberDataPoints #0
+Oct 07 10:28:36 petclinic-rum-testing otelcol-contrib[17113]: StartTimestamp: 1970-01-01 00:00:00 +0000 UTC
+Oct 07 10:28:36 petclinic-rum-testing otelcol-contrib[17113]: Timestamp: 2024-10-07 09:28:36.942 +0000 UTC
+Oct 07 10:28:36 petclinic-rum-testing otelcol-contrib[17113]: Value: 1.000000
+Oct 07 10:28:36 petclinic-rum-testing otelcol-contrib[17113]: {"kind": "exporter", "data_type": "metrics", "name": "debug"}
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ããããè€æ°ã®èšå®ãã¡ã€ã«ã®å€æŽãç°å¢å€æ°ã®èšå®ãCollector ã®åèµ·åãè¡ããããCollector ãµãŒãã¹ã忢ããèµ·åæã«èªåèµ·åããªãããã«ç¡å¹åããŸãã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+``` bash
+sudo systemctl stop otelcol-contrib && sudo systemctl disable otelcol-contrib
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+---
+
+{{% expand title="{{% badge style=primary icon=user-ninja %}}**Ninja:** Open Telemetry Collector Builder (ocb) ã䜿ã£ãŠç¬èªã® Collector ããã«ããã{{% /badge %}}" %}}
+ãã®ããŒãã§ã¯ãã·ã¹ãã ã«ä»¥äžã®ãã®ãã€ã³ã¹ããŒã«ãããŠããå¿
èŠããããŸãã
+
+- Golang (ææ°ããŒãžã§ã³)
+
+ ``` bash
+ cd /tmp
+ wget https://golang.org/dl/go1.20.linux-amd64.tar.gz
+ sudo tar -C /usr/local -xzf go1.20.linux-amd64.tar.gz
+ ```
+
+ `.profile` ãç·šéãã以äžã®ç°å¢å€æ°ã远å ããŸãã
+
+ ``` bash
+ export GOROOT=/usr/local/go
+ export GOPATH=$HOME/go
+ export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
+ ```
+
+ ã·ã§ã«ã»ãã·ã§ã³ãæŽæ°ããŸãã
+
+ ``` bash
+ source ~/.profile
+ ```
+
+ Go ã®ããŒãžã§ã³ã確èªããŸãã
+
+ ``` bash
+ go version
+ ```
+
+- ocb ã®ã€ã³ã¹ããŒã«
+ - [project releases](https://github.com/open-telemetry/opentelemetry-collector/releases/tag/cmd%2Fbuilder%2Fv0.80.0) ãã ocb ãã€ããªãããŠã³ããŒããã以äžã®ã³ãã³ããå®è¡ããŸãã
+
+ ```bash
+ mv ocb_0.80.0_darwin_arm64 /usr/bin/ocb
+ chmod 755 /usr/bin/ocb
+ ```
+
+ å¥ã®ã¢ãããŒããšããŠãgolang ã®ããŒã«ãã§ã€ã³ã䜿ã£ãŠãã€ããªãããŒã«ã«ã§ãã«ãããæ¹æ³ããããŸãã
+
+ ```bash
+ go install go.opentelemetry.io/collector/cmd/builder@v0.80.0
+ mv $(go env GOPATH)/bin/builder /usr/bin/ocb
+ ```
+
+- (ãªãã·ã§ã³) Docker
+
+## ãªãç¬èªã® Collector ããã«ãããã®ã?
+
+Collector ã®ããã©ã«ãã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ (core ããã³ contrib) ã¯ãæäŸãããŠããå
容ãå€ãããããå°ãªããããã®ããããã«ãªããã¡ã§ãã
+
+ãŸããcontrib Collector ã¯ããããã€ã§å¿
èŠãšããªãå¯èœæ§ãé«ãã³ã³ããŒãã³ãã倿°ã€ã³ã¹ããŒã«ãããŠãããããæ¬çªç°å¢ã§ã®å®è¡ã¯æšå¥šãããŸããã
+
+## ç¬èªã® Collector ããã«ãããã¡ãªãã
+
+ç¬èªã® Collector ãã€ã㪠(äžè¬çã«ãã£ã¹ããªãã¥ãŒã·ã§ã³ãšåŒã°ããŸã) ãäœæããããšã¯ãå¿
èŠãªãã®ã ãããã«ãããããšãæå³ããŸãã
+
+ã¡ãªããã¯ä»¥äžã®ãšããã§ãã
+
+1. ãã€ããªãµã€ãºãå°ãããªã
+2. æ¢åã® Go ã®è匱æ§ã¹ãã£ããŒã䜿çšã§ãã
+3. çµç¹ãšé£æºã§ããå
éšã³ã³ããŒãã³ããå«ããããšãã§ãã
+
+## ç¬èªã® Collector ããã«ãããéã®èæ
®äºé
+
+ããŠã𥷠Ninja ãŸãŒã³ãšåŒã°ããããã«ã¯ãããã€ãã®æ¬ ç¹ããããŸãã
+
+1. Go ã®çµéšã¯å¿
é ã§ã¯ãªããæšå¥šããã
+1. Splunk ã®ãµããŒãã¯**ãããŸãã**
+1. é
åžãšã©ã€ããµã€ã¯ã«ç®¡çã®è²¬ä»»ãçãã
+
+ãããžã§ã¯ãã¯å®å®åã«åããŠåãçµãã§ããŸããã倿Žã«ãã£ãŠã¯ãŒã¯ãããŒãå£ããªããšããä¿èšŒã¯ãªãããšã«æ³šæããŠãã ãããSplunk ã®ããŒã ã¯ãããæåããµããŒããšé«ãå®å®æ§ãæäŸããŠããããããã€ã®ããŒãºã«å¿ããŠãã¥ã¬ãŒã·ã§ã³ããããšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸãã
+
+## The Ninja Zone
+
+éå§ããããã«å¿
èŠãªããŒã«ããã¹ãŠã€ã³ã¹ããŒã«ããããã`otelcol-builder.yaml` ãšããååã®æ°ãããã¡ã€ã«ãäœæãã以äžã®ãã£ã¬ã¯ããªæ§é ã«åŸãå¿
èŠããããŸãã
+
+``` bash
+.
+âââ otelcol-builder.yaml
+```
+
+ãã¡ã€ã«ãäœæãããã远å ã®ã¡ã¿ããŒã¿ãšãšãã«ã€ã³ã¹ããŒã«ããã³ã³ããŒãã³ãã®ãªã¹ãã远å ããå¿
èŠããããŸãã
+
+ãã®äŸã§ã¯ãintroduction ã®èšå®ã§å¿
èŠãªã³ã³ããŒãã³ãã®ã¿ãã€ã³ã¹ããŒã«ãããã«ããŒãããã§ã¹ããäœæããŸãã
+
+```yaml
+dist:
+ name: otelcol-ninja
+ description: A custom build of the Open Telemetry Collector
+ output_path: ./dist
+
+extensions:
+- gomod: go.opentelemetry.io/collector/extension/ballastextension v0.80.0
+- gomod: go.opentelemetry.io/collector/extension/zpagesextension v0.80.0
+- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.80.0
+- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.80.0
+
+exporters:
+- gomod: go.opentelemetry.io/collector/exporter/loggingexporter v0.80.0
+- gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.80.0
+- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.80.0
+- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/signalfxexporter v0.80.0
+
+processors:
+- gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.80.0
+- gomod: go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.80.0
+
+receivers:
+- gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.80.0
+- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.80.0
+- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.80.0
+- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.80.0
+- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.80.0
+```
+
+_ocb_ çšã® yaml ãã¡ã€ã«ãæŽæ°ãããã以äžã®ã³ãã³ããå®è¡ããŸãã
+
+```shell
+ocb --config=otelcol-builder.yaml
+```
+
+å®è¡ãããšã以äžã®ãã£ã¬ã¯ããªæ§é ã«ãªããŸãã
+
+``` text
+âââ dist
+â âââ components.go
+â âââ components_test.go
+â âââ go.mod
+â âââ go.sum
+â âââ main.go
+â âââ main_others.go
+â âââ main_windows.go
+â âââ otelcol-ninja
+âââ otelcol-builder.yaml
+```
+
+### References
+
+1. [https://opentelemetry.io/docs/collector/custom-collector/](https://opentelemetry.io/docs/collector/custom-collector/)
+
+{{% /expand %}}
+
+---
+
+## ããã©ã«ãã®èšå®
+
+OpenTelemetry 㯠YAML ãã¡ã€ã«ãéããŠèšå®ãããŸãããããã®ãã¡ã€ã«ã«ã¯ããã©ã«ãã®èšå®ããããããŒãºã«åãããŠå€æŽã§ããŸããæäŸãããŠããããã©ã«ãã®èšå®ãèŠãŠã¿ãŸãããã
+
+{{< tabs >}}
+{{% tab title="Command" %}}
+
+```bash
+cat /etc/otelcol-contrib/config.yaml
+```
+
+{{% /tab %}}
+{{% tab title="config.yaml" %}}
+
+```yaml { lineNos="table" wrap="true"}
+# To limit exposure to denial of service attacks, change the host in endpoints below from 0.0.0.0 to a specific network interface.
+# See https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/security-best-practices.md#safeguards-against-denial-of-service-attacks
+
+extensions:
+ health_check:
+ pprof:
+ endpoint: 0.0.0.0:1777
+ zpages:
+ endpoint: 0.0.0.0:55679
+
+receivers:
+ otlp:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:4317
+ http:
+ endpoint: 0.0.0.0:4318
+
+ opencensus:
+ endpoint: 0.0.0.0:55678
+
+ # Collect own metrics
+ prometheus:
+ config:
+ scrape_configs:
+ - job_name: 'otel-collector'
+ scrape_interval: 10s
+ static_configs:
+ - targets: ['0.0.0.0:8888']
+
+ jaeger:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:14250
+ thrift_binary:
+ endpoint: 0.0.0.0:6832
+ thrift_compact:
+ endpoint: 0.0.0.0:6831
+ thrift_http:
+ endpoint: 0.0.0.0:14268
+
+ zipkin:
+ endpoint: 0.0.0.0:9411
+
+processors:
+ batch:
+
+exporters:
+ debug:
+ verbosity: detailed
+
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [otlp, opencensus, prometheus]
+ processors: [batch]
+ exporters: [debug]
+
+ logs:
+ receivers: [otlp]
+ processors: [batch]
+ exporters: [debug]
+
+ extensions: [health_check, pprof, zpages]
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ããã§ãšãããããŸã! OpenTelemetry Collector ã®ããŠã³ããŒããšã€ã³ã¹ããŒã«ã«æåããŸãããOTel Ninja ãžã®éã®ãã¯é 調ã§ãããããããã®åã«ãèšå®ãã¡ã€ã«ãš OpenTelemetry Collector ã®ããŸããŸãªãã£ã¹ããªãã¥ãŒã·ã§ã³ã«ã€ããŠèŠãŠãããŸãããã
+
+{{% notice style="note" %}}
+
+Splunk ã¯ãå®å
šã«ãµããŒããããç¬èªã® OpenTelemetry Collector ãã£ã¹ããªãã¥ãŒã·ã§ã³ãæäŸããŠããŸãããã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã¯ã[**Splunk GitHub Repository**](https://github.com/signalfx/splunk-otel-collector) ããã€ã³ã¹ããŒã«ã§ããã»ããSplunk Observability Cloud ã®ãŠã£ã¶ãŒãã䜿ã£ãŠã·ã³ãã«ãªã€ã³ã¹ããŒã«ã¹ã¯ãªãããã³ããŒ&ããŒã¹ããã圢ã§ãå©çšã§ããŸãããã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã«ã¯ãOpenTelemetry Collector Contrib ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯å©çšã§ããªãå€ãã®è¿œå æ©èœãšæ¡åŒµæ©èœãå«ãŸããŠããŸãã
+
+- Splunk Distribution of the OpenTelemetry Collector ã¯æ¬çªç°å¢ã§ãã¹ãæžã¿ã§ããå€ãã®ã客æ§ãæ¬çªç°å¢ã§äœ¿çšããŠããŸãã
+- åœç€Ÿã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãå©çšããã客æ§ã¯ãSLA ã®ç¯å²å
ã§å
¬åŒã® Splunk ãµããŒãããçŽæ¥æ¯æŽãåããããŸãã
+- ã客æ§ã¯ãã¡ããªã¯ã¹ãšãã¬ãŒã¹åéã«é¢ããã³ã¢èšå®ãšã¯ã¹ããªãšã³ã¹ã«ãããå°æ¥ã®ç Žå£ç倿Žãå¿é
ããããšãªããSplunk Distribution of the OpenTelemetry Collector ã䜿çšãŸãã¯ç§»è¡ã§ããŸã (OpenTelemetry ã®ãã°åéèšå®ã¯ããŒã¿çã§ã)ãCollector ã®ã¡ããªã¯ã¹ã«ã€ããŠã¯ç Žå£ç倿Žãããå¯èœæ§ããããŸãã
+
+{{% /notice %}}
+
+ããããèšå®ãã¡ã€ã«ã®åã»ã¯ã·ã§ã³ãé ã«èŠãŠããããã¹ãã¡ããªã¯ã¹ã Splunk Observability Cloud ã«éä¿¡ããããã«å€æŽããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/1-installation/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/1-installation/_index.md
new file mode 100644
index 0000000000..e95aad38d3
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/1-installation/_index.md
@@ -0,0 +1,41 @@
+---
+title: OpenTelemetry Collector Contrib ã®ã€ã³ã¹ããŒã«
+linkTitle: 1. ã€ã³ã¹ããŒã«
+weight: 1
+---
+
+## OpenTelemetry Collector Contrib ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®ããŠã³ããŒã
+
+OpenTelemetry Collector ãã€ã³ã¹ããŒã«ããæåã®ã¹ãããã¯ãããŠã³ããŒãããããšã§ããæ¬ã©ãã§ã¯ã`wget` ã³ãã³ãã䜿çšã㊠OpenTelemetry ã® GitHub ãªããžããªãã `.deb` ããã±ãŒãžãããŠã³ããŒãããŸãã
+
+ã䜿ãã®ãã©ãããã©ãŒã åãã® `.deb` ããã±ãŒãžã [**OpenTelemetry Collector Contrib releases page**](https://github.com/open-telemetry/opentelemetry-collector-releases/releases) ããååŸããŠãã ããã
+
+``` bash
+wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.111.0/otelcol-contrib_0.111.0_linux_amd64.deb
+```
+
+## OpenTelemetry Collector Contrib ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«
+
+`dpkg` ã䜿çšã㊠`.deb` ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸããã€ã³ã¹ããŒã«ãæåããéã®åºåäŸã«ã€ããŠã¯ãäžèšã® **dpkg Output** ã¿ããã確èªãã ããã
+
+{{< tabs >}}
+{{% tab title="Install" %}}
+
+``` bash
+sudo dpkg -i otelcol-contrib_0.111.0_linux_amd64.deb
+```
+
+{{% /tab %}}
+{{% tab title="dpkg Output" %}}
+
+``` text
+Selecting previously unselected package otelcol-contrib.
+(Reading database ... 89232 files and directories currently installed.)
+Preparing to unpack otelcol-contrib_0.111.0_linux_amd64.deb ...
+Unpacking otelcol-contrib (0.111.0) ...
+Setting up otelcol-contrib (0.111.0) ...
+Created symlink /etc/systemd/system/multi-user.target.wants/otelcol-contrib.service â /lib/systemd/system/otelcol-contrib.service.
+```
+
+{{% /tab %}}
+{{< /tabs >}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/1-health.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/1-health.md
new file mode 100644
index 0000000000..349b38802f
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/1-health.md
@@ -0,0 +1,58 @@
+---
+title: OpenTelemetry Collector Extensions
+linkTitle: 2.1 Health Check
+weight: 1
+---
+
+## Health Check
+
+Extensions ã¯ãã€ã³ã¹ããŒã«æé ã§åç
§ããã®ãšåã `config.yaml` ãã¡ã€ã«å
ã§æ§æããŸãã`config.yaml` ãã¡ã€ã«ãç·šéã㊠Extensions ãæ§æããŸãããããªãã**pprof** ããã³ **zpages** Extension ã¯ããã©ã«ãã® `config.yaml` ãã¡ã€ã«ã§ãã§ã«æ§æãããŠããŸãããã®ã¯ãŒã¯ã·ã§ããã§ã¯ãCollector ã®ãã«ã¹ç¶æ
ã«ã¢ã¯ã»ã¹ã§ããããŒãããã¹ãŠã®ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ã§å
¬éããããã**health_check** Extension ã®ã¿ãæŽæ°ããŸãã
+
+{{% tab title="Command" %}}
+
+``` bash
+sudo vi /etc/otelcol-contrib/config.yaml
+```
+
+{{% /tab %}}
+
+{{% tab title="Extensions Configuration" %}}
+
+```yaml {hl_lines="3"}
+extensions:
+ health_check:
+ endpoint: 0.0.0.0:13133
+```
+
+{{% /tab %}}
+
+Collector ãèµ·åããŸã:
+
+{{% tab title="Command" %}}
+
+``` bash
+otelcol-contrib --config=file:/etc/otelcol-contrib/config.yaml
+```
+
+{{% /tab %}}
+
+ãã® Extension ã¯ãOpenTelemetry Collector ã®ã¹ããŒã¿ã¹ããã§ãã¯ããããã«ãããŒãã§ãã HTTP URL ãæå¹åããŸãããã® Extension ã¯ãKubernetes ã® liveness ãããŒãã readiness ãããŒããšããŠã䜿çšã§ããŸãã`curl` ã³ãã³ãã®è©³çްã«ã€ããŠã¯ã[curl man page](https://curl.se/docs/manpage.html) ãåç
§ããŠãã ããã
+
+æ°ããã¿ãŒããã«ã»ãã·ã§ã³ãéããŠã€ã³ã¹ã¿ã³ã¹ã« SSH æ¥ç¶ããæ¬¡ã®ã³ãã³ããå®è¡ããŸã:
+
+{{< tabs >}}
+{{% tab title="curl Command" %}}
+
+```bash
+curl http://localhost:13133
+```
+
+{{% /tab %}}
+{{% tab title="curl Output" %}}
+
+``` text
+{"status":"Server available","upSince":"2024-10-07T11:00:08.004685295+01:00","uptime":"12.56420005s"}
+```
+
+{{% /tab %}}
+{{< /tabs >}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/2-performance.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/2-performance.md
new file mode 100644
index 0000000000..9e104197f8
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/2-performance.md
@@ -0,0 +1,9 @@
+---
+title: OpenTelemetry Collector Extensions
+linkTitle: 2.2 Performance Profiler
+weight: 2
+---
+
+## Performance Profiler
+
+[**Performance Profiler**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/extension/pprofextension/README.md) extension ã¯ãgolang net/http/pprof ãšã³ããã€ã³ããæå¹ã«ããŸããããã¯éåžžãéçºè
ãããã©ãŒãã³ã¹ãããã¡ã€ã«ãåéãããµãŒãã¹ã®åé¡ã調æ»ããããã«äœ¿çšãããŸãã**ãã®ã¯ãŒã¯ã·ã§ããã§ã¯æ±ããŸãã**ã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/3-zpages.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/3-zpages.md
new file mode 100644
index 0000000000..83c8df6784
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/3-zpages.md
@@ -0,0 +1,363 @@
+---
+title: OpenTelemetry Collector Extensions
+linkTitle: 2.3 zPages
+weight: 3
+---
+
+## zPages
+
+[**zPages**](https://github.com/open-telemetry/opentelemetry-collector/blob/main/extension/zpagesextension/README.md) ã¯ãå€éš exporter ã®ä»£æ¿ãšãªãã€ã³ããã»ã¹ã®ä»çµã¿ã§ããæå¹åãããšããã¬ãŒã¹ãšã¡ããªã¯ã¹ã®æ
å ±ãããã¯ã°ã©ãŠã³ãã§åéããã³éçŽãããªã¯ãšã¹ãã«å¿ã㊠Web ããŒãžãšããŠæäŸããŸããzPages 㯠Collector ãæ³å®ã©ããã«åäœããŠããããšã確èªããããã§éåžžã«æçšãªèšºææ©èœã§ãã
+
+{{< tabs >}}
+{{% tab title="ServiceZ" %}}
+
+**ServiceZ** 㯠Collector ã®ãµãŒãã¹æŠèŠãæäŸããpipelinezãextensionzãfeaturez ã®å zPages ãžãã°ããã¢ã¯ã»ã¹ã§ããããã«ããŸãããã®ããŒãžã§ã¯ãã«ãæ
å ±ãã©ã³ã¿ã€ã æ
å ±ã確èªã§ããŸãã
+
+URL ã®äŸ: [**http://localhost:55679/debug/servicez**](http://localhost:55679/debug/servicez) ïŒ`localhost` ã¯å®éã®ç°å¢ã«åãããŠå€æŽããŠãã ããïŒã
+
+
+
+{{% /tab %}}
+{{% tab title="PipelineZ" %}}
+
+**PipelineZ** 㯠Collector ã§çšŒåäžã®ãã€ãã©ã€ã³ã«é¢ããæ
å ±ãæäŸããŸããã¿ã€ããããŒã¿ã倿ããããã©ãããåãã€ãã©ã€ã³ã§å©çšãããŠãã receiverãprocessorãexporter ã®æ
å ±ã確èªã§ããŸãã
+
+URL ã®äŸ: [**http://localhost:55679/debug/pipelinez**](http://localhost:55679/debug/pipelinez) ïŒ`localhost` ã¯å®éã®ç°å¢ã«åãããŠå€æŽããŠãã ããïŒã
+
+
+
+{{% /tab %}}
+{{% tab title="ExtensionZ" %}}
+
+**ExtensionZ** 㯠Collector ã§ã¢ã¯ãã£ãã«ãªã£ãŠãã extension ã衚瀺ããŸãã
+
+URL ã®äŸ: [**http://localhost:55679/debug/extensionz**](http://localhost:55679/debug/extensionz) ïŒ`localhost` ã¯å®éã®ç°å¢ã«åãããŠå€æŽããŠãã ããïŒã
+
+
+
+{{% /tab %}}
+{{% /tabs %}}
+
+---
+
+{{% expand title="{{% badge style=primary icon=user-ninja %}}**Ninja:** storage extension ã§ããŒã¿ã®èä¹
æ§ãé«ãã{{% /badge %}}" %}}
+
+ãããè¡ãã«ã¯ãå©çšããŠãããã£ã¹ããªãã¥ãŒã·ã§ã³ã« `file_storage` extension ãã€ã³ã¹ããŒã«ãããŠããããšã確èªããå¿
èŠããããŸãããã㯠`otelcol-contrib components` ã³ãã³ããå®è¡ããããšã§ç¢ºèªã§ããæ¬¡ã®ãããªçµæã衚瀺ãããŸãã
+
+{{< tabs >}}
+{{% tab title="Truncated Output" %}}
+
+```yaml
+# ... truncated for clarity
+extensions:
+ - file_storage
+```
+
+{{% /tab %}}
+{{% tab title="Full Output" %}}
+
+```yaml
+buildinfo:
+ command: otelcol-contrib
+ description: OpenTelemetry Collector Contrib
+ version: 0.80.0
+receivers:
+ - prometheus_simple
+ - apache
+ - influxdb
+ - purefa
+ - purefb
+ - receiver_creator
+ - mongodbatlas
+ - vcenter
+ - snmp
+ - expvar
+ - jmx
+ - kafka
+ - skywalking
+ - udplog
+ - carbon
+ - kafkametrics
+ - memcached
+ - prometheus
+ - windowseventlog
+ - zookeeper
+ - otlp
+ - awsecscontainermetrics
+ - iis
+ - mysql
+ - nsxt
+ - aerospike
+ - elasticsearch
+ - httpcheck
+ - k8sobjects
+ - mongodb
+ - hostmetrics
+ - signalfx
+ - statsd
+ - awsxray
+ - cloudfoundry
+ - collectd
+ - couchdb
+ - kubeletstats
+ - jaeger
+ - journald
+ - riak
+ - splunk_hec
+ - active_directory_ds
+ - awscloudwatch
+ - sqlquery
+ - windowsperfcounters
+ - flinkmetrics
+ - googlecloudpubsub
+ - podman_stats
+ - wavefront
+ - k8s_events
+ - postgresql
+ - rabbitmq
+ - sapm
+ - sqlserver
+ - redis
+ - solace
+ - tcplog
+ - awscontainerinsightreceiver
+ - awsfirehose
+ - bigip
+ - filelog
+ - googlecloudspanner
+ - cloudflare
+ - docker_stats
+ - k8s_cluster
+ - pulsar
+ - zipkin
+ - nginx
+ - opencensus
+ - azureeventhub
+ - datadog
+ - fluentforward
+ - otlpjsonfile
+ - syslog
+processors:
+ - resource
+ - batch
+ - cumulativetodelta
+ - groupbyattrs
+ - groupbytrace
+ - k8sattributes
+ - experimental_metricsgeneration
+ - metricstransform
+ - routing
+ - attributes
+ - datadog
+ - deltatorate
+ - spanmetrics
+ - span
+ - memory_limiter
+ - redaction
+ - resourcedetection
+ - servicegraph
+ - transform
+ - filter
+ - probabilistic_sampler
+ - tail_sampling
+exporters:
+ - otlp
+ - carbon
+ - datadog
+ - f5cloud
+ - kafka
+ - mezmo
+ - skywalking
+ - awsxray
+ - dynatrace
+ - loki
+ - prometheus
+ - logging
+ - azuredataexplorer
+ - azuremonitor
+ - instana
+ - jaeger
+ - loadbalancing
+ - sentry
+ - splunk_hec
+ - tanzuobservability
+ - zipkin
+ - alibabacloud_logservice
+ - clickhouse
+ - file
+ - googlecloud
+ - prometheusremotewrite
+ - awscloudwatchlogs
+ - googlecloudpubsub
+ - jaeger_thrift
+ - logzio
+ - sapm
+ - sumologic
+ - otlphttp
+ - googlemanagedprometheus
+ - opencensus
+ - awskinesis
+ - coralogix
+ - influxdb
+ - logicmonitor
+ - signalfx
+ - tencentcloud_logservice
+ - awsemf
+ - elasticsearch
+ - pulsar
+extensions:
+ - zpages
+ - bearertokenauth
+ - oidc
+ - host_observer
+ - sigv4auth
+ - file_storage
+ - memory_ballast
+ - health_check
+ - oauth2client
+ - awsproxy
+ - http_forwarder
+ - jaegerremotesampling
+ - k8s_observer
+ - pprof
+ - asapclient
+ - basicauth
+ - headers_setter
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ãã® extension ã¯ãexporter ãèšå®æžã¿ã®ãšã³ããã€ã³ããžããŒã¿ãéä¿¡ã§ããªãå Žåã«ããã£ã¹ã¯ãžããŒã¿ããã¥ãŒã€ã³ã°ããæ©èœãæäŸããŸãã
+
+ãã® extension ãæ§æããã«ã¯ã以äžã®æ
å ±ãå«ãããã«èšå®ãæŽæ°ããå¿
èŠããããŸããæåã« /tmp/otel-data ãã£ã¬ã¯ããªãäœæããèªã¿æžãæš©éãä»äžããŠãã ããã
+
+```yaml
+extensions:
+...
+ file_storage:
+ directory: /tmp/otel-data
+ timeout: 10s
+ compaction:
+ directory: /tmp/otel-data
+ on_start: true
+ on_rebound: true
+ rebound_needed_threshold_mib: 5
+ rebound_trigger_threshold_mib: 3
+
+# ... truncated for clarity
+
+service:
+ extensions: [health_check, pprof, zpages, file_storage]
+```
+
+## ãªãããŒã¿ããã£ã¹ã¯ãžãã¥ãŒã€ã³ã°ããã®ã?
+
+ããã«ãã Collector ã¯ãããã¯ãŒã¯äžæïŒããã«ã¯ Collector ã®åèµ·åïŒã«ãèããããããã«ãªããããŒã¿ãäžæµã®ãããã€ããŒã«ç¢ºå®ã«éä¿¡ãããããšãä¿èšŒã§ããŸãã
+
+## ããŒã¿ããã£ã¹ã¯ãžãã¥ãŒã€ã³ã°ããéã®èæ
®äºé
+
+ãã£ã¹ã¯ã®ããã©ãŒãã³ã¹æ¬¡ç¬¬ã§ã¯ãããŒã¿ã®ã¹ã«ãŒãããæ§èœã«åœ±é¿ãåºãå¯èœæ§ããããŸãã
+
+### åèè³æ
+
+1. [https://community.splunk.com/t5/Community-Blog/Data-Persistence-in-the-OpenTelemetry-Collector/ba-p/624583](https://community.splunk.com/t5/Community-Blog/Data-Persistence-in-the-OpenTelemetry-Collector/ba-p/624583)
+2. [https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/storage/filestorage](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/storage/filestorage)
+
+{{% /expand %}}
+
+---
+
+## èšå®ã®ç¢ºèª
+
+extension ã«ã€ããŠäžéã確èªããã®ã§ãèšå®ã®å€æŽå
容ããã§ãã¯ããŸãããã
+
+---
+
+{{% expand title="{{% badge icon=check color=green title=**Check-in** %}}èšå®ã確èªãã{{% /badge %}}" %}}
+{{< tabs >}}
+{{% tab title="config.yaml" %}}
+
+```yaml { lineNos="table" wrap="true" hl_lines="5" }
+# See https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/security-best-practices.md#safeguards-against-denial-of-service-attacks
+
+extensions:
+ health_check:
+ endpoint: 0.0.0.0:13133
+ pprof:
+ endpoint: 0.0.0.0:1777
+ zpages:
+ endpoint: 0.0.0.0:55679
+
+receivers:
+ otlp:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:4317
+ http:
+ endpoint: 0.0.0.0:4318
+
+ opencensus:
+ endpoint: 0.0.0.0:55678
+
+ # Collect own metrics
+ prometheus:
+ config:
+ scrape_configs:
+ - job_name: 'otel-collector'
+ scrape_interval: 10s
+ static_configs:
+ - targets: ['0.0.0.0:8888']
+
+ jaeger:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:14250
+ thrift_binary:
+ endpoint: 0.0.0.0:6832
+ thrift_compact:
+ endpoint: 0.0.0.0:6831
+ thrift_http:
+ endpoint: 0.0.0.0:14268
+
+ zipkin:
+ endpoint: 0.0.0.0:9411
+
+processors:
+ batch:
+
+exporters:
+ debug:
+ verbosity: detailed
+
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [otlp, opencensus, prometheus]
+ processors: [batch]
+ exporters: [debug]
+
+ logs:
+ receivers: [otlp]
+ processors: [batch]
+ exporters: [debug]
+
+ extensions: [health_check, pprof, zpages]
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+{{% /expand %}}
+
+---
+
+extension ã®ç¢ºèªãå®äºããã®ã§ãã¯ãŒã¯ã·ã§ããã®ããŒã¿ãã€ãã©ã€ã³ã®éšåã«é²ã¿ãŸãããããã€ãã©ã€ã³ãšã¯ãCollector ã«ãããããŒã¿ã®çµè·¯ãå®çŸ©ãããã®ã§ãããŒã¿ã®åä¿¡ããå§ãŸãã远å ã®åŠçã倿ãçµãŠãæçµçã« exporter ãä»ã㊠Collector ããåºãŠãããŸã§ãæããŸãã
+
+OpenTelemetry Collector ã®ããŒã¿ãã€ãã©ã€ã³ã¯ã**receiver**ã**processor**ã**exporter** ã§æ§æãããŠããŸãããŸã㯠receiver ããèŠãŠãããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/_index.md
new file mode 100644
index 0000000000..da7e0a1276
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/2-extensions/_index.md
@@ -0,0 +1,37 @@
+---
+title: OpenTelemetry Collector Extensions
+linkTitle: 2. Extensions
+weight: 2
+---
+
+OpenTelemetry Collector ã®ã€ã³ã¹ããŒã«ãå®äºããã®ã§ã次㯠OpenTelemetry Collector ã®æ¡åŒµæ©èœ (Extensions) ã«ã€ããŠèŠãŠãããŸããããExtensions ã¯ãªãã·ã§ã³ã§ãããäž»ã«ãã¬ã¡ããªããŒã¿ã®åŠçã䌎ããªãã¿ã¹ã¯åãã«æäŸãããŸããExtensions ã®äŸãšããŠã¯ããã«ã¹ã¢ãã¿ãªã³ã°ããµãŒãã¹ãã£ã¹ã«ããªãããŒã¿è»¢éãªã©ããããŸãã
+
+{{< mermaid >}}
+%%{
+ init:{
+ "theme": "base",
+ "themeVariables": {
+ "primaryColor": "#ffffff",
+ "clusterBkg": "#eff2fb",
+ "defaultLinkColor": "#333333"
+ }
+ }
+}%%
+
+flowchart LR;
+ style E fill:#e20082,stroke:#333,stroke-width:4px,color:#fff
+ subgraph Collector
+ A[OTLP] --> M(Receivers)
+ B[JAEGER] --> M(Receivers)
+ C[Prometheus] --> M(Receivers)
+ end
+ subgraph Processors
+ M(Receivers) --> H(Filters, Attributes, etc)
+ E(Extensions)
+ end
+ subgraph Exporters
+ H(Filters, Attributes, etc) --> S(OTLP)
+ H(Filters, Attributes, etc) --> T(JAEGER)
+ H(Filters, Attributes, etc) --> U(Prometheus)
+ end
+{{< /mermaid >}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/1-hostmetrics.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/1-hostmetrics.md
new file mode 100644
index 0000000000..1d38fea4f9
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/1-hostmetrics.md
@@ -0,0 +1,44 @@
+---
+title: OpenTelemetry Collector Receivers
+linkTitle: 1. Host Metrics
+weight: 1
+---
+
+## Host Metrics Receiver
+
+[**The Host Metrics Receiver**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/hostmetricsreceiver/README.md) ã¯ãããŸããŸãªãœãŒã¹ããã¹ã¯ã¬ã€ãã³ã°ãããã¹ãã·ã¹ãã ã«é¢ããã¡ããªã¯ã¹ãçæããŸãããã㯠Collector ããšãŒãžã§ã³ããšããŠãããã€ãããéã«äœ¿çšããããšãæ³å®ããŠãããæ¬ã¯ãŒã¯ã·ã§ããã§ããã®æ§æã§é²ããŸãã
+
+`/etc/otel-contrib/config.yaml` ãã¡ã€ã«ãæŽæ°ã㊠**hostmetrics** receiver ãèšå®ããŸãããã**receivers** ã»ã¯ã·ã§ã³ã®äžã«ã次㮠YAML ã 2 ã¹ããŒã¹ã®ã€ã³ãã³ãã«æ³šæããŠæ¿å
¥ããŠãã ããã
+
+``` bash
+sudo vi /etc/otelcol-contrib/config.yaml
+```
+
+{{% tab title="Host Metrics Receiver Configuration" %}}
+
+```yaml {hl_lines="2-22"}
+receivers:
+ hostmetrics:
+ collection_interval: 10s
+ scrapers:
+ # CPU utilization metrics
+ cpu:
+ # Disk I/O metrics
+ disk:
+ # File System utilization metrics
+ filesystem:
+ # Memory utilization metrics
+ memory:
+ # Network interface I/O metrics & TCP connection metrics
+ network:
+ # CPU load metrics
+ load:
+ # Paging/Swap space utilization and I/O metrics
+ paging:
+ # Process count metrics
+ processes:
+ # Per process CPU, Memory and Disk I/O metrics. Disabled by default.
+ # process:
+```
+
+{{% /tab %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/2-prometheus.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/2-prometheus.md
new file mode 100644
index 0000000000..c831bdb32f
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/2-prometheus.md
@@ -0,0 +1,35 @@
+---
+title: OpenTelemetry Collector Receivers
+linkTitle: 2. Prometheus
+weight: 2
+---
+
+## Prometheus Receiver
+
+**prometheus** ãšããå¥ã® receiver ã«ãæ°ã¥ãã¯ãã§ãã[**Prometheus**](https://prometheus.io/docs/introduction/overview/) 㯠OpenTelemetry Collector ã§å©çšãããŠãããªãŒãã³ãœãŒã¹ã®ããŒã«ãããã§ãããã® receiver 㯠OpenTelemetry Collector èªèº«ããã¡ããªã¯ã¹ãã¹ã¯ã¬ã€ãã³ã°ããããã«äœ¿çšãããŸãããããã®ã¡ããªã¯ã¹ã¯ Collector ã®å¥å
šæ§ãç£èŠããããã«å©çšã§ããŸãã
+
+`prometheus` receiver ã Collector èªèº«ããã¡ããªã¯ã¹ãåéããŠããããšãæç¢ºã«ç€ºããã倿ŽããŠã¿ãŸããããreceiver ã®ååã `prometheus` ãã `prometheus/internal` ã«å€æŽããããšã§ããã® receiver ãäœãããŠããã®ããããåããããããªããŸããèšå®ãã¡ã€ã«ã以äžã®ããã«æŽæ°ããŸã:
+
+{{% tab title="Prometheus Receiver Configuration" %}}
+
+```yaml {hl_lines="1"}
+prometheus/internal:
+ config:
+ scrape_configs:
+ - job_name: 'otel-collector'
+ scrape_interval: 10s
+ static_configs:
+ - targets: ['0.0.0.0:8888']
+```
+
+{{% /tab %}}
+
+## ããã·ã¥ããŒãã®äŸ - Prometheus ã¡ããªã¯ã¹
+
+次ã®ã¹ã¯ãªãŒã³ã·ã§ããã¯ãPrometheus internal receiver ã OpenTelemetry Collector ããåéããã¡ããªã¯ã¹ã®ããã€ããããã·ã¥ããŒãã§ç€ºããäŸã§ããããã§ã¯ãåãå
¥ãããããããã³éä¿¡ããã spansãmetricsãlog records ã確èªã§ããŸãã
+
+{{% notice style="note" %}}
+次ã®ã¹ã¯ãªãŒã³ã·ã§ããã¯ãSplunk Observability Cloud ã®ããã«äœ¿ãã (OOTB) ããã·ã¥ããŒãã§ãããSplunk OpenTelemetry Collector ã®ã€ã³ã¹ããŒã«åºç€ãç°¡åã«ç£èŠã§ããŸãã
+{{% /notice %}}
+
+
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/3-other-receivers.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/3-other-receivers.md
new file mode 100644
index 0000000000..e9766c9f53
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/3-other-receivers.md
@@ -0,0 +1,170 @@
+---
+title: OpenTelemetry Collector Receivers
+linkTitle: 3. Other Receivers
+weight: 3
+---
+
+## ãã®ä»ã®Receiver
+
+ããã©ã«ãèšå®ã«ã¯ä»ã«ã **otlp**ã**opencensus**ã**jaeger**ã**zipkin** ãšãã£ãReceiverãå«ãŸããŠããããšã«æ°ä»ãã§ãããããããã¯ä»ã®ãœãŒã¹ãããã¬ã¡ããªããŒã¿ãåä¿¡ããããã«äœ¿ãããŸããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ãããã®Receiverã¯æ±ããªãããããã®ãŸãŸã«ããŠãããŠæ§ããŸããã
+
+---
+
+{{% expand title="{{% badge style=primary icon=user-ninja %}}**Ninja:** Receiverãåçã«äœæãã{{% /badge %}}" %}}
+
+dockerã³ã³ãããkubernetes podãsshã»ãã·ã§ã³ãªã©ã®çåœãªã¿ã¹ã¯ã芳枬ããããã«ã[receiver creator](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/receivercreator) ãš [observer extensions](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer) ã䜿ã£ãŠããããã®ãµãŒãã¹ãèµ·åããéã«æ°ããReceiverãäœæããããšãã§ããŸãã
+
+## å¿
èŠãªãã®
+
+receiver creatorãšé¢é£ããobserver extensionsã䜿ãå§ããã«ã¯ãããããCollectorã®ãã«ããããã§ã¹ãã«å«ããå¿
èŠããããŸãã
+
+詳现㯠[installation](../1-installation/) ãåç
§ããŠãã ããã
+
+## èæ
®ãã¹ãããš
+
+çåœãªã¿ã¹ã¯ã®äžã«ã¯ã_username_ ã _password_ ãªã©ã®è¿œå èšå®ãå¿
èŠã«ãªããã®ããããŸãã
+ãããã®å€ã¯ [environment variables](https://opentelemetry.io/docs/collector/configuration/#configuration-environment-variables) ã§åç
§ãããã`${file:./path/to/database/password}` ã®ãããªscheme expandæ§æã䜿ãããšãã§ããŸãã
+ãã®æ¹æ³ãåãå Žåã¯ãæå±çµç¹ã®ã·ãŒã¯ã¬ãã管çããªã·ãŒã«åŸã£ãŠãã ããã
+
+## The Ninja Zone
+
+ãã®ninja zoneã§å¿
èŠãªã®ã¯2ã€ã ãã§ãã
+
+1. receiver createrãšobserver extensionsãbuilderãããã§ã¹ãã«è¿œå ããŠããããšã確èªããã
+2. æ€åºããããšã³ããã€ã³ããšãããã³ã°ããããã®èšå®ãäœæããã
+
+ãã³ãã¬ãŒãåãããèšå®ãäœæããã«ã¯ã次ã®ããã«ããŸãã
+
+```yaml
+receiver_creator:
+ watch_observers: [host_observer]
+ receivers:
+ redis:
+ rule: type == "port" && port == 6379
+ config:
+ password: ${env:HOST_REDIS_PASSWORD}
+```
+
+ãã®ä»ã®äŸã¯ããã¡ãã® [receiver creator's examples](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/receivercreator#examples) ãåç
§ããŠãã ããã
+
+{{% /expand %}}
+
+---
+
+## èšå®ã®ãã§ãã¯ã€ã³
+
+ãããŸã§ã§Receiverã«ã€ããŠèª¬æããã®ã§ãèšå®ã®å€æŽå
容ã確èªããŠã¿ãŸãããã
+
+---
+
+{{% expand title="{{% badge icon=check color=green title=**Check-in** %}}èšå®ã確èªãã{{% /badge %}}" %}}
+{{< tabs >}}
+{{% tab title="config.yaml" %}}
+
+```yaml {lineNos="table" wrap="true" hl_lines="13-33 45"}
+# To limit exposure to denial of service attacks, change the host in endpoints below from 0.0.0.0 to a specific network interface.
+# See https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/security-best-practices.md#safeguards-against-denial-of-service-attacks
+
+extensions:
+ health_check:
+ endpoint: 0.0.0.0:13133
+ pprof:
+ endpoint: 0.0.0.0:1777
+ zpages:
+ endpoint: 0.0.0.0:55679
+
+receivers:
+ hostmetrics:
+ collection_interval: 10s
+ scrapers:
+ # CPU utilization metrics
+ cpu:
+ # Disk I/O metrics
+ disk:
+ # File System utilization metrics
+ filesystem:
+ # Memory utilization metrics
+ memory:
+ # Network interface I/O metrics & TCP connection metrics
+ network:
+ # CPU load metrics
+ load:
+ # Paging/Swap space utilization and I/O metrics
+ paging:
+ # Process count metrics
+ processes:
+ # Per process CPU, Memory and Disk I/O metrics. Disabled by default.
+ # process:
+ otlp:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:4317
+ http:
+ endpoint: 0.0.0.0:4318
+
+ opencensus:
+ endpoint: 0.0.0.0:55678
+
+ # Collect own metrics
+ prometheus/internal:
+ config:
+ scrape_configs:
+ - job_name: 'otel-collector'
+ scrape_interval: 10s
+ static_configs:
+ - targets: ['0.0.0.0:8888']
+
+ jaeger:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:14250
+ thrift_binary:
+ endpoint: 0.0.0.0:6832
+ thrift_compact:
+ endpoint: 0.0.0.0:6831
+ thrift_http:
+ endpoint: 0.0.0.0:14268
+
+ zipkin:
+ endpoint: 0.0.0.0:9411
+
+processors:
+ batch:
+
+exporters:
+ debug:
+ verbosity: detailed
+
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [otlp, opencensus, prometheus]
+ processors: [batch]
+ exporters: [debug]
+
+ logs:
+ receivers: [otlp]
+ processors: [batch]
+ exporters: [debug]
+
+ extensions: [health_check, pprof, zpages]
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+{{% /expand %}}
+
+---
+
+Receiverã«ãã£ãŠOpenTelemetry Collectorã«ããŒã¿ãå
¥ã£ãŠããä»çµã¿ã確èªããã®ã§ã次ã¯Collectorãåä¿¡ããããŒã¿ãã©ã®ããã«åŠçããããèŠãŠãããŸãããã
+
+{{% notice style="warning" %}}
+`/etc/otelcol-contrib/config.yaml` ã¯ãŸã 宿ããŠããªãããããã®æç¹ã§ã¯Collectorãåèµ·å **ããªãã§ãã ãã**ã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/_index.md
new file mode 100644
index 0000000000..8d75ac99cc
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/3-receivers/_index.md
@@ -0,0 +1,39 @@
+---
+title: OpenTelemetry Collector Receivers
+linkTitle: 3. Receivers
+weight: 3
+---
+
+ã¯ãŒã¯ã·ã§ããã® receiver ããŒããžããããïŒãã㯠OpenTelemetry Collector ã«ãããããŒã¿ãã€ãã©ã€ã³ã®èµ·ç¹ãšãªãéšåã§ãããã£ããèŠãŠãããŸãããã
+
+receiver 㯠push åãŸã㯠pull åã®ããããã§åäœããCollector ã«ããŒã¿ãåã蟌ãä»çµã¿ã§ããreceiver 㯠1 ã€ä»¥äžã®ããŒã¿ãœãŒã¹ããµããŒãã§ããŸããäžè¬çã«ãreceiver ã¯æå®ããããã©ãŒãããã§ããŒã¿ãåãåãããããå
éšãã©ãŒãããã«å€æããããã§ã該åœãããã€ãã©ã€ã³ã«å®çŸ©ããã processor ã exporter ãžåãæž¡ããŸãã
+
+{{< mermaid >}}
+%%{
+ init:{
+ "theme":"base",
+ "themeVariables": {
+ "primaryColor": "#ffffff",
+ "clusterBkg": "#eff2fb",
+ "defaultLinkColor": "#333333"
+ }
+ }
+}%%
+
+flowchart LR;
+ style M fill:#e20082,stroke:#333,stroke-width:4px,color:#fff
+ subgraph Collector
+ A[OTLP] --> M(Receivers)
+ B[JAEGER] --> M(Receivers)
+ C[Prometheus] --> M(Receivers)
+ end
+ subgraph Processors
+ M(Receivers) --> H(Filters, Attributes, etc)
+ E(Extensions)
+ end
+ subgraph Exporters
+ H(Filters, Attributes, etc) --> S(OTLP)
+ H(Filters, Attributes, etc) --> T(JAEGER)
+ H(Filters, Attributes, etc) --> U(Prometheus)
+ end
+{{< /mermaid >}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/1-batch-processor.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/1-batch-processor.md
new file mode 100644
index 0000000000..66f5f0f358
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/1-batch-processor.md
@@ -0,0 +1,15 @@
+---
+title: OpenTelemetry Collector Processors
+linkTitle: 4.1 Batch
+weight: 1
+---
+
+## Batch Processor
+
+ããã©ã«ãã§ã¯ã**batch** ããã»ããµãŒã®ã¿ãæå¹ã«ãªã£ãŠããŸãããã®ããã»ããµãŒã¯ãããŒã¿ããšã¯ã¹ããŒãããåã«ãããåŠçããããã«äœ¿çšãããŸããããã«ããããšã¯ã¹ããŒã¿ãŒãžã®ãããã¯ãŒã¯åŒã³åºãåæ°ãåæžã§ããŸããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ãCollector ã«ããŒãã³ãŒããããŠãã以äžã®ããã©ã«ãå€ãç¶æ¿ããŸãã
+
+- `send_batch_size` (default = 8192): ã¿ã€ã ã¢ãŠãã«é¢ãããããããéä¿¡ããããã¹ãã³ãã¡ããªãã¯ããŒã¿ãã€ã³ãããŸãã¯ãã°ã¬ã³ãŒãã®æ°ã§ããsend_batch_size ã¯ããªã¬ãŒãšããŠæ©èœãããããã®ãµã€ãºã«ã¯åœ±é¿ããŸããããã€ãã©ã€ã³ã®æ¬¡ã®ã³ã³ããŒãã³ãã«éä¿¡ããããããµã€ãºã®äžéã匷å¶ãããå Žåã¯ãsend_batch_max_size ãåç
§ããŠãã ããã
+- `timeout` (default = 200ms): ãµã€ãºã«é¢ãããããããéä¿¡ããããŸã§ã®æéã§ãããŒãã«èšå®ãããšãsend_batch_size ã¯ç¡èŠãããããŒã¿ã¯ send_batch_max_size ã®ã¿ãæ¡ä»¶ãšããŠçŽã¡ã«éä¿¡ãããŸãã
+- `send_batch_max_size` (default = 0): ããããµã€ãºã®äžéã§ãã0 ã¯ããããµã€ãºã«äžéããªãããšãæå³ããŸãããã®ããããã£ã¯ããã倧ããªããããå°ããªåäœã«åå²ãããããšãä¿èšŒããŸããsend_batch_size 以äžã®å€ã§ããå¿
èŠããããŸãã
+
+Batch ããã»ããµãŒã®è©³çްã«ã€ããŠã¯ã[**Batch Processor documentation**](https://github.com/open-telemetry/opentelemetry-collector/blob/main/processor/batchprocessor/README.md) ãåç
§ããŠãã ããã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/2-resource-detection.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/2-resource-detection.md
new file mode 100644
index 0000000000..5bdbf9bd18
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/2-resource-detection.md
@@ -0,0 +1,53 @@
+---
+title: OpenTelemetry Collector Processors
+linkTitle: 4.2 Resource Detection
+weight: 2
+---
+
+## Resource Detection Processor
+
+**resourcedetection** ããã»ããµãŒã¯ããã¹ããããªãœãŒã¹æ
å ±ãæ€åºãããã®æ
å ±ããã¬ã¡ããªãŒããŒã¿ã®ãªãœãŒã¹å€ãšããŠè¿œå ãŸãã¯äžæžãããããã«äœ¿çšã§ããŸãã
+
+ããã©ã«ãã§ã¯ãå¯èœãªå Žå㯠FQDN ããã¹ãåãšããŠèšå®ããããã以å€ã®å Žå㯠OS ãæäŸãããã¹ãåããã©ãŒã«ããã¯ãšããŠäœ¿çšãããŸãããã®åäœã¯ `hostname_sources` èšå®ãªãã·ã§ã³ã䜿çšããŠå€æŽã§ããŸããFQDN ã®ååŸãé¿ã㊠OS ãæäŸãããã¹ãåã䜿çšããããã«ã`hostname_sources` ã `os` ã«èšå®ããŸãã
+
+{{% tab title="System Resource Detection Processor Configuration" %}}
+
+``` yaml {hl_lines="3-7"}
+processors:
+ batch:
+ resourcedetection/system:
+ detectors: [system]
+ system:
+ hostname_sources: [os]
+```
+
+{{% /tab %}}
+
+ã¯ãŒã¯ã·ã§ããã®ã€ã³ã¹ã¿ã³ã¹ã AWS/EC2 ã€ã³ã¹ã¿ã³ã¹äžã§å®è¡ãããŠããå ŽåãEC2 ã¡ã¿ããŒã¿ API ãã以äžã®ã¿ã°ãååŸã§ããŸãïŒããã¯ä»ã®ãã©ãããã©ãŒã ã§ã¯å©çšã§ããŸããïŒã
+
+- `cloud.provider ("aws")`
+- `cloud.platform ("aws_ec2")`
+- `cloud.account.id`
+- `cloud.region`
+- `cloud.availability_zone`
+- `host.id`
+- `host.image.id`
+- `host.name`
+- `host.type`
+
+ãããã®ã¿ã°ãã¡ããªã¯ã¹ã«è¿œå ããããã«ããã1ã€ã®ããã»ããµãŒãäœæããŸãã
+
+{{% tab title="EC2 Resource Detection Processor Configuration" %}}
+
+``` yaml {hl_lines="7-8"}
+processors:
+ batch:
+ resourcedetection/system:
+ detectors: [system]
+ system:
+ hostname_sources: [os]
+ resourcedetection/ec2:
+ detectors: [ec2]
+```
+
+{{% /tab %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/3-attributes.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/3-attributes.md
new file mode 100644
index 0000000000..802240b19f
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/3-attributes.md
@@ -0,0 +1,200 @@
+---
+title: OpenTelemetry Collector Processors
+linkTitle: 4.3 Attributes
+weight: 3
+---
+
+## Attributes Processor
+
+attributes processor ã¯ãspanãlogãmetric ã®å±æ§ã倿ŽããŸãããã®ããã»ããµãŒã¯ãå
¥åããŒã¿ããã£ã«ã¿ãªã³ã°ã»ãããã³ã°ããŠãæå®ããã¢ã¯ã·ã§ã³ã®å¯Ÿè±¡ã«å«ãããé€å€ããããå€å®ããæ©èœããµããŒãããŠããŸãã
+
+èšå®ã§æå®ãããé çªã§å®è¡ãããäžé£ã®ã¢ã¯ã·ã§ã³ãåãåããŸãããµããŒããããŠããã¢ã¯ã·ã§ã³ã¯æ¬¡ã®ãšããã§ãã
+
+- `insert`: ããŒããŸã ååšããªãå Žåã«ãå
¥åããŒã¿ãžæ°ãã屿§ãæ¿å
¥ããŸãã
+- `update`: ããŒãååšããå Žåã«ãå
¥åããŒã¿ã®å±æ§ãæŽæ°ããŸãã
+- `upsert`: insert ãŸã㯠update ãå®è¡ããŸããããŒãååšããªãå Žåã¯æ°ãã屿§ãæ¿å
¥ããããŒãååšããå Žåã¯å±æ§ãæŽæ°ããŸãã
+- `delete`: å
¥åããŒã¿ãã屿§ãåé€ããŸãã
+- `hash`: æ¢åã®å±æ§å€ãããã·ã¥åïŒSHA1ïŒããŸãã
+- `extract`: æ£èŠè¡šçŸã«ãŒã«ã䜿çšããŠãå
¥åããŒããã«ãŒã«ã«æå®ãããã¿ãŒã²ããããŒãžå€ãæœåºããŸããã¿ãŒã²ããããŒãæ¢ã«ååšããå Žåã¯äžæžããããŸãã
+
+ããããããã¹ãŠã®ãã¹ãã¡ããªã¯ã¹ã« `participant.name` ãšããæ°ãã屿§ã `insert` ãã attributes processor ãäœæããŸããå€ã«ã¯ãèªèº«ã®ååïŒäŸ: `marge_simpson`ïŒãèšå®ããŸãã
+
+{{% notice style="warning" %}}
+
+`INSERT_YOUR_NAME_HERE` ã¯å¿
ããèªèº«ã®ååã«çœ®ãæããŠãã ããããŸããååã«ã¹ããŒã¹ã **䜿çšããªã** ããã«ããŠãã ããã
+
+{{% /notice %}}
+
+ã¯ãŒã¯ã·ã§ããã®åŸåã§ã¯ããã®å±æ§ã䜿çšã㊠Splunk Observability Cloud ã®ã¡ããªã¯ã¹ããã£ã«ã¿ãªã³ã°ããŸãã
+
+{{% tab title="Attributes Processor Configuration" %}}
+
+``` yaml {hl_lines="9-13"}
+processors:
+ batch:
+ resourcedetection/system:
+ detectors: [system]
+ system:
+ hostname_sources: [os]
+ resourcedetection/ec2:
+ detectors: [ec2]
+ attributes/conf:
+ actions:
+ - key: participant.name
+ action: insert
+ value: "INSERT_YOUR_NAME_HERE"
+```
+
+{{%/ tab %}}
+
+---
+
+{{% expand title="{{% badge style=primary icon=user-ninja %}}**Ninja:** Using connectors to gain internal insights{{% /badge %}}" %}}
+
+Collector ã«æè¿è¿œå ããããã®ã®äžã€ã« [**connector**](https://opentelemetry.io/docs/collector/configuration/#connectors) ãšããæŠå¿µãããããããã€ãã©ã€ã³ã®åºåãå¥ã®ãã€ãã©ã€ã³ã®å
¥åã«ã€ãªãããšãã§ããŸãã
+
+ãããã©ã®ããã«åœ¹ç«ã€ãã®äŸãšããŠããšã¯ã¹ããŒããããããŒã¿ãã€ã³ãã®éããšã©ãŒã¹ããŒã¿ã¹ãå«ããã°ã®æ°ããããããã€ç°å¢ããéä¿¡ãããããŒã¿ã®éã«åºã¥ããŠã¡ããªã¯ã¹ãçºè¡ãããµãŒãã¹ããããŸããcount connector ã¯ãããæšæºã§å¯Ÿå¿ããŠãããŸãã
+
+## ãªãããã»ããµãŒã§ã¯ãªãã³ãã¯ã¿ãŒãªã®ã?
+
+ããã»ããµãŒã¯ãåŠçããããŒã¿ããã®ãŸãŸæž¡ããªããã°ãªããªãããã远å ã§çæã§ããããŒã¿ãéãããŠãããè¿œå æ
å ±ãå
¬éããã®ãå°é£ã§ããã³ãã¯ã¿ãŒã¯åãåã£ãããŒã¿ããã®ãŸãŸçºè¡ããå¿
èŠããªããããæ±ããŠããã€ã³ãµã€ããçã¿åºãæ©äŒãæäŸããŠãããŸãã
+
+äŸãã°ããããã€ç°å¢å±æ§ãæããªããã°ãã¡ããªã¯ã¹ããã¬ãŒã¹ã®æ°ãã«ãŠã³ãããã³ãã¯ã¿ãŒãäœæã§ããŸãã
+
+éåžžã«ã·ã³ãã«ãªäŸãšããŠããããã€ç°å¢ããšã«ããŒã¿äœ¿çšéãåè§£ããŠåºåã§ããŸãã
+
+## ã³ãã¯ã¿ãŒã䜿ãéã®èæ
®äºé
+
+ã³ãã¯ã¿ãŒã¯ããããã€ãã©ã€ã³ãããšã¯ã¹ããŒããããå¥ã®ãã€ãã©ã€ã³ã§åä¿¡ãããããŒã¿ã®ã¿ãåãä»ããŸãããããæŽ»çšããããã«ã¯ãCollector ã®èšå®ãã©ã®ããã«æ§æããããèæ
®ããå¿
èŠããããŸãã
+
+## References
+
+1. [**https://opentelemetry.io/docs/collector/configuration/#connectors**](https://opentelemetry.io/docs/collector/configuration/#connectors)
+2. [**https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/countconnector**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/countconnector)
+
+{{% /expand %}}
+
+---
+
+## Configuration Check-in
+
+ããã»ããµãŒã«ã€ããŠã¯ä»¥äžã§ããèšå®ã®å€æŽå
容ã確èªããŠã¿ãŸãããã
+
+---
+
+{{% expand title="{{% badge icon=check color=green title=**Check-in** %}}Review your configuration{{% /badge %}}" %}}
+{{< tabs >}}
+{{% tab title="config.yaml" %}}
+
+```yaml {lineNos="table" wrap="true" hl_lines="69-79"}
+# To limit exposure to denial of service attacks, change the host in endpoints below from 0.0.0.0 to a specific network interface.
+# See https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/security-best-practices.md#safeguards-against-denial-of-service-attacks
+
+extensions:
+ health_check:
+ endpoint: 0.0.0.0:13133
+ pprof:
+ endpoint: 0.0.0.0:1777
+ zpages:
+ endpoint: 0.0.0.0:55679
+
+receivers:
+ hostmetrics:
+ collection_interval: 10s
+ scrapers:
+ # CPU utilization metrics
+ cpu:
+ # Disk I/O metrics
+ disk:
+ # File System utilization metrics
+ filesystem:
+ # Memory utilization metrics
+ memory:
+ # Network interface I/O metrics & TCP connection metrics
+ network:
+ # CPU load metrics
+ load:
+ # Paging/Swap space utilization and I/O metrics
+ paging:
+ # Process count metrics
+ processes:
+ # Per process CPU, Memory and Disk I/O metrics. Disabled by default.
+ # process:
+ otlp:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:4317
+ http:
+ endpoint: 0.0.0.0:4318
+
+ opencensus:
+ endpoint: 0.0.0.0:55678
+
+ # Collect own metrics
+ prometheus/internal:
+ config:
+ scrape_configs:
+ - job_name: 'otel-collector'
+ scrape_interval: 10s
+ static_configs:
+ - targets: ['0.0.0.0:8888']
+
+ jaeger:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:14250
+ thrift_binary:
+ endpoint: 0.0.0.0:6832
+ thrift_compact:
+ endpoint: 0.0.0.0:6831
+ thrift_http:
+ endpoint: 0.0.0.0:14268
+
+ zipkin:
+ endpoint: 0.0.0.0:9411
+
+processors:
+ batch:
+ resourcedetection/system:
+ detectors: [system]
+ system:
+ hostname_sources: [os]
+ resourcedetection/ec2:
+ detectors: [ec2]
+ attributes/conf:
+ actions:
+ - key: participant.name
+ action: insert
+ value: "INSERT_YOUR_NAME_HERE"
+
+exporters:
+ debug:
+ verbosity: detailed
+
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [otlp, opencensus, prometheus]
+ processors: [batch]
+ exporters: [debug]
+
+ logs:
+ receivers: [otlp]
+ processors: [batch]
+ exporters: [debug]
+
+ extensions: [health_check, pprof, zpages]
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+{{% /expand %}}
+
+---
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/_index.md
new file mode 100644
index 0000000000..54ee4e4052
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/4-processors/_index.md
@@ -0,0 +1,37 @@
+---
+title: OpenTelemetry Collector Processors
+linkTitle: 4. Processors
+weight: 4
+---
+
+[**Processors**](https://github.com/open-telemetry/opentelemetry-collector/blob/main/processor/README.md) ã¯ãããŒã¿ãåä¿¡ãããŠãããšã¯ã¹ããŒãããããŸã§ã®éã«å®è¡ãããŸããProcessors ã¯ãªãã·ã§ã³ã§ãããæšå¥šããããã®ããããŸããOpenTelemetry contrib Collector ã«ã¯ [**倿°ã® Processors**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor) ãå«ãŸããŠããŸãã
+
+{{< mermaid >}}
+%%{
+ init:{
+ "theme":"base",
+ "themeVariables": {
+ "primaryColor": "#ffffff",
+ "clusterBkg": "#eff2fb",
+ "defaultLinkColor": "#333333"
+ }
+ }
+}%%
+
+flowchart LR;
+ style Processors fill:#e20082,stroke:#333,stroke-width:4px,color:#fff
+ subgraph Collector
+ A[OTLP] --> M(Receivers)
+ B[JAEGER] --> M(Receivers)
+ C[Prometheus] --> M(Receivers)
+ end
+ subgraph Processors
+ M(Receivers) --> H(Filters, Attributes, etc)
+ E(Extensions)
+ end
+ subgraph Exporters
+ H(Filters, Attributes, etc) --> S(OTLP)
+ H(Filters, Attributes, etc) --> T(JAEGER)
+ H(Filters, Attributes, etc) --> U(Prometheus)
+ end
+{{< /mermaid >}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/5-exporters/1-otlphttp.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/5-exporters/1-otlphttp.md
new file mode 100644
index 0000000000..702520c338
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/5-exporters/1-otlphttp.md
@@ -0,0 +1,199 @@
+---
+title: OpenTelemetry Collector Exporters
+linkTitle: 5.1 OTLP HTTP
+weight: 1
+---
+
+## OTLP HTTP Exporter
+
+ã¡ããªã¯ã¹ã HTTP çµç±ã§ Splunk Observability Cloud ã«éä¿¡ããã«ã¯ã**otlphttp** exporter ãèšå®ããå¿
èŠããããŸãã
+
+`/etc/otelcol-contrib/config.yaml` ãã¡ã€ã«ãç·šéããŠã**otlphttp** exporter ãèšå®ããŠã¿ãŸãããã**exporters** ã»ã¯ã·ã§ã³ã®äžã«ã以äžã® YAML ã 2 ã¹ããŒã¹ã®ã€ã³ãã³ãã«æ³šæããŠæ¿å
¥ããŸãã
+
+ãŸãããã£ã¹ã¯ãæºæ¯ã«ãªãã®ãé²ãããã«ãlogging exporter ã®ãã°ã¬ãã«ã倿ŽããŸããããã©ã«ãã® `detailed` ã¯éåžžã«åé·ã§ãã
+
+```yaml {hl_lines="3-4"}
+exporters:
+ debug:
+ verbosity: normal
+ otlphttp/splunk:
+```
+
+次ã«ã`metrics_endpoint` ãå®çŸ©ããŠã¿ãŒã²ãã URL ãèšå®ããå¿
èŠããããŸãã
+
+{{% notice style="note" %}}
+Splunk äž»å¬ã®ã¯ãŒã¯ã·ã§ããã«åå ãããŠããæ¹ã¯ã䜿çšããŠããã€ã³ã¹ã¿ã³ã¹ã«ãã§ã« Realm ç°å¢å€æ°ãèšå®ãããŠããŸããèšå®ãã¡ã€ã«ã§ãã®ç°å¢å€æ°ãåç
§ããŸãããã以å€ã®å Žåã¯ãæ°ããç°å¢å€æ°ãäœæã㊠Realm ãèšå®ããå¿
èŠããããŸããäŸïŒ
+
+``` bash
+export REALM="us1"
+```
+
+{{% /notice %}}
+
+䜿çšãã URL 㯠`https://ingest.${env:REALM}.signalfx.com/v2/datapoint/otlp` ã§ããïŒSplunk ã¯ããŒã¿ã¬ãžãã³ã·ãŒã®ããã«ãäžçäžã®äž»èŠãªå°ççæ ç¹ã« Realm ãæã£ãŠããŸããïŒ
+
+**otlphttp** exporter ã¯ã`traces_endpoint` ãš `logs_endpoint` ã®ã¿ãŒã²ãã URL ãããããå®çŸ©ããããšã§ããã¬ãŒã¹ãšãã°ãéä¿¡ããããã«èšå®ããããšãã§ããŸãããããã®èšå®ã¯æ¬ã¯ãŒã¯ã·ã§ããã®ç¯å²å€ã§ãã
+
+```yaml {hl_lines="5"}
+exporters:
+ debug:
+ verbosity: normal
+ otlphttp/splunk:
+ metrics_endpoint: https://ingest.${env:REALM}.signalfx.com/v2/datapoint/otlp
+```
+
+ããã©ã«ãã§ã¯ããã¹ãŠã®ãšã³ããã€ã³ãã§ `gzip` å§çž®ãæå¹ã«ãªã£ãŠããŸãããã㯠exporter ã®èšå®ã§ `compression: none` ãæå®ããããšã§ç¡å¹ã«ã§ããŸããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ããããããŒã¿éä¿¡ã®æãå¹ççãªæ¹æ³ã§ãããããå§çž®ãæå¹ã®ãŸãŸã«ããŠããã©ã«ããæ¡çšããŸãã
+
+ã¡ããªã¯ã¹ã Splunk Observability Cloud ã«éä¿¡ããã«ã¯ãAccess Token ã䜿çšããå¿
èŠããããŸãããã㯠Splunk Observability Cloud UI ã§æ°ããããŒã¯ã³ãäœæããããšã§è¡ããŸããããŒã¯ã³ã®äœææ¹æ³ã®è©³çްã«ã€ããŠã¯ã[Create a token](https://docs.splunk.com/Observability/admin/authentication-tokens/org-tokens.html) ãåç
§ããŠãã ãããããŒã¯ã³ã¯ **INGEST** ã¿ã€ãã§ããå¿
èŠããããŸãã
+
+{{% notice style="note" %}}
+Splunk äž»å¬ã®ã¯ãŒã¯ã·ã§ããã«åå ãããŠããæ¹ã¯ã䜿çšããŠããã€ã³ã¹ã¿ã³ã¹ã«ãã§ã« Access Token ãïŒç°å¢å€æ°ãšããŠïŒèšå®ãããŠããŸããèšå®ãã¡ã€ã«ã§ãã®ç°å¢å€æ°ãåç
§ããŸãããã以å€ã®å Žåã¯ãæ°ããããŒã¯ã³ãäœæããŠç°å¢å€æ°ãšããŠèšå®ããå¿
èŠããããŸããäŸïŒ
+
+``` bash
+export ACCESS_TOKEN=
+```
+
+{{% /notice %}}
+
+ããŒã¯ã³ã¯ãèšå®ãã¡ã€ã«å
ã§ `headers:` ã»ã¯ã·ã§ã³ã®äžã« `X-SF-TOKEN: ${env:ACCESS_TOKEN}` ãæ¿å
¥ããããšã§å®çŸ©ããŸãã
+
+```yaml {hl_lines="6-8"}
+exporters:
+ debug:
+ verbosity: normal
+ otlphttp/splunk:
+ metrics_endpoint: https://ingest.${env:REALM}.signalfx.com/v2/datapoint/otlp
+ headers:
+ X-SF-TOKEN: ${env:ACCESS_TOKEN}
+```
+
+## Configuration Check-in
+
+exporter ã«ã€ããŠèª¬æããã®ã§ãèšå®å€æŽã確èªããŸãããã
+
+---
+
+{{% expand title="{{% badge icon=check color=green title=**Check-in** %}}Review your configuration{{% /badge %}}" %}}
+{{< tabs >}}
+{{% tab title="config.yaml" %}}
+
+```yaml {lineNos="table" wrap="true" hl_lines="83-87"}
+# To limit exposure to denial of service attacks, change the host in endpoints below from 0.0.0.0 to a specific network interface.
+# See https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/security-best-practices.md#safeguards-against-denial-of-service-attacks
+
+extensions:
+ health_check:
+ endpoint: 0.0.0.0:13133
+ pprof:
+ endpoint: 0.0.0.0:1777
+ zpages:
+ endpoint: 0.0.0.0:55679
+
+receivers:
+ hostmetrics:
+ collection_interval: 10s
+ scrapers:
+ # CPU utilization metrics
+ cpu:
+ # Disk I/O metrics
+ disk:
+ # File System utilization metrics
+ filesystem:
+ # Memory utilization metrics
+ memory:
+ # Network interface I/O metrics & TCP connection metrics
+ network:
+ # CPU load metrics
+ load:
+ # Paging/Swap space utilization and I/O metrics
+ paging:
+ # Process count metrics
+ processes:
+ # Per process CPU, Memory and Disk I/O metrics. Disabled by default.
+ # process:
+ otlp:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:4317
+ http:
+ endpoint: 0.0.0.0:4318
+
+ opencensus:
+ endpoint: 0.0.0.0:55678
+
+ # Collect own metrics
+ prometheus/internal:
+ config:
+ scrape_configs:
+ - job_name: 'otel-collector'
+ scrape_interval: 10s
+ static_configs:
+ - targets: ['0.0.0.0:8888']
+
+ jaeger:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:14250
+ thrift_binary:
+ endpoint: 0.0.0.0:6832
+ thrift_compact:
+ endpoint: 0.0.0.0:6831
+ thrift_http:
+ endpoint: 0.0.0.0:14268
+
+ zipkin:
+ endpoint: 0.0.0.0:9411
+
+processors:
+ batch:
+ resourcedetection/system:
+ detectors: [system]
+ system:
+ hostname_sources: [os]
+ resourcedetection/ec2:
+ detectors: [ec2]
+ attributes/conf:
+ actions:
+ - key: participant.name
+ action: insert
+ value: "INSERT_YOUR_NAME_HERE"
+
+exporters:
+ debug:
+ verbosity: normal
+ otlphttp/splunk:
+ metrics_endpoint: https://ingest.${env:REALM}.signalfx.com/v2/datapoint/otlp
+ headers:
+ X-SF-Token: ${env:ACCESS_TOKEN}
+
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [otlp, opencensus, prometheus]
+ processors: [batch]
+ exporters: [debug]
+
+ logs:
+ receivers: [otlp]
+ processors: [batch]
+ exporters: [debug]
+
+ extensions: [health_check, pprof, zpages]
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+{{% /expand %}}
+
+---
+
+ãã¡ããã`metrics_endpoint` ã **OTLP** ãããã³ã«ããµããŒãããä»ã®ãœãªã¥ãŒã·ã§ã³ãæãããã«ç°¡åã«èšå®ããããšãã§ããŸãã
+
+次ã«ã`config.yaml` ã® service ã»ã¯ã·ã§ã³ã§ãèšå®ããã°ããã® receiverãprocessorãexporter ãæå¹åããå¿
èŠããããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/5-exporters/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/5-exporters/_index.md
new file mode 100644
index 0000000000..9ed5a81d75
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/5-exporters/_index.md
@@ -0,0 +1,39 @@
+---
+title: OpenTelemetry Collector Exporters
+linkTitle: 5. Exporters
+weight: 5
+---
+
+ãšã¯ã¹ããŒã¿ãŒã¯ãpush åãŸã㯠pull åã®ããããã§åäœããããŒã¿ã 1 ã€ä»¥äžã®ããã¯ãšã³ããå®å
ãžéä¿¡ããä»çµã¿ã§ãããšã¯ã¹ããŒã¿ãŒã¯ 1 ã€ãŸãã¯è€æ°ã®ããŒã¿ãœãŒã¹ã«å¯Ÿå¿ããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã[**otlphttp**](https://opentelemetry.io/docs/specs/otel/protocol/exporter/) ãšã¯ã¹ããŒã¿ãŒã䜿çšããŸããOpenTelemetry Protocol (OTLP) ã¯ããã¬ã¡ããªããŒã¿ãéä¿¡ããããã®ãã³ããŒäžç«ã§æšæºåããããããã³ã«ã§ããOTLP ãšã¯ã¹ããŒã¿ãŒã¯ãOTLP ãããã³ã«ãå®è£
ãããµãŒããŒãžããŒã¿ãéä¿¡ããŸããOTLP ãšã¯ã¹ããŒã¿ãŒã¯ [**gRPC**](https://grpc.io/) ãš [**HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview)/[**JSON**](https://www.json.org/json-en.html) ã®äž¡æ¹ã®ãããã³ã«ããµããŒãããŠããŸãã
+
+{{< mermaid >}}
+%%{
+ init:{
+ "theme":"base",
+ "themeVariables": {
+ "primaryColor": "#ffffff",
+ "clusterBkg": "#eff2fb",
+ "defaultLinkColor": "#333333"
+ }
+ }
+}%%
+
+flowchart LR;
+ style Exporters fill:#e20082,stroke:#333,stroke-width:4px,color:#fff
+ subgraph Collector
+ A[OTLP] --> M(Receivers)
+ B[JAEGER] --> M(Receivers)
+ C[Prometheus] --> M(Receivers)
+ end
+ subgraph Processors
+ M(Receivers) --> H(Filters, Attributes, etc)
+ E(Extensions)
+ end
+ subgraph Exporters
+ H(Filters, Attributes, etc) --> S(OTLP)
+ H(Filters, Attributes, etc) --> T(JAEGER)
+ H(Filters, Attributes, etc) --> U(Prometheus)
+ end
+{{< /mermaid >}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/1-hostmetrics.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/1-hostmetrics.md
new file mode 100644
index 0000000000..850631ad1f
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/1-hostmetrics.md
@@ -0,0 +1,27 @@
+---
+title: OpenTelemetry Collector Service
+linkTitle: 6.1 Host Metrics
+weight: 1
+---
+
+## Hostmetrics Receiver
+
+ã¯ãŒã¯ã·ã§ããã® Receivers ã»ã¯ã·ã§ã³ãæãåºããŠãã ããã[**Host Metrics Receiver**](../3-receivers/#host-metrics-receiver) ã¯ãããŸããŸãªãœãŒã¹ããã¹ã¯ã¬ã€ãã³ã°ãããããã¹ãã·ã¹ãã ã«é¢ããã¡ããªã¯ã¹ãçæããããã«å®çŸ©ããŸããããã®ã¬ã·ãŒããŒãæå¹åããã«ã¯ãmetrics ãã€ãã©ã€ã³ã« `hostmetrics` ã¬ã·ãŒããŒãå«ããå¿
èŠããããŸãã
+
+`metrics` ãã€ãã©ã€ã³ã® `receivers` ã»ã¯ã·ã§ã³ã« `hostmetrics` ã远å ããŸãã
+
+```yaml {hl_lines="11"}
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [hostmetrics, otlp, opencensus, prometheus]
+ processors: [batch]
+ exporters: [debug]
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/2-prometheus.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/2-prometheus.md
new file mode 100644
index 0000000000..6e3989fd9b
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/2-prometheus.md
@@ -0,0 +1,27 @@
+---
+title: OpenTelemetry Collector Service
+linkTitle: 6.2 Prometheus
+weight: 2
+---
+
+## Prometheus Internal Receiver
+
+ã¯ãŒã¯ã·ã§ããã®ååã§ã`prometheus` ã¬ã·ãŒããŒã Collector å
éšã®ã¡ããªã¯ã¹ãåéããŠããããšãåæ ãããããã`prometheus/internal` ãšããååã«å€æŽããŸããã
+
+ããã§ãã¡ããªã¯ã¹ãã€ãã©ã€ã³ã§ `prometheus/internal` ã¬ã·ãŒããŒãæå¹åããå¿
èŠããããŸãã`receivers` ã»ã¯ã·ã§ã³ãæŽæ°ãã`metrics` ãã€ãã©ã€ã³ã« `prometheus/internal` ã远å ããŠãã ãã:
+
+```yaml {hl_lines="11"}
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [hostmetrics, otlp, opencensus, prometheus/internal]
+ processors: [batch]
+ exporters: [debug]
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/3-resourcedetection.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/3-resourcedetection.md
new file mode 100644
index 0000000000..15c671d5a5
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/3-resourcedetection.md
@@ -0,0 +1,27 @@
+---
+title: OpenTelemetry Collector Service
+linkTitle: 6.3 Resource Detection
+weight: 3
+---
+
+## Resource Detection Processor
+
+Collector ãã€ã³ã¹ã¿ã³ã¹ã®ãã¹ãåã AWS/EC2 ã¡ã¿ããŒã¿ãååŸã§ããããã`resourcedetection/system` ãš `resourcedetection/ec2` ããã»ããµãŒã远å ããŸãããããã 2 ã€ã®ããã»ããµãŒã metrics ãã€ãã©ã€ã³ã§æå¹åããå¿
èŠããããŸãã
+
+`processors` ã»ã¯ã·ã§ã³ãæŽæ°ããŠã`metrics` ãã€ãã©ã€ã³ã« `resourcedetection/system` ãš `resourcedetection/ec2` ãå«ããŸãã
+
+```yaml {hl_lines="12"}
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [hostmetrics, otlp, opencensus, prometheus/internal]
+ processors: [batch, resourcedetection/system, resourcedetection/ec2]
+ exporters: [debug]
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/4-attributes.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/4-attributes.md
new file mode 100644
index 0000000000..af2ef0765a
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/4-attributes.md
@@ -0,0 +1,27 @@
+---
+title: OpenTelemetry Collector Service
+linkTitle: 6.4 Attributes
+weight: 4
+---
+
+## Attributes Processor
+
+ãã®ã¯ãŒã¯ã·ã§ããã® Processors ã»ã¯ã·ã§ã³ã§ãã`attributes/conf` ããã»ããµãŒã远å ããŠãCollector ããã¹ãŠã®ã¡ããªã¯ã¹ã« `participant.name` ãšããæ°ãã屿§ãæ¿å
¥ããããã«ããŸãããæ¬¡ã«ãããã metrics ãã€ãã©ã€ã³ã§æå¹åããå¿
èŠããããŸãã
+
+`processors` ã»ã¯ã·ã§ã³ãæŽæ°ããŠã`metrics` ãã€ãã©ã€ã³ã« `attributes/conf` ãå«ããŸãã
+
+```yaml {hl_lines="12"}
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [hostmetrics, otlp, opencensus, prometheus/internal]
+ processors: [batch, resourcedetection/system, resourcedetection/ec2, attributes/conf]
+ exporters: [debug]
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/5-otlphttp.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/5-otlphttp.md
new file mode 100644
index 0000000000..25fc40bb3c
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/5-otlphttp.md
@@ -0,0 +1,243 @@
+---
+title: OpenTelemetry Collector Service
+linkTitle: 6.5 OTLP HTTP
+weight: 5
+---
+
+## OTLP HTTP Exporter
+
+ã¯ãŒã¯ã·ã§ããã® Exporters ã»ã¯ã·ã§ã³ã§ã¯ãSplunk Observability Cloud ã«ã¡ããªã¯ã¹ãéä¿¡ããããã® `otlphttp` exporter ãæ§æããŸãããæ¬¡ã¯ãããã metrics ãã€ãã©ã€ã³ã§æå¹åããå¿
èŠããããŸãã
+
+`exporters` ã»ã¯ã·ã§ã³ãæŽæ°ãã`metrics` ãã€ãã©ã€ã³ã« `otlphttp/splunk` ãå«ããŸãã
+
+```yaml {hl_lines="13"}
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [hostmetrics, otlp, opencensus, prometheus/internal]
+ processors: [batch, resourcedetection/system, resourcedetection/ec2, attributes/conf]
+ exporters: [debug, otlphttp/splunk]
+```
+
+---
+
+{{% expand title="{{% badge style=primary icon=user-ninja %}}**Ninja:** Collector ã®å
éšèŠ³æž¬{{% /badge %}}" %}}
+
+Collector ã¯èªèº«ã®æ¯ãèãã«é¢ããå
éšã·ã°ãã«ãååŸããŠãããããã«ã¯çšŒåäžã®ã³ã³ããŒãã³ãããåŸããã远å ã®ã·ã°ãã«ãå«ãŸããŸãã
+ããã¯ãããŒã¿ã®æµãã«é¢ãã倿ãè¡ãã³ã³ããŒãã³ããããã®æ
å ±ãã¡ããªã¯ã¹ããã¬ãŒã¹ãšããŠè¡šé¢åããææ®µãå¿
èŠãšããããã§ãã
+
+## ãªã Collector ãç£èŠããã®ãïŒ
+
+ããã¯ãç£èŠè
ãç£èŠããã®ã¯èª°ãïŒããšãããããã°é¶ãšåµã®åé¡ã§ãããããããæ
å ±ã衚é¢åã§ããããšã¯éèŠã§ããCollector ã®æŽå²çã«è峿·±ããã 1 ã€ã®ç¹ãšããŠãCollector 㯠Go ã® metrics SDK ãå®å®çãšã¿ãªãããåããååšããŠãããããçŸæç¹ã§ã¯ãã®æ©èœãæäŸããç®çã§ Prometheus ãšã³ããã€ã³ããå
¬éããŠããããšããäºæ
ããããŸãã
+
+## èæ
®äºé
+
+çµç¹å
ã§çšŒåäžã®å Collector ã®å
éšäœ¿çšç¶æ³ãç£èŠãããšãæ°ãã Metric Time Series (MTS) ã倧éã«çºçããå¯èœæ§ããããŸããSplunk ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ãããã®ã¡ããªã¯ã¹ã粟éžããŠãããæ³å®ãããå¢å åã®äºæž¬ãæ¯æŽã§ããŸãã
+
+## The Ninja Zone
+
+Collector ã®å
éšå¯èŠ³æž¬æ§ãå
¬éããã«ã¯ãããã€ãã®è¿œå èšå®ã調æŽã§ããŸãã
+
+{{< tabs >}}
+{{% tab title="telemetry schema" %}}
+
+```yaml
+service:
+ telemetry:
+ logs:
+ level:
+ development:
+ encoding:
+ disable_caller:
+ disable_stacktrace:
+ output_paths: [, paths...]
+ error_output_paths: [, paths...]
+ initial_fields:
+ key: value
+ metrics:
+ level:
+ # Address binds the promethues endpoint to scrape
+ address:
+```
+
+{{% /tab %}}
+{{% tab title="example-config.yml" %}}
+
+```yaml
+service:
+ telemetry:
+ logs:
+ level: info
+ encoding: json
+ disable_stacktrace: true
+ initial_fields:
+ instance.name: ${env:INSTANCE}
+ metrics:
+ address: localhost:8888
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## åèæ
å ±
+
+1. [https://opentelemetry.io/docs/collector/configuration/#service](https://opentelemetry.io/docs/collector/configuration/#service)
+
+{{% /expand %}}
+
+---
+
+## æçµçãªæ§æ
+
+---
+
+{{% expand title="{{% badge icon=check color=green title=**Check-in** %}}æçµçãªæ§æã確èªãã{{% /badge %}}" %}}
+{{< tabs >}}
+{{% tab title="config.yaml" %}}
+
+``` yaml {lineNos="table" wrap="true"}
+# To limit exposure to denial of service attacks, change the host in endpoints below from 0.0.0.0 to a specific network interface.
+# See https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/security-best-practices.md#safeguards-against-denial-of-service-attacks
+
+extensions:
+ health_check:
+ endpoint: 0.0.0.0:13133
+ pprof:
+ endpoint: 0.0.0.0:1777
+ zpages:
+ endpoint: 0.0.0.0:55679
+
+receivers:
+ hostmetrics:
+ collection_interval: 10s
+ scrapers:
+ # CPU utilization metrics
+ cpu:
+ # Disk I/O metrics
+ disk:
+ # File System utilization metrics
+ filesystem:
+ # Memory utilization metrics
+ memory:
+ # Network interface I/O metrics & TCP connection metrics
+ network:
+ # CPU load metrics
+ load:
+ # Paging/Swap space utilization and I/O metrics
+ paging:
+ # Process count metrics
+ processes:
+ # Per process CPU, Memory and Disk I/O metrics. Disabled by default.
+ # process:
+ otlp:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:4317
+ http:
+ endpoint: 0.0.0.0:4318
+
+ opencensus:
+ endpoint: 0.0.0.0:55678
+
+ # Collect own metrics
+ prometheus/internal:
+ config:
+ scrape_configs:
+ - job_name: 'otel-collector'
+ scrape_interval: 10s
+ static_configs:
+ - targets: ['0.0.0.0:8888']
+
+ jaeger:
+ protocols:
+ grpc:
+ endpoint: 0.0.0.0:14250
+ thrift_binary:
+ endpoint: 0.0.0.0:6832
+ thrift_compact:
+ endpoint: 0.0.0.0:6831
+ thrift_http:
+ endpoint: 0.0.0.0:14268
+
+ zipkin:
+ endpoint: 0.0.0.0:9411
+
+processors:
+ batch:
+ resourcedetection/system:
+ detectors: [system]
+ system:
+ hostname_sources: [os]
+ resourcedetection/ec2:
+ detectors: [ec2]
+ attributes/conf:
+ actions:
+ - key: participant.name
+ action: insert
+ value: "INSERT_YOUR_NAME_HERE"
+
+exporters:
+ debug:
+ verbosity: normal
+ otlphttp/splunk:
+ metrics_endpoint: https://ingest.${env:REALM}.signalfx.com/v2/datapoint/otlp
+ headers:
+ X-SF-Token: ${env:ACCESS_TOKEN}
+
+service:
+
+ pipelines:
+
+ traces:
+ receivers: [otlp, opencensus, jaeger, zipkin]
+ processors: [batch]
+ exporters: [debug]
+
+ metrics:
+ receivers: [hostmetrics, otlp, opencensus, prometheus/internal]
+ processors: [batch, resourcedetection/system, resourcedetection/ec2, attributes/conf]
+ exporters: [debug, otlphttp/splunk]
+
+ logs:
+ receivers: [otlp]
+ processors: [batch]
+ exporters: [debug]
+
+ extensions: [health_check, pprof, zpages]
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+{{% /expand %}}
+
+---
+
+{{% notice style="tip" %}}
+Collector ãåèµ·åããåã«ãæ§æãã¡ã€ã«ãæ€èšŒããããšãæšå¥šããŸãã`config.yaml` ãã¡ã€ã«ã®å
容ã **[otelbin.io](https://www.otelbin.io/)** ã«è²Œãä»ããããšã§æ€èšŒã§ããŸãã
+
+{{% expand title="{{% badge color=green title=**Screenshot** %}}OTelBin{{% /badge %}}" %}}
+
+{{% /expand %}}
+
+{{% /notice %}}
+
+åäœããæ§æãã§ããã®ã§ãCollector ãèµ·åãã[zPages](../2-extensions/#zpages) ãäœãå ±åããŠããã確èªããŸãããã
+
+{{% tab title="Command" %}}
+
+``` bash
+otelcol-contrib --config=file:/etc/otelcol-contrib/config.yaml
+```
+
+{{% /tab %}}
+
+ãã©ãŠã¶ã§ zPages ãéããŸã: [**http://localhost:55679/debug/pipelinez**](http://localhost:55679/debug/pipelinez) ïŒ`localhost` ã¯èªèº«ã®ç°å¢ã«åãããŠå€æŽããŠãã ããïŒã
+
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/_index.md
new file mode 100644
index 0000000000..e20b0b8c10
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/6-service/_index.md
@@ -0,0 +1,26 @@
+---
+title: OpenTelemetry Collector Service
+linkTitle: 6. Service
+weight: 6
+---
+
+**Service** ã»ã¯ã·ã§ã³ã¯ãreceiversãprocessorsãexportersãextensions ã®åã»ã¯ã·ã§ã³ã«å®çŸ©ãããèšå®ãããšã«ãCollector ã§æå¹åããã³ã³ããŒãã³ããæå®ããããã«äœ¿çšããŸãã
+
+{{% notice style="info" %}}
+ã³ã³ããŒãã³ããèšå®ãããŠããŠãã**Service** ã»ã¯ã·ã§ã³å
ã§å®çŸ©ãããŠããªããã°ããã®ã³ã³ããŒãã³ãã¯æå¹å**ãããŸãã**ã
+{{% /notice %}}
+
+service ã»ã¯ã·ã§ã³ã¯ã次ã®3ã€ã®ãµãã»ã¯ã·ã§ã³ã§æ§æãããŠããŸãã
+
+- extensions
+- pipelines
+- telemetry
+
+ããã©ã«ãã®èšå®ã§ã¯ãextension ã»ã¯ã·ã§ã³ã« `health_check`ã`pprof`ã`zpages` ãæå¹åããèšå®ãèšè¿°ãããŠããããããã¯å
ã»ã© Extensions ã¢ãžã¥ãŒã«ã§èšå®ããå
容ã§ãã
+
+``` yaml
+service:
+ extensions: [health_check, pprof, zpages]
+```
+
+ããã§ã¯ãMetric Pipeline ãèšå®ããŠãããŸãããïŒ
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/7-visualisation/index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/7-visualisation/index.md
new file mode 100644
index 0000000000..0ee8f7345d
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/7-visualisation/index.md
@@ -0,0 +1,38 @@
+---
+title: Data Visualisations
+linkTitle: 7. Visualisation
+weight: 7
+---
+
+## Splunk Observability Cloud
+
+OpenTelemetry Collector ã Splunk Observability Cloud ã«ã¡ããªã¯ã¹ãéä¿¡ããããã«èšå®ã§ããã®ã§ãSplunk Observability Cloud ã§ããŒã¿ã確èªããŠã¿ãŸããããSplunk Observability Cloud ãžã®æåŸ
ãåãåã£ãŠããªãå Žåã¯ãè¬åž«ããã°ã€ã³èªèšŒæ
å ±ãæäŸããŸãã
+
+ãã®åã«ãããå°ãé¢çœãããããã«ãã€ã³ã¹ã¿ã³ã¹ã«å¯ŸããŠã¹ãã¬ã¹ãã¹ããå®è¡ããŸããããã«ããããã·ã¥ããŒããæŽ»æ§åãããŸãã
+
+``` bash
+sudo apt install stress
+while true; do stress -c 2 -t 40; stress -d 5 -t 40; stress -m 20 -t 40; done
+```
+
+Splunk Observability Cloud ã«ãã°ã€ã³ããããå·ŠåŽã®ããã²ãŒã·ã§ã³ã䜿çšããŠãã¡ã€ã³ã¡ãã¥ãŒãã **Dashboards** ã«ç§»åããŸããããã«ãã Teams ãã¥ãŒã衚瀺ãããŸãããã®ãã¥ãŒã®äžéšã§ **All Dashboards** ãã¯ãªãã¯ããŸãã
+
+
+
+æ€çŽ¢ããã¯ã¹ã§ **OTel Contrib** ãæ€çŽ¢ããŸãã
+
+
+
+{{% notice style="info" %}}
+ããã·ã¥ããŒããååšããªãå Žåãè¬åž«ãçŽ æ©ã远å ã§ããŸããSplunk ããã¹ãããããŒãžã§ã³ã®ã¯ãŒã¯ã·ã§ããã«åå ããŠããªãå Žåãã€ã³ããŒããã Dashboard Group ã¯ãã®ããŒãžã®äžéšã«ãããŸãã
+{{% /notice %}}
+
+**OTel Contrib Dashboard** ããã·ã¥ããŒããã¯ãªãã¯ããŠéããæ¬¡ã«ããã·ã¥ããŒãäžéšã® **Participant Name** ããã¯ã¹ãã¯ãªãã¯ãã`config.yaml` ã§ `participant.name` ã«èšå®ããååãããããããŠã³ãªã¹ãããéžæããããæ€çŽ¢ã®ããã«ååãå
¥åãå§ããŸãã
+
+
+
+ããã§ãOpenTelemetry Collector ãèšå®ãããã¹ãã®ãã¹ãã¡ããªã¯ã¹ã確èªã§ããããã«ãªããŸãã
+
+
+
+{{% resources sort="asc" style="info" title="Download Dashboard Group JSON for importing" /%}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/1-project-setup.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/1-project-setup.md
new file mode 100644
index 0000000000..fda54d5236
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/1-project-setup.md
@@ -0,0 +1,34 @@
+---
+title: OpenTelemetry Collector Development
+linkTitle: 8.1 Project Setup
+weight: 9
+---
+
+## Project Setup {{% badge style=primary icon=user-ninja %}}**Ninja**{{% /badge %}}
+
+{{% notice style="note" %}}
+
+ãã®ã»ã¯ã·ã§ã³ãå®äºãããŸã§ã«ãããæéã¯ãçµéšã«ããç°ãªããŸãã
+
+è©°ãŸã£ããšããã€ã³ã¹ãã©ã¯ã¿ãŒãšäžç·ã«é²ãããå Žåã¯ã宿çã®ãœãªã¥ãŒã·ã§ã³ã[**ãã¡ã**](https://github.com/splunk/collector-workshop-example)ã§ç¢ºèªã§ããŸãã
+
+{{% /notice %}}
+
+æ°ãã _Jenkins CI_ receiver ã®éçºãå§ããããã«ããŸã㯠Golang ãããžã§ã¯ããã»ããã¢ããããå¿
èŠããããŸãã
+æ°ãã Golang ãããžã§ã¯ããäœæããæé ã¯ä»¥äžã®ãšããã§ãã
+
+1. `${HOME}/go/src/jenkinscireceiver` ãšããååã®æ°ãããã£ã¬ã¯ããªãäœæããããã«ç§»åããŸã
+ 1. å®éã®ãã£ã¬ã¯ããªåãå Žæã«å³å¯ãªæ±ºãŸãã¯ãªãããèªèº«ã®éçºãã£ã¬ã¯ããªãèªç±ã«éžãã§äœæããŠæ§ããŸããã
+1. `go mod init splunk.conf/workshop/example/jenkinscireceiver` ãå®è¡ã㊠golang ã¢ãžã¥ãŒã«ãåæåããŸã
+ 1. ããã«ãã `go.mod` ãšãããã¡ã€ã«ãäœæãããçŽæ¥ããã³éæ¥ã®äŸåé¢ä¿ã远跡ããããã«äœ¿çšãããŸã
+ 1. æçµçã«ã¯ `go.sum` ãäœæãããããã¯ã€ã³ããŒããããäŸåé¢ä¿ã®ãã§ãã¯ãµã å€ãä¿æããŸãã
+
+{{% expand title="{{% badge icon=check color=green title=**Check-in** %}}Review your go.mod{{% /badge %}}" %}}
+
+``` text
+module splunk.conf/workshop/example/jenkinscireceiver
+
+go 1.20
+```
+
+{{% /expand %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/2-configuration.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/2-configuration.md
new file mode 100644
index 0000000000..a494959de3
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/2-configuration.md
@@ -0,0 +1,93 @@
+---
+title: OpenTelemetry Collector Development
+linkTitle: 8.2 Configuration
+weight: 10
+---
+
+## èšå®ã®æ§ç¯
+
+ã³ã³ããŒãã³ãã®èšå®éšåã¯ããŠãŒã¶ãŒãã³ã³ããŒãã³ãã«å¯ŸããŠå
¥åãäžããããã®ææ®µã§ãã
+ãã®ãããèšå®ã§äœ¿çšãããå€ã¯æ¬¡ã®ãããªç¹æ§ãåããŠããå¿
èŠããããŸãã
+
+1. ãã®ãã£ãŒã«ããäœãå¶åŸ¡ããã®ãããŠãŒã¶ãŒãçŽæçã«çè§£ã§ããããš
+1. å¿
é é
ç®ãšä»»æé
ç®ãæç€ºãããŠããããš
+1. å
±éã®åç§°ããã£ãŒã«ããåå©çšããŠããããš
+1. ãªãã·ã§ã³ãã·ã³ãã«ã«ä¿ã€ããš
+
+{{% tabs %}}
+{{% tab title="bad config" %}}
+
+```yaml
+---
+jenkins_server_addr: hostname
+jenkins_server_api_port: 8089
+interval: 10m
+filter_builds_by:
+ - name: my-awesome-build
+ status: amber
+track:
+ values:
+ example.metric.1: yes
+ example.metric.2: yes
+ example.metric.3: no
+ example.metric.4: no
+```
+
+{{% /tab %}}
+{{% tab title="good config" %}}
+
+``` yaml
+---
+# Required Values
+endpoint: http://my-jenkins-server:8089
+auth:
+ authenticator: basicauth/jenkins
+# Optional Values
+collection_interval: 10m
+metrics:
+ example.metric.1:
+ enabled: true
+ example.metric.2:
+ enabled: true
+ example.metric.3:
+ enabled: true
+ example.metric.4:
+ enabled: true
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+bad configuration ã®äŸã¯ãèšå®ã«é¢ããæšå¥šäºé
ãšã¯éã®ããšãè¡ããšã³ã³ããŒãã³ãã®äœ¿ãåæã«ã©ã®ãããªåœ±é¿ãäžãããã瀺ããŠããŸãããã£ãŒã«ãã®å€ãã©ãããã¹ãããæç¢ºã§ãªããæ¢åã®ããã»ããµã«ä»»ããããæ©èœãŸã§å«ããŠããŸã£ãŠããããã£ãŒã«ãã®åœåã collector å
ã®ä»ã®ã³ã³ããŒãã³ããšäžè²«ããŠããŸããã
+
+good configuration ã®äŸã¯ãå¿
é ã®å€ãã·ã³ãã«ã«ä¿ã¡ãä»ã®ã³ã³ããŒãã³ãããåœåèŠåãåå©çšããã³ã³ããŒãã³ãã Jenkins ãš collector ã®é£æºã®ã¿ã«éäžããããã«ããŠããŸãã
+
+ã³ãŒãã¿ãã¯ãèªåãã¡ã§è¿œå ããå¿
èŠã®ããéšåãšãcollector å
ã®å
±æã©ã€ãã©ãªã«ãã£ãŠãã§ã«æäŸãããŠããéšåã®éã瀺ããŠããŸãããããã«ã€ããŠã¯ãããžãã¹ããžãã¯ã«é²ãã éã«ããã«è©³ãã説æããŸããèšå®ã¯æåã¯å°ããå§ããã¹ãã§ãããããžãã¹ããžãã¯ã§å¿
èŠãšãªãè¿œå æ©èœãå«ããŠããéçšã§å€åããŠãããŸãã
+
+## ã³ãŒããæžã
+
+èšå®ã«å¿
èŠãªã³ãŒããå®è£
ããããã«ã`config.go` ãšããååã®æ°ãããã¡ã€ã«ã以äžã®å
容ã§äœæããŸãã
+
+``` go
+package jenkinscireceiver
+
+import (
+ "go.opentelemetry.io/collector/config/confighttp"
+ "go.opentelemetry.io/collector/receiver/scraperhelper"
+
+ "splunk.conf/workshop/example/jenkinscireceiver/internal/metadata"
+)
+
+type Config struct {
+ // HTTPClientSettings contains all the values
+ // that are commonly shared across all HTTP interactions
+ // performed by the collector.
+ confighttp.HTTPClientSettings `mapstructure:",squash"`
+ // ScraperControllerSettings will allow us to schedule
+ // how often to check for updates to builds.
+ scraperhelper.ScraperControllerSettings `mapstructure:",squash"`
+ // MetricsBuilderConfig contains all the metrics
+ // that can be configured.
+ metadata.MetricsBuilderConfig `mapstructure:",squash"`
+}
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/3-component.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/3-component.md
new file mode 100644
index 0000000000..f6d9ad2179
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/3-component.md
@@ -0,0 +1,64 @@
+---
+title: OpenTelemetry Collector Development
+linkTitle: 8.3 ã³ã³ããŒãã³ãã®åŸ©ç¿
+weight: 11
+---
+
+## ã³ã³ããŒãã³ãã®åŸ©ç¿
+
+Jenkins ããã¡ããªã¯ã¹ãååŸããããã«å¿
èŠãªã³ã³ããŒãã³ãã®çš®é¡ã«ã€ããŠããããŸã§ã®å
å®¹ãæ¯ãè¿ããŸãã
+
+{{% tabs %}}
+{{% tab title="Extension" %}}
+extension ã解決ããããžãã¹ãŠãŒã¹ã±ãŒã¹ã¯ä»¥äžã®ãšããã§ãã
+
+1. ã©ã³ã¿ã€ã èšå®ãå¿
èŠãªå
±ææ©èœãæäŸãã
+1. Collector ã®ã©ã³ã¿ã€ã ã芳枬ãã鿥çãªæå©ãããã
+
+詳现㯠[**Extensions Overview**](../2-extensions) ãåç
§ããŠãã ããã
+{{% /tab %}}
+{{% tab title="Receiver" %}}
+receiver ã解決ããããžãã¹ãŠãŒã¹ã±ãŒã¹ã¯ä»¥äžã®ãšããã§ãã
+
+- ãªã¢ãŒããœãŒã¹ããããŒã¿ãååŸãã
+- ãªã¢ãŒããœãŒã¹ããããŒã¿ãåä¿¡ãã
+
+ããã¯äžè¬çã« _pull_ åãš _push_ åã®ããŒã¿åéãšåŒã°ãã詳现㯠[Receiver Overview](../3-receivers) ã§ç¢ºèªã§ããŸãã
+{{% /tab %}}
+{{% tab title="Processor" %}}
+processor ã解決ããããžãã¹ãŠãŒã¹ã±ãŒã¹ã¯ä»¥äžã®ãšããã§ãã
+
+- ããŒã¿ããã£ãŒã«ãããŸãã¯å€ã®è¿œå ãåé€
+- ããŒã¿ã芳枬ãã倿ãè¡ã
+- ãããã¡ãªã³ã°ããã¥ãŒã€ã³ã°ãäžŠã³æ¿ã
+
+ããã§èŠããŠããã¹ãç¹ã¯ãprocessor ãæµããããŒã¿ã¿ã€ãã¯ãäžæµã®ã³ã³ããŒãã³ãã«åãããŒã¿ã¿ã€ãã転éããå¿
èŠããããšããããšã§ãã詳现㯠[Processor Overview](../4-processors) ãèªãã§ãã ããã
+
+{{% /tab %}}
+{{% tab title="Exporter" %}}
+exporter ã解決ããããžãã¹ãŠãŒã¹ã±ãŒã¹ã¯ä»¥äžã®ãšããã§ãã
+
+- ããŒã«ããµãŒãã¹ããŸãã¯ã¹ãã¬ãŒãžã«ããŒã¿ãéä¿¡ãã
+
+OpenTelemetry Collector ã¯ãããã¯ãšã³ããããªãŒã«ã€ã³ã¯ã³ã®å¯èŠ³æž¬æ§ã¹ã€ãŒãã«ãªãããšãç®æããŠããŸãããããããOpenTelemetry ãåœåããæ²ããŠããååãã€ãŸãããã¹ãŠã®äººã«ãã³ããŒãã¥ãŒãã©ã«ãªå¯èŠ³æž¬æ§ãããšããç念ãå®ãããšãéèŠããŠããŸãã
+è©³çŽ°ãæ¹ããŠç¢ºèªããã«ã¯ã[**Exporter Overview**](../5-exporters) ãèªãã§ãã ããã
+
+{{% /tab %}}
+{{% tab title="{{% badge style=primary icon=user-ninja %}}**Ninja:** Connectors{{% /badge %}}" %}}
+
+ããã¯ãCollector ã«æ¯èŒçæè¿è¿œå ãããã³ã³ããŒãã³ãã¿ã€ãã§ãããããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯è§ŠããŠããªãã£ããã®ã§ããconnector ãçè§£ããæè¯ã®æ¹æ³ã¯ãç°ãªããã¬ã¡ããªãŒã¿ã€ãããã€ãã©ã€ã³ããŸããã§äœ¿çšã§ãã processor ã®ãããªãã®ã ãšèããããšã§ããã€ãŸããconnector ã¯ãã°ãšããŠããŒã¿ãåãåã£ãŠã¡ããªã¯ã¹ãšããŠåºåãããããããã€ãã©ã€ã³ããã¡ããªã¯ã¹ãåãåã£ãŠèŠ³æž¬ããããŒã¿ã«åºã¥ãã¡ããªã¯ã¹ãæäŸãããã§ããŸãã
+
+connector ã解決ããããžãã¹ã±ãŒã¹ã¯ä»¥äžã®ãšããã§ãã
+
+- ç°ãªããã¬ã¡ããªãŒã¿ã€ãéã®å€æ
+ - logs ãã metrics ãž
+ - traces ãã metrics ãž
+ - metrics ãã logs ãž
+- åä¿¡ããŒã¿ã芳枬ããç¬èªã®ããŒã¿ãçæ
+ - ã¡ããªã¯ã¹ãåãåã£ãŠããã®ããŒã¿ã®åæã¡ããªã¯ã¹ãçæãã
+
+[Processor Overview](../4-processors) ã® **Ninja** ã»ã¯ã·ã§ã³ã§ç°¡åãªæŠèŠã玹ä»ããŠããŸãã®ã§ãæ°ãã connector ã³ã³ããŒãã³ãã®è¿œå ç¶æ³ã«ã€ããŠããããžã§ã¯ããå¿
ã確èªããŠãã ããã
+{{% /tab %}}
+{{% /tabs %}}
+
+ãããã®ã³ã³ããŒãã³ãæŠèŠãããJenkins çšã«ã¯ pull åã® receiver ãéçºããããšãæããã§ãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/4-design.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/4-design.md
new file mode 100644
index 0000000000..4ca8113ab6
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/4-design.md
@@ -0,0 +1,247 @@
+---
+title: OpenTelemetry Collector Development
+linkTitle: 8.4 Designing the Metrics
+weight: 12
+---
+
+### ã¡ããªã¯ã¹ã®èšèš
+
+ã¬ã·ãŒããŒã§åéããã¡ããªã¯ã¹ãå®çŸ©ããŠãšã¯ã¹ããŒãããããããããã[**mdatagen**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/mdatagen) ã䜿çšããŸããããã¯ãYAML ã§å®çŸ©ããã¡ããªã¯ã¹ãã³ãŒãã«å€æããããã« Collector åãã«éçºãããããŒã«ã§ãã
+
+{{% tabs %}}
+{{% tab title="metadata.yaml"%}}
+
+``` yaml
+---
+# Type defines the name to reference the component
+# in the configuration file
+type: jenkins
+
+# Status defines the component type and the stability level
+status:
+ class: receiver
+ stability:
+ development: [metrics]
+
+# Attributes are the expected fields reported
+# with the exported values.
+attributes:
+ job.name:
+ description: The name of the associated Jenkins job
+ type: string
+ job.status:
+ description: Shows if the job had passed, or failed
+ type: string
+ enum:
+ - failed
+ - success
+ - unknown
+
+# Metrics defines all the pontentially exported values from this receiver.
+metrics:
+ jenkins.jobs.count:
+ enabled: true
+ description: Provides a count of the total number of configured jobs
+ unit: "{Count}"
+ gauge:
+ value_type: int
+ jenkins.job.duration:
+ enabled: true
+ description: Show the duration of the job
+ unit: "s"
+ gauge:
+ value_type: int
+ attributes:
+ - job.name
+ - job.status
+ jenkins.job.commit_delta:
+ enabled: true
+ description: The calculation difference of the time job was finished minus commit timestamp
+ unit: "s"
+ gauge:
+ value_type: int
+ attributes:
+ - job.name
+ - job.status
+```
+
+{{% /tab %}}
+{{% tab title="gen.go" %}}
+
+``` go
+// To generate the additional code needed to capture metrics,
+// the following command to be run from the shell:
+// go generate -x ./...
+
+//go:generate go run github.com/open-telemetry/opentelemetry-collector-contrib/cmd/mdatagen@v0.80.0 metadata.yaml
+package jenkinscireceiver
+
+// There is no code defined within this file.
+```
+
+{{% /tab%}}
+{{% /tabs %}}
+
+次ã®ã»ã¯ã·ã§ã³ã«é²ãåã«ããããã®ãã¡ã€ã«ããããžã§ã¯ããã©ã«ãå
ã«äœæããŠãã ããã
+
+## Factory ã®æ§ç¯
+
+Factory ã¯ãæäŸãããèšå®ã«åºã¥ããŠãªããžã§ã¯ãïŒãã®ã±ãŒã¹ã§ã¯ `jenkinscireceiver`ïŒãåçã«çæã§ããããã«ãããœãããŠã§ã¢ãã¶ã€ã³ãã¿ãŒã³ã§ãããã身è¿ãªäŸã§èª¬æãããšãæºåž¯é»è©±ã·ã§ããã«è¡ããèªåã®åžæã«åã£ãé»è©±ãäŒãããããåºå¡ããæž¡ããŠããããããªãã®ã§ãã
+
+`go generate -x ./...` ã³ãã³ããå®è¡ãããšãæ°ãããã©ã«ã `jenkinscireceiver/internal/metadata` ãäœæãããå®çŸ©ãããã¡ããªã¯ã¹ããšã¯ã¹ããŒãããããã«å¿
èŠãªãã¹ãŠã®ã³ãŒããçæãããŸããå¿
èŠãªã³ãŒãã¯æ¬¡ã®ãšããã§ãã
+
+{{% tabs %}}
+{{% tab title="factory.go" %}}
+
+``` go
+package jenkinscireceiver
+
+import (
+ "errors"
+
+ "go.opentelemetry.io/collector/component"
+ "go.opentelemetry.io/collector/config/confighttp"
+ "go.opentelemetry.io/collector/receiver"
+ "go.opentelemetry.io/collector/receiver/scraperhelper"
+
+ "splunk.conf/workshop/example/jenkinscireceiver/internal/metadata"
+)
+
+func NewFactory() receiver.Factory {
+ return receiver.NewFactory(
+ metadata.Type,
+ newDefaultConfig,
+ receiver.WithMetrics(newMetricsReceiver, metadata.MetricsStability),
+ )
+}
+
+func newMetricsReceiver(_ context.Context, set receiver.CreateSettings, cfg component.Config, consumer consumer.Metrics) (receiver.Metrics, error) {
+ // Convert the configuration into the expected type
+ conf, ok := cfg.(*Config)
+ if !ok {
+ return nil, errors.New("can not convert config")
+ }
+ sc, err := newScraper(conf, set)
+ if err != nil {
+ return nil, err
+ }
+ return scraperhelper.NewScraperControllerReceiver(
+ &conf.ScraperControllerSettings,
+ set,
+ consumer,
+ scraperhelper.AddScraper(sc),
+ )
+}
+```
+
+{{% /tab %}}
+{{% tab title="config.go" %}}
+
+``` go
+package jenkinscireceiver
+
+import (
+ "go.opentelemetry.io/collector/config/confighttp"
+ "go.opentelemetry.io/collector/receiver/scraperhelper"
+
+ "splunk.conf/workshop/example/jenkinscireceiver/internal/metadata"
+)
+
+type Config struct {
+ // HTTPClientSettings contains all the values
+ // that are commonly shared across all HTTP interactions
+ // performed by the collector.
+ confighttp.HTTPClientSettings `mapstructure:",squash"`
+ // ScraperControllerSettings will allow us to schedule
+ // how often to check for updates to builds.
+ scraperhelper.ScraperControllerSettings `mapstructure:",squash"`
+ // MetricsBuilderConfig contains all the metrics
+ // that can be configured.
+ metadata.MetricsBuilderConfig `mapstructure:",squash"`
+}
+
+func newDefaultConfig() component.Config {
+ return &Config{
+ ScraperControllerSettings: scraperhelper.NewDefaultScraperControllerSettings(metadata.Type),
+ HTTPClientSettings: confighttp.NewDefaultHTTPClientSettings(),
+ MetricsBuilderConfig: metadata.DefaultMetricsBuilderConfig(),
+ }
+}
+```
+
+{{% /tab %}}
+{{% tab title="scraper.go" %}}
+
+``` go
+package jenkinscireceiver
+
+type scraper struct {}
+
+func newScraper(cfg *Config, set receiver.CreateSettings) (scraperhelper.Scraper, error) {
+ // Create a our scraper with our values
+ s := scraper{
+ // To be filled in later
+ }
+ return scraperhelper.NewScraper(metadata.Type, s.scrape)
+}
+
+func (scraper) scrape(ctx context.Context) (pmetric.Metrics, error) {
+ // To be filled in
+ return pmetrics.NewMetrics(), nil
+}
+```
+
+{{% /tab %}}
+{{% tab title="build-config.yaml" %}}
+
+``` yaml
+---
+dist:
+ name: otelcol
+ description: "Conf workshop collector"
+ output_path: ./dist
+ version: v0.0.0-experimental
+
+extensions:
+ - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.80.0
+ - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.80.0
+
+receivers:
+ - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.80.0
+ - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.80.0
+ - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.80.0
+ - gomod: splunk.conf/workshop/example/jenkinscireceiver v0.0.0
+ path: ./jenkinscireceiver
+
+processors:
+ - gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.80.0
+
+exporters:
+ - gomod: go.opentelemetry.io/collector/exporter/loggingexporter v0.80.0
+ - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.80.0
+ - gomod: go.opentelemetry.io/collector/exporter/otlphttpexporter v0.80.0
+
+# This replace is a go directive that allows for redefine
+# where to fetch the code to use since the default would be from a remote project.
+replaces:
+- splunk.conf/workshop/example/jenkinscireceiver => ./jenkinscireceiver
+```
+
+{{% /tab %}}
+{{% tab title="project layout" %}}
+
+``` text
+âââ build-config.yaml
+âââ jenkinscireceiver
+ âââ go.mod
+ âââ config.go
+ âââ factory.go
+ âââ scraper.go
+ âââ internal
+ âââ metadata
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+ãããã®ãã¡ã€ã«ãæåŸ
ãããå
容ã§ãããžã§ã¯ãã«æžã蟌ãã ãã`go mod tidy` ãå®è¡ããŠãã ãããããã«ãããã¹ãŠã®ãªã¢ãŒãäŸåé¢ä¿ãååŸããã`go.mod` ãæŽæ°ãã㊠`go.sum` ãã¡ã€ã«ãçæãããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/5-business-logic.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/5-business-logic.md
new file mode 100644
index 0000000000..ffe78ed15f
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/5-business-logic.md
@@ -0,0 +1,224 @@
+---
+title: OpenTelemetry Collector Development
+linkTitle: 8.5 Building Business Logic
+weight: 13
+---
+
+## ããžãã¹ããžãã¯ã®æ§ç¯
+
+çŸæç¹ã§ã¯ããŸã äœãåŠçãè¡ããªãã«ã¹ã¿ã ã³ã³ããŒãã³ããããã ããªã®ã§ãJenkins ããããŒã¿ãååŸããããã«å¿
èŠãªããžãã¯ã远å ããå¿
èŠããããŸãã
+
+ããããå
ã«è¡ãæé ã¯æ¬¡ã®ãšããã§ãã
+
+1. Jenkins ã«æ¥ç¶ããã¯ã©ã€ã¢ã³ããäœæãã
+1. èšå®ãããŠãããã¹ãŠã®ãžã§ããååŸãã
+1. èšå®ããããžã§ãã®çŽè¿ã®ãã«ãã®ã¹ããŒã¿ã¹ãã¬ããŒããã
+1. ã³ãããã®ã¿ã€ã ã¹ã¿ã³ããšãžã§ãå®äºæå»ã®å·®ãèšç®ãã
+
+倿Žã¯ `scraper.go` ã«å¯ŸããŠè¡ããŸãã
+
+{{% tabs %}}
+{{% tab title="1. Add Jenkins client" %}}
+
+Jenkins ãµãŒããŒã«æ¥ç¶ããããã«ãJenkins ãµãŒããŒããããŒã¿ãèªã¿åãã®ã«å¿
èŠãªæ©èœãæäŸããããã±ãŒãž ["github.com/yosida95/golang-jenkins"](https://pkg.go.dev/github.com/yosida95/golang-jenkins) ã䜿çšããŸãã
+
+ããã«ã["go.opentelemetry.io/collector/receiver/scraperhelper"](https://pkg.go.dev/go.opentelemetry.io/collector/receiver/scraperhelper) ã©ã€ãã©ãªã®ãã«ããŒé¢æ°ã掻çšããŠãã³ã³ããŒãã³ãã®èµ·åãå®äºããæç¹ã§ Jenkins ãµãŒããŒã«æ¥ç¶ã§ãããããstart 颿°ãäœæããŸãã
+
+```go
+package jenkinscireceiver
+
+import (
+ "context"
+
+ jenkins "github.com/yosida95/golang-jenkins"
+ "go.opentelemetry.io/collector/component"
+ "go.opentelemetry.io/collector/pdata/pmetric"
+ "go.opentelemetry.io/collector/receiver"
+ "go.opentelemetry.io/collector/receiver/scraperhelper"
+
+ "splunk.conf/workshop/example/jenkinscireceiver/internal/metadata"
+)
+
+type scraper struct {
+ mb *metadata.MetricsBuilder
+ client *jenkins.Jenkins
+}
+
+func newScraper(cfg *Config, set receiver.CreateSettings) (scraperhelper.Scraper, error) {
+ s := &scraper{
+ mb : metadata.NewMetricsBuilder(cfg.MetricsBuilderConfig, set),
+ }
+
+ return scraperhelper.NewScraper(
+ metadata.Type,
+ s.scrape,
+ scraperhelper.WithStart(func(ctx context.Context, h component.Host) error {
+ client, err := cfg.ToClient(h, set.TelemetrySettings)
+ if err != nil {
+ return err
+ }
+ // The collector provides a means of injecting authentication
+ // on our behalf, so this will ignore the libraries approach
+ // and use the configured http client with authentication.
+ s.client = jenkins.NewJenkins(nil, cfg.Endpoint)
+ s.client.SetHTTPClient(client)
+ return nil
+ }),
+ )
+}
+
+func (s scraper) scrape(ctx context.Context) (pmetric.Metrics, error) {
+ // To be filled in
+ return pmetric.NewMetrics(), nil
+}
+
+```
+
+ããã§ Jenkins receiver ã®åæåã«å¿
èŠãªã»ããã¢ããã³ãŒãã¯ãã¹ãŠå®äºã§ãã
+{{% /tab%}}
+{{% tab title="2. Capture all configured jobs" %}}
+
+ããããã¯ããããŸã§æªå®è£
ã®ãŸãŸã«ãªã£ãŠãã `scrape` ã¡ãœããã«çŠç¹ãåœãŠãŠãããŸãããã®ã¡ãœããã¯ãèšå®ã§æå®ãããééïŒããã©ã«ãã§ã¯1åããšïŒã§å®è¡ãããŸãã
+
+èšå®æžã¿ã®ãžã§ãæ°ãååŸãããçç±ã¯ãJenkins ãµãŒããŒã®æé·ãå¯èŠåããã©ãã ãã®ãããžã§ã¯ãããªã³ããŒãã£ã³ã°ãããããæž¬å®ããããã§ãããããå®çŸããããã«ãjenkins ã¯ã©ã€ã¢ã³ããåŒã³åºããŠãã¹ãŠã®ãžã§ããäžèŠ§è¡šç€ºããŸãããšã©ãŒãè¿ãããå Žåã¯ã¡ããªã¯ã¹ãè¿ããã«ãã®ãšã©ãŒãè¿ãããã以å€ã®å Žå㯠metric builder ããããŒã¿ãçºè¡ããŸãã
+
+```go
+func (s scraper) scrape(ctx context.Context) (pmetric.Metrics, error) {
+ jobs, err := s.client.GetJobs()
+ if err != nil {
+ return pmetric.Metrics{}, err
+ }
+
+ // Recording the timestamp to ensure
+ // all captured data points within this scrape have the same value.
+ now := pcommon.NewTimestampFromTime(time.Now())
+
+ // Casting to an int64 to match the expected type
+ s.mb.RecordJenkinsJobsCountDataPoint(now, int64(len(jobs)))
+
+ // To be filled in
+
+ return s.mb.Emit(), nil
+}
+```
+
+{{% /tab%}}
+{{% tab title="3. Report the status of each job" %}}
+
+åã®ã¹ãããã§ã¯ããã¹ãŠã®ãžã§ããååŸããŠããã®åæ°ãã¬ããŒãã§ããããã«ããŸããããã®ã¹ãããã§ã¯ãåãžã§ãã調æ»ããã¬ããŒããããå€ããã¡ããªã¯ã¹ãååŸããŸãã
+
+```go
+func (s scraper) scrape(ctx context.Context) (pmetric.Metrics, error) {
+ jobs, err := s.client.GetJobs()
+ if err != nil {
+ return pmetric.Metrics{}, err
+ }
+
+ // Recording the timestamp to ensure
+ // all captured data points within this scrape have the same value.
+ now := pcommon.NewTimestampFromTime(time.Now())
+
+ // Casting to an int64 to match the expected type
+ s.mb.RecordJenkinsJobsCountDataPoint(now, int64(len(jobs)))
+
+ for _, job := range jobs {
+ // Ensure we have valid results to start off with
+ var (
+ build = job.LastCompletedBuild
+ status = metadata.AttributeJobStatusUnknown
+ )
+
+ // This will check the result of the job, however,
+ // since the only defined attributes are
+ // `success`, `failure`, and `unknown`.
+ // it is assume that anything did not finish
+ // with a success or failure to be an unknown status.
+
+ switch build.Result {
+ case "aborted", "not_built", "unstable":
+ status = metadata.AttributeJobStatusUnknown
+ case "success":
+ status = metadata.AttributeJobStatusSuccess
+ case "failure":
+ status = metadata.AttributeJobStatusFailed
+ }
+
+ s.mb.RecordJenkinsJobDurationDataPoint(
+ now,
+ int64(job.LastCompletedBuild.Duration),
+ job.Name,
+ status,
+ )
+ }
+
+ return s.mb.Emit(), nil
+}
+```
+
+{{% /tab%}}
+{{% tab title="4. Report the delta" %}}
+
+æåŸã®ã¹ãããã§ã¯ãã³ããããããžã§ãå®äºãŸã§ã«ããã£ãæéãèšç®ããDORA ã¡ããªã¯ã¹ãæšå®ããã®ã«åœ¹ç«ãŠãŸãã
+
+```go
+func (s scraper) scrape(ctx context.Context) (pmetric.Metrics, error) {
+ jobs, err := s.client.GetJobs()
+ if err != nil {
+ return pmetric.Metrics{}, err
+ }
+
+ // Recording the timestamp to ensure
+ // all captured data points within this scrape have the same value.
+ now := pcommon.NewTimestampFromTime(time.Now())
+
+ // Casting to an int64 to match the expected type
+ s.mb.RecordJenkinsJobsCountDataPoint(now, int64(len(jobs)))
+
+ for _, job := range jobs {
+ // Ensure we have valid results to start off with
+ var (
+ build = job.LastCompletedBuild
+ status = metadata.AttributeJobStatusUnknown
+ )
+
+ // Previous step here
+
+ // Ensure that the `ChangeSet` has values
+ // set so there is a valid value for us to reference
+ if len(build.ChangeSet.Items) == 0 {
+ continue
+ }
+
+ // Making the assumption that the first changeset
+ // item is the most recent change.
+ change := build.ChangeSet.Items[0]
+
+ // Record the difference from the build time
+ // compared against the change timestamp.
+ s.mb.RecordJenkinsJobCommitDeltaDataPoint(
+ now,
+ int64(build.Timestamp-change.Timestamp),
+ job.Name,
+ status,
+ )
+ }
+
+ return s.mb.Emit(), nil
+}
+```
+
+{{% /tab%}}
+{{% /tabs %}}
+
+ãããã®æé ããã¹ãŠå®äºãããšãã«ã¹ã¿ã ã® Jenkins CI receiver ã®æ§ç¯ãå®äºã§ãïŒ
+
+## 次ã¯äœã§ããããïŒ
+
+ãã®ã³ã³ããŒãã³ãã«å¯ŸããŠãä»ã«ã欲ããæ©èœãæãæµ®ãã¶ãããããŸãããããšãã°æ¬¡ã®ãããªãã®ã§ãã
+
+- ãžã§ãã§äœ¿çšããããã©ã³ãåãå«ããããšã¯ã§ããŸããïŒ
+- ãžã§ãã®ãããžã§ã¯ãåãå«ããããšã¯ã§ããŸããïŒ
+- ãããžã§ã¯ãå
šäœã®ãžã§ãå®è¡æéãåèšããã«ã¯ã©ãããã°ããã§ããããïŒ
+- 倿Žãåäœããããšãã©ã®ããã«æ€èšŒããã°ããã§ããããïŒ
+
+ãã²ãã®æéã䜿ã£ãŠããããã詊ãããããããŠå£ããŠã¿ãããèšå®ã倿ŽããŠã¿ãããããã«ã¯ãã«ããããã°ãååŸããããšã«ãææŠããŠã¿ãŠãã ããã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/_index.md
new file mode 100644
index 0000000000..6e38a6e4f6
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/8-develop/_index.md
@@ -0,0 +1,37 @@
+---
+title: OpenTelemetry Collector ã®éçº
+linkTitle: 8. Develop
+weight: 8
+---
+
+## ã«ã¹ã¿ã ã³ã³ããŒãã³ãã®éçº
+
+Open Telemetry Collector ã®ã³ã³ããŒãã³ããæ§ç¯ããã«ã¯ã3 ã€ã®éèŠãªèŠçŽ ãå¿
èŠã§ãã
+
+1. Configuration - _ãŠãŒã¶ãŒãèšå®ããããã«å
¬éãããå€_
+1. Factory - _æäŸãããå€ãçšããŠã³ã³ããŒãã³ããçæãã_
+1. Business Logic - _ã³ã³ããŒãã³ããå®è¡ãã¹ãåŠç_
+
+ããã§ã¯ããããžã§ã¯ãã®éèŠãª DevOps ã¡ããªã¯ã¹ã远跡ã§ããããã«ãJenkins ãšé£æºããã³ã³ããŒãã³ããæ§ç¯ããäŸã䜿çšããŸãã
+
+枬å®å¯Ÿè±¡ãšãããã¡ããªã¯ã¹ã¯æ¬¡ã®ãšããã§ãã
+
+1. Lead time for changes - _ãã³ããããæ¬çªç°å¢ã«å°éãããŸã§ã«ãããæéã_
+1. Change failure rate - _ãæ¬çªç°å¢ã§é害ãåŒãèµ·ãããããã€ã®å²åã_
+1. Deployment frequency - _ã[ããŒã ] ãæ¬çªç°å¢ã«ãªãªãŒã¹ããé »åºŠã_
+1. Mean time to recover - _ã[ããŒã ] ãæ¬çªç°å¢ã®é害ãã埩æ§ãããŸã§ã«ãããæéã_
+
+ãããã®ææšã¯ããœãããŠã§ã¢éçºããŒã ã®ããã©ãŒãã³ã¹ã瀺ãããã«ãGoogle ã® DevOps Research and Assesment (DORA)[^1] ããŒã ã«ãã£ãŠç¹å®ãããŸããã_Jenkins CI_ ãéžãã çç±ã¯ãåããªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ã®ãšã³ã·ã¹ãã ã«ãšã©ãŸãããšã§ãå°æ¥çã«ãã³ããŒã管çãã CI ããŒã«ãæ¡çšããéã®äŸãšããŠåœ¹ç«ãŠãããããã§ãã
+
+## Instrument ãš Component ã®æ¯èŒ
+
+çµç¹ã«ããã Observability ã®ã¬ãã«ãåäžãããéã«ã¯ãããã€ãã®ãã¬ãŒããªããçãããããèæ
®ãã¹ãç¹ããããŸãã
+
+| | é·æ | çæ |
+| ----- | ----- | ----- |
+| **(Auto) Instrumented** | ã·ã¹ãã ã芳枬ããããã«å€éš API ãç£èŠããå¿
èŠããªãã | èšè£
ã倿Žããã«ã¯ãããžã§ã¯ããžã®å€æŽãå¿
èŠãšãªãã |
+| | ã·ã¹ãã ã®ãªãŒããŒãéçºè
ã Observability ã倿Žã§ããã | 远å ã®ã©ã³ã¿ã€ã äŸåé¢ä¿ãå¿
èŠãšãªãã |
+| | ã·ã¹ãã ã®ã³ã³ããã¹ããçè§£ããååŸããããŒã¿ã _Exemplars_ ãšé¢é£ä»ããããšãã§ããã | ã·ã¹ãã ã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ãããã |
+| **Component** | - ããŒã¿åãã»ãã³ãã£ã¯ã¹ã®å€æŽããã·ã¹ãã ã®ãªãªãŒã¹ãµã€ã¯ã«ãšã¯ç¬ç«ããŠå±éã§ããã | ç Žå£ç㪠API 倿Žã«ã¯ãã·ã¹ãã ãš collector ã®éã§é£æºãããªãªãŒã¹ãå¿
èŠãšãªãã |
+| | åéããŒã¿ã®æŽæ°ãæ¡åŒµã¯ããŠãŒã¶ãŒããèŠãŠã·ãŒã ã¬ã¹ãªå€æŽãšãªãã | ååŸããããŒã¿ã®ã»ãã³ãã£ã¯ã¹ããæ°ããã·ã¹ãã ãªãªãŒã¹ãšæŽåããã«äºæããå£ããããšãããã |
+| | æ¯æŽããŒã ã Observability ã®å®è·µã«ã€ããŠæ·±ãçè§£ããŠããå¿
èŠããªãã | ã·ã¹ãã ãã衚ã«åºããã®ã¯ãå³å¯ã«å€éšå
¬éãããŠããæ
å ±ã«éãããã |
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/_index.md
new file mode 100644
index 0000000000..57d8fd2348
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/1-opentelemetry-collector/_index.md
@@ -0,0 +1,79 @@
+---
+title: OpenTelemetry ã§ãªãã¶ãŒãããªãã£ãã¯ã©ãŠããã€ãã£ãã«
+linkTitle: OpenTelemetry Collector ã®æŠå¿µ
+weight: 1
+description: OpenTelemetry Collector ã®æŠå¿µãšãSplunk Observability Cloud ã«ããŒã¿ãéä¿¡ããããã®äœ¿ãæ¹ãåŠã³ãŸãã
+authors: ["Robert Castley"]
+time: 1 hour
+---
+
+## æŠèŠ
+
+OpenTelemetry ã䜿ãå§ããçµç¹ã¯ããŸããªãã¶ãŒãããªãã£ããã¯ãšã³ãã«ããŒã¿ãçŽæ¥éä¿¡ããããšããçæãããããããŸãããããã¯åæãã¹ãã«ã¯é©ããŠããŸããããªãã¶ãŒãããªãã£ã¢ãŒããã¯ãã£ã®äžéšãšã㊠OpenTelemetry collector ãå©çšãããšå€ãã®ã¡ãªããããããæ¬çªç°å¢ã®ãããã€ã¡ã³ãã«ã¯æšå¥šãããã¢ãããŒãã§ãã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãOpenTelemetry collector ã®å©çšã«çŠç¹ãåœãŠãSplunk Observability Cloud ã§å©çšããããã® receiversãprocessorsãexporters ã®èšå®ã®åºç€ããå§ããŸãããã®ã¯ãŒã¯ã·ã§ãããéããŠãåå è
ã¯åå¿è
ããã忣ãã©ãããã©ãŒã ã®ããžãã¹äžã®ãªãã¶ãŒãããªãã£ããŒãºã解決ããããã«ã«ã¹ã¿ã ã³ã³ããŒãã³ãã远å ã§ããã¬ãã«ãžãšæé·ããããšãã§ããŸãã
+
+### Ninja ã»ã¯ã·ã§ã³
+
+ã¯ãŒã¯ã·ã§ããå
šäœãéããŠãå±éå¯èœãª {{% badge style=primary icon=user-ninja %}}**Ninja** ã»ã¯ã·ã§ã³{{% /badge %}}ãçšæãããŠããŸãããããã¯ããå®è·µçã§ãããã«èžã¿èŸŒãã æè¡çãªè©³çްã«ã€ããŠè§£èª¬ããŠãããã¯ãŒã¯ã·ã§ããäžãŸãã¯ãèªèº«ã®ãæéã«åãããŠæ¢æ±ããŠããã ããŸãã
+
+OpenTelemetry ãããžã§ã¯ãã¯é »ç¹ã«éçºãé²ããããŠããããããããã®ã»ã¯ã·ã§ã³ã®å
容ã¯å€ããªã£ãŠããå¯èœæ§ãããç¹ã«ã泚æãã ããã詳现ãåæããŠããªãå Žåã«åããŠãªã³ã¯ãæäŸããŸãã®ã§ãæŽæ°ãå¿
èŠãªç®æãèŠã€ããå Žåã¯ãç¥ãããã ããã
+
+---
+
+{{% expand title="{{% badge style=primary icon=user-ninja %}}**Ninja:** èªåã詊ããïŒ{{% /badge %}}" %}}
+**ãã®ã¯ãŒã¯ã·ã§ãããå®äºããã°ãããªãã¯æ£åŒã« OpenTelemetry Collector ã® Ninja ã§ãïŒ**
+{{% /expand %}}
+
+---
+
+## 察象è
+
+ãã®ã€ã³ã¿ã©ã¯ãã£ããªã¯ãŒã¯ã·ã§ããã¯ãOpenTelemetry Collector ã®ã¢ãŒããã¯ãã£ãšãããã€ã¡ã³ãã«ã€ããŠããã«åŠã³ããéçºè
ããã³ã·ã¹ãã 管çè
ã察象ãšããŠããŸãã
+
+## åææ¡ä»¶
+
+- åå è
ã¯ããŒã¿åéã«ã€ããŠåºæ¬çãªçè§£ãããããš
+- ã³ãã³ãã©ã€ã³ããã³ vim/vi ã®çµéšãããããš
+- Ubuntu 20.04 LTS ãŸã㯠22.04 LTS ãåäœããã€ã³ã¹ã¿ã³ã¹/ãã¹ã/VM
+ - æå°èŠä»¶ã¯ AWS/EC2 t2.microïŒ1 CPUã1GB RAMã8GB ã¹ãã¬ãŒãžïŒ
+
+## åŠç¿ç®æš
+
+ãã®ã¯ãŒã¯ã·ã§ãããçµãããŸã§ã«ãåå è
ã¯ä»¥äžã®ããšãã§ããããã«ãªããŸãïŒ
+
+- OpenTelemetry ã®ã³ã³ããŒãã³ããçè§£ãã
+- receiversãprocessorsãexporters ã䜿çšããŠããŒã¿ãåéã»åæãã
+- OpenTelemetry ã䜿çšããã¡ãªãããææ¡ãã
+- ããžãã¹ããŒãºã解決ããããã®ã«ã¹ã¿ã ã³ã³ããŒãã³ããæ§ç¯ãã
+
+## OpenTelemetry ã®ã¢ãŒããã¯ãã£
+
+{{< mermaid >}}
+%%{
+ init:{
+ "theme":"base",
+ "themeVariables": {
+ "primaryColor": "#ffffff",
+ "clusterBkg": "#eff2fb",
+ "defaultLinkColor": "#333333"
+ }
+ }
+}%%
+
+flowchart LR;
+ subgraph Collector
+ A[OTLP] --> M(Receivers)
+ B[JAEGER] --> M(Receivers)
+ C[Prometheus] --> M(Receivers)
+ end
+ subgraph Processors
+ M(Receivers) --> H(Filters, Attributes, etc)
+ E(Extensions)
+ end
+ subgraph Exporters
+ H(Filters, Attributes, etc) --> S(OTLP)
+ H(Filters, Attributes, etc) --> T(JAEGER)
+ H(Filters, Attributes, etc) --> U(Prometheus)
+ end
+{{< /mermaid >}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-1-validation.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-1-validation.md
new file mode 100644
index 0000000000..16ac0c0f59
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-1-validation.md
@@ -0,0 +1,60 @@
+---
+title: 1.1 Validation & Load Generation
+linkTitle: 1.1 Validation & Load Generation
+weight: 1
+---
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã[**https://otelbin.io**](https://otelbin.io/) ã䜿çšã㊠YAML æ§æãçŽ æ©ãæ€èšŒããOpenTelemetry ã®æ§æãæ£ç¢ºã§ããããšã確èªããŸãããã®ã¹ãããã¯ãã»ãã·ã§ã³äžã«ãã¹ããå®è¡ããåã«ãšã©ãŒãåé¿ããã®ã«åœ¹ç«ã¡ãŸãã
+
+{{% notice title="Exercise" style="green" icon="running" %}}
+æ§æãæ€èšŒããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
+
+1. [**https://otelbin.io**](https://otelbin.io/) ãéããå·Šãã€ã³ã« YAML ã貌ãä»ããŠæ¢åã®æ§æã眮ãæããŸãã
+ > [!INFO]
+ > Mac ã䜿çšããŠãããSplunk Workshop ã€ã³ã¹ã¿ã³ã¹ã䜿çšããŠããªãå Žåã¯ã次ã®ã³ãã³ããå®è¡ããããšã§ã`agent.yaml` ãã¡ã€ã«ã®å
容ãçŽ æ©ãã¯ãªããããŒãã«ã³ããŒã§ããŸãã
+ >
+ > ```bash
+ > cat agent.yaml | pbcopy
+ > ```
+
+2. ããŒãžã®äžéšã§ãæ€èšŒå¯Ÿè±¡ãšã㊠**Splunk OpenTelemetry Collector** ãéžæãããŠããããšã確èªããŠãã ããããã®ãªãã·ã§ã³ãéžæã**ãªã**å ŽåãUI ã« `Receiver "hostmetrics" is unused. (Line 8)` ãšããèŠåã衚瀺ãããŸãã
+
+3. æ€èšŒãå®äºãããã以äžã®ç»å衚çŸãåç
§ããŠããã€ãã©ã€ã³ãæ£ããèšå®ãããŠããããšã確èªããŠãã ããã
+
+ã»ãšãã©ã®å Žåã**äž»èŠãªãã€ãã©ã€ã³**ã®ã¿ã衚瀺ããŸãããã ãã3 ã€ã®ãã€ãã©ã€ã³ (TracesãMetricsãLogs) ãã¹ãŠãåãæ§é ãå
±æããŠããå Žåã¯ããããããåå¥ã«ç€ºãã®ã§ã¯ãªãããã®æšãèšèŒããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(resourcedetection
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ %% Links
+ subID1:::sub-traces
+ subgraph " "
+ subgraph subID1[**Traces/Metrics/Logs**]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PRO2
+ PRO2 --> PRO3
+ PRO3 --> EXP1
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-traces stroke:#fff,stroke-width:1px, color:#fff,stroke-dasharray: 3 3;
+```
+
+{{% /notice %}}
+
+---
+
+## Load Generation Tool
+
+ãã®ã¯ãŒã¯ã·ã§ããã®ããã«ã`loadgen` ããŒã«ãç¹å¥ã«éçºããŸããã`loadgen` ã¯ããã¬ãŒã¹ããã³ãã®ã³ã°ã¢ã¯ãã£ããã£ãã·ãã¥ã¬ãŒãããããã®æè»ãªè² è·çæããŒã«ã§ããããã©ã«ãã§ baseãhealthãsecurity ã®ãã¬ãŒã¹ããµããŒããããªãã·ã§ã³ã§ã©ã³ãã ãªåŒçšããã¬ãŒã³ããã¹ããŸã㯠JSON 圢åŒã§ãã¡ã€ã«ã«ãã®ã³ã°ããæ©èœãåããŠããŸãã
+
+`loadgen` ã«ãã£ãŠçæãããåºåã¯ãOpenTelemetry ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã©ã€ãã©ãªã«ãã£ãŠçæããããã®ãæš¡å£ããŠãããCollector ã®åŠçããžãã¯ããã¹ãããããšãå¯èœã«ããçŸå®ã®ã·ããªãªãæš¡å£ããããã®ã·ã³ãã«ãã€åŒ·åãªæ¹æ³ãæäŸããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-2-test-agent.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-2-test-agent.md
new file mode 100644
index 0000000000..1d0235644c
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-2-test-agent.md
@@ -0,0 +1,95 @@
+---
+title: 1.2 Test Agent Configuration
+linkTitle: 1.2 Test Agent Configuration
+weight: 2
+---
+
+æ°ããäœæãã `agent.yaml` ã䜿ã£ãŠ OpenTelemetry Collector ãèµ·åããæºåãæŽããŸããããã®æŒç¿ã§ã¯ãOpenTelemetry Collector ãéããŠããŒã¿ãã©ã®ããã«æµããŠããã®ããçè§£ããããã®åºç€ãç¯ããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Agent ãèµ·åãã**: **Agent terminal** ãŠã£ã³ããŠã§æ¬¡ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash { title="Start Collector" }
+../otelcol --config=agent.yaml
+```
+
+**ãããã°åºåã確èªãã**: ãã¹ãŠãæ£ããæ§æãããŠããã°ãåºåã®æåãšæåŸã®è¡ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text
+2025/01/13T12:43:51 settings.go:478: Set config to [agent.yaml]
+
+2025-01-13T12:43:51.747+0100 info service@v0.120.0/service.go:261 Everything is ready. Begin running and processing data.
+```
+
+**ãã¹ãçš Span ãéä¿¡ãã**: ã¢ããªã±ãŒã·ã§ã³ãèšè£
ãã代ããã«ã`loadgen` ããŒã«ã䜿ã£ãŠ OpenTelemetry Collector ãžãã¬ãŒã¹ããŒã¿ãéä¿¡ããåäœãã·ãã¥ã¬ãŒãããŸãã
+
+**Spans terminal** ãŠã£ã³ããŠã§ `1-agent` ãã£ã¬ã¯ããªã«ç§»åããæ¬¡ã®ã³ãã³ããå®è¡ã㊠Span ã 1 ä»¶éä¿¡ããŸãã
+
+{{% tabs %}}
+{{% tab title="Start Load Generator" %}}
+
+```bash
+../loadgen -count 1
+```
+
+{{% /tab %}}
+{{% tab title="Load Generator Output" %}}
+
+```text
+Sending traces. Use Ctrl-C to stop.
+Response: {"partialSuccess":{}}
+
+Base trace sent with traceId: 1aacb1db8a6d510f10e52f154a7fdb90 and spanId: 7837a3a2d3635d9f
+ ```
+
+`{"partialSuccess":{}}`: `partialSuccess` ãã£ãŒã«ãã空ã§ããããã100% æåããããšã瀺ããŠããŸããäžéšã倱æããå Žåã¯ããã®ãã£ãŒã«ãã«å€±æããéšåã®è©³çްãå«ãŸããŸãã
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**ãããã°åºåã確èªãã**:
+
+**Agent terminal** ãŠã£ã³ããŠã§ Collector ã®ãããã°åºåã確èªããŸãã
+
+```text
+2025-03-06T10:11:35.174Z info Traces {"otelcol.component.id": "debug", "otelcol.component.kind": "Exporter", "otelcol.signal": "traces", "resource spans": 1, "spans": 1}
+2025-03-06T10:11:35.174Z info ResourceSpans #0
+Resource SchemaURL: https://opentelemetry.io/schemas/1.6.1
+Resource attributes:
+ -> service.name: Str(cinema-service)
+ -> deployment.environment: Str(production)
+ -> host.name: Str(workshop-instance)
+ -> os.type: Str(linux)
+ -> otelcol.service.mode: Str(agent)
+ScopeSpans #0
+ScopeSpans SchemaURL:
+InstrumentationScope cinema.library 1.0.0
+InstrumentationScope attributes:
+ -> fintest.scope.attribute: Str(Starwars, LOTR)
+Span #0
+ Trace ID : 0ef4daa44a259a7199a948231bc383c0
+ Parent ID :
+ ID : e8fdd442c36cbfb1
+ Name : /movie-validator
+ Kind : Server
+ Start time : 2025-03-06 10:11:35.163557 +0000 UTC
+ End time : 2025-03-06 10:11:36.163557 +0000 UTC
+ Status code : Ok
+ Status message : Success
+Attributes:
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(+1555-867-5309)
+ -> user.email: Str(george@deathstar.email)
+ -> user.password: Str(LOTR>StarWars1-2-3)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ -> payment.amount: Double(86.48)
+ {"otelcol.component.id": "debug", "otelcol.component.kind": "Exporter", "otelcol.signal": "traces"}
+```
+
+> [!IMPORTANT]
+> **Agent terminal** ãŠã£ã³ããŠã§ `Ctrl-C` ã䜿ã£ãŠ `agent` ã忢ããŸãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-3-fileexporter/1-test-fileexporter.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-3-fileexporter/1-test-fileexporter.md
new file mode 100644
index 0000000000..b7d605dd9b
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-3-fileexporter/1-test-fileexporter.md
@@ -0,0 +1,188 @@
+---
+title: 1.3.1 File Exporter ã®ãã¹ã
+linkTitle: 1.3.1 File Exporter ã®ãã¹ã
+weight: 1
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Agent ãåèµ·åãã**: **Agent ã¿ãŒããã«** ãŠã£ã³ããŠãéãã倿Žããæ§æã䜿ã£ãŠ `agent` ã (å) èµ·åããŸãã
+
+{{% tabs %}}
+{{% tab title="Start the Agent" %}}
+
+```bash
+../otelcol --config=agent.yaml
+```
+
+{{% /tab %}}
+{{% tab title="Agent Output" %}}
+
+```text
+2025-01-13T12:43:51.747+0100 info service@v0.120.0/service.go:261 Everything is ready. Begin running and processing data.
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**ãã¬ãŒã¹ãéä¿¡ãã**: **Spans ã¿ãŒããã«** ãŠã£ã³ããŠããå¥ã®ã¹ãã³ãéä¿¡ãããããŸã§ãšåãåºåãã³ã³ãœãŒã«ã«è¡šç€ºãããããšã確èªããŸãã
+
+```bash { title="Start Load Generator" }
+../loadgen -count 1
+```
+
+ããã§ **Agent ã¿ãŒããã«** ãŠã£ã³ããŠã® `agent` ã `Ctrl-C` ã§åæ¢ãã`agent.out` ãã¡ã€ã«ãæžãåºãããããšã確èªã§ããããã«ããŸãã
+
+**`agent.out` ãã¡ã€ã«ãæžãåºãããããšã確èªãã**: çŸåšã®ãã£ã¬ã¯ããªã« `agent.out` ãšããååã®ãã¡ã€ã«ãæžãåºãããŠããã確èªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.out # OTLP/Json output created by the File Exporter
+âââ agent.yaml
+```
+
+**ã¹ãã³ã®åœ¢åŒã確èªãã**:
+
+1. File Exporter ã `agent.out` ã«ã¹ãã³ãæžãåºãéã«äœ¿çšãã圢åŒã確èªããŸãã
+2. åºå㯠**OTLP/JSON** 圢åŒã® 1 è¡ã«ãªããŸãã
+3. `agent.out` ã®å
容ã衚瀺ããã«ã¯ã`cat ./agent.out` ã³ãã³ãã䜿çšã§ããŸããããèªã¿ãããæŽåœ¢æžã¿ã®è¡šç€ºã«ããã«ã¯ã`cat ./agent.out | jq` ã®ããã« `jq` ã«åºåããã€ãããŠãã ããã
+
+{{% tabs %}}
+{{% tab title="cat ./agent.out" %}}
+
+```json
+{"resourceSpans":[{"resource":{"attributes":[{"key":"service.name","value":{"stringValue":"cinema-service"}},{"key":"deployment.environment","value":{"stringValue":"production"}},{"key":"host.name","value":{"stringValue":"workshop-instance"}},{"key":"os.type","value":{"stringValue":"linux"}},{"key":"otelcol.service.mode","value":{"stringValue":"agent"}}]},"scopeSpans":[{"scope":{"name":"cinema.library","version":"1.0.0","attributes":[{"key":"fintest.scope.attribute","value":{"stringValue":"Starwars, LOTR"}}]},"spans":[{"traceId":"d824a28db5aa5f5a3011f19c452e5af0","spanId":"ab4cde146f77eacf","parentSpanId":"","name":"/movie-validator","kind":2,"startTimeUnixNano":"1741256991405300000","endTimeUnixNano":"1741256992405300000","attributes":[{"key":"user.name","value":{"stringValue":"George Lucas"}},{"key":"user.phone_number","value":{"stringValue":"+1555-867-5309"}},{"key":"user.email","value":{"stringValue":"george@deathstar.email"}},{"key":"user.password","value":{"stringValue":"LOTR>StarWars1-2-3"}},{"key":"user.visa","value":{"stringValue":"4111 1111 1111 1111"}},{"key":"user.amex","value":{"stringValue":"3782 822463 10005"}},{"key":"user.mastercard","value":{"stringValue":"5555 5555 5555 4444"}},{"key":"payment.amount","value":{"doubleValue":56.24}}],"status":{"message":"Success","code":1}}]}],"schemaUrl":"https://opentelemetry.io/schemas/1.6.1"}]}
+```
+
+{{% /tab %}}
+{{% tab title="cat ./agent.out | jq" %}}
+
+```json
+{
+ "resourceSpans": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "service.name",
+ "value": {
+ "stringValue": "cinema-service"
+ }
+ },
+ {
+ "key": "deployment.environment",
+ "value": {
+ "stringValue": "production"
+ }
+ },
+ {
+ "key": "host.name",
+ "value": {
+ "stringValue": "RCASTLEY-M-YQRY.local"
+ }
+ },
+ {
+ "key": "os.type",
+ "value": {
+ "stringValue": "darwin"
+ }
+ },
+ {
+ "key": "otelcol.service.mode",
+ "value": {
+ "stringValue": "agent"
+ }
+ }
+ ]
+ },
+ "scopeSpans": [
+ {
+ "scope": {
+ "name": "cinema.library",
+ "version": "1.0.0",
+ "attributes": [
+ {
+ "key": "fintest.scope.attribute",
+ "value": {
+ "stringValue": "Starwars, LOTR"
+ }
+ }
+ ]
+ },
+ "spans": [
+ {
+ "traceId": "d824a28db5aa5f5a3011f19c452e5af0",
+ "spanId": "ab4cde146f77eacf",
+ "parentSpanId": "",
+ "name": "/movie-validator",
+ "kind": 2,
+ "startTimeUnixNano": "1741256991405300000",
+ "endTimeUnixNano": "1741256992405300000",
+ "attributes": [
+ {
+ "key": "user.name",
+ "value": {
+ "stringValue": "George Lucas"
+ }
+ },
+ {
+ "key": "user.phone_number",
+ "value": {
+ "stringValue": "+1555-867-5309"
+ }
+ },
+ {
+ "key": "user.email",
+ "value": {
+ "stringValue": "george@deathstar.email"
+ }
+ },
+ {
+ "key": "user.password",
+ "value": {
+ "stringValue": "LOTR>StarWars1-2-3"
+ }
+ },
+ {
+ "key": "user.visa",
+ "value": {
+ "stringValue": "4111 1111 1111 1111"
+ }
+ },
+ {
+ "key": "user.amex",
+ "value": {
+ "stringValue": "3782 822463 10005"
+ }
+ },
+ {
+ "key": "user.mastercard",
+ "value": {
+ "stringValue": "5555 5555 5555 4444"
+ }
+ },
+ {
+ "key": "payment.amount",
+ "value": {
+ "doubleValue": 56.24
+ }
+ }
+ ],
+ "status": {
+ "message": "Success",
+ "code": 1
+ }
+ }
+ ]
+ }
+ ],
+ "schemaUrl": "https://opentelemetry.io/schemas/1.6.1"
+ }
+ ]
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-3-fileexporter/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-3-fileexporter/_index.md
new file mode 100644
index 0000000000..b966bd73cc
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-3-fileexporter/_index.md
@@ -0,0 +1,97 @@
+---
+title: 1.3 File Exporter
+linkTitle: 1.3 File Exporter
+weight: 2
+---
+
+ç»é¢äžã®ãããã°åºåã ãã§ãªãããã€ãã©ã€ã³ã®ãšã¯ã¹ããŒããã§ãŒãºã§ãåºåãçæãããå ŽåããããŸãããã®ããã«ãæ¯èŒçšã« OTLP ããŒã¿ããã¡ã€ã«ãžæžãåºã **File Exporter** ã远å ããŸãã
+
+OpenTelemetry ã® **debug exporter** ãš **file exporter** ã®éãã¯ãçšéãšåºåå
ã«ãããŸãã
+
+| æ©èœ | Debug Exporter | File Exporter |
+|-----------------|--------------------------|-------------------------|
+| **åºåå
** | ã³ã³ãœãŒã«ïŒãã° | ãã£ã¹ã¯äžã®ãã¡ã€ã« |
+| **çšé** | ãªã¢ã«ã¿ã€ã ãããã° | æ°žç¶çãªãªãã©ã€ã³åæ |
+| **é©ããçšé** | ãã¹ãäžã®çŽ æ©ãç¢ºèª | äžæçãªä¿åãšå
±æ |
+| **æ¬çªå©çš** | äžå¯ | çšã ãå¯èœ |
+| **æ°žç¶æ§** | ãªã | ãã |
+
+ãŸãšãããšã**Debug Exporter** ã¯ãªã¢ã«ã¿ã€ã ã®éçºæãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«é©ããŠããã**File Exporter** ã¯ãã¬ã¡ããªããŒã¿ãããŒã«ã«ã«ä¿åããŠåŸã§å©çšããã®ã«é©ããŠããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Agent terminal** ãŠã£ã³ããŠã§ Collector ãèµ·åããŠããªãããšã確èªããŠããã`agent.yaml` ãç·šéã㊠**File Exporter** ãæ§æããŸãã
+
+1. **`file` exporter ã®æ§æ**: [**File Exporter**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/fileexporter/README.md) ã¯ãã¬ã¡ããªããŒã¿ããã£ã¹ã¯äžã®ãã¡ã€ã«ã«æžãåºããŸãã
+
+ ```yaml
+ file: # File Exporter
+ path: "./agent.out" # Save path (OTLP/JSON)
+ append: false # Overwrite the file each time
+ ```
+
+1. **Pipelines ã»ã¯ã·ã§ã³ã®æŽæ°**: `file` exporter ã `traces` ãã€ãã©ã€ã³ã«ã®ã¿è¿œå ããŸãã
+
+ ```yaml
+ pipelines:
+ traces:
+ receivers:
+ - otlp # OTLP Receiver
+ processors:
+ - memory_limiter # Memory Limiter processor
+ - resourcedetection # Add system attributes to the data
+ - resource/add_mode # Add collector mode metadata
+ exporters:
+ - debug # Debug Exporter
+ - file # File Exporter
+ metrics:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ exporters:
+ - debug
+ logs:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ exporters:
+ - debug
+ ```
+
+{{% /notice %}}
+
+[**https://otelbin.io**](https://otelbin.io/) ã䜿çšããŠãagent ã®èšå®ãæ€èšŒããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(resourcedetection
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2( file
fa:fa-upload):::exporter
+ %% Links
+ subID1:::sub-traces
+ subgraph " "
+ subgraph subID1["`**Traces**`"]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PRO2
+ PRO2 --> PRO3
+ PRO3 --> EXP1
+ PRO3 --> EXP2
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-traces stroke:#fbbf24,stroke-width:1px, color:#fbbf24,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-4-metadata/1-4-1-test-metadata.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-4-metadata/1-4-1-test-metadata.md
new file mode 100644
index 0000000000..7a4c2bc2f5
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-4-metadata/1-4-1-test-metadata.md
@@ -0,0 +1,182 @@
+---
+title: 1.4.1 ãªãœãŒã¹ã¡ã¿ããŒã¿ã®ãã¹ã
+linkTitle: 1.4.1 ãªãœãŒã¹ã¡ã¿ããŒã¿ã®ãã¹ã
+weight: 1
+---
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Agent ãåèµ·åãã**: **Agent ã¿ãŒããã«** ãŠã£ã³ããŠã§ã倿Žå
容ããã¹ãããããã«æŽæ°ãããèšå®ã䜿ã£ãŠ `agent` ãåèµ·åããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+ãã¹ãŠãæ£ããã»ããã¢ãããããŠããã°ãåºåã®æåŸã®è¡ã§ collector ã皌åããŠããããšã確èªã§ããã¯ãã§ãã
+
+```text
+ 2025-01-13T12:43:51.747+0100 info service@v0.120.0/service.go:261 Everything is ready. Begin running and processing data.
+```
+
+**ãã¬ãŒã¹ãéä¿¡ãã**: **Spans ã¿ãŒããã«** ãŠã£ã³ããŠããïŒ`1-agent` ãã£ã¬ã¯ããªã«ããããšã確èªããããã§ïŒã`loadgen` ãã€ããªã§å床 span ãéä¿¡ããæ°ãã `agent.out` ãäœæããŸãã
+
+```bash { title="Start Load Generator" }
+../loadgen
+```
+
+**Agent ã®ãããã°åºåã確èªãã**: `resource attributes` ã»ã¯ã·ã§ã³ã« 3 ã€ã®æ°ããè¡ïŒ`host.name`ã`os.type`ã`otelcol.service.mode`ïŒã衚瀺ãããŠããã¯ãã§ãã
+
+```text
+
+Resource SchemaURL: https://opentelemetry.io/schemas/1.6.1
+Resource attributes:
+ -> service.name: Str(cinema.service)
+ -> deployment.environment: Str(production)
+ -> host.name: Str([MY_HOST_NAME])
+ -> os.type: Str([MY_OS])
+ -> otelcol.service.mode: Str(agent)
+
+```
+
+**ã¡ã¿ããŒã¿ã span ã«è¿œå ãããŠããããšã確èªãã**: `Ctrl-C` ã§ `loadgen` ã忢ããŸããæ°ãã `agent.out` ãã¡ã€ã«ã§ä»¥äžã確èªããŸãã
+
+1. `resourceSpans` ã»ã¯ã·ã§ã³ã« `otelcol.service.mode` 屿§ãååšãããã®å€ã `agent` ã§ããããšã確èªããŸãã
+2. `resourcedetection` ã®å±æ§ïŒ`host.name` ãš `os.type`ïŒãååšããããšã確èªããŸãã
+
+ãããã®å€ã¯ããã€ãã©ã€ã³ã«èšå®ããã processor ã«ãã£ãŠãã䜿ãã®ããã€ã¹ã«åºã¥ããŠèªåçã«è¿œå ãããŸãã
+
+{{% tabs %}}
+{{% tab title="cat ./agent.out" %}}
+
+```json
+{"resourceSpans":[{"resource":{"attributes":[{"key":"service.name","value":{"stringValue":"cinema-service"}},{"key":"deployment.environment","value":{"stringValue":"production"}},{"key":"host.name","value":{"stringValue":"RCASTLEY-M-YQRY.local"}},{"key":"os.type","value":{"stringValue":"darwin"}},{"key":"otelcol.service.mode","value":{"stringValue":"agent"}}]},"scopeSpans":[{"scope":{"name":"cinema.library","version":"1.0.0","attributes":[{"key":"fintest.scope.attribute","value":{"stringValue":"Starwars, LOTR"}}]},"spans":[{"traceId":"ae921957a4d93fa11cee640cd7908eb8","spanId":"f6b0f29825efe585","parentSpanId":"","name":"/movie-validator","kind":2,"startTimeUnixNano":"1740994347431796000","endTimeUnixNano":"1740994348431796000","attributes":[{"key":"user.name","value":{"stringValue":"George Lucas"}},{"key":"user.phone_number","value":{"stringValue":"+1555-867-5309"}},{"key":"user.email","value":{"stringValue":"george@deathstar.email"}},{"key":"user.account_password","value":{"stringValue":"LOTR>StarWars1-2-3"}},{"key":"user.visa","value":{"stringValue":"4111 1111 1111 1111"}},{"key":"user.amex","value":{"stringValue":"3782 822463 10005"}},{"key":"user.mastercard","value":{"stringValue":"5555 5555 5555 4444"}}],"status":{"message":"Success","code":1}}]}],"schemaUrl":"https://opentelemetry.io/schemas/1.6.1"}]}
+```
+
+{{% /tab %}}
+{{% tab title="cat ./agent.out | jq" %}}
+
+```json
+{
+ "resourceSpans": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "service.name",
+ "value": {
+ "stringValue": "cinema-service"
+ }
+ },
+ {
+ "key": "deployment.environment",
+ "value": {
+ "stringValue": "production"
+ }
+ },
+ {
+ "key": "host.name",
+ "value": {
+ "stringValue": "RCASTLEY-M-YQRY.local"
+ }
+ },
+ {
+ "key": "os.type",
+ "value": {
+ "stringValue": "darwin"
+ }
+ },
+ {
+ "key": "otelcol.service.mode",
+ "value": {
+ "stringValue": "agent"
+ }
+ }
+ ]
+ },
+ "scopeSpans": [
+ {
+ "scope": {
+ "name": "cinema.library",
+ "version": "1.0.0",
+ "attributes": [
+ {
+ "key": "fintest.scope.attribute",
+ "value": {
+ "stringValue": "Starwars, LOTR"
+ }
+ }
+ ]
+ },
+ "spans": [
+ {
+ "traceId": "ab984cd113463aa919ac200751fcfc1d",
+ "spanId": "db651e116290a8f2",
+ "parentSpanId": "",
+ "name": "/movie-validator",
+ "kind": 2,
+ "startTimeUnixNano": "1740994462515044000",
+ "endTimeUnixNano": "1740994463515044000",
+ "attributes": [
+ {
+ "key": "user.name",
+ "value": {
+ "stringValue": "George Lucas"
+ }
+ },
+ {
+ "key": "user.phone_number",
+ "value": {
+ "stringValue": "+1555-867-5309"
+ }
+ },
+ {
+ "key": "user.email",
+ "value": {
+ "stringValue": "george@deathstar.email"
+ }
+ },
+ {
+ "key": "user.account_password",
+ "value": {
+ "stringValue": "LOTR>StarWars1-2-3"
+ }
+ },
+ {
+ "key": "user.visa",
+ "value": {
+ "stringValue": "4111 1111 1111 1111"
+ }
+ },
+ {
+ "key": "user.amex",
+ "value": {
+ "stringValue": "3782 822463 10005"
+ }
+ },
+ {
+ "key": "user.mastercard",
+ "value": {
+ "stringValue": "5555 5555 5555 4444"
+ }
+ }
+ ],
+ "status": {
+ "message": "Success",
+ "code": 1
+ }
+ }
+ ]
+ }
+ ],
+ "schemaUrl": "https://opentelemetry.io/schemas/1.6.1"
+ }
+ ]
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ãŠã£ã³ããŠã§ `Ctrl-C` ã䜿ã£ãŠ `agent` ããã»ã¹ãš `loadgen` ããã»ã¹ã忢ããŸãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-4-metadata/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-4-metadata/_index.md
new file mode 100644
index 0000000000..8e97b06330
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/1-4-metadata/_index.md
@@ -0,0 +1,90 @@
+---
+title: 1.4 Resource Metadata
+linkTitle: 1.4 Resource Metadata
+weight: 3
+hidden: true
+---
+
+ãããŸã§ã¯ãOpenTelemetry Collector ãçµç±ããã¹ãã³ããã®ãŸãŸè€è£œããŠãšã¯ã¹ããŒãããŠããŸããã
+
+ããããã¯ãããã»ããµãŒã䜿ã£ãŠã¡ã¿ããŒã¿ã远å ããããŒã¹ãšãªãã¹ãã³ãå
å®ãããŠãããŸãããããã®è¿œå æ
å ±ã¯ããã©ãã«ã·ã¥ãŒãã£ã³ã°ãçžé¢åæã«åœ¹ç«ã¡ãŸãã
+
+{{% notice title="Exercise" style="green" icon="running" %}}
+**Collector ã忢ãã**: **Agent ã¿ãŒããã«**ãŠã£ã³ããŠã§ `Ctrl-C` ãæŒããå®è¡äžã® Collector ã忢ããŠãã ããã`agent` ã忢ãããã`agent.yaml` ãéããŸãã
+
+**ãã¹ãŠã®ãã€ãã©ã€ã³ãæŽæ°ãã**: äž¡æ¹ã®ããã»ããµãŒ(`resourcedetection` ãš `resource/add_mode`)ãã**ãã¹ãŠã®ãã€ãã©ã€ã³**ã® `processors` é
åã«è¿œå ããŠãã ããã`memory_limiter` ãæåã®ããã»ããµãŒã§ããç¶ããããã«ããŠãã ããã
+
+- [**Resource Detection Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/README.md) ã¯ããã¹ããããªãœãŒã¹æ
å ±ãæ€åºãããã®æ
å ±ããã¬ã¡ããªããŒã¿ã®ãªãœãŒã¹å€ã«è¿œå ãŸãã¯äžæžãããããã«äœ¿çšãããŸãã
+- [**Resource Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourceprocessor/README.md) ã¯ããªãœãŒã¹å±æ§ã«å€æŽãé©çšããããã«äœ¿çšãããŸããä»åã®ããã©ã«ãèšå®ã§ã¯ãæ°ãã屿§ `otelcol.service.mode` ãå€ `agent` ã§è¿œå ããŸãã
+
+```yaml
+service: # Services configured for this Collector
+ extensions: # Enabled extensions
+ - health_check
+ pipelines: # Array of configured pipelines
+ traces:
+ receivers:
+ - otlp # OTLP Receiver
+ processors:
+ - memory_limiter # Memory Limiter Processor
+ - resourcedetection # Adds system attributes to the data
+ - resource/add_mode # Adds collector mode metadata
+ exporters:
+ - debug # Debug Exporter
+ - file # File Exporter
+ metrics:
+ receivers:
+ - otlp # OTLP Receiver
+ processors:
+ - memory_limiter # Memory Limiter Processor
+ - resourcedetection # Adds system attributes to the data
+ - resource/add_mode # Adds collector mode metadata
+ exporters:
+ - debug # Debug Exporter
+ - file # File Exporter
+ logs:
+ receivers:
+ - otlp # OTLP Receiver
+ processors:
+ - memory_limiter # Memory Limiter Processor
+ - resourcedetection # Adds system attributes to the data
+ - resource/add_mode # Adds collector mode metadata
+ exporters:
+ - debug # Debug Exporter
+ - file # File Exporter
+
+```
+
+{{% /notice %}}
+
+ãããã®ããã»ããµãŒã远å ããããšã§ãã·ã¹ãã ã®ã¡ã¿ããŒã¿ãš Agent ã®åäœã¢ãŒãã§ããŒã¿ãå
å®ãããããšãã§ãããã©ãã«ã·ã¥ãŒãã£ã³ã°ã«åœ¹ç«ã€ã»ããé¢é£ã³ã³ãã³ãã«æçšãªã³ã³ããã¹ããæäŸããŸãã
+
+**[otelbin.io](https://www.otelbin.io/)** ã䜿çšã㊠Agent ã®èšå®ãæ€èšŒããŠãã ããã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(resourcedetection
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2( file
fa:fa-upload):::exporter
+ %% Links
+ subID1:::sub-traces
+ subgraph " "
+ subgraph subID1[**Traces/Metrics/Logs**]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PRO2
+ PRO2 --> PRO3
+ PRO3 --> EXP1
+ PRO3 --> EXP2
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-traces stroke:#fff,stroke-width:1px, color:#fff,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/_index.md
new file mode 100644
index 0000000000..d2085a1b09
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/1-agent/_index.md
@@ -0,0 +1,107 @@
+---
+title: 1. Agent Configuration
+linkTitle: 1. Agent Setup
+time: 10 minutes
+weight: 3
+---
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãæå€§ 5 ã€ã®ã¿ãŒããã«ãŠã£ã³ããŠãåæã«äœ¿çšããŸããæŽçãããããããããåã¿ãŒããã«ãã·ã§ã«ã«ããããåºæã®ååãšè²ãèšå®ããããšããå§ãããŸããããã«ãããå¿
èŠã«å¿ããŠçŽ æ©ãèå¥ããåãæ¿ããããšãã§ããŸãã
+
+ãããã®ã¿ãŒããã«ã¯ã**Agent**ã**Gateway**ã**Spans**ã**Logs**ã**Tests** ãšåŒã³ãŸãã
+{{% /notice %}}
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+1. **Agent ã¿ãŒããã«**ãŠã£ã³ããŠã§ `[WORKSHOP]` ãã£ã¬ã¯ããªã«ç§»åãã`1-agent` ãšããååã®æ°ãããµããã£ã¬ã¯ããªãäœæããŸãã
+
+ ```bash
+ mkdir 1-agent && \
+ cd 1-agent
+ ```
+
+2. `agent.yaml` ãšããååã®ãã¡ã€ã«ãäœæããŸãããã®ãã¡ã€ã«ã§ã¯ãOpenTelemetry Collector èšå®ã®åºæ¬æ§é ãå®çŸ©ããŸãã
+
+3. 以äžã®åæèšå®ãã³ããŒã㊠`agent.yaml` ã«è²Œãä»ããŸãã
+
+ ```yaml
+ # Extensions
+ extensions:
+ health_check: # Health Check Extension
+ endpoint: 0.0.0.0:13133 # Health Check Endpoint
+
+ # Receivers
+ receivers:
+ hostmetrics: # Host Metrics Receiver
+ collection_interval: 3600s # Collection Interval (1hr)
+ scrapers:
+ cpu: # CPU Scraper
+ otlp: # OTLP Receiver
+ protocols:
+ http: # Configure HTTP protocol
+ endpoint: "0.0.0.0:4318" # Endpoint to bind to
+
+ # Exporters
+ exporters:
+ debug: # Debug Exporter
+ verbosity: detailed # Detailed verbosity level
+
+ # Processors
+ processors:
+ memory_limiter: # Limits memory usage
+ check_interval: 2s # Check interval
+ limit_mib: 512 # Memory limit in MiB
+ resourcedetection: # Resource Detection Processor
+ detectors: [system] # Detect system resources
+ override: true # Overwrites existing attributes
+ resource/add_mode: # Resource Processor
+ attributes:
+ - action: insert # Action to perform
+ key: otelcol.service.mode # Key name
+ value: "agent" # Key value
+
+ # Connectors
+ #connectors: # leave this commented out; we will uncomment in an upcoming exercise
+
+ # Service Section - Enabled Pipelines
+ service:
+ extensions:
+ - health_check # Health Check Extension
+ pipelines:
+ traces:
+ receivers:
+ - otlp # OTLP Receiver
+ processors:
+ - memory_limiter # Memory Limiter processor
+ - resourcedetection # Add system attributes to the data
+ - resource/add_mode # Add collector mode metadata
+ exporters:
+ - debug # Debug Exporter
+ metrics:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ exporters:
+ - debug
+ logs:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ exporters:
+ - debug
+ ```
+
+4. ãã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªã£ãŠããã¯ãã§ãã
+
+ ```text
+ .
+ âââ agent.yaml # OpenTelemetry Collector configuration file
+ ```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-1-start-gateway.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-1-start-gateway.md
new file mode 100644
index 0000000000..b37f1d8740
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-1-start-gateway.md
@@ -0,0 +1,57 @@
+---
+title: 2.1 Start Gateway
+linkTitle: 2.1 Start Gateway
+weight: 1
+---
+
+`gateway` ã®èšå®ã¯ãæ©èœãããããã«è¿œå ã®èšå®å€æŽãå¿
èŠãšããŸãããããã¯ãæéãç¯çŽãã**Gateway** ã®äžæ žãšãªãæŠå¿µã«éäžããããã§ãã
+
+**[otelbin.io](https://www.otelbin.io/)** ã䜿çšã㊠`gateway` ã®èšå®ãæ€èšŒããŸããåèãŸã§ã«ããã€ãã©ã€ã³ã® `logs:` ã»ã¯ã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(resource
fa:fa-microchip
add_mode):::processor
+ PRO3(batch
fa:fa-microchip):::processor
+ EXP1( file
fa:fa-upload
logs):::exporter
+ EXP2( debug
fa:fa-upload):::exporter
+ %% Links
+ subID1:::sub-logs
+ subgraph " "
+ subgraph subID1[**Logs**]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PRO2
+ PRO2 --> PRO3
+ PRO3 --> EXP2
+ PRO3 --> EXP1
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-logs stroke:#34d399,stroke-width:1px, color:#34d399,stroke-dasharray: 3 3;
+```
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Gateway ã®èµ·å**: **Gateway ã¿ãŒããã«** ãŠã£ã³ããŠã§ã次ã®ã³ãã³ããå®è¡ã㊠`gateway` ãèµ·åããŸãã
+
+```bash {title="Start the Gateway"}
+../otelcol --config=gateway.yaml
+```
+
+ãã¹ãŠæ£ããèšå®ãããŠããã°ãåºåã®æåãšæåŸã®è¡ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text
+2025/01/15 15:33:53 settings.go:478: Set config to [gateway.yaml]
+
+2025-01-13T12:43:51.747+0100 info service@v0.120.0/service.go:261 Everything is ready. Begin running and processing data.
+```
+
+{{% /notice %}}
+
+次ã«ãæ°ããäœæãã `gateway` ã«ããŒã¿ãéä¿¡ããããã« `agent` ãèšå®ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-2-configure-agent.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-2-configure-agent.md
new file mode 100644
index 0000000000..8bd77ac14f
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-2-configure-agent.md
@@ -0,0 +1,111 @@
+---
+title: 2.2 Configure Agent
+linkTitle: 2.2 Configure Agent
+weight: 2
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**`otlphttp` exporterã远å ãã**: [**OTLP/HTTP Exporter**](https://help.splunk.com/en/splunk-observability-cloud/manage-data/splunk-distribution-of-the-opentelemetry-collector/get-started-with-the-splunk-distribution-of-the-opentelemetry-collector/collector-components/exporters/otlphttp-exporter) ã¯ã**OTLP/HTTP** ãããã³ã«ã䜿çšããŠagentããgatewayã«ããŒã¿ãéä¿¡ããããã«äœ¿çšãããŸãã
+
+1. **Agentã¿ãŒããã«** ãŠã£ã³ããŠã«åãæ¿ããŸãã
+2. æ°ããçæããã `gateway-logs.out`ã`gateway-metrics.out`ã`gateway-traces.out` ããã£ã¬ã¯ããªã«ååšããããšã確èªããŸãã
+3. ãšãã£ã¿ã§ `agent.yaml` ãã¡ã€ã«ãéããŸãã
+4. `exporters:` ã»ã¯ã·ã§ã³ã« `otlphttp` exporterã®èšå®ã远å ããŸã:
+
+```yaml
+ otlphttp: # Exporter Type
+ endpoint: "http://localhost:5318" # Gateway OTLP endpoint
+```
+
+**Batch Processorã®èšå®ã远å ãã**: [**Batch Processor**](https://github.com/open-telemetry/opentelemetry-collector/blob/main/processor/batchprocessor/README.md) ã¯ãspanãmetricsããŸãã¯logsãåãåãããããããããã«ãŸãšããŸãããããåããããšã§ãããŒã¿ãããå¹ççã«å§çž®ããããŒã¿éä¿¡ã«å¿
èŠãªéä¿¡æ¥ç¶ã®æ°ãæžããããšãã§ããŸãããã¹ãŠã®collectorã§batch processorãèšå®ããããšãåŒ·ãæšå¥šãããŸãã
+
+1. `processors:` ã»ã¯ã·ã§ã³ã« `batch` processorã®èšå®ã远å ããŸã:
+
+```yaml
+ batch: # Processor Type
+```
+
+**PipelinesãæŽæ°ãã**:
+
+1. **Hostmetrics Receiverãæå¹å**:
+ - `metrics` pipelineã« `hostmetrics` ã远å ããŸãã[**HostMetrics Receiver**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/hostmetricsreceiver#readme) ã¯ãçŸåšã®èšå®ã§ã¯1æéã«1åãã¹ãCPUã¡ããªã¯ã¹ãçæããŸãã
+2. **Batch Processorãæå¹å**:
+ - `traces`ã`metrics`ã`logs` pipelineã«ïŒ`resource/add_mode` processorã®åŸã«ïŒ`batch` processorã远å ããŸãã
+3. **OTLPHTTP Exporterãæå¹å**:
+ - `traces`ã`metrics`ã`logs` pipelineã« `otlphttp` exporterã远å ããŸãã
+
+```yaml
+ pipelines:
+ traces:
+ receivers:
+ - otlp # OTLP Receiver
+ processors:
+ - memory_limiter # Memory Limiter processor
+ - resourcedetection # Add system attributes to the data
+ - resource/add_mode # Add collector mode metadata
+ - batch # Batch processor
+ exporters:
+ - debug # Debug Exporter
+ - file # File Exporter
+ - otlphttp # OTLP/HTTP Exporter
+ metrics:
+ receivers:
+ - otlp
+ - hostmetrics # Host Metrics Receiver
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - otlphttp
+ logs:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - otlphttp
+```
+
+{{% /notice %}}
+
+**[otelbin.io](https://www.otelbin.io/)** ã䜿çšããŠagentã®èšå®ãæ€èšŒããŸããåèãŸã§ã«ãpipelinesã® `metrics:` ã»ã¯ã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸã:
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ REC2(hostmetrics
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(resourcedetection
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(batch
fa:fa-microchip):::processor
+ EXP1(otlphttp
fa:fa-upload):::exporter
+ EXP2( debug
fa:fa-upload):::exporter
+ %% Links
+ subID1:::sub-metrics
+ subgraph " "
+ subgraph subID1["`**Metrics**`"]
+ direction LR
+ REC1 --> PRO1
+ REC2 --> PRO1
+ PRO1 --> PRO2
+ PRO2 --> PRO3
+ PRO3 --> PRO4
+ PRO4 --> EXP2
+ PRO4 --> EXP1
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-metrics stroke:#38bdf8,stroke-width:1px, color:#38bdf8,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-3-send-metrics.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-3-send-metrics.md
new file mode 100644
index 0000000000..7817c89acd
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-3-send-metrics.md
@@ -0,0 +1,77 @@
+---
+title: 2.3 Agent ãã Gateway ãžã¡ããªã¯ã¹ãéä¿¡ãã
+linkTitle: 2.3 Send Metrics
+weight: 3
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Agent ãèµ·åãã**: **Agent ã¿ãŒããã«** ãŠã£ã³ããŠã§ãæŽæ°ãããèšå®ã䜿ã£ãŠ agent ãèµ·åããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+**CPU ã¡ããªã¯ã¹ã確èªãã**:
+
+1. `agent` ãèµ·åãããããã ã¡ã« **CPU** ã¡ããªã¯ã¹ã®éä¿¡ãéå§ããããšã確èªããŸãã
+2. `agent` ãš `gateway` ã®äž¡æ¹ãããããã°åºåã«ãã®åäœã衚瀺ããŸããåºåã¯æ¬¡ã®ã¹ããããã®ããã«ãªãã¯ãã§ãã
+
+```text
+
+NumberDataPoints #37
+Data point attributes:
+ -> cpu: Str(cpu0)
+ -> state: Str(system)
+StartTimestamp: 2024-12-09 14:18:28 +0000 UTC
+Timestamp: 2025-01-15 15:27:51.319526 +0000 UTC
+Value: 9637.660000
+```
+
+ãã®æ®µéã§ã`agent` 㯠1 æéããšããŸãã¯åèµ·åã®ãã³ã« **CPU** ã¡ããªã¯ã¹ãåéãç¶ãããããã gateway ã«éä¿¡ããŸãã
+
+`gateway` ã¯ãããã®ã¡ããªã¯ã¹ãåŠçãã`./gateway-metrics.out` ãšããååã®ãã¡ã€ã«ã«ãšã¯ã¹ããŒãããŸãããã®ãã¡ã€ã«ã¯ããã€ãã©ã€ã³ãµãŒãã¹ã®äžéšãšããŠãšã¯ã¹ããŒããããã¡ããªã¯ã¹ãä¿åããŸãã
+
+**ããŒã¿ã Gateway ã«å°éããããšã確èªãã**: CPU ã¡ããªã¯ã¹ãç¹ã« `cpu0` ã®ã¡ããªã¯ã¹ã gateway ã«æ£åžžã«å°éããããšã確èªããããã`jq` ã³ãã³ãã䜿ã£ãŠ `gateway-metrics.out` ãã¡ã€ã«ã調æ»ããŸãã
+
+次ã®ã³ãã³ãã¯ã`system.cpu.time` ã¡ããªã¯ã¹ããã£ã«ã¿ãªã³ã°ããŠæœåºãã`cpu0` ã«çŠç¹ãåœãŠãŸããã¡ããªã¯ã¹ã® stateïŒäŸ: `user`ã`system`ã`idle`ã`interrupt`ïŒãšå¯Ÿå¿ããå€ã衚瀺ããŸãã
+
+**Tests ã¿ãŒããã«** ã§ä»¥äžã®ã³ãã³ããå®è¡ãã`system.cpu.time` ã¡ããªã¯ã¹ã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="Check CPU Metrics" %}}
+
+```bash
+jq '.resourceMetrics[].scopeMetrics[].metrics[] | select(.name == "system.cpu.time") | .sum.dataPoints[] | select(.attributes[0].value.stringValue == "cpu0") | {cpu: .attributes[0].value.stringValue, state: .attributes[1].value.stringValue, value: .asDouble}' gateway-metrics.out
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```json
+{
+ "cpu": "cpu0",
+ "state": "user",
+ "value": 123407.02
+}
+{
+ "cpu": "cpu0",
+ "state": "system",
+ "value": 64866.6
+}
+{
+ "cpu": "cpu0",
+ "state": "idle",
+ "value": 216427.87
+}
+{
+ "cpu": "cpu0",
+ "state": "interrupt",
+ "value": 0
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-4-send-traces.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-4-send-traces.md
new file mode 100644
index 0000000000..cdd535a851
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-4-send-traces.md
@@ -0,0 +1,92 @@
+---
+title: 2.4 Agent ãã Gateway ãžãã¬ãŒã¹ãéä¿¡ãã
+linkTitle: 2.4 ãã¬ãŒã¹ã®éä¿¡
+weight: 4
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**ãã¹ããã¬ãŒã¹ãéä¿¡ãã**:
+
+1. `agent` ãš `gateway` ããŸã å®è¡äžã§ããããšã確èªããŸãã
+2. **Spans terminal** ãŠã£ã³ããŠã§ã次ã®ã³ãã³ããå®è¡ã㊠5 ã€ã®ã¹ãã³ãéä¿¡ãã`agent` ãš `gateway` ã®ãããã°ãã°ã®åºåãæ€èšŒããŸãã
+
+{{% tabs %}}
+{{% tab title="Start the Load Generator" %}}
+
+```bash
+../loadgen -count 5
+```
+
+{{% /tab %}}
+{{% tab title="Agent/Gateway Debug Output" %}}
+
+```text
+2025-03-06T11:49:00.456Z info Traces {"otelcol.component.id": "debug", "otelcol.component.kind": "Exporter", "otelcol.signal": "traces", "resource spans": 1, "spans": 1}
+2025-03-06T11:49:00.456Z info ResourceSpans #0
+Resource SchemaURL: https://opentelemetry.io/schemas/1.6.1
+Resource attributes:
+ -> service.name: Str(cinema-service)
+ -> deployment.environment: Str(production)
+ -> host.name: Str(workshop-instance)
+ -> os.type: Str(linux)
+ -> otelcol.service.mode: Str(agent)
+ScopeSpans #0
+ScopeSpans SchemaURL:
+InstrumentationScope cinema.library 1.0.0
+InstrumentationScope attributes:
+ -> fintest.scope.attribute: Str(Starwars, LOTR)
+Span #0
+ Trace ID : 97fb4e5b13400b5689e3306da7cff077
+ Parent ID :
+ ID : 413358465e5b4f15
+ Name : /movie-validator
+ Kind : Server
+ Start time : 2025-03-06 11:49:00.431915 +0000 UTC
+ End time : 2025-03-06 11:49:01.431915 +0000 UTC
+ Status code : Ok
+ Status message : Success
+Attributes:
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(+1555-867-5309)
+ -> user.email: Str(george@deathstar.email)
+ -> user.password: Str(LOTR>StarWars1-2-3)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ -> payment.amount: Double(87.01)
+ {"otelcol.component.id": "debug", "otelcol.component.kind": "Exporter", "otelcol.signal": "traces"}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**Gateway ãã¹ãã³ãåŠçããããšã確èªãã**: Gateway ã¯åä¿¡ããã¹ãã³ãåŠçãããšããã¬ãŒã¹ããŒã¿ã `gateway-traces.out` ãšãããã¡ã€ã«ã«æžã蟌ã¿ãŸããã¹ãã³ãæ£åžžã«åŠçãããããšã確èªããã«ã¯ããã®ãã¡ã€ã«ã調ã¹ãŸãã
+
+**Tests terminal** ã§ `jq` ã³ãã³ãã䜿çšããŠãåã¹ãã³ã® `spanId` ããã¡ã€ã«å
ã®äœçœ®ãªã©ã®äž»èŠãªè©³çްæ
å ±ãæœåºããŠè¡šç€ºããŸãããŸãã**Hostmetrics Receiver** ãã¹ãã³ã«è¿œå ãã屿§ãæœåºã§ããŸãã
+
+{{% tabs %}}
+{{% tab title="Inspect the Gateway Trace File" %}}
+
+```bash
+jq -c '.resourceSpans[] as $resource | $resource.scopeSpans[].spans[] | "Span \(input_line_number) found with spanId \(.spanId), hostname \($resource.resource.attributes[] | select(.key == "host.name") | .value.stringValue), os \($resource.resource.attributes[] | select(.key == "os.type") | .value.stringValue)"' ./gateway-traces.out
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```text
+"Span 1 found with spanId d71fe6316276f97d, hostname workshop-instance, os linux"
+"Span 2 found with spanId e8d19489232f8c2a, hostname workshop-instance, os linux"
+"Span 3 found with spanId 9dfaf22857a6bd05, hostname workshop-instance, os linux"
+"Span 4 found with spanId c7f544a4b5fef5fc, hostname workshop-instance, os linux"
+"Span 5 found with spanId 30bb49261315969d, hostname workshop-instance, os linux"
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã`agent` ãš `gateway` ã®ããã»ã¹ã忢ããŸãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-5-addendum.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-5-addendum.md
new file mode 100644
index 0000000000..7d4d72c6de
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/2-5-addendum.md
@@ -0,0 +1,89 @@
+---
+title: 2.5 è£è¶³ - ã¢ã¯ã»ã¹ããŒã¯ã³ãšãããåŠçã«é¢ããæ
å ±
+linkTitle: 2.5 Addendum
+weight: 5
+hidden: true
+---
+
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+
+## otlphttp Exporter ã®æŠèŠ
+
+`otlphttp` exporter ã¯ãSplunk Observability Cloud ã«ã¡ããªã¯ã¹ãšãã¬ãŒã¹ãéä¿¡ããéã®çŸåšã®ããã©ã«ãã®æ¹åŒã§ãããã® exporter ã¯ãOpenTelemetry Protocol (OTLP) ã HTTP çµç±ã§å©çšãããã¬ã¡ããªããŒã¿ãæšæºåãããå¹ççãªæ¹æ³ã§éä¿¡ã§ããŸãã
+
+Splunk Distribution of the OpenTelemetry Collector ããã¹ãç£èŠ (agent) ã¢ãŒãã§ãããã€ããå Žåã`otlphttp` exporter ã¯ããã©ã«ãã§å«ãŸããŠããŸãããã㯠`sapm` ã `signalfx` ãšãã£ãæ§æ¥ã® exporter ã眮ãæãããã®ã§ããããã®æ§ exporter ã¯æ®µéçã«å»æ¢ããã€ã€ãããŸãã
+
+{{% /notice %}}
+
+## Splunk ã¢ã¯ã»ã¹ããŒã¯ã³ã®èšå®
+
+Splunk Observability Cloud ã«å¯ŸããŠèªèšŒãè¡ãããŒã¿ãéä¿¡ããã«ã¯ãã¢ã¯ã»ã¹ããŒã¯ã³ãé©åã«èšå®ããå¿
èŠããããŸãã
+OpenTelemetry ã§ã¯ãèªèšŒã¯ HTTP ããããŒãä»ããŠåŠçãããŸããã¢ã¯ã»ã¹ããŒã¯ã³ãæž¡ãã«ã¯ã`headers:` ããŒãšãã®ãµãããŒã§ãã `X-SF-Token:` ã䜿çšããŸãããã®èšå®ã¯ agent ã¢ãŒããš gateway ã¢ãŒãã®äž¡æ¹ã§æ©èœããŸãã
+
+äŸ:
+
+```yaml
+exporters:
+ otlphttp:
+ endpoint: "https://ingest..signalfx.com"
+ headers:
+ X-SF-Token: "your-access-token"
+```
+
+### Pass-Through ã¢ãŒã
+
+ããããŒããã€ãã©ã€ã³çµç±ã§è»¢éããå¿
èŠãããå Žåã¯ãOTLP receiver ã®èšå®ã§ `include_metadata:` ã `true` ã«èšå®ããpass-through ã¢ãŒããæå¹ã«ããŠãã ãããããã«ãããcollector ãåä¿¡ããèªèšŒããããŒãä¿æãããããŒã¿ãšãšãã«è»¢éãããŸãã
+
+äŸ:
+
+```yaml
+receivers:
+ otlp:
+ protocols:
+ http:
+ include_metadata: true
+```
+
+ããã¯ç¹ã« gateway ã¢ãŒãã«ãããŠæçšã§ãè€æ°ã® agent ããã®ããŒã¿ã Splunk ãžéä¿¡ãããåã«éçŽããã gateway ãçµç±ããã±ãŒã¹ã§åœ¹ç«ã¡ãŸãã
+
+## ãããåŠçã®çè§£
+
+Batch Processor ã¯ãããŒã¿éä¿¡å¹çãæé©åããããã®éèŠãªã³ã³ããŒãã³ãã§ãããã¬ãŒã¹ãã¡ããªã¯ã¹ããã°ããããã«ãŸãšããŠããããã¯ãšã³ãã«éä¿¡ããŸãããããåŠçã¯ä»¥äžã®ç¹ã§ããã©ãŒãã³ã¹ãåäžãããŸãã
+
+- éä¿¡ãªã¯ãšã¹ãæ°ãåæžããŸãã
+- å§çž®å¹çãåäžãããŸãã
+- ãããã¯ãŒã¯ãªãŒããŒããããäœæžããŸãã
+
+### Batch Processor ã®èšå®
+
+ãããåŠçãæå¹ã«ããã«ã¯ã`batch:` ã»ã¯ã·ã§ã³ãèšå®ãã`X-SF-Token:` ããŒãå«ããŠãã ãããããã«ãããSplunk Observability Cloud ã«éä¿¡ãããåã«ããŒã¿ãæ£ããã°ã«ãŒãåãããŸãã
+
+äŸ:
+
+```yaml
+processors:
+ batch:
+ metadata_keys: [X-SF-Token] # Array of metadata keys to batch
+ send_batch_size: 100
+ timeout: 5s
+```
+
+### ãããåŠçã®ãã¹ããã©ã¯ãã£ã¹
+
+æé©ãªããã©ãŒãã³ã¹ãåŸãããã«ã¯ããã¹ãŠã® collector ã®ãããã€ã« Batch Processor ã䜿çšããããšãæšå¥šãããŸããBatch Processor ã®æé©ãªé
眮äœçœ®ã¯ã**memory limiter ããã³ãµã³ããªã³ã° processor ã®åŸ** ã§ããããã«ãããå¿
èŠãªããŒã¿ã®ã¿ããããåããããããããããããŒã¿ã«å¯ŸããäžèŠãªåŠçãåé¿ã§ããŸãã
+
+### Batch Processor ã䜿ã£ã Gateway ã®èšå®
+
+gateway ããããã€ããéã¯ãBatch Processor ããã€ãã©ã€ã³ã«å«ãŸããŠããããšã確èªããŠãã ããã
+
+```yaml
+service:
+ pipelines:
+ traces:
+ processors: [memory_limiter, tail_sampling, batch]
+```
+
+## ãŸãšã
+
+`otlphttp` exporter ã¯ãSplunk Observability Cloud ã«ãã¬ã¡ããªããŒã¿ãéä¿¡ããéã«çŸåšæšå¥šãããæ¹åŒã§ããSplunk ã¢ã¯ã»ã¹ããŒã¯ã³ãé©åã«èšå®ããããšã§å®å
šãªããŒã¿éä¿¡ãå¯èœã«ãªããBatch Processor ã«ãããããã¯ãŒã¯ãªãŒããŒããããåæžããŠããã©ãŒãã³ã¹ãæé©åã§ããŸãããããã®ãã¹ããã©ã¯ãã£ã¹ãå®è·µããããšã§ããªãã¶ãŒãããªãã£ããŒã¿ãå€§èŠæš¡ã«å¹çããåéã»éä¿¡ã§ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/_index.md
new file mode 100644
index 0000000000..34db82bf77
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/2-gateway/_index.md
@@ -0,0 +1,116 @@
+---
+title: 2. Gateway ã®æ§æ
+linkTitle: 2. Gateway ã®ã»ããã¢ãã
+time: 10 minutes
+weight: 4
+---
+
+OpenTelemetry Gateway ã¯ããã¬ã¡ããªãŒããŒã¿ã®åä¿¡ã»åŠçã»ãšã¯ã¹ããŒããè¡ãããã«èšèšãããŠããŸãããã¬ã¡ããªãŒãœãŒã¹ïŒã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãªã©ïŒãšãããã¯ãšã³ãïŒPrometheusãJaegerãSplunk Observability Cloud ãªã©ã®å¯èŠ³æž¬æ§ãã©ãããã©ãŒã ïŒã®éã®äžç¶åœ¹ãšããŠåäœããŸãã
+
+Gateway ãæçšãªã®ã¯ããã¬ã¡ããªãŒããŒã¿ã®åéãäžå
åããããŒã¿ã®ãã£ã«ã¿ãªã³ã°ã倿ãè€æ°ã®å®å
ãžã®ã«ãŒãã£ã³ã°ãšãã£ãæ©èœãå®çŸã§ããããã§ãããŸãããã¬ã¡ããªãŒåŠçããªãããŒãããããšã§åã
ã®ãµãŒãã¹ã®è² è·ã軜æžãã忣ã·ã¹ãã å
šäœã§äžè²«ããããŒã¿ãã©ãŒããããä¿èšŒããŸããããã«ãããè€éãªç°å¢ã§ãã¬ã¡ããªãŒããŒã¿ã®ç®¡çãã¹ã±ãŒã«ãåæã容æã«ãªããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+- **Gateway terminal** ãŠã£ã³ããŠã§ `[WORKSHOP]` ãã£ã¬ã¯ããªã«ç§»åãã`2-gateway` ãšããååã®ãµããã£ã¬ã¯ããªãæ°èŠäœæããŸãã
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã `[WORKSHOP]/2-gateway` ãã£ã¬ã¯ããªã«ç§»åããŠãã ããã**
+
+- **Gateway terminal** ãŠã£ã³ããŠã«æ»ãã`1-agent` ãã£ã¬ã¯ããªã® `agent.yaml` ã `2-gateway` ã«ã³ããŒããŸãã
+- `gateway.yaml` ãšãããã¡ã€ã«ãäœæãã以äžã®åæèšå®ã远å ããŸãã
+
+```yaml { title="gateway.yaml" }
+########################### This section holds all the
+## Configuration section ## configurations that can be
+########################### used in this OpenTelemetry Collector
+extensions: # List of extensions
+ health_check: # Health check extension
+ endpoint: 0.0.0.0:14133 # Custom port to avoid conflicts
+
+receivers:
+ otlp: # OTLP receiver
+ protocols:
+ http: # HTTP protocol
+ endpoint: "0.0.0.0:5318" # Custom port to avoid conflicts
+ include_metadata: true # Required for token pass-through
+
+exporters: # List of exporters
+ debug: # Debug exporter
+ verbosity: detailed # Enable detailed debug output
+ file/traces: # Exporter Type/Name
+ path: "./gateway-traces.out" # Path for OTLP JSON output
+ append: false # Overwrite the file each time
+ file/metrics: # Exporter Type/Name
+ path: "./gateway-metrics.out" # Path for OTLP JSON output
+ append: false # Overwrite the file each time
+ file/logs: # Exporter Type/Name
+ path: "./gateway-logs.out" # Path for OTLP JSON output
+ append: false # Overwrite the file each time
+
+processors: # List of processors
+ memory_limiter: # Limits memory usage
+ check_interval: 2s # Memory check interval
+ limit_mib: 512 # Memory limit in MiB
+ batch: # Batches data before exporting
+ metadata_keys: # Groups data by token
+ - X-SF-Token
+ resource/add_mode: # Adds metadata
+ attributes:
+ - action: upsert # Inserts or updates a key
+ key: otelcol.service.mode # Key name
+ value: "gateway" # Key value
+
+# Connectors
+#connectors: # leave this commented out; we will uncomment in an upcoming exercise
+
+###########################
+### Activation Section ###
+###########################
+service: # Service configuration
+ telemetry:
+ metrics:
+ level: none # Disable metrics
+ extensions: [health_check] # Enabled extensions
+ pipelines: # Configured pipelines
+ traces: # Traces pipeline
+ receivers:
+ - otlp # OTLP receiver
+ processors: # Processors for traces
+ - memory_limiter
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug # Debug exporter
+ - file/traces
+ metrics: # Metrics pipeline
+ receivers:
+ - otlp # OTLP receiver
+ processors: # Processors for metrics
+ - memory_limiter
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug # Debug exporter
+ - file/metrics
+ logs: # Logs pipeline
+ receivers:
+ - otlp # OTLP receiver
+ processors: # Processors for logs
+ - memory_limiter
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug # Debug exporter
+ - file/logs
+```
+
+> [!NOTE]
+> `gateway` ãèµ·åãããšã`gateway-traces.out`ã`gateway-metrics.out`ã`gateway-logs.out` ã® 3 ã€ã®ãã¡ã€ã«ãçæãããŸãããããã®ãã¡ã€ã«ã«ã¯ãæçµçã« Gateway ãåä¿¡ãããã¬ã¡ããªãŒããŒã¿ãæžã蟌ãŸããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/3-filelog/3-1-configuration.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/3-filelog/3-1-configuration.md
new file mode 100644
index 0000000000..68df3f729e
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/3-filelog/3-1-configuration.md
@@ -0,0 +1,73 @@
+---
+title: 3.1 Configuration
+linkTitle: 3.1 Configuration
+weight: 1
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+**Agent terminal** ãŠã£ã³ããŠã§ `agent.yaml` ãç·šéããFileLog ã¬ã·ãŒããŒãèšå®ããŸãã
+
+1. **FileLog ã¬ã·ãŒããŒã®èšå®**: `filelog` ã¬ã·ãŒããŒã¯ããã¡ã€ã«ãããã°ããŒã¿ãèªã¿åãããã°ããŒã¿ã«ã«ã¹ã¿ã ãªãœãŒã¹å±æ§ãå«ããŸãã
+
+ ```yaml
+ filelog/quotes: # Receiver Type/Name
+ include: ./quotes.log # The file to read log data from
+ include_file_path: true # Include file path in the log data
+ include_file_name: false # Exclude file name from the log data
+ resource: # Add custom resource attributes
+ com.splunk.source: ./quotes.log # Source of the log data
+ com.splunk.sourcetype: quotes # Source type of the log data
+ ```
+
+2. **`logs` ãã€ãã©ã€ã³ã®æŽæ°**: `logs` ãã€ãã©ã€ã³ã«ã®ã¿ `filelog/quotes` ã¬ã·ãŒããŒã远å ããŸãã
+
+ ```yaml
+ logs:
+ receivers:
+ - otlp
+ - filelog/quotes # Filelog Receiver
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - otlphttp
+ ```
+
+3. **èšå®ã®æ€èšŒ**: æŽæ°ãã `agent.yaml` ã **[otelbin.io](https://www.otelbin.io/)** ã«è²Œãä»ããŸããåèãŸã§ã«ããã€ãã©ã€ã³ã® `logs:` ã»ã¯ã·ã§ã³ã¯æ¬¡ã®ãããªè¡šç€ºã«ãªããŸãã
+
+ ```mermaid
+ %%{init:{"fontFamily":"monospace"}}%%
+ graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ REC2(filelog
fa:fa-download
quotes):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(resourcedetection
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(batch
fa:fa-microchip):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2(otlphttp
fa:fa-upload):::exporter
+ %% Links
+ subID1:::sub-logs
+ subgraph " "
+ subgraph subID1[**Logs**]
+ direction LR
+ REC1 --> PRO1
+ REC2 --> PRO1
+ PRO1 --> PRO2
+ PRO2 --> PRO3
+ PRO3 --> PRO4
+ PRO4 --> EXP1
+ PRO4 --> EXP2
+ end
+ end
+ classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+ classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+ classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+ classDef sub-logs stroke:#34d399,stroke-width:1px, color:#34d399,stroke-dasharray: 3 3;
+ ```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/3-filelog/3-2-test-filelog.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/3-filelog/3-2-test-filelog.md
new file mode 100644
index 0000000000..6b10b3ab04
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/3-filelog/3-2-test-filelog.md
@@ -0,0 +1,150 @@
+---
+title: 3.2 Test FileLog Receiver
+linkTitle: 3.2 Test FileLog Receiver
+weight: 4
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Gateway ãèµ·åãã**: **Gateway terminal** ãŠã£ã³ããŠã§ `gateway` ãèµ·åããŸãã
+
+**Agent ãèµ·åãã**: **Agent terminal** ãŠã£ã³ããŠã§ `agent` ãèµ·åããŸãã
+
+`quotes.log` ããã®ãã°ããŒã¿ã®é£ç¶çãªã¹ããªãŒã ãã`agent` ãš `gateway` ã®ãããã°ãã°ã«è¡šç€ºãããŸãã
+
+```text { title="Agent/Gateway Debug Output" }
+Timestamp: 1970-01-01 00:00:00 +0000 UTC
+SeverityText:
+SeverityNumber: Unspecified(0)
+Body: Str(2025-03-06 15:18:32 [ERROR] - There is some good in this world, and it's worth fighting for. LOTR)
+Attributes:
+ -> log.file.path: Str(quotes.log)
+Trace ID:
+Span ID:
+Flags: 0
+LogRecord #1
+```
+
+**`loadgen` ã忢ãã**: **Logs terminal** ãŠã£ã³ããŠã§ã`Ctrl-C` ã䜿ã£ãŠ `loadgen` ã忢ããŸãã
+
+**gateway ã確èªãã**: `gateway` ã `./gateway-logs.out` ãã¡ã€ã«ãæžãåºããŠãããã確èªããŸãã
+
+ãã®æç¹ã§ããã£ã¬ã¯ããªæ§é ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.out
+âââ agent.yaml
+âââ gateway-logs.out # Output from the logs pipeline
+âââ gateway-metrics.out # Output from the metrics pipeline
+âââ gateway-traces.out # Output from the traces pipeline
+âââ gateway.yaml
+âââ quotes.log # File containing Random log lines
+```
+
+**ãã°è¡ã調ã¹ã**: `gateway-logs.out` ã®äžã®ãã°è¡ãã以äžã®ã¹ãããããšæ¯èŒããŸãããã°ãšã³ããªã«ã以åã¡ããªã¯ã¹ããã¬ãŒã¹ã®ããŒã¿ã§èŠããã®ãšåã屿§ãå«ãŸããŠããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="cat /gateway-logs.out" %}}
+
+```json
+{"resourceLogs":[{"resource":{"attributes":[{"key":"com.splunk.source","value":{"stringValue":"./quotes.log"}},{"key":"com.splunk.sourcetype","value":{"stringValue":"quotes"}},{"key":"host.name","value":{"stringValue":"workshop-instance"}},{"key":"os.type","value":{"stringValue":"linux"}},{"key":"otelcol.service.mode","value":{"stringValue":"gateway"}}]},"scopeLogs":[{"scope":{},"logRecords":[{"observedTimeUnixNano":"1741274312475540000","body":{"stringValue":"2025-03-06 15:18:32 [DEBUG] - All we have to decide is what to do with the time that is given us. LOTR"},"attributes":[{"key":"log.file.path","value":{"stringValue":"quotes.log"}}],"traceId":"","spanId":""},{"observedTimeUnixNano":"1741274312475560000","body":{"stringValue":"2025-03-06 15:18:32 [DEBUG] - Your focus determines your reality. SW"},"attributes":[{"key":"log.file.path","value":{"stringValue":"quotes.log"}}],"traceId":"","spanId":""}]}],"schemaUrl":"https://opentelemetry.io/schemas/1.6.1"}]}
+```
+
+{{% /tab %}}
+{{% tab title="cat ./gateway-logs.out | jq" %}}
+
+```json
+{
+ "resourceLogs": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "com.splunk.source",
+ "value": {
+ "stringValue": "./quotes.log"
+ }
+ },
+ {
+ "key": "com.splunk.sourcetype",
+ "value": {
+ "stringValue": "quotes"
+ }
+ },
+ {
+ "key": "host.name",
+ "value": {
+ "stringValue": "workshop-instance"
+ }
+ },
+ {
+ "key": "os.type",
+ "value": {
+ "stringValue": "linux"
+ }
+ },
+ {
+ "key": "otelcol.service.mode",
+ "value": {
+ "stringValue": "gateway"
+ }
+ }
+ ]
+ },
+ "scopeLogs": [
+ {
+ "scope": {},
+ "logRecords": [
+ {
+ "observedTimeUnixNano": "1741274312475540000",
+ "body": {
+ "stringValue": "2025-03-06 15:18:32 [DEBUG] - All we have to decide is what to do with the time that is given us. LOTR"
+ },
+ "attributes": [
+ {
+ "key": "log.file.path",
+ "value": {
+ "stringValue": "quotes.log"
+ }
+ }
+ ],
+ "traceId": "",
+ "spanId": ""
+ },
+ {
+ "observedTimeUnixNano": "1741274312475560000",
+ "body": {
+ "stringValue": "2025-03-06 15:18:32 [DEBUG] - Your focus determines your reality. SW"
+ },
+ "attributes": [
+ {
+ "key": "log.file.path",
+ "value": {
+ "stringValue": "quotes.log"
+ }
+ }
+ ],
+ "traceId": "",
+ "spanId": ""
+ }
+ ]
+ }
+ ],
+ "schemaUrl": "https://opentelemetry.io/schemas/1.6.1"
+ }
+ ]
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+ãã¹ãŠã®ãã°è¡ã«ã`"traceId":""` ãš `"spanId":""` ã®ç©ºã®ãã¬ãŒã¹ãã«ããŒãå«ãŸããŠããããšã«æ°ä»ãããããããŸããã
+FileLog receiver ã¯ããããã®ãã£ãŒã«ãããã°è¡ã«ãŸã ååšããªãå Žåã«ã®ã¿ãããããèšå®ããŸãã
+ããšãã°ããã°è¡ã OpenTelemetry ã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã©ã€ãã©ãªã§èšè£
ãããã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠçæãããå Žåããããã®ãã£ãŒã«ãã¯ãã§ã«å«ãŸããŠãããäžæžããããããšã¯ãããŸããã
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã`agent` ãš `gateway` ã®ããã»ã¹ã忢ããŠãã ããã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/3-filelog/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/3-filelog/_index.md
new file mode 100644
index 0000000000..2d53e9f74c
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/3-filelog/_index.md
@@ -0,0 +1,66 @@
+---
+title: 3. FileLog Setup
+linkTitle: 3. FileLog Setup
+time: 10 minutes
+weight: 5
+---
+
+OpenTelemetry Collector ã® [**FileLog Receiver**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/filelogreceiver/README.md) ã¯ããã¡ã€ã«ãããã°ãåã蟌ãããã«äœ¿çšããŸãã
+
+æå®ããããã¡ã€ã«ãç£èŠããŠæ°ãããã°ãšã³ããªãæ€åºãããããã®ãã°ã Collector ã«ã¹ããªãŒãã³ã°ããŠãåŸç¶ã®åŠçããšã¯ã¹ããŒããè¡ããŸãããã¹ããéçºã®çšéã«ã䟿å©ã§ãã
+
+ã¯ãŒã¯ã·ã§ããã®ãã®ããŒãã§ã¯ã`loadgen` ãã©ã³ãã ãªåèšã䜿ã£ãŠãã°ãçæããŸã:
+
+```golang
+lotrQuotes := []string{
+ "One does not simply walk into Mordor.",
+ "Even the smallest person can change the course of the future.",
+ "All we have to decide is what to do with the time that is given us.",
+ "There is some good in this world, and it's worth fighting for.",
+}
+
+starWarsQuotes := []string{
+ "Do or do not, there is no try.",
+ "The Force will be with you. Always.",
+ "I find your lack of faith disturbing.",
+ "In my experience, there is no such thing as luck.",
+}
+```
+
+`agent` Collector ã® **FileLog receiver** ã¯ããããã®ãã°è¡ãèªã¿åã£ãŠ `gateway` ã«éä¿¡ããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+- **Logs ã¿ãŒããã«** ãŠã£ã³ããŠã§ã`[WORKSHOP]` ãã£ã¬ã¯ããªã«ç§»åãã`3-filelog` ãšããæ°ãããµããã£ã¬ã¯ããªãäœæããŸãã
+- 次ã«ã`2-gateway` ãã `*.yaml` ã `3-filelog` ã«ã³ããŒããŸãã
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã `[WORKSHOP]/3-filelog` ãã£ã¬ã¯ããªã«å€æŽããŠãã ããã**
+
+`loadgen` ãèµ·åãããšã`quotes.log` ãšãããã¡ã€ã«ã«è¡ã®æžã蟌ã¿ãå§ãŸããŸã:
+
+{{% tabs %}}
+{{% tab title="Log Load Generator" %}}
+
+```bash
+../loadgen -logs
+```
+
+{{% /tab %}}
+{{% tab title="Log Load Generator Output" %}}
+
+```text
+Writing logs to quotes.log. Press Ctrl+C to stop.
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+âââ quotes.yaml
+```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-1-configuration.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-1-configuration.md
new file mode 100644
index 0000000000..cf0977d13e
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-1-configuration.md
@@ -0,0 +1,91 @@
+---
+title: 4.1 File Storage ã®èšå®
+linkTitle: 4.1 èšå®
+weight: 1
+---
+
+ãã®æŒç¿ã§ã¯ã`agent.yaml` ãã¡ã€ã«ã® `extensions:` ã»ã¯ã·ã§ã³ãæŽæ°ããŸãããã®ã»ã¯ã·ã§ã³ã¯ OpenTelemetry ã®èšå® YAML ã®äžéšã§ãããOpenTelemetry Collector ã®æåãæ¡åŒµãŸãã¯å€æŽãããªãã·ã§ã³ã³ã³ããŒãã³ããå®çŸ©ããŸãã
+
+ãããã®ã³ã³ããŒãã³ãã¯ãã¬ã¡ããªããŒã¿ãçŽæ¥åŠçããããã§ã¯ãããŸããããCollector ã®æ©èœã匷åããæçšãªæ©èœããµãŒãã¹ãæäŸããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**`agent.yaml` ã®æŽæ°**: **Agent ã¿ãŒããã«** ãŠã£ã³ããŠã§ã`file_storage` ãšã¯ã¹ãã³ã·ã§ã³ã远å ãã`checkpoint` ãšããååãä»ããŸãã
+
+```yaml
+ file_storage/checkpoint: # Extension Type/Name
+ directory: "./checkpoint-dir" # Define directory
+ create_directory: true # Create directory
+ timeout: 1s # Timeout for file operations
+ compaction: # Compaction settings
+ on_start: true # Start compaction at Collector startup
+ # Define compaction directory
+ directory: "./checkpoint-dir/tmp"
+ max_transaction_size: 65536 # Max. size limit before compaction occurs
+```
+
+**æ¢åã® `otlphttp` ãšã¯ã¹ããŒã¿ãŒã« `file_storage` ã远å **: `otlphttp:` ãšã¯ã¹ããŒã¿ãŒã倿ŽããŠãªãã©ã€ããã³ãã¥ãŒã€ã³ã°ã®ã¡ã«ããºã ãèšå®ããé害çºçæã«ããŒã¿ãä¿æããŠåéã§ããããã«ããŸãã
+
+```yaml
+ otlphttp:
+ endpoint: "http://localhost:5318"
+ retry_on_failure:
+ enabled: true # Enable retry on failure
+ sending_queue: #
+ enabled: true # Enable sending queue
+ num_consumers: 10 # No. of consumers
+ queue_size: 10000 # Max. queue size
+ storage: file_storage/checkpoint # File storage extension
+```
+
+**`services` ã»ã¯ã·ã§ã³ã®æŽæ°**: æ¢åã® `extensions:` ã»ã¯ã·ã§ã³ã« `file_storage/checkpoint` ãšã¯ã¹ãã³ã·ã§ã³ã远å ããŸããããã«ãããšã¯ã¹ãã³ã·ã§ã³ãæå¹ã«ãªããŸãã
+
+```yaml
+service:
+ extensions:
+ - health_check
+ - file_storage/checkpoint # Enabled extensions for this collector
+```
+
+**`metrics` ãã€ãã©ã€ã³ã®æŽæ°**: ãã®æŒç¿ã§ã¯ããããã°ããã°ã®ãã€ãºãæžããããã«ãMetrics ãã€ãã©ã€ã³ãã `hostmetrics` ã¬ã·ãŒããŒãåé€ããŸãã
+
+```yaml
+ metrics:
+ receivers:
+ - otlp
+ # - hostmetrics # Hostmetrics Receiver
+```
+
+{{% /notice %}}
+
+**[otelbin.io](https://www.otelbin.io/)** ã䜿ã£ãŠ `agent` ã®èšå®ãæ€èšŒããŠãã ãããåèãŸã§ã«ããã€ãã©ã€ã³ã® `metrics:` ã»ã¯ã·ã§ã³ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(resourcedetection
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(batch
fa:fa-microchip):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2(otlphttp
fa:fa-upload):::exporter
+ %% Links
+ subID1:::sub-metrics
+ subgraph " "
+ subgraph subID1["`**Metrics**`"]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PRO2
+ PRO2 --> PRO3
+ PRO3 --> PRO4
+ PRO4 --> EXP1
+ PRO4 --> EXP2
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-metrics stroke:#38bdf8,stroke-width:1px, color:#38bdf8,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-2-test-environment.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-2-test-environment.md
new file mode 100644
index 0000000000..279253ba65
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-2-test-environment.md
@@ -0,0 +1,33 @@
+---
+title: 4.2 ã¬ãžãªãšã³ã¹ãã¹ãçšã®ç°å¢æ§ç¯
+linkTitle: 4.2 ç°å¢æ§ç¯
+weight: 2
+---
+
+次ã«ã**File Storage** èšå®ããã¹ãããæºåãšããŠãç°å¢ãæ§æããŠãããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Gateway ãèµ·å**: **Gateway terminal** ãŠã£ã³ããŠã§ `[WORKSHOP]/4-resilience` ãã£ã¬ã¯ããªã«ç§»åããæ¬¡ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash { title="Start the Gateway" }
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãèµ·å**: **Agent terminal** ãŠã£ã³ããŠã§ `[WORKSHOP]/4-resilience` ãã£ã¬ã¯ããªã«ç§»åããæ¬¡ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+**5 ä»¶ã®ãã¹ã span ãéä¿¡**: **Spans terminal** ãŠã£ã³ããŠã§ `[WORKSHOP]/4-resilience` ãã£ã¬ã¯ããªã«ç§»åããæ¬¡ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash { title="Start Load Generator" }
+../loadgen -count 5
+```
+
+`agent` ãš `gateway` ã®äž¡æ¹ã§ãããã°ãã°ã衚瀺ããã`gateway` åŽã«ã¯ `./gateway-traces.out` ãã¡ã€ã«ãäœæãããŠããã¯ãã§ãã
+
+{{% /notice %}}
+
+ãã¹ãŠæ£åžžã«åäœããŠããã°ãã·ã¹ãã ã®ã¬ãžãªãšã³ã¹ãã¹ãã«é²ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-3-failure.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-3-failure.md
new file mode 100644
index 0000000000..22db061b7f
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-3-failure.md
@@ -0,0 +1,46 @@
+---
+title: 4.3 é害ãã·ãã¥ã¬ãŒããã
+linkTitle: 4.3 é害ãã·ãã¥ã¬ãŒããã
+weight: 3
+---
+
+**Agent** ã®ã¬ãžãªãšã³ã¹ãè©äŸ¡ããããã`gateway` ã®äžæçãªåæ¢ãã·ãã¥ã¬ãŒããã`agent` ãã©ã®ããã«å¯ŸåŠãããã芳å¯ããŸãã
+
+**æŠèŠ**:
+
+1. **Agent ã«ãã¬ãŒã¹ãéä¿¡** â `agent` ã«ãã¬ãŒã¹ãéä¿¡ããŠãã©ãã£ãã¯ãçæããŸãã
+2. **Gateway ã忢** â ããã«ãã `agent` ããªãã©ã€ã¢ãŒãã«å
¥ããŸãã
+3. **Gateway ãåèµ·å** â `agent` ã¯æ°žç¶ãã¥ãŒãããã¬ãŒã¹ã埩å
ããæ£åžžã«è»¢éããŸããæ°žç¶ãã¥ãŒããªããã°ããããã®ãã¬ãŒã¹ã¯æ°žä¹
ã«å€±ãããŠããã§ãããã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**ãããã¯ãŒã¯é害ãã·ãã¥ã¬ãŒããã**: **Gateway terminal** ã§ `Ctrl-C` ã䜿ã£ãŠ `gateway` ã忢ããgateway ã®ã³ã³ãœãŒã«ã«åæ¢ããããšã衚瀺ããããŸã§åŸ
ã¡ãŸãã
+
+```text
+2025-01-28T13:24:32.785+0100 info service@v0.120.0/service.go:309 Shutdown complete.
+```
+
+**ãã¬ãŒã¹ãéä¿¡ãã**: **Spans terminal** ãŠã£ã³ããŠã§ã`loadgen` ã䜿ã£ãŠããã« 5 ã€ã®ãã¬ãŒã¹ãéä¿¡ããŸãã
+
+agent ãããŒã¿ã®åéä¿¡ãç¶ç¶çã«è©Šã¿ãããšã§ãªãã©ã€ã¡ã«ããºã ãèµ·åããããšã«æ³šç®ããŠãã ãããagent ã®ã³ã³ãœãŒã«åºåã«ã¯ã以äžã®ãããªç¹°ãè¿ãã¡ãã»ãŒãžã衚瀺ãããŸãã
+
+```text
+2025-01-28T14:22:47.020+0100 info internal/retry_sender.go:126 Exporting failed. Will retry the request after interval. {"kind": "exporter", "data_type": "traces", "name": "otlphttp", "error": "failed to make an HTTP request: Post \"http://localhost:5318/v1/traces\": dial tcp 127.0.0.1:5318: connect: connection refused", "interval": "9.471474933s"}
+```
+
+**Agent ã忢ãã**: **Agent terminal** ãŠã£ã³ããŠã§ã`Ctrl-C` ã䜿ã£ãŠ agent ã忢ããŸããagent ã®ã³ã³ãœãŒã«ã«åæ¢ããããšã衚瀺ããããŸã§åŸ
ã¡ãŸãã
+
+```text
+2025-01-28T14:40:28.702+0100 info extensions/extensions.go:66 Stopping extensions...
+2025-01-28T14:40:28.702+0100 info service@v0.120.0/service.go:309 Shutdown complete.
+```
+
+{{% /notice %}}
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+agent ã忢ãããšããªãã©ã€è©Šè¡ã忢ãã以éã®ãªãã©ã€åäœãçºçããªããªããŸãã
+
+agent ãããŒã¿ãæ£åžžã«é
ä¿¡ã§ããªããŸãŸé·æéåäœãç¶ãããšããªãã©ã€èšå®ã«ãã£ãŠã¯ã¡ã¢ãªãç¯çŽããããã«ãã¬ãŒã¹ããããããå§ããå ŽåããããŸããagent ã忢ããããšã§ãã¡ã¢ãªå
ã«çŸåšä¿æãããŠããã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ããããããããåã«å€±ãããåŸ©æ§æã«å©çšå¯èœãªç¶æ
ãä¿ã€ããšãã§ããŸãã
+
+ãã®ã¹ãããã¯ãagent ãåèµ·åããéã®åŸ©æ§ããã»ã¹ãæç¢ºã«èгå¯ããããã«äžå¯æ¬ ã§ãã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-4-recovery.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-4-recovery.md
new file mode 100644
index 0000000000..3576822df3
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/4-4-recovery.md
@@ -0,0 +1,78 @@
+---
+title: 4.4 Recovery
+linkTitle: 4.4 Recovery
+weight: 4
+---
+
+ãã®æŒç¿ã§ã¯ã**Gateway** ã³ã¬ã¯ã¿ãŒãåèµ·åããããšã§ã**OpenTelemetry Collector** ããããã¯ãŒã¯é害ããã©ã®ããã«å埩ãããããã¹ãããŸãã`gateway` ãåã³å©çšå¯èœã«ãªããšã`agent` ã¯æåŸã«ãã§ãã¯ãã€ã³ããèšé²ãããç¶æ
ããããŒã¿ã®éä¿¡ãåéããããŒã¿æå€±ãçºçããªãããšãä¿èšŒããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Gateway ãåèµ·åãã**: **Gateway ã¿ãŒããã«** ãŠã£ã³ããŠã§ä»¥äžãå®è¡ããŸãã
+
+```bash {title="Gateway"}
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãåèµ·åãã**: **Agent ã¿ãŒããã«** ãŠã£ã³ããŠã§ä»¥äžãå®è¡ããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+{{% /notice %}}
+
+`agent` ãèµ·åããŠçšŒåãéå§ãããšã**File_Storage** æ¡åŒµæ©èœã¯ãã§ãã¯ãã€ã³ããã©ã«ããŒå
ã«ãããã¡ãªã³ã°ãããããŒã¿ãæ€åºããŸãã
+ãããŠãæåŸã®ãã§ãã¯ãã€ã³ããã©ã«ããŒããä¿åæžã¿ã®ã¹ãã³ãããã¥ãŒãå§ããããŒã¿ã倱ãããªãããã«ããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Agent ã®ãããã°åºåã確èªãã**
+Agent ã®ãããã°ç»é¢ã¯å€å**ããªã**ããšã«æ³šæããŠãã ãããæ¬¡ã®è¡ã衚瀺ããããŸãŸã§ãæ°ããããŒã¿ããšã¯ã¹ããŒããããŠããªãããšã瀺ããŠããŸãã
+
+ ```text
+ 2025-02-07T13:40:12.195+0100 info service@v0.120.0/service.go:253 Everything is ready. Begin running and processing data.
+ ```
+
+**Gateway ã®ãããã°åºåã芳å¯ãã**
+`gateway` ã®ãããã°ç»é¢ã§ã¯ã远å ã®æäœãäžåè¡ããªããŠãããããŸã§éä¿¡ã§ããªãã£ããã¬ãŒã¹ã®åä¿¡ãéå§ããããšã確èªã§ããã¯ãã§ãã
+
+ ```txt
+ 2025-02-07T12:44:32.651+0100 info service@v0.120.0/service.go:253 Everything is ready. Begin running and processing data.
+ 2025-02-07T12:47:46.721+0100 info Traces {"kind": "exporter", "data_type": "traces", "name": "debug", "resource spans": 4, "spans": 4}
+ 2025-02-07T12:47:46.721+0100 info ResourceSpans #0
+ Resource SchemaURL: https://opentelemetry.io/schemas/1.6.1
+ Resource attributes:
+ ```
+
+**`gateway-traces.out` ãã¡ã€ã«ã確èªãã**
+`jq` ã䜿çšããŠãåçæããã `gateway-traces.out` å
ã®ãã¬ãŒã¹æ°ãã«ãŠã³ãããŸãã`gateway` ãããŠã³ããŠããéã«éä¿¡ããæ°ãšäžèŽããŠããã¯ãã§ãã
+
+{{% tabs %}}
+{{% tab title="Check Gateway Traces Out File" %}}
+
+```bash
+jq '.resourceSpans | length | "\(.) resourceSpans found"' gateway-traces.out
+```
+
+{{% /tab %}}
+
+{{% tab title="Example output" %}}
+
+```text
+"5 resourceSpans found"
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã`agent` ããã»ã¹ãš `gateway` ããã»ã¹ã忢ããŠãã ããã
+
+{{% /notice %}}
+
+### ãŸãšã
+
+ãã®æŒç¿ã§ã¯ã`file_storage` æ¡åŒµæ©èœãæ§æãã`otlp` ãšã¯ã¹ããŒã¿ãŒã®ãªãã©ã€æ©æ§ãæå¹åãããã¡ã€ã«ããã¯ã¢ãããã¥ãŒãäžæçãªããŒã¿ä¿åã«äœ¿çšããããšã§ãOpenTelemetry Collector ã®ã¬ãžãªãšã³ã¹ãã©ã®ããã«é«ãããããã瀺ããŸããã
+
+ãã¡ã€ã«ããŒã¹ã®ãã§ãã¯ãã€ã³ãåŠçãšãã¥ãŒã®æ°žç¶åãå®è£
ããããšã§ããã¬ã¡ããªãŒãã€ãã©ã€ã³ã¯äžæçãªäžæããåªé
ã«å埩ã§ããããã«ãªããæ¬çªç°å¢ã«ãããŠããå
ç¢ã§ä¿¡é Œæ§ã®é«ããã®ãšãªããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/_index.md
new file mode 100644
index 0000000000..b341832b07
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/4-building-resilience/_index.md
@@ -0,0 +1,36 @@
+---
+title: 4. ã¬ãžãªãšã³ã¹ã®çµã¿èŸŒã¿
+linkTitle: 4. ã¬ãžãªãšã³ã¹ã®æ§ç¯
+time: 10 minutes
+weight: 6
+---
+
+OpenTelemetry Collector ã® [**FileStorage Extension**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/19bc7d6ee854c0c1b5c97d8d348e5b9d1199e8aa/extension/storage/filestorage/README.md) ã¯ãä¿¡é Œæ§ã®é«ããã§ãã¯ãã€ã³ãæ©èœããªãã©ã€ç®¡çãããã³äžæçãªé害ãžã®å¹æçãªå¯Ÿå¿ãæäŸããããšã§ããã¬ã¡ããªãŒãã€ãã©ã€ã³ã®ã¬ãžãªãšã³ã¹ãé«ããŸãã
+
+ãã®æ¡åŒµæ©èœãæå¹ã«ãããšãOpenTelemetry Collector ã¯äžéç¶æ
ããã£ã¹ã¯ã«ä¿åã§ããããã«ãªãããããã¯ãŒã¯é害æã®ããŒã¿æå€±ãé²ããã·ãŒã ã¬ã¹ã«åŠçãåéã§ããŸãã
+
+{{% notice note %}}
+
+ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãæ¥ç¶ããŠã³ã¿ã€ã ãçæéïŒæå€§ 15 åïŒã§ããã°ã¡ããªã¯ã¹ã§ãåäœããŸããããŠã³ã¿ã€ã ããããè¶
ãããšãããŒã¿ãã€ã³ãã®é åºã厩ããããšã«ãã Splunk Observability Cloud ã¯ããŒã¿ãããããããŸãã
+
+ãã°ã«ã€ããŠã¯ãä»åŸã® Splunk OpenTelemetry Collector ã®ãªãªãŒã¹ã§ããããšã³ã¿ãŒãã©ã€ãºåãã®ãœãªã¥ãŒã·ã§ã³ãå®è£
ããèšç»ããããŸãã
+
+{{% /notice %}}
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+- `[WORKSHOP]` ãã£ã¬ã¯ããªå
ã«ã`4-resilience` ãšããååã®æ°ãããµããã£ã¬ã¯ããªãäœæããŸãã
+- 次ã«ã`3-filelog` ãã£ã¬ã¯ããªãã `*.yaml` ã `4-resilience` ã«ã³ããŒããŸãã
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã `[WORKSHOP]/4-resilience` ãã£ã¬ã¯ããªã«å€æŽããŠãã ããã**
+
+æŽæ°åŸã®ãã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/5-dropping-spans/5-1-configuration.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/5-dropping-spans/5-1-configuration.md
new file mode 100644
index 0000000000..3cfb26703c
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/5-dropping-spans/5-1-configuration.md
@@ -0,0 +1,73 @@
+---
+title: 5.1 Configuration
+linkTitle: 5.1 Configuration
+weight: 1
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Gateway ã¿ãŒããã«** ãŠã£ã³ããŠã«åãæ¿ãã`gateway.yaml` ãã¡ã€ã«ãéããŠãã ããã`processors` ã»ã¯ã·ã§ã³ã以äžã®èšå®ã§æŽæ°ããŸãã
+
+1. **`filter` ããã»ããµãŒã远å ãã**:
+ `/_healthz` ãšããååã®ã¹ãã³ãé€å€ããããã« Gateway ãèšå®ããŸãã`error_mode: ignore` ãã£ã¬ã¯ãã£ãã¯ããã£ã«ã¿ãªã³ã°äžã«çºçãããšã©ãŒãç¡èŠãããã€ãã©ã€ã³ãåé¡ãªã皌åãç¶ããããšãä¿èšŒããŸãã`traces` ã»ã¯ã·ã§ã³ã§ã¯ãã£ã«ã¿ãªã³ã°ã«ãŒã«ãå®çŸ©ããŠãããç¹ã« `/_healthz` ãšããååã®ã¹ãã³ãé€å€å¯Ÿè±¡ãšããŸãã
+
+ ```yaml
+ filter/health: # Defines a filter processor
+ error_mode: ignore # Ignore errors
+ traces: # Filtering rules for traces
+ span: # Exclude spans named "/_healthz"
+ - 'name == "/_healthz"'
+ ```
+
+2. **`filter` ããã»ããµãŒã `traces` ãã€ãã©ã€ã³ã«è¿œå ãã**:
+ `filter/health` ããã»ããµãŒã `traces` ãã€ãã©ã€ã³ã«å«ããŸããæé©ãªããã©ãŒãã³ã¹ãåŸãããã«ããã£ã«ã¿ãŒã¯ã§ããã ãæ©ãæ®µéãã€ãŸã `memory_limiter` ã®çŽåŸã`batch` ããã»ããµãŒã®åã«é
眮ããŸããèšå®ã¯ä»¥äžã®ããã«ãªããŸãã
+
+ ```yaml
+ traces:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - filter/health # Filters data based on rules
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - file/traces
+ ```
+
+ãã®æ§æã«ããããã«ã¹ãã§ãã¯é¢é£ã®ã¹ãã³ (`/_healthz`) ããã€ãã©ã€ã³ã®æ©ã段éã§é€å€ããããã¬ã¡ããªãŒããŒã¿å
ã®äžèŠãªãã€ãºãåæžãããŸãã
+
+{{% /notice %}}
+
+**[otelbin.io](https://www.otelbin.io/)** ã䜿çšããŠãšãŒãžã§ã³ãã®èšå®ãæ€èšŒããŠãã ãããåèãŸã§ã«ããã€ãã©ã€ã³ã® `traces:` ã»ã¯ã·ã§ã³ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(filter
fa:fa-microchip
health):::processor
+ PRO5(batch
fa:fa-microchip):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2( file
fa:fa-upload
traces):::exporter
+ %% Links
+ subID1:::sub-traces
+ subgraph " "
+ subgraph subID1["`**Traces**`"]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PRO4
+ PRO4 --> PRO3
+ PRO3 --> PRO5
+ PRO5 --> EXP1
+ PRO5 --> EXP2
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-traces stroke:#fbbf24,stroke-width:1px, color:#fbbf24,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/5-dropping-spans/5-2-test-filter.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/5-dropping-spans/5-2-test-filter.md
new file mode 100644
index 0000000000..aeaa11d583
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/5-dropping-spans/5-2-test-filter.md
@@ -0,0 +1,128 @@
+---
+title: 5.2 Test Filter Processor
+linkTitle: 5.2 Test Filter Processor
+weight: 2
+---
+
+èšå®ããã¹ãããã«ã¯ã`"/_healthz"` ãšããååã®ã¹ãã³ãå«ããã¬ãŒã¹ããŒã¿ãçæããå¿
èŠããããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Gateway ãèµ·åãã**: **Gateway terminal** ãŠã£ã³ããŠã§ `gateway` ãèµ·åããŸãã
+
+```bash
+../otelcol --config ./gateway.yaml
+```
+
+**Agent ãèµ·åãã**: **Agent terminal** ãŠã£ã³ããŠã§ `agent` ãèµ·åããŸãã
+
+```bash
+../otelcol --config ./agent.yaml
+```
+
+**Loadgen ãèµ·åãã**: **Spans terminal** ãŠã£ã³ããŠã§ãããŒã¹ã®ã¹ãã³ãšäœµã㊠`healthz` ã¹ãã³ãéä¿¡ãããã©ã°ãä»ã㊠`loadgen` ãå®è¡ããŸãã
+
+```bash
+../loadgen -health -count 5
+```
+
+**`agent.out` ã確èªãã**: `jq` ã䜿ã£ãŠã`agent` ãåä¿¡ããã¹ãã³ã®ååã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="Check spans in agent.out" %}}
+
+```bash
+jq -c '.resourceSpans[].scopeSpans[].spans[] | "Span \(input_line_number) found with name \(.name)"' ./agent.out
+```
+
+{{% /tab %}}
+{{% tab title="Example output" %}}
+
+```text
+"Span 1 found with name /movie-validator"
+"Span 2 found with name /_healthz"
+"Span 3 found with name /movie-validator"
+"Span 4 found with name /_healthz"
+"Span 5 found with name /movie-validator"
+"Span 6 found with name /_healthz"
+"Span 7 found with name /movie-validator"
+"Span 8 found with name /_healthz"
+"Span 9 found with name /movie-validator"
+"Span 10 found with name /_healthz"
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**Gateway ã®ãããã°åºåã確èªãã**: `jq` ã䜿ã£ãŠã`gateway` ãåä¿¡ããã¹ãã³ã®ååã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="Check spans in gateway-traces.out" %}}
+
+```bash { title="Check spans in gateway-traces.out" }
+jq -c '.resourceSpans[].scopeSpans[].spans[] | "Span \(input_line_number) found with name \(.name)"' ./gateway-traces.out
+```
+
+{{% /tab %}}
+{{% tab title="Example output" %}}
+
+`gateway-metrics.out` ãã¡ã€ã«ã«ã¯ `/_healthz` ãšããååã®ã¹ãã³ã¯å«ãŸããŸããã
+
+```text
+"Span 1 found with name /movie-validator"
+"Span 2 found with name /movie-validator"
+"Span 3 found with name /movie-validator"
+"Span 4 found with name /movie-validator"
+"Span 5 found with name /movie-validator"
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+{{% /notice %}}
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+
+`Filter` ããã»ããµã䜿çšããéã¯ãå
¥åããŒã¿ã®åœ¢åŒãå¿
ãææ¡ããèšå®ãååã«ãã¹ãããŠãã ããã誀ã£ãããŒã¿ãç Žæ£ããããªã¹ã¯ãäžããããã«ãååãšã㊠**å¯èœãªéãå
·äœçãªèšå®** ã䜿çšããŠãã ããã
+
+ãã®èšå®ãããã«æ¡åŒµããŠãå¥ã®å±æ§ãã¿ã°ããã®ä»ã®æ¡ä»¶ã«åºã¥ããŠã¹ãã³ããã£ã«ã¿ãªã³ã°ããããšã§ãOpenTelemetry Collector ã芳枬ããŒãºã«åãããŠããã«ã¹ã¿ãã€ãºãããããå¹ççã«éçšã§ããŸãã
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã`agent` ãš `gateway` ã®ããã»ã¹ã忢ããŸãã
+
+{{% /notice %}}
+
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/5-dropping-spans/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/5-dropping-spans/_index.md
new file mode 100644
index 0000000000..c0ad94ae5d
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/5-dropping-spans/_index.md
@@ -0,0 +1,30 @@
+---
+title: 5. ã¹ãã³ã®åé€
+linkTitle: 5. ã¹ãã³ã®åé€
+time: 10 minutes
+weight: 7
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ã[**Filter Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/filterprocessor/README.md) ã䜿çšããŠãç¹å®ã®æ¡ä»¶ã«åºã¥ããŠã¹ãã³ãéžæçã«åé€ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
+
+å
·äœçã«ã¯ãã¹ãã³åã«åºã¥ããŠãã¬ãŒã¹ãåé€ããŸããããã¯ããã«ã¹ãã§ãã¯ãå
éšéä¿¡ãã¬ãŒã¹ãªã©ã®äžèŠãªã¹ãã³ãé€å€ããããã«ãã䜿çšãããŸããä»åã®äŸã§ã¯ããã«ã¹ãã§ãã¯ãªã¯ãšã¹ãã«é¢é£ä»ããããããšãå€ããéåžžã¯éåžžã«ã**ãã€ãžãŒ**ãã§ããã¹ãã³å `"/_healthz"` ãé€å€ããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+- `[WORKSHOP]` ãã£ã¬ã¯ããªå
ã«ã`5-dropping-spans` ãšããæ°ãããµããã£ã¬ã¯ããªãäœæããŸãã
+- 次ã«ã`4-resilience` ãã£ã¬ã¯ããªãã `*.yaml` ã `5-dropping-spans` ã«ã³ããŒããŸãã
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã `[WORKSHOP]/5-dropping-spans` ãã£ã¬ã¯ããªã«å€æŽããŠãã ããã**
+
+æŽæ°åŸã®ãã£ã¬ã¯ããªæ§é ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+{{% /notice %}}
+
+次ã«ã**filter processor** ãšããããã®ãã€ãã©ã€ã³ãèšå®ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/6-1-configuration.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/6-1-configuration.md
new file mode 100644
index 0000000000..442e76389f
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/6-1-configuration.md
@@ -0,0 +1,126 @@
+---
+title: 6.1 Configuration
+linkTitle: 6.1 Configuration
+weight: 1
+---
+
+ãã®ã¹ãããã§ã¯ã`agent.yaml` ã倿Žã㊠`attributes` ããã»ããµãŒãš `redaction` ããã»ããµãŒã远å ããŸãããããã®ããã»ããµãŒã¯ãã¹ãã³å±æ§å
ã®æ©å¯ããŒã¿ããã°åºåããšã¯ã¹ããŒããããåã«é©åã«åŠçãããããã«ããããã«åœ¹ç«ã¡ãŸãã
+
+ãããŸã§ã«ãã³ã³ãœãŒã«ã«è¡šç€ºãããã¹ãã³å±æ§ã®äžéšã«å人æ
å ±ãæ©å¯ããŒã¿ãå«ãŸããŠããããšã«æ°ä»ãããããããŸãããæ¬¡ã¯ããããã®æ
å ±ã广çã«ãã£ã«ã¿ãªã³ã°ããã³ç·šéïŒredactïŒããããã«å¿
èŠãªããã»ããµãŒãèšå®ããŸãã
+
+```text
+
+Attributes:
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(+1555-867-5309)
+ -> user.email: Str(george@deathstar.email)
+ -> user.account_password: Str(LOTR>StarWars1-2-3)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ {"kind": "exporter", "data_type": "traces", "name": "debug"}
+```
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Agent terminal** ãŠã£ã³ããŠã«åãæ¿ãããšãã£ã¿ã§ `agent.yaml` ãã¡ã€ã«ãéããŸãããã¬ã¡ããªããŒã¿ã®ã»ãã¥ãªãã£ãšãã©ã€ãã·ãŒã匷åããããã«ãAttributes Processor ãš Redaction Processor ã® 2 ã€ã®ããã»ããµãŒã远å ããŸãã
+
+**`attributes` ããã»ããµãŒã®è¿œå **: [**Attributes Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/attributesprocessor) ã䜿çšãããšãã¹ãã³å±æ§ïŒã¿ã°ïŒã®å€ãæŽæ°ãåé€ãããã·ã¥åããããšã§å€æŽã§ããŸããããã¯ããšã¯ã¹ããŒããããåã«æ©å¯æ
å ±ãé£èªåããéã«ç¹ã«æçšã§ãã
+
+ãã®ã¹ãããã§ã¯ã以äžãè¡ããŸã:
+
+1. `user.phone_number` 屿§ãéçãªå€ `("UNKNOWN NUMBER")` ã« **Update** ããŸãã
+2. `user.email` 屿§ã **Hash** åããŠãå
ã®ã¡ãŒã«ã¢ãã¬ã¹ãé²åºããªãããã«ããŸãã
+3. `user.password` 屿§ã **Delete** ããŠãã¹ãã³ããå®å
šã«åé€ããŸãã
+
+```yaml
+ attributes/update:
+ actions: # Actions
+ - key: user.phone_number # Target key
+ action: update # Update action
+ value: "UNKNOWN NUMBER" # New value
+ - key: user.email # Target key
+ action: hash # Hash the email value
+ - key: user.password # Target key
+ action: delete # Delete the password
+ ```
+
+**`redaction` ããã»ããµãŒã®è¿œå **: [**The Redaction Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/redactionprocessor) ã¯ãã¯ã¬ãžããã«ãŒãçªå·ããã®ä»ã®å人ãç¹å®ã§ããæ
å ±ïŒPIIïŒãªã©ãå®çŸ©æžã¿ã®ãã¿ãŒã³ã«åºã¥ããŠã¹ãã³å±æ§å
ã®æ©å¯ããŒã¿ãæ€åºããŠç·šéïŒredactïŒããŸãã
+
+ãã®ã¹ãããã§ã¯ã以äžã®ããã«èšå®ããŸã:
+
+- `allow_all_keys: true` ãèšå®ããŠããã¹ãŠã®å±æ§ãåŠçãããããã«ããŸãïŒ`false` ã«èšå®ããå Žåãæç€ºçã«èš±å¯ãããããŒã®ã¿ãä¿æãããŸãïŒã
+
+- `blocked_values` ã«æ£èŠè¡šçŸãå®çŸ©ããŠã**Visa** ããã³ **MasterCard** ã®ã¯ã¬ãžããã«ãŒãçªå·ãæ€åºããŠç·šéïŒredactïŒããŸãã
+
+- `summary: debug` ãªãã·ã§ã³ã¯ããããã°ç®çã§ç·šéïŒredactionïŒåŠçã«é¢ãã詳现æ
å ±ããã°ã«èšé²ããŸãã
+
+```yaml
+ redaction/redact:
+ allow_all_keys: true # If false, only allowed keys will be retained
+ blocked_values: # List of regex patterns to block
+ - '\b4[0-9]{3}[\s-]?[0-9]{4}[\s-]?[0-9]{4}[\s-]?[0-9]{4}\b' # Visa
+ - '\b5[1-5][0-9]{2}[\s-]?[0-9]{4}[\s-]?[0-9]{4}[\s-]?[0-9]{4}\b' # MasterCard
+ summary: debug # Show debug details about redaction
+```
+
+**`traces` ãã€ãã©ã€ã³ã®æŽæ°**: äž¡æ¹ã®ããã»ããµãŒã `traces` ãã€ãã©ã€ã³ã«çµ±åããŸããæå㯠redaction ããã»ããµãŒãã³ã¡ã³ãã¢ãŠãããŠããããã«ããŠãã ããïŒåŸã®å¥ã®æŒç¿ã§æå¹åããŸãïŒ:
+
+> [!NOTE]
+> ãã®æŒç¿ã§ã¯ `redaction/redact` ããã»ããµãŒãã³ã¡ã³ãã¢ãŠããããŸãŸã«ããŠãããŠãã ãããä»åŸã®æŒç¿ã§æå¹åããŸãã
+
+```yaml
+ traces:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - attributes/update # Update, hash, and remove attributes
+ #- redaction/redact # Redact sensitive fields using regex
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - file
+ - otlphttp
+```
+
+{{% /notice %}}
+
+**[otelbin.io](https://www.otelbin.io/)** ã䜿çšããŠãšãŒãžã§ã³ãèšå®ãæ€èšŒããŸããåèãŸã§ã«ããã€ãã©ã€ã³ã® `traces:` ã»ã¯ã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸã:
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRML(memory_limiter
fa:fa-microchip):::processor
+ PRRD(resourcedetection
fa:fa-microchip):::processor
+ PRRS(resource
fa:fa-microchip
add_mode):::processor
+ PRBA(batch
fa:fa-microchip):::processor
+ PRUP(attributes
fa:fa-microchip
update):::processor
+ EXP1(otlphttp
fa:fa-upload):::exporter
+ EXP2( debug
fa:fa-upload):::exporter
+ EXP3(file
fa:fa-upload):::exporter
+
+ %% Links
+ subID1:::sub-traces
+ subgraph " "
+ subgraph subID1["`**Traces**`"]
+ direction LR
+ REC1 --> PRML
+ PRML --> PRUP
+ PRUP --> PRRD
+ PRRD --> PRRS
+ PRRS --> PRBA
+ PRBA --> EXP2
+ PRBA --> EXP3
+ PRBA --> EXP1
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-traces stroke:#fbbf24,stroke-width:1px, color:#fbbf24,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/6-2-test-delete-tag.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/6-2-test-delete-tag.md
new file mode 100644
index 0000000000..70e420754d
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/6-2-test-delete-tag.md
@@ -0,0 +1,92 @@
+---
+title: 6.2 Test Attribute Processor
+linkTitle: 6.2 Test Attribute Processor
+weight: 2
+---
+
+ãã®æŒç¿ã§ã¯ã`agent` ãã¹ãã³ããŒã¿ããšã¯ã¹ããŒãããåã«ã`user.account_password` ã **åé€** ãã`user.phone_number` ã® **屿§** ã **æŽæ°** ãã`user.email` ã **ããã·ã¥å** ããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Gateway ãèµ·åãã**: **Gateway terminal** ãŠã£ã³ããŠã§ `gateway` ãèµ·åããŸãã
+
+```bash
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãèµ·åãã**: **Agent terminal** ãŠã£ã³ããŠã§ `agent` ãèµ·åããŸãã
+
+```bash
+../otelcol --config=agent.yaml
+```
+
+**Load Generator ãèµ·åãã**: **Spans terminal** ãŠã£ã³ããŠã§ `loadgen` ãèµ·åããŸãã
+
+```bash
+../loadgen -count 1
+```
+
+**ãããã°åºåã確èªãã**: `agent` ãš `gateway` ã®äž¡æ¹ã®ãããã°åºåã§ã`user.account_password` ãåé€ããã`user.phone_number` ãš `user.email` ã®äž¡æ¹ãæŽæ°ãããŠããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="New Debug Output" %}}
+
+ ```text
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(UNKNOWN NUMBER)
+ -> user.email: Str(62d5e03d8fd5808e77aee5ebbd90cf7627a470ae0be9ffd10e8025a4ad0e1287)
+ -> payment.amount: Double(51.71)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ ```
+
+{{% /tab %}}
+{{% tab title="Original Debug Output" %}}
+
+ ```text
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(+1555-867-5309)
+ -> user.email: Str(george@deathstar.email)
+ -> user.password: Str(LOTR>StarWars1-2-3)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ -> payment.amount: Double(95.22)
+ ```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**ãã¡ã€ã«åºåã確èªãã**: `jq` ã䜿çšããŠã`gateway-taces.out` å
ã§ `user.account_password` ãåé€ããã`user.phone_number` ãš `user.email` ãæŽæ°ãããŠããããšãæ€èšŒããŸãã
+
+{{% tabs %}}
+{{% tab title="Validate attribute changes" %}}
+
+```bash
+jq '.resourceSpans[].scopeSpans[].spans[].attributes[] | select(.key == "user.password" or .key == "user.phone_number" or .key == "user.email") | {key: .key, value: .value.stringValue}' ./gateway-traces.out
+```
+
+{{% /tabs %}}
+{{% tab title="Output" %}}
+
+`user.account_password` ãåé€ããã`user.phone_number` ãš `user.email` ãæŽæ°ãããŠããããšã確èªããŸãã
+
+```json
+{
+ "key": "user.phone_number",
+ "value": "UNKNOWN NUMBER"
+}
+{
+ "key": "user.email",
+ "value": "62d5e03d8fd5808e77aee5ebbd90cf7627a470ae0be9ffd10e8025a4ad0e1287"
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+> [!IMPORTANT]
+> åã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã`agent` ãš `gateway` ã®ããã»ã¹ã忢ããŠãã ããã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/6-3-test-redaction.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/6-3-test-redaction.md
new file mode 100644
index 0000000000..71b2bdd14d
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/6-3-test-redaction.md
@@ -0,0 +1,141 @@
+---
+title: 6.3 Redaction Processor ã®ãã¹ã
+linkTitle: 6.3 Redaction Processor ã®ãã¹ã
+weight: 3
+---
+
+`redaction` ããã»ããµãŒã¯ããã¬ã¡ããªãŒããŒã¿ãã **èš±å¯** ãŸã㯠**åé€** ãã屿§ãšå€ãããã现ããå¶åŸ¡ã§ããŸãã
+
+ãã®æŒç¿ã§ã¯ã`agent` ããšã¯ã¹ããŒãããåã®ã¹ãã³ããŒã¿ã«å«ãŸãã `user.visa` ãš `user.mastercard` ã® **å€** ã **ãã¹ã¯** ããŸãã
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**ã¿ãŒããã«ã®æºå**: `*.out` ãã¡ã€ã«ãåé€ããç»é¢ãã¯ãªã¢ããŸãã
+
+**Gateway ã®èµ·å**: **Gateway terminal** ãŠã£ã³ããŠã§ `gateway` ãèµ·åããŸãã
+
+```bash
+../otelcol --config=gateway.yaml
+```
+
+**`redaction/redact` ããã»ããµãŒã®æå¹å**: **Agent terminal** ãŠã£ã³ããŠã§ `agent.yaml` ãç·šéããåã®æŒç¿ã§æ¿å
¥ãã `#` ãåé€ããŸãã
+
+```yaml
+ traces:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - attributes/update # Update, hash, and remove attributes
+ - redaction/redact # Redact sensitive fields using regex
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - file
+ - otlphttp
+```
+
+**Agent ã®èµ·å**: **Agent terminal** ãŠã£ã³ããŠã§ `agent` ãèµ·åããŸãã
+
+```bash
+../otelcol --config=agent.yaml
+```
+
+**Load Generator ã®èµ·å**: **Spans terminal** ãŠã£ã³ããŠã§ `loadgen` ãèµ·åããŸãã
+
+```bash
+../loadgen -count 1
+```
+
+**ãããã°åºåã®ç¢ºèª**: `agent` ãš `gateway` ã®äž¡æ¹ã§ã`user.visa` ãš `user.mastercard` ã®å€ãæŽæ°ãããŠããããšã確èªããŸãã`user.amex` 屿§ã®å€ã¯ã`blocked_values` ã«äžèŽããæ£èŠè¡šçŸãã¿ãŒã³ã远å ãããŠããªãããããã¹ã¯ãããŠããªãç¹ã«æ³šç®ããŠãã ããã
+
+{{% tabs %}}
+{{% tab title="æ°ãããããã°åºå" %}}
+
+ ```text
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(UNKNOWN NUMBER)
+ -> user.email: Str(62d5e03d8fd5808e77aee5ebbd90cf7627a470ae0be9ffd10e8025a4ad0e1287)
+ -> payment.amount: Double(69.71)
+ -> user.visa: Str(****)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(****)
+ -> redaction.masked.keys: Str(user.mastercard,user.visa)
+ -> redaction.masked.count: Int(2)
+ ```
+
+{{% /tab %}}
+{{% tab title="å
ã®ãããã°åºå" %}}
+
+ ```text
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(+1555-867-5309)
+ -> user.email: Str(george@deathstar.email)
+ -> user.password: Str(LOTR>StarWars1-2-3)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ -> payment.amount: Double(65.54)
+ ```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+{{% notice note %}}
+redaction ããã»ããµãŒã« `summary:debug` ãå«ãããšãã©ã®äžèŽããŒå€ããã¹ã¯ããããã®æŠèŠæ
å ±ãšããã¹ã¯ãããå€ã®ä»¶æ°ããããã°åºåã«å«ãŸããŸãã
+
+```text
+ -> redaction.masked.keys: Str(user.mastercard,user.visa)
+ -> redaction.masked.count: Int(2)
+ ```
+
+{{% /notice %}}
+
+**ãã¡ã€ã«åºåã®ç¢ºèª**: `jq` ã䜿çšããŠã`gateway-traces.out` å
ã§ `user.visa` ãš `user.mastercard` ãæŽæ°ãããŠããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="屿§å€æŽã®æ€èšŒ" %}}
+
+```bash
+jq '.resourceSpans[].scopeSpans[].spans[].attributes[] | select(.key == "user.visa" or .key == "user.mastercard" or .key == "user.amex") | {key: .key, value: .value.stringValue}' ./gateway-traces.out
+```
+
+{{% /tabs %}}
+{{% tab title="åºå" %}}
+
+`user.amex` ã¯ã`blocked_values` ã«äžèŽããæ£èŠè¡šçŸãã¿ãŒã³ã远å ãããŠããªãããããã¹ã¯ãããŠããªãç¹ã«æ³šç®ããŠãã ããã
+
+```json
+{
+ "key": "user.visa",
+ "value": "****"
+}
+{
+ "key": "user.amex",
+ "value": "3782 822463 10005"
+}
+{
+ "key": "user.mastercard",
+ "value": "****"
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+ãããã¯ãæ©å¯ããŒã¿ãä¿è·ããããã« `attributes` ããã»ããµãŒãš `redaction` ããã»ããµãŒãã©ã®ããã«æ§æã§ãããã瀺ãã»ãã®äžäŸã§ãã
+
+> [!IMPORTANT]
+> `agent` ãš `gateway` ã®ããã»ã¹ã¯ãããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠåæ¢ããŠãã ããã
+
+{{% /notice %}}
+
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/_index.md
new file mode 100644
index 0000000000..25922f1289
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/6-sensitive-data/_index.md
@@ -0,0 +1,31 @@
+---
+title: 6. æ©å¯ããŒã¿ã®ç·šé
+linkTitle: 6. æ©å¯ããŒã¿
+time: 10 minutes
+weight: 8
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãOpenTelemetry Collector ãèšå®ããŠç¹å®ã®ã¿ã°ãåé€ãããã¬ã¡ããªãŒ span ããæ©å¯ããŒã¿ãç·šéããæ¹æ³ãåŠã³ãŸããããã¯ãã¯ã¬ãžããã«ãŒãçªå·ãå人æ
å ±ããŸãã¯ãã®ä»ã®ã»ãã¥ãªãã£é¢é£ã®è©³çްãªã©ãåŠçãŸãã¯ãšã¯ã¹ããŒããããåã«å¿ååããå¿
èŠãããæ©å¯æ
å ±ãä¿è·ããããã«éèŠã§ãã
+
+OpenTelemetry Collector ã®äž»èŠãªããã»ããµãŒã®èšå®æ¹æ³ã説æããŸããå
·äœçã«ã¯æ¬¡ã®ãã®ã§ãã
+
+- **[Attributes Processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/attributesprocessor/README.md)**: ç¹å®ã® span 屿§ã倿ŽãŸãã¯åé€ããŸãã
+- [**Redaction Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/redactionprocessor/README.md): æ©å¯ããŒã¿ãä¿åãŸãã¯éä¿¡ãããåã«ãµãã¿ã€ãºãããããšãä¿èšŒããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+- `[WORKSHOP]` ãã£ã¬ã¯ããªå
ã«ã`6-sensitive-data` ãšããååã®æ°ãããµããã£ã¬ã¯ããªãäœæããŸãã
+- 次ã«ã`5-dropping-spans` ãã£ã¬ã¯ããªãã `*.yaml` ã `6-sensitive-data` ã«ã³ããŒããŸãã
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã `[WORKSHOP]/6-sensitive-data` ãã£ã¬ã¯ããªã«å€æŽããŠãã ããã**
+
+æŽæ°åŸã®ãã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/7-1-configuration.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/7-1-configuration.md
new file mode 100644
index 0000000000..7cf5729ebf
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/7-1-configuration.md
@@ -0,0 +1,118 @@
+---
+title: 7.1 Configuration
+linkTitle: 7.1 Configuration
+weight: 1
+---
+
+{{% notice title="Exercise" style="green" icon="running" %}}
+**`transform` ããã»ããµãŒã®è¿œå **: **Agent terminal** ãŠã£ã³ããŠã«åãæ¿ã㊠`agent.yaml` ãç·šéãã以äžã® `transform` ããã»ããµãŒã远å ããŸãã
+
+```yaml
+ transform/logs: # Processor Type/Name
+ log_statements: # Log Processing Statements
+ - context: resource # Log Context
+ statements: # List of attribute keys to keep
+ - keep_keys(attributes, ["com.splunk.sourcetype", "host.name", "otelcol.service.mode"])
+```
+
+`-context: resource` ããŒã䜿çšããããšã§ããã°ã® `resourceLog` 屿§ã察象ãšããŠããŸãã
+
+ãã®èšå®ã«ãããé¢é£ãããªãœãŒã¹å±æ§ïŒ`com.splunk.sourcetype`ã`host.name`ã`otelcol.service.mode`ïŒã®ã¿ãä¿æããããã°ã®å¹çãåäžããäžèŠãªã¡ã¿ããŒã¿ãåæžãããŸãã
+
+**ãã°é倧床ãããã³ã°ã®ããã®ã³ã³ããã¹ããããã¯ã®è¿œå **: ãã°ã¬ã³ãŒãã® `severity_text` ããã³ `severity_number` ãã£ãŒã«ããé©åã«èšå®ããããã«ã`log_statements` å
ã« `log` ã³ã³ããã¹ããããã¯ã远å ããŸãããã®èšå®ã§ã¯ããã°æ¬æãã `level` å€ãæœåºãã`severity_text` ã«ãããã³ã°ããŠããã°ã¬ãã«ã«å¯Ÿå¿ãã `severity_number` ãå²ãåœãŠãŸãã
+
+```yaml
+ - context: log # Log Context
+ statements: # Transform Statements Array
+ - set(cache, ParseJSON(body)) where IsMatch(body, "^\\{") # Parse JSON log body into a cache object
+ - flatten(cache, "") # Flatten nested JSON structure
+ - merge_maps(attributes, cache, "upsert") # Merge cache into attributes, updating existing keys
+ - set(severity_text, attributes["level"]) # Set severity_text from the "level" attribute
+ - set(severity_number, 1) where severity_text == "TRACE" # Map severity_text to severity_number
+ - set(severity_number, 5) where severity_text == "DEBUG"
+ - set(severity_number, 9) where severity_text == "INFO"
+ - set(severity_number, 13) where severity_text == "WARN"
+ - set(severity_number, 17) where severity_text == "ERROR"
+ - set(severity_number, 21) where severity_text == "FATAL"
+```
+
+`merge_maps` 颿°ã¯ã2ã€ã®ãããïŒãã£ã¯ã·ã§ããªïŒã1ã€ã«çµåããããã«äœ¿çšãããŸããããã§ã¯ã`cache` ãªããžã§ã¯ãïŒãã°æ¬æããè§£æããã JSON ããŒã¿ãå«ãïŒã `attributes` ãããã«ããŒãžããŸãã
+
+- **ãã©ã¡ãŒã¿**:
+ - `attributes`: ããŒã¿ãããŒãžããã察象ã®ãããã§ãã
+ - `cache`: è§£æããã JSON ããŒã¿ãå«ããœãŒã¹ãããã§ãã
+ - `"upsert"`: ãã®ã¢ãŒãã§ã¯ã`attributes` ãããå
ã«ããŒãæ¢ã«ååšããå Žåããã®å€ã `cache` ã®å€ã§æŽæ°ãããŸããããŒãååšããªãå Žåã¯æ¿å
¥ãããŸãã
+
+ãã®ã¹ãããã¯éåžžã«éèŠã§ããã°æ¬æã«å«ãŸãããã¹ãŠã®é¢é£ãã£ãŒã«ãïŒäŸ: `level`ã`message` ãªã©ïŒã `attributes` ãããã«è¿œå ãããåŸç¶ã®åŠçããšã¯ã¹ããŒãã§å©çšå¯èœã«ãªãããšãä¿èšŒããŸãã
+
+**äž»ãªå€æåŠçã®ãŸãšã**:
+
+- **JSON ã®è§£æ**: ãã°æ¬æããæ§é åããŒã¿ãæœåºããŸãã
+- **JSON ã®ãã©ããå**: ãã¹ãããã JSON ãªããžã§ã¯ãããã©ãããªæ§é ã«å€æããŸãã
+- **屿§ã®ããŒãž**: æœåºããããŒã¿ããã°ã®å±æ§ã«çµ±åããŸãã
+- **é倧床ããã¹ãã®ãããã³ã°**: ãã°ã® level 屿§ãã severity_text ãå²ãåœãŠãŸãã
+- **é倧床çªå·ã®å²ãåœãŠ**: é倧床ã¬ãã«ãæšæºåãããæ°å€ã«å€æããŸãã
+
+æçµçã«ã`resource` çšãš `log` çšã®2ã€ã®ã³ã³ããã¹ããããã¯ãå«ã **1ã€ã®** `transform` ããã»ããµãŒãæ§æãããŠããå¿
èŠããããŸãã
+
+ãã®èšå®ã«ããããã°ã®éå€§åºŠãæ£ããæœåºãæšæºåãæ§é åãããå¹ççãªåŠçãå¯èœã«ãªããŸãã
+
+{{% notice title="Tip" style="primary" icon="lightbulb" %}}
+ãã¹ãŠã® JSON ãã£ãŒã«ãããããã¬ãã«å±æ§ã«ãããã³ã°ãããã®æ¹æ³ã¯ã**OTTL ã®ãã¹ããšãããã°** ã«ã®ã¿äœ¿çšããŠãã ãããæ¬çªç°å¢ã®ã·ããªãªã§ã¯é«ã«ãŒãã£ããªãã£ãåŒãèµ·ãããŸãã
+{{% /notice %}}
+
+**`logs` ãã€ãã©ã€ã³ã®æŽæ°**: `transform/logs:` ããã»ããµãŒã `logs:` ãã€ãã©ã€ã³ã«è¿œå ããŸãã
+
+```yaml
+ logs:
+ receivers:
+ - otlp
+ - filelog/quotes
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - transform/logs # Transform logs processor
+ - batch
+ exporters:
+ - debug
+ - otlphttp
+```
+
+{{% /notice %}}
+
+[**https://otelbin.io**](https://otelbin.io/) ã䜿çšããŠãšãŒãžã§ã³ãèšå®ãæ€èšŒããŸããåèãŸã§ã«ããã€ãã©ã€ã³ã® `logs:` ã»ã¯ã·ã§ã³ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ REC2(filelog
fa:fa-download
quotes):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(resourcedetection
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(transform
fa:fa-microchip
logs):::processor
+ PRO5(batch
fa:fa-microchip):::processor
+ EXP1(otlphttp
fa:fa-upload):::exporter
+ EXP2( debug
fa:fa-upload):::exporter
+ %% Links
+ subID1:::sub-logs
+ subgraph " "
+ subgraph subID1[**Logs**]
+ direction LR
+ REC1 --> PRO1
+ REC2 --> PRO1
+ PRO1 --> PRO2
+ PRO2 --> PRO3
+ PRO3 --> PRO4
+ PRO4 --> PRO5
+ PRO5 --> EXP2
+ PRO5 --> EXP1
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-logs stroke:#34d399,stroke-width:1px, color:#34d399,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/7-2-setup.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/7-2-setup.md
new file mode 100644
index 0000000000..9467dd65e9
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/7-2-setup.md
@@ -0,0 +1,32 @@
+---
+title: 7.2 Setup Environment
+linkTitle: 7.2 Setup Environment
+weight: 2
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Gateway ãèµ·å**: **Gateway terminal** ã§ä»¥äžãå®è¡ããŸãã
+
+```bash { title="Start the Gateway" }
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãèµ·å**: **Agent terminal** ã§ä»¥äžãå®è¡ããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+**Load Generator ãèµ·å**: **Logs terminal** ãŠã£ã³ããŠãéãã`loadgen` ãå®è¡ããŸãã
+
+> [!IMPORTANT]
+> ãã°ã JSON 圢åŒã§æ§é åãããããã¹ã¯ãªããèµ·åæã« `-json` ãã©ã°ãå¿
ãæå®ããŠãã ããã
+
+```bash { title="Log Generator" }
+../loadgen -logs -json -count 5
+```
+
+`loadgen` 㯠`./quotes.log` ã« JSON 圢åŒã§ 5 è¡ã®ãã°ãæžã蟌ã¿ãŸãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/7-3-test-transform.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/7-3-test-transform.md
new file mode 100644
index 0000000000..d9350d7daa
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/7-3-test-transform.md
@@ -0,0 +1,129 @@
+---
+title: 7.3 Transform Processor ã®ãã¹ã
+linkTitle: 7.3 Transform Processor ã®ãã¹ã
+weight: 3
+---
+
+ãã®ãã¹ãã§ã¯ã`agent` ã«ãã£ãŠãšã¯ã¹ããŒããããåã«ããã°ã®ãªãœãŒã¹å±æ§ãã `com.splunk/source` ããã³ `os.type` ã¡ã¿ããŒã¿ã**åé€**ãããŠããããšãæ€èšŒããŸããããã«ããã®ãã¹ãã§ã¯ä»¥äžã®ç¹ã確èªããŸãã
+
+1. ãã°æ¬æãããŒã¹ãããseverity æ
å ±ãæœåºãããããšã
+ - `LogRecord` ã« `SeverityText` ããã³ `SeverityNumber` ãèšå®ãããããšã
+2. ãã°æ¬æã® JSON ãã£ãŒã«ãããã°ã® `attributes` ã«ææ Œãããããšã
+
+ããã«ããããšã¯ã¹ããŒãåã«ãã¡ã¿ããŒã¿ã®é©åãªãã£ã«ã¿ãªã³ã°ãseverity ãããã³ã°ãæ§é åãã°ã®ãšã³ãªããã¡ã³ããæ£ããè¡ãããŠããããšã確èªã§ããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**ãããã°åºåã確èªããŸã**: `agent` ãš `gateway` ã®äž¡æ¹ã§ã`com.splunk/source` ãš `os.type` ãåé€ãããŠããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="æ°ãããããã°åºå" %}}
+
+ ```text
+Resource attributes:
+ -> com.splunk.sourcetype: Str(quotes)
+ -> host.name: Str(workshop-instance)
+ -> otelcol.service.mode: Str(agent)
+ ```
+
+{{% /tab %}}
+{{% tab title="å
ã®ãããã°åºå" %}}
+
+ ```text
+Resource attributes:
+ -> com.splunk.source: Str(./quotes.log)
+ -> com.splunk.sourcetype: Str(quotes)
+ -> host.name: Str(workshop-instance)
+ -> os.type: Str(linux)
+ -> otelcol.service.mode: Str(agent)
+ ```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+`agent` ãš `gateway` ã®äž¡æ¹ã§ã`LogRecord` å
ã® `SeverityText` ãš `SeverityNumber` ããã°æ¬æã® severity `level` ã«åºã¥ããŠå®çŸ©ãããŠããããšã確èªããŸãããŸããæ¬æã® JSON ãã£ãŒã«ããããããã¬ãã«ã®ãã° `Attributes` ãšããŠã¢ã¯ã»ã¹ã§ããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="æ°ãããããã°åºå" %}}
+
+```text
+
+SeverityText: WARN
+SeverityNumber: Warn(13)
+Body: Str({"level":"WARN","message":"Your focus determines your reality.","movie":"SW","timestamp":"2025-03-07 11:17:26"})
+Attributes:
+ -> log.file.path: Str(quotes.log)
+ -> level: Str(WARN)
+ -> message: Str(Your focus determines your reality.)
+ -> movie: Str(SW)
+ -> timestamp: Str(2025-03-07 11:17:26)
+
+```
+
+{{% /tab %}}
+{{% tab title="å
ã®ãããã°åºå" %}}
+
+```text
+
+SeverityText:
+SeverityNumber: Unspecified(0)
+Body: Str({"level":"WARN","message":"Your focus determines your reality.","movie":"SW","timestamp":"2025-03-07 11:17:26"})
+Attributes:
+ -> log.file.path: Str(quotes.log)
+
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**ãã¡ã€ã«åºåã確èªããŸã**: æ°ãã `gateway-logs.out` ãã¡ã€ã«ã§ãããŒã¿ã倿ãããŠããããšãæ€èšŒããŸãã
+
+{{% tabs %}}
+{{% tab title="jq ã¯ãšãª" %}}
+
+```bash
+jq '[.resourceLogs[].scopeLogs[].logRecords[] | {severityText, severityNumber, body: .body.stringValue}]' gateway-logs.out
+```
+
+{{% /tabs %}}
+{{% tab title="åºåäŸ" %}}
+
+```json
+[
+ {
+ "severityText": "DEBUG",
+ "severityNumber": 5,
+ "body": "{\"level\":\"DEBUG\",\"message\":\"All we have to decide is what to do with the time that is given us.\",\"movie\":\"LOTR\",\"timestamp\":\"2025-03-07 11:56:29\"}"
+ },
+ {
+ "severityText": "WARN",
+ "severityNumber": 13,
+ "body": "{\"level\":\"WARN\",\"message\":\"The Force will be with you. Always.\",\"movie\":\"SW\",\"timestamp\":\"2025-03-07 11:56:29\"}"
+ },
+ {
+ "severityText": "ERROR",
+ "severityNumber": 17,
+ "body": "{\"level\":\"ERROR\",\"message\":\"One does not simply walk into Mordor.\",\"movie\":\"LOTR\",\"timestamp\":\"2025-03-07 11:56:29\"}"
+ },
+ {
+ "severityText": "DEBUG",
+ "severityNumber": 5,
+ "body": "{\"level\":\"DEBUG\",\"message\":\"Do or do not, there is no try.\",\"movie\":\"SW\",\"timestamp\":\"2025-03-07 11:56:29\"}"
+ }
+]
+[
+ {
+ "severityText": "ERROR",
+ "severityNumber": 17,
+ "body": "{\"level\":\"ERROR\",\"message\":\"There is some good in this world, and it's worth fighting for.\",\"movie\":\"LOTR\",\"timestamp\":\"2025-03-07 11:56:29\"}"
+ }
+]
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã`agent` ãš `gateway` ã®ããã»ã¹ã忢ããŸãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/_index.md
new file mode 100644
index 0000000000..23d6470843
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/7-transform-data/_index.md
@@ -0,0 +1,44 @@
+---
+title: 7. Transform Data
+linkTitle: 7. Transform Data
+time: 10 minutes
+weight: 9
+---
+
+[**Transform Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/transformprocessor/README.md) ã¯ããã°ãã¡ããªã¯ã¹ããã¬ãŒã¹ãšãã£ããã¬ã¡ããªãŒããŒã¿ããã€ãã©ã€ã³ãæµããéã«ããããã倿Žã§ããããã»ããµãŒã§ãã**OpenTelemetry Transformation Language (OTTL)** ã䜿çšããããšã§ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã«æãå ããããšãªããããŒã¿ã®ãã£ã«ã¿ãªã³ã°ããšã³ãªããã倿ããªã¢ã«ã¿ã€ã ã«å®è¡ã§ããŸãã
+
+ãã®æŒç¿ã§ã¯ã`agent.yaml` ãæŽæ°ããŠã以äžã®åŠçãè¡ã **Transform Processor** ã远å ããŸãã
+
+- ãã°ã®ãªãœãŒã¹å±æ§ã **Filter** ããŸãã
+- JSON 圢åŒã®æ§é åãã°ããŒã¿ã屿§ã« **Parse** ããŸãã
+- ãã°ã¡ãã»ãŒãžã®æ¬æã«åºã¥ããŠãã°ã®éèŠåºŠã¬ãã«ã **Set** ããŸãã
+
+ãããŸã§ã®ãã°ã§ã¯ã`SeverityText` ã `SeverityNumber` ãšãã£ããã£ãŒã«ããæªå®çŸ©ã«ãªã£ãŠããããšã«æ°ã¥ãããããããŸããããã㯠`filelog` ã¬ã·ãŒããŒã§äžè¬çãªåäœã§ããããããéèŠåºŠã¯ãã°æ¬æã®äžã«åã蟌ãŸããŠããŸãã
+
+```text
+
+SeverityText:
+SeverityNumber: Unspecified(0)
+Body: Str(2025-01-31 15:49:29 [WARN] - Do or do not, there is no try.)
+
+```
+
+ãã°ã«ã¯ãJSON ã§ãšã³ã³ãŒããããæ§é åããŒã¿ããã°æ¬æã®äžã«å«ãŸããŠããããšããããããŸãããããã®ãã£ãŒã«ãã屿§ãšããŠæœåºããããšã§ãã€ã³ããã¯ã¹äœæããã£ã«ã¿ãªã³ã°ãã¯ãšãªã®å¹çãåäžããŸããäžæµã®ã·ã¹ãã ã§ JSON ãæåã§ããŒã¹ãã代ããã«ãOTTL ã䜿ãã°ãã¬ã¡ããªãŒãã€ãã©ã€ã³ã®ã¬ãã«ã§èªåçã«å€æã§ããŸãã
+
+{{% notice title="Exercise" style="green" icon="running" %}}
+
+- `[WORKSHOP]` ãã£ã¬ã¯ããªå
ã«ã`7-transform-data` ãšããååã®æ°ãããµããã£ã¬ã¯ããªãäœæããŸãã
+- 次ã«ã`6-sensitve-data` ãã£ã¬ã¯ããªãã `*.yaml` ã `7-transform-data` ã«ã³ããŒããŸãã
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã `[WORKSHOP]/7-transform-data` ãã£ã¬ã¯ããªã«å€æŽããŠãã ããã**
+
+æŽæ°åŸã®ãã£ã¬ã¯ããªæ§æã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/8-1-connector.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/8-1-connector.md
new file mode 100644
index 0000000000..1c38c8934d
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/8-1-connector.md
@@ -0,0 +1,42 @@
+---
+title: 8.1 Routing Connector ã®èšå®
+linkTitle: 8.1 Routing èšå®
+weight: 1
+---
+
+ãã®æŒç¿ã§ã¯ã`gateway.yaml` ãã¡ã€ã«ã§ **Routing Connector** ãèšå®ããŸãããã®èšå®ã«ããã`gateway` ã¯éä¿¡ãããã¹ãã³ã® `deployment.environment` 屿§ã«åºã¥ããŠãã¬ãŒã¹ãã«ãŒãã£ã³ã°ã§ããããã«ãªããŸãããããå®è£
ããããšã§ã屿§ã«å¿ããŠãã¬ãŒã¹ãç°ãªãæ¹æ³ã§åŠçã§ããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+OpenTelemetry ã®èšå®ãã¡ã€ã«ã§ã¯ã`connectors` 㯠receivers ã processors ãšåæ§ã«ãå°çšã®ã»ã¯ã·ã§ã³ãæã¡ãŸãã
+
+**`routing` ã³ãã¯ã¿ãŒã远å ããŸã**:
+**Gateway ã¿ãŒããã«** ãŠã£ã³ããŠã§ `gateway.yaml` ãç·šéãã`#connectors:` ã»ã¯ã·ã§ã³ã®ã³ã¡ã³ããè§£é€ããŸããæ¬¡ã«ã`connectors:` ã»ã¯ã·ã§ã³ã®äžã«ä»¥äžã远å ããŸã:
+
+```yaml
+connectors:
+ routing:
+ default_pipelines: [traces/standard] # Default pipeline if no rule matches
+ error_mode: ignore # Ignore errors in routing
+ table: # Define routing rules
+ # Routes spans to a target pipeline if the resourceSpan attribute matches the rule
+ - statement: route() where attributes["deployment.environment"] == "security-applications"
+ pipelines: [traces/security] # Target pipeline
+```
+
+äžèšã®ã«ãŒã«ã¯ãã¬ãŒã¹ã«é©çšãããŸããããã®ã¢ãããŒã㯠`metrics` ã `logs` ã«ãé©çšã§ãã`resourceMetrics` ãŸã㯠`resourceLogs` ã®å±æ§ã«åºã¥ããŠã«ãŒãã£ã³ã°ã§ããŸãã
+
+**`file:` exporter ãèšå®ããŸã**: `routing` ã³ãã¯ã¿ãŒã¯ãã«ãŒãã£ã³ã°å
ãšããŠåå¥ã®ã¿ãŒã²ãããå¿
èŠãšããŸãã`exporters:` ã»ã¯ã·ã§ã³ã«ã`file/traces/security` ãš `file/traces/standard` ã® 2 ã€ã® file exporter ã远å ããããŒã¿ãæ£ããéä¿¡ãããããã«ããŸãã
+
+```yaml
+ file/traces/standard: # Exporter for regular traces
+ path: "./gateway-traces-standard.out" # Path for saving trace data
+ append: false # Overwrite the file each time
+ file/traces/security: # Exporter for security traces
+ path: "./gateway-traces-security.out" # Path for saving trace data
+ append: false # Overwrite the file each time
+```
+
+{{% /notice %}}
+
+`routing` ã®èšå®ãå®äºããããæ¬¡ã®ã¹ãããã§ã¯ãããã®ã«ãŒãã£ã³ã°ã«ãŒã«ãé©çšããããã« `pipelines` ãèšå®ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/8-2-pipelines.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/8-2-pipelines.md
new file mode 100644
index 0000000000..df59e4a25d
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/8-2-pipelines.md
@@ -0,0 +1,110 @@
+---
+title: 8.2 ãã€ãã©ã€ã³ã®èšå®
+linkTitle: 8.2 ãã€ãã©ã€ã³èšå®
+weight: 2
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**`traces` ãã€ãã©ã€ã³ãæŽæ°ããŠã«ãŒãã£ã³ã°ã䜿çšããããã«ããŸã**:
+
+1. `routing` ãæå¹ã«ããã«ã¯ãå
ã® `traces:` ãã€ãã©ã€ã³ãæŽæ°ãã`routing` ãå¯äžã®ãšã¯ã¹ããŒã¿ãŒãšããŠäœ¿çšããŸããããã«ããããã¹ãŠã®ã¹ãã³ããŒã¿ãè©äŸ¡ã®ããã«ã«ãŒãã£ã³ã°ã³ãã¯ã¿ãŒãéããŠéä¿¡ãããããã«ãªããŸãã
+2. ãã¹ãŠã®ããã»ããµãŒãåé€ãã空ã®é
å(`[]`)ã«çœ®ãæããŸãããããã¯çŸåš `traces/standard` ããã³ `traces/security` ãã€ãã©ã€ã³ã§å®çŸ©ãããŠããŸãã
+
+ ```yaml
+ pipelines:
+ traces: # Original traces pipeline
+ receivers:
+ - otlp # OTLP Receiver
+ processors: []
+ exporters:
+ - routing # Routing Connector
+ ```
+
+**`standard` ããã³ `security` ã®äž¡æ¹ã® traces ãã€ãã©ã€ã³ã远å ããŸã**:
+
+1. **Security ãã€ãã©ã€ã³ãæ§æãã**: ãã®ãã€ãã©ã€ã³ã¯ã`security` ã®ã«ãŒãã£ã³ã°ã«ãŒã«ã«äžèŽãããã¹ãŠã®ã¹ãã³ãåŠçããŸãã
+ãã㯠`routing` ãã¬ã·ãŒããŒãšããŠäœ¿çšããŸããæ¢åã® `traces:` ãã€ãã©ã€ã³ã®äžã«é
眮ããŠãã ãã:
+
+ ```yaml
+ traces/security: # New Security Traces/Spans Pipeline
+ receivers:
+ - routing # Receive data from the routing connector
+ processors:
+ - memory_limiter # Memory Limiter Processor
+ - resource/add_mode # Adds collector mode metadata
+ - batch
+ exporters:
+ - debug # Debug Exporter
+ - file/traces/security # File Exporter for spans matching rule
+ ```
+
+2. **Standard ãã€ãã©ã€ã³ã远å ãã**: ãã®ãã€ãã©ã€ã³ã¯ãã«ãŒãã£ã³ã°ã«ãŒã«ã«äžèŽããªããã¹ãŠã®ã¹ãã³ãåŠçããŸãã
+ãã®ãã€ãã©ã€ã³ã `routing` ãã¬ã·ãŒããŒãšããŠäœ¿çšããŸãã`traces/security` ã®äžã«è¿œå ããŠãã ãã:
+
+ ```yaml
+ traces/standard: # Default pipeline for unmatched spans
+ receivers:
+ - routing # Receive data from the routing connector
+ processors:
+ - memory_limiter # Memory Limiter Processor
+ - resource/add_mode # Adds collector mode metadata
+ - batch
+ exporters:
+ - debug # Debug exporter
+ - file/traces/standard # File exporter for unmatched spans
+ ```
+
+{{% /notice %}}
+
+**[otelbin.io](https://www.otelbin.io/)** ã䜿çšããŠãšãŒãžã§ã³ãã®æ§æãæ€èšŒããŸããåèãŸã§ã«ããã€ãã©ã€ã³ã® `traces:` ã»ã¯ã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸã:
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(memory_limiter
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(resource
fa:fa-microchip
add_mode):::processor
+ PRO5(batch
fa:fa-microchip):::processor
+ PRO6(batch
fa:fa-microchip):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2( file
fa:fa-upload
traces):::exporter
+ EXP3( debug
fa:fa-upload):::exporter
+ EXP4( file
fa:fa-upload
traces):::exporter
+ ROUTE1( routing
fa:fa-route):::con-export
+ ROUTE2( routing
fa:fa-route):::con-receive
+ ROUTE3( routing
fa:fa-route):::con-receive
+ %% Links
+ subID1:::sub-traces
+ subID2:::sub-traces
+ subID3:::sub-traces
+ subgraph " "
+ direction LR
+ subgraph subID1["`**Traces**`"]
+ REC1 --> ROUTE1
+ end
+ subgraph subID2[**Traces/standard**]
+ ROUTE1 --> ROUTE2
+ ROUTE2 --> PRO1
+ PRO1 --> PRO3
+ PRO3 --> PRO5
+ PRO5 --> EXP1
+ PRO5 --> EXP2
+ end
+ subgraph subID3[**Traces/security**]
+ ROUTE1 --> ROUTE3
+ ROUTE3 --> PRO2
+ PRO2 --> PRO4
+ PRO4 --> PRO6
+ PRO6 --> EXP3
+ PRO6 --> EXP4
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-traces stroke:#fbbf24,stroke-width:1px, color:#fbbf24,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/8-3-test-routing.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/8-3-test-routing.md
new file mode 100644
index 0000000000..3e5572cd06
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/8-3-test-routing.md
@@ -0,0 +1,78 @@
+---
+title: 8.3 Routing Connector ã®ãã¹ã
+linkTitle: 8.3 Routing Connector ã®ãã¹ã
+weight: 3
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ã**Gateway** ã«èšå®ãã `routing` ã«ãŒã«ããã¹ãããŸããæåŸ
ãããçµæã¯ã`loadgen` ã«ãã£ãŠçæããã `span` ã `gateway-traces-security.out` ãã¡ã€ã«ã«éä¿¡ãããããšã§ãã
+
+**Gateway ãèµ·åãã**: **Gateway ã¿ãŒããã«**ãŠã£ã³ããŠã§ `gateway` ãèµ·åããŸãã
+
+```bash
+../otelcol --config gateway.yaml
+```
+
+**Agent ãèµ·åãã**: **Agent ã¿ãŒããã«**ãŠã£ã³ããŠã§ `agent` ãèµ·åããŸãã
+
+```bash
+../otelcol --config agent.yaml
+```
+
+**éåžžã® Span ãéä¿¡ãã**: **Spans ã¿ãŒããã«**ãŠã£ã³ããŠã§ã`loadgen` ã䜿çšããŠéåžžã® span ãéä¿¡ããŸãã
+
+```bash
+../loadgen -count 1
+```
+
+`agent` ãš `gateway` ã®äž¡æ¹ããããã°æ
å ±ã衚瀺ããŸããgateway ã¯æ°ãã `gateway-traces-standard.out` ãã¡ã€ã«ãçæããŸããããã¯éåžžã® span ã®æå®ãããéä¿¡å
ãšãªã£ãããã§ãã
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+`gateway-traces-standard.out` ã確èªãããšã`loadgen` ã«ãã£ãŠéä¿¡ããã `span` ãå«ãŸããŠããŸãããŸãã空㮠`gateway-traces-security.out` ãã¡ã€ã«ã衚瀺ãããŸããããã¯ãã«ãŒãã£ã³ã°èšå®ã«ãã£ãŠããŸã äžèŽãã span ãåŠçãããŠããªããŠããåºåãã¡ã€ã«ãå³åº§ã«äœæãããããã§ãã
+{{% /notice %}}
+
+**Security Span ãéä¿¡ãã**: **Spans ã¿ãŒããã«**ãŠã£ã³ããŠã§ã`security` ãã©ã°ã䜿çšã㊠security span ãéä¿¡ããŸãã
+
+```bash
+../loadgen -security -count 1
+```
+
+å床ã`agent` ãš `gateway` ã®äž¡æ¹ããéä¿¡ãã span ãå«ããããã°æ
å ±ã衚瀺ããã¯ãã§ããä»åºŠã¯ã`gateway` ã `gateway-traces-security.out` ãã¡ã€ã«ã« 1 è¡æžã蟌ã¿ãŸãããã®ãã¡ã€ã«ã¯ã`deployment.environment` ãªãœãŒã¹å±æ§ã `"security-applications"` ã«äžèŽãã span çšã«æå®ãããŠããŸãã
+`gateway-traces-standard.out` ã¯å€æŽãããªãã¯ãã§ãã
+
+{{% tabs %}}
+{{% tab title="ãªãœãŒã¹å±æ§ã®äžèŽãæ€èšŒãã" %}}
+
+```bash
+jq -c '.resourceSpans[] as $resource | $resource.scopeSpans[].spans[] | {spanId: .spanId, deploymentEnvironment: ($resource.resource.attributes[] | select(.key == "deployment.environment") | .value.stringValue)}' gateway-traces-security.out
+```
+
+{{% /tabs %}}
+{{% tab title="åºå" %}}
+
+```json
+{"spanId":"cb799e92e26d5782","deploymentEnvironment":"security-applications"}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+ãã®ã·ããªãªã¯è€æ°åç¹°ãè¿ãããšãã§ããåãã¬ãŒã¹ã¯å¯Ÿå¿ããåºåãã¡ã€ã«ã«æžã蟌ãŸããŸãã
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã`agent` ãš `gateway` ã®ããã»ã¹ã忢ããŸãã
+
+{{% /notice %}}
+
+## ãŸãšã
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãç°ãªã span ãéä¿¡ããŠããããã®éä¿¡å
ãæ€èšŒããããšã§ãgateway ã® routing connector ã®ãã¹ãã«æåããŸããã
+
+- **éåžžã® span** 㯠`gateway-traces-standard.out` ã«æ£ããã«ãŒãã£ã³ã°ããã`deployment.environment` 屿§ã«äžèŽããªã span ãããã©ã«ãã®ãã€ãã©ã€ã³ã«åŸãããšã確èªããŸããã
+
+- **ã»ãã¥ãªãã£é¢é£ã® span** 㯠`gateway-traces-security.out` ã«ã«ãŒãã£ã³ã°ããã`"deployment.environment": "security-applications"` ã«åºã¥ãã«ãŒãã£ã³ã°ã«ãŒã«ãæåŸ
ã©ããã«æ©èœããããšã瀺ããŸããã
+
+åºåãã¡ã€ã«ã確èªããããšã§ãOpenTelemetry Collector ã *span 屿§ãæ£ããè©äŸ¡ããé©åãªéä¿¡å
ã«ã«ãŒãã£ã³ã°ãã* ããšã確èªããŸãããããã«ãããã«ãŒãã£ã³ã°ã«ãŒã«ãããŸããŸãªãŠãŒã¹ã±ãŒã¹åãã«ãã¬ã¡ããªãŒããŒã¿ã广çã«åé¢ã»è»¢éã§ããããšãæ€èšŒãããŸããã
+
+ãã®ã¢ãããŒããæ¡åŒµããŠã远å ã®ã«ãŒãã£ã³ã°ã«ãŒã«ãå®çŸ©ããããšã§ãããŸããŸãªå±æ§ã«åºã¥ã㊠spanãã¡ããªã¯ã¹ããã°ãããã«åé¡ã§ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/_index.md
new file mode 100644
index 0000000000..892321a103
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/8-routing-data/_index.md
@@ -0,0 +1,28 @@
+---
+title: 8. ããŒã¿ã®ã«ãŒãã£ã³ã°
+linkTitle: 8. ããŒã¿ã®ã«ãŒãã£ã³ã°
+time: 10 minutes
+weight: 10
+---
+
+OpenTelemetry ã® [**Routing Connector**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/routingconnector) ã¯ãç¹å®ã®æ¡ä»¶ã«åºã¥ããŠããŒã¿ïŒ`traces`ã`metrics`ã`logs`ïŒãç°ãªããã€ãã©ã€ã³ã«æ¯ãåããããšãã§ãã匷åãªæ©èœã§ããããã¯ããã¬ã¡ããªãŒããŒã¿ã®ãµãã»ããã«å¯ŸããŠç°ãªãåŠçããšã¯ã¹ããŒãã®ããžãã¯ãé©çšãããå Žåã«ç¹ã«æçšã§ãã
+
+äŸãã°ã*production* ã®ããŒã¿ã 1 ã€ã® Exporter ã«éä¿¡ãã*test* ã *development* ã®ããŒã¿ãå¥ã® Exporter ã«éãããšãã£ãäœ¿ãæ¹ãã§ããŸããåæ§ã«ããµãŒãã¹åãç°å¢ãSpan åãªã©ã®å±æ§ã«åºã¥ããŠç¹å®ã® Span ãã«ãŒãã£ã³ã°ããã«ã¹ã¿ã ã®åŠçãã¹ãã¬ãŒãžã®ããžãã¯ãé©çšããããšãå¯èœã§ãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+- `[WORKSHOP]` ãã£ã¬ã¯ããªå
ã« `8-routing-data` ãšããæ°ãããµããã£ã¬ã¯ããªãäœæããŸãã
+- 次ã«ã`7-transform-data` ãã£ã¬ã¯ããªãã `*.yaml` ã `8-routing-data` ã«ã³ããŒããŸãã
+- **ãã¹ãŠã®** ã¿ãŒããã«ãŠã£ã³ããŠã `[WORKSHOP]/8-routing-data` ãã£ã¬ã¯ããªã«å€æŽããŸãã
+
+æŽæ°åŸã®ãã£ã¬ã¯ããªæ§é ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+{{% /notice %}}
+
+次ã«ãRouting Connector ãšããããã®ãã€ãã©ã€ã³ãèšå®ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/9-1-count-test.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/9-1-count-test.md
new file mode 100644
index 0000000000..0cf35f81f4
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/9-1-count-test.md
@@ -0,0 +1,94 @@
+---
+title: 9.1 Count Connector ã®ãã¹ã
+linkTitle: 9.1 Count Connector ã®ãã¹ã
+weight: 1
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Gateway ãèµ·åãã**:
+**Gateway terminal** ãŠã£ã³ããŠã§ `[WORKSHOP]/9-sum-count` ãã£ã¬ã¯ããªã«ç§»åããŠã次ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash { title="Start the Gateway" }
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãèµ·åãã**:
+**Agent terminal** ãŠã£ã³ããŠã§ `[WORKSHOP]/9-sum-count` ãã£ã¬ã¯ããªã«ç§»åããŠã次ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+**Loadgen ã§ 12 è¡ã®ãã°ãéä¿¡ãã**:
+**Spans terminal** ãŠã£ã³ããŠã§ `[WORKSHOP]/9-sum-count` ãã£ã¬ã¯ããªã«ç§»åããŸãã
+12 è¡ã®ãã°ãéä¿¡ããŸããããã㯠2 ã€ã®ã€ã³ã¿ãŒãã«ã§èªã¿èŸŒãŸããŸããæ¬¡ã® `loadgen` ã³ãã³ãã§å®è¡ããŸãã
+
+```bash { title="Loadgen" }
+../loadgen -logs -json -count 12
+```
+
+`agent` ãš `gateway` ã®äž¡æ¹ããããŒã¿ãåŠçããŠããããšã瀺ããããã°æ
å ±ã衚瀺ããŸããloadgen ãå®äºãããŸã§åŸ
æ©ããŠãã ããã
+
+**ã¡ããªã¯ã¹ãçæãããããšã確èªãã**
+ãã°ãåŠçããããšã**Agent** ã¯ã¡ããªã¯ã¹ãçæãã**Gateway** ã«è»¢éããŸãã**Gateway** ã¯ããã `gateway-metrics.out` ã«æžã蟌ã¿ãŸãã
+
+ã¡ããªã¯ã¹ `logs.full.count`ã`logs.sw.count`ã`logs.lotr.count`ã`logs.error.count` ãåºåã«å«ãŸããŠãããã確èªãããããæ¬¡ã® **jq** ã¯ãšãªãå®è¡ããŸãã
+
+{{% tabs %}}
+{{% tab title="jq query command" %}}
+
+```bash
+jq '.resourceMetrics[].scopeMetrics[].metrics[]
+ | select(.name == "logs.full.count" or .name == "logs.sw.count" or .name == "logs.lotr.count" or .name == "logs.error.count")
+ | {name: .name, value: (.sum.dataPoints[0].asInt // "-")}' gateway-metrics.out
+```
+
+{{% /tab %}}
+{{% tab title="jq example output" %}}
+
+```json
+{
+ "name": "logs.sw.count",
+ "value": "2"
+}
+{
+ "name": "logs.lotr.count",
+ "value": "2"
+}
+{
+ "name": "logs.full.count",
+ "value": "4"
+}
+{
+ "name": "logs.error.count",
+ "value": "2"
+}
+{
+ "name": "logs.error.count",
+ "value": "1"
+}
+{
+ "name": "logs.sw.count",
+ "value": "2"
+}
+{
+ "name": "logs.lotr.count",
+ "value": "6"
+}
+{
+ "name": "logs.full.count",
+ "value": "8"
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+è£è¶³: éåžž `logs.full.count` 㯠`logs.sw.count` + `logs.lotr.count` ãšçãããªããŸããã`logs.error.count` ã¯ã©ã³ãã ãªæ°å€ã«ãªããŸãã
+{{% /notice %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã`agent` ãš `gateway` ã®ããã»ã¹ã忢ããŠãã ããã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/9-2-sum.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/9-2-sum.md
new file mode 100644
index 0000000000..b1dff9c4e9
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/9-2-sum.md
@@ -0,0 +1,158 @@
+---
+title: Sum Connectorã§ã¡ããªã¯ã¹ãäœæãã
+linkTitle: 9.2 Sum Connector
+time: 10 minutes
+weight: 2
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ã[**Sum Connector**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/sumconnector) ãã¹ãã³ããå€ãæœåºããã¡ããªã¯ã¹ã«å€æããæ¹æ³ãèŠãŠãããŸãã
+
+å
·äœçã«ã¯ãããŒã¹ã¹ãã³ã«å«ãŸããã¯ã¬ãžããã«ãŒãã®è«æ±é¡ã䜿çšããSum ConnectorãæŽ»çšããŠè«æ±åèšé¡ãã¡ããªã¯ã¹ãšããŠååŸããŸãã
+
+ãã®ã³ãã¯ã¿ãŒã¯ãã¹ãã³ãã¹ãã³ã€ãã³ããã¡ããªã¯ã¹ãããŒã¿ãã€ã³ãããã°ã¬ã³ãŒããã屿§å€ãåéïŒ**sum**ïŒããããã«äœ¿çšã§ããŸããåå€ãåå¥ã«ååŸããã¡ããªã¯ã¹ã«å€æããŠéä¿¡ããŸãããã ãããããã®ã¡ããªã¯ã¹ãšãã®å±æ§ã䜿çšããŠèšç®ããããªãåŠçãè¡ãã®ã¯ã**ããã¯ãšã³ã** ã®åœ¹å²ã§ãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Agentã¿ãŒããã«** ãŠã£ã³ããŠã«åãæ¿ããŠããšãã£ã¿ã§ `agent.yaml` ãã¡ã€ã«ãéããŠãã ããã
+
+- **Sum Connectorã远å ãã**
+èšå®ã® connectors ã»ã¯ã·ã§ã³ã« Sum Connector ã远å ããã¡ããªã¯ã¹ã«ãŠã³ã¿ãŒãå®çŸ©ããŸã:
+
+```yaml
+ sum:
+ spans:
+ user.card-charge:
+ source_attribute: payment.amount
+ conditions:
+ - attributes["payment.amount"] != "NULL"
+ attributes:
+ - key: user.name
+
+```
+
+{{% /notice %}}
+
+äžèšã®äŸã§ã¯ãã¹ãã³ã® `payment.amount` 屿§ããã§ãã¯ããŠããŸããæå¹ãªå€ãå«ãŸããŠããå Žåã**Sum** ã³ãã¯ã¿ãŒã¯ `user.card-charge` ãšããã¡ããªã¯ã¹ãçæãã`user.name` ã屿§ãšããŠå«ããŸããããã«ãããããã¯ãšã³ãã¯è«æ±ãµã€ã¯ã«ãªã©ã®é·æéã«ããããŠãŒã¶ãŒã®è«æ±åèšé¡ã远跡ãã衚瀺ã§ããããã«ãªããŸãã
+
+以äžã®ãã€ãã©ã€ã³èšå®ã§ã¯ãã³ãã¯ã¿ãŒã®ãšã¯ã¹ããŒã¿ãŒã traces ã»ã¯ã·ã§ã³ã«è¿œå ããã³ãã¯ã¿ãŒã®ã¬ã·ãŒããŒã metrics ã»ã¯ã·ã§ã³ã«è¿œå ããŠããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+- **ãã€ãã©ã€ã³ã§ Count Connector ãèšå®ãã**
+
+```yaml
+ pipelines:
+ traces:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - attributes/update # Update, hash, and remove attributes
+ - redaction/redact # Redact sensitive fields using regex
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - file
+ - otlphttp
+ - sum # Sum connector which aggregates payment.amount from spans and sends to metrics pipeline
+ metrics:
+ receivers:
+ - sum # Receives metrics from the sum exporter in the traces pipeline
+ - count # Receives count metric from logs count exporter in logs pipeline.
+ - otlp
+ #- hostmetrics # Host Metrics Receiver
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - otlphttp
+ logs:
+ receivers:
+ - otlp
+ - filelog/quotes
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - transform/logs # Transform logs processor
+ - batch
+ exporters:
+ - count # Count Connector that exports count as a metric to metrics pipeline.
+ - debug
+ - otlphttp
+```
+
+- **[otelbin.io](https://www.otelbin.io/)** ã䜿çšããŠãagentã®èšå®ã **æ€èšŒ** ããŠãã ãããåèãŸã§ã«ããã€ãã©ã€ã³ã® `traces` ããã³ `metrics:` ã»ã¯ã·ã§ã³ã¯ä»¥äžã®ããã«ãªããŸã:
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1(otlp
fa:fa-download
):::receiver
+ REC3(otlp
fa:fa-download
):::receiver
+ PRO1(memory_limiter
fa:fa-microchip
):::processor
+ PRO2(memory_limiter
fa:fa-microchip
):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(resource
fa:fa-microchip
add_mode):::processor
+ PRO5(batch
fa:fa-microchip
):::processor
+ PRO6(batch
fa:fa-microchip
):::processor
+ PRO7(resourcedetection
fa:fa-microchip
):::processor
+ PRO8(resourcedetection
fa:fa-microchip
):::processor
+
+ PROA(attributes
fa:fa-microchip
redact):::processor
+ PROB(redaction
fa:fa-microchip
update):::processor
+ EXP1( debug
fa:fa-upload
):::exporter
+ EXP2( file
fa:fa-upload
):::exporter
+ EXP3( debug
fa:fa-upload
):::exporter
+ EXP4( otlphttp
fa:fa-upload
):::exporter
+ EXP5( otlphttp
fa:fa-upload
):::exporter
+ ROUTE1( sum
fa:fa-route
):::con-export
+ ROUTE2( count
fa:fa-route
):::con-receive
+ ROUTE3( sum
fa:fa-route
):::con-receive
+
+ %% Links
+ subID1:::sub-traces
+ subID2:::sub-metrics
+ subgraph " "
+ direction LR
+ subgraph subID1["`**Traces**`"]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PROA
+ PROA --> PROB
+ PROB --> PRO7
+ PRO7 --> PRO3
+ PRO3 --> PRO5
+ PRO5 --> EXP1
+ PRO5 --> EXP2
+ PRO5 --> EXP5
+ PRO5 --> ROUTE1
+ end
+
+ subgraph subID2["`**Metrics**`"]
+ direction LR
+ ROUTE1 --> ROUTE3
+ ROUTE3 --> PRO2
+ ROUTE2 --> PRO2
+ REC3 --> PRO2
+ PRO2 --> PRO8
+ PRO8 --> PRO4
+ PRO4 --> PRO6
+ PRO6 --> EXP3
+ PRO6 --> EXP4
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-logs stroke:#34d399,stroke-width:1px, color:#34d399,stroke-dasharray: 3 3;
+classDef sub-traces stroke:#fbbf24,stroke-width:1px, color:#fbbf24,stroke-dasharray: 3 3;
+classDef sub-metrics stroke:#38bdf8,stroke-width:1px, color:#38bdf8,stroke-dasharray: 3 3;
+```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/9-3-sum-test.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/9-3-sum-test.md
new file mode 100644
index 0000000000..af47509273
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/9-3-sum-test.md
@@ -0,0 +1,67 @@
+---
+title: 9.3 Count Connector ã®ãã¹ã
+linkTitle: 9.3 Sum Connector ã®ãã¹ã
+weight: 3
+---
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**Gateway ãèµ·åãã**:
+**Gateway ã¿ãŒããã«** ãŠã£ã³ããŠã§ `[WORKSHOP]/9-sum-count` ãã£ã¬ã¯ããªã«ç§»åãã以äžãå®è¡ããŸãã
+
+```bash { title="Start the Gateway" }
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãèµ·åãã**:
+**Agent ã¿ãŒããã«** ãŠã£ã³ããŠã§ `[WORKSHOP]/9-sum-count` ãã£ã¬ã¯ããªã«ç§»åãã以äžãå®è¡ããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+**Loadgen ãèµ·åãã**:
+**Spans ã¿ãŒããã«** ãŠã£ã³ããŠã§ `[WORKSHOP]/9-sum-count` ãã£ã¬ã¯ããªã«ç§»åããŸãã以äžã® `loadgen` ã³ãã³ãã§ 8 åã®ã¹ãã³ãéä¿¡ããŸãã
+
+```bash { title="Loadgen" }
+../loadgen -count 8
+```
+
+`agent` ãš `gateway` ã®äž¡æ¹ããããã°æ
å ±ã衚瀺ããããŒã¿ãåŠçããŠããããšã確èªã§ããŸããloadgen ãå®äºãããŸã§åŸ
ã¡ãŸãã
+
+**ã¡ããªã¯ã¹ãæ€èšŒãã**
+ã¹ãã³ã®åŠçäžã«ã**Agent** ã¯ã¡ããªã¯ã¹ãçæã㊠**Gateway** ã«æž¡ããŠããŸãã**Gateway** ã¯ãããã `gateway-metrics.out` ã«æžã蟌ãã§ããŸãã
+
+ã¡ããªã¯ã¹åºåã« `user.card-charge` ãååšããããšã確èªããããããã« `user.name` 屿§ãä»äžãããŠããããšãæ€èšŒããããã«ã以äžã® jq ã¯ãšãªãå®è¡ããŸãã
+
+{{% tabs %}}
+{{% tab title="jq query command" %}}
+
+```bash
+
+jq -r '.resourceMetrics[].scopeMetrics[].metrics[] | select(.name == "user.card-charge") | .sum.dataPoints[] | "\(.attributes[] | select(.key == "user.name").value.stringValue)\t\(.asDouble)"' gateway-metrics.out | while IFS=$'\t' read -r name charge; do
+ printf "%-20s %s\n" "$name" "$charge"
+done
+```
+
+{{% /tab %}}
+{{% tab title="jq example output" %}}
+
+```text
+George Lucas 67.49
+Frodo Baggins 87.14
+Thorin Oakenshield 90.98
+Luke Skywalker 51.37
+Luke Skywalker 65.56
+Thorin Oakenshield 67.5
+Thorin Oakenshield 66.66
+Peter Jackson 94.39
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã`agent` ãš `gateway` ã®ããã»ã¹ã忢ããŠãã ããã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/_index.md
new file mode 100644
index 0000000000..e2e5ee0384
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/9-sum-count/_index.md
@@ -0,0 +1,191 @@
+---
+title: Count Connector ã§ã¡ããªã¯ã¹ãäœæãã
+linkTitle: 9. Count & Sum Connector
+time: 10 minutes
+weight: 11
+---
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ã[**Count Connector**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/countconnector) ã䜿çšããŠããã°ãã屿§å€ãæœåºããæå³ã®ããã¡ããªã¯ã¹ãžå€æããæ¹æ³ã玹ä»ããŸãã
+
+å
·äœçã«ã¯ãCount Connector ã䜿ã£ãŠãã°ã«ç»å ŽãããStar WarsããšãLord of the Ringsãã®åŒçšã®æ°ã远跡ããèšæž¬å¯èœãªããŒã¿ãã€ã³ããžå€æããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+- `[WORKSHOP]` ãã£ã¬ã¯ããªå
ã«ã`9-sum-count` ãšããååã®æ°ãããµããã£ã¬ã¯ããªãäœæããŸãã
+- 次ã«ã`8-routing-data` ãã£ã¬ã¯ããªãã `*.yaml` ã `9-sum-count` ã«ã³ããŒããŸãã
+- **ãã¹ãŠã®** ã¿ãŒããã«ãŠã£ã³ããŠã `[WORKSHOP]/9-sum-count` ãã£ã¬ã¯ããªã«å€æŽããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+- **agent.yaml ãæŽæ°** ããŠããã°ãèªã¿åãé »åºŠã倿ŽããŸãã
+`agent.yaml` å
ã® `filelog/quotes` ã¬ã·ãŒããŒãèŠã€ãã`poll_interval` 屿§ã远å ããŸãã
+
+```yaml
+ filelog/quotes: # Receiver Type/Name
+ poll_interval: 10s # Only read every ten seconds
+```
+
+{{% /notice %}}
+
+é
å»¶ãèšããçç±ã¯ãOpenTelemetry Collector ã® Count Connector ãåŠçééããšã«ãã°ãã«ãŠã³ãããããã§ããã€ãŸããããŒã¿ãèªã¿åããããã³ã«ã次ã®ééã«åããŠã«ãŠã³ãããŒãã«ãªã»ãããããŸãã`Filelog reciever` ã®ããã©ã«ãééã§ãã 200ms ã§ã¯ãloadgen ãæžã蟌ãã ãã¹ãŠã®è¡ãèªã¿åãããã«ãŠã³ãã 1 ã«ãªã£ãŠããŸããŸãããã®ééãèšããããšã§ã確å®ã«è€æ°ã®ãšã³ããªãã«ãŠã³ãã§ããããã«ãªããŸãã
+
+Collector ã§ã¯ã以äžã®ããã«æ¡ä»¶ãçç¥ããããšã§ãåèªã¿åãééã®çޝç©ã«ãŠã³ããä¿æã§ããŸãããã ããããé·ãæéã«ããã£ãŠè¿œè·¡ã§ããããã环ç©ã«ãŠã³ãã®åŠçã¯ããã¯ãšã³ãã«ä»»ããã®ããã¹ããã©ã¯ãã£ã¹ã§ãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+- **Count Connector ã远å ãã**
+
+èšå®ã® connectors ã»ã¯ã·ã§ã³ã« Count Connector ãå«ãã䜿çšããã¡ããªã¯ã¹ã«ãŠã³ã¿ãŒãå®çŸ©ããŸãã
+
+```yaml
+connectors:
+ count:
+ logs:
+ logs.full.count:
+ description: "Running count of all logs read in interval"
+ logs.sw.count:
+ description: "StarWarsCount"
+ conditions:
+ - attributes["movie"] == "SW"
+ logs.lotr.count:
+ description: "LOTRCount"
+ conditions:
+ - attributes["movie"] == "LOTR"
+ logs.error.count:
+ description: "ErrorCount"
+ conditions:
+ - attributes["level"] == "ERROR"
+```
+
+- **ã¡ããªã¯ã¹ã«ãŠã³ã¿ãŒã®èª¬æ**
+
+ - `logs.full.count`: åèªã¿åãééã§åŠçããããã°ã®åèšæ°ã远跡ããŸãã
+ ãã®ã¡ããªã¯ã¹ã«ã¯ãã£ã«ã¿ãªã³ã°æ¡ä»¶ããªããããã·ã¹ãã ãééãããã¹ãŠã®ãã°ãã«ãŠã³ãã«å«ãŸããŸãã
+ - `logs.sw.count`: Star Wars æ ç»ã®åŒçšãå«ããã°ãã«ãŠã³ãããŸãã
+ - `logs.lotr.count`: Lord of the Rings æ ç»ã®åŒçšãå«ããã°ãã«ãŠã³ãããŸãã
+ - `logs.error.count`: èªã¿åãééäžã«éèŠåºŠã¬ãã«ã ERROR ã®ãã°ãã«ãŠã³ãããããšã§ãå®éã®ã·ããªãªã衚çŸããŸãã
+
+- **ãã€ãã©ã€ã³ã§ Count Connector ãèšå®ãã**
+以äžã®ãã€ãã©ã€ã³èšå®ã§ã¯ãã³ãã¯ã¿ãŒã®ãšã¯ã¹ããŒã¿ãŒã¯ `logs` ã»ã¯ã·ã§ã³ã«ãã³ãã¯ã¿ãŒã®ã¬ã·ãŒããŒã¯ `metrics` ã»ã¯ã·ã§ã³ã«è¿œå ãããŸãã
+
+```yaml
+ pipelines:
+ traces:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - attributes/update # Update, hash, and remove attributes
+ - redaction/redact # Redact sensitive fields using regex
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - file
+ - otlphttp
+ metrics:
+ receivers:
+ - count # Count Connector that receives count metric from logs count exporter in logs pipeline.
+ - otlp
+ #- hostmetrics # Host Metrics Receiver
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - otlphttp
+ logs:
+ receivers:
+ - otlp
+ - filelog/quotes
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - transform/logs # Transform logs processor
+ - batch
+ exporters:
+ - count # Count Connector that exports count as a metric to metrics pipeline.
+ - debug
+ - otlphttp
+```
+
+{{% /notice %}}
+
+ããã§ã¯ãã°ã屿§ã«åºã¥ããŠã«ãŠã³ãããŠããŸãããã°ããŒã¿ã屿§ã§ã¯ãªããã°æ¬æã«æ ŒçŽãããŠããå Žåã¯ããã€ãã©ã€ã³ã§ `Transform` ããã»ããµãŒã䜿çšã㊠key/value ã®ãã¢ãæœåºãã屿§ãšããŠè¿œå ããå¿
èŠããããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã`07-transform` ã»ã¯ã·ã§ã³ã§ãã§ã« `merge_maps(attributes, cache, "upsert")` ã远å ããŠããŸããããã«ãããåŠç察象ã®ãã¹ãŠã®é¢é£ããŒã¿ããã°å±æ§ã«å«ãŸããããã«ãªã£ãŠããŸãã
+
+屿§ãäœæãããã£ãŒã«ããéžæããéã¯æ³šæãå¿
èŠã§ãããã¹ãŠã®ãã£ãŒã«ããç¡å·®å¥ã«è¿œå ããããšã¯ãæ¬çªç°å¢ã«ãšã£ãŠäžè¬çã«æãŸãããããŸãããäžèŠãªããŒã¿ã®æ··ä¹±ãé¿ããããã«ãæ¬åœã«å¿
èŠãªãã£ãŒã«ãã®ã¿ãéžæããŠãã ããã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+- **[otelbin.io](https://www.otelbin.io/)** ã䜿çšããŠãšãŒãžã§ã³ãèšå®ã **æ€èšŒ** ããŸããåèãŸã§ã«ããã€ãã©ã€ã³ã® `logs` ããã³ `metrics:` ã»ã¯ã·ã§ã³ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1(otlp
fa:fa-download):::receiver
+ REC2(filelog
fa:fa-download
quotes):::receiver
+ REC3(otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(memory_limiter
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(resource
fa:fa-microchip
add_mode):::processor
+ PRO5(batch
fa:fa-microchip):::processor
+ PRO6(batch
fa:fa-microchip):::processor
+ PRO7(resourcedetection
fa:fa-microchip):::processor
+ PRO8(resourcedetection
fa:fa-microchip):::processor
+ PRO9(transfrom
fa:fa-microchip
logs):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2( otlphttp
fa:fa-upload):::exporter
+ EXP3( debug
fa:fa-upload):::exporter
+ EXP4( otlphttp
fa:fa-upload):::exporter
+ ROUTE1( count
fa:fa-route):::con-export
+ ROUTE2( count
fa:fa-route):::con-receive
+
+ %% Links
+ subID1:::sub-logs
+ subID2:::sub-metrics
+ subgraph " "
+ direction LR
+ subgraph subID1[**Logs**]
+ direction LR
+ REC1 --> PRO1
+ REC2 --> PRO1
+ PRO1 --> PRO7
+ PRO7 --> PRO3
+ PRO3 --> PRO9
+ PRO9 --> PRO5
+ PRO5 --> ROUTE1
+ PRO5 --> EXP1
+ PRO5 --> EXP2
+ end
+
+ subgraph subID2["`**Metrics**`"]
+ direction LR
+ ROUTE1 --> ROUTE2
+ ROUTE2 --> PRO2
+ REC3 --> PRO2
+ PRO2 --> PRO8
+ PRO8 --> PRO4
+ PRO4 --> PRO6
+ PRO6 --> EXP3
+ PRO6 --> EXP4
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-logs stroke:#34d399,stroke-width:1px, color:#34d399,stroke-dasharray: 3 3;
+classDef sub-metrics stroke:#38bdf8,stroke-width:1px, color:#38bdf8,stroke-dasharray: 3 3;
+```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/99-end/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/99-end/_index.md
new file mode 100644
index 0000000000..65378fdc6f
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/99-end/_index.md
@@ -0,0 +1,7 @@
+---
+title: ãŸãšã
+linkTitle: 10. ãŸãšã
+weight: 12
+---
+
+
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/_index.md
new file mode 100644
index 0000000000..2c1b884d07
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/_index.md
@@ -0,0 +1,38 @@
+---
+title: Advanced Collector Configuration
+description: ãŒããã OpenTelemetry Collector ã®èšå®ãè¡ãæ¹æ³ãå®è·µããããã€ãã®é«åºŠãªèšå®ã·ããªãªãåŠç¿ããŸãã
+weight: 2
+archetype: chapter
+authors: ["Robert Castley", "Charity Anderson", "Pieter Hagen", "Geoff Higginbottom"]
+time: 90 minutes
+hidden: true
+---
+
+ãã®ã¯ãŒã¯ã·ã§ããã®ç®çã¯ãOpenTelemetry Collector ã®èšå®ãã¡ã€ã«ã®äœæãšç·šéã«èªä¿¡ãæã£ãŠããã ãããšã§ããæå°éã® `agent.yaml` ãã¡ã€ã«ããå§ããŠã段éçã«é«åºŠã§å®è·µçãªã·ããªãªã«å¯Ÿå¿ã§ããããæ¡åŒµããŠãããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§éç¹ã眮ãã®ã¯ããµãŒãããŒãã£ãã³ããŒã®ããã¯ãšã³ãã«éä¿¡ããã®ã§ã¯ãªãããã¬ã¡ããªããŒã¿ãããŒã«ã«ã«ä¿åããããã« OpenTelemetry Collector ãèšå®ããæ¹æ³ã§ãããã®ã¢ãããŒãã¯ãããã°ããã©ãã«ã·ã¥ãŒãã£ã³ã°ãç°¡çŽ åããã ãã§ãªããæ¬çªã·ã¹ãã ãžã®ããŒã¿éä¿¡ãé¿ããããã¹ããéçºç°å¢ã«ãæé©ã§ãã
+
+ãã®ã¯ãŒã¯ã·ã§ãããæå€§éã«æŽ»çšããããã«ã以äžã®ç¥èãå¿
èŠã§ãã
+
+- OpenTelemetry Collector ãšãã®èšå®ãã¡ã€ã«æ§é ã«é¢ããåºæ¬çãªçè§£
+- YAML ãã¡ã€ã«ã®ç·šéã«é¢ããç¿ç
+
+ãã®ã¯ãŒã¯ã·ã§ããã®ãã¹ãŠã®å
容ã¯ããŒã«ã«ã§å®è¡ã§ããããã«èšèšãããŠããããã³ãºãªã³åœ¢åŒã§ã¢ã¯ã»ã¹ããããåŠç¿äœéšãæäŸããŸããããã§ã¯æ©éãæ§ç¯ãå§ããŸãããã
+
+## Workshop Overview
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã以äžã®ãããã¯ãæ±ããŸãã
+
+- **ãšãŒãžã§ã³ããããŒã«ã«ã«ã»ããã¢ãããã**: ã¡ã¿ããŒã¿ã远å ããdebug ããã³ file exporter ãå°å
¥ããŸãã
+- **gateway ãèšå®ãã**: ãšãŒãžã§ã³ããã gateway ãžãã©ãã£ãã¯ãã«ãŒãã£ã³ã°ããŸãã
+- **FileLog receiver ãèšå®ãã**: ããŸããŸãªãã°ãã¡ã€ã«ãããã°ããŒã¿ãåéããŸãã
+- **ãšãŒãžã§ã³ãã®ã¬ãžãªãšã³ã¹åäž**: ãã©ãŒã«ããã¬ã©ã³ã¹ã®ããã®åºæ¬èšå®ãè¡ããŸãã
+- **processor ãèšå®ãã**:
+ - ç¹å®ã® span (äŸ: ãã«ã¹ãã§ãã¯) ãé€å€ããŠãã€ãºããã£ã«ã¿ãªã³ã°ããŸãã
+ - äžèŠãªã¿ã°ãåé€ããæ©å¯ããŒã¿ãåŠçããŸãã
+ - ãšã¯ã¹ããŒãåã®ãã€ãã©ã€ã³ã§ OTTL (OpenTelemetry Transformation Language) ã䜿çšããŠããŒã¿ã倿ããŸãã
+- **Connector ãèšå®ãã**:
+ - åä¿¡ããå€ã«åºã¥ããŠããŒã¿ãç°ãªããšã³ããã€ã³ããžã«ãŒãã£ã³ã°ããŸãã
+ - ãã°ãš span ã®ããŒã¿ã metric ã«å€æããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ãããçµããé ã«ã¯ãããŸããŸãªå®è·µçãŠãŒã¹ã±ãŒã¹ã«å¯Ÿå¿ãã OpenTelemetry Collector ã®èšå®æ¹æ³ã«ç¿çããŠããã§ãããã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/prerequisites.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/prerequisites.md
new file mode 100644
index 0000000000..45d49a0c5e
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector-old/prerequisites.md
@@ -0,0 +1,79 @@
+---
+title: äºåæºå
+weight: 2.1
+archetype: chapter
+time: 90 minutes
+---
+
+### åææ¡ä»¶
+
+- `vi`ã`vim`ã`nano`ããŸãã¯ã奜ã¿ã®ããã¹ããšãã£ã¿ã䜿ã£ã YAML ãã¡ã€ã«ã®ç·šéã«ç¿çããŠããããšã
+- ãµããŒããããç°å¢:
+ - Splunk Workshop InstanceïŒæšå¥šïŒ
+ - Apple Mac (Apple Silicon)ã`jq` ã®ã€ã³ã¹ããŒã«ãå¿
èŠã§ã - [**https://jqlang.org/download/**](https://jqlang.org/download/)
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**ã¯ãŒã¯ã·ã§ããçšãã£ã¬ã¯ããªã®äœæ**: ãèªèº«ã®ç°å¢ã§æ°ãããã£ã¬ã¯ããªïŒäŸ: `advanced-otel-workshop`ïŒãäœæããŸããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ä»¥éããã®ãã£ã¬ã¯ããªã `[WORKSHOP]` ãšè¡šèšããŸãã
+
+**ã¯ãŒã¯ã·ã§ããçšãã€ããªã®ããŠã³ããŒã**: `[WORKSHOP]` ãã£ã¬ã¯ããªã«ç§»åããOpenTelemetry Collector ãšããŒããžã§ãã¬ãŒã¿ãŒã®ãã€ããªãããŠã³ããŒãããŸãã
+
+{{% tabs %}}
+{{% tab title="Splunk Workshop Instance" %}}
+
+```bash
+curl -L https://github.com/signalfx/splunk-otel-collector/releases/download/v{{< otel-version >}}/otelcol_linux_amd64 -o otelcol && \
+curl -L https://github.com/splunk/observability-workshop/raw/refs/heads/main/workshop/ninja/advanced-otel/loadgen/build/loadgen-linux-amd64 -o loadgen
+```
+
+**ãã¡ã€ã«ããŒããã·ã§ã³ã®æŽæ°**: ããŠã³ããŒããå®äºããããäž¡æ¹ã®ãã¡ã€ã«ã«å®è¡æš©éãä»äžããããã«ããŒããã·ã§ã³ãæŽæ°ããŸãã
+
+```bash
+chmod +x otelcol loadgen && \
+./otelcol -v && \
+./loadgen --help
+```
+
+{{% /tab %}}
+{{% tab title="Apple Silicon" %}}
+
+```bash
+curl -L https://github.com/signalfx/splunk-otel-collector/releases/download/v{{< otel-version >}}/otelcol_darwin_arm64 -o otelcol && \
+curl -L https://github.com/splunk/observability-workshop/raw/refs/heads/main/workshop/ninja/advanced-otel/loadgen/build/loadgen-darwin-arm64 -o loadgen
+```
+
+{{% notice style="warning" title="macOS ãŠãŒã¶ãŒã®æ¹ãž" icon="desktop" %}}
+macOS ã§ãã€ããªãå®è¡ããåã«ãããŠã³ããŒããããã¡ã€ã«ã« macOS ãä»äžãã quarantine 屿§ãåé€ããå¿
èŠããããŸãããã®æé ã«ãããå¶éãªããã€ããªãå®è¡ã§ããããã«ãªããŸãã
+
+ã¿ãŒããã«ã§æ¬¡ã®ã³ãã³ããå®è¡ããŠãã ããã
+
+```bash { title="Remove Quarantine Attribute"}
+xattr -dr com.apple.quarantine otelcol && \
+xattr -dr com.apple.quarantine loadgen
+```
+
+**ãã¡ã€ã«ããŒããã·ã§ã³ã®æŽæ°**: ããŠã³ããŒããå®äºããããäž¡æ¹ã®ãã¡ã€ã«ã«å®è¡æš©éãä»äžããããã«ããŒããã·ã§ã³ãæŽæ°ããŸãã
+
+```bash
+chmod +x otelcol loadgen && \
+./otelcol -v && \
+./loadgen --help
+```
+
+{{% /notice %}}
+
+{{% /tab %}}
+{{% /tabs %}}
+
+```text { title="Initial Directory Structure" }
+[WORKSHOP]
+âââ otelcol # OpenTelemetry Collector binary
+âââ loadgen # Load Generator binary
+```
+
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-1-gateway.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-1-gateway.md
new file mode 100644
index 0000000000..5c35e510eb
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-1-gateway.md
@@ -0,0 +1,61 @@
+---
+title: 1.1 Gateway èšå®ã®ç¢ºèª
+linkTitle: 1.1 Gateway èšå®
+weight: 1
+---
+
+**OpenTelemetry Gateway** ã¯ããã¬ã¡ããªããŒã¿ã®åä¿¡ãåŠçããšã¯ã¹ããŒããè¡ãäžå€®ãããšããŠæ©èœããŸãããã¬ã¡ããªã®ãœãŒã¹ïŒã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãªã©ïŒãšãSplunk Observability Cloud ã®ãããªå¯èŠ³æž¬æ§ããã¯ãšã³ããšã®éã«é
眮ãããŸãã
+
+ãã¬ã¡ããªãã©ãã£ãã¯ãéäžç®¡çããããšã§ãGateway ã¯ããŒã¿ã®ãã£ã«ã¿ãªã³ã°ããšã³ãªããã¡ã³ãã倿ãè€æ°ã®å®å
ãžã®ã«ãŒãã£ã³ã°ãšãã£ãé«åºŠãªæ©èœãå®çŸããŸãããã¬ã¡ããªåŠçããªãããŒãããããšã§åã
ã®ãµãŒãã¹ãžã®è² è·ã軜æžãã忣ã·ã¹ãã å
šäœã§äžè²«ããæšæºåãããããŒã¿ãä¿èšŒããŸãã
+
+ããã«ãããç¹ã«è€éãªãã«ããµãŒãã¹ç°å¢ã«ãããŠãå¯èŠ³æž¬æ§ãã€ãã©ã€ã³ã®ç®¡çãã¹ã±ãŒã«ãåæã容æã«ãªããŸãã
+
+{{% exercise title="Gateway èšå®ã®ç¢ºèª" %}}
+
+2 ã€ç®ã®ã¿ãŒããã«ãŠã£ã³ããŠãéããäœæãã**Gateway** ãšããååãä»ããŸããæåã®æŒç¿ãã£ã¬ã¯ã㪠`[WORKSHOP]/1-agent-gateway` ã«ç§»åãã`gateway.yaml` ãã¡ã€ã«ã®å
容ã確èªããŸãã
+
+ãã®ãã¡ã€ã«ã¯ã**Gateway** ã¢ãŒãã§ãããã€ããã OpenTelemetry Collector ã®äžæ žæ§é ã瀺ããŠããŸãã
+
+{{% /exercise %}}
+
+## Gateway èšå®ã®çè§£
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ OpenTelemetry Collector ã **Gateway** ã¢ãŒããšããŠæ§æãã `gateway.yaml` ãã¡ã€ã«ãèŠãŠãããŸãããããã® **Gateway** 㯠**Agent** ãããã¬ã¡ããªãåä¿¡ããæ€æ»ãŸãã¯è»¢éã®ããã«åŠçããŠãšã¯ã¹ããŒããã圹å²ãæ
ããŸãã
+
+* **OTLP ReceiverïŒã«ã¹ã¿ã ããŒãïŒ**
+
+ ```yaml
+ receivers:
+ otlp:
+ protocols:
+ http:
+ endpoint: "0.0.0.0:5318"
+ ```
+
+ ããŒã `5318` 㯠**Agent** èšå®ã® `otlphttp` ãšã¯ã¹ããŒã¿ãŒãšäžèŽããŠããã**Agent** ãéä¿¡ãããã¹ãŠã®ãã¬ã¡ããªããŒã¿ã **Gateway** ã§åãä»ããããããã«ããŠããŸãã
+
+ > [!NOTE]
+ > ãã®ããã«ããŒããåé¢ããããšã§ãç«¶åãåé¿ããAgent ãš Gateway ã®åœ¹å²ãæç¢ºã«ä¿ã¡ãŸãã
+
+* **File Exporter**
+
+ **Gateway** 㯠3 ã€ã® File Exporter ã䜿çšããŠããã¬ã¡ããªããŒã¿ãããŒã«ã«ãã¡ã€ã«ã«åºåããŸãããããã®ãšã¯ã¹ããŒã¿ãŒã¯æ¬¡ã®ããã«å®çŸ©ãããŠããŸãã
+
+ ```yaml
+ exporters: # List of exporters
+ debug: # Debug exporter
+ verbosity: detailed # Enable detailed debug output
+ file/traces: # Exporter Type/Name
+ path: "./gateway-traces.out" # Path for OTLP JSON output for traces
+ append: false # Overwrite the file each time
+ file/metrics: # Exporter Type/Name
+ path: "./gateway-metrics.out" # Path for OTLP JSON output for metrics
+ append: false # Overwrite the file each time
+ file/logs: # Exporter Type/Name
+ path: "./gateway-logs.out" # Path for OTLP JSON output for logs
+ append: false # Overwrite the file each time
+ ```
+
+ åãšã¯ã¹ããŒã¿ãŒã¯ãç¹å®ã®ã·ã°ãã«ã¿ã€ãã察å¿ãããã¡ã€ã«ã«æžãåºããŸãã
+
+ ãããã®ãã¡ã€ã«ã¯ Gateway ã®èµ·åæã«äœæãããAgent ãããŒã¿ãéä¿¡ããã«ã€ããŠå®éã®ãã¬ã¡ããªã§æºããããŠãããŸãããããã®ãã¡ã€ã«ããªã¢ã«ã¿ã€ã ã§ç£èŠããããšã§ããã€ãã©ã€ã³ãæµãããã¬ã¡ããªã®åãã芳å¯ã§ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-2-send-metrics.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-2-send-metrics.md
new file mode 100644
index 0000000000..b6fc28bff4
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-2-send-metrics.md
@@ -0,0 +1,99 @@
+---
+title: 1.2 èšå®ã®æ€èšŒãšãã¹ã
+linkTitle: 1.2 èšå®ã®æ€èšŒãšãã¹ã
+weight: 3
+---
+
+ããã§ **Gateway** ãš **Agent** ãèµ·åã§ããããã«ãªããŸããã**Agent** ã¯èµ·åæã«èªåã§ **Host Metrics** ãéä¿¡ããããã«èšå®ãããŠããŸããããã«ããã**Agent** ãã **Gateway** ãžããŒã¿ãæ£ããã«ãŒãã£ã³ã°ãããŠããããšãæ€èšŒããŸãã
+
+{{% exercise title="Gateway ãš Agent ã®èµ·å" %}}
+
+**Gateway**: **Gateway terminal** ãŠã£ã³ããŠã§ã次ã®ã³ãã³ããå®è¡ã㊠**Gateway** ãèµ·åããŸãã
+
+```bash {title="Start the Gateway"}
+../otelcol --config=gateway.yaml
+```
+
+ãã¹ãŠãæ£ããæ§æãããŠããå Žåãã³ã¬ã¯ã¿ãŒãèµ·åããåºåã« `Everything is ready. Begin running and processing data.` ãšè¡šç€ºãããŸããæ¬¡ã®ãããªåºåã«ãªããŸãã
+
+```text
+2025-06-09T09:22:11.944+0100 info service@v0.126.0/service.go:289 Everything is ready. Begin running and processing data. {"resource": {}}
+```
+
+**Gateway** ã皌åãããšãããŒã `5318` ã§åä¿¡ããŒã¿ãåŸ
ã¡åããåä¿¡ããããŒã¿ã次ã®ãã¡ã€ã«ã«ãšã¯ã¹ããŒãããŸãã
+
+* `gateway-traces.out`
+* `gateway-metrics.out`
+* `gateway-logs.out`
+
+**Agent ã®èµ·å**: **Agent terminal** ãŠã£ã³ããŠã§ãagent æ§æã䜿ã£ãŠ agent ãèµ·åããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+**CPU ã¡ããªã¯ã¹ã®ç¢ºèª**:
+
+1. **Agent** ãèµ·åãããšããã ã¡ã« **CPU** ã¡ããªã¯ã¹ã®éä¿¡ãéå§ããããšã確èªããŸãã
+2. **Agent** ãš **Gateway** ã®äž¡æ¹ãããããã°åºåã«ãã®åäœã衚瀺ããŸããåºåã¯æ¬¡ã®ã¹ããããã®ããã«ãªããŸãã
+
+```text
+
+NumberDataPoints #31
+Data point attributes:
+ -> cpu: Str(cpu3)
+ -> state: Str(wait)
+StartTimestamp: 2025-07-07 16:49:42 +0000 UTC
+Timestamp: 2025-07-09 09:36:21.190226459 +0000 UTC
+Value: 77.380000
+ {"resource": {}, "otelcol.component.id": "debug", "otelcol.component.kind": "exporter", "otelcol.signal": "metrics"}
+```
+
+ãã®æ®µéã§ã¯ã**Agent** ã¯1æéã«1åããŸãã¯åèµ·åã®ãã³ã« **CPU** ã¡ããªã¯ã¹ãåéãç¶ããããã gateway ãžéä¿¡ããŸãã**Gateway** ã¯ãããã®ã¡ããªã¯ã¹ãåŠçãã`gateway-metrics.out` ãšããååã®ãã¡ã€ã«ã«ãšã¯ã¹ããŒãããŸãããã®ãã¡ã€ã«ã¯ããã€ãã©ã€ã³ãµãŒãã¹ã®äžéšãšããŠãšã¯ã¹ããŒããããã¡ããªã¯ã¹ãä¿åããŸãã
+
+**ããŒã¿ã Gateway ã«å°éããããšã®ç¢ºèª**: CPU ã¡ããªã¯ã¹ãç¹ã« `cpu0` ã®ã¡ããªã¯ã¹ã gateway ã«æ£ããå±ããŠããããšã確èªããããã«ã`jq` ã³ãã³ãã§ `gateway-metrics.out` ãã¡ã€ã«ã確èªããŸãã
+
+次ã®ã³ãã³ãã¯ã`system.cpu.time` ã¡ããªã¯ã¹ããã£ã«ã¿ãªã³ã°ããŠæœåºãã`cpu0` ã«çŠç¹ãåœãŠãŸããã¡ããªã¯ã¹ã® stateïŒäŸ: `user`ã`system`ã`idle`ã`interrupt`ïŒãšã察å¿ããå€ã衚瀺ãããŸãã
+
+3ã€ç®ã®ã¿ãŒããã«ãŠã£ã³ããŠãéããäœæãã**Tests** ãšããååãä»ããŠãã ããã**Tests terminal** ã§æ¬¡ã®ã³ãã³ããå®è¡ããŠã`system.cpu.time` ã¡ããªã¯ã¹ã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="Check CPU Metrics" %}}
+
+```bash
+jq '.resourceMetrics[].scopeMetrics[].metrics[] | select(.name == "system.cpu.time") | .sum.dataPoints[] | select(.attributes[0].value.stringValue == "cpu0") | {cpu: .attributes[0].value.stringValue, state: .attributes[1].value.stringValue, value: .asDouble}' gateway-metrics.out
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```json
+{
+ "cpu": "cpu0",
+ "state": "user",
+ "value": 123407.02
+}
+{
+ "cpu": "cpu0",
+ "state": "system",
+ "value": 64866.6
+}
+{
+ "cpu": "cpu0",
+ "state": "idle",
+ "value": 216427.87
+}
+{
+ "cpu": "cpu0",
+ "state": "interrupt",
+ "value": 0
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã**Agent** ãš **Gateway** ã®ããã»ã¹ã忢ããŠãã ããã
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-3-send-traces.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-3-send-traces.md
new file mode 100644
index 0000000000..a10ed177aa
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-3-send-traces.md
@@ -0,0 +1,96 @@
+---
+title: 1.3 Agent ãã Gateway ãžãã¬ãŒã¹ãéä¿¡ãã
+linkTitle: 1.3 ãã¬ãŒã¹ã®éä¿¡
+weight: 4
+hidden: true
+draft: true
+---
+
+{{% exercise title="ãã¹ããã¬ãŒã¹ãéä¿¡ãã" %}}
+
+**ãã¹ããã¬ãŒã¹ã®éä¿¡**:
+
+1. **Agent** ãš **Gateway** ãåäœããŠããããšã確èªããŸãã
+2. **Loadgen ã¿ãŒããã«** ãŠã£ã³ããŠã§ä»¥äžã®ã³ãã³ããå®è¡ã㊠5 ã€ã®ã¹ãã³ãéä¿¡ãã**Agent** ãš **Gateway** ã®ãããã°ãã°ã®åºåã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="Start the Load Generator" %}}
+
+```bash
+../loadgen -count 5
+```
+
+{{% /tab %}}
+{{% tab title="Agent/Gateway Debug Output" %}}
+
+```text
+2025-03-06T11:49:00.456Z info Traces {"otelcol.component.id": "debug", "otelcol.component.kind": "Exporter", "otelcol.signal": "traces", "resource spans": 1, "spans": 1}
+2025-03-06T11:49:00.456Z info ResourceSpans #0
+Resource SchemaURL: https://opentelemetry.io/schemas/1.6.1
+Resource attributes:
+ -> service.name: Str(cinema-service)
+ -> deployment.environment: Str(production)
+ -> host.name: Str(workshop-instance)
+ -> os.type: Str(linux)
+ -> otelcol.service.mode: Str(agent)
+ScopeSpans #0
+ScopeSpans SchemaURL:
+InstrumentationScope cinema.library 1.0.0
+InstrumentationScope attributes:
+ -> fintest.scope.attribute: Str(Starwars, LOTR)
+Span #0
+ Trace ID : 97fb4e5b13400b5689e3306da7cff077
+ Parent ID :
+ ID : 413358465e5b4f15
+ Name : /movie-validator
+ Kind : Server
+ Start time : 2025-03-06 11:49:00.431915 +0000 UTC
+ End time : 2025-03-06 11:49:01.431915 +0000 UTC
+ Status code : Ok
+ Status message : Success
+Attributes:
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(+1555-867-5309)
+ -> user.email: Str(george@deathstar.email)
+ -> user.password: Str(LOTR>StarWars1-2-3)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ -> payment.amount: Double(87.01)
+ {"otelcol.component.id": "debug", "otelcol.component.kind": "Exporter", "otelcol.signal": "traces"}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**Gateway ãã¹ãã³ãåŠçããããšã確èªãã**: Gateway ã¯åä¿¡ããã¹ãã³ãåŠçãããšã`gateway-traces.out` ãšããååã®ãã¡ã€ã«ã«ãã¬ãŒã¹ããŒã¿ãæžã蟌ã¿ãŸããã¹ãã³ãæ£åžžã«åŠçããããã©ããã¯ããã®ãã¡ã€ã«ã確èªããããšã§æ€èšŒã§ããŸãã
+
+**Tests ã¿ãŒããã«** ã§ `jq` ã³ãã³ãã䜿çšããŠãåã¹ãã³ã® `spanId` ããã¡ã€ã«å
ã®äœçœ®ãªã©ã®äž»èŠãªæ
å ±ãæœåºããŠè¡šç€ºããŸãããŸãã**Hostmetrics Receiver** ãã¹ãã³ã«è¿œå ãã屿§ãæœåºã§ããŸãã
+
+{{% tabs %}}
+{{% tab title="Inspect the Gateway Trace File" %}}
+
+```bash
+jq -c '.resourceSpans[] as $resource | $resource.scopeSpans[].spans[] | "Span \(input_line_number) found with spanId \(.spanId), hostname \($resource.resource.attributes[] | select(.key == "host.name") | .value.stringValue), os \($resource.resource.attributes[] | select(.key == "os.type") | .value.stringValue)"' ./gateway-traces.out
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```text
+"Span 1 found with spanId d71fe6316276f97d, hostname workshop-instance, os linux"
+"Span 2 found with spanId e8d19489232f8c2a, hostname workshop-instance, os linux"
+"Span 3 found with spanId 9dfaf22857a6bd05, hostname workshop-instance, os linux"
+"Span 4 found with spanId c7f544a4b5fef5fc, hostname workshop-instance, os linux"
+"Span 5 found with spanId 30bb49261315969d, hostname workshop-instance, os linux"
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-4-send-logs.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-4-send-logs.md
new file mode 100644
index 0000000000..cea7996de3
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/1-4-send-logs.md
@@ -0,0 +1,152 @@
+---
+title: 1.4 ãã°ã®éä¿¡
+linkTitle: 1.4 ãã°ã®éä¿¡
+weight: 5
+hidden: true
+draft: true
+---
+
+{{% exercise title="ãã€ãã©ã€ã³ãéããŠãã°ãéä¿¡ãã" %}}
+
+**ãã°ã®ããŒããžã§ãã¬ãŒã¿ãŒãèµ·åãã:** **Loadgen terminal** ãŠã£ã³ããŠã§ã次ã®ã³ãã³ããå®è¡ã㊠`loadgen` ãèµ·åããŸãã
+
+```bash
+../loadgen -logs
+```
+
+`quotes.log` ããã®ãã°ããŒã¿ã®é£ç¶ã¹ããªãŒã ãã**Agent** ãš **Gateway** ã®ãããã°ãã°ã«åºåãããŸãã
+
+```text { title="Agent/Gateway Debug Output" }
+Timestamp: 1970-01-01 00:00:00 +0000 UTC
+SeverityText:
+SeverityNumber: Unspecified(0)
+Body: Str(2025-03-06 15:18:32 [ERROR] - There is some good in this world, and it's worth fighting for. LOTR)
+Attributes:
+ -> log.file.path: Str(quotes.log)
+Trace ID:
+Span ID:
+Flags: 0
+LogRecord #1
+```
+
+**`loadgen` ã忢ãã**: **Loadgen terminal** ãŠã£ã³ããŠã§ã`Ctrl-C` ã䜿ã£ãŠ `loadgen` ã忢ããŸãã
+
+**Gateway ã®ç¢ºèª**: **Gateway** ã `./gateway-logs.out` ãã¡ã€ã«ãæžãåºããŠãããã確èªããŸãã
+
+ãã®æç¹ã§ããã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªã£ãŠããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.out
+âââ agent.yaml
+âââ gateway-logs.out # Output from the logs pipeline
+âââ gateway-metrics.out # Output from the metrics pipeline
+âââ gateway-traces.out # Output from the traces pipeline
+âââ gateway.yaml
+âââ quotes.log # File containing Random log lines
+```
+
+**ãã°è¡ã®ç¢ºèª**: `gateway-logs.out` å
ã®ãã°è¡ãã以äžã®ã¹ãããããšæ¯èŒããŠãã ããããã°ã®ãšã³ããªã«ããããŸã§ã¡ããªã¯ã¹ããã¬ãŒã¹ã®ããŒã¿ã§èŠãŠãããã®ãšåã屿§ãå«ãŸããŠããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="cat /gateway-logs.out" %}}
+
+```json
+{"resourceLogs":[{"resource":{"attributes":[{"key":"com.splunk.source","value":{"stringValue":"./quotes.log"}},{"key":"com.splunk.sourcetype","value":{"stringValue":"quotes"}},{"key":"host.name","value":{"stringValue":"workshop-instance"}},{"key":"os.type","value":{"stringValue":"linux"}},{"key":"otelcol.service.mode","value":{"stringValue":"gateway"}}]},"scopeLogs":[{"scope":{},"logRecords":[{"observedTimeUnixNano":"1741274312475540000","body":{"stringValue":"2025-03-06 15:18:32 [DEBUG] - All we have to decide is what to do with the time that is given us. LOTR"},"attributes":[{"key":"log.file.path","value":{"stringValue":"quotes.log"}}],"traceId":"","spanId":""},{"observedTimeUnixNano":"1741274312475560000","body":{"stringValue":"2025-03-06 15:18:32 [DEBUG] - Your focus determines your reality. SW"},"attributes":[{"key":"log.file.path","value":{"stringValue":"quotes.log"}}],"traceId":"","spanId":""}]}],"schemaUrl":"https://opentelemetry.io/schemas/1.6.1"}]}
+```
+
+{{% /tab %}}
+{{% tab title="cat ./gateway-logs.out | jq" %}}
+
+```json
+{
+ "resourceLogs": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "com.splunk.source",
+ "value": {
+ "stringValue": "./quotes.log"
+ }
+ },
+ {
+ "key": "com.splunk.sourcetype",
+ "value": {
+ "stringValue": "quotes"
+ }
+ },
+ {
+ "key": "host.name",
+ "value": {
+ "stringValue": "workshop-instance"
+ }
+ },
+ {
+ "key": "os.type",
+ "value": {
+ "stringValue": "linux"
+ }
+ },
+ {
+ "key": "otelcol.service.mode",
+ "value": {
+ "stringValue": "gateway"
+ }
+ }
+ ]
+ },
+ "scopeLogs": [
+ {
+ "scope": {},
+ "logRecords": [
+ {
+ "observedTimeUnixNano": "1741274312475540000",
+ "body": {
+ "stringValue": "2025-03-06 15:18:32 [DEBUG] - All we have to decide is what to do with the time that is given us. LOTR"
+ },
+ "attributes": [
+ {
+ "key": "log.file.path",
+ "value": {
+ "stringValue": "quotes.log"
+ }
+ }
+ ],
+ "traceId": "",
+ "spanId": ""
+ },
+ {
+ "observedTimeUnixNano": "1741274312475560000",
+ "body": {
+ "stringValue": "2025-03-06 15:18:32 [DEBUG] - Your focus determines your reality. SW"
+ },
+ "attributes": [
+ {
+ "key": "log.file.path",
+ "value": {
+ "stringValue": "quotes.log"
+ }
+ }
+ ],
+ "traceId": "",
+ "spanId": ""
+ }
+ ]
+ }
+ ],
+ "schemaUrl": "https://opentelemetry.io/schemas/1.6.1"
+ }
+ ]
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+ãã¹ãŠã®ãã°è¡ã« `"traceId":""` ãš `"spanId":""` ã®ç©ºã®ãã¬ãŒã¹ãã«ããŒãå«ãŸããŠããããšã«æ°ã¥ãããããããŸãããFileLog receiver ã¯ããããã®ãã£ãŒã«ãããã°è¡ã«ãŸã ååšããŠããªãå Žåã«ã®ã¿ããããã®ãã£ãŒã«ããè£å®ããŸããããšãã°ãOpenTelemetry ã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã©ã€ãã©ãªã§èšè£
ãããã¢ããªã±ãŒã·ã§ã³ããçæããããã°è¡ã§ããã°ããããã®ãã£ãŒã«ãã¯ãã§ã«å«ãŸããŠãããäžæžããããããšã¯ãããŸããã
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã**Agent** ãš **Gateway** ã®ããã»ã¹ã忢ããŠãã ããã
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/_index.md
new file mode 100644
index 0000000000..84f577dec1
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/1-agent-gateway/_index.md
@@ -0,0 +1,98 @@
+---
+title: 1. ãšãŒãžã§ã³ãèšå®ã®ç¢ºèª
+linkTitle: 1. ãšãŒãžã§ã³ãèšå®
+time: 15 minutes
+weight: 3
+---
+ããããïŒ ãã®ã»ã¯ã·ã§ã³ã§ã¯ã**Agent** ãš **Gateway** ã®äž¡æ¹ãå«ãå®å
šã«åäœãã OpenTelemetry ã®ã»ããã¢ããããå§ããŸãã
+
+ãŸãã¯èšå®ãã¡ã€ã«ããã£ãšç¢ºèªããå
šäœã®æ§é ãææ¡ãããšãšãã«ããã¬ã¡ããªãã€ãã©ã€ã³ãå¶åŸ¡ããéèŠãªã»ã¯ã·ã§ã³ã«æ³šç®ããŠãããŸãã
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+ã¯ãŒã¯ã·ã§ããå
šäœãéããŠãè€æ°ã®ã¿ãŒããã«ãŠã£ã³ããŠã䜿çšããŸããæŽçããããããããã«ãåã¿ãŒããã«ã«åºæã®ååãè²ãä»ããŠãã ãããããã«ãããæŒç¿äžã«ã¿ãŒããã«ãç°¡åã«èå¥ããŠåãæ¿ããããããã«ãªããŸãã
+
+ãããã®ã¿ãŒããã«ã¯ã**Agent**ã**Gateway**ã**Loadgen**ã**Test** ãšåŒã³ãŸãã
+{{% /notice %}}
+
+{{% exercise title="ãšãŒãžã§ã³ããã¡ã€ã«ã®ç¢ºèª" %}}
+
+1. æåã®ã¿ãŒããã«ãŠã£ã³ããŠãäœæãã**Agent** ãšããååãä»ããŸããæåã®æŒç¿çšã®ãã£ã¬ã¯ã㪠`[WORKSHOP]/1-agent-gateway` ã«ç§»åããå¿
èŠãªãã¡ã€ã«ãçæãããŠããããšã確èªããŸãã
+
+ ```bash
+ cd 1-agent-gateway
+ ls -l
+ ```
+
+2. ãã£ã¬ã¯ããªå
ã«ä»¥äžã®ãã¡ã€ã«ã衚瀺ãããã¯ãã§ãã衚瀺ãããªãå Žåã¯ã**Pre-requisites** ã»ã¯ã·ã§ã³ã®èª¬æã«åŸã£ãŠ `setup-workshop.sh` ã¹ã¯ãªãããåå®è¡ããŠãã ããã
+
+ ```text { title="Directory Structure" }
+ .
+ âââ agent.yaml
+ âââ gateway.yaml
+ ```
+
+{{% /exercise %}}
+
+## ãšãŒãžã§ã³ãèšå®ã®çè§£
+
+ãã®ã¯ãŒã¯ã·ã§ããã§äœ¿çšãã `agent.yaml` ãã¡ã€ã«ã®äž»èŠãªã³ã³ããŒãã³ãã確èªããŸããããã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ããµããŒãããããã«ããã€ãã®éèŠãªè¿œå ãè¡ã£ãŠããŸãã
+
+### Receivers
+
+`receivers` ã»ã¯ã·ã§ã³ã§ã¯ã**Agent** ãã©ã®ããã«ãã¬ã¡ããªããŒã¿ãåã蟌ãããå®çŸ©ããŸãããã®ã»ããã¢ããã§ã¯ã3 çš®é¡ã®ã¬ã·ãŒããŒãèšå®ãããŠããŸãã
+
+* **Host Metrics Receiver**
+
+ ```yaml
+ hostmetrics: # Host Metrics Receiver
+ collection_interval: 3600s # Collection Interval (1hr)
+ scrapers:
+ cpu: # CPU Scraper
+ ```
+
+ ããŒã«ã«ã·ã¹ãã ãã 1 æéããšã« CPU 䜿çšçãåéããŸããããã䜿ã£ãŠã¡ããªã¯ã¹ããŒã¿ã®ãµã³ãã«ãçæããŸãã
+
+* **OTLP Receiver (HTTP protocol)**
+
+ ```yaml
+ otlp: # OTLP Receiver
+ protocols:
+ http: # Configure HTTP protocol
+ endpoint: "0.0.0.0:4318" # Endpoint to bind to
+ ```
+
+ ãšãŒãžã§ã³ããããŒã `4318` ã§ HTTP çµç±ã§ã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ãåä¿¡ã§ããããã«ããŸããããã¯ä»åŸã®æŒç¿ã§ã³ã¬ã¯ã¿ãŒã«ããŒã¿ãéä¿¡ããããã«äœ¿çšãããŸãã
+
+* **FileLog Receiver**
+
+ ```yaml
+ filelog/quotes: # Receiver Type/Name
+ include: ./quotes.log # The file to read log data from
+ include_file_path: true # Include file path in the log data
+ include_file_name: false # Exclude file name from the log data
+ resource: # Add custom resource attributes
+ com.splunk.source: ./quotes.log # Source of the log data
+ com.splunk.sourcetype: quotes # Source type of the log data
+ ```
+
+ ãšãŒãžã§ã³ããããŒã«ã«ã®ãã°ãã¡ã€ã« (`quotes.log`) ã tail ãã`source` ã `sourceType` ãªã©ã®ã¡ã¿ããŒã¿ã§åŒ·åãããæ§é åãã°ã€ãã³ãã«å€æã§ããããã«ããŸãã
+
+### Exporters
+
+* **Debug Exporter**
+
+ ```yaml
+ debug: # Exporter Type
+ verbosity: detailed # Enabled detailed debug output
+ ```
+
+* **OTLPHTTP Exporter**
+
+ ```yaml
+ otlphttp: # Exporter Type
+ endpoint: "http://localhost:5318" # Gateway OTLP endpoint
+ ```
+
+ `debug` ãšã¯ã¹ããŒã¿ãŒã¯ãã¯ãŒã¯ã·ã§ããäžã®å¯èŠåãšãããã°ã®ããã«ã³ã³ãœãŒã«ã«ããŒã¿ãéä¿¡ãã`otlphttp` ãšã¯ã¹ããŒã¿ãŒã¯ãã¹ãŠã®ãã¬ã¡ããªãããŒã«ã«ã® **Gateway** ã€ã³ã¹ã¿ã³ã¹ã«è»¢éããŸãã
+
+ **ãã®äºéãšã¯ã¹ããŒãæŠç¥ã«ãããããŒã«ã«ã§çããŒã¿ã確èªããªãããäžæµã«éä¿¡ããŠãããªãåŠçãšãšã¯ã¹ããŒããè¡ãããšãã§ããŸãã**
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-1-configuration.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-1-configuration.md
new file mode 100644
index 0000000000..e25d7bc794
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-1-configuration.md
@@ -0,0 +1,100 @@
+---
+title: 2.1 File Storage ã®èšå®
+linkTitle: 2.1 èšå®
+weight: 1
+---
+
+ãã®æŒç¿ã§ã¯ã`agent.yaml` ãã¡ã€ã«ã® `extensions:` ã»ã¯ã·ã§ã³ãæŽæ°ããŸãããã®ã»ã¯ã·ã§ã³ã¯ OpenTelemetry ã®èšå® YAML ã®äžéšã§ãããOpenTelemetry Collector ã®åäœãæ¡åŒµãŸãã¯å€æŽããããã®ãªãã·ã§ã³ã³ã³ããŒãã³ããå®çŸ©ããŸãã
+
+ãããã®ã³ã³ããŒãã³ãã¯ãã¬ã¡ããªãŒããŒã¿ãçŽæ¥åŠçããããã§ã¯ãããŸããããCollector ã®æ©èœã匷åããããã®æçšãªæ©èœããµãŒãã¹ãæäŸããŸãã
+
+{{% exercise title="Agent ã« file storage ã远å ãã" %}}
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã `2-building-resilience` ãã£ã¬ã¯ããªã«ç§»åãã`clear` ã³ãã³ããå®è¡ããŠãã ããã**
+
+ãã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+**`agent.yaml` ãæŽæ°ãã**: **Agent ã¿ãŒããã«** ãŠã£ã³ããŠã§ãæ¢åã® `health_check` extension ã®äžã« `file_storage` extension ã远å ããŸãã
+
+```yaml
+ file_storage/checkpoint: # Extension Type/Name
+ directory: "./checkpoint-dir" # Define directory
+ create_directory: true # Create directory
+ timeout: 1s # Timeout for file operations
+ compaction: # Compaction settings
+ on_start: true # Start compaction at Collector startup
+ # Define compaction directory
+ directory: "./checkpoint-dir/tmp"
+ max_transaction_size: 65536 # Max. size limit before compaction occurs
+```
+
+**exporter ã« `file_storage` ã远å ãã**: `otlphttp` exporter ã倿ŽããŠãªãã©ã€ããã³ãã¥ãŒã€ã³ã°ã®ã¡ã«ããºã ãèšå®ããé害ãçºçããå Žåã«ããŒã¿ãä¿æããŠåéã§ããããã«ããŸãã`endpoint: "http://localhost:5318"` ã®äžã«ä»¥äžã远å ããã€ã³ãã³ãã `endpoint` ãšäžèŽããŠããããšã確èªããŠãã ããã
+
+```yaml
+ retry_on_failure:
+ enabled: true # Enable retry on failure
+ sending_queue: #
+ enabled: true # Enable sending queue
+ num_consumers: 10 # No. of consumers
+ queue_size: 10000 # Max. queue size
+ storage: file_storage/checkpoint # File storage extension
+```
+
+**`services` ã»ã¯ã·ã§ã³ãæŽæ°ãã**: æ¢åã® `extensions:` ã»ã¯ã·ã§ã³ã« `file_storage/checkpoint` extension ã远å ããŸããèšå®ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```yaml
+service:
+ extensions:
+ - health_check
+ - file_storage/checkpoint # Enabled extensions for this collector
+```
+
+**`metrics` ãã€ãã©ã€ã³ãæŽæ°ãã**: ãã®æŒç¿ã§ã¯ããããã°ããã³ãã°ã®ãã€ãºãæžããããã«ãMetric ãã€ãã©ã€ã³ãã `hostmetrics` receiver ãã³ã¡ã³ãã¢ãŠãããŸããèšå®ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```yaml
+ metrics:
+ receivers:
+ # - hostmetrics # Hostmetric reciever (cpu only)
+ - otlp
+```
+
+{{% /exercise %}}
+
+**[otelbin.io](https://www.otelbin.io/)** ã䜿çšã㊠**Agent** ã®èšå®ãæ€èšŒããŠãã ãããåèãšããŠããã€ãã©ã€ã³ã® `metrics:` ã»ã¯ã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸãã
+
+{{% mermaid %}}
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(resourcedetection
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2(otlphttp
fa:fa-upload):::exporter
+ EXP3( file
fa:fa-upload):::exporter
+ %% Links
+ subID1:::sub-metrics
+ subgraph " "
+ subgraph subID1["`**Metrics**`"]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PRO2
+ PRO2 --> PRO3
+ PRO3 --> EXP1
+ PRO3 --> EXP3
+ PRO3 --> EXP2
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-metrics stroke:#38bdf8,stroke-width:1px, color:#38bdf8,stroke-dasharray: 3 3;
+{{% /mermaid %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-2-test-environment.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-2-test-environment.md
new file mode 100644
index 0000000000..726b78c81d
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-2-test-environment.md
@@ -0,0 +1,32 @@
+---
+title: 2.2 ã¬ãžãªãšã³ã¹ãã¹ãç°å¢ã®ã»ããã¢ãã
+linkTitle: 2.2 ç°å¢ã®ã»ããã¢ãã
+weight: 2
+---
+
+次ã«ã**File Storage** æ§æããã¹ãããæºåãšããŠãç°å¢ãèšå®ããŠãããŸãã
+
+{{% exercise title="ã¬ãžãªãšã³ã¹ãã¹ãã®ã»ããã¢ãã" %}}
+
+**Gateway ãèµ·åãã**: **Gateway terminal** ãŠã£ã³ããŠã§ä»¥äžãå®è¡ããŸãã
+
+```bash { title="Start the Gateway" }
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãèµ·åãã**: **Agent terminal** ãŠã£ã³ããŠã§ä»¥äžãå®è¡ããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+**5 ã€ã®ãã¹ãã¹ãã³ãéä¿¡ãã**: **Loadgen terminal** ãŠã£ã³ããŠã§ä»¥äžãå®è¡ããŸãã
+
+```bash { title="Start Load Generator" }
+../loadgen -count 5
+```
+
+**Agent** ãš **Gateway** ã®äž¡æ¹ã§ãããã°ãã°ã衚瀺ããã**Gateway** ã«ãã£ãŠ `./gateway-traces.out` ãã¡ã€ã«ãäœæãããŸãã
+
+ãã¹ãŠãæ£ããåäœããŠããã°ãã·ã¹ãã ã®ã¬ãžãªãšã³ã¹ãã¹ãã«é²ãããšãã§ããŸãã
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-3-failure.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-3-failure.md
new file mode 100644
index 0000000000..13e8bb2fa0
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-3-failure.md
@@ -0,0 +1,40 @@
+---
+title: 2.3 é害ãã·ãã¥ã¬ãŒããã
+linkTitle: 2.3 é害ãã·ãã¥ã¬ãŒããã
+weight: 3
+---
+
+**Agent** ã®å埩åãè©äŸ¡ããããã«ã**Gateway** ã®äžæçãªé害ãã·ãã¥ã¬ãŒããã**Agent** ããããã©ã®ããã«åŠçãããã芳å¯ããŸãã
+
+{{% exercise title="Gateway ã®é害ãã·ãã¥ã¬ãŒããã" %}}
+
+**ãããã¯ãŒã¯é害ãã·ãã¥ã¬ãŒããã**: **Gateway terminal** ã§ `Ctrl-C` ã䜿ã£ãŠ **Gateway** ã忢ããã²ãŒããŠã§ã€ã®ã³ã³ãœãŒã«ã«åæ¢ãããšè¡šç€ºããããŸã§åŸ
ã¡ãŸãã**Agent** ã¯å®è¡ãç¶ç¶ããŸãããããŒã¿ãã²ãŒããŠã§ã€ã«éä¿¡ã§ããªããªããŸãã**Gateway terminal** ã®åºåã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text
+2025-07-09T10:22:37.941Z info service@v0.126.0/service.go:345 Shutdown complete. {"resource": {}}
+```
+
+**ãã¬ãŒã¹ãéä¿¡ãã**: **Loadgen terminal** ãŠã£ã³ããŠã§ `loadgen` ã䜿ã£ãŠããã« 5 ä»¶ã®ãã¬ãŒã¹ãéä¿¡ããŸãã
+
+```bash { title="Start Load Generator" }
+../loadgen -count 5
+```
+
+ãšãŒãžã§ã³ãã®ãªãã©ã€æ©æ§ãåäœããããŒã¿ã®åéãç¶ç¶çã«è©Šã¿ãŠããããšã«æ°ã¥ãã§ãããããšãŒãžã§ã³ãã®ã³ã³ãœãŒã«åºåã«ã¯ã次ã®ãããªã¡ãã»ãŒãžãç¹°ãè¿ã衚瀺ãããŸãã
+
+```text
+2025-01-28T14:22:47.020+0100 info internal/retry_sender.go:126 Exporting failed. Will retry the request after interval. {"kind": "exporter", "data_type": "traces", "name": "otlphttp", "error": "failed to make an HTTP request: Post \"http://localhost:5318/v1/traces\": dial tcp 127.0.0.1:5318: connect: connection refused", "interval": "9.471474933s"}
+```
+
+**Agent ã忢ãã**: **Agent terminal** ãŠã£ã³ããŠã§ `Ctrl-C` ã䜿ã£ãŠãšãŒãžã§ã³ãã忢ããŸãããšãŒãžã§ã³ãã®ã³ã³ãœãŒã«ã«åæ¢ã確èªããããŸã§åŸ
ã¡ãŸãã
+
+```text
+2025-07-09T10:25:59.344Z info service@v0.126.0/service.go:345 Shutdown complete. {"resource": {}}
+```
+
+{{% /exercise %}}
+
+> [!IMPORTANT]
+> ãšãŒãžã§ã³ãã忢ãããšããªãã©ã€ã®ããã«ã¡ã¢ãªã«ä¿æãããŠããã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ã¯å€±ãããŸãããã ããFileStorage Extension ãæ§æããŠãããããã¿ãŒã²ãããšã³ããã€ã³ãã«ãã£ãŠãŸã åãå
¥ããããŠããªããã¬ã¡ããªãŒã¯ãã¹ãŠãã£ã¹ã¯ã«å®å
šã«ãã§ãã¯ãã€ã³ããããŸãã
+>
+> ãšãŒãžã§ã³ãã忢ããããšã¯ããšãŒãžã§ã³ããåèµ·åãããéã«ã·ã¹ãã ãã©ã®ããã«å埩ããããæç¢ºã«ç€ºãããã®éèŠãªã¹ãããã§ãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-4-recovery.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-4-recovery.md
new file mode 100644
index 0000000000..f25751dbdd
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/2-4-recovery.md
@@ -0,0 +1,76 @@
+---
+title: 2.4 Recovery
+linkTitle: 2.4 Recovery
+weight: 4
+---
+
+ãã®ãšã¯ãµãµã€ãºã§ã¯ã**Gateway** Collector ãåèµ·åããããšã§ã**OpenTelemetry Collector** ããããã¯ãŒã¯é害ããã©ã®ããã«å埩ãããããã¹ãããŸãã**Gateway** ãåã³å©çšå¯èœã«ãªããšã**Agent** ã¯æåŸã®ãã§ãã¯ãã€ã³ãç¶æ
ããããŒã¿ã®éä¿¡ãåéããããŒã¿ãã¹ãçºçããªãããšãä¿èšŒããŸãã
+
+{{% exercise title="Restart and verify recovery" %}}
+
+**Gateway ãåèµ·åãã**: **Gateway terminal** ãŠã£ã³ããŠã§ä»¥äžãå®è¡ããŸã:
+
+```bash {title="Start the Gateway"}
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãåèµ·åãã**: **Agent terminal** ãŠã£ã³ããŠã§ä»¥äžãå®è¡ããŸã:
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+> **Agent** ãèµ·åãããšã**File_Storage** æ¡åŒµæ©èœã checkpoint ãã©ã«ããŒå
ã®ãããã¡ãããããŒã¿ãæ€åºããŸããæåŸã® checkpoint ãã©ã«ããŒããä¿åãããã¹ãã³ã®ããã¥ãŒãéå§ããããŒã¿ã倱ãããªãããšãä¿èšŒããŸãã
+
+**Agent ãããã°åºåã確èªãã:** **Agent** ã®ãããã°åºåã¯å€åããã以äžã®è¡ã衚瀺ããç¶ããæ°ããããŒã¿ããšã¯ã¹ããŒããããŠããªãããšã瀺ããŠããç¹ã«æ³šæããŠãã ãã:
+
+ ```text
+ 2025-07-11T08:31:58.176Z info service@v0.126.0/service.go:289 Everything is ready. Begin running and processing data. {"resource": {}}
+ ```
+
+**Gateway ãããã°åºåã芳å¯ãã**
+**Gateway** ã®ãããã°ç»é¢ããã远å ã®æäœãè¡ããªããŠãããããŸã§æ¬ èœããŠãããã¬ãŒã¹ã®åä¿¡ãéå§ããŠããããšã確èªã§ããã¯ãã§ããäŸ:
+
+ ```txt
+Attributes:
+ -> user.name: Str(Luke Skywalker)
+ -> user.phone_number: Str(+1555-867-5309)
+ -> user.email: Str(george@deathstar.email)
+ -> user.password: Str(LOTR>StarWars1-2-3)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ -> payment.amount: Double(75.75)
+ {"resource": {}, "otelcol.component.id": "debug", "otelcol.component.kind": "exporter", "otelcol.signal": "traces"}
+ ```
+
+**`gateway-traces.out` ãã¡ã€ã«ã確èªãã:** `jq` ã䜿çšããŠãåäœæããã `gateway-traces.out` å
ã®ãã¬ãŒã¹ã®æ°ãã«ãŠã³ãããŸãã**Gateway** ãããŠã³ããŠããéã«éä¿¡ããæ°ãšäžèŽããã¯ãã§ãã
+
+{{% tabs %}}
+{{% tab title="Check Gateway Traces Out File" %}}
+
+```bash
+jq '.resourceSpans | length | "\(.) resourceSpans found"' gateway-traces.out
+```
+
+{{% /tab %}}
+
+{{% tab title="Example output" %}}
+
+```text
+"5 resourceSpans found"
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+{{% /exercise %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã**Agent** ãš **Gateway** ã®ããã»ã¹ã忢ããŸãã
+
+### Conclusion
+
+ãã®ãšã¯ãµãµã€ãºã§ã¯ã`file_storage` æ¡åŒµæ©èœãæ§æãã`otlp` exporter ã®ãªãã©ã€æ©æ§ãæå¹åããäžæããŒã¿ä¿åçšã«ãã¡ã€ã«ããã¯ããã¥ãŒã䜿çšããããšã§ãOpenTelemetry Collector ã®ã¬ãžãªãšã³ã¹ã匷åããæ¹æ³ã宿ŒããŸããã
+
+ãã¡ã€ã«ããŒã¹ã®ãã§ãã¯ãã€ã³ããšãã¥ãŒã®æ°žç¶åãå®è£
ããããšã§ããã¬ã¡ããªãŒãã€ãã©ã€ã³ãäžæçãªäžæããæ£åžžã«å埩ã§ããããã«ãªããæ¬çªç°å¢åãã«ãããå
ç¢ã§ä¿¡é Œæ§ã®é«ããã®ã«ã§ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/_index.md
new file mode 100644
index 0000000000..b9cab17b17
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/2-building-resilience/_index.md
@@ -0,0 +1,19 @@
+---
+title: 2. Building In Resilience
+linkTitle: 2. Building Resilience
+time: 10 minutes
+weight: 4
+---
+
+OpenTelemetry Collector ã® [**FileStorage Extension**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/19bc7d6ee854c0c1b5c97d8d348e5b9d1199e8aa/extension/storage/filestorage/README.md) ã¯ãããå埩åã®ãããã¬ã¡ããªãŒãã€ãã©ã€ã³ãæ§ç¯ããããã®éèŠãªã³ã³ããŒãã³ãã§ãããã®æ©èœã«ãããCollector ã¯åŠçäžã®ããŒã¿ã確å®ã«ãã§ãã¯ãã€ã³ããããªãã©ã€ãå¹ççã«ç®¡çããäžæçãªé害çºçæã«ã貎éãªãã¬ã¡ããªãŒã倱ãããšãªãé©åã«å¯ŸåŠã§ããŸãã
+
+FileStorage ãæå¹ã«ãããšãCollector ã¯äžéç¶æ
ããã£ã¹ã¯ã«æ°žç¶åã§ããããããããã¯ãŒã¯ã®äžæãããã¯ãšã³ãã®åæ¢ããŸã㯠Collector ã®åèµ·åãçºçããŠãããã¬ãŒã¹ãã¡ããªã¯ã¹ããã°ã倱ãããªãããšãä¿èšŒãããŸããã€ãŸãããããã¯ãŒã¯æ¥ç¶ãåæãããããããã¯ãšã³ããäžæçã«å©çšäžå¯ã«ãªã£ããããŠããCollector ã¯ãã¬ã¡ããªãŒã®åä¿¡ãšãããã¡ãªã³ã°ãç¶ç¶ããæ¥ç¶ãåŸ©æ§æ¬¡ç¬¬ã·ãŒã ã¬ã¹ã«é
ä¿¡ãåéããŸãã
+
+FileStorage Extension ããã€ãã©ã€ã³ã«çµ±åããããšã§ããªãã¶ãŒãããªãã£ã¹ã¿ãã¯ã®èä¹
æ§ã匷åããæ¥ç¶ãäžå®å®ã«ãªããã¡ãªç°å¢ã«ãããŠããé«å質ãªãã¬ã¡ããªãŒã®åã蟌ã¿ãç¶æã§ããŸãã
+{{% notice note %}}
+
+ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãã¡ããªã¯ã¹ã«ã€ããŠã¯æ¥ç¶ã®ããŠã³ã¿ã€ã ãçæéïŒæå€§ 15 åïŒã§ããã°æ©èœããŸããããŠã³ã¿ã€ã ããããè¶
ãããšãSplunk Observability Cloud ã¯ããŒã¿ãã€ã³ãã®é åºãä¹±ããªãããã«ãããããããŒã¿ãç Žæ£ããå¯èœæ§ããããŸãã
+
+ãã°ã«ã€ããŠã¯ãä»åŸã® Splunk OpenTelemetry Collector ã®ãªãªãŒã¹ã§ããšã³ã¿ãŒãã©ã€ãºå¯Ÿå¿ã®å®å
šãªãœãªã¥ãŒã·ã§ã³ãå®è£
ããèšç»ããããŸãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/3-dropping-spans/3-1-configuration.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/3-dropping-spans/3-1-configuration.md
new file mode 100644
index 0000000000..96423889f3
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/3-dropping-spans/3-1-configuration.md
@@ -0,0 +1,73 @@
+---
+title: 3.1 Configuration
+linkTitle: 3.1 Configuration
+weight: 1
+---
+
+{{% exercise title="Add a `filter` processor" %}}
+
+**Gateway terminal** ãŠã£ã³ããŠã«åãæ¿ãã`gateway.yaml` ãã¡ã€ã«ãéããŸãã`processors` ã»ã¯ã·ã§ã³ã以äžã®èšå®ã§æŽæ°ããŸãã
+
+1. **`filter` ããã»ããµãŒã远å ãã**:
+ `/_healthz` ãšããååã® span ãé€å€ããããã« gateway ãæ§æããŸãã`error_mode: ignore` ãã£ã¬ã¯ãã£ãã¯ããã£ã«ã¿ãªã³ã°äžã«çºçãããšã©ãŒãç¡èŠããããšãä¿èšŒãããã€ãã©ã€ã³ãã¹ã ãŒãºã«å®è¡ããç¶ããããã«ããŸãã`traces` ã»ã¯ã·ã§ã³ã§ã¯ããã£ã«ã¿ãªã³ã°ã«ãŒã«ãå®çŸ©ããç¹ã« `/_healthz` ãšããååã® span ãé€å€å¯Ÿè±¡ãšããŠããŸãã
+
+ ```yaml
+ filter/health: # Defines a filter processor
+ error_mode: ignore # Ignore errors
+ traces: # Filtering rules for traces
+ span: # Exclude spans named "/_healthz"
+ - 'name == "/_healthz"'
+ ```
+
+2. **`filter` ããã»ããµãŒã `traces` ãã€ãã©ã€ã³ã«è¿œå ãã**:
+ `filter/health` ããã»ããµãŒã `traces` ãã€ãã©ã€ã³ã«å«ããŸããæé©ãªããã©ãŒãã³ã¹ãåŸãããã«ããã£ã«ã¿ãŒã¯ã§ããã ãæ©ãæ®µéãã€ãŸã `memory_limiter` ã®çŽåŸã`batch` ããã»ããµãŒã®åã«é
眮ããŸããèšå®ã¯ä»¥äžã®ããã«ãªããŸãã
+
+ ```yaml
+ traces:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - filter/health # Filters data based on rules
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - file/traces
+ ```
+
+ãã®èšå®ã«ããããã«ã¹ãã§ãã¯é¢é£ã® span (`/_healthz`) ããã€ãã©ã€ã³ã®æ©ã段éã§ãã£ã«ã¿ãªã³ã°ããããã¬ã¡ããªãŒããŒã¿å
ã®äžèŠãªãã€ãºãåæžãããŸãã
+
+{{% /exercise %}}
+
+**[otelbin.io](https://www.otelbin.io/)** ã䜿çšã㊠agent ã®æ§æãæ€èšŒããŸããåèãŸã§ã«ããã€ãã©ã€ã³ã® `traces:` ã»ã¯ã·ã§ã³ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(filter
fa:fa-microchip
health):::processor
+ PRO5(batch
fa:fa-microchip):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2( file
fa:fa-upload
traces):::exporter
+ %% Links
+ subID1:::sub-traces
+ subgraph " "
+ subgraph subID1["`**Traces**`"]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PRO4
+ PRO4 --> PRO3
+ PRO3 --> PRO5
+ PRO5 --> EXP1
+ PRO5 --> EXP2
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-traces stroke:#fbbf24,stroke-width:1px, color:#fbbf24,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/3-dropping-spans/3-2-test-filter.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/3-dropping-spans/3-2-test-filter.md
new file mode 100644
index 0000000000..9a66240fd2
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/3-dropping-spans/3-2-test-filter.md
@@ -0,0 +1,146 @@
+---
+title: 3.2 Filter Processor ã®ãã¹ã
+linkTitle: 3.2 Filter Processor ã®ãã¹ã
+weight: 2
+---
+
+èšå®ããã¹ãããã«ã¯ã`"/_healthz"` ãšããååã® span ãå«ããã¬ãŒã¹ããŒã¿ãçæããå¿
èŠããããŸãã
+
+{{% exercise title="span ããããããããŠããããšãæ€èšŒãã" %}}
+
+**Gateway ãèµ·åãã**: **Gateway terminal** ãŠã£ã³ããŠã§ **Gateway** ãèµ·åããŸãã
+
+```bash
+../otelcol --config ./gateway.yaml
+```
+
+**Agent ãèµ·åãã**: **Agent terminal** ãŠã£ã³ããŠã§ **Agent** ãèµ·åããŸãã
+
+```bash
+../otelcol --config ./agent.yaml
+```
+
+**Loadgen ãèµ·åãã**: **Loadgen terminal** ãŠã£ã³ããŠã§ã以äžã®ã³ãã³ããå®è¡ãããã«ã¹ãã§ã㯠span ãæå¹ã«ããç¶æ
ã§ããŒããžã§ãã¬ãŒã¿ãŒãèµ·åããŸãã
+
+```bash
+../loadgen -health -count 5
+```
+
+ **Agent terminal** ã®ãããã°åºåã« `_healthz` span ã衚瀺ãããŸãã
+
+ ```text
+ InstrumentationScope healthz 1.0.0
+Span #0
+ Trace ID : 0cce8759b5921c8f40b346b2f6e2f4b6
+ Parent ID :
+ ID : bc32bd0e4ddcb174
+ Name : /_healthz
+ Kind : Server
+ Start time : 2025-07-11 08:47:50.938703979 +0000 UTC
+ End time : 2025-07-11 08:47:51.938704091 +0000 UTC
+ Status code : Ok
+ Status message : Success
+```
+
+ãããã® span ã¯ãå
ã»ã©èšå®ãã filter processor ã«ãã£ãŠãããããããããã**Gateway** ã®ãããã°åºåã«ã¯çŸããŸããã
+
+**`agent.out` ãæ€èšŒãã**: **Test terminal** ã§ `jq` ã䜿çšããŠã**Agent** ãåä¿¡ãã span ã®ååã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="agent.out å
ã® span ã確èªãã" %}}
+
+```bash
+jq -c '.resourceSpans[].scopeSpans[].spans[] | "Span \(input_line_number) found with name \(.name)"' ./agent.out
+```
+
+{{% /tab %}}
+{{% tab title="åºåäŸ" %}}
+
+```text
+"Span 1 found with name /movie-validator"
+"Span 2 found with name /_healthz"
+"Span 3 found with name /movie-validator"
+"Span 4 found with name /_healthz"
+"Span 5 found with name /movie-validator"
+"Span 6 found with name /_healthz"
+"Span 7 found with name /movie-validator"
+"Span 8 found with name /_healthz"
+"Span 9 found with name /movie-validator"
+"Span 10 found with name /_healthz"
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**Gateway ã®ãããã°åºåã確èªãã**: `jq` ã䜿çšããŠã**Gateway** ãåä¿¡ãã span ã®ååã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="gateway-traces.out å
ã® span ã確èªãã" %}}
+
+```bash
+jq -c '.resourceSpans[].scopeSpans[].spans[] | "Span \(input_line_number) found with name \(.name)"' ./gateway-traces.out
+```
+
+{{% /tab %}}
+{{% tab title="åºåäŸ" %}}
+
+`gateway-metrics.out` ãã¡ã€ã«ã«ã¯ `/_healthz` ãšããååã® span ã¯å«ãŸããŸããã
+
+```text
+"Span 1 found with name /movie-validator"
+"Span 2 found with name /movie-validator"
+"Span 3 found with name /movie-validator"
+"Span 4 found with name /movie-validator"
+"Span 5 found with name /movie-validator"
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+{{% /exercise %}}
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+
+Filter processor ã§æé©ãªããã©ãŒãã³ã¹ãåŸãã«ã¯ãå
¥åããŒã¿ã®ãã©ãŒããããååã«çè§£ããèšå®ãå³å¯ã«ãã¹ãããŠãã ããã**ã§ããéãå
·äœçãªãã£ã«ã¿æ¡ä»¶ã䜿çš** ããããšã§ãéèŠãªããŒã¿ã誀ã£ãŠããããããŠããŸããªã¹ã¯ãæå°åã§ããŸãã
+
+ãã®èšå®ã¯ãããŸããŸãªå±æ§ãã¿ã°ããŸãã¯ã«ã¹ã¿ã æ¡ä»¶ã«åºã¥ã㊠span ããã£ã«ã¿ãªã³ã°ããããã«æ¡åŒµå¯èœã§ãç¹å®ã®ãªãã¶ãŒãããªãã£èŠä»¶ã«å¿ã㊠OpenTelemetry Collector ã®æè»æ§ãšå¹çæ§ãé«ããããŸãã
+{{% /notice %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒã㊠**Agent** ããã³ **Gateway** ããã»ã¹ã忢ããŠãã ããã
+
+
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/3-dropping-spans/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/3-dropping-spans/_index.md
new file mode 100644
index 0000000000..71b8bac8f3
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/3-dropping-spans/_index.md
@@ -0,0 +1,27 @@
+---
+title: 3. ã¹ãã³ã®ãããã
+linkTitle: 3. ã¹ãã³ã®ãããã
+time: 5 minutes
+weight: 5
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ã[**Filter Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/filterprocessor/README.md) ã䜿çšããŠãç¹å®ã®æ¡ä»¶ã«åºã¥ããŠã¹ãã³ãéžæçã«ããããããæ¹æ³ã確èªããŸãã
+
+å
·äœçã«ã¯ãã¹ãã³åã«åºã¥ããŠãã¬ãŒã¹ãããããããŸããããã¯ããã«ã¹ãã§ãã¯ãå
éšéä¿¡ãã¬ãŒã¹ãªã©ãäžèŠãªã¹ãã³ããã£ã«ã¿ãªã³ã°ããããã«ãã䜿çšãããŸããä»åã®ã±ãŒã¹ã§ã¯ã`"/_healthz"` ãå«ãã¹ãã³ããã£ã«ã¿ãªã³ã°ããŸããããã¯éåžžããã«ã¹ãã§ãã¯ãªã¯ãšã¹ãã«é¢é£ããŠãããäžè¬çã«éåžžã«ã**ãã€ãžãŒ**ãã§ãã
+
+{{% exercise title="`3-dropping-spans` ãã£ã¬ã¯ããªã®ã»ããã¢ãã" %}}
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã `3-dropping-spans` ãã£ã¬ã¯ããªã«å€æŽãã`clear` ã³ãã³ããå®è¡ããŠãã ããã**
+
+`2-building-resilience` ãã£ã¬ã¯ããªãã `*.yaml` ã `3-dropping-spans` ã«ã³ããŒããŸããæŽæ°åŸã®ãã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+{{% /exercise %}}
+
+次ã«ã**filter processor** ãšé¢é£ãããã€ãã©ã€ã³ãèšå®ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/4-1-configuration.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/4-1-configuration.md
new file mode 100644
index 0000000000..3aee4c6120
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/4-1-configuration.md
@@ -0,0 +1,120 @@
+---
+title: 4.1 Configuration
+linkTitle: 4.1 Configuration
+weight: 1
+---
+
+ãã®ã¹ãããã§ã¯ã`agent.yaml` ã倿Žã㊠`attributes` ããã»ããµãŒãš `redaction` ããã»ããµãŒã远å ããŸãããããã®ããã»ããµãŒã¯ãã¹ãã³å±æ§å
ã®æ©å¯ããŒã¿ããã°åºåããšã¯ã¹ããŒããããåã«ãé©åã«åŠçãããããã«ããã®ã«åœ¹ç«ã¡ãŸãã
+
+ãããŸã§ã«ãã³ã³ãœãŒã«ã«è¡šç€ºãããã¹ãã³å±æ§ã®äžã«ãå人æ
å ±ãæ©å¯ããŒã¿ãå«ãŸããŠããããšã«æ°ã¥ãããããããŸãããããã§ã¯ããããã®æ
å ±ã广çã«ãã£ã«ã¿ãªã³ã°ããããç·šé (redact) ãããããããã«å¿
èŠãªããã»ããµãŒãèšå®ããŠãããŸãã
+
+```text
+Attributes:
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(+1555-867-5309)
+ -> user.email: Str(george@deathstar.email)
+ -> user.account_password: Str(LOTR>StarWars1-2-3)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ {"kind": "exporter", "data_type": "traces", "name": "debug"}
+```
+
+{{% exercise title="attributes ããã»ããµãŒãš redaction ããã»ããµãŒã远å ãã" %}}
+
+**Agent ã¿ãŒããã«** ãŠã£ã³ããŠã«åãæ¿ããŠããšãã£ã¿ãŒã§ `agent.yaml` ãã¡ã€ã«ãéããŸãããã¬ã¡ããªãŒããŒã¿ã®ã»ãã¥ãªãã£ãšãã©ã€ãã·ãŒã匷åããããã2 ã€ã®ããã»ããµãŒã远å ããŸãã
+
+**1. `attributes` ããã»ããµãŒã®è¿œå **: [**Attributes Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/attributesprocessor) ã¯ãã¹ãã³å±æ§ (ã¿ã°) ã®å€ãæŽæ°ãåé€ãããã·ã¥åããããšã§å€æŽã§ããŸããããã¯ãæ©å¯æ
å ±ããšã¯ã¹ããŒãåã«é£èªåããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
+
+ãã®ã¹ãããã§ã¯ã以äžã®ããšãè¡ããŸãã
+
+1. `user.phone_number` 屿§ããåºå®å€ `("UNKNOWN NUMBER")` ã« **æŽæ°** ããŸãã
+2. `user.email` 屿§ã **ããã·ã¥å** ããŠãå
ã®ã¡ãŒã«ã¢ãã¬ã¹ãé²åºããªãããã«ããŸãã
+3. `user.password` 屿§ã **åé€** ããŠãã¹ãã³ããå®å
šã«åãé€ããŸãã
+
+```yaml
+ attributes/update:
+ actions: # Actions
+ - key: user.phone_number # Target key
+ action: update # Update action
+ value: "UNKNOWN NUMBER" # New value
+ - key: user.email # Target key
+ action: hash # Hash the email value
+ - key: user.password # Target key
+ action: delete # Delete the password
+ ```
+
+**2. `redaction` ããã»ããµãŒã®è¿œå **: [**Redaction Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/redactionprocessor) ã¯ãã¯ã¬ãžããã«ãŒãçªå·ããã®ä»ã®å人ãç¹å®ã§ããæ
å ± (PII) ãªã©ã®äºåå®çŸ©ããããã¿ãŒã³ã«åºã¥ããŠãã¹ãã³å±æ§å
ã®æ©å¯ããŒã¿ãæ€åºããç·šé (redact) ããŸãã
+
+ãã®ã¹ãããã§ã¯ã以äžãè¡ããŸãã
+
+- ãã¹ãŠã®å±æ§ãåŠçãããããã« `allow_all_keys: true` ãèšå®ããŸã (`false` ã«èšå®ããå Žåã¯ãæç€ºçã«èš±å¯ãããããŒã ããä¿æãããŸã)ã
+
+- **Visa** ããã³ **MasterCard** ã®ã¯ã¬ãžããã«ãŒãçªå·ãæ€åºãç·šéããããã®æ£èŠè¡šçŸãã`blocked_values` ã§å®çŸ©ããŸãã
+
+- `summary: debug` ãªãã·ã§ã³ãæå®ãããšãç·šéåŠçã«é¢ãã詳现æ
å ±ããããã°çšã«ãã°åºåãããŸãã
+
+```yaml
+ redaction/redact:
+ allow_all_keys: true # If false, only allowed keys will be retained
+ blocked_values: # List of regex patterns to block
+ - '\b4[0-9]{3}[\s-]?[0-9]{4}[\s-]?[0-9]{4}[\s-]?[0-9]{4}\b' # Visa
+ - '\b5[1-5][0-9]{2}[\s-]?[0-9]{4}[\s-]?[0-9]{4}[\s-]?[0-9]{4}\b' # MasterCard
+ summary: debug # Show debug details about redaction
+```
+
+**`traces` ãã€ãã©ã€ã³ãæŽæ°ãã**: äž¡æ¹ã®ããã»ããµãŒã `traces` ãã€ãã©ã€ã³ã«çµ±åããŸããæå㯠redaction ããã»ããµãŒãã³ã¡ã³ãã¢ãŠãããŠããããšãå¿ããªãã§ãã ãã (åŸã®å¥ã®æŒç¿ã§æå¹åããŸã)ãèšå®ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```yaml
+ traces:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - attributes/update # Update, hash, and remove attributes
+ #- redaction/redact # Redact sensitive fields using regex
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - file
+ - otlphttp
+```
+
+{{% /exercise %}}
+
+**[otelbin.io](https://www.otelbin.io/)** ã䜿çšããŠããšãŒãžã§ã³ãã®èšå®ãæ€èšŒããŸããåèãŸã§ã«ããã€ãã©ã€ã³ã® `traces:` ã»ã¯ã·ã§ã³ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRML(memory_limiter
fa:fa-microchip):::processor
+ PRRD(resourcedetection
fa:fa-microchip):::processor
+ PRRS(resource
fa:fa-microchip
add_mode):::processor
+ PRUP(attributes
fa:fa-microchip
update):::processor
+ EXP1(otlphttp
fa:fa-upload):::exporter
+ EXP2( debug
fa:fa-upload):::exporter
+ EXP3(file
fa:fa-upload):::exporter
+
+ %% Links
+ subID1:::sub-traces
+ subgraph " "
+ subgraph subID1["`**Traces**`"]
+ direction LR
+ REC1 --> PRML
+ PRML --> PRUP
+ PRUP --> PRRD
+ PRRD --> PRRS
+ PRRS --> EXP2
+ PRRS --> EXP3
+ PRRS --> EXP1
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-traces stroke:#fbbf24,stroke-width:1px, color:#fbbf24,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/4-2-test-delete-tag.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/4-2-test-delete-tag.md
new file mode 100644
index 0000000000..d4fbc7d2ce
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/4-2-test-delete-tag.md
@@ -0,0 +1,92 @@
+---
+title: 4.2 Attribute Processor ã®ãã¹ã
+linkTitle: 4.2 Attribute Processor ã®ãã¹ã
+weight: 2
+---
+
+ãã®æŒç¿ã§ã¯ã**Agent** ã«ãã£ãŠãšã¯ã¹ããŒããããåã®ã¹ãã³ããŒã¿ãã `user.account_password` ã**åé€**ãã`user.phone_number` **屿§**ã**æŽæ°**ãã`user.email` ã**ããã·ã¥å**ããŸãã
+
+{{% exercise title="attributes processor ããã¹ããã" %}}
+
+**Gateway ãèµ·åãã**: **Gateway ã¿ãŒããã«**ãŠã£ã³ããŠã§ **Gateway** ãèµ·åããŸãã
+
+```bash
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãèµ·åãã**: **Agent ã¿ãŒããã«**ãŠã£ã³ããŠã§ **Agent** ãèµ·åããŸãã
+
+```bash
+../otelcol --config=agent.yaml
+```
+
+**Load Generator ãèµ·åãã**: **Loadgen ã¿ãŒããã«**ãŠã£ã³ããŠã§ `loadgen` ãèµ·åããŸãã
+
+```bash
+../loadgen -count 1
+```
+
+**ãããã°åºåã確èªãã**: **Agent** ãš **Gateway** ã®äž¡æ¹ã§ã`user.account_password` ãåé€ããã`user.phone_number` ãš `user.email` ã®äž¡æ¹ãæŽæ°ãããŠããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="New Debug Output" %}}
+
+ ```text
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(UNKNOWN NUMBER)
+ -> user.email: Str(62d5e03d8fd5808e77aee5ebbd90cf7627a470ae0be9ffd10e8025a4ad0e1287)
+ -> payment.amount: Double(51.71)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ ```
+
+{{% /tab %}}
+{{% tab title="Original Debug Output" %}}
+
+ ```text
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(+1555-867-5309)
+ -> user.email: Str(george@deathstar.email)
+ -> user.password: Str(LOTR>StarWars1-2-3)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ -> payment.amount: Double(95.22)
+ ```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**ãã¡ã€ã«åºåã確èªãã**: `jq` ã䜿çšããŠã`gateway-taces.out` å
ã§ `user.account_password` ãåé€ããã`user.phone_number` ãš `user.email` ãæŽæ°ãããŠããããšãæ€èšŒããŸãã
+
+{{% tabs %}}
+{{% tab title="Validate attribute changes" %}}
+
+```bash
+jq '.resourceSpans[].scopeSpans[].spans[].attributes[] | select(.key == "user.password" or .key == "user.phone_number" or .key == "user.email") | {key: .key, value: .value.stringValue}' ./gateway-traces.out
+```
+
+{{% /tabs %}}
+{{% tab title="Output" %}}
+
+`user.account_password` ãåé€ããã`user.phone_number` ãš `user.email` ãæŽæ°ãããŠããããšã確èªããŸãã
+
+```json
+{
+ "key": "user.phone_number",
+ "value": "UNKNOWN NUMBER"
+}
+{
+ "key": "user.email",
+ "value": "62d5e03d8fd5808e77aee5ebbd90cf7627a470ae0be9ffd10e8025a4ad0e1287"
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã**Agent** ãš **Gateway** ã®ããã»ã¹ã忢ããŠãã ããã
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/4-3-test-redaction.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/4-3-test-redaction.md
new file mode 100644
index 0000000000..96b4c83ec3
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/4-3-test-redaction.md
@@ -0,0 +1,140 @@
+---
+title: 4.3 Redaction ããã»ããµãŒã®ãã¹ã
+linkTitle: 4.3 Redaction ããã»ããµãŒã®ãã¹ã
+weight: 3
+---
+
+`redaction` ããã»ããµãŒã¯ããã¬ã¡ããªãŒããŒã¿ãã **èš±å¯** ãŸã㯠**åé€** ãã屿§ãšå€ã现ããå¶åŸ¡ã§ããŸãã
+
+ãã®æŒç¿ã§ã¯ã**Agent** ããšã¯ã¹ããŒãããåã®ã¹ãã³ããŒã¿ã® `user.visa` ãš `user.mastercard` ã®å€ã **ãªãã¯ã·ã§ã³** ããŸãã
+{{% exercise title="redaction ããã»ããµãŒã®ãã¹ã" %}}
+
+**Gateway ãèµ·åãã**: **Gateway terminal** ãŠã£ã³ããŠã§ **Gateway** ãèµ·åããŸãã
+
+```bash
+../otelcol --config=gateway.yaml
+```
+
+**`redaction/redact` ããã»ããµãŒãæå¹ã«ãã**: **Agent terminal** ãŠã£ã³ããŠã§ `agent.yaml` ãç·šéããåã®æŒç¿ã§æ¿å
¥ãã `#` ãåé€ããŸãã
+
+```yaml
+ traces:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - attributes/update # Update, hash, and remove attributes
+ - redaction/redact # Redact sensitive fields using regex
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - file
+ - otlphttp
+```
+
+**Agent ãèµ·åãã**: **Agent terminal** ãŠã£ã³ããŠã§ **Agent** ãèµ·åããŸãã
+
+```bash
+../otelcol --config=agent.yaml
+```
+
+**Load Generator ãèµ·åãã**: **Loadgen terminal** ãŠã£ã³ããŠã§ `loadgen` ãèµ·åããŸãã
+
+```bash
+../loadgen -count 1
+```
+
+**ãããã°åºåã確èªãã**: **Agent** ãš **Gateway** ã®äž¡æ¹ã§ `user.visa` ãš `user.mastercard` ã®å€ãæŽæ°ãããŠããããšã確èªããŸãã`user.amex` 屿§ã®å€ã¯ `blocked_values` ã«äžèŽããæ£èŠè¡šçŸãã¿ãŒã³ã远å ãããŠããªãããã**ãªãã¯ã·ã§ã³ãããŠããªã** ããšã«æ³šæããŠãã ããã
+
+{{% tabs %}}
+{{% tab title="æ°ãããããã°åºå" %}}
+
+ ```text
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(UNKNOWN NUMBER)
+ -> user.email: Str(62d5e03d8fd5808e77aee5ebbd90cf7627a470ae0be9ffd10e8025a4ad0e1287)
+ -> payment.amount: Double(69.71)
+ -> user.visa: Str(****)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(****)
+ -> redaction.masked.keys: Str(user.mastercard,user.visa)
+ -> redaction.masked.count: Int(2)
+ ```
+
+{{% /tab %}}
+{{% tab title="å
ã®ãããã°åºå" %}}
+
+ ```text
+ -> user.name: Str(George Lucas)
+ -> user.phone_number: Str(+1555-867-5309)
+ -> user.email: Str(george@deathstar.email)
+ -> user.password: Str(LOTR>StarWars1-2-3)
+ -> user.visa: Str(4111 1111 1111 1111)
+ -> user.amex: Str(3782 822463 10005)
+ -> user.mastercard: Str(5555 5555 5555 4444)
+ -> payment.amount: Double(65.54)
+ ```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+{{% notice note %}}
+redaction ããã»ããµãŒã« `summary:debug` ãå«ãããšãã©ã®äžèŽããããŒã®å€ããªãã¯ã·ã§ã³ããããã«ã€ããŠã®æŠèŠæ
å ±ãšããã¹ã¯ãããå€ã®æ°ããããã°åºåã«å«ãŸããŸãã
+
+```text
+ -> redaction.masked.keys: Str(user.mastercard,user.visa)
+ -> redaction.masked.count: Int(2)
+ ```
+
+{{% /notice %}}
+
+**ãã¡ã€ã«åºåã確èªãã**: `jq` ã䜿çšããŠã`gateway-traces.out` å
ã® `user.visa` ãš `user.mastercard` ãæŽæ°ãããŠããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="屿§ã®å€æŽãæ€èšŒãã" %}}
+
+```bash
+jq '.resourceSpans[].scopeSpans[].spans[].attributes[] | select(.key == "user.visa" or .key == "user.mastercard" or .key == "user.amex") | {key: .key, value: .value.stringValue}' ./gateway-traces.out
+```
+
+{{% /tabs %}}
+{{% tab title="åºå" %}}
+
+`user.amex` 㯠`blocked_values` ã«äžèŽããæ£èŠè¡šçŸãã¿ãŒã³ã远å ãããŠããªãããããªãã¯ã·ã§ã³ãããŠããªãããšã«æ³šæããŠãã ããã
+
+```json
+{
+ "key": "user.visa",
+ "value": "****"
+}
+{
+ "key": "user.amex",
+ "value": "3782 822463 10005"
+}
+{
+ "key": "user.mastercard",
+ "value": "****"
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+ããã㯠`attributes` ããã»ããµãŒãš `redaction` ããã»ããµãŒãæ©å¯ããŒã¿ãä¿è·ããããã«èšå®å¯èœãªæ¹æ³ã®ã»ãã®äžäŸã§ãã
+
+{{% /exercise %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã**Agent** ãš **Gateway** ã®ããã»ã¹ã忢ããŠãã ããã
+
+
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/_index.md
new file mode 100644
index 0000000000..0e6a59ba27
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/4-sensitive-data/_index.md
@@ -0,0 +1,28 @@
+---
+title: 4. æ©å¯ããŒã¿ã®ç·šé
+linkTitle: 4. æ©å¯ããŒã¿
+time: 10 minutes
+weight: 6
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãOpenTelemetry Collector ãèšå®ããŠç¹å®ã®ã¿ã°ãåé€ãããã¬ã¡ããªã¹ãã³ããæ©å¯ããŒã¿ãç·šéããæ¹æ³ãåŠã³ãŸããããã¯ãã¯ã¬ãžããã«ãŒãçªå·ãå人ããŒã¿ããã®ä»ã»ãã¥ãªãã£é¢é£ã®è©³çްãªã©ãåŠçãŸãã¯éä¿¡ãããåã«å¿ååããå¿
èŠãããæ©å¯æ
å ±ãä¿è·ããããã«éèŠã§ãã
+
+OpenTelemetry Collector ã®äž»èŠãªããã»ããµãŒã®èšå®æ¹æ³ã確èªããŠãããŸããå
·äœçã«ã¯æ¬¡ã®ãšããã§ãã
+
+- **[Attributes Processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/attributesprocessor/README.md)**: ç¹å®ã®ã¹ãã³å±æ§ã倿ŽãŸãã¯åé€ããŸãã
+- [**Redaction Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/redactionprocessor/README.md): æ©å¯ããŒã¿ãä¿åãŸãã¯éä¿¡ãããåã«ãµãã¿ã€ãºãããŠããããšãä¿èšŒããŸãã
+
+{{% exercise title="`4-sensitive-data` ãã£ã¬ã¯ããªã®ã»ããã¢ãã" %}}
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã `4-sensitive-data` ãã£ã¬ã¯ããªã«ç§»åãã`clear` ã³ãã³ããå®è¡ããŠãã ããã**
+
+`3-dropping-spans` ãã£ã¬ã¯ããªãã `*.yaml` ã `4-sensitive-data` ã«ã³ããŒããŸããæŽæ°ããããã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/5-1-configuration.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/5-1-configuration.md
new file mode 100644
index 0000000000..203d3f74cb
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/5-1-configuration.md
@@ -0,0 +1,113 @@
+---
+title: 5.1 Configuration
+linkTitle: 5.1 Configuration
+weight: 1
+---
+
+{{% exercise title="`transform` ããã»ããµãŒã远å ãã" %}}
+**`transform` ããã»ããµãŒã远å ãã**: **Gateway terminal** ãŠã£ã³ããŠã«åãæ¿ã㊠`gateway.yaml` ãç·šéãã以äžã® `transform` ããã»ããµãŒã远å ããŸãã
+
+```yaml
+ transform/logs: # Processor Type/Name
+ log_statements: # Log Processing Statements
+ - context: resource # Log Context
+ statements: # List of attribute keys to keep
+ - keep_keys(attributes, ["com.splunk.sourcetype", "host.name", "otelcol.service.mode"])
+```
+
+`-context: resource` ããŒã䜿ãããšã§ããã°ã® `resourceLog` 屿§ã察象ãšããŠããŸãã
+
+ãã®èšå®ã«ãããé¢é£ãããªãœãŒã¹å±æ§ïŒ`com.splunk.sourcetype`ã`host.name`ã`otelcol.service.mode`ïŒã®ã¿ãä¿æããããã°ã®å¹çãåäžããäžèŠãªã¡ã¿ããŒã¿ãåæžãããŸãã
+
+**ãã°éèŠåºŠãããã³ã°çšã®ã³ã³ããã¹ããããã¯ã远å ãã**: ãã°ã¬ã³ãŒãã® `severity_text` ããã³ `severity_number` ãã£ãŒã«ããé©åã«èšå®ããããã`log_statements` å
ã« `log` ã³ã³ããã¹ããããã¯ã远å ããŸãããã®èšå®ã§ã¯ããã°æ¬æãã `level` å€ãæœåºã㊠`severity_text` ã«ãããã³ã°ãããã°ã¬ãã«ã«å¿ããŠå¯Ÿå¿ãã `severity_number` ãå²ãåœãŠãŸãã
+
+```yaml
+ - context: log # Log Context
+ statements: # Transform Statements Array
+ - set(cache, ParseJSON(body)) where IsMatch(body, "^\\{") # Parse JSON log body into a cache object
+ - flatten(cache, "") # Flatten nested JSON structure
+ - merge_maps(attributes, cache, "upsert") # Merge cache into attributes, updating existing keys
+ - set(severity_text, attributes["level"]) # Set severity_text from the "level" attribute
+ - set(severity_number, 1) where severity_text == "TRACE" # Map severity_text to severity_number
+ - set(severity_number, 5) where severity_text == "DEBUG"
+ - set(severity_number, 9) where severity_text == "INFO"
+ - set(severity_number, 13) where severity_text == "WARN"
+ - set(severity_number, 17) where severity_text == "ERROR"
+ - set(severity_number, 21) where severity_text == "FATAL"
+```
+
+`merge_maps` 颿°ã¯ã2ã€ã®ãããïŒèŸæžïŒã1ã€ã«çµåããããã«äœ¿çšããŸããããã§ã¯ã`cache` ãªããžã§ã¯ãïŒãã°æ¬æããè§£æããã JSON ããŒã¿ãå«ãïŒã `attributes` ãããã«çµåããŸãã
+
+- **ãã©ã¡ãŒã¿**:
+ - `attributes`: ããŒã¿ã®çµåå
ãšãªãã¿ãŒã²ãããããã
+ - `cache`: è§£æããã JSON ããŒã¿ãå«ããœãŒã¹ãããã
+ - `"upsert"`: ãã®ã¢ãŒãã§ã¯ã`attributes` ãããå
ã«æ¢ã«ååšããããŒãããã°ããã®å€ã `cache` ã®å€ã§æŽæ°ãããŸããããŒãååšããªãå Žåã¯æ°ãã«æ¿å
¥ãããŸãã
+
+ãã®ã¹ãããã¯éèŠã§ãããªããªãããã°æ¬æã®é¢é£ãã£ãŒã«ãïŒäŸ: `level`ã`message` ãªã©ïŒããã¹ãŠ `attributes` ãããã«è¿œå ãããåŸç¶ã®åŠçããšã¯ã¹ããŒãã§å©çšã§ããããã«ãªãããã§ãã
+
+**äž»èŠãªå€æåŠçã®ãŸãšã**:
+
+- **Parse JSON**: ãã°æ¬æããæ§é åããŒã¿ãæœåºããŸãã
+- **Flatten JSON**: ãã¹ãããã JSON ãªããžã§ã¯ãããã©ãããªæ§é ã«å€æããŸãã
+- **Merge Attributes**: æœåºãããããŒã¿ããã°å±æ§ã«çµ±åããŸãã
+- **Map Severity Text**: ãã°ã® level 屿§ãã severity_text ãå²ãåœãŠãŸãã
+- **Assign Severity Numbers**: éèŠåºŠã¬ãã«ãæšæºåãããæ°å€ã«å€æããŸãã
+
+> [!IMPORTANT]
+> `transform` ããã»ããµãŒã¯ **1ã€ã ã** æã¡ããã®äžã«2ã€ã®ã³ã³ããã¹ããããã¯ïŒäžæ¹ã¯ `resource` çšãããäžæ¹ã¯ `log` çšïŒãå«ããå¿
èŠããããŸãã
+
+ãã®èšå®ã«ããããã°ã®éèŠåºŠãæ£ããæœåºãæšæºåãæ§é åãããå¹ççãªåŠçãå¯èœã«ãªããŸãã
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+ãã¹ãŠã® JSON ãã£ãŒã«ãããããã¬ãã«å±æ§ã«ãããã³ã°ãããã®æ¹æ³ã¯ã**OTTL ã®ãã¹ãããã³ãããã°ç®çã®ã¿** ã§äœ¿çšããŠãã ãããæ¬çªç°å¢ã§ã¯é«ã«ãŒãã£ããªãã£ãåŒãèµ·ãããŸãã
+{{% /notice %}}
+
+**`logs` ãã€ãã©ã€ã³ãæŽæ°ãã**: `logs:` ãã€ãã©ã€ã³ã« `transform/logs:` ããã»ããµãŒã远å ããèšå®ã以äžã®ããã«ãªãããã«ããŸãã
+
+```yaml
+ logs: # Logs pipeline
+ receivers:
+ - otlp # OTLP receiver
+ processors: # Processors for logs
+ - memory_limiter
+ - resource/add_mode
+ - transform/logs
+ - batch
+ exporters:
+ - debug # Debug exporter
+ - file/logs
+```
+
+{{% /exercise %}}
+
+ãšãŒãžã§ã³ãã®èšå®ã [**https://otelbin.io**](https://otelbin.io/) ã§æ€èšŒããŠãã ãããåèãŸã§ã«ããã€ãã©ã€ã³ã® `logs:` ã»ã¯ã·ã§ã³ã¯ä»¥äžã®ããã«ãªããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(transform
fa:fa-microchip
logs):::processor
+ PRO5(batch
fa:fa-microchip):::processor
+ EXP1(file
fa:fa-upload
logs):::exporter
+ EXP2( debug
fa:fa-upload):::exporter
+ %% Links
+ subID1:::sub-logs
+ subgraph " "
+ subgraph subID1["`**Logs**`"]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PRO3
+ PRO3 --> PRO4
+ PRO4 --> PRO5
+ PRO5 --> EXP2
+ PRO5 --> EXP1
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-logs stroke:#34d399,stroke-width:1px, color:#34d399,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/5-2-setup.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/5-2-setup.md
new file mode 100644
index 0000000000..6510361df6
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/5-2-setup.md
@@ -0,0 +1,29 @@
+---
+title: 5.2 ç°å¢ã®ã»ããã¢ãã
+linkTitle: 5.2 ç°å¢ã®ã»ããã¢ãã
+weight: 2
+---
+
+{{% exercise title="transform ãã¹ãã®ã»ããã¢ãã" %}}
+
+**Gateway ãèµ·åãã**: **Gateway terminal** ã§ä»¥äžãå®è¡ããŸãã
+
+```bash { title="Start the Gateway" }
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãèµ·åãã**: **Agent terminal** ã§ä»¥äžãå®è¡ããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+**Load Generator ãèµ·åãã**: **Loadgen terminal** ãŠã£ã³ããŠã§ã**JSON ãæå¹å** ããç¶æ
ã§ä»¥äžã®ã³ãã³ããå®è¡ããããŒããžã§ãã¬ãŒã¿ãŒãèµ·åããŸãã
+
+```bash { title="Log Generator" }
+../loadgen -logs -json -count 5
+```
+
+`loadgen` 㯠JSON 圢åŒã§ 5 è¡ã®ãã°ã `./quotes.log` ã«æžã蟌ã¿ãŸãã
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/5-3-test-transform.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/5-3-test-transform.md
new file mode 100644
index 0000000000..b3de7b96d3
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/5-3-test-transform.md
@@ -0,0 +1,129 @@
+---
+title: 5.3 Test Transform Processor
+linkTitle: 5.3 Test Transform Processor
+weight: 3
+---
+
+ãã®ãã¹ãã§ã¯ã**Agent** ã«ãã£ãŠãšã¯ã¹ããŒããããåã«ã`com.splunk/source` ããã³ `os.type` ã¡ã¿ããŒã¿ããã°ã®ãªãœãŒã¹å±æ§ãã **åé€** ãããŠããããšã確èªããŸããããã«ããã®ãã¹ãã§ã¯ä»¥äžã確èªããŸãã
+
+1. ãã°æ¬æãè§£æãããé倧床æ
å ±ãæœåºãããŠããããšã
+ - `SeverityText` ããã³ `SeverityNumber` ã `LogRecord` ã«èšå®ãããŠããããšã
+2. ãã°æ¬æã® JSON ãã£ãŒã«ãããã°ã® `attributes` ã«ææ ŒãããŠããããšã
+
+ããã«ããããšã¯ã¹ããŒãåã«é©åãªã¡ã¿ããŒã¿ã®ãã£ã«ã¿ãªã³ã°ãé倧床ã®ãããã³ã°ãæ§é åãã°ã®ãšã³ãªããã¡ã³ããè¡ãããããšãä¿èšŒãããŸãã
+
+{{% exercise title="屿§ãåé€ãããŠããããšã確èªãã" %}}
+
+**ãããã°åºåã確èªãã**: **Agent** ãš **Gateway** ã®äž¡æ¹ã§ã`com.splunk/source` ããã³ `os.type` ãåé€ãããŠããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="Gateway Debug Output" %}}
+
+ ```text
+Resource attributes:
+ -> com.splunk.sourcetype: Str(quotes)
+ -> host.name: Str(workshop-instance)
+ -> otelcol.service.mode: Str(agent)
+ ```
+
+{{% /tab %}}
+{{% tab title="Agent Debug Output" %}}
+
+ ```text
+Resource attributes:
+ -> com.splunk.source: Str(./quotes.log)
+ -> com.splunk.sourcetype: Str(quotes)
+ -> host.name: Str(workshop-instance)
+ -> os.type: Str(linux)
+ -> otelcol.service.mode: Str(agent)
+ ```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**Agent** ãš **Gateway** ã®äž¡æ¹ã§ã`LogRecord` ã® `SeverityText` ããã³ `SeverityNumber` ããã°æ¬æã®é倧床 `level` ãçšããŠå®çŸ©ãããŠããããšã確èªããŸããæ¬æã® JSON ãã£ãŒã«ããããããã¬ãã«ã®ãã° `Attributes` ãšããŠã¢ã¯ã»ã¹ã§ããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="Gateway Debug Output" %}}
+
+```text
+
+SeverityText: WARN
+SeverityNumber: Warn(13)
+Body: Str({"level":"WARN","message":"Your focus determines your reality.","movie":"SW","timestamp":"2025-03-07 11:17:26"})
+Attributes:
+ -> log.file.path: Str(quotes.log)
+ -> level: Str(WARN)
+ -> message: Str(Your focus determines your reality.)
+ -> movie: Str(SW)
+ -> timestamp: Str(2025-03-07 11:17:26)
+
+```
+
+{{% /tab %}}
+{{% tab title="Agemt Debug Output" %}}
+
+```text
+
+SeverityText:
+SeverityNumber: Unspecified(0)
+Body: Str({"level":"WARN","message":"Your focus determines your reality.","movie":"SW","timestamp":"2025-03-07 11:17:26"})
+Attributes:
+ -> log.file.path: Str(quotes.log)
+
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+**ãã¡ã€ã«åºåã確èªãã**: æ°ãã `gateway-logs.out` ãã¡ã€ã«ã§ãããŒã¿ã倿ãããŠããããšã確èªããŸãã
+
+{{% tabs %}}
+{{% tab title="jq Query" %}}
+
+```bash
+jq '[.resourceLogs[].scopeLogs[].logRecords[] | {severityText, severityNumber, body: .body.stringValue}]' gateway-logs.out
+```
+
+{{% /tabs %}}
+{{% tab title="Example Output" %}}
+
+```json
+[
+ {
+ "severityText": "DEBUG",
+ "severityNumber": 5,
+ "body": "{\"level\":\"DEBUG\",\"message\":\"All we have to decide is what to do with the time that is given us.\",\"movie\":\"LOTR\",\"timestamp\":\"2025-03-07 11:56:29\"}"
+ },
+ {
+ "severityText": "WARN",
+ "severityNumber": 13,
+ "body": "{\"level\":\"WARN\",\"message\":\"The Force will be with you. Always.\",\"movie\":\"SW\",\"timestamp\":\"2025-03-07 11:56:29\"}"
+ },
+ {
+ "severityText": "ERROR",
+ "severityNumber": 17,
+ "body": "{\"level\":\"ERROR\",\"message\":\"One does not simply walk into Mordor.\",\"movie\":\"LOTR\",\"timestamp\":\"2025-03-07 11:56:29\"}"
+ },
+ {
+ "severityText": "DEBUG",
+ "severityNumber": 5,
+ "body": "{\"level\":\"DEBUG\",\"message\":\"Do or do not, there is no try.\",\"movie\":\"SW\",\"timestamp\":\"2025-03-07 11:56:29\"}"
+ }
+]
+[
+ {
+ "severityText": "ERROR",
+ "severityNumber": 17,
+ "body": "{\"level\":\"ERROR\",\"message\":\"There is some good in this world, and it's worth fighting for.\",\"movie\":\"LOTR\",\"timestamp\":\"2025-03-07 11:56:29\"}"
+ }
+]
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+{{% /exercise %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã**Agent** ãš **Gateway** ããã»ã¹ã忢ããŠãã ããã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/_index.md
new file mode 100644
index 0000000000..d0636ca5c7
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/5-transform-data/_index.md
@@ -0,0 +1,39 @@
+---
+title: 5. Transform Data
+linkTitle: 5. Transform Data
+time: 10 minutes
+weight: 7
+---
+
+[**Transform Processor**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/transformprocessor/README.md) ã䜿ããšããã°ãã¡ããªã¯ã¹ããã¬ãŒã¹ãªã©ã®ãã¬ã¡ããªãŒããŒã¿ããã€ãã©ã€ã³ãæµããéã«å€æŽã§ããŸãã**OpenTelemetry Transformation Language (OTTL)** ã䜿çšããããšã§ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã«è§ŠããããšãªããããŒã¿ã®ãã£ã«ã¿ãªã³ã°ããšã³ãªããã¡ã³ãã倿ããã®å Žã§å®è¡ã§ããŸãã
+
+ãã®æŒç¿ã§ã¯ã`gateway.yaml` ãæŽæ°ã㊠**Transform Processor** ãçµã¿èŸŒã¿ã以äžã®åŠçãè¡ããŸãã
+
+- ãã°ã®ãªãœãŒã¹å±æ§ã**ãã£ã«ã¿ãªã³ã°**ããŸãã
+- JSON æ§é åãã°ããŒã¿ã**ããŒã¹**ããŠå±æ§ã«å€æããŸãã
+- ãã°ã¡ãã»ãŒãžæ¬æã«åºã¥ããŠãã°ã®ã·ããªãã£ã¬ãã«ã**èšå®**ããŸãã
+
+ãããŸã§ã®ãã°ã§ã¯ã`SeverityText` ã `SeverityNumber` ãšãã£ããã£ãŒã«ããæªå®çŸ©ã«ãªã£ãŠããããšã«æ°ã¥ãããããããŸããããã㯠`filelog` ã¬ã·ãŒããŒã®å
žåçãªæåã§ãããã ããã·ããªãã£ã¯ãã°æ¬æã®äžã«åã蟌ãŸããŠããŸããäŸãã°æ¬¡ã®ãããªåœ¢åŒã§ãã
+
+```text
+SeverityText:
+SeverityNumber: Unspecified(0)
+Body: Str(2025-01-31 15:49:29 [WARN] - Do or do not, there is no try.)
+```
+
+ãã°ã«ã¯ããã°æ¬æå
ã« JSON ãšããŠãšã³ã³ãŒããããæ§é åããŒã¿ãå«ãŸããŠããããšããããããŸãããããã®ãã£ãŒã«ãã屿§ãšããŠæœåºããããšã§ãã€ã³ããã¯ã¹äœæããã£ã«ã¿ãªã³ã°ãã¯ãšãªã®å¹çãåäžããŸããäžæµã·ã¹ãã ã§ JSON ãæäœæ¥ã§ããŒã¹ãã代ããã«ãOTTL ã䜿ãã°ãã¬ã¡ããªãŒãã€ãã©ã€ã³ã¬ãã«ã§èªåçã«å€æã§ããŸãã
+
+{{% exercise title="Set up the `5-transform-data` directory" %}}
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã§ `5-transform-data` ãã£ã¬ã¯ããªã«ç§»åãã`clear` ã³ãã³ããå®è¡ããŠãã ããã**
+
+`4-sensitve-data` ãã£ã¬ã¯ããªãã `*.yaml` ã `5-transform-data` ã«ã³ããŒããŸããæŽæ°åŸã®ãã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/6-1-connector.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/6-1-connector.md
new file mode 100644
index 0000000000..2751a3befb
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/6-1-connector.md
@@ -0,0 +1,40 @@
+---
+title: 6.1 Routing Connector ã®èšå®
+linkTitle: 6.1 Routing ã®èšå®
+weight: 1
+---
+
+ãã®æŒç¿ã§ã¯ã`gateway.yaml` å
ã§ **Routing Connector** ãèšå®ããŸããRouting Connector ã¯ã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ãä»»æã®å±æ§ã«åºã¥ããŠã«ãŒãã£ã³ã°ã§ããŸãããããã§ã¯ `deployment.environment` 屿§ã«åºã¥ããã¬ãŒã¹ã®ã«ãŒãã£ã³ã°ã«çµã£ãŠæ±ããŸãïŒä»»æã® span / log / metric 屿§ã䜿çšå¯èœã§ãïŒã
+
+{{% exercise title="Configure the routing connector" %}}
+
+**æ°ãã `file` exporter ã远å ããŸã**: `routing` connector ã¯ã«ãŒãã£ã³ã°å
ãšããŠè€æ°ã®ã¿ãŒã²ãããå¿
èŠãšããŸãã**Gateway ã¿ãŒããã«**ã§ã`gateway.yaml` ã® `exporters` ã»ã¯ã·ã§ã³ã«ãããŒã¿ãæ£ããæ¯ãåããããããã`file/traces/route1-regular` ãš `file/traces/route2-security` ã® 2 ã€ã®æ°ãã file exporter ãäœæããŸãã
+
+```yaml
+ file/traces/route1-regular: # Exporter for regular traces
+ path: "./gateway-traces-route1-regular.out" # Path for saving trace data
+ append: false # Overwrite the file each time
+ file/traces/route2-security: # Exporter for security traces
+ path: "./gateway-traces-route2-security.out" # Path for saving trace data
+ append: false # Overwrite the file each time
+```
+
+`routing` connector ã远å ããŠ**ã«ãŒãã£ã³ã°ãæå¹å**ããŸããOpenTelemetry ã®èšå®ãã¡ã€ã«ã§ã¯ã`connectors` 㯠receivers ã processors ãšåæ§ã«å°çšã®ã»ã¯ã·ã§ã³ãæã£ãŠããŸãã
+
+`#connectors:` ã»ã¯ã·ã§ã³ãèŠã€ããŠã³ã¡ã³ãã¢ãŠããè§£é€ããŸããæ¬¡ã«ã`connectors:` ã»ã¯ã·ã§ã³ã®äžã«ä»¥äžã远å ããŸãã
+
+```yaml
+ routing:
+ default_pipelines: [traces/route1-regular] # Default pipeline if no rule matches
+ error_mode: ignore # Ignore errors in routing
+ table: # Define routing rules
+ # Routes spans to a target pipeline if the resourceSpan attribute matches the rule
+ - statement: route() where attributes["deployment.environment"] == "security-applications"
+ pipelines: [traces/route2-security] # Security target pipeline
+```
+
+{{% /exercise %}}
+
+èšå®ãã¡ã€ã«å
ã® default pipeline 㯠Catch all ãšããŠæ©èœããŸããããã¯ã«ãŒãã£ã³ã°ã«ãŒã«ããŒãã«å
ã®ã©ã®ã«ãŒã«ã«ãäžèŽããªãããŒã¿ïŒããã§ã¯ spanïŒã«å¯Ÿããã«ãŒãã£ã³ã°å
ãšãªããŸãããã®ããŒãã«ã§ã¯ã次ã®ã«ãŒã« `["deployment.environment"] == "security-applications"` ã«äžèŽãã span ã®ã«ãŒãã£ã³ã°å
ãšãªã pipeline ãå®çŸ©ããŠããŸãã
+
+`routing` ã®èšå®ãå®äºããããæ¬¡ã®ã¹ãããã§ã¯ãããã®ã«ãŒãã£ã³ã°ã«ãŒã«ãé©çšããããã« `pipelines` ãèšå®ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/6-2-pipelines.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/6-2-pipelines.md
new file mode 100644
index 0000000000..ffe0383fe3
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/6-2-pipelines.md
@@ -0,0 +1,107 @@
+---
+title: 6.2 ãã€ãã©ã€ã³ã®æ§æ
+linkTitle: 6.2 ãã€ãã©ã€ã³ã®æ§æ
+weight: 2
+---
+
+{{% exercise title="ã«ãŒãã£ã³ã°ãã€ãã©ã€ã³ãæ¥ç¶ãã" %}}
+
+**å
ã® `traces` ãã€ãã©ã€ã³ãã«ãŒãã£ã³ã°ã䜿çšããããã«æŽæ°ããŸã**:
+
+1. `routing` ãæå¹ã«ãããããå
ã® `traces` ãã€ãã©ã€ã³ãæŽæ°ã㊠`routing` ãå¯äžã®ãšã¯ã¹ããŒã¿ãŒãšããŠäœ¿çšããŸããããã«ããããã¹ãŠã®ã¹ãã³ããŒã¿ãè©äŸ¡ã®ããã« **Routing Connector** ãééãããã®åŸæ¥ç¶ããããã€ãã©ã€ã³ãžéãããŸãããŸãã**ãã¹ãŠã®** ããã»ããµãŒãåé€ãã空ã®é
åïŒ`[]`ïŒã«çœ®ãæããŸããããã㯠`traces/route1-regular` ããã³ `traces/route2-security` ãã€ãã©ã€ã³ã§åŠçãããããããã®ã«ãŒãã§ã«ã¹ã¿ã ã®åäœãå®çŸã§ããããã«ãªããŸãã`traces:` ã®æ§æã¯ä»¥äžã®ããã«ãªããŸã:
+
+ ```yaml
+ traces: # Traces pipeline
+ receivers:
+ - otlp # OTLP receiver
+ processors: [] # Processors for traces
+ exporters:
+ - routing
+ ```
+
+**æ¢åã® `traces` ãã€ãã©ã€ã³ã®äžã«ã`route1-regular` ãš `route2-security` ã®äž¡æ¹ã®ãã¬ãŒã¹ãã€ãã©ã€ã³ã远å ããŸã**:
+
+1. **Route1-regular ãã€ãã©ã€ã³ãæ§æãã**: ãã®ãã€ãã©ã€ã³ã¯ãã³ãã¯ã¿ãŒå
ã®ã«ãŒãã£ã³ã°ããŒãã«ã§ **äžèŽããªãã£ã** ãã¹ãŠã®ã¹ãã³ãåŠçããŸãã
+ããã¯å¯äžã®ã¬ã·ãŒããŒãšã㊠`routing` ã䜿çšããŠãããå
ã®ãã¬ãŒã¹ãã€ãã©ã€ã³ãã `connection` ãéããŠããŒã¿ãåãåãç¹ã«æ³šç®ããŠãã ããã
+
+ ```yaml
+ traces/route1-regular: # Default pipeline for unmatched spans
+ receivers:
+ - routing # Receive data from the routing connector
+ processors:
+ - memory_limiter # Memory Limiter Processor
+ - resource/add_mode # Adds collector mode metadata
+ - batch
+ exporters:
+ - debug # Debug Exporter
+ - file/traces/route1-regular # File Exporter for unmatched spans
+ ```
+
+2. **route2-security ãã€ãã©ã€ã³ã远å ãã**: ãã®ãã€ãã©ã€ã³ã¯ãã«ãŒãã£ã³ã°ã«ãŒã« `"[deployment.environment"] == "security-applications"` ã«äžèŽãããã¹ãŠã®ã¹ãã³ãåŠçããŸãããã®ãã€ãã©ã€ã³ãã¬ã·ãŒããŒãšã㊠`routing` ã䜿çšããŸãããã®ãã€ãã©ã€ã³ã `traces/route1-regular` ã®äžã«è¿œå ããŠãã ããã
+
+ ```yaml
+ traces/route2-security: # Default pipeline for unmatched spans
+ receivers:
+ - routing # Receive data from the routing connector
+ processors:
+ - memory_limiter # Memory Limiter Processor
+ - resource/add_mode # Adds collector mode metadata
+ - batch
+ exporters:
+ - debug # Debug exporter
+ - file/traces/route2-security # File exporter for unmatched spans
+ ```
+
+{{% /exercise %}}
+
+ãšãŒãžã§ã³ãæ§æã **[otelbin.io](https://www.otelbin.io/)** ã§æ€èšŒããŸããåèãšããŠããã€ãã©ã€ã³ã® `traces:` ã»ã¯ã·ã§ã³ã¯ä»¥äžã®ããã«ãªããŸã:
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1( otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(memory_limiter
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(resource
fa:fa-microchip
add_mode):::processor
+ PRO5(batch
fa:fa-microchip):::processor
+ PRO6(batch
fa:fa-microchip):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2( file
fa:fa-upload
traces):::exporter
+ EXP3( debug
fa:fa-upload):::exporter
+ EXP4( file
fa:fa-upload
traces):::exporter
+ ROUTE1( routing
fa:fa-route):::con-export
+ ROUTE2( routing
fa:fa-route):::con-receive
+ ROUTE3( routing
fa:fa-route):::con-receive
+ %% Links
+ subID1:::sub-traces
+ subID2:::sub-traces
+ subID3:::sub-traces
+ subgraph " "
+ direction LR
+ subgraph subID1["`**Traces**`"]
+ REC1 --> ROUTE1
+ end
+ subgraph subID2["`**Traces/route2-security**`"]
+ ROUTE1 --> ROUTE2
+ ROUTE2 --> PRO1
+ PRO1 --> PRO3
+ PRO3 --> PRO5
+ PRO5 --> EXP1
+ PRO5 --> EXP2
+ end
+ subgraph subID3["`**Traces/route1-regular**`"]
+ ROUTE1 --> ROUTE3
+ ROUTE3 --> PRO2
+ PRO2 --> PRO4
+ PRO4 --> PRO6
+ PRO6 --> EXP3
+ PRO6 --> EXP4
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-traces stroke:#fbbf24,stroke-width:1px, color:#fbbf24,stroke-dasharray: 3 3;
+```
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/6-3-test-routing.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/6-3-test-routing.md
new file mode 100644
index 0000000000..0691a1f7f7
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/6-3-test-routing.md
@@ -0,0 +1,77 @@
+---
+title: 6.3 Test Routing Connector
+linkTitle: 6.3 Test Routing Connector
+weight: 3
+---
+
+{{% exercise title="Verify spans route to the security file" %}}
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ã**Gateway** ã«èšå®ãã `routing` ã«ãŒã«ããã¹ãããŸããæåŸ
ãããçµæã¯ã`loadgen` ã«ãã£ãŠçæããã `span` ã®ãã¡ `"[deployment.environment"] == "security-applications"` ã«ãŒã«ã«äžèŽãããã®ãã`gateway-traces-route2-security.out` ãã¡ã€ã«ã«éä¿¡ãããããšã§ãã
+
+**Gatewayãèµ·åããŸã**: **Gateway terminal** ãŠã£ã³ããŠã§ **Gateway** ãèµ·åããŸãã
+
+```bash
+../otelcol --config gateway.yaml
+```
+
+**Agentãèµ·åããŸã**: **Agent terminal** ãŠã£ã³ããŠã§ **Agent** ãèµ·åããŸãã
+
+```bash
+../otelcol --config agent.yaml
+```
+
+**éåžžã®Spanãéä¿¡ããŸã**: **Loadgen terminal** ãŠã£ã³ããŠã§ `loadgen` ã䜿çšããŠéåžžã®ã¹ãã³ãéä¿¡ããŸãã
+
+```bash
+../loadgen -count 1
+```
+
+**Agent** ãš **Gateway** ã®äž¡æ¹ããããã°æ
å ±ã衚瀺ããŸããGatewayã¯æ°ãã `gateway-traces-route1-regular.out` ãã¡ã€ã«ãçæããŸããããã¯ãéåžžã®ã¹ãã³ã®éä¿¡å
ãšããŠæå®ãããããã§ãã
+
+{{% notice title="Tip" style="primary" icon="lightbulb" %}}
+`gateway-traces-route1-regular.out` ã確èªãããšã`loadgen` ã«ãã£ãŠéä¿¡ããã `span` ãå«ãŸããŠããŸãããŸãã空㮠`gateway-traces-route2-security..out` ãã¡ã€ã«ã確èªã§ããŸããããã¯ãã«ãŒãã£ã³ã°èšå®ããäžèŽããã¹ãã³ããŸã åŠçãããŠããªãå Žåã§ãåºåãã¡ã€ã«ãå³åº§ã«äœæããããã§ãã
+{{% /notice %}}
+
+**Security Spanãéä¿¡ããŸã**: **Loadgen terminal** ãŠã£ã³ããŠã§ `security` ãã©ã°ã䜿çšããŠã»ãã¥ãªãã£ã¹ãã³ãéä¿¡ããŸãã
+
+```bash
+../loadgen -security -count 1
+```
+
+åã³ã**Agent** ãš **Gateway** ã®äž¡æ¹ããããã°æ
å ±ïŒå
ã»ã©éä¿¡ããã¹ãã³ãå«ãïŒã衚瀺ããã¯ãã§ããä»åã¯ã**Gateway** ã `gateway-traces-route2-security.out` ãã¡ã€ã«ã«è¡ãæžã蟌ã¿ãŸãããã®ãã¡ã€ã«ã¯ã`deployment.environment` ãªãœãŒã¹å±æ§ã `"security-applications"` ã«äžèŽããã¹ãã³çšã«æå®ããããã®ã§ãã
+
+{{% tabs %}}
+{{% tab title="Validate resource attribute matches" %}}
+
+```bash
+jq -c '.resourceSpans[] as $resource | $resource.scopeSpans[].spans[] | {spanId: .spanId, deploymentEnvironment: ($resource.resource.attributes[] | select(.key == "deployment.environment") | .value.stringValue)}' gateway-traces-route2-security.out
+```
+
+{{% /tabs %}}
+{{% tab title="Output" %}}
+
+```json
+{"spanId":"cb799e92e26d5782","deploymentEnvironment":"security-applications"}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+ãã®ã·ããªãªã¯è€æ°åç¹°ãè¿ãããšãã§ããåãã¬ãŒã¹ã¯å¯Ÿå¿ããåºåãã¡ã€ã«ã«æžã蟌ãŸããŸãã
+
+{{% /exercise %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã**Agent** ãš **Gateway** ã®ããã»ã¹ã忢ããŸãã
+
+## Conclusion
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãç°ãªãã¹ãã³ãéä¿¡ããŠéä¿¡å
ãæ€èšŒããããšã§ãGatewayã«ãããã«ãŒãã£ã³ã°ã³ãã¯ã¿ã®ãã¹ãã«æåããŸããã
+
+- **éåžžã®ã¹ãã³** 㯠`gateway-traces-route1-regular.out` ã«æ£ããã«ãŒãã£ã³ã°ãããŸãããããã«ããã`deployment.environment` 屿§ãäžèŽããªãã¹ãã³ãããã©ã«ãã®ãã€ãã©ã€ã³ã«åŸãããšã確èªãããŸããã
+
+- **ã»ãã¥ãªãã£é¢é£ã®ã¹ãã³** 㯠`gateway-traces-route2-security.out` ã«ã«ãŒãã£ã³ã°ãããŸãããããã«ããã`"deployment.environment": "security-applications"` ã«åºã¥ãã«ãŒãã£ã³ã°ã«ãŒã«ãæåŸ
ã©ããã«åäœããããšãå®èšŒãããŸããã
+
+åºåãã¡ã€ã«ãæ€æ»ããããšã§ãOpenTelemetry Collectorã *ã¹ãã³ã®å±æ§ãæ£ããè©äŸ¡ããé©åãªéä¿¡å
ã«ã«ãŒãã£ã³ã°ãã* ããšã確èªããŸãããããã«ãããã«ãŒãã£ã³ã°ã«ãŒã«ãç°ãªããŠãŒã¹ã±ãŒã¹ã«å¿ããŠãã¬ã¡ããªãŒããŒã¿ã广çã«åé¢ããæ¯ãåããããããšãæ€èšŒãããŸãã
+
+ãã®ã¢ãããŒããæ¡åŒµããŠãç°ãªã屿§ã«åºã¥ããŠã¹ãã³ãã¡ããªã¯ã¹ããã°ãããã«åé¡ããããã®è¿œå ã®ã«ãŒãã£ã³ã°ã«ãŒã«ãå®çŸ©ããããšãã§ããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/_index.md
new file mode 100644
index 0000000000..c571b0c147
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/6-routing-data/_index.md
@@ -0,0 +1,27 @@
+---
+title: 6. ããŒã¿ã®ã«ãŒãã£ã³ã°
+linkTitle: 6. ããŒã¿ã®ã«ãŒãã£ã³ã°
+time: 10 minutes
+weight: 8
+---
+
+OpenTelemetry ã® [**Routing Connector**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/routingconnector) ã¯ãç¹å®ã®æ¡ä»¶ã«åºã¥ããŠããŒã¿ïŒ`traces`ã`metrics`ã`logs`ïŒãç°ãªããã€ãã©ã€ã³ãå®å
ã«æ¯ãåããããšãã§ãã匷åãªæ©èœã§ããããã¯ããã¬ã¡ããªãŒããŒã¿ã®ãµãã»ããã«å¯ŸããŠç°ãªãåŠçããšã¯ã¹ããŒãããžãã¯ãé©çšãããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
+
+äŸãã°ã*production* ã®ããŒã¿ã 1 ã€ã®ãšã¯ã¹ããŒã¿ãŒã«éä¿¡ãã€ã€ã*test* ã *development* ã®ããŒã¿ãå¥ã®ãšã¯ã¹ããŒã¿ãŒã«æ¯ãåããããšãã§ããŸããåæ§ã«ããµãŒãã¹åãç°å¢ãã¹ãã³åãªã©ã®å±æ§ã«åºã¥ããŠç¹å®ã®ã¹ãã³ãã«ãŒãã£ã³ã°ããã«ã¹ã¿ã ã®åŠçãä¿åããžãã¯ãé©çšããããšãå¯èœã§ãã
+
+{{% exercise title="`6-routing-data` ãã£ã¬ã¯ããªã®ã»ããã¢ãã" %}}
+
+> [!IMPORTANT]
+> ***ãã¹ãŠã®* ã¿ãŒããã«ãŠã£ã³ããŠã§ `6-routing-data` ãã£ã¬ã¯ããªã«ç§»åãã`clear` ã³ãã³ããå®è¡ããŠãã ããã**
+
+`5-transform-data` ãã£ã¬ã¯ããªãã `*.yaml` ã `6-routing-data` ã«ã³ããŒããŸããæŽæ°ããããã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+{{% /exercise %}}
+
+次ã«ãrouting connector ãšããããã®ãã€ãã©ã€ã³ãèšå®ããŠãããŸãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/7-1-count-test.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/7-1-count-test.md
new file mode 100644
index 0000000000..c7af716783
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/7-1-count-test.md
@@ -0,0 +1,93 @@
+---
+title: 7.1 Count Connector ã®ãã¹ã
+linkTitle: 7.1 Count Connector ã®ãã¹ã
+weight: 1
+---
+
+{{% exercise title="Count Connector ã®ãã¹ã" %}}
+
+**Gateway ãèµ·åããŸã**:
+**Gateway ã¿ãŒããã«** ãŠã£ã³ããŠã§æ¬¡ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash { title="Start the Gateway" }
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãèµ·åããŸã**:
+**Agent ã¿ãŒããã«** ãŠã£ã³ããŠã§æ¬¡ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+**Loadgen ã§ 12 è¡ã®ãã°ãéä¿¡ããŸã**:
+**Spans ã¿ãŒããã«** ãŠã£ã³ããŠã§ 12 è¡ã®ãã°ãéä¿¡ããŸããããã㯠2 ã€ã®ã€ã³ã¿ãŒãã«ã«åããŠèªã¿åãããŸããæ¬¡ã® `loadgen` ã³ãã³ããå®è¡ããŠãã ããã
+
+```bash { title="Loadgen" }
+../loadgen -logs -json -count 12
+```
+
+**Agent** ãš **Gateway** ã®äž¡æ¹ããããã°æ
å ±ã衚瀺ããããŒã¿ãåŠçããŠããããšã瀺ããŸãã`loadgen` ãå®äºãããŸã§åŸ
ã¡ãŸãã
+
+**ã¡ããªã¯ã¹ãçæãããããšã確èªããŸã**
+ãã°ãåŠçããããšã**Agent** ã¯ã¡ããªã¯ã¹ãçæã㊠**Gateway** ã«è»¢éãã**Gateway** ã¯ãããã `gateway-metrics.out` ã«æžã蟌ã¿ãŸãã
+
+`logs.full.count`ã`logs.sw.count`ã`logs.lotr.count`ã`logs.error.count` ã®ã¡ããªã¯ã¹ãåºåã«å«ãŸããŠãããã確èªããã«ã¯ã次㮠**jq** ã¯ãšãªãå®è¡ããŸãã
+
+{{% tabs %}}
+{{% tab title="jq query command" %}}
+
+```bash
+jq '.resourceMetrics[].scopeMetrics[].metrics[]
+ | select(.name == "logs.full.count" or .name == "logs.sw.count" or .name == "logs.lotr.count" or .name == "logs.error.count")
+ | {name: .name, value: (.sum.dataPoints[0].asInt // "-")}' gateway-metrics.out
+```
+
+{{% /tab %}}
+{{% tab title="jq example output" %}}
+
+```json
+{
+ "name": "logs.sw.count",
+ "value": "2"
+}
+{
+ "name": "logs.lotr.count",
+ "value": "2"
+}
+{
+ "name": "logs.full.count",
+ "value": "4"
+}
+{
+ "name": "logs.error.count",
+ "value": "2"
+}
+{
+ "name": "logs.error.count",
+ "value": "1"
+}
+{
+ "name": "logs.sw.count",
+ "value": "2"
+}
+{
+ "name": "logs.lotr.count",
+ "value": "6"
+}
+{
+ "name": "logs.full.count",
+ "value": "8"
+}
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+泚: `logs.full.count` ã¯éåžž `logs.sw.count` + `logs.lotr.count` ãšçãããªããŸããã`logs.error.count` ã¯ã©ã³ãã ãªæ°å€ã«ãªããŸãã
+{{% /notice %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã**Agent** ãš **Gateway** ã®ããã»ã¹ã忢ããŸãã
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/7-2-sum.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/7-2-sum.md
new file mode 100644
index 0000000000..0647aa6c1d
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/7-2-sum.md
@@ -0,0 +1,159 @@
+---
+title: 7.2 Sum Connector ã§ã¡ããªã¯ã¹ãäœæãã
+linkTitle: 7.2 Sum Connector
+time: 10 minutes
+weight: 2
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ã[**Sum Connector**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/sumconnector) ãã¹ãã³ããå€ãæœåºããŠã¡ããªã¯ã¹ã«å€æããæ¹æ³ãèŠãŠãããŸãã
+
+å
·äœçã«ã¯ãããŒã¹ã¹ãã³ã«å«ãŸããã¯ã¬ãžããã«ãŒãã®è«æ±é¡ãå©çšããSum Connector ãæŽ»çšããŠè«æ±é¡ã®åèšãã¡ããªã¯ã¹ãšããŠååŸããŸãã
+
+ãã®ã³ãã¯ã¿ãŒã¯ãã¹ãã³ãã¹ãã³ã€ãã³ããã¡ããªã¯ã¹ãããŒã¿ãã€ã³ãããã°ã¬ã³ãŒããã屿§å€ãåéïŒ**sum**ïŒããããã«äœ¿çšã§ããŸããåå€ãåå¥ã«ãã£ããã£ããã¡ããªã¯ã¹ã«å€æããŠåãæž¡ããŸãããã ãããããã®ã¡ããªã¯ã¹ãšãã®å±æ§ã䜿ã£ãŠèšç®ããããªãåŠçãè¡ãã®ã¯ **ããã¯ãšã³ã** ã®åœ¹å²ã§ãã
+
+{{% exercise title="Sum Connector ã远å ãã" %}}
+
+**Agent ã¿ãŒããã«** ãŠã£ã³ããŠã«åãæ¿ããŠããšãã£ã¿ãŒã§ `agent.yaml` ãã¡ã€ã«ãéããŸãã
+
+- **Sum Connector ã远å ãã**
+èšå®ãã¡ã€ã«ã® connectors ã»ã¯ã·ã§ã³ã« Sum Connector ã远å ããã¡ããªã¯ã¹ã«ãŠã³ã¿ãŒãå®çŸ©ããŸãã
+
+```yaml
+ sum:
+ spans:
+ user.card-charge:
+ source_attribute: payment.amount
+ conditions:
+ - attributes["payment.amount"] != "NULL"
+ attributes:
+ - key: user.name
+
+```
+
+{{% /exercise %}}
+
+äžèšã®äŸã§ã¯ãã¹ãã³å
ã® `payment.amount` 屿§ããã§ãã¯ããŸããæå¹ãªå€ãå«ãŸããŠããå Žåã**Sum** ã³ãã¯ã¿ãŒã¯ `user.card-charge` ãšããã¡ããªã¯ã¹ãçæãã`user.name` ã屿§ãšããŠå«ããŸããããã«ãããããã¯ãšã³ãã¯è«æ±ãµã€ã¯ã«ãªã©ã®é·æéã«ããããŠãŒã¶ãŒã®è«æ±åèšé¡ã远跡ã»è¡šç€ºã§ããããã«ãªããŸãã
+
+以äžã®ãã€ãã©ã€ã³èšå®ã§ã¯ãã³ãã¯ã¿ãŒã®ãšã¯ã¹ããŒã¿ãŒã traces ã»ã¯ã·ã§ã³ã«è¿œå ããã³ãã¯ã¿ãŒã®ã¬ã·ãŒããŒã metrics ã»ã¯ã·ã§ã³ã«è¿œå ããŸãã
+
+{{% exercise title="ã³ãã¯ã¿ãŒããã€ãã©ã€ã³ã«çµã¿èŸŒã" %}}
+
+- **Count Connector ããã€ãã©ã€ã³ã«èšå®ãã**
+
+```yaml
+ pipelines:
+ traces:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - attributes/update # Update, hash, and remove attributes
+ - redaction/redact # Redact sensitive fields using regex
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - file
+ - otlphttp
+ - sum # Sum connector which aggregates payment.amount from spans and sends to metrics pipeline
+ metrics:
+ receivers:
+ - sum # Receives metrics from the sum exporter in the traces pipeline
+ - count # Receives count metric from logs count exporter in logs pipeline.
+ - otlp
+ #- hostmetrics # Host Metrics Receiver
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - otlphttp
+ logs:
+ receivers:
+ - otlp
+ - filelog/quotes
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - transform/logs # Transform logs processor
+ - batch
+ exporters:
+ - count # Count Connector that exports count as a metric to metrics pipeline.
+ - debug
+ - otlphttp
+```
+
+- **[otelbin.io](https://www.otelbin.io/)** ã䜿ã£ãŠ Agent ã®èšå®ã **æ€èšŒ** ããŸããåèãšããŠããã€ãã©ã€ã³ã® `traces` ããã³ `metrics:` ã»ã¯ã·ã§ã³ã¯æ¬¡ã®ãããªå³ã«ãªããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1(otlp
fa:fa-download
):::receiver
+ REC3(otlp
fa:fa-download
):::receiver
+ PRO1(memory_limiter
fa:fa-microchip
):::processor
+ PRO2(memory_limiter
fa:fa-microchip
):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(resource
fa:fa-microchip
add_mode):::processor
+ PRO5(batch
fa:fa-microchip
):::processor
+ PRO6(batch
fa:fa-microchip
):::processor
+ PRO7(resourcedetection
fa:fa-microchip
):::processor
+ PRO8(resourcedetection
fa:fa-microchip
):::processor
+
+ PROA(attributes
fa:fa-microchip
redact):::processor
+ PROB(redaction
fa:fa-microchip
update):::processor
+ EXP1( debug
fa:fa-upload
):::exporter
+ EXP2( file
fa:fa-upload
):::exporter
+ EXP3( debug
fa:fa-upload
):::exporter
+ EXP4( otlphttp
fa:fa-upload
):::exporter
+ EXP5( otlphttp
fa:fa-upload
):::exporter
+ ROUTE1( sum
fa:fa-route
):::con-export
+ ROUTE2( count
fa:fa-route
):::con-receive
+ ROUTE3( sum
fa:fa-route
):::con-receive
+
+ %% Links
+ subgraph wrapper[" "]
+ direction LR
+ subgraph subID1["`**Traces**`"]
+ direction LR
+ REC1 --> PRO1
+ PRO1 --> PROA
+ PROA --> PROB
+ PROB --> PRO7
+ PRO7 --> PRO3
+ PRO3 --> PRO5
+ PRO5 --> EXP1
+ PRO5 --> EXP2
+ PRO5 --> EXP5
+ PRO5 --> ROUTE1
+ end
+
+ subgraph subID2["`**Metrics**`"]
+ direction LR
+ ROUTE1 --> ROUTE3
+ ROUTE3 --> PRO2
+ ROUTE2 --> PRO2
+ REC3 --> PRO2
+ PRO2 --> PRO8
+ PRO8 --> PRO4
+ PRO4 --> PRO6
+ PRO6 --> EXP3
+ PRO6 --> EXP4
+ end
+ end
+ class subID1 sub-traces
+ class subID2 sub-metrics
+
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-logs stroke:#34d399,stroke-width:1px,color:#34d399,stroke-dasharray: 3 3;
+classDef sub-traces stroke:#fbbf24,stroke-width:1px,color:#fbbf24,stroke-dasharray: 3 3;
+classDef sub-metrics stroke:#38bdf8,stroke-width:1px,color:#38bdf8,stroke-dasharray: 3 3;
+```
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/7-3-sum-test.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/7-3-sum-test.md
new file mode 100644
index 0000000000..99b6e3b490
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/7-3-sum-test.md
@@ -0,0 +1,67 @@
+---
+title: 7.3 Count Connector ã®ãã¹ã
+linkTitle: 7.3 Sum Connector ã®ãã¹ã
+weight: 3
+---
+
+{{% exercise title="Sum Connector ã®ãã¹ã" %}}
+
+**Gateway ãèµ·åããŸã**:
+**Gateway terminal** ãŠã£ã³ããŠã§æ¬¡ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash { title="Start the Gateway" }
+../otelcol --config=gateway.yaml
+```
+
+**Agent ãèµ·åããŸã**:
+**Agent terminal** ãŠã£ã³ããŠã§æ¬¡ã®ã³ãã³ããå®è¡ããŸãã
+
+```bash { title="Start the Agent" }
+../otelcol --config=agent.yaml
+```
+
+**Loadgen ãèµ·åããŸã**:
+**Spans terminal** ãŠã£ã³ããŠã§ã次㮠`loadgen` ã³ãã³ãã䜿çšã㊠8 åã®ã¹ãã³ãéä¿¡ããŸãã
+
+```bash { title="Loadgen" }
+../loadgen -count 8
+```
+
+**Agent** ãš **Gateway** ã®äž¡æ¹ããããã°æ
å ±ã衚瀺ããããŒã¿ãåŠçããŠããããšã瀺ããŸããloadgen ãå®äºãããŸã§ãåŸ
ã¡ãã ããã
+
+**ã¡ããªã¯ã¹ã確èªããŸã**:
+ã¹ãã³ã®åŠçäžã«ã**Agent** ã¯ã¡ããªã¯ã¹ãçæãã**Gateway** ã«æž¡ããŠããŸãã**Gateway** ã¯ãããã `gateway-metrics.out` ã«æžã蟌ãã§ããŸãã
+
+ã¡ããªã¯ã¹åºåã« `user.card-charge` ãååšããããšã確èªããããããã `user.name` 屿§ãæã£ãŠããããšãæ€èšŒããããã«ã次㮠jq ã¯ãšãªãå®è¡ããŸãã
+
+{{% tabs %}}
+{{% tab title="jq query command" %}}
+
+```bash
+
+jq -r '.resourceMetrics[].scopeMetrics[].metrics[] | select(.name == "user.card-charge") | .sum.dataPoints[] | "\(.attributes[] | select(.key == "user.name").value.stringValue)\t\(.asDouble)"' gateway-metrics.out | while IFS=$'\t' read -r name charge; do
+ printf "%-20s %s\n" "$name" "$charge"
+done
+```
+
+{{% /tab %}}
+{{% tab title="jq example output" %}}
+
+```text
+George Lucas 67.49
+Frodo Baggins 87.14
+Thorin Oakenshield 90.98
+Luke Skywalker 51.37
+Luke Skywalker 65.56
+Thorin Oakenshield 67.5
+Thorin Oakenshield 66.66
+Peter Jackson 94.39
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+> [!IMPORTANT]
+> ããããã®ã¿ãŒããã«ã§ `Ctrl-C` ãæŒããŠã**Agent** ãš **Gateway** ã®ããã»ã¹ã忢ããŸãã
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/_index.md
new file mode 100644
index 0000000000..a26ae0a7b6
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/7-sum-count/_index.md
@@ -0,0 +1,192 @@
+---
+title: 7. Count Connector ã§ã¡ããªã¯ã¹ãäœæãã
+linkTitle: 7. Count & Sum Connector
+time: 10 minutes
+weight: 9
+---
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ã[**Count Connector**](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/countconnector) ã䜿çšããŠããã°ãã屿§å€ãæœåºããæå³ã®ããã¡ããªã¯ã¹ã«å€æããæ¹æ³ãæ¢ããŸãã
+
+å
·äœçã«ã¯ãCount Connector ã䜿çšããŠãã°ã«åºçŸãããStar WarsããšãLord of the Ringsãã®åŒçšåæ°ã远跡ããèšæž¬å¯èœãªããŒã¿ãã€ã³ãã«å€æããŸãã
+
+{{% exercise title="`7-sum-count` ãã£ã¬ã¯ããªã®ã»ããã¢ãã" %}}
+
+> [!IMPORTANT]
+> **_ãã¹ãŠã®_ ã¿ãŒããã«ãŠã£ã³ããŠã `7-sum-count` ãã£ã¬ã¯ããªã«åãæ¿ãã`clear` ã³ãã³ããå®è¡ããŠãã ããã**
+
+`6-routing-data` ãã£ã¬ã¯ããªãã `*.yaml` ã `7-sum-count` ã«ã³ããŒããŸããæŽæ°åŸã®ãã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```text { title="Updated Directory Structure" }
+.
+âââ agent.yaml
+âââ gateway.yaml
+```
+
+- **agent.yaml ãæŽæ°** ããŠããã°ãèªã¿åãé »åºŠã倿ŽããŸãã
+`agent.yaml` å
ã® `filelog/quotes` ã¬ã·ãŒããŒãèŠã€ããŠã`poll_interval` 屿§ã远å ããŠãã ããã
+
+```yaml
+ filelog/quotes: # Receiver Type/Name
+ poll_interval: 10s # Only read every ten seconds
+```
+
+{{% /exercise %}}
+
+é
å»¶ãèšããçç±ã¯ãOpenTelemetry Collector ã® Count Connector ãååŠçééå
ã®ãã°ã®ã¿ãã«ãŠã³ãããããã§ããã€ãŸããããŒã¿ãèªã¿åããããã³ã«ã次ã®ééã®ããã«ã«ãŠã³ãããŒãã«ãªã»ãããããŸããããã©ã«ãã® `Filelog reciever` ã®ééã§ãã 200ms ã§ã¯ãloadgen ãæžã蟌ããã¹ãŠã®è¡ãèªã¿åããã«ãŠã³ãã 1 ã«ãªã£ãŠããŸããŸãããã®ééãèšå®ããããšã§ãã«ãŠã³ã察象ã®ãšã³ããªãè€æ°ã«ãªãããšãä¿èšŒããŸãã
+
+Collector ã¯ã以äžã«ç€ºãããã«æ¡ä»¶ãçç¥ããããšã§ãåèªã¿åãééã®ã©ã³ãã³ã°ã«ãŠã³ããç¶æã§ããŸãããã ããã©ã³ãã³ã°ã«ãŠã³ãã¯ããé·ãæéã«ããã£ãŠè¿œè·¡ã§ããããã¯ãšã³ãã«ä»»ããã®ããã¹ããã©ã¯ãã£ã¹ã§ãã
+
+{{% exercise title="Count Connector ã®è¿œå " %}}
+
+- **Count Connector ã®è¿œå **
+
+èšå®ã® connectors ã»ã¯ã·ã§ã³ã« Count Connector ãå«ãã䜿çšããã¡ããªã¯ã¹ã«ãŠã³ã¿ãŒãå®çŸ©ããŸãã
+
+```yaml
+connectors:
+ count:
+ logs:
+ logs.full.count:
+ description: "Running count of all logs read in interval"
+ logs.sw.count:
+ description: "StarWarsCount"
+ conditions:
+ - attributes["movie"] == "SW"
+ logs.lotr.count:
+ description: "LOTRCount"
+ conditions:
+ - attributes["movie"] == "LOTR"
+ logs.error.count:
+ description: "ErrorCount"
+ conditions:
+ - attributes["level"] == "ERROR"
+```
+
+- **ã¡ããªã¯ã¹ã«ãŠã³ã¿ãŒã®èª¬æ**
+
+ - `logs.full.count`: åèªã¿åãééã§åŠçããããã°ã®ç·æ°ã远跡ããŸãã
+ ãã®ã¡ããªã¯ã¹ã«ã¯ãã£ã«ã¿ãªã³ã°æ¡ä»¶ããªããããã·ã¹ãã ãééãããã¹ãŠã®ãã°ãã«ãŠã³ãã«å«ãŸããŸãã
+ - `logs.sw.count` Star Wars æ ç»ã®åŒçšãå«ããã°ãã«ãŠã³ãããŸãã
+ - `logs.lotr.count`: Lord of the Rings æ ç»ã®åŒçšãå«ããã°ãã«ãŠã³ãããŸãã
+ - `logs.error.count`: èªã¿åãééå
ã§é倧床ã¬ãã«ã ERROR ã®ãã°ãã«ãŠã³ãããããšã§ãçŸå®äžçã®ã·ããªãªã衚çŸããŸãã
+
+- **ãã€ãã©ã€ã³ã§ Count Connector ãæ§æãã**
+以äžã®ãã€ãã©ã€ã³æ§æã§ã¯ãã³ãã¯ã¿ãŒã®ãšã¯ã¹ããŒã¿ãŒã `logs` ã»ã¯ã·ã§ã³ã«è¿œå ãããã³ãã¯ã¿ãŒã®ã¬ã·ãŒããŒã `metrics` ã»ã¯ã·ã§ã³ã«è¿œå ãããŠããŸãã
+
+```yaml
+ pipelines:
+ traces:
+ receivers:
+ - otlp
+ processors:
+ - memory_limiter
+ - attributes/update # Update, hash, and remove attributes
+ - redaction/redact # Redact sensitive fields using regex
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - file
+ - otlphttp
+ metrics:
+ receivers:
+ - count # Count Connector that receives count metric from logs count exporter in logs pipeline.
+ - otlp
+ #- hostmetrics # Host Metrics Receiver
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - batch
+ exporters:
+ - debug
+ - otlphttp
+ logs:
+ receivers:
+ - otlp
+ - filelog/quotes
+ processors:
+ - memory_limiter
+ - resourcedetection
+ - resource/add_mode
+ - transform/logs # Transform logs processor
+ - batch
+ exporters:
+ - count # Count Connector that exports count as a metric to metrics pipeline.
+ - debug
+ - otlphttp
+```
+
+{{% /exercise %}}
+
+ãã°ã¯å±æ§ã«åºã¥ããŠã«ãŠã³ãããŸãããã°ããŒã¿ã屿§ã§ã¯ãªããã°æ¬æã«æ ŒçŽãããŠããå Žåã¯ããã€ãã©ã€ã³ã§ `Transform` ããã»ããµãŒã䜿çšããŠããŒ/å€ã®ãã¢ãæœåºãã屿§ãšããŠè¿œå ããå¿
èŠããããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã`05-transform-data` ã»ã¯ã·ã§ã³ã§ãã§ã« `merge_maps(attributes, cache, "upsert")` ã远å ããŠããŸããããã«ãããåŠçã«å¿
èŠãªãã¹ãŠã®é¢é£ããŒã¿ããã°å±æ§ã«å«ãŸããããšãä¿èšŒãããŸãã
+
+屿§ãäœæãããã£ãŒã«ããéžæããéã¯æ³šæãå¿
èŠã§ãããã¹ãŠã®ãã£ãŒã«ããç¡å·®å¥ã«è¿œå ããããšã¯ãæ¬çªç°å¢ã§ã¯äžè¬çã«æãŸãããããŸããã代ããã«ãäžèŠãªããŒã¿ã®ä¹±éããé¿ãããããæ¬åœã«å¿
èŠãªãã£ãŒã«ãã®ã¿ãéžæããŠãã ããã
+
+{{% exercise title="ãšãŒãžã§ã³ãèšå®ã®æ€èšŒ" %}}
+
+- **[otelbin.io](https://www.otelbin.io/)** ã䜿çšããŠãšãŒãžã§ã³ãèšå®ã **æ€èšŒ** ããŠãã ãããåèãŸã§ã«ããã€ãã©ã€ã³ã® `logs` ããã³ `metrics:` ã»ã¯ã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸãã
+
+```mermaid
+%%{init:{"fontFamily":"monospace"}}%%
+graph LR
+ %% Nodes
+ REC1(otlp
fa:fa-download):::receiver
+ REC2(filelog
fa:fa-download
quotes):::receiver
+ REC3(otlp
fa:fa-download):::receiver
+ PRO1(memory_limiter
fa:fa-microchip):::processor
+ PRO2(memory_limiter
fa:fa-microchip):::processor
+ PRO3(resource
fa:fa-microchip
add_mode):::processor
+ PRO4(resource
fa:fa-microchip
add_mode):::processor
+ PRO5(batch
fa:fa-microchip):::processor
+ PRO6(batch
fa:fa-microchip):::processor
+ PRO7(resourcedetection
fa:fa-microchip):::processor
+ PRO8(resourcedetection
fa:fa-microchip):::processor
+ PRO9(transfrom
fa:fa-microchip
logs):::processor
+ EXP1( debug
fa:fa-upload):::exporter
+ EXP2( otlphttp
fa:fa-upload):::exporter
+ EXP3( debug
fa:fa-upload):::exporter
+ EXP4( otlphttp
fa:fa-upload):::exporter
+ ROUTE1( count
fa:fa-route):::con-export
+ ROUTE2( count
fa:fa-route):::con-receive
+
+ %% Links
+ subID1:::sub-logs
+ subID2:::sub-metrics
+ subgraph " "
+ direction LR
+ subgraph subID1[**Logs**]
+ direction LR
+ REC1 --> PRO1
+ REC2 --> PRO1
+ PRO1 --> PRO7
+ PRO7 --> PRO3
+ PRO3 --> PRO9
+ PRO9 --> PRO5
+ PRO5 --> ROUTE1
+ PRO5 --> EXP1
+ PRO5 --> EXP2
+ end
+
+ subgraph subID2["`**Metrics**`"]
+ direction LR
+ ROUTE1 --> ROUTE2
+ ROUTE2 --> PRO2
+ REC3 --> PRO2
+ PRO2 --> PRO8
+ PRO8 --> PRO4
+ PRO4 --> PRO6
+ PRO6 --> EXP3
+ PRO6 --> EXP4
+ end
+ end
+classDef receiver,exporter fill:#8b5cf6,stroke:#333,stroke-width:1px,color:#fff;
+classDef processor fill:#6366f1,stroke:#333,stroke-width:1px,color:#fff;
+classDef con-receive,con-export fill:#45c175,stroke:#333,stroke-width:1px,color:#fff;
+classDef sub-logs stroke:#34d399,stroke-width:1px, color:#34d399,stroke-dasharray: 3 3;
+classDef sub-metrics stroke:#38bdf8,stroke-width:1px, color:#38bdf8,stroke-dasharray: 3 3;
+```
+
+{{% /exercise %}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/8-wrap-up/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/8-wrap-up/_index.md
new file mode 100644
index 0000000000..fc0ba8599e
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/8-wrap-up/_index.md
@@ -0,0 +1,7 @@
+---
+title: 8. ãŸãšã
+linkTitle: 8. ãŸãšã
+weight: 10
+---
+
+
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/_index.md
new file mode 100644
index 0000000000..bf2bb0a297
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/_index.md
@@ -0,0 +1,35 @@
+---
+title: Advanced OpenTelemetry Collector
+description: OpenTelemetry Collector ã®èšå®ããŒãããæ§ç¯ããç·Žç¿ãè¡ããããã€ãã®é«åºŠãªèšå®ã·ããªãªãéããŠåŠç¿ããŸãã
+weight: 2
+type: chapter
+authors: ["Robert Castley", "Charity Anderson", "Pieter Hagen", "Geoff Higginbottom"]
+time: 75 minutes
+---
+
+ãã®ã¯ãŒã¯ã·ã§ããã®ç®çã¯ãOpenTelemetry Collector ã®èšå®ãã¡ã€ã«ã®äœæãšå€æŽã«èªä¿¡ãæãŠãããã«ããããšã§ããæå°éã® `agent.yaml` ãš `gateway.yaml` ãã¡ã€ã«ããå§ããŠã段éçã«æ¡åŒµããªãããããã€ãã®é«åºŠãªå®è·µçã·ããªãªã«å¯Ÿå¿ã§ããããã«æ§ç¯ããŠãããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§éèŠãããã€ã³ãã¯ããã¬ã¡ããªãŒããŒã¿ããµãŒãããŒãã£ãã³ããŒã®ããã¯ãšã³ãã«éä¿¡ããã®ã§ã¯ãªããããŒã«ã«ã«ä¿åããããã« OpenTelemetry Collector ãèšå®ããæ¹æ³ãåŠã¶ããšã§ãããã®ã¢ãããŒãã¯ãããã°ããã©ãã«ã·ã¥ãŒãã£ã³ã°ã容æã«ããã ãã§ãªããæ¬çªã·ã¹ãã ãžã®ããŒã¿éä¿¡ãé¿ããããã¹ããéçºç°å¢ã«ãæé©ã§ãã
+
+ãã®ã¯ãŒã¯ã·ã§ãããæå€§éã«æŽ»çšããããã«ã¯ã以äžãå¿
èŠã§ãã
+
+- OpenTelemetry Collector ãšãã®èšå®ãã¡ã€ã«æ§é ã«é¢ããåºæ¬çãªçè§£ã
+- YAML ãã¡ã€ã«ã®ç·šéã«é¢ããç¿çã
+
+ãã®ã¯ãŒã¯ã·ã§ããã®ãã¹ãŠã®å
容ã¯ãããŒã«ã«ã§å®è¡ã§ããããã«èšèšãããŠããããã³ãºãªã³åœ¢åŒã§ã¢ã¯ã»ã¹ããããåŠç¿äœéšãæäŸããŸããããã§ã¯ãæ§ç¯ãå§ããŠãããŸãããïŒ
+
+## Workshop Overview
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã以äžã®ãããã¯ãåãäžããŸãã
+
+- **agent ãš gateway ãããŒã«ã«ã«ã»ããã¢ãããã**: ã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ã agent ãçµç±ã㊠gateway ã«éãããããšããã¹ãããŸãã
+- **agent ã®ã¬ãžãªãšã³ã¹åŒ·å**: ãã©ãŒã«ããã¬ã©ã³ã¹ã®ããã®åºæ¬çãªèšå®ã
+- **ããã»ããµãŒã®èšå®**:
+ - ç¹å®ã®ã¹ãã³ïŒäŸïŒãã«ã¹ãã§ãã¯ïŒãç Žæ£ããããšã§ãã€ãºããã£ã«ã¿ãªã³ã°ããŸãã
+ - äžèŠãªã¿ã°ãåé€ããæ©å¯ããŒã¿ãåãæ±ããŸãã
+ - ãšã¯ã¹ããŒãåã«ããã€ãã©ã€ã³å
ã§ OTTLïŒOpenTelemetry Transformation LanguageïŒã䜿ã£ãŠããŒã¿ã倿ããŸãã
+- **ã³ãã¯ã¿ãŒã®èšå®**:
+ - åä¿¡ããå€ã«åºã¥ããŠãç°ãªããšã³ããã€ã³ããžããŒã¿ãã«ãŒãã£ã³ã°ããŸãã
+
+
+ãã®ã¯ãŒã¯ã·ã§ãããçµããé ã«ã¯ãããŸããŸãªå®è·µçãªãŠãŒã¹ã±ãŒã¹ã«å¯Ÿå¿ãã OpenTelemetry Collector ã®èšå®ã«æ
£ããŠããã¯ãã§ãã
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/prerequisites.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/prerequisites.md
new file mode 100644
index 0000000000..ca373dc91f
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/2-advanced-collector/prerequisites.md
@@ -0,0 +1,175 @@
+---
+title: åææ¡ä»¶
+weight: 2.1
+archetype: chapter
+time: 5 minutes
+---
+
+## åææ¡ä»¶
+
+- `vi`ã`vim`ã`nano`ããŸãã¯ã奜ã¿ã®ããã¹ããšãã£ã¿ãŒã䜿çšããŠYAMLãã¡ã€ã«ãç·šéã§ããããšã
+- ãµããŒããããŠããç°å¢:
+ - æäŸãããSplunk Workshop InstanceïŒæšå¥šïŒã`ssh` ã¢ã¯ã»ã¹ã®ãããããŒã `2222` ãžã®éä¿¡ã¢ã¯ã»ã¹ãå¿
èŠã§ãã
+ - Apple Mac (Apple Silicon)ã`jq` ã®ã€ã³ã¹ããŒã«ãå¿
èŠã§ã - [**https://jqlang.org/download/**](https://jqlang.org/download/)
+
+{{% exercise title="ã¯ãŒã¯ã·ã§ããçšãã£ã¬ã¯ããªã®äœæ" %}}
+
+{{< step "åæã»ããã¢ãã" "1" >}}
+
+ãå©çšã®ç°å¢ã§æ°ãããã£ã¬ã¯ããªãäœæãããã®ãã£ã¬ã¯ããªã«ç§»åããŸã:
+
+``` bash
+mkdir advanced-otel-workshop && \
+cd advanced-otel-workshop
+```
+
+ãã®ãã£ã¬ã¯ããªã¯ãã¯ãŒã¯ã·ã§ããã®æ®ãã®éšåã§ `[WORKSHOP]` ãšããŠåç
§ããŸãã
+
+{{% notice title="æ¢åã®OpenTelemetry Collectorãåé€ãã" style="warning" %}}
+Splunk IMã¯ãŒã¯ã·ã§ãããå®äºããŠããå Žåãç¶è¡ããåã«Kubernetesäžã§åäœããŠããcollectorãåé€ãããŠããããšã確èªããŠãã ãããããã¯ä»¥äžã®ã³ãã³ããå®è¡ããããšã§å®æœã§ããŸã:
+
+``` bash
+helm delete splunk-otel-collector
+```
+
+ãã®å Žåã®EC2ã€ã³ã¹ã¿ã³ã¹ã§ã¯ãæ¬ã¯ãŒã¯ã·ã§ããã«å¹²æžããå¯èœæ§ã®ãããµãŒãã¹ãåäœããŠããå Žåãããããã以äžã®ã³ãã³ããå®è¡ããŠãããããååšããå Žåã¯ç¢ºå®ã«åæ¢ãããŠãã ãã:
+
+``` bash
+kubectl delete ~/workshop/apm/deployment.yaml
+```
+
+{{% /notice %}}
+{{< /step >}}
+
+{{< step "ã¯ãŒã¯ã·ã§ããã®ãã€ããªãããŠã³ããŒã" "2" >}}
+
+`[WORKSHOP]` ãã£ã¬ã¯ããªã«ç§»åããOpenTelemetry CollectorãLoad Generatorã®ãã€ããªãããã³ã»ããã¢ããã¹ã¯ãªãããããŠã³ããŒãããŸã:
+
+{{% tabs %}}
+{{% tab title="Splunk Workshop Instance" %}}
+
+```bash
+curl -L https://github.com/signalfx/splunk-otel-collector/releases/download/v{{< otel-version >}}/otelcol_linux_amd64 -o otelcol && \
+curl -L https://github.com/splunk/observability-workshop/raw/refs/heads/main/workshop/ninja/advanced-otel/loadgen/build/loadgen-linux-amd64 -o loadgen && \
+curl -L https://github.com/splunk/observability-workshop/raw/refs/heads/main/workshop/ninja/advanced-otel/setup-workshop.sh -o setup-workshop.sh && \
+chmod +x setup-workshop.sh
+```
+
+{{% /tab %}}
+{{% tab title="Apple Silicon" %}}
+
+```bash
+curl -L https://github.com/signalfx/splunk-otel-collector/releases/download/v{{< otel-version >}}/otelcol_darwin_arm64 -o otelcol && \
+curl -L https://github.com/splunk/observability-workshop/raw/refs/heads/main/workshop/ninja/advanced-otel/loadgen/build/loadgen-darwin-arm64 -o loadgen && \
+curl -L https://github.com/splunk/observability-workshop/raw/refs/heads/main/workshop/ninja/advanced-otel/setup-workshop.sh -o setup-workshop.sh && \
+chmod +x setup-workshop.sh
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+{{< /step >}}
+
+{{< step "ã»ããã¢ãããå®è¡ãã" "3" >}}
+`setup-workshop.sh` ã¹ã¯ãªãããå®è¡ããŸãããã®ã¹ã¯ãªããã¯æ£ããæš©éãèšå®ãããšãšãã«ã**Agent** ããã³ **Gateway** ã®åæèšå®ãäœæããŸã:
+
+{{% tabs %}}
+{{% tab title="Setup Workshop" %}}
+
+```bash
+./setup-workshop.sh
+```
+
+{{% /tab %}}
+{{% tab title="Verify Setup" %}}
+
+```text
+âââââââââââââââ âââ âââ âââââââ ââââââ âââ âââ
+âââââââââââââââââââ âââ ââââââââ ââââââ ââââ ââââ
+âââââââââââââââââââ âââ âââââââââ ââââââââââ ââââ
+âââââââââââââââ âââ âââ ââââââââââââââââââââ ââââ
+âââââââââââ ââââââââââââââââââââ âââââââââ âââ ââââ
+âââââââââââ ââââââââ âââââââ âââ ââââââââ âââ âââ
+
+Welcome to the Splunk Advanced OpenTelemetry Workshop!
+======================================================
+
+macOS detected. Removing quarantine attributes...
+otelcol version v0.126.0
+Usage: loadgen [OPTIONS]
+Options:
+ -base Send base traces (enabled by default)
+ -health Send health traces
+ -security Send security traces
+ -logs Enable logging of random quotes to quotes.log
+ -json Output logs in JSON format (only applicable with -logs)
+ -count Number of traces or logs to send (default: infinite)
+ -h, --help Display this help message
+
+Example:
+ loadgen -health -security -count 10 Send 10 health and security traces
+ loadgen -logs -json -count 5 Write 5 random quotes in JSON format to quotes.log
+Creating workshop directories...
+â Created subdirectories:
+ âââ 1-agent-gateway
+ âââ 2-building-resilience
+ âââ 3-dropping-spans
+ âââ 4-sensitive-data
+ âââ 5-transform-data
+ âââ 6-routing-data
+ âââ 7-sum-count
+
+Creating configuration files for 1-agent-gateway...
+Creating OpenTelemetry Collector agent configuration file: 1-agent-gateway/agent.yaml
+â Configuration file created successfully: 1-agent-gateway/agent.yaml
+â File size: 4355 bytes
+
+Creating OpenTelemetry Collector gateway configuration file: 1-agent-gateway/gateway.yaml
+â Configuration file created successfully: 1-agent-gateway/gateway.yaml
+â File size: 3376 bytes
+
+â Completed configuration files for 1-agent-gateway
+
+Creating configuration files for 2-building-resilience...
+Creating OpenTelemetry Collector agent configuration file: 2-building-resilience/agent.yaml
+â Configuration file created successfully: 2-building-resilience/agent.yaml
+â File size: 4355 bytes
+
+Creating OpenTelemetry Collector gateway configuration file: 2-building-resilience/gateway.yaml
+â Configuration file created successfully: 2-building-resilience/gateway.yaml
+â File size: 3376 bytes
+
+â Completed configuration files for 2-building-resilience
+
+Workshop environment setup complete!
+Configuration files created in the following directories:
+ 1-agent-gateway/
+ âââ agent.yaml
+ âââ gateway.yaml
+ 2-building-resilience/
+ âââ agent.yaml
+ âââ gateway.yaml
+```
+
+{{% /tab %}}
+{{% /tabs %}}
+
+```text { title="Initial Directory Structure" }
+[WORKSHOP]
+âââ 1-agent-gateway
+âââ 2-building-resilience
+âââ 3-dropping-spans
+âââ 4-sensitive-data
+âââ 5-transform-data
+âââ 6-routing-data
+âââ 7-sum-count
+âââ loadgen
+âââ otelcol
+âââ setup-workshop.sh
+```
+
+{{< /step >}}
+
+{{% /exercise %}}
+
+{{< checkpoint "ã¯ãŒã¯ã·ã§ããç°å¢ã®æºåãå®äºããŸãã â **第1ç« : Agent Configuration** ãžé²ã¿ãŸãããã" >}}
diff --git a/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/_index.md b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/_index.md
new file mode 100644
index 0000000000..ea18a89f82
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/3-opentelemetry-collector-workshops/_index.md
@@ -0,0 +1,9 @@
+---
+title: OpenTelemetry Collector ã¯ãŒã¯ã·ã§ãã
+weight: 3
+time: 2 hours 15 minutes
+description: OpenTelemetry Collector ã 2 éšæ§æã§æ·±ãæãäžããŸããååã§ã¯ receiver / processor / exporter ã®åºç€ãåŠã³ãåŸåã§ã¯å®è·µçãªã·ããªãªãéã㊠agent ããã³ gateway ã®æ§æããŒãããæ§ç¯ããŸãã
+aliases:
+ - /ninja-workshops/3-opentelemetry-collector-workshops/
+layout: "hero"
+---
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/_index.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/_index.md
new file mode 100644
index 0000000000..e2d315d99a
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/_index.md
@@ -0,0 +1,42 @@
+---
+title: Dashboard Workshop
+description: Splunk Observability Cloud ã§ã«ã¹ã¿ã ããã·ã¥ããŒããæ§ç¯ããŸã â ãã£ãŒãããã£ã«ã¿ãŒãåæé¢æ°ãSignalFlow æ°åŒã
+weight: 7
+archetype: chapter
+authors: ["Pieter Hagen"]
+time: 45 minutes
+draft: false
+aliases:
+ - /ninja-workshops/7-dashboards-detectors/
+---
+Splunk Observability Cloud ã® **Dashboards** ã«é¢ããã¯ãŒã¯ã·ã§ãããžããããããã®ã»ãã·ã§ã³ã§ã¯ãæŽå¯ã«å¯ãã ããžã¥ã¢ã©ã€ãŒãŒã·ã§ã³ã®æ§ç¯ããã³ãºãªã³ã§äœéšããŠããã ããŸãã
+
+
+
+Splunk Observability Suite ã§å©çšå¯èœãªæ¢åã®ãã¢ããŒã¿ã䜿ã£ãŠäœæ¥ãé²ããŸããã¢ã¯ã»ã¹å¯èœãª **trial** ãŸã㯠**production** ã® Splunk Observability çµç¹ã§ããã°ãã©ãã§ã䜿ã£ãŠãã®ã¯ãŒã¯ã·ã§ãããé²ããããšãã§ããŸãã
+
+## ãã®ã¯ãŒã¯ã·ã§ããã§åŠã¶ããš
+
+### Dashboards
+
+ã¯ãŒã¯ã·ã§ããã®ååã§ã¯ãããã·ã¥ããŒããšãã£ãŒãã«çŠç¹ãåœãŠãŸãã
+
+* ããã·ã¥ããŒãã®çè§£ãšãã£ãŒãã®åœ¹å²
+* æ¢åãã£ãŒãã®ç·šéãšæ°èŠãã£ãŒãã®äœæ
+* ãã£ã«ã¿ãŒã®é©çšãšåæé¢æ°ã®å©çš
+* æ°åŒã®æ§ç¯ãšã«ã¹ã¿ãã€ãº
+* åå©çšããããã®ããã·ã¥ããŒããžã®ãã£ãŒãä¿å
+* é«åºŠãªãã£ãŒãäœæã®ããã® SignalFlow å
¥é
+
+
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-01-sample_data.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-01-sample_data.md
new file mode 100644
index 0000000000..e7ae68282a
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-01-sample_data.md
@@ -0,0 +1,27 @@
+---
+title: ãµã³ãã«ããŒã¿ã®å Žæã確èªãã
+linkTitle: 1.01. Sample Data
+weight: 1.01
+time: 10 minutes
+---
+
+## 1. ãµã³ãã«ããŒã¿ãæ¢çŽ¢ãã
+
+å©çšå¯èœãªããã·ã¥ããŒãã®äžèЧããã**Sample Data (2)** ãšããååã®ã°ã«ãŒããæ¢ããŸãã
+
+ãã®ã°ã«ãŒãã«ã¯ããµã³ãã«ã¡ããªã¯ã¹ã䜿çšããŠæ§ç¯ãããå¯èŠåã玹ä»ããããã·ã¥ããŒããå«ãŸããŠããŸãããããã®ããã·ã¥ããŒããéããŠãSplunk Observability ã®ãã£ãŒããããã·ã¥ããŒãã§ããŸããŸãªããŒã¿ãã©ã®ããã«è¡šçŸã§ããããææ¡ã§ããŸãã
+
+
+
+---
+
+**Sample Data** ããã·ã¥ããŒãã°ã«ãŒããã¯ãªãã¯ããŠå±éãã**Sample Charts (3)** ããã·ã¥ããŒããéžæããŸãã
+
+ãã®ããã·ã¥ããŒãã§ã¯ãSplunk Observability ã§å©çšã§ããããŸããŸãªãã£ãŒãã¿ã€ããã¹ã¿ã€ã«ããã©ãŒããããªãã·ã§ã³ã玹ä»ããŠããŸããããã·ã¥ããŒããããã«æè»ã§ã«ã¹ã¿ãã€ãºå¯èœããäœæããã®ã«æé©ã§ãã
+
+ãµã³ãã«ããŒã¿ã¯ 10 ååšæã§åäœããæéã®çµéãšãšãã«ç°ãªããã¿ãŒã³ãæåãçæããŸãã
+ãããã®å€åãå®éã«ç¢ºèªããã«ã¯ãããã·ã¥ããŒãå³äžã®æéç¯å²ã **Last 15 minutes** ã«å€æŽããããããåºãç¯å²ã§ç¢ºèªãããå Žå㯠**Last 1 hour** ãéžæããŠãã ãããããã«ãããããŒã¿ãæŽæ°ãããããŸããŸãªç¶æ
ãåšæçã«å€åããŠããæ§åã芳å¯ã§ããŸãã
+
+å°ãæéãåã£ãŠãã®ããã·ã¥ããŒãå
ã®ãã£ãŒããæ¢çŽ¢ããŠã¿ãŠãã ããããããããããµã³ãã«ããŒã¿ãã©ã®ããã«å¯èŠåã§ãããã«ã€ããŠç°ãªãèŠç¹ãæäŸããŠããŸãã
+
+
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-02-exploring_charts.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-02-exploring_charts.md
new file mode 100644
index 0000000000..027df61d54
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-02-exploring_charts.md
@@ -0,0 +1,42 @@
+---
+title: Exploring Charts
+linkTitle: 1.02. Exploring Charts
+weight: 1.02
+---
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãSplunk Observability ã«ããããã£ãŒãã®æ§ç¯æ¹æ³ãšè¡šç€ºæ¹æ³ã確èªããŠãããŸããæ¢åã®ãã£ãŒãã芳å¯ãæäœããããšã§ããã£ãŒããšãã£ã¿ã®åäœã®ä»çµã¿ïŒããŒã¿ãœãŒã¹ã®éžææ¹æ³ãããžã¥ã¢ã«ãªãã·ã§ã³ã®æ§ææ¹æ³ãåçš®èšå®ã衚瀺ã«ã©ã圱é¿ãããïŒãäœæã§ããŸãã
+
+## 1. ãã£ãŒããéžæãã
+
+ãŸã㯠**SAMPLE CHARTS** ããã·ã¥ããŒããéããç¶æ
ã«ããããã·ã¥ããŒãå³äžã®æéç¯å²ã **-5M** (Last 5 Minutes) ã«æ»ããã**reset to default** ãéžæããŠãã ããã
+
+**Latency histogram** ãã£ãŒããèŠã€ãããã£ãŒãå³äžã® **äžç¹ãªãŒããŒ** (...) **(1)** ãã¯ãªãã¯ããŸããã¡ãã¥ãŒãã **Open (3)** ãéžæããŸãããããã¯ããã£ãŒãã¿ã€ãã«ïŒ**Latency histogram**ïŒ**(2)** ãçŽæ¥ã¯ãªãã¯ããŠéãããšãã§ããŸãã
+
+
+
+---
+ãã£ãŒããšãã£ã¿ãéããšãLatency histogram ãã£ãŒãã®æ§æèšå®ã衚瀺ãããŸãã
+
+ãã£ãŒããšãã£ã¿ã¯ãããŒã¿ã®å¯èŠåæ¹æ³ãå¶åŸ¡ããããã®å Žæã§ãããã£ãŒãã¿ã€ãã®å€æŽã倿颿°ã®é©çšãæéèšå®ã®èª¿æŽããã®ä»ã®ããžã¥ã¢ã«é¢é£ãããŒã¿é¢é£ã®ãªãã·ã§ã³ããç®çã«åãããŠã«ã¹ã¿ãã€ãºã§ããŸãã
+
+
+
+---
+
+**Plot Editor (1)** ã¿ãã® **Signal (2)** ã»ã¯ã·ã§ã³ã«ã¯ãçŸåšäœ¿çšãããŠããã¡ããªã¯ã¹ `demo.trans.latency` **(3)** ã衚瀺ãããŠããŸãããã®ã·ã°ãã«ã¯ããã£ãŒãã§ãããããããŠããã¬ã€ãã³ã·ãŒããŒã¿ã衚ããŠããŸãããã®ãšãªã¢ã§ã¯ãã·ã°ãã«ãç·šéããããæ¯èŒãæ
å ±ã®è¿œå ã®ããã«å¥ã®ã·ã°ãã«ã远å ãããã§ããŸãã
+
+ãã£ãŒãã«ã¯ãè€æ°ã® **Line** ããããã衚瀺ãããŠããããšãããããŸãã`18 ts` **(4)** ãšããã©ãã«ã¯ããã£ãŒããçŸåš **18 åã®åå¥ã®ã¡ããªã¯ã¹æç³»å** ãããããããŠããããšã瀺ããŠããŸãã
+
+
+ããŸããŸãªå¯èŠåã¹ã¿ã€ã«ã詊ãããã«ããšãã£ã¿ã«ããåãã£ãŒãã¿ã€ãã®ã¢ã€ã³ã³ãã¯ãªãã¯ããŠã¿ãŠãã ãããåã¢ã€ã³ã³ã«ããŠã¹ã«ãŒãœã«ãåããããšååã衚瀺ãããããããã®ã¿ã€ããäœã衚ããŠããããææ¡ã§ããŸãã
+
+
+
+ããšãã°ã**Heat Map** ã¢ã€ã³ã³ãã¯ãªãã¯ããŠãåãããŒã¿ãå¥ã®åœ¢åŒã§ã©ã®ããã«è¡šçŸããããã確èªããŠã¿ãŸãããã
+
+
+
+{{% notice title="Note" style="info" %}}
+ã¡ããªã¯ã¹ã¯ããŸããŸãªãã£ãŒãã¿ã€ãã§å¯èŠåã§ããŸãã匷調ãããã€ã³ãµã€ããæããã衚ããã®ãéžãã§ãã ããã
+
+å©çšå¯èœãªãã£ãŒãã¿ã€ããšãã®äœ¿ãåãã®è©³çްã«ã€ããŠã¯ã[Choosing a chart type.](https://docs.splunk.com/Observability/data-visualization/charts/chart-types.html#chart-types) ãåç
§ããŠãã ããã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-03-editing-chart.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-03-editing-chart.md
new file mode 100644
index 0000000000..0a75222958
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-03-editing-chart.md
@@ -0,0 +1,45 @@
+---
+title: Editing Charts
+linkTitle: 1.04. Editing Charts
+weight: 1.04
+---
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãæ¢åã®ãã£ãŒããç·šéããããšã§ããã£ãŒããã©ã®ããã«æ§æãããŠããããæ¢ã£ãŠãããŸããããã¯ããã£ãŒããšãã£ã¿ãŒãå®éã«æäœããªããããã£ãŒãã®èšå®ãããŒã¿ãœãŒã¹ãå¯èŠåãªãã·ã§ã³ãã©ã®ããã«çµã¿åããã£ãŠããããçè§£ããããã§æé©ãªæ¹æ³ã§ãã
+
+---
+**Latency histogram** ãã£ãŒãããã£ãŒããšãã£ã¿ãŒã§éããç¶æ
ã§ãã¯ãŒã¯ã·ã§ããçšã®èšå®ãå§ããŸãããã
+
+**visualization** ãã€ã³ã® **Line chart** ã¿ã€ãã¢ã€ã³ã³ **(1)** ãã¯ãªãã¯ããŠããã£ãŒãã¿ã€ãã倿ŽããŸããããŒã¿ãæãç·ãããããšããŠè¡šç€ºãããããã«ãªããŸãã
+
+
+
+## 2. ãã£ãŒãã®æéãŠã£ã³ããŠã®å€æŽ
+
+ãã£ãŒãã®æéç¯å²ã調æŽããŠãããéå»ã®ããŒã¿ã衚瀺ã§ããŸãããããè¡ãã«ã¯ããã£ãŒããšãã£ã¿ãŒå³äžé
ã® **Time (1)** ããããããŠã³ãã¯ãªãã¯ãã**Past 15 minutes (2)** ãéžæããŸãã
+
+ããã«ããæéãŠã£ã³ããŠãæ¡å€§ãããããé·ãæéã«ãããã¡ããªã¯ã¹ã®åŸåã確èªã§ããããã«ãªããŸãã
+
+
+
+## 3. ããŒã¿ããŒãã«ã®æ¢çŽ¢
+
+ãã£ãŒããšãã£ã¿ãŒã® **Data Table (1)** ã¿ããã¯ãªãã¯ããŸãã
+
+**Data Table** ã§ã¯ããã£ãŒããæ¯ããŠããã¡ããªã¯ã¹æç³»åã®å
éšã確èªã§ããŸãã
+
+
+
+ããŒãã«ã®åè¡ã¯1ã€ã®æç³»åã衚ããååã¯ãã®æç³»åã«é¢é£ä»ãããããã£ã¡ã³ã·ã§ã³ã瀺ããŸããã¡ããªã¯ã¹ `demo.trans.latency` ã«ã¯ã以äžã®ãã£ã¡ã³ã·ã§ã³ã衚瀺ãããŸã:
+
+- `demo_datacenter` **(2)**
+- `demo_customer` **(3)**
+- `demo_host` **(4)**
+
+**`demo_datacenter`** åã«ã¯ã2ã€ã®ããŒã¿ã»ã³ã¿ãŒ: **Paris (5)** ãš **Tokyo (6)** ãããããšãããããŸãã
+ããããã«è€æ°ã®æç³»åãé¢é£ä»ããããŠããŸãã
+
+ã«ãŒãœã«ããã£ãŒãäžã§ïŒæé軞æ¹åã«æ°Žå¹³ã«ïŒç§»åããããšã**Data Table** ã¯ãªã¢ã«ã¿ã€ã ã§æŽæ°ãããçŸåšã®æç¹ã®å€ãåæ ãããŸãããã£ãŒãå
ã®ç¹å®ã®ç·ãã¯ãªãã¯ãããšããã®æç³»åãããŒãã«äžã«ãã³çããããåºå®å€ã衚瀺ãããŸãããã㯠**pinned value (7)** ã§ç€ºãããŸãã
+
+---
+æºåãã§ãããã**Plot editor (8)** ã¿ããã¯ãªãã¯ããŠããŒã¿ããŒãã«ãéããŸãã
+
+次ã«ãåŸã§åå©çšã§ããããã«ããã®ãã£ãŒããããã·ã¥ããŒãã«ä¿åããŸãããïŒ
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-04-saving-charts.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-04-saving-charts.md
new file mode 100644
index 0000000000..ede2c4ce68
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-04-saving-charts.md
@@ -0,0 +1,67 @@
+---
+title: ãã£ãŒããšããã·ã¥ããŒãã®ä¿å
+linkTitle: 1.04. ãã£ãŒãã®ä¿å
+weight: 1.04
+---
+
+ããŒãºã«åãããŠãã£ãŒããã«ã¹ã¿ãã€ãºããããæ¬¡ã®ã¹ããããšããŠããã·ã¥ããŒãã®äžéšãšããŠä¿åããŸããäœæãããã£ãŒããä¿åããããšã§ãåå©çšãå
±æããããŠæéã®çµéãšãšãã«éèŠãªå¯èŠåãç£èŠããããšãå¯èœã«ãªããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ããã£ãŒãã«ååãšèª¬æãä»ããæ¹æ³ãããã³åŸã§ç°¡åã«ã¢ã¯ã»ã¹ã§ããããã«ããã·ã¥ããŒãã«è¿œå ããæ¹æ³ãåŠã³ãŸãã
+
+## 1. ãã£ãŒãã®ä¿å
+
+ãŸãããã£ãŒããä¿åããããã«ãããããããååãšèª¬æãä»ããŸãããã
+
+çŸåš **Copy of Latency Histogram** ãšã©ãã«ä»ããããŠãããã£ãŒãã¿ã€ãã«ãã¯ãªãã¯ãã**ãActive Latencyã(1)** ã«ååã倿ŽããŸãã
+
+次ã«ããã£ãŒãã®èª¬æãæŽæ°ããŸããæ¢åã®ããã¹ã **Spread of latency values across time** ãã¯ãªãã¯ãã以äžã®ããã«å€æŽããŸãïŒ
+**Overview of latency values in real-time**ã**(2)**
+
+ãããã®æŽæ°ã«ããããã£ãŒããå€§èŠæš¡ãªããã·ã¥ããŒãã®äžéšãšãªã£ãããä»ã®äººãšå
±æããããããéã«ãèå¥ãšçè§£ã容æã«ãªããŸãã
+
+
+
+{{% button style="blue" %}}Save As{{% /button %}} **(3**) ãã¿ã³ãã¯ãªãã¯ããŠãä¿åããã»ã¹ãéå§ããŸãããã£ãŒãã«ã¯å
ã»ã©èšå®ãã **Active Latency** ãšããååã䜿çšãããŸãããå¿
èŠã«å¿ããŠããã§ååãæŽæ°ããããšãã§ããŸãã
+
+æºåãã§ãããã{{% button style="blue" %}}Ok{{% /button %}} **(1)**
+ ãã¿ã³ãã¯ãªãã¯ããŠç¢ºèªããç¶è¡ããŸãã
+
+
+
+## 2. ããã·ã¥ããŒãã®äœæ
+
+ããã§ãã£ãŒããä¿åã§ããããã«ãªããŸãããããããä¿åããå Žæãã€ãŸã**ããã·ã¥ããŒã**ãå¿
èŠã§ãã
+
+ããã·ã¥ããŒãã¯ãé¢é£ãããã£ãŒããæŽçããŠã°ã«ãŒãåããã®ã«åœ¹ç«ã¡ãéèŠãªã¡ããªã¯ã¹ã 1 ã€ã®ãã¥ãŒã§ç£èŠããããããŸãããã®ã¯ãŒã¯ã·ã§ããã§ã¯ãããããæ§ç¯ãããã£ãŒããæ ŒçŽããããã®**æ°ããããã·ã¥ããŒã**ãäœæããŸãã
+
+**Choose dashboard** ãã€ã¢ãã°ã§ã{{% button style="blue" %}}New Dashboard{{% /button %}} **(1)** ãã¿ã³ãã¯ãªãã¯ããŸãã
+
+**éèŠ**: æ¢åã®ããã·ã¥ããŒããéžæããªãã§ãã ããããã®æŒç¿ã§ã¯å¿
ãæ°ããããã·ã¥ããŒããäœæããŠãã ããã
+
+
+
+**New Dashboard** ãã€ã¢ãã°ã衚瀺ãããæ°ããããã·ã¥ããŒãã®è©³çްãèšå®ã§ããŸãã
+
+ãŸããããã·ã¥ããŒãã«ååãä»ããŸãããã®ã¯ãŒã¯ã·ã§ããã§ã¯ã次ã®åœ¢åŒã䜿çšããŸãïŒ**YOUR_NAME-Dashboard**
+**YOUR_NAME** ããèªèº«ã®ååã«çœ®ãæããŠãããã·ã¥ããŒããèå¥ããããããŠãã ããã
+
+次ã«ã**permissions** ãæŽæ°ããŸãã**Restricted Read and Write access** ã«èšå®ããèªåïŒãŸãã¯ç¹å®ã®ãŠãŒã¶ãŒïŒã®ã¿ãããã·ã¥ããŒãã衚瀺ããã³å€æŽã§ããããã«ããŸãããèªèº«ã®ãŠãŒã¶ãŒã¢ã«ãŠã³ããå«ãŸããŠãããèªã¿åããšæžã蟌ã¿ã®äž¡æ¹ã®ã¢ã¯ã»ã¹æš©ãæã£ãŠããããšã確èªããŠãã ããã
+
+
+
+ããã§ãpermissions ã«èªåã®ãŠãŒã¶ãŒã¢ã«ãŠã³ãã衚瀺ãããã¯ãã§ããããã¯ã**çŸåšãã®ããã·ã¥ããŒããç·šéã§ããã®ã¯èªåã ãã§ãã**ããšãæå³ããŸãã
+
+å¿
èŠã«å¿ããŠãäžã®ããããããŠã³ãã远å ã®ãŠãŒã¶ãŒãããŒã ãéžæããŠè¿œå ã§ããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ããã®ç®çã®ãããå¶éãè§£é€ããŸããããã»ãã·ã§ã³äžã«ã¢ã¯ã»ã¹ãå¶éãããªãããã«ãpermissions ã®èšå®ã ***Everyone can Read and Write*** ã«å€æŽããŸãã
+
+
+
+{{% button style="blue" %}}Save{{% /button %}} ãã¿ã³ãã¯ãªãã¯ããŠç¶è¡ããŸãã
+æ°ããããã·ã¥ããŒããäœæãããèªåçã«éžæãããããããã£ãŒããçŽæ¥ãã®ããã·ã¥ããŒãã«ä¿åã§ããŸãã
+
+
+
+æ°ããäœæããããã·ã¥ããŒããéžæãããŠããããšã確èªã **(1)**ã{{% button style="blue" %}}Ok{{% /button %}} ãã¿ã³ **(2)** ãã¯ãªãã¯ããŠç¶è¡ããŸãã
+
+ããã§ããã·ã¥ããŒãã«ç§»åããŸããå·Šäžé
ã«ã**YOUR_NAME-DASHBOARD** ãåãååã®ããã·ã¥ããŒãã°ã«ãŒãã®äžéšãšããŠè¡šç€ºãããŸãããã®ããã·ã¥ããŒãã°ã«ãŒãã«è¿œå ã®ããã·ã¥ããŒãã远å ããŠãããŸããŸãªãŠãŒã¹ã±ãŒã¹ãã·ã¹ãã ããŸãã¯ãããžã§ã¯ãã«é¢é£ãããã£ãŒããæŽçã§ããŸãã
+
+
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-05-new-chart.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-05-new-chart.md
new file mode 100644
index 0000000000..b03be997fd
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-05-new-chart.md
@@ -0,0 +1,28 @@
+---
+title: Create New Chart
+linkTitle: 1.05. Create New Chart
+weight: 1.05
+---
+
+### 1 æ°ãããã£ãŒãã®äœæ
+
+ããã§ã¯ãæ°ãããã£ãŒããäœæãããããŸã§äœæ¥ããŠããããã·ã¥ããŒãã«è¿œå ããŠã¿ãŸãããã
+
+ãŸããç»é¢äžéšäžå€®ã®ãã©ã¹ã¢ã€ã³ã³ **(1)** ãã¯ãªãã¯ããŸããããããããŠã³ãã **Chart (2)** ãéžæããŠãã ããã
+ãããã¯ã{{< button style="blue">}}+ New Chart{{< /button >}} ãã¿ã³ **(3)** ãã¯ãªãã¯ããããšã§ãçŽæ¥æ°ãããã£ãŒããäœæããããšãã§ããŸãã
+
+
+
+ããã§ãèšå®å¯èœãªç©ºã®ãã£ãŒããã³ãã¬ãŒãã衚瀺ãããŸã:
+
+
+
+å¯èŠåããã¡ããªã¯ã¹ã远å ããããšããå§ããŸããããä»åã®äŸã§ã¯ããããŸã§ãšåãã **`demo.trans.latency`** ãåŒãç¶ã䜿çšããŸãã
+
+**Plot Editor (1)** ã® **Signal (2)** ã»ã¯ã·ã§ã³ã«ç§»åããå
¥åãã£ãŒã«ãã« **`demo.trans.latency`(3)** ãå
¥åããŸããããã«ãããã¬ã€ãã³ã·ãŒã®æç³»åããŒã¿ããã£ãŒãã«èªã¿èŸŒãŸããå¯èŠåã®æ§ç¯ãšã«ã¹ã¿ãã€ãºãéå§ã§ããããã«ãªããŸãã
+
+
+
+ããã§ãèŠæ
£ããã©ã€ã³ãã£ãŒãã« **18 åã®æç³»å (4)** ã衚瀺ãããŠããã¯ãã§ããæè¿ã®ã¢ã¯ãã£ããã£ã確èªããã«ã¯ã**Time dropdown (1)** ãã **Past 15 minutes** ãéžæããŠæéç¯å²ã倿ŽããŠãã ããã
+
+
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-06-filtering.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-06-filtering.md
new file mode 100644
index 0000000000..bbab1a1fbf
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-06-filtering.md
@@ -0,0 +1,37 @@
+---
+title: Using Filters & Analytics
+linkTitle: 1.06. Filters & Analytics
+weight: 1.06
+---
+
+### 1. ãã£ã«ã¿ãªã³ã°ãšåæ
+
+**Splunk Observability** ã§ã¯ã**ãã£ã«ã¿ãŒ**ãš**åæé¢æ°**ãæŽ»çšããããšã§ã倧éã®ã¡ããªãã¯ããŒã¿ãç°¡åã«æ¢çŽ¢ã§ããŸãããã£ã«ã¿ãŒã¯ç¹å®ã®ãµãŒãã¹ããã¹ãããã±ãŒã·ã§ã³ãªã©ãããŒã¿ã®ç¹å®ã®ã»ã°ã¡ã³ãã«çŠç¹ãçµã蟌ãã®ã«åœ¹ç«ã¡ãåæé¢æ°ã¯ãã®ããŒã¿ã倿ã»åæããŠããæ·±ãæŽå¯ãåŸãããã«äœ¿çšããŸãã
+
+ããã§ã¯ **Paris ããŒã¿ã»ã³ã¿ãŒ**ã«ããŒã¿ãçµã蟌ãããšã§ãããã¿ãŒã²ãããçµã£ãåæãé©çšã§ããããã«ããŸããããã¯**ãã£ã«ã¿ãŒ**ã䜿çšããŠè¡ããŸãã
+
+ãŸã **Plot Editor** ã¿ãã«æ»ããŸããäžã®ã¹ã¯ãªãŒã³ã·ã§ããã«ç€ºãããã«ã{{% button style="blue" %}}Add Filter{{% /button %}} ãã¿ã³ **(2)** ãã¯ãªãã¯ããŸãã
+
+å©çšå¯èœãªãã£ã¡ã³ã·ã§ã³ã衚瀺ããããŸã§å°ãåŸ
ã¡ãŸããæ¬¡ã«ã以äžãå®è¡ããŸã:
+
+* ãã£ã«ã¿ãŒã®ãã£ã¡ã³ã·ã§ã³ãšã㊠**demo_datacenter (1)** ãéžæããŸãã
+* ãã£ã«ã¿ãªã³ã°ããå€ãšã㊠**Paris (2)** ãéžæããŸãã
+
+ãã®ãã£ã«ã¿ãŒã«ããããã£ãŒãã«ã¯ Paris ããŒã¿ã»ã³ã¿ãŒããã®ã¿ã€ã ã·ãªãŒãºã®ã¿ã衚瀺ãããããã«ãªããåæãããçŠç¹ãçµã£ãæçŸ©ã®ãããã®ã«ãªããŸãã
+
+
+
+---
+ãã£ãŒããšãã£ã¿ãŒã® **F(x) (1)** ã«ã©ã ã§ã{{% button style="blue" %}}Add Analytics{{% /button %}} ãã¿ã³ãã¯ãªãã¯ããŠåæé¢æ°ãé©çšããŸãã
+ããããããŠã³ãªã¹ããã **`Percentile` (2)** ãéžæããç¶ã㊠**`Percentile:Aggregation` (3)** ãªãã·ã§ã³ãéžæããŸãã
+衚瀺ãããããã«ã§ã¯ãããŒã»ã³ã¿ã€ã«å€ã 90 ã®ãŸãŸã«ããŠãããŸããããã«ãããéžæããã¿ã€ã ã·ãªãŒãºã® 90 ããŒã»ã³ã¿ã€ã«ããã£ãŒãã«è¡šç€ºãããŸãã
+
+ãã®ã³ã³ããã¹ãã«ãããŠã90 ããŒã»ã³ã¿ã€ã«ãšã¯ãã¬ã€ãã³ã·ãŒæž¬å®å€ã® 90% ããããäžåãå€ãèšãæããã°ã**æãé«ã 10%** ã®å€ã ãããã®ãã€ã³ããè¶
ãããšããå€ã衚ããŸããããã¯ãææªã®ã±ãŒã¹ãšããŠã®éåžžå€ãã®ããã©ãŒãã³ã¹ãçè§£ããã®ã«æçšãªæ¹æ³ã§ãããææçºçããã¹ãã€ã¯ãé€å€ãã€ã€ãã¬ã€ãã³ã·ãŒã蚱容ã§ããªãã¬ãã«ã«è¿ã¥ããŠãããšãã«ã¯è¡šç€ºãããŸãã
+
+颿°ãé©çšããã«ã¯ãããã«ã®å€åŽã®ä»»æã®å Žæãã¯ãªãã¯ããŠéžæã確å®ããã ãã§ã **(4)**ã
+
+
+
+**Percentile** 颿°ããã³ãã®ä»ã®é¢æ°ã®è©³çްã«ã€ããŠã¯ã[Chart Analytics](https://docs.splunk.com/Observability/data-visualization/charts/gain-insights-through-chart-analytics.html#gain-insights-through-chart-analytics) ãåç
§ããŠãã ããã
+
+---
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-07-timeshift.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-07-timeshift.md
new file mode 100644
index 0000000000..b3fd9f6d1e
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-07-timeshift.md
@@ -0,0 +1,57 @@
+---
+title: Using TimeShift & Formula's
+linkTitle: 1.07. TimeShift & Formula's
+weight: 1.07
+---
+
+### 1. Timeshift åæé¢æ°ã®å©çš
+
+å€ãã®å ŽåãçŸåšã®ããã©ãŒãã³ã¹ãéå»ã®ããŒã¿ãšæ¯èŒããããšã¯æçšã§ããããšãã°ããã¬ã³ãããªã°ã¬ãã·ã§ã³ããŸãã¯æéã®çµéã«äŒŽãæ¹åãç¹å®ããéã«åœ¹ç«ã¡ãŸãã**Timeshift** 颿°ã䜿çšãããšãæç³»åããŒã¿ãéå»ã«ã·ããããŠãéå»ã®å€ãšçŸåšã®å€ã䞊ã¹ãŠè¡šç€ºã§ããããããã®æ¯èŒãç°¡åã«ãªããŸãã
+
+ãŸãã**Signal A** ã®æšªã«ãã **`...`** ã¡ãã¥ãŒ **(1)** ãã¯ãªãã¯ããããããããŠã³ãã **Clone (2)** ãéžæã㊠**Signal A** ãã¯ããŒã³ããŸãã
+
+ã·ã°ãã«ã **ã¯ããŒã³** ãããšãåãã¡ããªã¯ã¹ããã£ã«ã¿ãŒãèšå®ãæã€åäžã®ã³ããŒãäœæãããŸãããã®è€è£œïŒ**Signal B**ïŒã¯ãå
ã®ã·ã°ãã«ã倿Žããããšãªãã**Timeshift** ãé©çšã㊠1 é±éåã®ã¡ããªã¯ã¹ãã©ã®ãããªãã®ã ã£ãããå¯èŠåãããªã©ããããªãèšç®ãæ¯èŒã«äœ¿çšã§ããŸãã
+
+
+---
+ã¯ããŒã³åŸã**Signal B (1)** ãšããååã®æ°ããã·ã°ãã«ã衚瀺ãããŸãããã㯠**Signal A** ã®æ£ç¢ºãªã³ããŒã§ãããããäž¡æ¹ã®ã·ã°ãã«ã¯åãæéç¯å²ã§åãããŒã¿ã衚瀺ããŸãããã®çµæããã£ãŒãäžã§ **å®å
šã«éãªã£ãŠ** 衚瀺ããã1 æ¬ã®ç·ããååšããªãããã«èŠããŸãã
+
+æ¯èŒãæå³ã®ãããã®ã«ããããã**Signal B** ã« **Timeshift** ãé©çšããŠããã®ããŒã¿ã 1 é±éåã«ã·ãããããŸããããã«ãããçŸåšã®ã¬ã€ãã³ã·ã®ãã¬ã³ããå
é±ã®åæå»ã®ãã¬ã³ããšæ¯èŒã§ããããã«ãªããŸãã
+
+Signal B ã®æšªã«ãã **F(x)** åã§ {{% button style="blue" %}} **+** {{% /button %}} **(2)** ãã¯ãªãã¯ãããªã¹ããã **Timeshift (3)** 颿°ãéžæããŸãã
+
+
+---
+ããã³ããã衚瀺ãããããã¿ã€ã ã·ããå€ãšã㊠**1w**ïŒãŸã㯠7 æ¥ã®å Žå㯠**7d**ïŒ**(4)** ãå
¥åããŸããããã«ã®å€åŽ **(5)** ãã¯ãªãã¯ããŠå€æŽã確å®ããŸãã
+
+ããã«ããã**Signal B** ã®ããŒã¿ã 1 é±éåã«ã·ãããããçŸåšã®ã¬ã€ãã³ã·ã®ãã¬ã³ããå
é±ã®åæå»ã®ãã¬ã³ããšèŠèŠçã«æ¯èŒã§ããããã«ãªããŸãã
+
+
+---
+**Signal B** ã®è²ã倿Žããã«ã¯ããã®è¡ã®å³ç«¯ã«ãã âïž èšå®ã¢ã€ã³ã³ **(1)** ãã¯ãªãã¯ããŠèšå®ã¡ãã¥ãŒãéããŸããæ¬¡ã«ã**Plot Color** ãšããŠãã³ã¯ **(2)** ãªã©ãéžæãããã£ãŒãäžã§ **Signal B** ãå
ã®ã·ã°ãã«ãšèŠèŠçã«åºå¥ã§ããããã«ããŸãã
+å®äºãããã{{% button style="gray" %}} Close {{% /button %}} **(3)** ãã¯ãªãã¯ããŸãã
+
+
+---
+ããã§ããã£ãŒãäžã« 2 ã€ã®ããããã衚瀺ãããã¯ãã§ããéè²ã§è¡šç€ºãããçŸåšã®ã¬ã€ãã³ã·ã® *p90*ïŒ**Signal A**ïŒãšããã³ã¯è²ã§è¡šç€ºããã 1 é±éåã® *p90*ïŒ**Signal B**ïŒã§ãã
+
+äž¡è
ã®éããè§£éããããããããã**Area chart** ã¢ã€ã³ã³ **(1)** ãã¯ãªãã¯ããŠå¯èŠåã¹ã¿ã€ã«ã倿ŽããŸããããã«ããæ²ç·ã®äžã®é åã匷調ãããå
é±ã®ã¬ã€ãã³ã·ãçŸåšã®å€ããé«ãã£ãå ŽåãèŠã€ãããããªããŸãã
+
+次ã«ãOverride ããŒã® **Time (2)** ã®æšªã«ãããã£ãŒã«ããã¯ãªãã¯ããããããããŠã³ãã **Past Hour (3)** ãéžæããŠæéç¯å²ãæŽæ°ããŸãã
+
+
+---
+
+### 2. FormulasïŒæ°åŒïŒã®å©çš
+
+次ã«ãããã«äžæ©é²ãã§ã2 ã€ã®æéã·ãããããã¡ããªã¯ã¹å€ã®å·®åãèšç®ããŠã¿ãŸããããããšãã°ãæ¬æ¥ã®ããŒã¿ãã¡ããã© 1 é±éåã®ããŒã¿ãšæ¯èŒããŸãã
+
+è¡ **C (1)** ã§ {{% button style=blue %}}Enter Formula{{% /button %}} ãã¿ã³ãã¯ãªãã¯ãã**A - B** **(2)** ãšå
¥åã㊠**Signal A** ãã **Signal B** ãåŒããŸããããã«ããã**C** ãšã©ãã«ä»ããããæ°ããèšç®æžã¿ã·ã°ãã«ãäœæãããŸãã
+
+ãã®æ°åŒã®çµæã®ã¿ã«æ³šç®ããããã**A (3)** ãš **B (4)** ã®æšªã«ããç®ã®ã¢ã€ã³ã³ãã¯ãªãã¯ããŠä»ã®ã·ã°ãã«ãé衚瀺ã«ãã**C** ã®ã¿ã衚瀺ãããããã«ããŸãã
+
+
+
+ããã§ãçŸåšã®ã¡ããªã¯ã¹å€ïŒ**A**ïŒãš 1 é±éåã®å€ïŒ**B**ïŒã®å·®åã衚ã 1 æ¬ã®ç·ã衚瀺ãããã¯ãã§ãããã£ãŒãã§ã¯ãäžéšã®å€ãè² ãšããŠè¡šç€ºãããå ŽåããããŸããããã¯ããã®æç¹ã§å€ãã¡ããªã¯ã¹ïŒ**B**ïŒãçŸåšã®ã¡ããªã¯ã¹ïŒ**A**ïŒãããé«ãã£ãå Žåã«çºçããŸãã
+
+ããžã¥ã¢ã«ãã£ãŒãåæã«ã€ããŠèŠãŠããŸããã®ã§ã次ã®ã»ã¯ã·ã§ã³ã§ã¯å
éšã«ç®ãåãããã£ãŒããšãã£ãã¯ã¿ãŒãæ¯ãã SignalFlow ã確èªããŠãããŸãããïŒ
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-08-signalflow.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-08-signalflow.md
new file mode 100644
index 0000000000..09dd18d46d
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-08-signalflow.md
@@ -0,0 +1,54 @@
+---
+title: Using SignalFlow
+linkTitle: 1.08. Signalflow
+weight: 1.08
+---
+
+## 1. SignalFlow ã®ç޹ä»
+
+ããã§ã¯ãSplunk Observability Cloud ãæ¯ãã匷åãªåæèšèªã§ãã **SignalFlow** ã«ã€ããŠè©³ããèŠãŠãããŸããSignalFlow ã䜿ããšãç£èŠããžãã¯ãã³ãŒããšããŠå®çŸ©ã§ããã¡ããªã¯ã¹ãæè»ãã€ãªã¢ã«ã¿ã€ã ã«æ±ããã¢ã©ãŒãçºè¡ãèªååã§ããŸãã
+
+**Splunk Infrastructure Monitoring** ã®äžæ žã«ã¯ãã¹ããªãŒãã³ã°ã¡ããªã¯ã¹ããŒã¿ããªã¢ã«ã¿ã€ã ã«åŠçãã **SignalFlow analytics engine** ããããŸããSignalFlow 㯠Python ã«äŒŒãæ§æã§èšè¿°ãã**metric time series (MTS)** ãå
¥åãšããŠåãåãã倿ãèšç®ãè¡ããæ°ãã MTS ãåºåããèšç®åŠçãæ§ç¯ã§ããŸãã
+
+SignalFlow ã®ä»£è¡šçãªãŠãŒã¹ã±ãŒã¹ã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
+
+* çŸåšå€ãšéå»ã®ãã¬ã³ãã®æ¯èŒ (äŸ: 鱿¬¡æ¯èŒ)
+* 忣ããŒã»ã³ã¿ã€ã«ãã£ãŒãã䜿ã£ãæ¯éå£ã¬ãã«ã®æŽå¯ã®äœæ
+* å€åçããããå€ã®ç£èŠ (äŸ: Service Level Objective (SLO) éåã®æ€ç¥)
+* çžé¢ãããã£ã¡ã³ã·ã§ã³ã®ç¹å® (äŸ: ãã£ã¹ã¯å®¹éäžè¶³ã¢ã©ãŒãã®å¢å ãšé¢é£ãããµãŒãã¹ã®ç¹å®)
+
+SignalFlow ããŒã¹ã®èšç®åŠçã¯ãã¡ããªã¯ã¹ãéžæãåæé¢æ°ãããžã¥ã¢ã«çã«é©çšããããšã§ã**Chart Builder** ã€ã³ã¿ãŒãã§ã€ã¹äžã§çŽæ¥äœæã§ããŸããããé«åºŠãªãŠãŒã¹ã±ãŒã¹ã§ã¯ã**SignalFlow API** ã䜿ã£ãŠ SignalFlow ããã°ã©ã ãçŽæ¥èšè¿°ã»å®è¡ããããšãã§ããŸãã
+
+SignalFlow ã«ã¯æç³»åããŒã¿ã«å¯ŸããŠåäœããè±å¯ãªçµã¿èŸŒã¿é¢æ°ãçšæãããŠãããè€éãªã·ã¹ãã å
šäœã«ãããåçãã€ãªã¢ã«ã¿ã€ã ãªç£èŠã«æé©ã§ãã
+
+{{% notice title="Info" style="info" %}}
+SignalFlow ã®è©³çްã«ã€ããŠã¯ [Analyze incoming data using SignalFlow](https://docs.splunk.com/Observability/infrastructure/analytics/signalflow.html) ãåç
§ããŠãã ããã
+{{% /notice %}}
+
+## 2. SignalFlow ã®è¡šç€º
+
+Chart Builder ã§ **View SignalFlow** ãã¯ãªãã¯ãããšããã£ãŒããåãããŠããå
éšã³ãŒããéããŸãã
+
+
+
+**View SignalFlow** ãã¯ãªãã¯ãããšããã£ãŒãã®ããžãã¯ãšå€æåŠçãå®çŸ©ããŠãã **SignalFlow program (1)** ã衚瀺ãããŸãããã®ãã¥ãŒã§ã¯ãå¯èŠåãæ¯ããŠããã³ãŒãã«çŽæ¥ã¢ã¯ã»ã¹ã§ãããããããžã¥ã¢ã«ãšãã£ã¿ã§ã¯å®çŸã§ããªãç¯å²ã®åŸ®èª¿æŽãæ¡åŒµãå¯èœã«ãªããŸãã
+
+以äžã¯ãå
ã»ã©äœæãããã£ãŒãã® SignalFlow ã³ãŒãã®äŸã§ãããã®ã¹ããããã§ã¯ã2 ã€ã®ããŒã»ã³ã¿ã€ã«ã·ã°ãã« (çŸåšãš 1 é±éå) ãå®çŸ©ããã¿ã€ã ã·ãããé©çšãããããã®å·®åãèšç®ããæ¹æ³ã瀺ããŠããŸããã³ãŒãã確èªããããšã§ãåã¹ããããæçµçãªãã£ãŒãã«ã©ãå¯äžããŠããããçè§£ãããããªããŸãã
+
+{{< tabs >}}
+{{% tab title="SignalFlow" %}}
+
+```python
+A = data('demo.trans.latency', filter=filter('demo_datacenter', 'Paris')).percentile(pct=95).publish(label='A', enable=False)
+B = data('demo.trans.latency', filter=filter('demo_datacenter', 'Paris')).percentile(pct=95).timeshift('1w').publish(label='B', enable=False)
+C = (A-B).publish(label='C')
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+**View Builder (2)** ãã¯ãªãã¯ãããšãChart **Builder** UI ã«æ»ããŸãã
+
+
+
+ããã§ã¯ããã®æ°ãããã£ãŒããããã·ã¥ããŒãã«ä¿åããŸãããã
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-09-adding-charts.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-09-adding-charts.md
new file mode 100644
index 0000000000..c512d39ff3
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-09-adding-charts.md
@@ -0,0 +1,68 @@
+---
+title: ããã·ã¥ããŒããžã®ãã£ãŒã远å
+linkTitle: 1.09. ãã£ãŒãã®è¿œå
+weight: 1.09
+---
+
+## 1. æ¢åããã·ã¥ããŒããžã®ä¿å
+
+ãã£ãŒããä¿åããåã«ãå·Šäžã®è¡šç€ºã **YOUR_NAME-Dashboard: YOUR_NAME-Dashboard (1)** ã«ãªã£ãŠããããšã確èªããŸããããã«ãããæ£ããããã·ã¥ããŒãã«ãã£ãŒããä¿åãããŸãã
+
+次ã«ããã£ãŒãã«ååãä»ããŸãã**Latency History** **(2)** ãšå
¥åããå¿
èŠã«å¿ã㊠**Chart Description (3)** ã«ç°¡åãªèª¬æãäŸã®ããã«è¿œå ããŸãã
+
+
+---
+æºåãã§ãããã{{% button style=blue %}}Save And Close{{% /button %}} ãã¿ã³ **(4)** ãã¯ãªãã¯ããŸããããã·ã¥ããŒãã«æ»ãããã£ãŒãã 2 ã€è¡šç€ºãããŠããã¯ãã§ãã
+
+
+---
+
+## 2. ãã£ãŒãã®ã³ããŒãšè²Œãä»ã
+
+å
ã»ã©äœæãããã£ãŒããè€è£œããŠãããäžã€ãã£ãŒããçŽ æ©ã远å ããŠã¿ãŸãããã
+
+ããã·ã¥ããŒãã§ **Latency History** ãã£ãŒããèŠã€ãããã£ãŒãå³äžã®äžç¹ãªãŒã㌠**`...`** **(1)** ãã¯ãªãã¯ããŸããã¡ãã¥ãŒãã **Copy (2)** ãéžæããŸãã
+
+ã³ããŒåŸãããŒãžäžéšã® **+** ã¢ã€ã³ã³ **(3)** ã®åã«å°ããªçœã **1** ã衚瀺ãããŠããã®ã«æ°ä»ãã§ããããããã¯ã1 ã€ã®ãã£ãŒãã貌ãä»ãå¯èœãªç¶æ
ã§ããããšã瀺ããŠããŸãã
+
+
+---
+ããŒãžäžéšã® **+** ã¢ã€ã³ã³ **(1)** ãã¯ãªãã¯ããããããããŠã³ã¡ãã¥ãŒãã **(2)** ãéžæããŸãã
+ãã®è¡ã®æ«å°Ÿã«ã **1** ã衚瀺ãããŠãããã³ããŒããããã£ãŒãã远å å¯èœãªç¶æ
ã§ããããšã確èªã§ããŸãã
+
+
+ããã«ãããå
ã»ã©ã®ãã£ãŒãã®ã³ããŒãããã·ã¥ããŒãã«é
眮ãããŸãã
+
+
+---
+
+## 3. 貌ãä»ãããã£ãŒãã®ç·šé
+
+è€è£œãããã£ãŒããç·šéããã«ã¯ãããã·ã¥ããŒãäžã®ããããã® **Latency History** ãã£ãŒãã®äžç¹ãªãŒã㌠**`...`** ãã¯ãªãã¯ãã**Open** ãéžæããŸãããŸãã¯ããã£ãŒãã®ã¿ã€ãã« **Latency History** ãçŽæ¥ã¯ãªãã¯ããŠãšãã£ã¿ã§éãããšãã§ããŸãã
+
+ããã«ãããåã³ãšãã£ã¿ç°å¢ã«ç§»åããŸãã
+
+ãŸãããã£ãŒãå³äžã®æéç¯å²ã調æŽããŸãã**Past 1 Hour (1)** ã«èšå®ããŠãããåºç¯å²ãªæè¿ã®ããŒã¿ã確èªã§ããããã«ããŸãã
+
+次ã«ããã£ãŒããã«ã¹ã¿ãã€ãºããŠç¬èªã®ãã®ã«ããŸãã**Signal A (2)** ã®é£ã®ç®ã®ã¢ã€ã³ã³ãã¯ãªãã¯ããŠå衚瀺ããŸãã
+ãããŠã**Signal C (3)** ã®ç®ã®ã¢ã€ã³ã³ãã¯ãªãã¯ããŠé衚瀺ã«ããŸãã
+
+ãã£ãŒãã®ã¿ã€ãã«ã *Latency history* ãã **Latency vs Load (4)** ã«å€æŽããå¿
èŠã«å¿ããŠæŽæ°ãããå
容ãåæ ããããã«ãã£ãŒãã®èª¬æã远å ãŸãã¯ç·šéããŸã **(5)**ã
+
+
+---
+{{% button style=blue %}}Add Metric Or Event{{% /button %}} ãã¿ã³ãã¯ãªãã¯ããŠæ°ããã·ã°ãã«ãäœæããŸãã衚瀺ãããå
¥åãã£ãŒã«ãã« `demo.trans.count` **(1)** ãšå
¥åããŠéžæãã**Signal D** ãšããŠè¿œå ããŸãã
+
+ããã«ãããæ°ããã·ã°ãã« **Signal D** ããã£ãŒãã«è¿œå ãããŸããããã¯åŠçäžã®ã¢ã¯ãã£ããªãªã¯ãšã¹ãæ°ã衚ããŸãã
+
+**Paris ããŒã¿ã»ã³ã¿ãŒ**ã«ãã©ãŒã«ã¹ããããã**demo_datacenter: Paris (2)** ã®ãã£ã«ã¿ãŒã远å ããŸããæ¬¡ã«ãConfigure Plot âïž **(3)** ãã¿ã³ãã¯ãªãã¯ããŠãããŒã¿ã®è¡šç€ºæ¹æ³ã調æŽããŸãã**rollup** ã¿ã€ãã **Auto (Delta)** ãã **Rate/sec (4)** ã«å€æŽãã1 ç§ãããã®åä¿¡ãªã¯ãšã¹ãæ°ã衚瀺ããããã«ããŸãã
+
+æåŸã«ãã·ã°ãã«åã `demo.trans.count` ãã `Latency vs Load` **(5)** ã«å€æŽããŠããã£ãŒãå
ã§ã®åœ¹å²ãããæç¢ºã«åæ ãããŸãã
+
+
+
+æåŸã« {{% button %}}Save And Close{{% /button %}} ãã¿ã³ãæŒããŸããããã§ããã·ã¥ããŒãã«æ»ãã3 ã€ã®ç°ãªããã£ãŒãã衚瀺ãããããã«ãªããŸãïŒ
+
+
+
+ãinstructionãããŒãã远å ããŠããã£ãŒããæŽçããŸãããïŒ
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-10-notes-and-layout.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-10-notes-and-layout.md
new file mode 100644
index 0000000000..883116babe
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/1-10-notes-and-layout.md
@@ -0,0 +1,107 @@
+---
+title: ããŒãã®è¿œå ãšããã·ã¥ããŒãã¬ã€ã¢ãŠã
+linkTitle: 1.10 ããŒããšã¬ã€ã¢ãŠã
+weight: 1.10
+---
+
+## 1. ããŒãã®è¿œå
+
+ããã·ã¥ããŒãã§ã¯ãå©çšè
ãæ¯æŽããçãã説æããã€ã³ãé
眮ããããšããããããŸãã{{% button %}}**New Text Note**{{% /button %}} ãã¿ã³ãã¯ãªãã¯ããŠè¿œå ããŠã¿ãŸãããã
+
+
+
+ããã«ããããŒããšãã£ã¿ãŒãéããŸãã
+
+
+
+ããã¹ã以å€ã®èŠçŽ ãããŒãã«è¿œå ã§ãããããSplunk ã§ã¯ãããã®ããŒã/ãã€ã³ã§ Markdown ã䜿çšã§ããããã«ãªã£ãŠããŸãã
+Markdown ã¯ããã¬ãŒã³ããã¹ãã䜿ã£ãŠãã©ãŒãããæžã¿ã®ããã¹ããäœæããããã®è»œéãªããŒã¯ã¢ããèšèªã§ãWeb ããŒãžãªã©ã§ããå©çšãããŠããŸãã
+
+å©çšã§ããèŠçŽ ã«ã¯ä»¥äžãå«ãŸããŸã (ãã ããããã«éå®ãããŸãã):
+
+* ããã㌠(æ§ã
ãªãµã€ãº)
+* 匷調ã¹ã¿ã€ã«
+* ãªã¹ããšããŒãã«
+* ãªã³ã¯ãå€éš Web ããŒãž (ããã¥ã¡ã³ãç) ããä»ã® Splunk IM ããã·ã¥ããŒããžã®çŽæ¥ãªã³ã¯ãªã©
+
+以äžã¯ãããŒãã§äœ¿çšã§ããäžèšã® Markdown ãªãã·ã§ã³ã®äŸã§ãã
+
+{{% tab title="Sample Markdown text" %}}
+
+``` markdown
+# h1 Big headings
+
+###### h6 To small headings
+
+##### Emphasis
+
+**This is bold text**, *This is italic text* , ~~Strikethrough~~
+
+##### Lists
+
+Unordered
+
++ Create a list by starting a line with `+`, `-`, or `*`
+- Sub-lists are made by indenting 2 spaces:
+- Marker character change forces new list start:
+ * Ac tristique libero volutpat at
+ + Facilisis in pretium nisl aliquet
+* Very easy!
+
+Ordered
+
+1. Lorem ipsum dolor sit amet
+2. Consectetur adipiscing elit
+3. Integer molestie lorem at massa
+
+##### Tables
+
+| Option | Description |
+| ------ | ----------- |
+| chart | path to data files to supply the data that will be passed into templates. |
+| engine | engine to be used for processing templates. Handlebars is the default. |
+| ext | extension to be used for dest files. |
+
+#### Links
+
+[link to webpage](https://www.splunk.com)
+
+[link to dashboard with title](https://app.eu0.signalfx.com/#/dashboard/EaJHrbPAEAA?groupId=EaJHgrsAIAA&configId=EaJHsHzAEAA "Link to the Sample chart Dashboard!")
+```
+
+{{% /tab %}}
+
+ã³ããŒãã¿ã³ã§äžèšãã³ããŒãã*Edit* ããã¯ã¹ã«è²Œãä»ããŠãã ããã
+ãã¬ãã¥ãŒã«ã¯ã衚瀺ãããèŠãç®ã瀺ãããŸãã
+
+---
+
+## 2. ãã£ãŒãã®ä¿å
+
+ããŒããã£ãŒãã«ååãä»ããŸããäŸã§ã¯ *Example text chart* ã䜿çšããŸãããæ¬¡ã« {{% button style="blue" %}}Save And Close{{% /button %}} ãã¿ã³ãæŒããŠãã ããã
+
+
+
+ããã·ã¥ããŒãã«æ»ããšãããŒãã远å ãããç¶æ
ã«ãªã£ãŠããŸãã
+
+
+
+---
+
+## 3. ãã£ãŒãã®äžŠã³æ¿ããšãµã€ãºå€æŽ
+
+ãã£ãŒãã®ããã©ã«ãã®é åºããµã€ãºã奜ã¿ã«åããªãå Žåã¯ããŠã£ã³ããŠã®ãã©ãã°æäœã§ç®çã®å Žæã«ç§»åãããããµã€ãºã倿Žãããã§ããŸãã
+
+ãã£ãŒãã® **äžç«¯** ãã€ãããšãããŠã¹ãã€ã³ã¿ãŒããã©ãã°ã¢ã€ã³ã³ã«å€ãããŸã (äžå³åç
§)ã
+
+
+
+ããã§ã¯ã**Latency vs Load** ãã£ãŒãããã©ãã°ããŠã**Latency History** ãã£ãŒããš **Example text chart** ã®éã«é
眮ããŠãã ããã
+
+
+
+ãŸãããŠã£ã³ããŠã®å·Šç«¯ãå³ç«¯ãäžç«¯ããã©ãã°ããŠãªãµã€ãºããããšãã§ããŸãã
+
+æåŸã®æŒç¿ãšããŠãããŒããã£ãŒãã®å¹
ãä»ã®ãã£ãŒãã®çŽ 3 åã® 1 ãŸã§çž®å°ããŠãã ããããã£ãŒãã¯ãµããŒããããŠãããµã€ãºã®ããããã«èªåçã«ã¹ãããããŸããä»ã® 3 ã€ã®ãã£ãŒããããã·ã¥ããŒãã®çŽ 3 åã® 1 ã®å¹
ãŸã§åºããŸããããŒããä»ã®ãã£ãŒãã®å³åŽã«ãã©ãã°ãã3 ã€ã®ãã£ãŒããšé«ããæããããµã€ãºã調æŽããŠãã ããã**Time** ã **-1h** ã«èšå®ããã°ã以äžã®ãããªããã·ã¥ããŒããã§ãããããŸã!
+
+
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/_index.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/_index.md
new file mode 100644
index 0000000000..0973084ca4
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/dashboards/_index.md
@@ -0,0 +1,28 @@
+---
+title: ããã·ã¥ããŒãå
¥é
+linkTitle: 1. Dashboards
+weight: 1.0
+time: 10 minutes
+---
+
+## 1. Dashboards
+
+ããã·ã¥ããŒããšã¯ãäž»èŠãªã¡ããªã¯ã¹ãäžç®æã«è¡šç€ºãããã£ãŒããããžã¥ã¢ã©ã€ãŒãŒã·ã§ã³ã®éåã§ããããèšèšãããããã·ã¥ããŒãã¯ãã·ã¹ãã ã®å¥å
šæ§ãšããã©ãŒãã³ã¹ã«é¢ãããè¿
éã§å®çšçãªã€ã³ãµã€ããæäŸããŸããããã·ã¥ããŒãã¯ãå¿
èŠã«å¿ããŠã·ã³ãã«ã«ã詳现ã«ãã§ããããã€ãã®çŠç¹ãçµã£ããã£ãŒããããè€æ°ã®ãµãŒãã¹ã«ãŸãããè€éãªãã¥ãŒãŸã§ãããŸããŸãªæ§æãå¯èœã§ãã
+
+ãã®ã¢ãžã¥ãŒã«ã§ã¯ãããã€ãã®ãã£ãŒããäœæãããããããŸãšããŠä»¥äžã®ã«ã¹ã¿ã ããã·ã¥ããŒããæ§ç¯ããŸãã
+
+
+
+---
+
+## 2. Accessing Dashboards
+
+ãŸããSplunk Observability suite å
ã®ããã·ã¥ããŒãã®å Žæã確èªããŸãããã
+
+å·ŠåŽã®ããã²ãŒã·ã§ã³ã¡ãã¥ãŒã«ãã **Dashboards (1)** ãã¿ã³ãã¯ãªãã¯ããŸããã¡ãã¥ãŒãæããããŸããŠããå Žåã¯ãç»é¢å·Šäžã®ãã³ããŒã¬ãŒã¢ã€ã³ã³ãã¯ãªãã¯ããŠå±éã§ããŸãã
+
+ããã«ãããã¡ã€ã³ã® Dashboard ãã¥ãŒã衚瀺ãããSplunk Observability ãæäŸãããã«ãã€ã³ã®ããã·ã¥ããŒããå«ããå©çšå¯èœãªãã¹ãŠã®ããã·ã¥ããŒãã衚瀺ãããŸãã
+
+çµç¹ã Cloud API ã€ã³ãã°ã¬ãŒã·ã§ã³ã Splunk OpenTelemetry Agent ãä»ããŠæ¢ã«ããŒã¿ãåã蟌ãã§ããå Žåã¯ããããã®ãµãŒãã¹ã«é¢é£ãã远å ã®ããã·ã¥ããŒãã衚瀺ãããããšããããŸãã
+
+
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/detectors/_index.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/detectors/_index.md
new file mode 100644
index 0000000000..49a73e413b
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/detectors/_index.md
@@ -0,0 +1,115 @@
+---
+title: Detector ã®æŽ»çš
+linkTitle: 2. Detectors
+weight: 2.0
+time: 10 minutes
+hidden: true
+---
+
+* ãã£ãŒããã Detector ãäœæãã
+* ã¢ã©ãŒãæ¡ä»¶ãèšå®ãã
+* ããªãã©ã€ããã§ãã¯ãå®è¡ãã
+* ãã¥ãŒãã£ã³ã°ã«ãŒã«ãæäœãã
+
+---
+
+## 1. ã¯ããã«
+
+Splunk Observability Cloud ã§ã¯ãç¹å®ã®æ¡ä»¶ãæºãããããšãã«éç¥ããããã«ãdetectorãeventãalertãnotification ã䜿çšããŸããããšãã°ãCPU 䜿çšçã 95% ã«éãããšãããåææ¥ç¶ãŠãŒã¶ãŒæ°ã AWS ã€ã³ã¹ã¿ã³ã¹ã®è¿œå ãå¿
èŠã«ãªãå¯èœæ§ã®ããäžéã«è¿ã¥ãããšãã«ãOps ããŒã ã® Slack ãã£ã³ãã«ãã¡ãŒã«ã¢ãã¬ã¹ã«ã¡ãã»ãŒãžãéä¿¡ãããå Žåãªã©ã§ãã
+
+ãããã®æ¡ä»¶ã¯ãã«ãŒã«å
ã®æ¡ä»¶ãæºãããããšãã«ã¢ã©ãŒããããªã¬ãŒãã 1 ã€ä»¥äžã®ã«ãŒã«ãšããŠè¡šçŸãããŸããdetector ã®åã
ã®ã«ãŒã«ã«ã¯ãéèŠåºŠã«å¿ã㊠InfoãWarningãMinorãMajorãCritical ã®ã©ãã«ãä»ããããŸãã
+
+## 2. Detector ã®äœæ
+
+**Dashboards** ã§ãïŒåã®ã¢ãžã¥ãŒã«ã§äœæããïŒ**Custom Dashboard Group** ãã¯ãªãã¯ããç¶ããŠããã·ã¥ããŒãåãã¯ãªãã¯ããŸãã
+
+
+
+ããããã¯ããã®ããã·ã¥ããŒãäžã®ãã£ãŒãããæ°ãã detector ãäœæããŸãã**Latency vs Load** ãã£ãŒãã®ãã«ã¢ã€ã³ã³ãã¯ãªãã¯ãã**New Detector From Chart** ãã¯ãªãã¯ããŸãã
+
+
+
+**Detector Name** ã®æšªã®ããã¹ããã£ãŒã«ãã§ãææ¡ããã detector åã®åã« **ã€ãã·ã£ã«ã远å ** ããŸãã
+
+{{% notice title="detector ã®åœå" style="info" %}}
+ææ¡ããã detector åã®å
é ã«ã€ãã·ã£ã«ã远å ããããšãéèŠã§ãã
+
+ããšãã°æ¬¡ã®ããã«ãªããŸã: **XYZ's Latency Chart Detector**ã
+{{% /notice %}}
+
+{{% button style="blue" %}}Create Alert Rule{{% /button %}} ãã¯ãªãã¯ããŸãã
+
+
+
+Detector ãŠã£ã³ããŠã® **Alert signal** å
ã§ãã¢ã©ãŒã察象ãšãªã Signal 㯠**Alert on** åã®ïŒéãïŒãã«ã§ããŒã¯ãããŠããŸãããã®ãã«ã¯ãã¢ã©ãŒãã®çæã«äœ¿çšãããŠãã Signal ã瀺ããŸãã
+
+{{% button style="blue" %}}Proceed to Alert Condition{{% /button %}} ãã¯ãªãã¯ããŸãã
+
+
+
+## 3. ã¢ã©ãŒãæ¡ä»¶ã®èšå®
+
+**Alert condition** ã§ **Static Threshold** ãã¯ãªãã¯ããç¶ã㊠{{% button style="blue" %}}Proceed to Alert Settings{{% /button %}} ãã¯ãªãã¯ããŸãã
+
+
+
+**Alert Settings** ã® **Threshold** ãã£ãŒã«ãã«å€ **`290`** ãå
¥åããŸããåããŠã£ã³ããŠã§ãå³äžã® **Time** ã past day (**-1d**) ã«å€æŽããŸãã
+
+---
+
+## 4. ã¢ã©ãŒãã®ããªãã©ã€ããã§ãã¯
+
+5 ç§åŸã«ããªãã©ã€ããã§ãã¯ãå®è¡ãããŸãã**Estimated alert count** ã確èªããŠãã ãããçŸåšã®ã¢ã©ãŒãèšå®ã«åºã¥ããšã1 æ¥ã«åãåãã¢ã©ãŒãã®æ°ã¯ **3** ä»¶ãšãªããŸãã
+
+
+
+{{% notice title="ããªãã©ã€ããã§ãã¯ã«ã€ããŠ" style="info" %}}
+ã¢ã©ãŒãæ¡ä»¶ãèšå®ãããšãUI ã¯çŸåšã®èšå®ããã³å³äžé
ã§èšå®ãããæéïŒãã®ã±ãŒã¹ã§ã¯éå» 1 æ¥éïŒã«åºã¥ããŠãåãåãå¯èœæ§ã®ããã¢ã©ãŒãæ°ãæšå®ããŸãã
+
+ããã«ãã©ãããã©ãŒã ã¯çŸåšã®èšå®ã§ signal ã®åæãéå§ããPre-flight Check ãšåŒã°ããåŠçãå®è¡ããŸããããã«ããããã©ãããã©ãŒã å
ã®éå»ããŒã¿ã䜿çšããŠã¢ã©ãŒãæ¡ä»¶ããã¹ãã§ãããããèšå®ãè«ççã§ããã誀ã£ãŠã¢ã©ãŒãã¹ããŒã ãåŒãèµ·ãããªãããšã確èªã§ããŸããSplunk Observability Cloud ã§ã®ã¿å©çšå¯èœãªãã·ã³ãã«ãã€éåžžã«åŒ·åãªæ¹æ³ã§ã¢ã©ãŒãèšå®ã®è©Šè¡é¯èª€ãæé€ããŸãã
+
+detector ã®ãã¬ãã¥ãŒã«ã€ããŠè©³ããã¯ããã¡ãã®ãªã³ã¯ãã芧ãã ãã
+[Preview detector alerts.](https://docs.splunk.com/Observability/alerts-detectors-notifications/preview-detector-alerts.html#nav-Preview-detector-alerts)
+{{% /notice %}}
+
+{{% button style="blue" %}}Proceed to Alert Message{{% /button %}} ãã¯ãªãã¯ããŸãã
+
+---
+
+## 5. ã¢ã©ãŒãã¡ãã»ãŒãž
+
+**Alert message** ã® **Severity** ã§ **Major** ãéžæããŸãã
+
+
+
+{{% button style="blue" %}}Proceed to Alert Recipients{{% /button %}} ãã¯ãªãã¯ããŸãã
+
+**Add Recipient** ãã¯ãªãã¯ããæåã®ãªãã·ã§ã³ãšããŠè¡šç€ºãããŠãããèªèº«ã®ã¡ãŒã«ã¢ãã¬ã¹ãã¯ãªãã¯ããŸãã
+
+
+
+{{% notice title="Notification Services" style="info" %}}
+ããã¯ããã®ã¡ãŒã«ã¢ãã¬ã¹ãå
¥åããã®ãšåãã§ãããŸãã¯ã**E-mail...** ãã¯ãªãã¯ããŠå¥ã®ã¡ãŒã«ã¢ãã¬ã¹ãå
¥åããããšãã§ããŸãã
+
+ããã¯ããã©ãããã©ãŒã ã§å©çšå¯èœãªå€ãã® **Notification Services** ã®äžäŸã«ãããŸããããããã¡ãã¥ãŒã® **Integrations** ã¿ããã **Notification Services** ã確èªã§ããŸãã
+{{% /notice %}}
+
+---
+
+## 6. ã¢ã©ãŒãã®æå¹å
+
+{{% button style="blue" %}}Proceed to Alert Activation{{% /button %}} ãã¯ãªãã¯ããŸãã
+
+**Activate...** ã§ {{% button style="blue" %}}Activate Alert Rule{{% /button %}} ãã¯ãªãã¯ããŸãã
+
+
+
+ããæ©ãã¢ã©ãŒããåãåãããå Žåã¯ãã«ãŒã«ãç·šéããŠå€ã **`290`** ãã **`280`** ãªã©ã«äžããŠãã ããã
+
+**Time** ã **-1h** ã«å€æŽãããšãéå» 1 æéã®ã¡ããªã¯ã¹ã«åºã¥ããéžæãããããå€ã§åãåãå¯èœæ§ã®ããã¢ã©ãŒãæ°ã確èªã§ããŸãã
+
+ããã²ãŒã·ã§ã³ããŒã®  ãã¯ãªãã¯ããç¶ã㊠**Detectors** ãã¯ãªãã¯ããŸããå¿
èŠã«å¿ããŠãèªèº«ã®ã€ãã·ã£ã«ã§ãã£ã«ã¿ãªã³ã°ã§ããŸããããã«äœæãã detector ãäžèŠ§è¡šç€ºãããŸãã衚瀺ãããªãå Žåã¯ããã©ãŠã¶ãæŽæ°ããŠãã ããã
+
+
+
+**ããã§ãšãããããŸã**! æåã® detector ãäœæããæå¹åããŸãã!
diff --git a/content/ja/ninja-workshops/foundations/7-dashboards-detectors/detectors/muting.md b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/detectors/muting.md
new file mode 100644
index 0000000000..a564d290bf
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/7-dashboards-detectors/detectors/muting.md
@@ -0,0 +1,58 @@
+---
+title: Muting Rules ã®äœ¿çš
+linkTitle: 2.1 Muting Rule ã®äœæ
+weight: 2.1
+---
+
+* Muting Rules ãèšå®ããæ¹æ³ãåŠã³ãŸã
+* éç¥ãåéããæ¹æ³ãåŠã³ãŸã
+
+---
+
+## 1. Muting Rules ã®èšå®
+
+ç¹å®ã®éç¥ããã¥ãŒããããå ŽåããããŸããäŸãã°ããµãŒããŒããµãŒããŒçŸ€ã®ã¡ã³ããã³ã¹ã®ããã®ããŠã³ã¿ã€ã ãã¹ã±ãžã¥ãŒã«ãããå Žåããæ°ããã³ãŒããèšå®ããã¹ãããŠããå Žåãªã©ã§ãããã®ãããªå Žåã«ã¯ãSplunk Observability Cloud ã® muting rules ã䜿çšã§ããŸãããã£ããäœæããŠã¿ãŸãããã
+
+ãµã€ãããŒã® **Alerts & Detectors** ãã¯ãªãã¯ãã**Detectors** ãã¯ãªãã¯ããŠã¢ã¯ãã£ã㪠detector ã®äžèЧã衚瀺ããŸãã
+
+
+
+**Creating a Detector** ã§ detector ãäœææžã¿ã§ããã°ããã® detector ã®å³ç«¯ã«ããäžç¹ãªãŒã㌠**`...`** ãã¯ãªãã¯ããŸããäœæããŠããªãå Žåã¯ãå¥ã® detector ã§åãæäœãè¡ã£ãŠãã ããã
+
+ããããããŠã³ãã **Create Muting Rule...** ãã¯ãªãã¯ããŸãã
+
+
+
+**Muting Rule** ãŠã£ã³ããŠã§ **Mute Indefinitely** ã«ãã§ãã¯ãå
¥ããçç±ãå
¥åããŸãã
+
+{{% notice title="éèŠ" style="info" %}}
+ããã«ãããããã«æ»ã£ãŠãã§ãã¯ãå€ããããã® detector ã®éç¥ãåéãããŸã§ãéç¥ã¯æ°žç¶çã«ãã¥ãŒããããŸãã
+{{% /notice %}}
+
+
+
+**Next** ãã¯ãªãã¯ããæ°ããã¢ãŒãã«ãŠã£ã³ããŠã§ muting rule ã®èšå®ã確èªããŸãã
+
+
+
+{{% button style="blue" %}}Mute Indefinitely{{% /button %}} ãã¯ãªãã¯ããŠç¢ºå®ããŸãã
+
+
+
+éç¥ãåéãããŸã§ããã® detector ããã¡ãŒã«éç¥ã¯å±ããŸãããæ¬¡ã«ããã®æ¹æ³ãèŠãŠãããŸãããã
+
+---
+
+## 2. éç¥ã®åé
+
+éç¥ãåéããã«ã¯ã**Muting Rules** ãã¯ãªãã¯ããŸãã**Detector** ãšããèŠåºãã®äžã«ãéç¥ããã¥ãŒããã detector ã®ååã衚瀺ãããŸãã
+
+å³ç«¯ã®äžç¹ãªãŒã㌠**`...`** ãã¯ãªãã¯ãã**Resume Notifications** ãã¯ãªãã¯ããŸãã
+
+
+
+{{% button style="blue" %}}Resume{{% /button %}} ãã¯ãªãã¯ããŠç¢ºå®ãããã® detector ã®éç¥ãåéããŸãã
+
+
+
+**ããã§ãšãããããŸãïŒ** ã¢ã©ãŒãéç¥ãåéã§ããŸããã
diff --git a/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/1-connect-to-instance.md b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/1-connect-to-instance.md
new file mode 100644
index 0000000000..e314f86f7a
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/1-connect-to-instance.md
@@ -0,0 +1,40 @@
+---
+title: EC2 ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶
+linkTitle: 1. EC2 ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶
+weight: 1
+time: 5 minutes
+---
+
+## EC2 ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶
+
+åå è
ããšã« AWS/EC2 äžã« Ubuntu Linux ã€ã³ã¹ã¿ã³ã¹ãçšæããŠããŸããè¬åž«ããæäŸããã IP ã¢ãã¬ã¹ãšãã¹ã¯ãŒãã䜿çšããŠã以äžã®ããããã®æ¹æ³ã§ EC2 ã€ã³ã¹ã¿ã³ã¹ã«æ¥ç¶ããŠãã ããã
+
+* macOS / Linux
+ * `ssh splunk@IP address`
+* Windows 10 以é
+ * OpenSSH ã¯ã©ã€ã¢ã³ãã䜿çšããŠãã ãã
+* ãã以åã®ããŒãžã§ã³ã® Windows
+ * Putty ã䜿çšããŠãã ãã
+
+## ãã¡ã€ã«ã®ç·šé
+
+ã¯ãŒã¯ã·ã§ããã§ã¯ `vi` ã䜿çšããŠãã¡ã€ã«ãç·šéããŸããç°¡åãªäœ¿ãæ¹ã以äžã«ç€ºããŸãã
+
+ãã¡ã€ã«ãç·šéçšã«éãã«ã¯ïŒ
+
+```bash
+vi
+```
+
+* ãã¡ã€ã«ãç·šéããã«ã¯ã`i` ãæŒã㊠**Insert ã¢ãŒã** ã«åãæ¿ããéåžžéãããã¹ããå
¥åããŸãã`Esc` ã§ **Command ã¢ãŒã** ã«æ»ããŸãã
+* ãšãã£ã¿ãçµäºããã«å€æŽãä¿åããã«ã¯ã`Esc` ãæŒããŠã³ãã³ãã¢ãŒãã«æ»ãã`:w` ãå
¥åããŸãã
+* 倿Žãä¿åããã«ãšãã£ã¿ãçµäºããã«ã¯ã`Esc` ãæŒããŠã³ãã³ãã¢ãŒãã«æ»ãã`:q!` ãå
¥åããŸãã
+* 倿Žãä¿åããŠãšãã£ã¿ãçµäºããã«ã¯ã`Esc` ãæŒããŠã³ãã³ãã¢ãŒãã«æ»ãã`:wq` ãå
¥åããŸãã
+
+`vi` ã®è©³ããäœ¿ãæ¹ã«ã€ããŠã¯ [**An introduction to the vi editor**](https://www.redhat.com/en/blog/introduction-vi-editor) ãåç
§ããŠãã ããã
+
+å¥ã®ãšãã£ã¿ã䜿çšãããå Žåã¯ã代ããã« `nano` ã䜿çšããããšãã§ããŸãïŒ
+
+```bash
+nano
+```
diff --git a/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/2-deploy-collector.md b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/2-deploy-collector.md
new file mode 100644
index 0000000000..afbed6a60a
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/2-deploy-collector.md
@@ -0,0 +1,323 @@
+---
+title: OpenTelemetry Collector ã®ãããã€ãšèšå®ã®ã«ã¹ã¿ãã€ãº
+linkTitle: 2. OpenTelemetry Collector ã®ãããã€ãšèšå®ã®ã«ã¹ã¿ãã€ãº
+weight: 2
+time: 15 minutes
+---
+
+ãããŒã¿ãåã蟌ããããã®æåã®ã¹ãããã¯ãOpenTelemetry collector ããããã€ããããšã§ããCollector ã¯ç°å¢å
ã§ãã¬ã¡ããªããŒã¿ãåä¿¡ããŠåŠçããSplunk Observability Cloud ã«ãšã¯ã¹ããŒãããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ Kubernetes ã䜿çšããHelm ã䜿ã£ãŠ K8s ã¯ã©ã¹ã¿ãŒäžã« collector ããããã€ããŸãã
+
+## Helm ãšã¯äœã
+
+Helm 㯠Kubernetes ã®ããã±ãŒãžãããŒãžã£ãŒã§ã次ã®ãããªã¡ãªããããããŸãã
+
+* è€éãã®ç®¡ç
+ * 倿°ã®ãããã§ã¹ããã¡ã€ã«ã§ã¯ãªããåäžã® values.yaml ãã¡ã€ã«ã§ç®¡çã§ããŸã
+* ç°¡åãªæŽæ°
+ * ã€ã³ãã¬ãŒã¹ã¢ããã°ã¬ãŒããå¯èœã§ã
+* ããŒã«ããã¯ã®ãµããŒã
+ * helm rollback ã䜿ãã ãã§ããªãªãŒã¹ã®å€ãããŒãžã§ã³ã«æ»ããŸã
+
+## Helm ã䜿ã£ã Collector ã®ã€ã³ã¹ããŒã«
+
+該åœãã£ã¬ã¯ããªã«ç§»åããŠãcollector ãã€ã³ã¹ããŒã«ããã¹ã¯ãªãããå®è¡ããŸãããã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+cd /home/splunk/workshop/tagging
+./1-deploy-otel-collector.sh
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+"splunk-otel-collector-chart" has been added to your repositories
+Hang tight while we grab the latest from your chart repositories...
+...Successfully got an update from the "splunk-otel-collector-chart" chart repository
+Update Complete. âHappy Helming!â
+NAME: splunk-otel-collector
+LAST DEPLOYED: Mon Dec 23 18:47:38 2024
+NAMESPACE: default
+STATUS: deployed
+REVISION: 1
+NOTES:
+Splunk OpenTelemetry Collector is installed and configured to send data to Splunk Observability realm us1.
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+> ãã®ã¹ã¯ãªããã®å®è¡ã«ã¯1åã»ã©ãããå ŽåããããŸãã
+
+ãã®ã¹ã¯ãªããã¯ã©ã®ããã« collector ãã€ã³ã¹ããŒã«ããã®ã§ããããïŒãŸãã`~./profile` ãã¡ã€ã«ã«èšå®ãããç°å¢å€æ°ãèªã¿èŸŒãŸããããšã確èªããŸãã
+
+> éèŠ: 以äžã®ã³ãã³ã㯠`1-deploy-otel-collector.sh` ã¹ã¯ãªããã«ãã£ãŠæ¢ã«å®è¡ãããŠãããããæ¹ããŠå®è¡ããå¿
èŠã¯ãããŸããã
+
+``` bash
+source ~/.profile
+```
+
+次㫠`splunk-otel-collector-chart` Helm ãã£ãŒããã€ã³ã¹ããŒã«ããææ°ã®ç¶æ
ã«æŽæ°ããŸãã
+
+``` bash
+ helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart
+ helm repo update
+```
+
+æåŸã«ã`helm install` ã䜿ã£ãŠ collector ãã€ã³ã¹ããŒã«ããŸãã
+
+``` bash
+ helm install splunk-otel-collector --version 0.149.0 \
+ --set="splunkObservability.realm=$REALM" \
+ --set="splunkObservability.accessToken=$ACCESS_TOKEN" \
+ --set="clusterName=$INSTANCE-k3s-cluster" \
+ --set="environment=tagging-workshop-$INSTANCE" \
+ splunk-otel-collector-chart/splunk-otel-collector \
+ -f otel/values.yaml
+```
+
+> `helm install` ã³ãã³ã㯠`values.yaml` ãã¡ã€ã«ãåç
§ããŠãããããã«ãã£ãŠ collector ã®èšå®ãã«ã¹ã¿ãã€ãºããŸãã詳现ã«ã€ããŠã¯åŸã»ã©èŠãŠãããŸãã
+
+## Collector ãåäœããŠããããšã®ç¢ºèª
+
+次ã®ã³ãã³ãã§ collector ãåäœããŠãããã©ããã確èªã§ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+kubectl get pods
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+NAME READY STATUS RESTARTS AGE
+splunk-otel-collector-agent-kfvjb 1/1 Running 0 2m33s
+splunk-otel-collector-certmanager-7d89558bc9-2fqnx 1/1 Running 0 2m33s
+splunk-otel-collector-certmanager-cainjector-796cc6bd76-hz4sp 1/1 Running 0 2m33s
+splunk-otel-collector-certmanager-webhook-6959cd5f8-qd5b6 1/1 Running 0 2m33s
+splunk-otel-collector-k8s-cluster-receiver-57569b58c8-8ghds 1/1 Running 0 2m33s
+splunk-otel-collector-operator-6fd9f9d569-wd5mn 2/2 Running 0 2m33s
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## K8s ã¯ã©ã¹ã¿ãŒã O11y Cloud ã«è¡šç€ºãããŠããããšã®ç¢ºèª
+
+Splunk Observability Cloud ã§ **Infrastructure** â **Kubernetes** â **Kubernetes Clusters** ã«ç§»åããèªåã®ã¯ã©ã¹ã¿ãŒåïŒ`$INSTANCE-k3s-cluster`ïŒãæ€çŽ¢ããŸãã
+
+
+
+## Collector ã®èšå®ã®ååŸ
+
+Collector ã®èšå®ãã«ã¹ã¿ãã€ãºããåã«ãçŸåšã®èšå®ãã©ã®ããã«ãªã£ãŠããããã©ããã£ãŠç¢ºèªããã°ããã§ããããïŒ
+
+Kubernetes ç°å¢ã§ã¯ãcollector ã®èšå®ã¯ Config Map ã«ä¿åãããŸãã
+
+ã¯ã©ã¹ã¿ãŒå
ã«ååšãã config map ã¯æ¬¡ã®ã³ãã³ãã§ç¢ºèªã§ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+kubectl get cm -l app=splunk-otel-collector
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+NAME DATA AGE
+splunk-otel-collector-otel-k8s-cluster-receiver 1 3h37m
+splunk-otel-collector-otel-agent 1 3h37m
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+次ã®ã³ãã³ãã§ collector agent ã® config map ã確èªã§ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+kubectl describe cm splunk-otel-collector-otel-agent
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+Name: splunk-otel-collector-otel-agent
+Namespace: default
+Labels: app=splunk-otel-collector
+ app.kubernetes.io/instance=splunk-otel-collector
+ app.kubernetes.io/managed-by=Helm
+ app.kubernetes.io/name=splunk-otel-collector
+ app.kubernetes.io/version=0.113.0
+ chart=splunk-otel-collector-0.113.0
+ helm.sh/chart=splunk-otel-collector-0.113.0
+ heritage=Helm
+ release=splunk-otel-collector
+Annotations: meta.helm.sh/release-name: splunk-otel-collector
+ meta.helm.sh/release-namespace: default
+
+Data
+====
+relay:
+----
+exporters:
+ otlphttp:
+ headers:
+ X-SF-Token: ${SPLUNK_OBSERVABILITY_ACCESS_TOKEN}
+ metrics_endpoint: https://ingest.us1.signalfx.com/v2/datapoint/otlp
+ traces_endpoint: https://ingest.us1.signalfx.com/v2/trace/otlp
+ (followed by the rest of the collector config in yaml format)
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## K8s ã§ã® Collector èšå®ã®æŽæ°æ¹æ³
+
+K8s ã§ã¯ `values.yaml` ãã¡ã€ã«ã䜿ã£ãŠ collector ã®èšå®ãã«ã¹ã¿ãã€ãºã§ããŸãã
+
+> `values.yaml` ãã¡ã€ã«ã§å©çšã§ããã«ã¹ã¿ãã€ãºãªãã·ã§ã³ã®å®å
šãªäžèЧã¯ã[ãã®ãã¡ã€ã«](https://github.com/signalfx/splunk-otel-collector-chart/blob/main/helm-charts/splunk-otel-collector/values.yaml) ãåç
§ããŠãã ããã
+
+äŸãèŠãŠã¿ãŸãããã
+
+### Debug Exporter ã®è¿œå
+
+Collector ã«éä¿¡ããããã¬ãŒã¹ã確èªããããšããŸãããã®çšéã«ã¯ debug exporter ãå©çšã§ããOpenTelemetry é¢é£ã®åé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«åœ¹ç«ã¡ãŸãã
+
+`values.yaml` ãã¡ã€ã«ã®ç·šéã«ã¯ `vi` ãŸã㯠`nano` ã䜿çšã§ããŸããããã§ã¯ vi ã䜿ã£ãäŸã瀺ããŸãã
+
+``` bash
+vi /home/splunk/workshop/tagging/otel/values.yaml
+```
+
+次ã®ããã¹ããã³ããŒã㊠`values.yaml` ãã¡ã€ã«ã®æ«å°Ÿã«è²Œãä»ããdebug exporter ã远å ããŸãã
+
+> vi ã§ã¯ã以äžã®ããã¹ãã远å ããåã« `i` ããŒãæŒããŠæ¿å
¥ã¢ãŒãã«å
¥ããŸãã
+
+``` yaml
+ # NEW CONTENT
+ exporters:
+ debug:
+ verbosity: detailed
+ service:
+ pipelines:
+ traces:
+ exporters:
+ - otlp_http
+ - signalfx
+ - debug
+```
+
+ãããã®å€æŽåŸã`values.yaml` ãã¡ã€ã«ã«ã¯æ¬¡ã®ãããªå
容ãå«ãŸããŠããã¯ãã§ãã
+
+``` yaml
+splunkObservability:
+ profilingEnabled: true
+ infrastructureMonitoringEventsEnabled: true
+certmanager:
+ enabled: true
+operator:
+ enabled: true
+operatorcrds:
+ install: true
+
+agent:
+ config:
+ receivers:
+ kubeletstats:
+ insecure_skip_verify: true
+ auth_type: serviceAccount
+ endpoint: ${K8S_NODE_IP}:10250
+ metric_groups:
+ - container
+ - pod
+ - node
+ - volume
+ k8s_api_config:
+ auth_type: serviceAccount
+ extra_metadata_labels:
+ - container.id
+ - k8s.volume.type
+ extensions:
+ zpages:
+ endpoint: 0.0.0.0:55679
+ # NEW CONTENT
+ exporters:
+ debug:
+ verbosity: detailed
+ service:
+ pipelines:
+ traces:
+ exporters:
+ - otlp_http
+ - signalfx
+ - debug
+```
+
+> vi ã§å€æŽãä¿åããã«ã¯ã`esc` ããŒãæŒããŠã³ãã³ãã¢ãŒãã«å
¥ãã`:wq!` ãšå
¥åã㊠`enter/return` ããŒãæŒããŸãã
+
+ãã¡ã€ã«ãä¿åããããæ¬¡ã®ã³ãã³ãã§å€æŽãé©çšã§ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+cd /home/splunk/workshop/tagging
+
+helm upgrade splunk-otel-collector \
+--set="splunkObservability.realm=$REALM" \
+--set="splunkObservability.accessToken=$ACCESS_TOKEN" \
+--set="clusterName=$INSTANCE-k3s-cluster" \
+--set="environment=tagging-workshop-$INSTANCE" \
+splunk-otel-collector-chart/splunk-otel-collector \
+-f otel/values.yaml
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+Release "splunk-otel-collector" has been upgraded. Happy Helming!
+NAME: splunk-otel-collector
+LAST DEPLOYED: Mon Dec 23 19:08:08 2024
+NAMESPACE: default
+STATUS: deployed
+REVISION: 2
+NOTES:
+Splunk OpenTelemetry Collector is installed and configured to send data to Splunk Observability realm us1.
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+`values.yaml` ãã¡ã€ã«ã§ collector ã®èšå®ã倿Žããéã¯ãconfig map ã確èªããŠãcollector ã«å®éã«é©çšãããŠããèšå®ãã¬ãã¥ãŒãããšåœ¹ç«ã¡ãŸãã
+
+``` bash
+kubectl describe cm splunk-otel-collector-otel-agent
+```
+
+æåŸ
ã©ãããdebug exporter ã traces ãã€ãã©ã€ã³ã«è¿œå ãããŠããããšã確èªã§ããŸãã
+
+``` yaml
+ traces:
+ exporters:
+ - otlp_http
+ - signalfx
+ - debug
+```
+
+Debug exporter ã®åºåã«ã€ããŠã¯ãã¯ã©ã¹ã¿ãŒã«ã¢ããªã±ãŒã·ã§ã³ããããã€ãããã¬ãŒã¹ã®ãã£ããã£ãéå§ããããšã§ç¢ºèªããŠãããŸãã
diff --git a/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/3-deploy-sample-app.md b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/3-deploy-sample-app.md
new file mode 100644
index 0000000000..04944da036
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/3-deploy-sample-app.md
@@ -0,0 +1,247 @@
+---
+title: ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã®ãããã€ãš OpenTelemetry ã«ããã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³
+linkTitle: 3. ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã®ãããã€ãš OpenTelemetry ã«ããã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³
+weight: 3
+time: 15 minutes
+---
+
+ãããŸã§ã§ãK8s ã¯ã©ã¹ã¿ãŒã« OpenTelemetry collector ããããã€ããã€ã³ãã©ã¹ãã©ã¯ãã£ã¡ããªã¯ã¹ã®åéã«æåããŠããŸãã
+
+次ã®ã¹ãããã¯ããµã³ãã«ã¢ããªã±ãŒã·ã§ã³ããããã€ããOpenTelemetry ã§ã€ã³ã¹ãã«ã¡ã³ãããŠãã¬ãŒã¹ããã£ããã£ããããšã§ãã
+
+Python ã§æžããããã€ã¯ããµãŒãã¹ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŸããã¯ãŒã¯ã·ã§ãããã·ã³ãã«ã«ä¿ã€ãããcredit check service ãš credit processor service ã® 2 ã€ã®ãµãŒãã¹ã«çŠç¹ãåœãŠãŸãã
+
+## ã¢ããªã±ãŒã·ã§ã³ã®ãããã€
+
+æéãç¯çŽããããããããã®ãµãŒãã¹ã® Docker ã€ã¡ãŒãžã¯ãã§ã«ãã«ããããŠãããDocker Hub ããå©çšã§ããŸããæ¬¡ã®ã³ãã³ãã§ K8s ã¯ã©ã¹ã¿ãŒã« credit check service ããããã€ã§ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+kubectl apply -f /home/splunk/workshop/tagging/creditcheckservice-py-with-tags/creditcheckservice-dockerhub.yaml
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+deployment.apps/creditcheckservice created
+service/creditcheckservice created
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+次ã«ãcredit processor service ããããã€ããŸãããã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+kubectl apply -f /home/splunk/workshop/tagging/creditprocessorservice/creditprocessorservice-dockerhub.yaml
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+deployment.apps/creditprocessorservice created
+service/creditprocessorservice created
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+æåŸã«ããã©ãã£ãã¯ãçæããããŒããžã§ãã¬ãŒã¿ãŒããããã€ããŸãããã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+kubectl apply -f /home/splunk/workshop/tagging/loadgenerator/loadgenerator-dockerhub.yaml
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+deployment.apps/loadgenerator created
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## ã¢ããªã±ãŒã·ã§ã³ã®æ¢çŽ¢
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ã¢ããªã±ãŒã·ã§ã³ã®æŠèŠã説æããŸããã¢ããªã±ãŒã·ã§ã³ã®å®å
šãªãœãŒã¹ã³ãŒãã確èªãããå Žåã¯ã[GitHub ã® Observability Workshop ãªããžããª](https://github.com/splunk/observability-workshop/tree/main/workshop/tagging) ãåç
§ããŠãã ããã
+
+### OpenTelemetry ã«ããã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³
+
+credit check service ãš credit processor service ã®ãã«ãã«äœ¿çšãããŠãã Dockerfile ãèŠããšããã§ã« OpenTelemetry ã§ã€ã³ã¹ãã«ã¡ã³ããããŠããããšãããããŸããããšãã°ã`/home/splunk/workshop/tagging/creditcheckservice-py-with-tags/Dockerfile` ãèŠãŠã¿ãŸãããã
+
+``` dockerfile
+FROM python:3.11-slim
+
+# Set working directory
+WORKDIR /app
+
+# Copy requirements over
+COPY requirements.txt .
+
+RUN apt-get update && apt-get install --yes gcc python3-dev
+
+ENV PIP_ROOT_USER_ACTION=ignore
+
+# Install Python dependencies
+RUN pip install --no-cache-dir -r requirements.txt
+
+# Copy main app
+COPY main.py .
+
+# Bootstrap OTel
+RUN opentelemetry-bootstrap -a install
+
+# Set the entrypoint command to run the application
+CMD ["opentelemetry-instrument", "python3", "main.py"]
+```
+
+`opentelemetry-bootstrap` ãå«ãŸããŠããããšãããããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã䜿çšãããµããŒã察象ããã±ãŒãžåãã® OpenTelemetry ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããŸãããŸããã¢ããªã±ãŒã·ã§ã³ãèµ·åããã³ãã³ãã®äžéšãšã㊠`opentelemetry-instrument` ã䜿çšãããŠããããšãããããŸãã
+
+ãã㊠`/home/splunk/workshop/tagging/creditcheckservice-py-with-tags/requirements.txt` ãã¡ã€ã«ã確èªãããšãããã±ãŒãžãªã¹ãã« `splunk-opentelemetry[all]` ãå«ãŸããŠããããšãããããŸãã
+
+æåŸã«ããã®ãµãŒãã¹ããããã€ããããã«äœ¿çšãã Kubernetes ãããã§ã¹ã (`/home/splunk/workshop/tagging/creditcheckservice-py-with-tags/creditcheckservice-dockerhub.yaml`) ã確èªãããšãOTLP ããŒã¿ã®ãšã¯ã¹ããŒãå
ã OpenTelemetry ã«äŒããããã«ãã³ã³ããå
ã§ç°å¢å€æ°ãèšå®ãããŠããããšãããããŸãã
+
+``` yaml
+ env:
+ - name: PORT
+ value: "8888"
+ - name: NODE_IP
+ valueFrom:
+ fieldRef:
+ fieldPath: status.hostIP
+ - name: OTEL_EXPORTER_OTLP_ENDPOINT
+ value: "http://$(NODE_IP):4317"
+ - name: OTEL_SERVICE_NAME
+ value: "creditcheckservice"
+ - name: OTEL_PROPAGATORS
+ value: "tracecontext,baggage"
+```
+
+OpenTelemetry ã§ãµãŒãã¹ãã€ã³ã¹ãã«ã¡ã³ãããããã«å¿
èŠãªã®ã¯ãããã ãã§ãïŒ
+
+### ã¢ããªã±ãŒã·ã§ã³ã®æ¢çŽ¢
+
+ã¢ããªã±ãŒã·ã§ã³ã§ããã€ãã®ã«ã¹ã¿ã ã¿ã°ããã£ããã£ããŠããããŸããªãããããæ¢çŽ¢ããŸãããã®åã«ãã¿ã°ã®æŠå¿µãšãã®éèŠæ§ã«ã€ããŠç޹ä»ããŸãã
+
+### ã¿ã°ãšã¯äœãïŒ
+
+ã¿ã°ã¯ããã¬ãŒã¹å
ã®ã¹ãã³ã«é¢ãã远å ã®ã¡ã¿ããŒã¿ãæäŸããããŒãšå€ã®ãã¢ã§ããã**Splunk APM** ã«éä¿¡ããã¹ãã³ã®ã³ã³ããã¹ããå
å®ãããããšãã§ããŸãã
+
+ããšãã°ã決æžåŠçã¢ããªã±ãŒã·ã§ã³ã§ã¯ã次ã®ãããªæ
å ±ã远跡ããããšãæçšã§ãã
+
+* 䜿çšãããæ±ºæžã¿ã€ã (ã¯ã¬ãžããã«ãŒããã®ããã«ãŒããªã©)
+* 決æžããªã¯ãšã¹ããã顧客㮠ID
+
+ãã®ããã«ããã°ã決æžåŠçäžã«ãšã©ãŒãããã©ãŒãã³ã¹ã®åé¡ãçºçããå Žåã§ãããã©ãã«ã·ã¥ãŒãã£ã³ã°ã«å¿
èŠãªã³ã³ããã¹ããåŸãããŸãã
+
+äžéšã®ã¿ã°ã¯ OpenTelemetry collector ã§è¿œå ã§ããŸããããã®ã¯ãŒã¯ã·ã§ããã§æ±ãã¿ã°ã¯ããç²åºŠã现ãããã¢ããªã±ãŒã·ã§ã³éçºè
ã OpenTelemetry SDK ã䜿çšããŠè¿œå ããŸãã
+
+### ãªãã¿ã°ã¯ããã»ã©éèŠãªã®ãïŒ
+
+ã¿ã°ã¯ãã¢ããªã±ãŒã·ã§ã³ãçã«èŠ³æž¬å¯èœã§ããããã«äžå¯æ¬ ã§ããã¿ã°ã¯ãã¬ãŒã¹ã«ã³ã³ããã¹ãã远å ãããªãäžéšã®ãŠãŒã¶ãŒã¯åªããäœéšãåŸãŠãä»ã®ãŠãŒã¶ãŒã¯ããã§ãªãã®ããçè§£ããã®ã«åœ¹ç«ã¡ãŸãããã㊠**Splunk Observability Cloud** ã®åŒ·åãªæ©èœã¯ã¿ã°ã掻çšããŠãæ ¹æ¬åå ã«çŽ æ©ããã©ãçãããšãæ¯æŽããŸãã
+
+> å
ã«é²ãåã«çšèªã«ã€ããŠäžèšããã®ã¯ãŒã¯ã·ã§ããã§ã¯ **tags** ã«ã€ããŠèª¬æãããã㯠**Splunk Observability Cloud** ã§äœ¿çšããçšèªã§ãããOpenTelemetry ã§ã¯ä»£ããã« **attributes** ãšããçšèªã䜿çšããŸãããã®ããããã®ã¯ãŒã¯ã·ã§ããã§ tags ãšããèšè¿°ãèŠãããããattributes ãšå矩ãšããŠæ±ã£ãŠããŸããŸããã
+
+### ã¿ã°ã¯ã©ã®ããã«ãã£ããã£ãããã®ãïŒ
+
+Python ã¢ããªã±ãŒã·ã§ã³ã§ã¿ã°ããã£ããã£ããã«ã¯ããŸã `/home/splunk/workshop/tagging/creditcheckservice-py-with-tags/main.py` ãã¡ã€ã«ã®å
é ã« import æã远å ããŠãtrace ã¢ãžã¥ãŒã«ãã€ã³ããŒãããŸãã
+
+```` python
+import requests
+from flask import Flask, request
+from waitress import serve
+from opentelemetry import trace # <--- ADDED BY WORKSHOP
+...
+````
+
+次ã«ãçŸåšã®ã¹ãã³ãžã®åç
§ãååŸããŠã屿§ (ã¿ã°) ã远å ã§ããããã«ããŸãã
+
+```` python
+def credit_check():
+ current_span = trace.get_current_span() # <--- ADDED BY WORKSHOP
+ customerNum = request.args.get('customernum')
+ current_span.set_attribute("customer.num", customerNum) # <--- ADDED BY WORKSHOP
+...
+````
+
+ãšãŠãç°¡åã§ããããïŒ credit check service ã§ã¯åèš 4 ã€ã®ã¿ã°ããã£ããã£ããŠãããæçµçãªçµæã¯æ¬¡ã®ããã«ãªããŸãã
+
+```` python
+def credit_check():
+ current_span = trace.get_current_span() # <--- ADDED BY WORKSHOP
+ customerNum = request.args.get('customernum')
+ current_span.set_attribute("customer.num", customerNum) # <--- ADDED BY WORKSHOP
+
+ # Get Credit Score
+ creditScoreReq = requests.get("http://creditprocessorservice:8899/getScore?customernum=" + customerNum)
+ creditScoreReq.raise_for_status()
+ creditScore = int(creditScoreReq.text)
+ current_span.set_attribute("credit.score", creditScore) # <--- ADDED BY WORKSHOP
+
+ creditScoreCategory = getCreditCategoryFromScore(creditScore)
+ current_span.set_attribute("credit.score.category", creditScoreCategory) # <--- ADDED BY WORKSHOP
+
+ # Run Credit Check
+ creditCheckReq = requests.get("http://creditprocessorservice:8899/runCreditCheck?customernum=" + str(customerNum) + "&score=" + str(creditScore))
+ creditCheckReq.raise_for_status()
+ checkResult = str(creditCheckReq.text)
+ current_span.set_attribute("credit.check.result", checkResult) # <--- ADDED BY WORKSHOP
+
+ return checkResult
+````
+
+## ãã¬ãŒã¹ããŒã¿ã®ç¢ºèª
+
+Splunk Observability Cloud ã§ãã¬ãŒã¹ããŒã¿ã確èªããåã«ã次ã®ã³ãã³ãã§ agent collector ã®ãã°ã tail ããŠãdebug exporter ããã£ããã£ããå
容ã確èªããŸãããã
+
+``` bash
+kubectl logs -l component=otel-collector-agent -f
+```
+
+ãã³ã: ãã°ã® tail ã忢ããã«ã¯ `CTRL+C` ã䜿çšããŠãã ããã
+
+agent collector ã®ãã°ã«ã¯ã次ã®ãããªãã¬ãŒã¹ãæžã蟌ãŸããŠããã®ã確èªã§ããã¯ãã§ãã
+
+````
+InstrumentationScope opentelemetry.instrumentation.flask 0.44b0
+Span #0
+ Trace ID : 9f9fc109903f25ba57bea9b075aa4833
+ Parent ID :
+ ID : 6d71519f454f6059
+ Name : /check
+ Kind : Server
+ Start time : 2024-12-23 19:55:25.815891965 +0000 UTC
+ End time : 2024-12-23 19:55:27.824664949 +0000 UTC
+ Status code : Unset
+ Status message :
+Attributes:
+ -> http.method: Str(GET)
+ -> http.server_name: Str(waitress.invalid)
+ -> http.scheme: Str(http)
+ -> net.host.port: Int(8888)
+ -> http.host: Str(creditcheckservice:8888)
+ -> http.target: Str(/check?customernum=30134241)
+ -> net.peer.ip: Str(10.42.0.19)
+ -> http.user_agent: Str(python-requests/2.31.0)
+ -> net.peer.port: Str(47248)
+ -> http.flavor: Str(1.1)
+ -> http.route: Str(/check)
+ -> customer.num: Str(30134241)
+ -> credit.score: Int(443)
+ -> credit.score.category: Str(poor)
+ -> credit.check.result: Str(OK)
+ -> http.status_code: Int(200)
+````
+
+ãã¬ãŒã¹ã«ã¯ã`credit.score` ã `credit.score.category` ã®ããã«ãã³ãŒãã§ãã£ããã£ããã¿ã° (屿§) ãå«ãŸããŠããããšã«æ³šæããŠãã ããããããã¯æ¬¡ã®ã»ã¯ã·ã§ã³ã§ãSplunk Observability Cloud ã§ãã¬ãŒã¹ãåæããŠããã©ãŒãã³ã¹åé¡ã®æ ¹æ¬åå ãç¹å®ãããšãã«äœ¿çšããŸãã
diff --git a/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/4-create-troubleshooting-metricset.md b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/4-create-troubleshooting-metricset.md
new file mode 100644
index 0000000000..8459ec5997
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/4-create-troubleshooting-metricset.md
@@ -0,0 +1,31 @@
+---
+title: Troubleshooting MetricSet ãäœæãã
+linkTitle: 4. Troubleshooting MetricSet ãäœæãã
+weight: 4
+time: 5 minutes
+---
+
+## ã¿ã°ã®ã€ã³ããã¯ã¹å
+
+**Splunk Observability Cloud** ã® **Tag Spotlight** ãªã©ã®é«åºŠãªæ©èœã䜿çšããã«ã¯ããŸã 1 ã€ä»¥äžã®ã¿ã°ãã€ã³ããã¯ã¹åããå¿
èŠããããŸãã
+
+ãããè¡ãã«ã¯ã**Settings** -> **APM & RUM MetricSets** ã«ç§»åãã**APM** ã¿ããéžæãããŠããããšã確èªããŸãã
+次ã«ã**Add MetricSet Configuration** ããããããŠã³ãã¯ãªãã¯ãã**Add Custom MetricSet** ãéžæããŸãã
+
+`credit.score.category` ã¿ã°ãã€ã³ããã¯ã¹åããããã«ã以äžã®è©³çްãå
¥åããŸãïŒ**泚æ**ïŒã¯ãŒã¯ã·ã§ããåå è
å
šå¡ãåãçµç¹ã䜿çšããŠããããããã®æé ã¯ã€ã³ã¹ãã©ã¯ã¿ãŒã代ããã«å®æœããŸãïŒïŒ
+
+
+
+**Start Analysis** ãã¯ãªãã¯ããŠæ¬¡ã«é²ã¿ãŸãã
+
+åæãå®è¡ãããŠããéãã¿ã°ã¯ **Pending MetricSets** ã®ãªã¹ãã«è¡šç€ºãããŸãã
+
+
+
+åæãå®äºãããã**Actions** åã®ãã§ãã¯ããŒã¯ãã¯ãªãã¯ããŸãã
+
+## Troubleshooting MetricSet ãš Monitoring MetricSet ã®éã
+
+ãã®ã¿ã°ãã€ã³ããã¯ã¹åããããã«ã**Troubleshooting MetricSet** ãšåŒã°ãããã®ãäœæããããšã«ãæ°ã¥ããããããŸãããTroubleshooting MetricSetïŒTMSïŒãšããååãä»ããããŠããã®ã¯ã**Tag Spotlight** ãªã©ã®æ©èœã䜿çšããŠãã®ã¿ã°ã«é¢ããåé¡ããã©ãã«ã·ã¥ãŒãã£ã³ã°ã§ããããã§ãã
+
+ãŸããéžæããªãã£ããã 1 ã€ã®ãªãã·ã§ã³ãšã㊠**Monitoring MetricSet**ïŒMMSïŒãããããšã«ããæ°ã¥ããããããŸãããMonitoring MetricSets ã¯ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¶
ããŠãã¢ã©ãŒããããã·ã¥ããŒãã§ã¿ã°ã䜿çšã§ããããã«ããŸããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ãã®æ©èœãæ±ããŸãããã匷åãªæ©èœã§ãã®ã§ããã²ãèªèº«ã§è©ŠããŠã¿ãŠãã ããã
diff --git a/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/5-troubleshoot-using-tag-spotlight.md b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/5-troubleshoot-using-tag-spotlight.md
new file mode 100644
index 0000000000..8c4d1a5955
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/5-troubleshoot-using-tag-spotlight.md
@@ -0,0 +1,92 @@
+---
+title: Tag Spotlight ã䜿çšããåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+linkTitle: 5. Tag Spotlight ã䜿çšããåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
+weight: 5
+time: 15 minutes
+---
+
+## APM ããŒã¿ã®æ¢çŽ¢
+
+ãã£ããã£ãã APM ããŒã¿ã®äžéšãæ¢çŽ¢ããŠãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã確èªããŠã¿ãŸãããã
+
+**APM** ã«ç§»åãã**Environment** ããããããŠã³ããèªåã®ç°å¢ïŒäŸïŒ`tagging-workshop-instancename`ïŒãéžæããŸãã
+
+ãµãŒãã¹äžèŠ§ã« `creditprocessorservice` ãš `creditcheckservice` ã衚瀺ãããŠããã¯ãã§ãã
+
+
+
+å³åŽã® **Service Map** ãã¯ãªãã¯ããŠããµãŒãã¹ãããã衚瀺ããŸãã`creditcheckservice` ã `creditprocessorservice` ãåŒã³åºããŠãããå¹³åå¿çæéãå°ãªããšã 3 ç§ã§ããããšãããããŸãã
+
+
+
+次ã«ãå³åŽã® **Traces** ãã¯ãªãã¯ããŠããã®ã¢ããªã±ãŒã·ã§ã³ã§ãã£ããã£ããããã¬ãŒã¹ã確èªããŸããäžéšã®ãã¬ãŒã¹ã¯æ¯èŒçé«éïŒæ°ããªç§çšåºŠïŒã§ãããä»ã®ãã¬ãŒã¹ã¯æ°ç§ãããããšãããããŸãã
+
+
+
+å®è¡æéãé·ããã¬ãŒã¹ã® 1 ã€ãã¯ãªãã¯ããŸãããã®äŸã§ã¯ããã¬ãŒã¹ã« 5 ç§ããã£ãŠãããã»ãšãã©ã®æéã `creditprocessorservice` ã®äžéšã§ãã `/runCreditCheck` æäœã®åŒã³åºãã«è²»ããããŠããããšãããããŸãã
+
+
+
+ãããããªãäžéšã®ãã¬ãŒã¹ã¯é
ããä»ã®ãã¬ãŒã¹ã¯æ¯èŒçéãã®ã§ããããïŒ
+
+ãã¬ãŒã¹ãéã㊠Trace Analyzer ã«æ»ããŸãã**Errors only** ã `on` ã«åãæ¿ãããšããšã©ãŒãçºçããŠãããã¬ãŒã¹ãããããšã«æ°ã¥ãã§ãããã
+
+
+
+ãšã©ãŒãã¬ãŒã¹ã® 1 ã€ãèŠããšã`creditprocessorservice` ã `otherservice` ãšããå¥ã®ãµãŒãã¹ãåŒã³åºãããšãããšãã«ãšã©ãŒãçºçããŠããããšãããããŸãããããããªãäžéšã®ãªã¯ãšã¹ã㯠`otherservice` ã®åŒã³åºããåŒãèµ·ãããä»ã®ãªã¯ãšã¹ãã¯ãããªããªãã®ã§ããããïŒ
+
+
+
+äžéšã®ãªã¯ãšã¹ããé
ããäžéšã®ãªã¯ãšã¹ãã§ãšã©ãŒãçºçããçç±ãç¹å®ããããã«ããã¬ãŒã¹ã 1 ã€ãã€ç¢ºèªããŠãåé¡ã®èåŸã«ãããã¿ãŒã³ãèŠã€ãåºãããšãã§ããŸãã
+
+**Splunk Observability Cloud** ã«ã¯ãåé¡ã®æ ¹æ¬åå ãèŠã€ããããã®ããè¯ãæ¹æ³ããããŸããæ¬¡ã«ãããæ¢çŽ¢ããŸãã
+
+## Tag Spotlight ã®äœ¿çš
+
+`credit.score.category` ã¿ã°ãã€ã³ããã¯ã¹åããã®ã§ãããã **Tag Spotlight** ãšçµã¿åãããŠã¢ããªã±ãŒã·ã§ã³ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«äœ¿çšã§ããŸãã
+
+**APM** ã«ç§»åããå³åŽã® **Tag Spotlight** ãã¯ãªãã¯ããŸãã**Service** ããããããŠã³ãã `creditcheckservice` ãµãŒãã¹ãéžæãããŠããããšã確èªããŠãã ããïŒãŸã éžæãããŠããªãå ŽåïŒã
+
+**Tag Spotlight** ã䜿çšãããšã`impossible` ã®ã¹ã³ã¢çµæã«ãªãã¯ã¬ãžããã¹ã³ã¢ãªã¯ãšã¹ãã® 100% ã§ãšã©ãŒãçºçããŠããäžæ¹ã§ãä»ã®ãã¹ãŠã®ã¯ã¬ãžããã¹ã³ã¢ã¿ã€ãã®ãªã¯ãšã¹ãã§ã¯ãšã©ãŒããŸã£ããçºçããŠããªãããšãããããŸãã
+
+****
+
+ããã **Tag Spotlight** ã®åšåã§ããããããªããã°ãã¿ãŒã³ãèŠã€ããã®ã«æéãããããäœçŸãã®ãã¬ãŒã¹ãæäœæ¥ã§ç¢ºèªããŠãã¿ãŒã³ãç¹å®ããå¿
èŠãããïŒããã§ãèŠã€ããä¿èšŒã¯ãããŸããïŒãéåžžã«æéãããããŸãã
+
+ãšã©ãŒãèŠãŠããŸããããã¬ã€ãã³ã·ãŒã¯ã©ãã§ããããïŒ **Requests & errors distribution** ããããããŠã³ãã¯ãªãã¯ãã**Latency distribution** ã«å€æŽããŸãããã
+
+> IMPORTANT: **Cards display** ã®æšªã«ããèšå®ã¢ã€ã³ã³ãã¯ãªãã¯ããŠãP50 ããã³ P99 ã¡ããªã¯ã¹ã远å ããŸãã
+
+ããã§ã¯ã`poor` ã¯ã¬ãžããã¹ã³ã¢ã®ãªã¯ãšã¹ããé
ãå®è¡ãããŠãããP50ãP90ãP99 ã®æéãããããçŽ 3 ç§ã§ããããšãããããŸããããã¯ãŠãŒã¶ãŒãåŸ
ã€ã«ã¯é·ãããæéã§ãä»ã®ãªã¯ãšã¹ããããã¯ããã«é
ããªã£ãŠããŸãã
+
+ãŸãã`exceptional` ã¯ã¬ãžããã¹ã³ã¢ã®ãªã¯ãšã¹ãã®äžéšãé
ããP99 æéãçŽ 5 ç§ãšãªã£ãŠããŸãããP50 å¿çæéã¯æ¯èŒçé«éã§ããããšãããããŸãã
+
+****
+
+## Dynamic Service Maps ã®äœ¿çš
+
+ãªã¯ãšã¹ãã«é¢é£ä»ããããã¯ã¬ãžããã¹ã³ã¢ã«ããŽãªãŒãããã©ãŒãã³ã¹ãšãšã©ãŒçã«åœ±é¿ãäžããå¯èœæ§ãããããšãããã£ãã®ã§ãã€ã³ããã¯ã¹åãããã¿ã°ã掻çšããå¥ã®æ©èœã§ãã **Dynamic Service Maps** ãæ¢çŽ¢ããŸãããã
+
+Dynamic Service Maps ã䜿çšãããšãç¹å®ã®ãµãŒãã¹ãã¿ã°ããšã«åè§£ã§ããŸããããšãã°ã**APM** ãã¯ãªãã¯ããŠãã **Service Map** ãã¯ãªãã¯ããŠãµãŒãã¹ãããã衚瀺ããŸãã
+
+`creditcheckservice` ãã¯ãªãã¯ããŸããæ¬¡ã«ãå³åŽã®ã¡ãã¥ãŒã§ **Breakdown** ãšè¡šç€ºãããŠããããããããŠã³ãã¯ãªãã¯ãã`credit.score.category` ã¿ã°ãéžæããŸãã
+
+ãã®æç¹ã§ããµãŒãã¹ãããã¯åçã«æŽæ°ããã`creditcheckservice` ã«ããããããªã¯ãšã¹ãã®ããã©ãŒãã³ã¹ãã¯ã¬ãžããã¹ã³ã¢ã«ããŽãªãŒå¥ã«åè§£ãããŠè¡šç€ºãããŸãã
+
+****
+
+ãã®ãã¥ãŒããã`good` ããã³ `fair` ã¯ã¬ãžããã¹ã³ã¢ã®ããã©ãŒãã³ã¹ã¯åªããŠããäžæ¹ã§ã`poor` ããã³ `exceptional` ã¹ã³ã¢ã¯ã¯ããã«é
ãã`impossible` ã¹ã³ã¢ã¯ãšã©ãŒãåŒãèµ·ãããŠããããšãæç¢ºã«ãªããŸãã
+
+## 調æ»çµæ
+
+**Tag Spotlight** ã¯ããã®ãµãŒãã¹ãææãããšã³ãžãã¢ãããã«èª¿æ»ãã¹ãããã€ãã®è峿·±ããã¿ãŒã³ãæããã«ããŸããã
+
+* ãªããã¹ãŠã® `impossible` ã¯ã¬ãžããã¹ã³ã¢ãªã¯ãšã¹ãã§ãšã©ãŒãçºçããã®ãïŒ
+* ãªããã¹ãŠã® `poor` ã¯ã¬ãžããã¹ã³ã¢ãªã¯ãšã¹ããé
ãã®ãïŒ
+* ãªãäžéšã® `exceptional` ãªã¯ãšã¹ããé
ãã®ãïŒ
+
+SRE ãšããŠããã®ã³ã³ããã¹ãããšã³ãžãã¢ãªã³ã°ããŒã ã«äŒããããšã¯ã圌ãã®èª¿æ»ã«ãããŠéåžžã«æçšã§ãããµãŒãã¹ããæã
é
ãããšã ãäŒããããããã¯ããã«è¿
éã«åé¡ã远跡ã§ããããã«ãªãããã§ãã
+
+èå³ãããã°ã`creditprocessorservice` ã®ãœãŒã¹ã³ãŒããèŠãŠã¿ãŠãã ãããimpossibleãpoorãexceptional ã®ã¯ã¬ãžããã¹ã³ã¢ãæã€ãªã¯ãšã¹ãã¯ããããç°ãªãæ¹æ³ã§åŠçãããŠããããããç§ãã¡ãæããã«ãããšã©ãŒçãšã¬ã€ãã³ã·ãŒã®éããåŒãèµ·ãããŠããããšãããããŸãã
+
+ãã®ã¢ããªã±ãŒã·ã§ã³ã§èгå¯ãããåäœã¯ããµãŒãã¹ã«æž¡ãããããŸããŸãªå
¥åãç°ãªãã³ãŒããã¹ãåŒãèµ·ããããã®äžéšãããã©ãŒãã³ã¹ã®äœäžããšã©ãŒãåŒãèµ·ãããçŸä»£ã®ã¯ã©ãŠããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã§ã¯å
žåçãªãã®ã§ããããšãã°ãå®éã®ã¯ã¬ãžãããã§ãã¯ãµãŒãã¹ã§ã¯ãäœãã¯ã¬ãžããã¹ã³ã¢ã«ãªããªã¯ãšã¹ãã¯ãªã¹ã¯ãããã«è©äŸ¡ããããã«å¥ã®ããŠã³ã¹ããªãŒã ãµãŒãã¹ã«éä¿¡ãããå Žåããããããé«ãã¹ã³ã¢ã«ãªããªã¯ãšã¹ããããå®è¡ãé
ããªã£ããããšã©ãŒçãé«ããªã£ããããããšããããŸãã
diff --git a/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/6-summary.md b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/6-summary.md
new file mode 100644
index 0000000000..b81c28d6f8
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/6-summary.md
@@ -0,0 +1,25 @@
+---
+title: Summary
+linkTitle: 6. ãŸãšã
+weight: 6
+time: 2 minutes
+---
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã以äžã®æŠå¿µããã³ãºãªã³ã§äœéšããŸããã
+
+* Helm ã䜿çšãã **Splunk Distribution of the OpenTelemetry Collector** ã®ãããã€æ¹æ³ã
+* [**OpenTelemetry**](https://opentelemetry.io) ã䜿çšããã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³æ¹æ³ã
+* OpenTelemetry SDK ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ããé¢å¿ã®ããã¿ã°ãååŸããæ¹æ³ã
+* **Troubleshooting MetricSets** ã䜿çšããŠã**Splunk Observability Cloud** ã§ã¿ã°ãã€ã³ããã¯ã¹ããæ¹æ³ã
+* **Tag Spotlight** ããã³ **Dynamic Service Map** æ©èœã䜿çšããŠã**Splunk Observability Cloud** ã§ã¿ã°ã掻çšããunknown unknownsïŒæªç¥ã®æªç¥ïŒããçºèŠããæ¹æ³ã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ç޹ä»ãããã¹ããã©ã¯ãã£ã¹ã«æ²¿ã£ãŠã¿ã°ãåéããããšã§ã**Splunk Observability Cloud** ã«éä¿¡ããããŒã¿ããããã«å€§ããªäŸ¡å€ãåŒãåºãããšãã§ããŸãããã®ã¯ãŒã¯ã·ã§ãããå®äºããä»ããèªèº«ã®ã¢ããªã±ãŒã·ã§ã³ããã¿ã°ãåéãå§ããããã«å¿
èŠãªç¥èã身ã«ã€ããŸããïŒ
+
+ä»ããã¿ã°ã®ååŸãå§ããã«ã¯ã[ãµããŒããããŠããåçš®èšèªã§ã¿ã°ã远å ããæ¹æ³](https://docs.splunk.com/observability/en/apm/span-tags/add-context-trace-span.html#instrument-your-application-code-to-add-tags-to-spans)ãåç
§ããç¶ã㊠[Tag Spotlight ã§åæã§ãããã Troubleshooting MetricSets ãäœæããæ¹æ³](https://docs.splunk.com/observability/en/apm/span-tags/index-span-tags.html#apm-index-span-tags) ã確èªããŠãã ãããããã«ãµããŒããå¿
èŠãªå Žåã¯ããæ°è»œã« [Splunk ã®ãšãã¹ããŒãã«ãåãåãããã ãã](https://www.splunk.com/en_us/about-splunk/contact-us.html)ã
+
+ãŸããä»ã®èšèªãç°å¢ã§ OpenTelemetry ãã©ã®ããã«ã€ã³ã¹ãã«ã¡ã³ããããŠãããã確èªããã«ã¯ã
+[Splunk OpenTelemetry Examples GitHub ãªããžããª](https://github.com/signalfx/splunk-opentelemetry-examples) ãã芧ãã ããã
+
+{{% notice title="ã¯ãŒã¯ã·ã§ããéå¶è
ãžã®ãã³ã" style="primary" icon="lightbulb" %}}
+ã¯ãŒã¯ã·ã§ãããå®äºããããå
ã»ã© `credit.score.category` ã¿ã°çšã«äœæãã APM MetricSet ãå¿ããã«åé€ããŠãã ããã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/_index.md b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/_index.md
new file mode 100644
index 0000000000..9324e48197
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/9-solving-problems-with-o11y-cloud/_index.md
@@ -0,0 +1,23 @@
+---
+title: O11y Cloud ã§åé¡ã解決ãã
+linkTitle: O11y Cloud ã§åé¡ã解決ãã
+weight: 9
+archetype: chapter
+time: 45 minutes
+authors: ["Derek Mitchell"]
+description: OpenTelemetry Collector ããããã€ããã¢ããªã±ãŒã·ã§ã³ãèšè£
ããTroubleshooting MetricSet ãš Tag Spotlight ã䜿ã£ãŠããã©ãŒãã³ã¹åé¡ã®æ ¹æ¬åå ãç¹å®ããŸãã
+draft: false
+hidden: false
+aliases:
+ - /ninja-workshops/9-solving-problems-with-o11y-cloud/
+---
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã以äžã®å
容ããã³ãºãªã³åœ¢åŒã§äœéšããŸãïŒ
+
+* **OpenTelemetry Collector** ããããã€ããã³ã¬ã¯ã¿ãŒèšå®ãã«ã¹ã¿ãã€ãºãã
+* ã¢ããªã±ãŒã·ã§ã³ããããã€ãã**OpenTelemetry** ã§èšè£
ãã
+* **OpenTelemetry SDK** ã䜿ã£ãŠã¿ã°ãã©ã®ããã«ãã£ããã£ããããã確èªãã
+* **Troubleshooting MetricSet** ãäœæãã
+* **Tag Spotlight** ã䜿ã£ãŠåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¡ããæ ¹æ¬åå ãç¹å®ãã
+
+ããã§ã¯å§ããŸãããïŒ
diff --git a/content/ja/ninja-workshops/foundations/_index.md b/content/ja/ninja-workshops/foundations/_index.md
new file mode 100644
index 0000000000..96ea12d018
--- /dev/null
+++ b/content/ja/ninja-workshops/foundations/_index.md
@@ -0,0 +1,10 @@
+---
+title: Foundations
+hero_title: Foundations
+layout: "hero"
+weight: 1
+description: OpenTelemetryã®åºç€ãããã·ã¥ããŒãããããŠæ¥ã
ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã¯ãŒã¯ãããŒãåŠã³ãŸãã
+time: 4 æé 45 å
+
+---
+
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/1-aws-setup.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/1-aws-setup.md
new file mode 100644
index 0000000000..6f198cefd2
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/1-aws-setup.md
@@ -0,0 +1,30 @@
+---
+title: AWS Setup
+linkTitle: 1. AWS Setup
+weight: 1
+time: 10 minutes
+---
+
+## AWS ã§ Red Hat OpenShift ãµãŒãã¹ãæå¹åãã
+
+AWS ã¢ã«ãŠã³ãã« OpenShift ããããã€ããããã«ããŸã [AWS console](https://us-east-1.console.aws.amazon.com/rosa/home?region=us-east-1#/) ã䜿çšã㊠Red Hat OpenShift ãµãŒãã¹ãæå¹åããå¿
èŠããããŸãã
+
+次ã«ãç»é¢ã®æç€ºã«åŸã£ãŠ AWS ã¢ã«ãŠã³ããš Red Hat ã¢ã«ãŠã³ãã飿ºãããŸãã
+
+## EC2 ã€ã³ã¹ã¿ã³ã¹ãããããžã§ãã³ã°ãã
+
+Red Hat ã¯ã©ã¹ã¿ãŒã®ãããã€ã«äœ¿çšãã EC2 ã€ã³ã¹ã¿ã³ã¹ãããããžã§ãã³ã°ããŸããããããã«ãããMac OS äžã§ ROSA ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ãå®è¡ããéã®å¶çŽãåé¿ã§ããŸãã
+
+ã¯ãŒã¯ã·ã§ãããäœæããéã«ã¯ãUbuntu 24.04 LTS ã䜿çšãã t3.xlarge ã€ã³ã¹ã¿ã³ã¹ã¿ã€ãã䜿çšããŸããããããå°ããã€ã³ã¹ã¿ã³ã¹ã¿ã€ãã§ãå©çšå¯èœã§ãã
+
+ã€ã³ã¹ã¿ã³ã¹ãèµ·åããããssh ã§æ¥ç¶ããŠãã ããã
+
+## GitHub ãªããžããªãã¯ããŒã³ãã
+
+EC2 ã€ã³ã¹ã¿ã³ã¹ã« GitHub ãªããžããªãã¯ããŒã³ããŸãã
+
+``` bash
+git clone https://github.com/splunk/observability-workshop.git
+
+cd observability-workshop/workshop/cisco-ai-pods
+```
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/10-cleanup.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/10-cleanup.md
new file mode 100644
index 0000000000..8ac97a65b2
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/10-cleanup.md
@@ -0,0 +1,49 @@
+---
+title: ã¯ãªãŒã³ã¢ãã
+linkTitle: 10. ã¯ãªãŒã³ã¢ãã
+weight: 10
+time: 5 minutes
+---
+
+## ã¯ãªãŒã³ã¢ããã®æé
+
+ã¯ãŒã¯ã·ã§ãããå®äºãããããã®ã»ã¯ã·ã§ã³ã®æé ã«åŸã£ãŠ OpenShift ã¯ã©ã¹ã¿ãŒãã¢ã³ã€ã³ã¹ããŒã«ããŸãã
+
+次ã®ã³ãã³ããå®è¡ããŠãã¯ã©ã¹ã¿ãŒ IDãã¯ã©ã¹ã¿ãŒåºæã® Operator ããŒã«ã® Amazon Resource Names (ARNs)ãããã³ OIDC ãããã€ããŒã®ãšã³ããã€ã³ã URL ãååŸããŸãã
+
+``` bash
+rosa describe cluster --cluster=$CLUSTER_NAME
+```
+
+次ã®ã³ãã³ãã䜿çšããŠã¯ã©ã¹ã¿ãŒãåé€ããŸãã
+
+``` bash
+rosa delete cluster --cluster=$CLUSTER_NAME --watch
+```
+
+ã¯ã©ã¹ã¿ãŒåºæã® Operator IAM ããŒã«ãåé€ããŸãã
+
+> Note: ããã³ããã衚瀺ãããããããã©ã«ãå€ããã®ãŸãŸåãå
¥ããŠãã ããã
+
+``` bash
+rosa delete operator-roles --prefix $OPERATOR_ROLES_PREFIX
+```
+
+OIDC ãããã€ããŒãåé€ããŸãã
+
+> Note: ããã³ããã衚瀺ãããããããã©ã«ãå€ããã®ãŸãŸåãå
¥ããŠãã ããã
+
+``` bash
+rosa delete oidc-provider --oidc-config-id $OIDC_ID
+```
+
+ãããã¯ãŒã¯ãåé€ããŸãã
+
+> Note: 次ã®ã³ãã³ããå®è¡ããåã«ããããã¯ãŒã¯ã®äœæã«äœ¿çšãã CloudFormation
+> ã¹ã¿ãã¯ã®ååã远å ããŠãã ããã
+
+``` bash
+aws cloudformation delete-stack --region $AWS_REGION --stack-name
+```
+
+Red Hat OpenShift Service ã AWS ã¢ã«ãŠã³ãããå®å
šã«åé€ãããå Žåã¯ã[OpenShift ããã¥ã¡ã³ã](https://docs.redhat.com/en/documentation/red_hat_openshift_service_on_aws/4/html/install_clusters/rosa-hcp-deleting-cluster)ãåç
§ããŠãã ããã
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/2-openshift-prereqs.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/2-openshift-prereqs.md
new file mode 100644
index 0000000000..11d08f29b5
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/2-openshift-prereqs.md
@@ -0,0 +1,155 @@
+---
+title: OpenShift Prerequisites
+linkTitle: 2. OpenShift Prerequisites
+weight: 2
+time: 15 minutes
+---
+
+以äžã®æé ã¯ãAWS ã« OpenShift ã¯ã©ã¹ã¿ãŒããããã€ããåã«å¿
èŠãšãªããã®ã§ãã
+
+## Create a Red Hat Login
+
+æåã«è¡ãå¿
èŠãããã®ã¯ãRed Hat ã®ã¢ã«ãŠã³ãäœæã§ãã
+[ãã¡ã](https://www.redhat.com/wapps/ugc/register.html?_flowId=register-flow&_flowExecutionKey=e1s1)
+ã®ãã©ãŒã ã«å
¥åããããšã§äœæã§ããŸãã
+
+## Install the AWS CLI
+
+äºåã«ããããžã§ãã³ã°ãã EC2 ã€ã³ã¹ã¿ã³ã¹ã« AWS CLI ãã€ã³ã¹ããŒã«ããã«ã¯ã以äžã®ã³ãã³ããå®è¡ããŸãã
+
+``` bash
+curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
+sudo apt install unzip
+unzip awscliv2.zip
+sudo ./aws/install
+```
+
+以äžã®ã³ãã³ãã䜿çšããŠãæ£åžžã«ã€ã³ã¹ããŒã«ãããããšã確èªããŸãã
+
+``` bash
+aws --version
+```
+
+次ã®ãããªåºåãè¿ãããã¯ãã§ãã
+
+````
+aws-cli/2.30.5 Python/3.13.7 Linux/6.14.0-1011-aws exe/x86_64.ubuntu.24
+````
+
+ä»»æã®æ¹æ³ã§ AWS ã¢ã«ãŠã³ãã«ãã°ã€ã³ããŸããæé ã«ã€ããŠã¯
+[ããã¥ã¡ã³ã](https://docs.aws.amazon.com/signin/latest/userguide/command-line-sign-in.html)
+ãåç
§ããŠãã ãããäŸãã°ã`aws configure` ã³ãã³ããå®è¡ããŠãã°ã€ã³ã§ããŸãã
+
+`aws ec2 describe-instances` ãªã©ã®ã³ãã³ããå®è¡ããŠãæ£åžžã«ãã°ã€ã³ã§ããŠããã確èªããŸãã
+
+ãã®åŸã以äžã®ã³ãã³ãã§ã¢ã«ãŠã³ãã® ID ã確èªããŸãã
+
+``` bash
+aws sts get-caller-identity
+```
+
+ELBïŒElastic Load BalancingïŒã®ãµãŒãã¹ããŒã«ãååšãããã確èªããŸãã
+
+``` bash
+aws iam get-role --role-name "AWSServiceRoleForElasticLoadBalancing"
+```
+
+ããŒã«ãååšããªãå Žåã¯ã以äžã®ã³ãã³ããå®è¡ããŠäœæããŸãã
+
+``` bash
+aws iam create-service-linked-role --aws-service-name "elasticloadbalancing.amazonaws.com"
+```
+
+## Install the ROSA CLI
+
+ãããã€ã«ã¯ ROSA ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ïŒCLIïŒã䜿çšããŸããæé ã¯
+[Red Hat ã®ããã¥ã¡ã³ã](https://docs.redhat.com/en/documentation/red_hat_openshift_service_on_aws_classic_architecture/4/html-single/install_rosa_classic_clusters/index#rosa-installing-and-configuring-the-rosa-cli_rosa-installing-cli)
+ã«åºã¥ããŠããŸãã
+
+ã䜿ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã åãã® ROSA CLI ã®ææ°ãªãªãŒã¹ã¯
+[ãã¡ã](https://console.redhat.com/openshift/downloads)ããããŠã³ããŒãã§ããŸãã
+
+代ããã«ã以äžã®ã³ãã³ãã䜿çšã㊠CLI ãã€ããªã EC2 ã€ã³ã¹ã¿ã³ã¹ã«çŽæ¥ããŠã³ããŒãããããšãã§ããŸãã
+
+````
+curl -L -O https://mirror.openshift.com/pub/cgw/rosa/latest/rosa-linux.tar.gz
+````
+
+å
容ãå±éããŸãã
+
+````
+tar -xvzf rosa-linux.tar.gz
+````
+
+å±éããããã¡ã€ã«ïŒ`rosa`ïŒãããã¹ã«å«ãŸããå Žæã«ç§»åããŸããäŸãã°æ¬¡ã®ããã«ããŸãã
+
+``` bash
+sudo mv rosa /usr/local/bin/rosa
+```
+
+以äžã®ã³ãã³ããå®è¡ã㊠Red Hat ã¢ã«ãŠã³ãã«ãã°ã€ã³ããã³ãã³ãåºåã®æç€ºã«åŸããŸãã
+
+````
+rosa login --use-device-code
+````
+
+## Install the OpenShift CLI (oc)
+
+以äžã®ã³ãã³ãã䜿çšããŠãOpenShift CLI ãã€ããªã EC2 ã€ã³ã¹ã¿ã³ã¹ã«çŽæ¥ããŠã³ããŒãã§ããŸãã
+
+````
+curl -L -O https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/openshift-client-linux.tar.gz
+````
+
+å
容ãå±éããŸãã
+
+````
+tar -xvzf openshift-client-linux.tar.gz
+````
+
+å±éããããã¡ã€ã«ïŒ`oc` ããã³ `kubectl`ïŒãããã¹ã«å«ãŸããå Žæã«ç§»åããŸããäŸãã°æ¬¡ã®ããã«ããŸãã
+
+``` bash
+sudo mv oc /usr/local/bin/oc
+sudo mv kubectl /usr/local/bin/kubectl
+```
+
+## Create Account-Wide Roles and Policies
+
+以äžã®ã³ãã³ãã䜿çšããŠãå¿
èŠãªã¢ã«ãŠã³ãå
šäœã®ããŒã«ãšããªã·ãŒãäœæããŸãã
+
+``` bash
+rosa create account-roles --mode auto
+```
+
+## Create an AWS VPC for ROSA HCP
+
+OpenShift ã¯ã©ã¹ã¿ãŒã®ãããã€ã«ã¯ãHosted Control PlaneïŒHCPïŒãããã€ãªãã·ã§ã³ã䜿çšããŸãã
+ãããè¡ãã«ã¯ã以äžã®ã³ãã³ãã䜿çšã㊠AWS ã¢ã«ãŠã³ãã«æ°ãã VPC ãäœæããå¿
èŠããããŸãã
+
+> Note: ã䜿ãã®ç°å¢ã«åãããŠãªãŒãžã§ã³ãæŽæ°ããŠãã ããã
+
+``` bash
+rosa create network network-template --param Region=us-east-2 --param Name=rosa-network-stack --template-dir='.'
+```
+
+> Important: ãã®ã³ãã³ãã®çµæãšããŠäœæããããµãããã ID ã¯ãã¯ã©ã¹ã¿ãŒäœææã«å¿
èŠã«ãªãã®ã§
+> ã¡ã¢ããŠãããŠãã ããããŸããåŸã§ãããã¯ãŒã¯ãåé€ããéã«å¿
èŠã«ãªããããCloudFormation
+> ã¹ã¿ãã¯åãã¡ã¢ããŠãããŠãã ããã
+
+> Note: ããã©ã«ãã§ã¯ãå AWS ãªãŒãžã§ã³ã¯ 5 ã€ã® Elastic IP ã¢ãã¬ã¹ã«å¶éãããŠããŸãã
+> 以äžã®ãšã©ãŒã衚瀺ãããå ŽåïŒ
+> "The maximum number of addresses has been reached."
+> AWS ã«é£çµ¡ããŠãã®äžéã®åŒãäžãããªã¯ãšã¹ããããã
+> ROSA çšã® VPC ãäœæããå¥ã® AWS ãªãŒãžã§ã³ãéžæããå¿
èŠããããŸãã
+
+## Create an OpenID Connect configuration
+
+Red Hat OpenShift Service on AWS ã¯ã©ã¹ã¿ãŒãäœæããåã«ã以äžã®ã³ãã³ãã§
+OpenID ConnectïŒOIDCïŒèšå®ãäœæããŸãã
+
+``` bash
+rosa create oidc-config --mode=auto --yes
+```
+
+> Important: äœæããã oidc-provider id ãã¡ã¢ããŠãããŠãã ããã
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/3-deploy-openshift-cluster.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/3-deploy-openshift-cluster.md
new file mode 100644
index 0000000000..2035791080
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/3-deploy-openshift-cluster.md
@@ -0,0 +1,88 @@
+---
+title: AWS ãžã® OpenShift ã¯ã©ã¹ã¿ãŒã®ãããã€
+linkTitle: 3. AWS ãžã® OpenShift ã¯ã©ã¹ã¿ãŒã®ãããã€
+weight: 3
+time: 25 minutes
+---
+
+## OpenShift ã¯ã©ã¹ã¿ãŒã®ãããã€
+
+ROSA CLI ã䜿ã£ãŠ OpenShift ã¯ã©ã¹ã¿ãŒããããã€ããŸãã
+
+ãŸããããã€ãã®ç°å¢å€æ°ãèšå®ããå¿
èŠããããŸãã
+
+> 泚æ: EXPORT ã³ãã³ããå®è¡ããåã«ãSubnet ID ãš OIDC ID ãå¿
ãèšå
¥ããŠãã ããã
+
+``` bash
+export CLUSTER_NAME=rosa-test
+export AWS_REGION=us-east-2
+export AWS_INSTANCE_TYPE=g5.4xlarge
+export SUBNET_IDS=
+export OIDC_ID=
+export OPERATOR_ROLES_PREFIX=rosa-test-a6x9
+```
+
+次ã®ã³ãã³ãã§ãOIDC æ§æçšã®ãªãã¬ãŒã¿ãŒããŒã«ãäœæããŸãã
+
+> 泚æ: ããã³ããã衚瀺ãããããããã©ã«ãå€ããã®ãŸãŸåãå
¥ããŠãã ããã
+
+``` bash
+rosa create operator-roles --hosted-cp --prefix $OPERATOR_ROLES_PREFIX --oidc-config-id $OIDC_ID
+```
+
+ç¶ããŠã以äžã®ããã«ã¯ã©ã¹ã¿ãŒãäœæããŸãã
+
+``` bash
+rosa create cluster \
+ --cluster-name $CLUSTER_NAME \
+ --mode auto \
+ --hosted-cp \
+ --sts \
+ --create-admin-user \
+ --operator-roles-prefix $OPERATOR_ROLES_PREFIX \
+ --oidc-config-id $OIDC_ID \
+ --subnet-ids $SUBNET_IDS \
+ --compute-machine-type $AWS_INSTANCE_TYPE \
+ --replicas 2 \
+ --region $AWS_REGION \
+ --tags "splunkit_environment_type:non-prd,splunkit_data_classification:private"
+```
+
+> ããã§ã¯ `g5.4xlarge` ã€ã³ã¹ã¿ã³ã¹ã¿ã€ããæå®ããŠããŸããããã«ã¯ã¯ãŒã¯ã·ã§ããã®åŸåã§äœ¿çšãã NVIDIA
+> GPU ãå«ãŸããŠããŸãããã®ã€ã³ã¹ã¿ã³ã¹ã¿ã€ãã¯æ¯èŒçé«äŸ¡ã§ãå·çæç¹ã§ 1 æéãããçŽ $1.64 ã§ãã
+> ããã« 2 ã€ã®ã¬ããªã«ãèŠæ±ããŠãããããã³ã¹ããæ¥éã«ç©ã¿äžããç¹ã«æ³šæããŠã
+> ã¯ã©ã¹ã¿ãŒã®çšŒåæéãæèããŠãã ããã
+
+ã¯ã©ã¹ã¿ãŒã Ready ã«ãªã£ããã©ããã確èªããã«ã¯ã次ãå®è¡ããŸãã
+
+``` bash
+rosa describe cluster -c $CLUSTER_NAME
+```
+
+ã¯ã©ã¹ã¿ãŒã®ã€ã³ã¹ããŒã«ãã°ãç£èŠããã«ã¯ã次ãå®è¡ããŸãã
+
+``` bash
+rosa logs install -c $CLUSTER_NAME --watch
+```
+
+## OpenShift ã¯ã©ã¹ã¿ãŒãžã®æ¥ç¶
+
+以äžã®ã³ãã³ãã䜿çšããŠãoc CLI ã OpenShift ã¯ã©ã¹ã¿ãŒã«æ¥ç¶ããŸãã
+
+> 泚æ: `rosa describe cluster -c $CLUSTER_NAME` ã³ãã³ããå®è¡ããçµæãšããŠåŸããã
+> API Server URL ã以äžã®ã³ãã³ãã«çœ®ãæããŠããå®è¡ããŠãã ãããäŸãã°ã
+> ãµãŒããŒå㯠`https://api.rosa-test.aaa.bb.openshiftapps.com:443` ã®ãããªåœ¢åŒã«ãªããŸãã
+
+``` bash
+ oc login -u cluster-admin
+```
+
+ã¯ã©ã¹ã¿ãŒã«æ¥ç¶ããããããŒããèµ·åããŠåäœããŠããããšã確èªããŸãã
+
+``` bash
+oc get nodes
+
+NAME STATUS ROLES AGE VERSION
+ip-10-0-1-184.us-east-2.compute.internal Ready worker 14m v1.31.11
+ip-10-0-1-50.us-east-2.compute.internal Ready worker 20m v1.31.11
+```
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/4-deploy-nvidia-nim.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/4-deploy-nvidia-nim.md
new file mode 100644
index 0000000000..c712c9d757
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/4-deploy-nvidia-nim.md
@@ -0,0 +1,329 @@
+---
+title: NVIDIA NIM Operator ã®ãããã€
+linkTitle: 4. NVIDIA NIM Operator ã®ãããã€
+weight: 4
+time: 20 minutes
+---
+
+**NVIDIA GPU Operator** ã¯ãKubernetes ã¯ã©ã¹ã¿ãŒå
ã§ GPU ãããããžã§ãã³ã°ããããã«å¿
èŠãªããã¹ãŠã® NVIDIA ãœãããŠã§ã¢ã³ã³ããŒãã³ãã®ãããã€ãèšå®ã管çãèªååãã Kubernetes Operator ã§ãã
+
+**NVIDIA NIM Operator** ã¯ãæ¬ã¯ãŒã¯ã·ã§ããã§å
ã»ã©äœæãã OpenShift ã¯ã©ã¹ã¿ãŒã®ãã㪠Kubernetes ç°å¢ã« LLM ããããã€ããããã«äœ¿çšããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ããã®ã»ã¯ã·ã§ã³ã§ã¯ãOpenShift ã¯ã©ã¹ã¿ãŒã« NVIDIA GPU Operator ãš NIM Operator ã®äž¡æ¹ããããã€ããããã«å¿
èŠãªæé ãé ã远ã£ãŠèª¬æããŸãã
+
+## NVIDIA NGC ã¢ã«ãŠã³ãã®äœæ
+
+LLM ãããŠã³ããŒãã㊠NVIDIA NIM Operator ã䜿çšããŠãããã€ããã«ã¯ãNVIDIA GPU CLOUD (NGC) ã¢ã«ãŠã³ããå¿
èŠã§ããã¢ã«ãŠã³ã㯠[ãã¡ã](https://ngc.nvidia.com/signin) ããç»é²ã§ããŸãã
+
+## NVIDIA Developer Program ãžã®ç»é²
+
+[NVIDIA Developer Program](https://developer.nvidia.com/) ã«ç»é²ããããšã§ãã¯ãŒã¯ã·ã§ããã®åŸåã§ LLM ã®ãããã€ã«äœ¿çšãã NVIDIA NIM ãžã®ã¢ã¯ã»ã¹ãå¯èœã«ãªããŸãã
+
+NGC ã® NVIDIA ãµãã¹ã¯ãªãã·ã§ã³äžèŠ§ã« `NVIDIA Developer Program` ã衚瀺ãããŠããããšã確èªããŠãã ããã
+
+
+
+## NGC API ããŒã®çæ
+
+NGC ãŠã§ããµã€ãã«ãã°ã€ã³ããããç»é¢å³äžã®ãŠãŒã¶ãŒã¢ã«ãŠã³ãã¢ã€ã³ã³ãã¯ãªãã¯ãã**Setup** ãéžæããŸãã
+
+次㫠**Generate API Key** ãã¯ãªãã¯ããæç€ºã«åŸã£ãŠãã ãããããŒã **NGC Catalog** ããã³ **Secrets Manager** ãµãŒãã¹ã«é¢é£ä»ããããŠããããšã確èªããŠãã ããã
+
+çæãããããŒã¯ãã¯ãŒã¯ã·ã§ããã®åŸåã§äœ¿çšãããããå®å
šãªå Žæã«ä¿åããŠãããŸãã
+
+NGC API ããŒã®çæã«é¢ãã詳现ã¯ã[NVIDIA ããã¥ã¡ã³ã](https://docs.nvidia.com/ngc/gpu-cloud/ngc-user-guide/index.html#generating-api-key) ãåç
§ããŠãã ããã
+
+## Node Feature Discovery Operator ã®ã€ã³ã¹ããŒã«
+
+ãã®ã»ã¯ã·ã§ã³ã®æé ã¯ã[Installing the NFD Operator using the CLI](https://docs.redhat.com/en/documentation/openshift_container_platform/4.18/html/specialized_hardware_and_driver_enablement/psap-node-feature-discovery-operator#install-operator-cli_psap-node-feature-discovery-operator) ã«åºã¥ããŠããŸãã
+
+次ã®ã¹ã¯ãªãããå®è¡ããŠãNode Feature Discovery Operator ãã€ã³ã¹ããŒã«ããŸãã
+
+``` bash
+cd nvidia
+./install-nfd-operator.sh
+```
+
+Operator ã®ãããã€ãæåããããšã確èªããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+oc get pods
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+NAME READY STATUS RESTARTS AGE
+nfd-controller-manager-7f86ccfb58-vgr4x 2/2 Running 0 10m
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## NodeFeatureDiscovery CR ã®äœæ
+
+ãã®ã»ã¯ã·ã§ã³ã®æé ã¯ã[Creating a NodeFeatureDiscovery CR by using the CLI](https://docs.redhat.com/en/documentation/openshift_container_platform/4.18/html/specialized_hardware_and_driver_enablement/psap-node-feature-discovery-operator#creating-nfd-cr-cli_psap-node-feature-discovery-operator) ã«åºã¥ããŠããŸãã
+
+次ã®ã¹ã¯ãªãããå®è¡ããŠãNode Feature Discovery CR ãäœæããŸãã
+
+``` bash
+./create-nfd-cr.sh
+```
+
+## NVIDIA GPU Operator ã®ã€ã³ã¹ããŒã«
+
+ãã®ã»ã¯ã·ã§ã³ã®æé ã¯ã[Installing the NVIDIA GPU Operator on OpenShift](https://docs.nvidia.com/datacenter/cloud-native/openshift/latest/install-gpu-ocp.html#installing-the-nvidia-gpu-operator-on-openshift) ã«åºã¥ããŠããŸãã
+
+次ã®ã¹ã¯ãªãããå®è¡ããŠãNVIDIA GPU Operator ãã€ã³ã¹ããŒã«ããŸãã
+
+``` bash
+./install-nvidia-gpu-operator.sh
+```
+
+ã€ã³ã¹ããŒã«ãã©ã³ãäœæããããŸã§åŸ
æ©ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+oc get installplan -n nvidia-gpu-operator
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+NAME CSV APPROVAL APPROVED
+install-mmlxq gpu-operator-certified.v25.3.4 Manual false
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+次ã®ã³ãã³ãã§ã€ã³ã¹ããŒã«ãã©ã³ãæ¿èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+INSTALL_PLAN=$(oc get installplan -n nvidia-gpu-operator -oname)
+oc patch $INSTALL_PLAN -n nvidia-gpu-operator --type merge --patch '{"spec":{"approved":true }}'
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+installplan.operators.coreos.com/install-rc9xq patched
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## ã¯ã©ã¹ã¿ãŒããªã·ãŒã®äœæ
+
+ãã®ã»ã¯ã·ã§ã³ã®æé ã¯ã[Create the cluster policy using the CLI](https://docs.nvidia.com/datacenter/cloud-native/openshift/latest/install-gpu-ocp.html#create-the-cluster-policy-using-the-cli) ã«åºã¥ããŠããŸãã
+
+``` bash
+./create-cluster-policy.sh
+```
+
+## NVIDIA GPU Operator ã®ã€ã³ã¹ããŒã«ç¢ºèª
+
+次ã®ã³ãã³ãã䜿çšããŠãNVIDIA GPU Operator ãæ£åžžã«ã€ã³ã¹ããŒã«ãããŠããããšã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+oc get pods,daemonset -n nvidia-gpu-operator
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+NAME READY STATUS RESTARTS AGE
+pod/gpu-feature-discovery-sblkn 1/1 Running 0 5m5s
+pod/gpu-feature-discovery-zpt94 1/1 Running 0 4m58s
+pod/gpu-operator-6579bc6fdc-cp28l 1/1 Running 0 23m
+pod/nvidia-container-toolkit-daemonset-qfcl9 1/1 Running 0 5m5s
+pod/nvidia-container-toolkit-daemonset-zbwb6 1/1 Running 0 4m59s
+pod/nvidia-cuda-validator-f7tl2 0/1 Completed 0 78s
+pod/nvidia-cuda-validator-t7n9g 0/1 Completed 0 71s
+pod/nvidia-dcgm-exporter-gk66x 1/1 Running 0 4m59s
+pod/nvidia-dcgm-exporter-w8kr8 1/1 Running 2 (52s ago) 5m5s
+pod/nvidia-dcgm-lrnzr 1/1 Running 0 4m58s
+pod/nvidia-dcgm-tvrdm 1/1 Running 0 5m5s
+pod/nvidia-device-plugin-daemonset-d62nk 1/1 Running 0 5m5s
+pod/nvidia-device-plugin-daemonset-fnv4j 1/1 Running 0 4m59s
+pod/nvidia-driver-daemonset-418.94.202509100653-0-5xbvq 2/2 Running 0 5m48s
+pod/nvidia-driver-daemonset-418.94.202509100653-0-hmkdl 2/2 Running 0 5m48s
+pod/nvidia-node-status-exporter-2kqwr 1/1 Running 0 5m44s
+pod/nvidia-node-status-exporter-n8d9s 1/1 Running 0 5m44s
+pod/nvidia-operator-validator-r2nm2 1/1 Running 0 5m5s
+pod/nvidia-operator-validator-w2fpn 1/1 Running 0 4m59s
+
+NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
+daemonset.apps/gpu-feature-discovery 2 2 2 2 2 nvidia.com/gpu.deploy.gpu-feature-discovery=true 5m45s
+daemonset.apps/nvidia-container-toolkit-daemonset 2 2 2 2 2 nvidia.com/gpu.deploy.container-toolkit=true 5m48s
+daemonset.apps/nvidia-dcgm 2 2 2 2 2 nvidia.com/gpu.deploy.dcgm=true 5m46s
+daemonset.apps/nvidia-dcgm-exporter 2 2 2 2 2 nvidia.com/gpu.deploy.dcgm-exporter=true 5m46s
+daemonset.apps/nvidia-device-plugin-daemonset 2 2 2 2 2 nvidia.com/gpu.deploy.device-plugin=true 5m47s
+daemonset.apps/nvidia-device-plugin-mps-control-daemon 0 0 0 0 0 nvidia.com/gpu.deploy.device-plugin=true,nvidia.com/mps.capable=true 5m47s
+daemonset.apps/nvidia-driver-daemonset-418.94.202509100653-0 2 2 2 2 2 feature.node.kubernetes.io/system-os_release.OSTREE_VERSION=418.94.202509100653-0,nvidia.com/gpu.deploy.driver=true 5m48s
+daemonset.apps/nvidia-mig-manager 0 0 0 0 0 nvidia.com/gpu.deploy.mig-manager=true 5m45s
+daemonset.apps/nvidia-node-status-exporter 2 2 2 2 2 nvidia.com/gpu.deploy.node-status-exporter=true 5m44s
+daemonset.apps/nvidia-operator-validator 2 2 2 2 2 nvidia.com/gpu.deploy.operator-validator=true 5m48s
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## Operator SDK ã®ã€ã³ã¹ããŒã«
+
+ãã®ã»ã¯ã·ã§ã³ã®æé ã¯ã[Install from GitHub release](https://sdk.operatorframework.io/docs/installation/#install-from-github-release) ã«åºã¥ããŠããŸãã
+
+### ãªãªãŒã¹ãã€ããªã®ããŠã³ããŒã
+
+ãã©ãããã©ãŒã æ
å ±ãèšå®ããŸãã
+
+``` bash
+export ARCH=$(case $(uname -m) in x86_64) echo -n amd64 ;; aarch64) echo -n arm64 ;; *) echo -n $(uname -m) ;; esac)
+export OS=$(uname | awk '{print tolower($0)}')
+```
+
+ã䜿ãã®ãã©ãããã©ãŒã åãã®ãã€ããªãããŠã³ããŒãããŸãã
+
+``` bash
+export OPERATOR_SDK_DL_URL=https://github.com/operator-framework/operator-sdk/releases/download/v1.41.1
+curl -LO ${OPERATOR_SDK_DL_URL}/operator-sdk_${OS}_${ARCH}
+```
+
+### ããŠã³ããŒããããã€ããªã®æ€èšŒ
+
+keyserver.ubuntu.com ãã operator-sdk ãªãªãŒã¹ã® GPG ããŒãã€ã³ããŒãããŸãã
+
+``` bash
+gpg --keyserver keyserver.ubuntu.com --recv-keys 052996E2A20B5C7E
+```
+
+ãã§ãã¯ãµã ãã¡ã€ã«ãšãã®çœ²åãããŠã³ããŒããã眲åãæ€èšŒããŸãã
+
+``` bash
+curl -LO ${OPERATOR_SDK_DL_URL}/checksums.txt
+curl -LO ${OPERATOR_SDK_DL_URL}/checksums.txt.asc
+gpg -u "Operator SDK (release) " --verify checksums.txt.asc
+```
+
+次ã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+``` bash
+gpg: assuming signed data in 'checksums.txt'
+gpg: Signature made Fri 30 Oct 2020 12:15:15 PM PDT
+gpg: using RSA key ADE83605E945FA5A1BD8639C59E5B47624962185
+gpg: Good signature from "Operator SDK (release) " [ultimate]
+```
+
+ãã§ãã¯ãµã ãäžèŽããããšã確èªããŸãã
+
+``` bash
+grep operator-sdk_${OS}_${ARCH} checksums.txt | sha256sum -c -
+```
+
+次ã®ãããªåºåã衚瀺ãããã¯ãã§ãã
+
+``` bash
+operator-sdk_linux_amd64: OK
+```
+
+### ãªãªãŒã¹ãã€ããªã PATH ã«ã€ã³ã¹ããŒã«
+
+``` bash
+chmod +x operator-sdk_${OS}_${ARCH} && sudo mv operator-sdk_${OS}_${ARCH} /usr/local/bin/operator-sdk
+```
+
+## NGC CLI ã®ã€ã³ã¹ããŒã«
+
+ãã®ã»ã¯ã·ã§ã³ã®æé ã¯ã[NGC CLI Install](https://org.ngc.nvidia.com/setup/installers/cli) ã«åºã¥ããŠããŸãã
+
+Download CLI ãã¯ãªãã¯ããŠãã€ããªãå«ã zip ãã¡ã€ã«ãããŠã³ããŒãããæš©éã®ãããã£ã¬ã¯ããªã«è»¢éããŠãããè§£åããŠãã€ããªãå®è¡ããŸããå®è¡æš©éã®ãããã£ã¬ã¯ããªã«ç§»åããŠæ¬¡ã®ã³ãã³ããå®è¡ããããšã§ãã³ãã³ãã©ã€ã³ããããŠã³ããŒããè§£åãã€ã³ã¹ããŒã«ãè¡ãããšãã§ããŸãã
+
+``` bash
+wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/ngc-apps/ngc_cli/versions/4.3.0/files/ngccli_linux.zip -O ngccli_linux.zip && unzip ngccli_linux.zip
+```
+
+ããŠã³ããŒãæã«ãã¡ã€ã«ãç ŽæããŠããªãããšã確èªããããããã€ããªã® md5 ããã·ã¥ããã§ãã¯ããŸãã
+
+``` bash
+find ngc-cli/ -type f -exec md5sum {} + | LC_ALL=C sort | md5sum -c ngc-cli.md5
+```
+
+ããŠã³ããŒãæã«ãã¡ã€ã«ãç ŽæããŠããªãããšã確èªããããããã€ããªã® SHA256 ããã·ã¥ããã§ãã¯ããŸããæ¬¡ã®ã³ãã³ããå®è¡ããŠãã ããã
+
+``` bash
+sha256sum ngccli_linux.zip
+```
+
+ãªãœãŒã¹ã®ãªãªãŒã¹ããŒãã«ãèšèŒãããŠãããæ¬¡ã®å€ãšæ¯èŒããŸãã
+
+``` bash
+5f01eff85a66c895002f3c87db2933c462f3b86e461e60d515370f647b4ffc21
+```
+
+å€ã確èªããããNGC CLI ãã€ããªãå®è¡å¯èœã«ããçŸåšã®ãã£ã¬ã¯ããªã PATH ã«è¿œå ããŸãã
+
+``` bash
+chmod u+x ngc-cli/ngc
+echo "export PATH=\"\$PATH:$(pwd)/ngc-cli\"" >> ~/.bash_profile && source ~/.bash_profile
+```
+
+ã³ãã³ããå®è¡ã§ããããã«ãããããNGC CLI ãèšå®ããå¿
èŠããããŸãã
+
+次ã®ã³ãã³ããå
¥åããããã³ããã衚瀺ãããã API ããŒãå
¥åããŸãã
+
+``` bash
+ngc config set
+```
+
+NGC API ããŒãç°å¢å€æ°ãšããŠå®çŸ©ããŸãã
+
+``` bash
+export NGC_API_KEY=
+```
+
+## NVIDIA NIM Operator ã®ã€ã³ã¹ããŒã«
+
+ãã®ã»ã¯ã·ã§ã³ã®æé ã¯ã[Installing NIM Operator on Red Hat OpenShift Using operator-sdk (for Development-Only)](https://docs.nvidia.com/nim-operator/latest/install.html#installing-nim-operator-on-red-hat-openshift-using-operator-sdk-for-development-only) ã«åºã¥ããŠããŸãã
+
+次ã®ã¹ã¯ãªãããå®è¡ããŠãNIM Operator ãã€ã³ã¹ããŒã«ããŸãã
+
+``` bash
+./install-nim-operator.sh
+```
+
+ã³ã³ãããŒã©ãŒ Pod ãå®è¡äžã§ããããšã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+oc get pods -n nvidia-nim-operator
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+NAME READY STATUS RESTARTS AGE
+ec60a4439c710b89fc2582f5384382b4241f9aee62bb3182b8d128e69dx54dc 0/1 Completed 0 61s
+ghcr-io-nvidia-k8s-nim-operator-bundle-latest-main 1/1 Running 0 71s
+k8s-nim-operator-86d478b55c-w5cf5 1/1 Running 0 50s
+```
+
+{{% /tab %}}
+{{< /tabs >}}
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/6-setup-users.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/6-setup-users.md
new file mode 100644
index 0000000000..4bc84e5f8f
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/6-setup-users.md
@@ -0,0 +1,172 @@
+---
+title: ãŠãŒã¶ãŒã®ã»ããã¢ãã
+linkTitle: 6. ãŠãŒã¶ãŒã®ã»ããã¢ãã
+weight: 6
+time: 5 minutes
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãã¯ãŒã¯ã·ã§ããåå è
ããšã«ãŠãŒã¶ãŒãäœæããããããã« namespace ãšãªãœãŒã¹
+ã¯ã©ãŒã¿ãå²ãåœãŠãŸãã
+
+## ãŠãŒã¶ãŒ namespace ãšãªãœãŒã¹ã¯ã©ãŒã¿ã®äœæ
+
+``` bash
+cd user-setup
+./create-namespaces.sh
+```
+
+## ãŠãŒã¶ãŒã®äœæ
+
+åå è
ã®èªèšŒæ
å ±ãå«ã HTPasswd ãã¡ã€ã«ãäœæããROSA ã管çãã HTPasswd IdP ã
+ã«ã¹ã¿ã ã®ãã®ã«çœ®ãæããŸãã
+
+``` bash
+./create-users.sh
+```
+
+## cluster-admin ãŠãŒã¶ãŒã®åäœæãšåãã°ã€ã³
+
+cluster-admin ãŠãŒã¶ãŒãåäœæããå床ãã°ã€ã³ããŸãã
+
+``` bash
+rosa create admin -c rosa-test
+oc login --username cluster-admin --password
+```
+
+## ãŠãŒã¶ãŒãžã®ããŒã«è¿œå
+
+åãŠãŒã¶ãŒã«ãèªèº«ã® namespace ã®ã¿ãžã®ã¢ã¯ã»ã¹æš©ãä»äžããŸãã
+
+``` bash
+./add-role-to-users.sh
+```
+
+泚æ: 以äžã®ãããªãšã©ãŒã衚瀺ãããå ŽåããããŸãããç¡èŠããŠåé¡ãããŸããã
+
+````
+Warning: User 'participant1' not found
+clusterrole.rbac.authorization.k8s.io/admin added: "participant1"
+````
+
+## ãã°ã€ã³ã®ãã¹ã
+
+### OpenShift CLI ã®ã€ã³ã¹ããŒã«
+
+ããŒã«ã«ãã·ã³ãããã°ã€ã³ããã¹ãããããã«ãOpenShift CLI ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã
+
+MacOS ã®å Žåã¯ãHomebrew ããã±ãŒãžãããŒãžã£ãŒã䜿çšã㊠OpenShift CLI ãã€ã³ã¹ããŒã«ã§ããŸãã
+
+``` bash
+brew install openshift-cli
+```
+
+ãã®ä»ã®ã€ã³ã¹ããŒã«æ¹æ³ã«ã€ããŠã¯ã[OpenShift ããã¥ã¡ã³ã](https://docs.redhat.com/en/documentation/openshift_container_platform/4.8/html/cli_tools/openshift-cli-oc) ãåç
§ããŠãã ããã
+
+### ã¯ãŒã¯ã·ã§ãããŠãŒã¶ãŒãšããŠã®ãã°ã€ã³
+
+ããŒã«ã«ãã·ã³ããã¯ãŒã¯ã·ã§ãããŠãŒã¶ãŒã® 1 人ãšããŠãã°ã€ã³ã詊ã¿ãŸãã
+
+``` bash
+oc login https://api.:443 -u participant1 -p 'TempPass123!'
+```
+
+以äžã®ãããªã¡ãã»ãŒãžã衚瀺ãããã¯ãã§ãã
+
+````
+Login successful.
+
+You have one project on this server: "workshop-participant-1"
+````
+
+### LLM ãžã®ã¢ã¯ã»ã¹ç¢ºèª
+
+ã¯ãŒã¯ã·ã§ãããŠãŒã¶ãŒã¢ã«ãŠã³ããã LLM ã«ã¢ã¯ã»ã¹ã§ããããšã確èªããŸãã
+
+curl ã³ãã³ãã䜿çšã§ãã pod ãèµ·åããŸãã
+
+``` bash
+oc run curl --rm -it --image=curlimages/curl:latest \
+ --overrides='{
+ "spec": {
+ "containers": [{
+ "name": "curl",
+ "image": "curlimages/curl:latest",
+ "stdin": true,
+ "tty": true,
+ "command": ["sh"],
+ "resources": {
+ "limits": {
+ "cpu": "50m",
+ "memory": "100Mi"
+ },
+ "requests": {
+ "cpu": "50m",
+ "memory": "100Mi"
+ }
+ }
+ }]
+ }
+ }'
+```
+
+次ã«ã以äžã®ã³ãã³ããå®è¡ã㊠LLM ã«ããã³ãããéä¿¡ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+curl -X "POST" \
+ 'http://meta-llama-3-2-1b-instruct.nim-service:8000/v1/chat/completions' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "model": "meta/llama-3.2-1b-instruct",
+ "messages": [
+ {
+ "content":"What is the capital of Canada?",
+ "role": "user"
+ }],
+ "top_p": 1,
+ "n": 1,
+ "max_tokens": 1024,
+ "stream": false,
+ "frequency_penalty": 0.0,
+ "stop": ["STOP"]
+ }'
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+{
+ "id": "chatcmpl-2ccfcd75a0214518aab0ef0375f8ca21",
+ "object": "chat.completion",
+ "created": 1758919002,
+ "model": "meta/llama-3.2-1b-instruct",
+ "choices": [
+ {
+ "index": 0,
+ "message": {
+ "role": "assistant",
+ "reasoning_content": null,
+ "content": "The capital of Canada is Ottawa.",
+ "tool_calls": []
+ },
+ "logprobs": null,
+ "finish_reason": "stop",
+ "stop_reason": null
+ }
+ ],
+ "usage": {
+ "prompt_tokens": 42,
+ "total_tokens": 50,
+ "completion_tokens": 8,
+ "prompt_tokens_details": null
+ },
+ "prompt_logprobs": null
+}
+```
+
+{{% /tab %}}
+{{< /tabs >}}
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/7-install-otel-collector.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/7-install-otel-collector.md
new file mode 100644
index 0000000000..f50c81978c
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/7-install-otel-collector.md
@@ -0,0 +1,107 @@
+---
+title: OpenTelemetry Collector ã®ã€ã³ã¹ããŒã«
+linkTitle: 7. OpenTelemetry Collector ã®ã€ã³ã¹ããŒã«
+weight: 7
+time: 5 minutes
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãclusterReceiver ã®ã¿ãæå¹åãã OpenTelemetry collector ãã€ã³ã¹ããŒã«ããŸã
+ïŒã¯ãŒã¯ã·ã§ããåå è
ã¯åèªã® namespace ã«ç¬èªã®ãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããããïŒã
+ãã®åŸããã® collector ã®ã€ã³ã¹ããŒã«ã«ãã£ãŠäœæããã ClusterRole ãã
+åã¯ãŒã¯ã·ã§ããåå è
ã® namespace ã«ãã€ã³ãããŸãã
+
+## OpenTelemetry Collector ã®ã€ã³ã¹ããŒã«
+
+ãŸããcollector çšã®æ°ãããããžã§ã¯ããäœæãããã®ãããžã§ã¯ãã«åãæ¿ããŸã:
+
+```bash
+oc new-project admin-otel
+```
+
+Splunk OpenTelemetry Collector for Kubernetes ã® Helm chart ãªããžããªã远å ããŸã:
+
+```bash
+helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart
+````
+
+ãªããžããªãææ°ã§ããããšã確èªããŸã:
+
+```bash
+helm repo update
+````
+
+OpenTelemetry collector ã®ã€ã³ã¹ããŒã«ã«äœ¿çšãã `./admin-otel-collector/admin-otel-collector-values.yaml`
+ãã¡ã€ã«ã®å
容ã確èªããŠãã ããã
+
+collector ãããŒã¿ãéä¿¡ãã Splunk ç°å¢ãèšå®ãããããç°å¢å€æ°ãèšå®ããŸã:
+
+``` bash
+export CLUSTER_NAME=ai-pod-workshop-admin
+export ENVIRONMENT_NAME=ai-pod-workshop-admin
+export SPLUNK_ACCESS_TOKEN=
+export SPLUNK_REALM=
+export SPLUNK_HEC_URL=:443/services/collector/event>
+export SPLUNK_HEC_TOKEN=
+export SPLUNK_INDEX=splunk4rookies-workshop
+```
+
+次ã«ã以äžã®ã³ãã³ãã§ collector ãã€ã³ã¹ããŒã«ããŸã:
+
+```bash
+helm install splunk-otel-collector \
+ --set="clusterName=$CLUSTER_NAME" \
+ --set="environment=$ENVIRONMENT_NAME" \
+ --set="splunkObservability.accessToken=$SPLUNK_ACCESS_TOKEN" \
+ --set="splunkObservability.realm=$SPLUNK_REALM" \
+ --set="splunkPlatform.endpoint=$SPLUNK_HEC_URL" \
+ --set="splunkPlatform.token=$SPLUNK_HEC_TOKEN" \
+ --set="splunkPlatform.index=$SPLUNK_INDEX" \
+ -f ./admin-otel-collector/admin-otel-collector-values.yaml \
+ -n admin-otel \
+ splunk-otel-collector-chart/splunk-otel-collector
+```
+
+以äžã®ã³ãã³ããå®è¡ããŠããã¹ãŠã® collector ã® pod ãåäœããŠããããšã確èªããŸã:
+
+````
+oc get pods -n admin-otel
+
+NAME READY STATUS RESTARTS AGE
+splunk-otel-collector-k8s-cluster-receiver-7b7f5cdc5b-rhxsj 1/1 Running 0 6m40s
+````
+
+## åã¯ãŒã¯ã·ã§ããåå è
çšã® Service Account ã®äœæãš Cluster Role ãžã®ãã€ã³ã
+
+``` bash
+for i in {1..30}; do
+ ns="workshop-participant-$i"
+
+ oc get ns "$ns" >/dev/null 2>&1 || continue
+ oc -n "$ns" create sa splunk-otel-collector 2>/dev/null || true
+
+ oc apply -f - </dev/null 2>&1 || continue
+ oc -n "$ns" adm policy add-scc-to-user splunk-otel-collector -z splunk-otel-collector
+done
+```
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/8-deploy-vector-db.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/8-deploy-vector-db.md
new file mode 100644
index 0000000000..9ee7b1d763
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/8-deploy-vector-db.md
@@ -0,0 +1,79 @@
+---
+title: Deploy the Vector Database
+linkTitle: 8. Deploy the Vector Database
+weight: 8
+time: 10 minutes
+---
+
+ãã®ã¹ãããã§ã¯ãOpenShiftã¯ã©ã¹ã¿ãŒã«ãã¯ãã«ããŒã¿ããŒã¹ããããã€ããã¯ãŒã¯ã·ã§ããåå è
ã䜿çšãããã¹ãããŒã¿ãæå
¥ããŸãã
+
+## Deploy a Vector Database
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ããªãŒãã³ãœãŒã¹ã®ãã¯ãã«ããŒã¿ããŒã¹ã§ãã [Weaviate](https://weaviate.io/) ããããã€ããŸãã
+
+ãŸããWeaviate helm chartãå«ãŸããŠããWeaviate helmãªããžããªã远å ããŸãã
+
+``` bash
+helm repo add weaviate https://weaviate.github.io/weaviate-helm
+helm repo update
+```
+
+`weaviate/weaviate-values.yaml` ãã¡ã€ã«ã«ã¯ãWeaviateãã¯ãã«ããŒã¿ããŒã¹ããããã€ããããã«äœ¿çšããèšå®ãå«ãŸããŠããŸãã
+
+åŸã»ã©Prometheus receiverã§ã¹ã¯ã¬ã€ãã§ããã¡ããªã¯ã¹ãWeaviateãå
¬éããããã«ã以äžã®ç°å¢å€æ°ã `TRUE` ã«èšå®ããŠããŸãã
+
+````
+ PROMETHEUS_MONITORING_ENABLED: true
+ PROMETHEUS_MONITORING_GROUP: true
+````
+
+å©çšå¯èœãªãã®ä»ã®ã«ã¹ã¿ãã€ãºãªãã·ã§ã³ã«ã€ããŠã¯ã[Weaviate documentation](https://docs.weaviate.io/deploy/installation-guides/k8s-installation) ãåç
§ããŠãã ããã
+
+æ°ããnamespaceãäœæããŸãã
+
+``` bash
+oc create namespace weaviate
+```
+
+Weaviateãç¹æš©ã³ã³ãããå®è¡ã§ããããã«ã以äžã®ã³ãã³ããå®è¡ããŸãã
+
+> 泚: ãã®ã¢ãããŒãã¯æ¬çªç°å¢ã§ã¯æšå¥šãããŸãã
+
+``` bash
+oc adm policy add-scc-to-user privileged -z default -n weaviate
+```
+
+ç¶ããŠWeaviateããããã€ããŸãã
+
+``` bash
+helm upgrade --install \
+ "weaviate" \
+ weaviate/weaviate \
+ --namespace "weaviate" \
+ --values ./weaviate/weaviate-values.yaml
+```
+
+## Populate the Vector Database
+
+Weaviateãèµ·åããã®ã§ãã«ã¹ã¿ã ã¢ããªã±ãŒã·ã§ã³ã䜿ã£ãŠã¯ãŒã¯ã·ã§ããã§å©çšããããŒã¿ãæå
¥ããŠãããŸãã
+
+ãã®ããã«äœ¿çšããã¢ããªã±ãŒã·ã§ã³ã¯ã[LangChain Playbook for NeMo Retriever Text Embedding NIM](https://docs.nvidia.com/nim/nemo-retriever/text-embedding/latest/playbook.html#generate-embeddings-with-text-embedding-nim) ãããŒã¹ã«ããŠããŸãã
+
+`./load-embeddings/k8s-job.yaml` ã®èšå®ã«åŸãã[datasheet for the NVIDIA H200 Tensor Core GPU](https://nvdam.widen.net/content/udc6mzrk7a/original/hpc-datasheet-sc23-h200-datasheet-3002446.pdf) ããã¯ãã«ããŒã¿ããŒã¹ã«ããŒãããŸãã
+
+ãã®ããã¥ã¡ã³ãã«ã¯ãç§ãã¡ãå©çšããå€§èŠæš¡èšèªã¢ãã«ãåŠç¿ããŠããªãNVIDIA H200 GPUã«é¢ããæ
å ±ãå«ãŸããŠããŸããã¯ãŒã¯ã·ã§ããã®æ¬¡ã®ããŒãã§ã¯ããã®ããã¥ã¡ã³ãããã¯ãã«ããŒã¿ããŒã¹ã«ããŒãããããã§ããã®å
容ãã³ã³ããã¹ããšããŠå©çšããŠLLMã質åã«åçããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŸãã
+
+OpenShiftã¯ã©ã¹ã¿ãŒã«Kubernetes Jobããããã€ããŠããšã³ããã£ã³ã°ãããŒãããŸãããã®ããã»ã¹ãäžåºŠã ãå®è¡ããããšãä¿èšŒãããããPodã§ã¯ãªãKubernetes Jobã䜿çšããŸãã
+
+``` bash
+oc create namespace llm-app
+oc apply -f ./load-embeddings/k8s-job.yaml
+```
+
+> 泚: ãšã³ããã£ã³ã°ãWeaviateã«ããŒãããPythonã¢ããªã±ãŒã·ã§ã³ã®Dockerã€ã¡ãŒãžããã«ãããéã«ã¯ã以äžã®ã³ãã³ããå®è¡ããŸããã
+>
+> ``` bash
+> cd workshop/cisco-ai-pods/load-embeddings
+> docker build --platform linux/amd64 -t derekmitchell399/load-embeddings:1.0 .
+> docker push derekmitchell399/load-embeddings:1.0
+> ```
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/9-deploy-portworx-service.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/9-deploy-portworx-service.md
new file mode 100644
index 0000000000..cb73211371
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/9-deploy-portworx-service.md
@@ -0,0 +1,50 @@
+---
+title: Portworx ã¡ããªã¯ã¹ãšã³ããã€ã³ãã®ãããã€
+linkTitle: 9. Portworx ã¡ããªã¯ã¹ãšã³ããã€ã³ã
+weight: 9
+time: 10 minutes
+---
+
+ãã®ã¹ãããã§ã¯ãPortworx ã®ã¡ããªã¯ã¹ãšã³ããã€ã³ããæš¡å£ãã Python ãµãŒãã¹ããããã€ããŸãã
+ããã¯ãã¯ãŒã¯ã·ã§ããã§ Pure Storage ã®ç£èŠãèšå®ããããã«äœ¿çšããŸãã
+
+## Portworx ã¡ããªã¯ã¹ãšã³ããã€ã³ãã®ãããã€
+
+以äžã®ã³ãã³ããå®è¡ããŠãPortworx ã¡ããªã¯ã¹ãšã³ããã€ã³ããµãŒãã¹ããããã€ããŸãã
+
+``` bash
+oc new-project portworx
+oc apply -f ./portworx/k8s.yaml -n portworx
+```
+
+## Portworx ã¡ããªã¯ã¹ãšã³ããã€ã³ãã®ãã¹ã
+
+Portworx ã¡ããªã¯ã¹ãšã³ããã€ã³ããæ³å®ã©ããã«åäœããŠããããšã確èªããŸãããã
+
+curl ã³ãã³ããå©çšã§ãã Pod ãèµ·åããŸãã
+
+``` bash
+oc run --rm -it -n default curl --image=curlimages/curl:latest -- sh
+```
+
+ç¶ããŠã以äžã®ã³ãã³ããå®è¡ããŠãšã³ããã€ã³ãã«ãªã¯ãšã¹ããéä¿¡ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+curl http://portworx-metrics-sim.portworx:17001/metrics
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+# HELP px_cluster_cpu_percent Percentage of CPU Used
+# TYPE px_cluster_cpu_percent gauge
+px_cluster_cpu_percent{cluster="ocp-pxclus-32430549-ad99-4839-bf9b-d6beb8ddc2d6",clusterUUID="e870909b-6150-4d72-87cb-a012630e42ae",node="worker2.flashstack.local",nodeID="f63312a2-0884-4878-be4e-51935613aa80"} 1.91
+...
+```
+
+{{% /tab %}}
+{{< /tabs >}}
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/_index.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/_index.md
new file mode 100644
index 0000000000..cf8e36b511
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/1-workshop-setup/_index.md
@@ -0,0 +1,17 @@
+---
+title: Workshop Setup
+linkTitle: 1. Workshop Setup
+weight: 1
+---
+
+ãã®ã»ã¯ã·ã§ã³ã«ã¯ãã¯ãŒã¯ã·ã§ããäž»å¬è
ãã¯ãŒã¯ã·ã§ãããã»ããã¢ããããããã«å®è¡ãã¹ãæé ãå«ãŸããŸãã
+
+* AWS ã¢ã«ãŠã³ãã®ã»ããã¢ãã
+* OpenShift ã®åææ¡ä»¶
+* AWS ROSA ã䜿çšããŠãGPU ããŒã¹ã®ã¯ãŒã«ãŒããŒããæã€ **RedHat OpenShift** ã¯ã©ã¹ã¿ãŒããããã€ããŸãã
+* **NVIDIA NIM Operator** ãš **NVIDIA GPU Operator** ããããã€ããŸãã
+* NVIDIA NIM ã䜿çšããŠã¯ã©ã¹ã¿ãŒã« **Large Language Model (LLM)** ããããã€ããŸãã
+* é©åãªæš©éãæã€ OpenShift ãã°ã€ã³ãšåå空éããåã¯ãŒã¯ã·ã§ãããŠãŒã¶ãŒåãã«äœæããŸãã
+* **Splunk OpenTelemetry collector** ã® Cluster Receiver ã³ã³ããŒãã³ããã€ã³ã¹ããŒã«ããŸãã
+* ã¯ã©ã¹ã¿ãŒã« **Weviate vector database** ããããã€ããŸãã
+* **Portworx Prometheus exporter** ãæš¡å£ãããµãŒãã¹ããããã€ããŸãã
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/1-overview-of-workshop-environment.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/1-overview-of-workshop-environment.md
new file mode 100644
index 0000000000..3f72cbb6b6
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/1-overview-of-workshop-environment.md
@@ -0,0 +1,57 @@
+---
+title: ã¯ãŒã¯ã·ã§ããç°å¢ã®æŠèŠ
+linkTitle: 1. ã¯ãŒã¯ã·ã§ããç°å¢ã®æŠèŠ
+weight: 1
+time: 5 minutes
+---
+
+**Cisco's AI-ready PODs** ã¯ãæå
端ã®ããŒããŠã§ã¢ãšãœãããŠã§ã¢ãçµã¿åããã
+å
ç¢ã§ã¹ã±ãŒã©ãã«ããã€å¹ççãªAIã€ã³ãã©ã¹ãã©ã¯ãã£ãæäŸããŸãã
+**Splunk Observability Cloud** ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ããã¢ããªã±ãŒã·ã§ã³ã³ã³ããŒãã³ãã«è³ããŸã§ã
+ãã®ã¹ã¿ãã¯å
šäœãå
æ¬çã«å¯èŠåããŸãã
+
+ãã®ãã³ãºãªã³ã¯ãŒã¯ã·ã§ããã§ã¯ãOpenTelemetryãšPrometheusã䜿çšããŠAIã€ã³ãã©ã¹ãã©ã¯ãã£ãç£èŠããæ¹æ³ãã
+**å®éã®Cisco AI PODãžã®ã¢ã¯ã»ã¹ãå¿
èŠãšããã«** åŠç¿ããŸãã
+çŸå®çãªç°å¢ã§ç£èŠæè¡ããããã€ãèšå®ããå®è·µçãªçµéšãåŸãããŸãã
+
+## ã©ãç°å¢
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãAWSäžã§åäœããå
±æ **OpenShift Cluster** ã䜿çšããŸãã
+ãã®ã¯ã©ã¹ã¿ãŒã¯NVIDIA GPUããã³NVIDIA AI EnterpriseãœãããŠã§ã¢ãåããŠããŸãã
+
+### äºåãããã€æžã¿ã®ã€ã³ãã©ã¹ãã©ã¯ãã£
+
+ã¯ãŒã¯ã·ã§ããã®ã€ã³ã¹ãã©ã¯ã¿ãŒã¯ã以äžã®å
±æã³ã³ããŒãã³ããã¯ãŒã¯ã·ã§ããç°å¢ã«ãããã€æžã¿ã§ã:
+
+* **NVIDIA NIM models**:
+ * `meta/llama-3.2-1b-instruct` - ãŠãŒã¶ãŒããã³ãããåŠçããŸã
+ * `nvidia/llama-3.2-nv-embedqa-1b-v2` - ãšã³ããã£ã³ã°ãçæããŸã
+* **Weaviate** - ã»ãã³ãã£ãã¯æ€çŽ¢ãšååŸã®ããã®ãã¯ãã«ããŒã¿ããŒã¹ã§ã
+* **Prometheus exporter** - æ¬çªAI PODã«å
žåçãªPure Storageã¡ããªã¯ã¹ãã·ãã¥ã¬ãŒãããŸã
+
+### ããªãã®ã¯ãŒã¯ã¹ããŒã¹
+
+ååå è
ã«ã¯å
±æã¯ã©ã¹ã¿ãŒå
ã«å°çšã®åå空éãå²ãåœãŠããã
+ç¬ç«ããäœæ¥ã®ããã®åé¢ãããç°å¢ã確ä¿ãããŸãã
+
+## ã¯ãŒã¯ã·ã§ããã®ã¢ã¯ãã£ããã£
+
+ã¯ãŒã¯ã·ã§ããã®äžã§ãååå è
ã¯ä»¥äžã®ã¿ã¹ã¯ãå®è¡ããŸã:
+
+1. èªåã®åå空éã« **OpenTelemetry collector** ããããã€ããŠèšå®ããŸã
+2. ã¯ã©ã¹ã¿ãŒã€ã³ãã©ã¹ãã©ã¯ãã£ãšãªãã¶ãŒãããªãã£ããŒã¿åéãçµ±åããŸã
+3. NVIDIA NIM modelsãæŽ»çšãã **Python application** ããããã€ããŸã
+4. Splunk Observability Cloudã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšã€ã³ãã©ã¹ãã©ã¯ãã£ã¡ããªã¯ã¹ãç£èŠããŸã
+
+## Prometheusãšã¯
+
+**Prometheus** ã¯éåžžãã¹ãã¬ãŒãžãšã¢ã©ãŒãçšéã«äœ¿ããããã«ã¹ã¿ãã¯ã®ç£èŠã·ã¹ãã ãæããŸããã
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯Prometheusãšã³ã·ã¹ãã ã®ããŒã¿æšæºã«çŠç¹ãåœãŠãŸãã
+
+ããã§ã¯ **Prometheus Exporters** ãæŽ»çšããŸããããã¯ãã³ã³ããŒãã³ãã®å
éšç¶æ
ãæšæºåããã
+ã¡ããªã¯ã¹ãšã³ããã€ã³ã (äŸ: ) ã«å€æããå°ããªãŠãŒãã£ãªãã£ã§ãã
+
+ãã®ããŒã¿ã®åéã«PrometheusãµãŒããŒå
šäœã䜿çšãã代ããã«ã
+**OpenTelemetry Collector** ã䜿çšããŸããã³ã¬ã¯ã¿ãŒã® **Prometheus receiver** ã䜿ãããšã§ã
+ãããã®ãšã³ããã€ã³ãã **scrape** ããããšãã§ããåºããµããŒããããæ¥çæšæºãã©ãŒããããçšããŠ
+è±å¯ãªãã¬ã¡ããªããŒã¿ãåéã§ããŸãã
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/10-deploy-llm-app.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/10-deploy-llm-app.md
new file mode 100644
index 0000000000..f5363044bc
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/10-deploy-llm-app.md
@@ -0,0 +1,79 @@
+---
+title: LLM ã¢ããªã±ãŒã·ã§ã³ã®ãããã€
+linkTitle: 10. LLM ã¢ããªã±ãŒã·ã§ã³ã®ãããã€
+weight: 10
+time: 10 minutes
+---
+
+## LLM ã¢ããªã±ãŒã·ã§ã³ã®ãããã€
+
+以äžã®ã³ãã³ãã䜿çšããŠããã®ã¢ããªã±ãŒã·ã§ã³ã OpenShift ã¯ã©ã¹ã¿ãŒã«ãããã€ããŸãã
+
+``` bash
+cd ~/workshop/cisco-ai-pods
+oc apply -f ./llm-app/k8s-manifest.yaml
+```
+
+> 泚æ: ãã® Python ã¢ããªã±ãŒã·ã§ã³ã® Docker ã€ã¡ãŒãžããã«ãããããã«ã以äžã®ã³ãã³ããå®è¡ããŸããã
+>
+> ``` bash
+> cd workshop/cisco-ai-pods/llm-app
+> docker build --platform linux/amd64 -t ghcr.io/splunk/cisco-ai-pod-workshop-app:1.0 .
+> docker push ghcr.io/splunk/cisco-ai-pod-workshop-app:1.0
+> ```
+
+## LLM ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ã
+
+ã¢ããªã±ãŒã·ã§ã³ãæåŸ
ã©ããã«åäœããŠããããšã確èªããŸãããã
+
+curl ã³ãã³ããå©çšã§ãã Pod ãèµ·åããŸãã
+
+``` bash
+oc run curl --rm -it --image=curlimages/curl:latest \
+ --overrides='{
+ "spec": {
+ "containers": [{
+ "name": "curl",
+ "image": "curlimages/curl:latest",
+ "stdin": true,
+ "tty": true,
+ "command": ["sh"],
+ "resources": {
+ "limits": {
+ "cpu": "50m",
+ "memory": "100Mi"
+ },
+ "requests": {
+ "cpu": "50m",
+ "memory": "100Mi"
+ }
+ }
+ }]
+ }
+ }'
+```
+
+ç¶ããŠã以äžã®ã³ãã³ããå®è¡ã㊠LLM ã«è³ªåãéä¿¡ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+curl -X "POST" \
+ 'http://llm-app:8080/askquestion' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "question": "How much memory does the NVIDIA H200 have?"
+ }'
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+The NVIDIA H200 has 141GB of HBM3e memory, which is twice the capacity of the NVIDIA H100 Tensor Core GPU with 1.4X more memory bandwidth.
+```
+
+{{% /tab %}}
+{{< /tabs >}}
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/11-review-traces.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/11-review-traces.md
new file mode 100644
index 0000000000..e8c8ed7427
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/11-review-traces.md
@@ -0,0 +1,39 @@
+---
+title: ã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ã®ç¢ºèª
+linkTitle: 11. ã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ã®ç¢ºèª
+weight: 11
+time: 10 minutes
+---
+
+## Splunk Observability Cloud ã§ãã¬ãŒã¹ããŒã¿ã衚瀺ãã
+
+Splunk Observability Cloud ã§ `APM` ã«ç§»åãã`Service Map` ãéžæããŸãã
+ç°å¢åïŒäŸïŒ`ai-pod-workshop-participant-1`ïŒãéžæãããŠããããšã確èªããŸãã
+以äžã®ãããªãµãŒãã¹ãããã衚瀺ãããã¯ãã§ãã
+
+
+
+å³åŽã®ã¡ãã¥ãŒã«ãã `Traces` ãã¯ãªãã¯ããŸããæ¬¡ã«ãå®è¡æéãæ¯èŒçé·ããã¬ãŒã¹ã® 1 ã€ãéžæããŸãã以äžã®äŸã®ããã«è¡šç€ºãããã¯ãã§ãã
+
+
+
+ãã®ãã¬ãŒã¹ã¯ããŠãŒã¶ãŒã®è³ªåïŒäŸïŒãHow much memory does the NVIDIA H200 have?ãïŒã«åçãè¿ãããã«ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããã¹ãŠã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã瀺ããŠããŸãã
+
+äŸãã°ãWeaviate ãã¯ãã«ããŒã¿ããŒã¹å
ã§åœè©²è³ªåã«é¢é£ããããã¥ã¡ã³ããæ¢ãããã«ãã¢ããªã±ãŒã·ã§ã³ãé¡äŒŒæ€çŽ¢ãå®è¡ããç®æã確èªã§ããŸãã
+
+ãŸãããã¯ãã«ããŒã¿ããŒã¹ããååŸããã³ã³ããã¹ããå«ããŠãã¢ããªã±ãŒã·ã§ã³ã LLM ã«éä¿¡ããããã³ãããã©ã®ããã«äœæãããã確èªã§ããŸãã
+
+
+
+> 泚ïŒãã¬ãŒã¹ã®ãŠã©ãŒã¿ãŒãã©ãŒã«ãã¥ãŒã« `chat` ããã³ `invoke_workflow` ã® AI ã€ã³ã¿ã©ã¯ã·ã§ã³ã衚瀺ãããªãå ŽåããŸãã¯å³åŽã« `AI details` ã¿ãã衚瀺ãããªãå Žåã¯ãæå¹åãå¿
èŠãª superpowers ã«ã€ããŠè¬åž«ã«ç¢ºèªããŠãã ããã
+
+æåŸã«ãLLM ããã®ã¬ã¹ãã³ã¹ãæèŠæéãããã³äœ¿çšãããå
¥åºåããŒã¯ã³æ°ã確èªã§ããŸãã
+
+
+
+## ã¡ããªã¯ã¹ã Splunk ã«éä¿¡ãããŠããããšã確èªãã
+
+Splunk Observability Cloud ã§ `Dashboards` ã«ç§»åãã`Built-in dashboard groups` ã«å«ãŸããŠãã `Cisco AI PODs Dashboard` ãæ€çŽ¢ããŸãã
+`NIM FOR LLMS` ã¿ãã«ç§»åããããã·ã¥ããŒããèªåã® OpenShift ã¯ã©ã¹ã¿ãŒåã§ãã£ã«ã¿ãªã³ã°ãããŠããããšã確èªããŸãã以äžã®äŸã®ããã«ãã£ãŒãã«ããŒã¿ã衚瀺ãããã¯ãã§ãã
+
+
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/12-wrapup.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/12-wrapup.md
new file mode 100644
index 0000000000..edf23c1682
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/12-wrapup.md
@@ -0,0 +1,22 @@
+---
+title: Wrap-Up
+linkTitle: 12. ãŸãšã
+weight: 12
+time: 5 minutes
+---
+
+## ãŸãšã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãSplunk Observability Cloud ã§ Cisco AI POD ãç£èŠããããã«äœ¿çšããã
+ããã€ãã®æè¡ã®ãããã€ãšæäœããã³ãºãªã³ã§äœéšããŠããã ããŸããã
+å
·äœçã«ã¯ã以äžã®æ©äŒãæäŸããŸããã
+
+* GPU ããŒã¹ã®ã¯ãŒã«ãŒããŒããæã€ RedHat OpenShift ã¯ã©ã¹ã¿ãŒã§ã®äœæ¥
+* NVIDIA NIM Operator ããã³ NVIDIA GPU Operator ã®æäœ
+* NVIDIA NIM ã䜿çšããŠã¯ã©ã¹ã¿ãŒã«ãããã€ãããå€§èŠæš¡èšèªã¢ãã«ïŒLLMïŒã®æäœ
+* Red Hat OpenShift ã¯ã©ã¹ã¿ãŒãžã® OpenTelemetry Collector ã®ãããã€
+* ã€ã³ãã©ã¹ãã©ã¯ãã£ã¡ããªã¯ã¹ãåã蟌ãããã® Prometheus ã¬ã·ãŒããŒãã³ã¬ã¯ã¿ãŒã«è¿œå
+* ã¯ã©ã¹ã¿ãŒå
ã® Weaviate ãã¯ãã«ããŒã¿ããŒã¹ã®ç£èŠ
+* Prometheus ã䜿çšãã Pure Storage ã¡ããªã¯ã¹ã®ç£èŠèšå®
+* å€§èŠæš¡èšèªã¢ãã«ïŒLLMïŒãšé£æºãã Python ãµãŒãã¹ã OpenTelemetry ã§èšè£
+* LLM ãšé£æºããã¢ããªã±ãŒã·ã§ã³ã®ãã¬ãŒã¹ã§ OpenTelemetry ããã£ããã£ãã詳现ã®çè§£
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/2-connect-to-openshift-cluster.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/2-connect-to-openshift-cluster.md
new file mode 100644
index 0000000000..ea1a59d6b0
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/2-connect-to-openshift-cluster.md
@@ -0,0 +1,84 @@
+---
+title: OpenShift ã¯ã©ã¹ã¿ãŒãžã®æ¥ç¶
+linkTitle: 2. OpenShift ã¯ã©ã¹ã¿ãŒãžã®æ¥ç¶
+weight: 2
+time: 5 minutes
+---
+
+## EC2 ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶
+
+åå è
ã®çããŸåãã«ãAWS/EC2 äžã« Ubuntu Linux ã€ã³ã¹ã¿ã³ã¹ãçšæããŠããŸãã
+
+ã€ã³ã¹ãã©ã¯ã¿ãŒããæäŸããã IP ã¢ãã¬ã¹ãšãã¹ã¯ãŒãã䜿ã£ãŠã以äžã®ããããã®æ¹æ³ã§ EC2 ã€ã³ã¹ã¿ã³ã¹ã«æ¥ç¶ããŠãã ããã
+
+* Mac OS / Linux
+ * ssh splunk@IP address
+* Windows 10 以é
+ * OpenSSH ã¯ã©ã€ã¢ã³ãã䜿çšããŠãã ãã
+* ãã以åã®ããŒãžã§ã³ã® Windows
+ * Putty ã䜿çšããŠãã ãã
+
+## ã¯ãŒã¯ã·ã§ããåå è
çªå·ã®èšå®
+
+ã€ã³ã¹ãã©ã¯ã¿ãŒããååå è
ã« 1 ãã 30 ãŸã§ã®çªå·ãå²ãåœãŠãããŸãã
+ãã®çªå·ã¯ãã¯ãŒã¯ã·ã§ããå
šäœãéããŠäœ¿çšãããããç°å¢å€æ°ã«ä¿åããå¿ããªãããã«ããŠãã ããã
+
+``` bash
+export PARTICIPANT_NUMBER=
+```
+
+## OpenShift CLI ã®ã€ã³ã¹ããŒã«
+
+OpenShift ã¯ã©ã¹ã¿ãŒã«ã¢ã¯ã»ã¹ããããã«ãOpenShift CLI ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã
+
+以äžã®ã³ãã³ãã䜿çšããŠãOpenShift CLI ã®ãã€ããªã EC2 ã€ã³ã¹ã¿ã³ã¹ã«çŽæ¥ããŠã³ããŒãã§ããŸãã
+
+````
+curl -L -O https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/openshift-client-linux.tar.gz
+````
+
+ãã¡ã€ã«ãå±éããŸãã
+
+````
+tar -xvzf openshift-client-linux.tar.gz
+````
+
+å±éããããã¡ã€ã«ïŒ`oc` ãš `kubectl`ïŒããPATH ã«å«ãŸããå Žæã«ç§»åããŸããäŸãã°æ¬¡ã®ããã«å®è¡ããŸãã
+
+``` bash
+sudo mv oc /usr/local/bin/oc
+sudo mv kubectl /usr/local/bin/kubectl
+```
+
+## OpenShift ã¯ã©ã¹ã¿ãŒãžã®æ¥ç¶
+
+splunk ãŠãŒã¶ãŒã Kube èšå®ãã¡ã€ã«ã倿Žã§ããããã«ããŸãã
+
+``` bash
+chmod 600 /home/splunk/.kube/config
+```
+
+ã¯ãŒã¯ã·ã§ããã®äž»å¬è
ããæäŸãããã¯ã©ã¹ã¿ãŒ API URL ãšãã¹ã¯ãŒãã䜿çšããŠãOpenShift ã¯ã©ã¹ã¿ãŒã«ãã°ã€ã³ããŸãã
+
+``` bash
+oc login https://api.:443 -u participant$PARTICIPANT_NUMBER -p ''
+```
+
+OpenShift ã¯ã©ã¹ã¿ãŒã«æ¥ç¶ã§ããŠããããšã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+oc whoami --show-server
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+https://api.***.openshiftapps.com:443
+```
+
+{{% /tab %}}
+{{< /tabs >}}
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/3-deploy-otel-collector.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/3-deploy-otel-collector.md
new file mode 100644
index 0000000000..e53a366466
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/3-deploy-otel-collector.md
@@ -0,0 +1,146 @@
+---
+title: OpenTelemetry Collectorã®ãããã€
+linkTitle: 3. OpenTelemetry collectorã®ãããã€
+weight: 3
+time: 10 minutes
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãOpenShiftã®ããŒã ã¹ããŒã¹ã«OpenTelemetry Collectorããããã€ããŸãã
+OpenTelemetry Collectorã¯ãã¯ã©ã¹ã¿ãŒäžã§çšŒåããã€ã³ãã©ã¹ãã©ã¯ãã£ãã¢ããªã±ãŒã·ã§ã³ãã
+ã¡ããªã¯ã¹ããã°ããã¬ãŒã¹ãåéãããã®ããŒã¿ãSplunk Observability Cloudã«éä¿¡ããŸãã
+
+## OpenTelemetry Collectorã®ãããã€
+
+### Helmã®ã€ã³ã¹ããŒã«ç¢ºèª
+
+以äžã®ã³ãã³ããå®è¡ããŠãHelmãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+helm version
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+version.BuildInfo{Version:"v3.19.4", GitCommit:"7cfb6e486dac026202556836bb910c37d847793e", GitTreeState:"clean", GoVersion:"go1.24.11"}
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯ã以äžã®ã³ãã³ããå®è¡ããŠãã ããã
+
+``` bash
+sudo apt-get install curl gpg apt-transport-https --yes
+curl -fsSL https://packages.buildkite.com/helm-linux/helm-debian/gpgkey | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
+echo "deb [signed-by=/usr/share/keyrings/helm.gpg] https://packages.buildkite.com/helm-linux/helm-debian/any/ any main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
+sudo apt-get update
+sudo apt-get install helm
+```
+
+### Splunk OpenTelemetry Collector Helm Chartã®è¿œå
+
+Splunk OpenTelemetry Collector for Kubernetesã®Helm chartãªããžããªã远å ããŸãã
+
+```bash
+helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart
+````
+
+ãªããžããªãææ°ã§ããããšã確èªããŸãã
+
+```bash
+helm repo update
+````
+
+### ç°å¢å€æ°ã®èšå®
+
+CollectorãããŒã¿ãéä¿¡ããSplunkç°å¢ãæ§æããããã«ãç°å¢å€æ°ãèšå®ããŸãã
+
+``` bash
+export USER_NAME=workshop-participant-$PARTICIPANT_NUMBER
+export CLUSTER_NAME=ai-pod-$USER_NAME
+export ENVIRONMENT_NAME=ai-pod-$USER_NAME
+export SPLUNK_INDEX=splunk4rookies-workshop
+```
+
+ç°å¢åãèšå®ãããŠããããšã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+echo $ENVIRONMENT_NAME
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` bash
+ai-pod-workshop-participant-1
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+### Collectorã®ãããã€
+
+ã¯ãŒã¯ã·ã§ãããã£ã¬ã¯ããªãžç§»åããŸãã
+
+``` bash
+cd ~/workshop/cisco-ai-pods
+```
+
+次ã«ã以äžã®ã³ãã³ãã䜿çšããŠããŒã ã¹ããŒã¹ã«Collectorãã€ã³ã¹ããŒã«ããŸãã
+
+```bash
+{ [ -z "$CLUSTER_NAME" ] || \
+ [ -z "$ENVIRONMENT_NAME" ] || \
+ [ -z "$USER_NAME" ]; } && \
+ echo "Error: Missing variables" || \
+ helm upgrade --install splunk-otel-collector \
+ --set="clusterName=$CLUSTER_NAME" \
+ --set="environment=$ENVIRONMENT_NAME" \
+ --set="splunkObservability.accessToken=$ACCESS_TOKEN" \
+ --set="splunkObservability.realm=$REALM" \
+ --set="splunkPlatform.endpoint=$HEC_URL" \
+ --set="splunkPlatform.token=$HEC_TOKEN" \
+ --set="splunkPlatform.index=$SPLUNK_INDEX" \
+ -f ./otel-collector/otel-collector-values.yaml \
+ -n $USER_NAME \
+ splunk-otel-collector-chart/splunk-otel-collector
+```
+
+> 泚: `Missing variables`ãšãããšã©ãŒã衚瀺ãããå Žåã¯ãç°å¢å€æ°ãå床å®çŸ©ããå¿
èŠããããŸãã
+> 以äžã®ã³ãã³ããå®è¡ããåã«ãåå è
çªå·ã远å ããŠãã ããã
+>
+> ``` bash
+> export PARTICIPANT_NUMBER=
+> export USER_NAME=workshop-participant-$PARTICIPANT_NUMBER
+> export CLUSTER_NAME=ai-pod-$USER_NAME
+> export ENVIRONMENT_NAME=ai-pod-$USER_NAME
+> export SPLUNK_INDEX=splunk4rookies-workshop
+> ```
+
+以äžã®ã³ãã³ããå®è¡ããŠãCollectorã®podã皌åããŠããããšã確èªããŸãã
+
+````
+watch -n 1 oc get pods
+
+NAME READY STATUS RESTARTS AGE
+splunk-otel-collector-agent-58rwm 1/1 Running 0 6m40s
+splunk-otel-collector-agent-8dndr 1/1 Running 0 6m40s
+````
+
+> 泚: OpenShiftç°å¢ã§ã¯ãCollectorãèµ·åããŠ`Running`ç¶æ
ã«é·ç§»ãããŸã§ã«çŽ3åããããŸãã
+
+### Splunk Observability Cloudã§ã®CollectorããŒã¿ã®ç¢ºèª
+
+**Splunk Observability Cloud**ã§ã¯ã©ã¹ã¿ãŒã衚瀺ãããããšã確èªããŸãã
+**Infrastructure Monitoring** -> **Kubernetes** -> **Kubernetes Clusters**ã«ç§»åãã
+`k8s.cluster.name`ã«å¯ŸããŠèªåã®ã¯ã©ã¹ã¿ãŒåïŒäŸ: `ai-pod-workshop-participant-1`ïŒã§ãã£ã«ã¿ãŒã远å ããŠãã ããã
+
+
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/4-monitor-nvidia-components.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/4-monitor-nvidia-components.md
new file mode 100644
index 0000000000..137bbbf89e
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/4-monitor-nvidia-components.md
@@ -0,0 +1,225 @@
+---
+title: NVIDIA ã³ã³ããŒãã³ãã®ç£èŠ
+linkTitle: 4. NVIDIA ã³ã³ããŒãã³ãã®ç£èŠ
+weight: 4
+time: 10 minutes
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãOpenTelemetry collector ã§ Prometheus **receiver** ã䜿ã£ãŠã
+OpenShift ã¯ã©ã¹ã¿äžã§çšŒåããŠãã NVIDIA ã³ã³ããŒãã³ããç£èŠããŸãã
+ãŸããcollector ã®èšå®ãã¡ã€ã«ãæ ŒçŽãããŠãããã£ã¬ã¯ããªãžç§»åããŸãã
+
+``` bash
+cd otel-collector
+```
+
+## NVIDIA DCGM Exporter ã®ã¡ããªã¯ã¹ãååŸãã
+
+[NVIDIA DCGM exporter](https://github.com/NVIDIA/dcgm-exporter) 㯠OpenShift ã¯ã©ã¹ã¿ã§çšŒåããŠããŸãã
+ãã㯠Splunk ãžéä¿¡ã§ãã GPU ã¡ããªã¯ã¹ãå
¬éããŠããŸãã
+
+ãããè¡ãããã«ãcollector ã®ãããã€æã«äœ¿çšãã `otel-collector-values.yaml` ãã¡ã€ã«ãç·šéããŠã
+collector ã®èšå®ãã«ã¹ã¿ãã€ãºããŸãããã
+
+`kubeletstats` **receiver** ã®çŽäžã«ã以äžã®å
容ã远å ããŸãã
+
+``` yaml
+ receiver_creator/nvidia:
+ # Name of the extensions to watch for endpoints to start and stop.
+ watch_observers: [ k8s_observer ]
+ receivers:
+ prometheus/dcgm:
+ config:
+ config:
+ scrape_configs:
+ - job_name: gpu-metrics
+ scrape_interval: 60s
+ static_configs:
+ - targets:
+ - '`endpoint`:9400'
+ rule: type == "pod" && labels["app"] == "nvidia-dcgm-exporter"
+```
+
+ããã«ãããcollector 㯠`app=nvidia-dcgm-exporter` ãšããã©ãã«ãæã€ Pod ãæ¢ãããã«ãªããŸãã
+ãã®ã©ãã«ãæã€ Pod ãèŠã€ãããšããã® Pod ã®ããŒã 9400 ã«æ¥ç¶ãã
+ããã©ã«ãã®ã¡ããªã¯ã¹ãšã³ããã€ã³ã (`/v1/metrics`) ãã¹ã¯ã¬ã€ãã³ã°ããŸãã
+
+> ãªã **Prometheus** receiver ã ãã§ãªã **receiver_creator** receiver ã䜿ãã®ã§ããããïŒ
+>
+> * **Prometheus** receiver ã¯ãäºåã«å®çŸ©ããããšã³ããã€ã³ãããã¡ããªã¯ã¹ãã¹ã¯ã¬ã€ãã³ã°ããéçãªèšå®ã䜿çšããŸãã
+> * **receiver_creator** receiver ã¯ãã©ã³ã¿ã€ã æ
å ±ã«åºã¥ããŠåä¿¡æ©ïŒPrometheus receiver ãå«ãïŒãåçã«äœæã§ãããããã¹ã±ãŒã©ãã«ã§æè»ãªã¹ã¯ã¬ã€ãã³ã°æ§æãå®çŸã§ããŸãã
+> * **receiver_creator** ã䜿çšããããšã§ãè€æ°ã® Prometheus ã¹ã¯ã¬ã€ãã³ã°å¯Ÿè±¡ã®ç®¡çãèªååããåçãªç°å¢ã«ãããèšå®ãã·ã³ãã«ã«ã§ããŸãã
+
+ãã®æ°ãã **receiver** ã䜿ãããããã«ããããã`otel-collector-values.yaml` ãã¡ã€ã«ã«æ°ãã **pipeline** ã远å ããå¿
èŠããããŸãã
+
+ãã¡ã€ã«ã®æ«å°Ÿã«ä»¥äžã®ã³ãŒãã远å ããŸãã
+
+``` yaml
+ service:
+ pipelines:
+ metrics/nvidia-metrics:
+ exporters:
+ - signalfx
+ processors:
+ - memory_limiter
+ - batch
+ - resourcedetection
+ - resource
+ receivers:
+ - receiver_creator/nvidia
+```
+
+NVIDIA ã«é¢é£ãã Prometheus **receiver** ããæ¬¡ã®ã»ã¯ã·ã§ã³ã§ãã 1 ã€è¿œå ããŸãã
+
+## NVIDIA NIM ã®ã¡ããªã¯ã¹ãååŸãã
+
+`meta-llama-3-2-1b-instruct` å€§èŠæš¡èšèªã¢ãã«ã¯ãNVIDIA NIM ã䜿çšã㊠OpenShift ã¯ã©ã¹ã¿ã«ãããã€ãããŠããŸãã
+ãã®ã¢ãã«ã«ã¯ãcollector ã§ã¹ã¯ã¬ã€ãã³ã°å¯èœãª Prometheus ãšã³ããã€ã³ããå«ãŸããŠããŸãã
+å
ã»ã©è¿œå ãã `prometheus/dcgm` **receiver** ã®çŽäžã«ã以äžã®å
容ã `otel-collector-values.yaml` ãã¡ã€ã«ãžè¿œå ããŸãã
+
+``` yaml
+ prometheus/nim-llm:
+ config:
+ config:
+ scrape_configs:
+ - job_name: nim-for-llm-metrics
+ scrape_interval: 60s
+ metrics_path: /v1/metrics
+ static_configs:
+ - targets:
+ - '`endpoint`:8000'
+ rule: type == "pod" && labels["app"] == "meta-llama-3-2-1b-instruct"
+```
+
+ããã«ãããcollector 㯠`app=meta-llama-3-2-1b-instruct` ãšããã©ãã«ãæã€ Pod ãæ¢ãããã«ãªããŸãã
+ãã®ã©ãã«ãæã€ Pod ãèŠã€ãããšããã® Pod ã®ããŒã 8000 ã«æ¥ç¶ãã
+`/v1/metrics` ã¡ããªã¯ã¹ãšã³ããã€ã³ããã¹ã¯ã¬ã€ãã³ã°ããŸãã
+
+ãã® **receiver** 㯠`receiver_creator/nvidia` receiver ã®äžéšãšããŠæ¢ã«åã蟌ãŸããããã
+**pipeline** ã«å€æŽãå ããå¿
èŠã¯ãããŸããã
+
+## Filter Processor ã远å ãã
+
+Prometheus ãšã³ããã€ã³ãã®ã¹ã¯ã¬ã€ãã³ã°ã§ã¯ãã¡ããªã¯ã¹ã倧éã«çºçããã«ãŒãã£ããªãã£ãé«ããªãå ŽåããããŸãã
+
+Splunk ãžéä¿¡ããã¡ããªã¯ã¹ãæ£ç¢ºã«å®çŸ©ããããããã£ã«ã¿ãŒ **processor** ã远å ããŸãããã
+å
·äœçã«ã¯ãããã·ã¥ããŒãã®ãã£ãŒããŸãã¯ã¢ã©ãŒããã£ãã¯ã¿ãŒã§äœ¿çšãããã¡ããªã¯ã¹**ã®ã¿**ãéä¿¡ããããã«ããŸãã
+
+`otel-collector-values.yaml` ãã¡ã€ã«ã® **exporters** ã»ã¯ã·ã§ã³ã®åŸã**receivers** ã»ã¯ã·ã§ã³ã®åã«ã
+以äžã®ã³ãŒãã远å ããŸãã
+
+``` yaml
+ processors:
+ filter/metrics_to_be_included:
+ metrics:
+ # Include only metrics used in charts and detectors
+ include:
+ match_type: strict
+ metric_names:
+ - DCGM_FI_DEV_FB_FREE
+ - DCGM_FI_DEV_FB_USED
+ - DCGM_FI_DEV_GPU_TEMP
+ - DCGM_FI_DEV_GPU_UTIL
+ - DCGM_FI_DEV_MEM_CLOCK
+ - DCGM_FI_DEV_MEM_COPY_UTIL
+ - DCGM_FI_DEV_MEMORY_TEMP
+ - DCGM_FI_DEV_POWER_USAGE
+ - DCGM_FI_DEV_SM_CLOCK
+ - DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION
+ - DCGM_FI_PROF_DRAM_ACTIVE
+ - DCGM_FI_PROF_GR_ENGINE_ACTIVE
+ - DCGM_FI_PROF_PCIE_RX_BYTES
+ - DCGM_FI_PROF_PCIE_TX_BYTES
+ - DCGM_FI_PROF_PIPE_TENSOR_ACTIVE
+ - generation_tokens_total
+ - go_info
+ - go_memstats_alloc_bytes
+ - go_memstats_alloc_bytes_total
+ - go_memstats_buck_hash_sys_bytes
+ - go_memstats_frees_total
+ - go_memstats_gc_sys_bytes
+ - go_memstats_heap_alloc_bytes
+ - go_memstats_heap_idle_bytes
+ - go_memstats_heap_inuse_bytes
+ - go_memstats_heap_objects
+ - go_memstats_heap_released_bytes
+ - go_memstats_heap_sys_bytes
+ - go_memstats_last_gc_time_seconds
+ - go_memstats_lookups_total
+ - go_memstats_mallocs_total
+ - go_memstats_mcache_inuse_bytes
+ - go_memstats_mcache_sys_bytes
+ - go_memstats_mspan_inuse_bytes
+ - go_memstats_mspan_sys_bytes
+ - go_memstats_next_gc_bytes
+ - go_memstats_other_sys_bytes
+ - go_memstats_stack_inuse_bytes
+ - go_memstats_stack_sys_bytes
+ - go_memstats_sys_bytes
+ - go_sched_gomaxprocs_threads
+ - gpu_cache_usage_perc
+ - gpu_total_energy_consumption_joules
+ - http.server.active_requests
+ - num_request_max
+ - num_requests_running
+ - num_requests_waiting
+ - process_cpu_seconds_total
+ - process_max_fds
+ - process_open_fds
+ - process_resident_memory_bytes
+ - process_start_time_seconds
+ - process_virtual_memory_bytes
+ - process_virtual_memory_max_bytes
+ - promhttp_metric_handler_requests_in_flight
+ - promhttp_metric_handler_requests_total
+ - prompt_tokens_total
+ - python_gc_collections_total
+ - python_gc_objects_collected_total
+ - python_gc_objects_uncollectable_total
+ - python_info
+ - request_finish_total
+ - request_success_total
+ - system.cpu.time
+ - e2e_request_latency_seconds
+ - time_to_first_token_seconds
+ - time_per_output_token_seconds
+ - request_prompt_tokens
+ - request_generation_tokens
+```
+
+å
ã»ã©è¿œå ãã `metrics/nvidia-metrics` **pipeline** ã«ã`filter/metrics_to_be_included` **processor** ãå«ãŸããŠããããšã確èªããŸãã
+
+``` bash
+ service:
+ pipelines:
+ metrics/nvidia-metrics:
+ exporters:
+ - signalfx
+ processors:
+ - memory_limiter
+ - filter/metrics_to_be_included
+ - batch
+ - resourcedetection
+ - resource
+ receivers:
+ - receiver_creator/nvidia
+```
+
+## 倿Žå
容ã確èªãã
+
+å°ãæéããšã£ãŠã倿Žãã `otel-collector-values.yaml` ãã¡ã€ã«ã®å
容ãã
+`otel-collector-values-with-nvidia.yaml` ãã¡ã€ã«ãšæ¯èŒããŠã¿ãŠãã ããã
+`yaml` ãã¡ã€ã«ã§ã¯ã€ã³ãã³ããéèŠã§ãããæ£ç¢ºã§ããå¿
èŠãããããšãèŠããŠãããŸãããã
+
+``` bash
+diff otel-collector-values.yaml otel-collector-values-with-nvidia.yaml
+```
+
+å
容ãäžèŽããããã«ãå¿
èŠã«å¿ããŠãã¡ã€ã«ãæŽæ°ããŠãã ããã
+
+{{% notice title="ãŸã collector ãåèµ·åããªãã§ãã ãã" style="warning" %}}
+
+OpenShift ç°å¢ã§ã¯ collector ã®åèµ·åã«ããŒãããã 3 åãããããã
+ãã¹ãŠã®èšå®å€æŽãå®äºãããŸã§åŸ
ã£ãŠããåèµ·åãè¡ããŸãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/5-monitor-vector-db.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/5-monitor-vector-db.md
new file mode 100644
index 0000000000..7d812df197
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/5-monitor-vector-db.md
@@ -0,0 +1,117 @@
+---
+title: ãã¯ã¿ãŒããŒã¿ããŒã¹ã®ç£èŠ
+linkTitle: 5. ãã¯ã¿ãŒããŒã¿ããŒã¹ã®ç£èŠ
+weight: 5
+time: 5 minutes
+---
+
+ãã®ã¹ãããã§ã¯ãWeaviate ãã¯ã¿ãŒããŒã¿ããŒã¹ãç£èŠããããã« Prometheus ã¬ã·ãŒããŒãèšå®ããŸãã
+
+## ãã¯ã¿ãŒããŒã¿ããŒã¹ãšã¯
+
+**ãã¯ã¿ãŒããŒã¿ããŒã¹**ã¯ãããŒã¿ãæ°å€ã®ããã¯ã¿ãŒåã蟌㿠(vector embeddings)ããšããŠä¿åã»ã€ã³ããã¯ã¹åããããŒã¿ããŒã¹ã§ãããã¹ããç»åãªã©ã®æ
å ±ã®**æå³çãªæå³ (semantic meaning)** ãæããŸããåŸæ¥ã®ããŒã¿ããŒã¹ãšã¯ç°ãªããå®å
šäžèŽã§ã¯ãªãæŠå¿µçã«é¢é£ããããŒã¿ãã€ã³ããèŠã€ãã**é¡äŒŒæ€çŽ¢ (similarity searches)** ã«åªããŠããŸãã
+
+## ãã¯ã¿ãŒããŒã¿ããŒã¹ã®å©ç𿹿³
+
+ãã¯ã¿ãŒããŒã¿ããŒã¹ã¯ã**Retrieval Augmented Generation (RAG)** ãšåŒã°ãããã¿ãŒã³ã§éèŠãªåœ¹å²ãæãããŸãããã®ãã¿ãŒã³ã¯ãå€§èŠæš¡èšèªã¢ãã« (LLM) ãæŽ»çšããã¢ããªã±ãŒã·ã§ã³ã§åºã䜿çšãããŠããŸãã
+
+ãã®ãã¿ãŒã³ã¯æ¬¡ã®ãšããã§ãã
+
+* ãšã³ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã«è³ªåãã
+* ã¢ããªã±ãŒã·ã§ã³ã質åãåãåãããã¯ã¿ãŒåã蟌ã¿ãèšç®ãã
+* ã¢ããªã±ãŒã·ã§ã³ããã¯ã¿ãŒããŒã¿ããŒã¹ã§é¡äŒŒæ€çŽ¢ãè¡ããé¢é£ããã¥ã¡ã³ããæ¢ã
+* ã¢ããªã±ãŒã·ã§ã³ã¯å
ã®è³ªåãšé¢é£ããã¥ã¡ã³ãã LLM ã«ã³ã³ããã¹ããšããŠéä¿¡ãã
+* LLM ã¯ã³ã³ããã¹ãã確èªããã¢ããªã±ãŒã·ã§ã³ã«å¿çãè¿ã
+
+## Prometheus ã§ Weaviate ã®ã¡ããªã¯ã¹ãååŸãã
+
+OpenTelemetry ã³ã¬ã¯ã¿ãŒã®èšå®ã倿ŽããŠãWeaviate ã® Prometheus ã¡ããªã¯ã¹ãã¹ã¯ã¬ã€ãããããã«ããŸãã
+
+ãã®ããã«ã`otel-collector-values.yaml` ãã¡ã€ã«ã«è¿œå ã® Prometheus **receiver** creator ã»ã¯ã·ã§ã³ã远å ããŸãã`receiver_creator/nvidia` ã»ã¯ã·ã§ã³ã®åŸãã〠`pipelines` ã»ã¯ã·ã§ã³ã®åã«è¿œå ããŠãã ããã
+
+``` yaml
+ receiver_creator/weaviate:
+ # Name of the extensions to watch for endpoints to start and stop.
+ watch_observers: [ k8s_observer ]
+ receivers:
+ prometheus/weaviate:
+ config:
+ config:
+ scrape_configs:
+ - job_name: weaviate-metrics
+ scrape_interval: 60s
+ static_configs:
+ - targets:
+ - '`endpoint`:2112'
+ rule: type == "pod" && labels["app"] == "weaviate"
+```
+
+Weaviate ã®ã¡ããªã¯ã¹ã `filter/metrics_to_be_included` ãã£ã«ã¿ãŒããã»ããµãŒã®èšå®ã«ã远å ããå¿
èŠããããŸãã
+
+``` yaml
+ processors:
+ filter/metrics_to_be_included:
+ metrics:
+ # Include only metrics used in charts and detectors
+ include:
+ match_type: strict
+ metric_names:
+ - DCGM_FI_DEV_FB_FREE
+ - ...
+ - object_count
+ - vector_index_size
+ - vector_index_operations
+ - vector_index_tombstones
+ - vector_index_tombstone_cleanup_threads
+ - vector_index_tombstone_cleanup_threads
+ - requests_total
+ - objects_durations_ms_sum
+ - objects_durations_ms_count
+ - batch_delete_durations_ms_sum
+ - batch_delete_durations_ms_count
+```
+
+> 泚æ: `object_count` ã§å§ãŸãæ°ããã¡ããªã¯ã¹ã®ã¿ã远å ããŠãã ãã
+
+ãŸããèšå®ãã¡ã€ã«ã«ä»¥äžã®èšå®ã§ Resource **processor** ã远å ããŸãã`filter/metrics_to_be_included` **processor** ã®åŸãã〠`receivers` ã»ã¯ã·ã§ã³ã®åã«è¿œå ããŠãã ããã
+
+``` yaml
+ resource/weaviate:
+ attributes:
+ - key: weaviate.instance.id
+ from_attribute: service.instance.id
+ action: insert
+```
+
+ãã® **processor** ã¯ãWeaviate ã¡ããªã¯ã¹ã® `service.instance.id` ããããã£ãååŸãã`weaviate.instance.id` ãšããæ°ããããããã£ã«ã³ããŒããŸããããã¯ã`service.instance.id`ïŒSplunk Observability Cloud ã§äœ¿çšãããæšæºç㪠OpenTelemetry ããããã£ïŒã䜿çšããä»ã®ã¡ããªã¯ã¹ãš Weaviate ã¡ããªã¯ã¹ãããç°¡åã«åºå¥ã§ããããã«ããããã§ãã
+
+Weaviate ã¡ããªã¯ã¹çšã®æ°ããã¡ããªã¯ã¹ **pipeline** ã远å ããå¿
èŠããããŸãïŒ`weaviate.instance.id` ã¡ããªã¯ã¹ã Weaviate 以å€ã®ã¡ããªã¯ã¹ã«è¿œå ããããªããããå¥ã® **pipeline** ã䜿çšããå¿
èŠããããŸãïŒããã¡ã€ã«ã®æ«å°Ÿã«æ¬¡ã®å
容ã远å ããŠãã ããã
+
+``` yaml
+ metrics/weaviate:
+ exporters:
+ - signalfx
+ processors:
+ - memory_limiter
+ - filter/metrics_to_be_included
+ - resource/weaviate
+ - batch
+ - resourcedetection
+ - resource
+ receivers:
+ - receiver_creator/weaviate
+```
+
+å°ãæéããšã£ãŠã倿Žãã `otel-collector-values.yaml` ãã¡ã€ã«ã®å
容ã `otel-collector-values-with-weaviate.yaml` ãã¡ã€ã«ãšæ¯èŒããŠãã ããã`yaml` ãã¡ã€ã«ã§ã¯ã€ã³ãã³ããéèŠã§ãæ£ç¢ºã§ããå¿
èŠãããããšãå¿ããªãã§ãã ããã
+
+``` bash
+diff otel-collector-values.yaml otel-collector-values-with-weaviate.yaml
+```
+
+å
容ãäžèŽããããã«ãå¿
èŠã«å¿ããŠãã¡ã€ã«ãæŽæ°ããŠãã ããã
+
+{{% notice title="ãŸã ã³ã¬ã¯ã¿ãŒãåèµ·åããªãã§ãã ãã" style="warning" %}}
+
+OpenShift ç°å¢ã§ã³ã¬ã¯ã¿ãŒãåèµ·åããã«ã¯ããŒãããã 3 åãããããããã¹ãŠã®èšå®å€æŽãå®äºããŠããåèµ·åãå®è¡ããŸãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/6-monitor-storage.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/6-monitor-storage.md
new file mode 100644
index 0000000000..58846b2560
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/6-monitor-storage.md
@@ -0,0 +1,100 @@
+---
+title: Monitor Storage
+linkTitle: 6. Monitor Storage
+weight: 6
+time: 5 minutes
+---
+
+ãã®ã¹ãããã§ã¯ãã¹ãã¬ãŒãžãç£èŠããããã« Prometheus receiver ãèšå®ããŸãã
+
+## Cisco AI PODs ã¯ã©ã®ãããªã¹ãã¬ãŒãžãå©çšããŠããŸããïŒ
+
+Cisco AI PODs ã«ã¯ãPure StorageãVASTãNetApp ãªã©ãããŸããŸãªã¹ãã¬ãŒãžãªãã·ã§ã³ããããŸãã
+
+æ¬ã¯ãŒã¯ã·ã§ããã§ã¯ Pure Storage ã«çŠç¹ãåœãŠãŸãã
+
+## Pure Storage ã®ã¡ããªã¯ã¹ãã©ã®ããã«ååŸããŸããïŒ
+
+Pure Storage ãå©çšãã Cisco AI PODs ã¯ãKubernetes ã«æ°žç¶ã¹ãã¬ãŒãžãæäŸãã Portworx ãšåŒã°ããæè¡ãå©çšããŠããŸãã
+
+Portworx ã«ã¯ã¡ããªã¯ã¹ãšã³ããã€ã³ããå«ãŸããŠãããPrometheus receiver ã䜿ã£ãŠã¹ã¯ã¬ã€ãã³ã°ã§ããŸãã
+
+## Prometheus ã§ã¹ãã¬ãŒãžã¡ããªã¯ã¹ãååŸãã
+
+OpenTelemetry collector ã®èšå®ã倿ŽããPrometheus **receiver** ã§ Portworx ã¡ããªã¯ã¹ãã¹ã¯ã¬ã€ãã³ã°ããããã«ããŸãã
+
+ãã®ããã«ã`otel-collector-values.yaml` ãã¡ã€ã«ã« Prometheus **receiver creator** ã»ã¯ã·ã§ã³ã远å ããŸãã`receiver_creator/weaviate` ã»ã¯ã·ã§ã³ã®åŸã`pipelines` ã»ã¯ã·ã§ã³ã®åã«è¿œå ããŠãã ããã
+
+``` yaml
+ receiver_creator/storage:
+ # Name of the extensions to watch for endpoints to start and stop.
+ watch_observers: [ k8s_observer ]
+ receivers:
+ prometheus/portworx:
+ config:
+ config:
+ scrape_configs:
+ - job_name: portworx-metrics
+ static_configs:
+ - targets:
+ - '`endpoint`:17001'
+ - '`endpoint`:17018'
+ rule: type == "pod" && labels["app"] == "portworx-metrics-sim"
+```
+
+ãŸãã`filter/metrics_to_be_included` ãã£ã«ã¿ãŒããã»ããµãŒã®èšå®ã«ã Portworx ã¡ããªã¯ã¹ã远å ãããŠããããšã確èªããå¿
èŠããããŸãã
+
+``` yaml
+ processors:
+ filter/metrics_to_be_included:
+ metrics:
+ # Include only metrics used in charts and detectors
+ include:
+ match_type: strict
+ metric_names:
+ - DCGM_FI_DEV_FB_FREE
+ - ...
+ - px_cluster_cpu_percent
+ - px_cluster_disk_total_bytes
+ - px_cluster_disk_utilized_bytes
+ - px_cluster_status_nodes_offline
+ - px_cluster_status_nodes_online
+ - px_volume_read_latency_seconds
+ - px_volume_reads_total
+ - px_volume_readthroughput
+ - px_volume_write_latency_seconds
+ - px_volume_writes_total
+ - px_volume_writethroughput
+```
+
+> 泚æ: `px_cluster_cpu_percent` ããå§ãŸãæ°ããã¡ããªã¯ã¹ã®ã¿ã远å ããŠãã ãã
+
+Portworx ã¡ããªã¯ã¹çšã®æ°ããã¡ããªã¯ã¹ **pipeline** ã远å ããå¿
èŠããããŸãããã¡ã€ã«ã®æ«å°Ÿã«ä»¥äžã远å ããŠãã ããã
+
+``` yaml
+ metrics/storage:
+ exporters:
+ - signalfx
+ processors:
+ - memory_limiter
+ - filter/metrics_to_be_included
+ - batch
+ - resourcedetection
+ - resource
+ receivers:
+ - receiver_creator/storage
+```
+
+ããã§ã倿Žãã `otel-collector-values.yaml` ãã¡ã€ã«ã®å
容ã `otel-collector-values-with-portworx.yaml` ãã¡ã€ã«ãšæ¯èŒããŠã¿ãŸãããã`yaml` ãã¡ã€ã«ã§ã¯ã€ã³ãã³ããéèŠã§ãããæ£ç¢ºã§ããå¿
èŠãããããšãèŠããŠãããŠãã ããã
+
+``` bash
+diff otel-collector-values.yaml otel-collector-values-with-portworx.yaml
+```
+
+å
容ãäžèŽããããã«ãå¿
èŠã«å¿ããŠãã¡ã€ã«ãæŽæ°ããŠãã ããã
+
+{{% notice title="ãŸã collector ãåèµ·åããªãã§ãã ãã" style="warning" %}}
+
+OpenShift ç°å¢ã§ã¯ collector ã®åèµ·åã«ããŒãããã 3 åãããããããã¹ãŠã®èšå®å€æŽãå®äºãããŸã§åèµ·åã®éå§ã¯åŸ
ã¡ãŸãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/7-review-ai-pod-dashboards.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/7-review-ai-pod-dashboards.md
new file mode 100644
index 0000000000..621d385523
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/7-review-ai-pod-dashboards.md
@@ -0,0 +1,63 @@
+---
+title: AI POD ããã·ã¥ããŒãã®ç¢ºèª
+linkTitle: 7. AI POD ããã·ã¥ããŒãã®ç¢ºèª
+weight: 7
+time: 10 minutes
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãSplunk Observability Cloud ã® AI POD ããã·ã¥ããŒãã確èªããNVIDIAãPure StorageãWeaviate ããã®ããŒã¿ãæåŸ
ã©ããã«ååŸãããŠããããšã確èªããŸãã
+
+## OpenTelemetry Collector ã®èšå®ãæŽæ°ãã
+
+次㮠Helm ã³ãã³ããå®è¡ããããšã§ãCollector ã®èšå®å€æŽãé©çšã§ããŸãã
+
+``` bash
+{ [ -z "$CLUSTER_NAME" ] || \
+ [ -z "$ENVIRONMENT_NAME" ] || \
+ [ -z "$USER_NAME" ]; } && \
+ echo "Error: Missing variables" || \
+ helm upgrade splunk-otel-collector \
+ --set="clusterName=$CLUSTER_NAME" \
+ --set="environment=$ENVIRONMENT_NAME" \
+ --set="splunkObservability.accessToken=$ACCESS_TOKEN" \
+ --set="splunkObservability.realm=$REALM" \
+ --set="splunkPlatform.endpoint=$HEC_URL" \
+ --set="splunkPlatform.token=$HEC_TOKEN" \
+ --set="splunkPlatform.index=$SPLUNK_INDEX" \
+ -f ./otel-collector-values.yaml \
+ -n $USER_NAME \
+ splunk-otel-collector-chart/splunk-otel-collector
+```
+
+> 泚æ: `Missing variables` ãšãããšã©ãŒã衚瀺ãããå Žåã¯ãç°å¢å€æ°ãå床å®çŸ©ããå¿
èŠããããŸããæ¬¡ã®ã³ãã³ããå®è¡ããåã«ãåå è
çªå·ã远å ããŠãã ããã
+>
+> ``` bash
+> export PARTICIPANT_NUMBER=
+> export USER_NAME=workshop-participant-$PARTICIPANT_NUMBER
+> export CLUSTER_NAME=ai-pod-$USER_NAME
+> export ENVIRONMENT_NAME=ai-pod-$USER_NAME
+> export SPLUNK_INDEX=splunk4rookies-workshop
+> ```
+
+## AI POD Overview ããã·ã¥ããŒãã¿ãã®ç¢ºèª
+
+Splunk Observability Cloud ã§ `Dashboards` ã«ç§»åãã`Built-in dashboard groups` ã«å«ãŸããŠãã `Cisco AI PODs Dashboard` ãæ€çŽ¢ããŸãã
+ããã·ã¥ããŒããããèªåã® OpenShift ã¯ã©ã¹ã¿ãŒåã§ãã£ã«ã¿ãªã³ã°ãããŠããããšã確èªããŠãã ããã
+ãã£ãŒãã¯æ¬¡ã®äŸã®ããã«è¡šç€ºãããŠããã¯ãã§ãã
+
+
+
+## Pure Storage ããã·ã¥ããŒãã¿ãã®ç¢ºèª
+
+`PURE STORAGE` ã¿ãã«ç§»åããããã·ã¥ããŒãããèªåã® OpenShift ã¯ã©ã¹ã¿ãŒåã§ãã£ã«ã¿ãªã³ã°ãããŠããããšã確èªããŸãããã£ãŒãã¯æ¬¡ã®äŸã®ããã«è¡šç€ºãããŠããã¯ãã§ãã
+
+
+
+## Weaviate Infrastructure Navigator ã®ç¢ºèª
+
+Weaviate 㯠AI POD ã«ããã©ã«ãã§å«ãŸããŠããªããããæšæºã® AI POD ããã·ã¥ããŒãã«ã¯å«ãŸããŠããŸããã代ããã«ãInfrastructure Navigator ã® 1 ã€ã䜿çšã㊠Weaviate ã®ããã©ãŒãã³ã¹ããŒã¿ã衚瀺ã§ããŸãã
+
+Splunk Observability Cloud ã§ã`Infrastructure` -> `AI Frameworks` -> `Weaviate` ã«ç§»åããŸãã
+察象㮠`k8s.cluster.name` ã§ãã£ã«ã¿ãªã³ã°ããNavigator ãæ¬¡ã®äŸã®ããã«è¡šç€ºãããŠããããšã確èªããŠãã ããã
+
+
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/8-review-llm-app.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/8-review-llm-app.md
new file mode 100644
index 0000000000..7d53a32f52
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/8-review-llm-app.md
@@ -0,0 +1,112 @@
+---
+title: LLM ã¢ããªã±ãŒã·ã§ã³ã®ç¢ºèª
+linkTitle: 8. LLM ã¢ããªã±ãŒã·ã§ã³ã®ç¢ºèª
+weight: 8
+time: 15 minutes
+---
+
+ã¯ãŒã¯ã·ã§ããã®æåŸã®ã¹ãããã§ã¯ãinstruct ã¢ãã«ãš embeddings ã¢ãã«ã䜿çšããã¢ããªã±ãŒã·ã§ã³ã OpenShift ã¯ã©ã¹ã¿ãŒã«ãããã€ããŸãã
+
+## LangChain ãšã¯
+
+LLM ãšããåãããã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ãšåæ§ã«ããã®ã¢ããªã±ãŒã·ã§ã³ã Python ã§æžãããŠããŸãããŸãã[LangChain](https://www.langchain.com/) ã䜿çšããŠããŸããLangChain ã¯ãLLM ãæŽ»çšããã¢ããªã±ãŒã·ã§ã³ã®éçºãç°¡çŽ åãããªãŒãã³ãœãŒã¹ã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã§ãã
+
+## ã¢ããªã±ãŒã·ã§ã³ã®æŠèŠ
+
+### LLM ãžã®æ¥ç¶
+
+ã¢ããªã±ãŒã·ã§ã³ã¯ãŸãã䜿çšãã 2 ã€ã® LLM ã«æ¥ç¶ããŸãã
+
+* `meta/llama-3.2-1b-instruct`: ãŠãŒã¶ãŒããã³ãããžã®å¿çã«äœ¿çš
+* `nvidia/llama-3.2-nv-embedqa-1b-v2`: embeddings ã®èšç®ã«äœ¿çš
+
+``` python
+# connect to a LLM NIM at the specified endpoint, specifying a specific model
+llm = ChatNVIDIA(base_url=INSTRUCT_MODEL_URL, model="meta/llama-3.2-1b-instruct")
+
+# Initialize and connect to a NeMo Retriever Text Embedding NIM (nvidia/llama-3.2-nv-embedqa-1b-v2)
+embeddings_model = NVIDIAEmbeddings(model="nvidia/llama-3.2-nv-embedqa-1b-v2",
+ base_url=EMBEDDINGS_MODEL_URL)
+```
+
+> ãªã 2 ã€ã®ã¢ãã«ãããã®ã§ããããïŒ ããããããäŸãã玹ä»ããŸãã
+>
+> * Embedding ã¢ãã«ã¯ãåžæžãã®ãããªåœ¹å²ã§ãïŒé©åãªæ¬ãèŠã€ããæå©ããããŸãïŒã
+> * Instruct ã¢ãã«ã¯ãå·çè
ãã®ãããªåœ¹å²ã§ãïŒæ¬ãèªãã§åçãæžããŸãïŒã
+
+### ããã³ãããã³ãã¬ãŒãã®å®çŸ©
+
+次ã«ãã¢ããªã±ãŒã·ã§ã³ã¯ `meta/llama-3.2-1b-instruct` LLM ãšã®ããåãã§äœ¿çšããããã³ãããã³ãã¬ãŒããå®çŸ©ããŸãã
+
+``` python
+prompt = ChatPromptTemplate.from_messages([
+ ("system",
+ "You are a helpful and friendly AI!"
+ "Your responses should be concise and no longer than two sentences."
+ "Do not hallucinate. Say you don't know if you don't have this information."
+ "Answer the question using only the context"
+ "\n\nQuestion: {question}\n\nContext: {context}"
+ ),
+ ("user", "{question}")
+])
+```
+
+> LLM ã«å¯ŸããŠãçããç¥ããªãå Žåã¯ç¥ããªããšæç€ºçã«çããããã«æç€ºããŠããç¹ã«æ³šç®ããŠãã ãããããã«ãããã«ã·ããŒã·ã§ã³ãæå°éã«æããããšãã§ããŸãããŸããLLM ã質åã«çããéã«äœ¿çšã§ããã³ã³ããã¹ããæäŸããããã®ãã¬ãŒã¹ãã«ããŒãçšæãããŠããŸãã
+
+### ãã¯ãã«ããŒã¿ããŒã¹ãžã®æ¥ç¶
+
+次ã«ãã¢ããªã±ãŒã·ã§ã³ã¯ NVIDIA ããŒã¿ã·ãŒãã®ããã¥ã¡ã³ããäºåã«æ ŒçŽããããã¯ãã«ããŒã¿ããŒã¹ã«æ¥ç¶ããŸãã
+
+``` python
+ weaviate_client = weaviate.connect_to_custom(
+ http_host=os.getenv('WEAVIATE_HTTP_HOST'),
+ http_port=os.getenv('WEAVIATE_HTTP_PORT'),
+ http_secure=False,
+ grpc_host=os.getenv('WEAVIATE_GRPC_HOST'),
+ grpc_port=os.getenv('WEAVIATE_GRPC_PORT'),
+ grpc_secure=False
+ )
+
+ vector_store = WeaviateVectorStore(
+ client=weaviate_client,
+ embedding=embeddings_model,
+ index_name="CustomDocs",
+ text_key="page_content"
+ )
+```
+
+### Chain ã®å®çŸ©
+
+ã¢ããªã±ãŒã·ã§ã³ã¯ **LCEL (LangChain Expression Language)** ã䜿çšã㊠chain ãå®çŸ©ããŸãã`|` (ãã€ã) èšå·ã¯çµã¿ç«ãŠã©ã€ã³ã®ããã«åäœããããã¹ãããã®åºåãæ¬¡ã®ã¹ãããã®å
¥åã«ãªããŸãã
+
+``` python
+ chain = (
+ {
+ "context": vector_store.as_retriever(),
+ "question": RunnablePassthrough()
+ }
+ | prompt
+ | llm
+ | StrOutputParser()
+ )
+```
+
+ãããã¹ãããããšã«èŠãŠãããŸãããã
+
+* **ã¹ããã 1: å
¥åããã {âŠ}**: ããã³ããã®ããã®ææãæºåããŸãã
+ * context: ãã¯ãã«ã¹ãã¢ã retriever ã«å€æããŸããããã¯æ€çŽ¢ãšã³ãžã³ã®ããã«åäœãããŠãŒã¶ãŒã®è³ªåã«åºã¥ã㊠NVIDIA ããŒã¿ã·ãŒãããæãé¢é£æ§ã®é«ãç®æãèŠã€ããŸãã
+ * question: `RunnablePassthrough()` ã䜿çšããŠããŠãŒã¶ãŒã®å
ã®è³ªåãããã³ããã«çŽæ¥æž¡ãããããã«ããŸãã
+ * **泚æ**: ãããã®ã㌠(context ãš question) ã¯ãå
ã»ã©ããã³ãããã³ãã¬ãŒãã§å®çŸ©ãã `{context}` ãš `{question}` ã®ãã¬ãŒã¹ãã«ããŒã«çŽæ¥å¯Ÿå¿ããŠããŸãã
+* **ã¹ããã 2: prompt**: ããã¯æç€ºæžã§ããã³ã³ããã¹ããšè³ªåãåãåããããã³ãããã³ãã¬ãŒãã䜿çšããŠãã©ãŒãããããŸã (äŸ: "Answer the question using only the context...")ã
+* **ã¹ããã 3: llm**: ããã¯ããšã³ãžã³ãã§ã (GPT-4 ã®ãããªãã®)ããã©ãŒããããããããã³ãããèªã¿åããå¿çãçæããŸãã
+* **ã¹ããã 4: StrOutputParser()**: ããã©ã«ãã§ã¯ãAI ã¢ãã«ã¯è€éãªãªããžã§ã¯ããè¿ããŸãããã®ãã¯ãªãŒããŒãã«ãããã·ã³ãã«ã§èªã¿ãããããã¹ãæååãååŸã§ããŸãã
+
+### Chain ã®åŒã³åºã
+
+æåŸã«ãã¢ããªã±ãŒã·ã§ã³ã¯ãšã³ããŠãŒã¶ãŒã®è³ªåãå
¥åãšããŠæž¡ãããšã§ chain ãåŒã³åºããŸãã
+
+``` python
+ response = chain.invoke(question)
+```
+
+ããã¯ãã¹ã¿ãŒãããã¿ã³ã§ãããšã³ããŠãŒã¶ãŒã®è³ªåããã€ãã©ã€ã³ã®æåã«æå
¥ãããšãretrieverãpromptãLLM ãçµç±ããŠãæçµçã«çããå察åŽããåºãŠããŸãã
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/9-instrument-llm-app.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/9-instrument-llm-app.md
new file mode 100644
index 0000000000..79bd546ece
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/9-instrument-llm-app.md
@@ -0,0 +1,78 @@
+---
+title: Instrument the LLM Application
+linkTitle: 9. Instrument the LLM Application
+weight: 9
+time: 10 minutes
+---
+
+## OpenTelemetry ã§ã¢ããªã±ãŒã·ã§ã³ãèšè£
ãã
+
+### èšè£
ããã±ãŒãž
+
+ã¢ããªã±ãŒã·ã§ã³ããã¡ããªã¯ã¹ããã¬ãŒã¹ããã°ãååŸããããã«ãOpenTelemetry ã§èšè£
ããŠããŸãã
+ãã®ããã«ã`requirements.txt` ãã¡ã€ã«ã«æ¬¡ã®ããã±ãŒãžã远å ããå¿
èŠããããŸããïŒæçµçã« `pip install` ã§ã€ã³ã¹ããŒã«ãããŸãïŒã
+
+````
+splunk-opentelemetry==2.8.0
+````
+
+ãŸãããã®ã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã€ã¡ãŒãžããã«ãããããã«äœ¿çšãã `Dockerfile` ã«ã远å ã® OpenTelemetry èšè£
ããã±ãŒãžãã€ã³ã¹ããŒã«ããããã®ä»¥äžã远èšããŸããã
+
+``` dockerfile
+# Add additional OpenTelemetry instrumentation packages
+RUN opentelemetry-bootstrap --action=install
+```
+
+次ã«ãã¢ããªã±ãŒã·ã§ã³å®è¡æã« `opentelemetry-instrument` ãåŒã³åºãããã`Dockerfile` ã® `ENTRYPOINT` ã倿ŽããŸããã
+
+``` dockerfile
+ENTRYPOINT ["opentelemetry-instrument", "flask", "run", "-p", "8080", "--host", "0.0.0.0"]
+```
+
+æåŸã«ããã® LangChain ã¢ããªã±ãŒã·ã§ã³ãã OpenTelemetry ã§åéãããã¬ãŒã¹ãšã¡ããªã¯ã¹ã匷åããããã远å ã® Splunk èšè£
ããã±ãŒãžã远å ããŸããã
+
+````
+splunk-otel-instrumentation-langchain==0.1.4
+splunk-otel-util-genai==0.1.4
+````
+
+### ç°å¢å€æ°
+
+OpenTelemetry ã§ã¢ããªã±ãŒã·ã§ã³ãèšè£
ããããã«ãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã«äœ¿çšãã Kubernetes ãããã§ã¹ããã¡ã€ã«ã«ããã€ãã®ç°å¢å€æ°ã远å ããŸããã
+
+``` yaml
+ env:
+ - name: OTEL_SERVICE_NAME
+ value: "llm-app"
+ - name: OTEL_EXPORTER_OTLP_ENDPOINT
+ value: "http://splunk-otel-collector-agent:4317"
+ - name: OTEL_EXPORTER_OTLP_PROTOCOL
+ value: "grpc"
+ # filter out health check requests to the root URL
+ - name: OTEL_PYTHON_EXCLUDED_URLS
+ value: "^(https?://)?[^/]+(/)?$"
+ - name: OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
+ value: "httpx,requests"
+ - name: OTEL_INSTRUMENTATION_LANGCHAIN_CAPTURE_MESSAGE_CONTENT
+ value: "true"
+ - name: OTEL_LOGS_EXPORTER
+ value: "otlp"
+ - name: OTEL_PYTHON_LOG_CORRELATION
+ value: "true"
+ - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
+ value: "delta"
+ - name: OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED
+ value: "true"
+ - name: OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT
+ value: "true"
+ - name: OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT_MODE
+ value: "SPAN_AND_EVENT"
+ - name: OTEL_INSTRUMENTATION_GENAI_EMITTERS
+ value: "span_metric_event,splunk"
+ - name: OTEL_INSTRUMENTATION_GENAI_EMITTERS_EVALUATION
+ value: "replace-category:SplunkEvaluationResults"
+ - name: SPLUNK_PROFILER_ENABLED
+ value: "true"
+```
+
+`OTEL_INSTRUMENTATION_LANGCHAIN_CAPTURE_MESSAGE_CONTENT` ãš `OTEL_INSTRUMENTATION_GENAI_*` ã®ç°å¢å€æ°ã¯ãããã§äœ¿çšããŠãã LangChain èšè£
ã«åºæã®ãã®ã§ããç¹ã«æ³šæããŠãã ããã
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/_index.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/_index.md
new file mode 100644
index 0000000000..60fa1b258d
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/2-workshop/_index.md
@@ -0,0 +1,14 @@
+---
+title: Workshop
+linkTitle: 2. Workshop
+weight: 2
+---
+
+ãã®ã»ã¯ã·ã§ã³ã§ã¯ãã¯ãŒã¯ã·ã§ããåå è
ã宿œããæé ã玹ä»ããŸãã
+
+* Red Hat OpenShift ã¯ã©ã¹ã¿ãŒã« **OpenTelemetry Collector** ããããã€ããç·Žç¿ãè¡ããŸãã
+* ã€ã³ãã©ã¹ãã©ã¯ãã£ã¡ããªã¯ã¹ãåã蟌ãããã«ãCollector ãž **Prometheus** ã¬ã·ãŒããŒã远å ããç·Žç¿ãè¡ããŸãã
+* ã¯ã©ã¹ã¿ãŒå
ã® **Weaviate** ãã¯ãã«ããŒã¿ããŒã¹ãç£èŠããç·Žç¿ãè¡ããŸãã
+* Prometheus ã䜿ã£ãŠ **Pure Storage** ã®ã¡ããªã¯ã¹ãåéããç·Žç¿ãè¡ããŸãã
+* å€§èŠæš¡èšèªã¢ãã« (LLMs) ãšé£æºãã Python ãµãŒãã¹ã **OpenTelemetry** ã§èšè£
ããç·Žç¿ãè¡ããŸãã
+* LLMs ãšé£æºããã¢ããªã±ãŒã·ã§ã³ã®ãã¬ãŒã¹ãããOpenTelemetry ãã©ã®ãããªæ
å ±ãååŸããŠããããçè§£ããŸãã
diff --git a/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/_index.md b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/_index.md
new file mode 100644
index 0000000000..2142eaf575
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/14-cisco-ai-pods/_index.md
@@ -0,0 +1,31 @@
+---
+title: Splunk Observability Cloud ã§ Cisco AI Pods ãç£èŠãã
+linkTitle: Splunk Observability Cloud ã§ Cisco AI Pods ãç£èŠãã
+weight: 14
+archetype: chapter
+time: 60 minutes
+authors: ["Derek Mitchell"]
+description: Red Hat OpenShift äžã« OpenTelemetry Collector ããããã€ããPrometheus çµç±ã§ Cisco AI Pod ã®ã¡ããªã¯ã¹ãã¹ã¯ã¬ã€ãã³ã°ããªãããLLM ãåŒã³åºã Python ãµãŒãã¹ããã¬ãŒã¹ããŸãã
+draft: false
+hidden: false
+aliases:
+ - /ninja-workshops/14-cisco-ai-pods/
+---
+
+**Cisco ã® AI-ready POD** ã¯ãããŒããŠã§ã¢ãšãœãããŠã§ã¢ã®åªããæè¡ãçµã¿åããã倿§ãªããŒãºã«å¯Ÿå¿ããå
ç¢ã§ã¹ã±ãŒã©ãã«ãã€å¹çç㪠AI 察å¿ã€ã³ãã©ãå®çŸããŸãã
+
+**Splunk Observability Cloud** ã¯ãããããã€ã³ãã©å
šäœã«å ãããã®ã¹ã¿ãã¯äžã§çšŒåãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã³ã³ããŒãã³ãã«å¯Ÿããå
æ¬çãªå¯èŠåãæäŸããŸãã
+
+Cisco AI POD ç°å¢åãã« Splunk Observability Cloud ãæ§æããæé 㯠[å®å
šãªããã¥ã¡ã³ã](https://github.com/signalfx/splunk-opentelemetry-examples/tree/main/collector/cisco-ai-ready-pods) ãšããŠå
¬éãããŠããŸãã
+
+ãã ããã€ã³ã¹ããŒã«æé ãå®éã«è©Šãããã« Cisco AI POD ç°å¢ãžã¢ã¯ã»ã¹ã§ãããšã¯éããŸããã
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãå®éã® Cisco AI POD ãžã®ã¢ã¯ã»ã¹ãå¿
èŠãšããã«ãSplunk Observability Cloud ã§ Cisco AI POD ãç£èŠããéã«äœ¿çšãããè€æ°ã®æè¡ããããã€ããæäœãããã³ãºãªã³äœéšãæäŸããŸããå
·äœçã«ã¯æ¬¡ã®å
å®¹ãæ±ããŸãã
+
+* Red Hat OpenShift ã¯ã©ã¹ã¿ãžã® **OpenTelemetry Collector** ã®ãããã€ãå®è·µããŸãã
+* Collector ã« **Prometheus** ã¬ã·ãŒããŒã远å ããã€ã³ãã©ã¡ããªã¯ã¹ãåãèŸŒãæ¹æ³ãå®è·µããŸãã
+* **Weaviate** ãã¯ã¿ãŒããŒã¿ããŒã¹ãã¯ã©ã¹ã¿ã«ãããã€ããæ¹æ³ãå®è·µããŸãã
+* å€§èŠæš¡èšèªã¢ãã« (LLM) ãšé£æºãã Python ãµãŒãã¹ã **OpenTelemetry** ã§èšè£
ããæ¹æ³ãå®è·µããŸãã
+* LLM ãšé£æºããã¢ããªã±ãŒã·ã§ã³ã®ãã¬ãŒã¹ãããOpenTelemetry ãã©ã®ãããªè©³çްæ
å ±ãååŸããããçè§£ããŸãã
+
+> 泚: ã¯ãŒã¯ã·ã§ããã®ã»ããã¢ããã»ã¯ã·ã§ã³ã¯ãã¯ãŒã¯ã·ã§ããäž»å¬è
ã®ã¿ãå®è¡ããå¿
èŠããããŸãã
diff --git a/content/ja/ninja-workshops/infrastructure/2-hpa/1-deploy-otel.md b/content/ja/ninja-workshops/infrastructure/2-hpa/1-deploy-otel.md
new file mode 100644
index 0000000000..df82f289cd
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/2-hpa/1-deploy-otel.md
@@ -0,0 +1,113 @@
+---
+title: Kubernetes ã«ããã OpenTelemetry Collector ã®ãããã€
+linkTitle: 1. OTel Collector ã®ãããã€
+weight: 1
+---
+
+## 1. EC2 ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶
+
+ã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ãžã¯ãMacãLinuxãWindows ãããã®ããã€ã¹ããã SSH ã䜿çšããŠæ¥ç¶ã§ããŸããã€ã³ã¹ãã©ã¯ã¿ãŒããæäŸãããã·ãŒãã®ãªã³ã¯ãéããŠãã ããããã®ã·ãŒãã«ã¯ãã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã® IP ã¢ãã¬ã¹ãšãã¹ã¯ãŒããèšèŒãããŠããŸãã
+
+{{% notice style="info" %}}
+ã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã«ã¯ãæ¬ã¯ãŒã¯ã·ã§ããçšã®æ£ãã **Access Token** ãš **Realm** ãäºåã«èšå®ãããŠããŸããããããèšå®ããå¿
èŠã¯ãããŸããã
+{{% /notice %}}
+
+## 2. Helm ã䜿çšãã Splunk OTel ã®ã€ã³ã¹ããŒã«
+
+Splunk Helm chart ã䜿çšã㊠OpenTelemetry Collector ãã€ã³ã¹ããŒã«ããŸãããŸããSplunk Helm chart ãªããžããªã远å ããæŽæ°ããŸãã
+
+{{< tabs >}}
+{{% tab title="helm repo add" %}}
+
+```bash
+helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart && helm repo update
+```
+
+{{% /tab %}}
+{{% tab title="helm repo add output" %}}
+
+```text
+Using ACCESS_TOKEN=
+Using REALM=eu0
+"splunk-otel-collector-chart" has been added to your repositories
+Using ACCESS_TOKEN=
+Using REALM=eu0
+Hang tight while we grab the latest from your chart repositories...
+...Successfully got an update from the "splunk-otel-collector-chart" chart repository
+Update Complete. âHappy Helming!â
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+以äžã®ã³ãã³ãã§ OpenTelemetry Collector ã® Helm ãã€ã³ã¹ããŒã«ããŸãããã®ã³ãã³ãã¯ç·šé**ããªãã§ãã ãã**ã
+
+{{< tabs >}}
+{{% tab title="helm install" %}}
+
+``` bash
+helm install splunk-otel-collector --version {{< otel-version >}} \
+--set="splunkObservability.realm=$REALM" \
+--set="splunkObservability.accessToken=$ACCESS_TOKEN" \
+--set="clusterName=$INSTANCE-k3s-cluster" \
+--set="splunkPlatform.endpoint=$HEC_URL" \
+--set="splunkPlatform.token=$HEC_TOKEN" \
+--set="splunkPlatform.index=splunk4rookies-workshop" \
+splunk-otel-collector-chart/splunk-otel-collector \
+-f ~/workshop/k3s/otel-collector.yaml
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## 3. ãããã€ã®ç¢ºèª
+
+`kubectl get pods` ãå®è¡ããããšã§ããããã€ã®é²è¡ç¶æ³ãç£èŠã§ããŸããéåžžãçŽ 30 ç§åŸã«æ°ãã Pod ãèµ·åããŠå®è¡äžã§ããããšãå ±åãããŸãã
+
+ç¶è¡ããåã«ãã¹ããŒã¿ã¹ã **Running** ãšå ±åãããŠããããšã確èªããŠãã ããã
+
+{{< tabs >}}
+{{% tab title="kubectl get pods" %}}
+
+``` bash
+kubectl get pods
+```
+
+{{% /tab %}}
+{{% tab title="kubectl get pods Output" %}}
+
+``` text
+NAME READY STATUS RESTARTS AGE
+splunk-otel-collector-agent-ks9jn 1/1 Running 0 27s
+splunk-otel-collector-agent-lqs4j 0/1 Running 0 27s
+splunk-otel-collector-agent-zsqbt 1/1 Running 0 27s
+splunk-otel-collector-k8s-cluster-receiver-76bb6b555-7fhzj 0/1 Running 0 27s
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+`helm` ã€ã³ã¹ããŒã«æã«èšå®ãããã©ãã«ã䜿ã£ãŠããã°ã tail ããŸãïŒçµäºããã«ã¯ `ctrl + c` ãæŒãå¿
èŠããããŸãïŒã
+
+{{< tabs >}}
+{{% tab title="kubectl logs" %}}
+
+``` bash
+kubectl logs -l app=splunk-otel-collector -f --container otel-collector
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ãŸãã¯ãã€ã³ã¹ããŒã«æžã¿ã® `k9s` ã¿ãŒããã« UI ã䜿çšããããšãã§ããŸãã
+
+
+
+{{% notice title="倱æããã€ã³ã¹ããŒã«ã®åé€" style="warning" %}}
+Splunk OpenTelemetry Collector ã®ã€ã³ã¹ããŒã«äžã«ãšã©ãŒãçºçããå Žåã¯ã以äžã®ã³ãã³ãã§ã€ã³ã¹ããŒã«ãåé€ããŠããçŽãããšãã§ããŸãã
+
+``` sh
+helm delete splunk-otel-collector
+```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/infrastructure/2-hpa/2-k8s-namespaces-dns.md b/content/ja/ninja-workshops/infrastructure/2-hpa/2-k8s-namespaces-dns.md
new file mode 100644
index 0000000000..ddf80f21fb
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/2-hpa/2-k8s-namespaces-dns.md
@@ -0,0 +1,41 @@
+---
+title: K8s Namespaces and DNS
+linkTitle: 2. K8s Namespaces and DNS
+weight: 2
+---
+
+## 1. Kubernetes ã«ããã Namespace
+
+ã»ãšãã©ã®ã客æ§ã¯ãKubernetes ãå®è¡ããããã«äœããã®ãã©ã€ããŒããŸãã¯ãããªãã¯ã¯ã©ãŠããµãŒãã¹ãå©çšããŸããäžå€®éçŽçã«ç®¡çãããããããå€§èŠæš¡ãª Kubernetes ã¯ã©ã¹ã¿ãŒãå°æ°ã ãéçšããéžæããããããšããããããŸãã
+
+Namespace ã¯ãããããå€§èŠæš¡ãª Kubernetes ã¯ã©ã¹ã¿ãŒãä»®æ³çãªãµãã¯ã©ã¹ã¿ãŒã«æŽçããä»çµã¿ã§ããè€æ°ã®ããŒã ããããžã§ã¯ãã Kubernetes ã¯ã©ã¹ã¿ãŒãå
±æããå Žåã«ãããããã®ããŒã ãèªåãã¡ã®ãªãœãŒã¹ã ããç°¡åã«ç¢ºèªããŠæäœã§ããããã«ãªãããã䟿å©ãªæ©èœã§ãã
+
+ã¯ã©ã¹ã¿ãŒå
ã§ã¯ä»»æã®æ°ã® Namespace ããµããŒãããããããããè«ççã«åé¢ããã€ã€ããçžäºã«éä¿¡ã§ããèœåãæã£ãŠããŸããã³ã³ããŒãã³ã㯠Namespace ãéžæããå ŽåããŸã㯠`kubectl` ã« `--all-namespaces` ãã©ã°ã远å ããå Žåã«ã®ã¿**衚瀺**ãããŸããããã«ãããèªåã® Namespace ãéžæããããšã§ããããžã§ã¯ãã«é¢é£ããã³ã³ããŒãã³ãã ãã衚瀺ã§ããŸãã
+
+ã»ãšãã©ã®ã客æ§ã¯ãã¢ããªã±ãŒã·ã§ã³ãåå¥ã® Namespace ã«ã€ã³ã¹ããŒã«ããããšèããã§ããããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ãã®ãã¹ããã©ã¯ãã£ã¹ã«åŸããŸãã
+
+## 2. Kubernetes ã«ããã DNS ãš Service
+
+Domain Name System (DNS) ã¯ãIP ã¢ãã¬ã¹ã®ãããªããŸããŸãªæ
å ±ããèŠããããååãšçŽä»ããããã®ä»çµã¿ã§ãããªã¯ãšã¹ãåã IP ã¢ãã¬ã¹ã«å€æãã DNS ã·ã¹ãã ã䜿çšããããšã§ããšã³ããŠãŒã¶ãŒã¯ç®çã®ãã¡ã€ã³åã«å®¹æã«ã¢ã¯ã»ã¹ã§ããŸãã
+
+ã»ãšãã©ã® Kubernetes ã¯ã©ã¹ã¿ãŒã«ã¯ããµãŒãã¹ãã£ã¹ã«ããªãŒã®ããã®è»œéãªã¢ãããŒããæäŸãããããããã©ã«ãã§å
éš DNS ãµãŒãã¹ãæ§æãããŠããŸããPod ã Service ãäœæãåé€ããŸãã¯ããŒãéã§ç§»åãããå Žåã§ããçµã¿èŸŒã¿ã®ãµãŒãã¹ãã£ã¹ã«ããªãŒã«ãããã¢ããªã±ãŒã·ã§ã³ã¯ Kubernetes ã¯ã©ã¹ã¿ãŒäžã® Service ãç°¡åã«èå¥ããŠéä¿¡ã§ããŸãã
+
+èŠããã«ãKubernetes çšã® DNS ã·ã¹ãã ã¯ãå Pod ããã³ Service ã«å¯Ÿã㊠DNS ãšã³ããªãäœæããŸããäžè¬ã«ãPod ã¯æ¬¡ã®ãã㪠DNS 解決ãæã¡ãŸãã
+
+``` text
+pod-name.my-namespace.pod.cluster-domain.example
+```
+
+äŸãã°ã`default` Namespace å
ã® Pod ã `my_pod` ãšãã Pod åãæã¡ãã¯ã©ã¹ã¿ãŒã®ãã¡ã€ã³åã `cluster.local` ã§ããå Žåããã® Pod ã® DNS åã¯æ¬¡ã®ããã«ãªããŸãã
+
+``` text
+my_pod.default.pod.cluster.local
+```
+
+Service ã«ãã£ãŠå
¬éããã Pod ã§ã¯ã次ã®ãã㪠DNS 解決ãå©çšã§ããŸãã
+
+``` text
+my_pod.service-name.my-namespace.svc.cluster-domain.example
+```
+
+è©³çŽ°ã¯æ¬¡ãåç
§ããŠãã ãã: [**DNS for Service and Pods**](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/)
diff --git a/content/ja/ninja-workshops/infrastructure/2-hpa/3-apache-otel-receiver.md b/content/ja/ninja-workshops/infrastructure/2-hpa/3-apache-otel-receiver.md
new file mode 100644
index 0000000000..9394a5ff43
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/2-hpa/3-apache-otel-receiver.md
@@ -0,0 +1,105 @@
+---
+title: Apache OTel Receiver
+linkTitle: 3. Apache OTel Receiver
+weight: 3
+---
+
+## 1. PHP/Apache çš OTel receiver ã®ç¢ºèª
+
+YAML ãã¡ã€ã« `~/workshop/k3s/otel-apache.yaml` ã確èªããããã以äžã®ã³ãã³ãã§å
å®¹ãæ€èšŒããŸãã
+
+``` bash
+cat ~/workshop/k3s/otel-apache.yaml
+```
+
+ãã®ãã¡ã€ã«ã«ã¯ãPHP/Apache ãããã€ã¡ã³ããç£èŠããããã® OpenTelemetry ãšãŒãžã§ã³ãã®èšå®ãå«ãŸããŠããŸãã
+
+```yaml
+agent:
+ config:
+ receivers:
+ receiver_creator:
+ receivers:
+ apache:
+ rule: type == "port" && pod.name matches "apache" && port == 80
+ config:
+ endpoint: http://php-apache-svc.apache.svc.cluster.local/server-status?auto
+```
+
+## 2. OpenTelemetry èšå®ã«ããã Observation Rule
+
+äžèšã®ãã¡ã€ã«ã«ã¯ãOTel ã® `receiver_creator` ãçšãã Apache ã®èŠ³æž¬ã«ãŒã«ïŒobservation ruleïŒãå«ãŸããŠããŸãããã® receiver ã¯ã芳枬ããããšã³ããã€ã³ããèšå®ãããã«ãŒã«ã«åèŽãããã©ããã«åºã¥ããå®è¡æã«ä»ã® receiver ãã€ã³ã¹ã¿ã³ã¹åã§ããŸãã
+
+èšå®ãããã«ãŒã«ã¯ãæ€åºãããåãšã³ããã€ã³ãã«å¯ŸããŠè©äŸ¡ãããŸããã«ãŒã«ã true ãšè©äŸ¡ããããšããã®ã«ãŒã«ã«å¯Ÿå¿ãã receiver ããåèŽãããšã³ããã€ã³ãã«å¯ŸããŠèšå®éãã«èµ·åãããŸãã
+
+äžèšã®ãã¡ã€ã«ã§ã¯ãOpenTelemetry ãšãŒãžã§ã³ãã«ãååã `apache` ã«åèŽããããŒã `80` ãéããŠãã Pod ãæ¢ãããã«æç€ºããŠããŸããèŠã€ãããšããšãŒãžã§ã³ãã¯èšå®ããã URL ãã Apache ã¡ããªã¯ã¹ãèªã¿åãããã« Apache receiver ãæ§æããŸãããªããäžèšã® YAML å
ã®ãµãŒãã¹ã«å¯Ÿãã URL ã¯ãK8s ã® DNS ããŒã¹ã® URL ã«ãªã£ãŠããç¹ã«æ³šæããŠãã ããã
+
+Apache ã®èšå®ãå©çšããã«ã¯ã以äžã®ã³ãã³ãã§æ¢åã® Splunk OpenTelemetry Collector Helm ãã£ãŒããã¢ããã°ã¬ãŒããã`otel-apache.yaml` ãã¡ã€ã«ãå©çšããããã«ããŸãã
+
+{{< tabs >}}
+{{% tab title="Helm Upgrade" %}}
+
+``` bash
+helm upgrade splunk-otel-collector \
+--set="splunkObservability.realm=$REALM" \
+--set="splunkObservability.accessToken=$ACCESS_TOKEN" \
+--set="clusterName=$INSTANCE-k3s-cluster" \
+--set="splunkPlatform.endpoint=$HEC_URL" \
+--set="splunkPlatform.token=$HEC_TOKEN" \
+--set="splunkPlatform.index=splunk4rookies-workshop" \
+splunk-otel-collector-chart/splunk-otel-collector \
+-f ~/workshop/k3s/otel-collector.yaml \
+-f ~/workshop/k3s/otel-apache.yaml
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+{{% notice title="NOTE" style="info" %}}
+ãããã€ã¡ã³ãã® **REVISION** çªå·ã倿ŽãããŠãããããã¯å€æŽå±¥æŽã远跡ããã®ã«åœ¹ç«ã¡ãŸãã
+
+``` text
+Release "splunk-otel-collector" has been upgraded. Happy Helming!
+NAME: splunk-otel-collector
+LAST DEPLOYED: Mon Nov 4 14:56:25 2024
+NAMESPACE: default
+STATUS: deployed
+REVISION: 2
+TEST SUITE: None
+NOTES:
+Splunk OpenTelemetry Collector is installed and configured to send data to Splunk Platform endpoint "https://http-inputs-workshop.splunkcloud.com:443/services/collector/event".
+
+Splunk OpenTelemetry Collector is installed and configured to send data to Splunk Observability realm eu0.
+```
+
+{{% /notice %}}
+
+## 3. Kubernetes ConfigMaps
+
+ConfigMap ã¯ãã¢ããªã±ãŒã·ã§ã³ã«æ³šå
¥å¯èœãªããŒãšå€ã®ãã¢ã§æ§æããã Kubernetes ã®ãªããžã§ã¯ãã§ããConfigMap ãå©çšããããšã§ãèšå®ã Pod ããåé¢ã§ããŸãã
+
+ConfigMap ã䜿ãããšã§ãèšå®ããŒã¿ã®ããŒãã³ãŒãã£ã³ã°ãé¿ããããŸããConfigMap ã¯ãæ©å¯æ§ã®ãªãæå·åãããŠããªãèšå®æ
å ±ãä¿åã»å
±æããã®ã«äŸ¿å©ã§ãã
+
+OpenTelemetry collector/agent ã¯ããšãŒãžã§ã³ããš K8s Cluster receiver ã®èšå®ãä¿åããããã« ConfigMap ã䜿çšããŸãã倿ŽåŸã«ãšãŒãžã§ã³ãã®çŸåšã®èšå®ã確èªããã«ã¯ããã€ã§ã以äžã®ã³ãã³ããå®è¡ã§ããŸãã
+
+``` bash
+kubectl get cm
+```
+
+{{% notice title="Workshop Question" style="tip" icon="question" %}}
+collector ã¯ããã€ã® ConfigMap ã䜿çšããŠããŸããïŒ
+{{% /notice %}}
+
+namespace å
ã® ConfigMap äžèЧãååŸãããã`otel-agent` çšã®ãã®ãéžæãã以äžã®ã³ãã³ãã§å
容ã確èªããŸãã
+
+``` bash
+kubectl get cm splunk-otel-collector-otel-agent -o yaml
+```
+
+{{% notice title="NOTE" style="info" %}}
+`-o yaml` ãªãã·ã§ã³ãæå®ãããšãConfigMap ã®å
容ãèªã¿ããã YAML 圢åŒã§åºåãããŸãã
+{{% /notice %}}
+
+{{% notice title="Workshop Question" style="tip" icon="question" %}}
+`otel-apache.yaml` ã®èšå®ããcollector agent ã® ConfigMap ã§ç¢ºèªã§ããŸããïŒ
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/infrastructure/2-hpa/4-deploy-apache.md b/content/ja/ninja-workshops/infrastructure/2-hpa/4-deploy-apache.md
new file mode 100644
index 0000000000..b448eef75c
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/2-hpa/4-deploy-apache.md
@@ -0,0 +1,94 @@
+---
+title: Deploy Apache
+linkTitle: 4. Deploy Apache
+weight: 4
+---
+
+## 1. PHP/Apache ã®ãããã€ã¡ã³ã YAML ã確èªãã
+
+YAML ãã¡ã€ã« `~/workshop/k3s/php-apache.yaml` ã確èªãã以äžã®ã³ãã³ãã§å
å®¹ãæ€èšŒããŸãã
+
+``` bash
+cat ~/workshop/k3s/php-apache.yaml
+```
+
+ ãã®ãã¡ã€ã«ã«ã¯ PHP/Apache ã®ãããã€ã¡ã³ãæ§æãå«ãŸããŠãããPHP/Apache ã€ã¡ãŒãžã®ã¬ããªã«ã 1 ã€æã€æ°ãã StatefulSet ãäœæããŸãã
+
+ã¹ããŒãã¬ã¹ãªã¢ããªã±ãŒã·ã§ã³ã¯ã䜿çšãããããã¯ãŒã¯ãåãããæ°žç¶çãªã¹ãã¬ãŒãžãå¿
èŠãšããŸãããã¹ããŒãã¬ã¹ã¢ããªã®äŸãšããŠã¯ãApacheãNginxãTomcat ãªã©ã® Web ãµãŒããŒãæããããŸãã
+
+```yaml
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ name: php-apache
+spec:
+ updateStrategy:
+ type: RollingUpdate
+ selector:
+ matchLabels:
+ run: php-apache
+ serviceName: "php-apache-svc"
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ run: php-apache
+ spec:
+ containers:
+ - name: php-apache
+ image: ghcr.io/splunk/php-apache:latest
+ ports:
+ - containerPort: 80
+ resources:
+ limits:
+ cpu: "8"
+ memory: "8Mi"
+ requests:
+ cpu: "6"
+ memory: "4Mi"
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: php-apache-svc
+ labels:
+ run: php-apache
+spec:
+ ports:
+ - port: 80
+ selector:
+ run: php-apache
+```
+
+## 2. PHP/Apache ããããã€ãã
+
+`apache` ããŒã ã¹ããŒã¹ãäœæããPHP/Apache ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ã¹ã¿ãŒã«ãããã€ããŸãã
+
+`apache` ããŒã ã¹ããŒã¹ãäœæããŸãã
+
+``` bash
+kubectl create namespace apache
+```
+
+PHP/Apache ã¢ããªã±ãŒã·ã§ã³ããããã€ããŸãã
+
+``` bash
+kubectl apply -f ~/workshop/k3s/php-apache.yaml -n apache
+```
+
+ãããã€ã¡ã³ããäœæãããããšã確èªããŸãã
+
+``` bash
+kubectl get statefulset -n apache
+```
+
+{{% notice title="ã¯ãŒã¯ã·ã§ããã®è³ªå" style="tip" icon="question" %}}
+**Apache web servers (OTel) Navigator** ã§ã¯ãApache ã€ã³ã¹ã¿ã³ã¹ã«é¢ããã©ã®ãããªã¡ããªã¯ã¹ãã¬ããŒããããŠããŸããïŒ
+{{% /notice %}}
+
+{{% notice title="ã¯ãŒã¯ã·ã§ããã®è³ªå" style="tip" icon="question" %}}
+Log Observer ã䜿çšããŠãPHP/Apache ãããã€ã¡ã³ãã®åé¡ç¹ã¯äœã§ããïŒ
+
+**ãã³ã:** ãã£ã«ã¿ãŒã次ã®ããã«èª¿æŽããŠãã ãã: `k8s.namespace.name = apache` ããã³ `k8s.cluster.name = `ã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/infrastructure/2-hpa/5-fix-apache.md b/content/ja/ninja-workshops/infrastructure/2-hpa/5-fix-apache.md
new file mode 100644
index 0000000000..0ba967ee4f
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/2-hpa/5-fix-apache.md
@@ -0,0 +1,130 @@
+---
+title: Fix PHP/Apache Issue
+linkTitle: 5. Fix PHP/Apache Issue
+weight: 5
+---
+## 1. Kubernetes ãªãœãŒã¹
+
+ç¹ã«æ¬çªç°å¢ã® Kubernetes ã¯ã©ã¹ã¿ãŒã§ã¯ãCPU ãšã¡ã¢ãªã¯è²ŽéãªãªãœãŒã¹ãšã¿ãªãããŸããã¯ã©ã¹ã¿ãŒéçšè
ã¯éåžžãPod ããµãŒãã¹ããããã€æã«å¿
èŠãšãã CPU ãšã¡ã¢ãªã®éãæå®ããããæ±ããŸããããã«ãããã¯ã©ã¹ã¿ãŒã¯ã©ã® Node ã«ãœãªã¥ãŒã·ã§ã³ãé
眮ããããèªåçã«ç®¡çã§ããŸãã
+
+ãããå®çŸããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã Pod ã®ãããã€ã¡ã³ãã« Resource ã»ã¯ã·ã§ã³ãèšè¿°ããŸãã
+
+**äŸ:**
+
+``` yaml
+resources:
+ limits: # Maximum amount of CPU & memory for peek use
+ cpu: "8" # Maximum of 8 cores of CPU allowed at for peek use
+ memory: "8Mi" # Maximum allowed 8Mb of memory
+ requests: # Request are the expected amount of CPU & memory for normal use
+ cpu: "6" # Requesting 4 cores of a CPU
+ memory: "4Mi" # Requesting 4Mb of memory
+```
+
+詳现ã¯ãã¡ããåç
§ããŠãã ãã: [**Resource Management for Pods and Containers**](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
+
+ã¢ããªã±ãŒã·ã§ã³ã Pod ããããã€ã¡ã³ãã«èšå®ãããå¶éãè¶
ããå ŽåãKubernetes ã¯ä»ã®ã¢ããªã±ãŒã·ã§ã³ãä¿è·ããããã« Pod ã忢ããŠåèµ·åããŸãã
+
+ãã 1 ã€ééããã·ããªãªã¯ãNode ã«ååãªã¡ã¢ãªã CPU ããªãå Žåã§ãããã®å Žåãã¯ã©ã¹ã¿ãŒã¯ããå€ãã®ç©ºããããå¥ã® Node ã« Pod ãåã¹ã±ãžã¥ãŒã«ããããšããŸãã
+
+ããã倱æããå ŽåããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®ãããã€æã«ååãªç©ºãããªãå Žåãã¯ã©ã¹ã¿ãŒã¯ã¯ãŒã¯ããŒã/ãããã€ã¡ã³ããã¹ã±ãžã¥ãŒã«åŸ
ã¡ã¢ãŒãã«ããå©çšå¯èœãª Node ã®ããããã«ãèšå®ãããå¶éã«åŸã£ãŠ Pod ããããã€ã§ããååãªç©ºãã確ä¿ããããŸã§åŸ
æ©ããŸãã
+
+## 2. PHP/Apache ãããã€ã¡ã³ãã®ä¿®æ£
+
+{{% notice title="Workshop Question" style="tip" icon="question" %}}
+
+éå§ããåã«ãPHP/Apache ãããã€ã¡ã³ãã®çŸåšã®ç¶æ
ã確èªããŸãããã**Alerts & Detectors** ã®äžã§ãã©ã® Detector ãçºç«ããŠããŸãã? ãã®æ
å ±ã¯ä»ã«ã©ãã§ç¢ºèªã§ããŸãã?
+
+{{% /notice %}}
+
+PHP/Apache ã® StatefulSet ãä¿®æ£ããã«ã¯ã次ã®ã³ãã³ãã§ `~/workshop/k3s/php-apache.yaml` ãç·šéã㊠CPU ãªãœãŒã¹ãæžãããŸãã
+
+``` bash
+vim ~/workshop/k3s/php-apache.yaml
+```
+
+resources ã»ã¯ã·ã§ã³ãèŠã€ããŠãCPU ã® limits ã **1** ã«ãCPU ã® requests ã **0.5** ã«æžãããŸãã
+
+``` yaml
+resources:
+ limits:
+ cpu: "1"
+ memory: "8Mi"
+ requests:
+ cpu: "0.5"
+ memory: "4Mi"
+```
+
+倿Žãä¿åããŸãã(ãã³ã: `Esc` ã®åŸã« `:wq!` ã§å€æŽãä¿åããŸã)
+
+次ã«ãæ¢åã® StatefulSet ãåé€ããŠåäœæããå¿
èŠããããŸããStatefulSet ã¯ã€ãã¥ãŒã¿ãã«ã§ãããããæ¢åã®ãã®ãåé€ããæ°ãã倿Žãåæ ããŠåäœæããå¿
èŠããããŸãã
+
+``` bash
+kubectl delete statefulset php-apache -n apache
+```
+
+ããã§ã¯ã倿Žããããã€ããŸãã
+
+``` bash
+kubectl apply -f ~/workshop/k3s/php-apache.yaml -n apache
+```
+
+## 3. 倿Žã®æ€èšŒ
+
+次ã®ã³ãã³ããå®è¡ããŠã倿Žãé©çšãããããšãæ€èšŒã§ããŸãã
+
+``` bash
+kubectl describe statefulset php-apache -n apache
+```
+
+Splunk Observability Cloud ã§ Pod ã皌åããŠããããšã確èªããŸãã
+
+{{% notice title="Workshop Question" style="tip" icon="question" %}}
+**Apache Web Servers** ããã·ã¥ããŒãã«ããŒã¿ã衚瀺ãããŠããŸãã?
+
+**ãã³ã:** ãã£ã«ã¿ãŒãšæéç¯å²ã䜿ã£ãŠããŒã¿ãçµã蟌ãããšãå¿ããªãã§ãã ããã
+{{% /notice %}}
+
+Apache Web ãµãŒããŒã® Navigator ããã·ã¥ããŒããæ°åéã¢ãã¿ãªã³ã°ããŸãã
+
+{{% notice title="Workshop Question" style="tip" icon="question" %}}
+
+# Hosts reporting ãã£ãŒãã§ã¯äœãèµ·ãã£ãŠããŸãã?
+
+{{% /notice %}}
+
+## 4. ã¡ã¢ãªåé¡ã®ä¿®æ£
+
+Apache ããã·ã¥ããŒãã«æ»ããšãã¡ããªã¯ã¹ãå±ããªããªã£ãŠããããšã«æ°ã¥ãã§ããããå¥ã®ãªãœãŒã¹åé¡ãçºçããŠãããä»åã¯ã¡ã¢ãªäžè¶³ã§ããæ¬¡ã®ç»åã®ããã« StatefulSet ãç·šéããŠã¡ã¢ãªãå¢ãããŸãããã
+
+``` bash
+kubectl edit statefulset php-apache -n apache
+```
+
+``` yaml
+resources:
+ limits:
+ cpu: "1"
+ memory: 16Mi
+ requests:
+ cpu: 500m
+ memory: 12Mi
+```
+
+倿Žãä¿åããŸãã
+
+{{% notice title="Hint" style="info" icon="exclamation" %}}
+`kubectl edit` 㯠`vi` ãšãã£ã¿ãŒã§ã³ã³ãã³ããéããŸãã`Esc` ã®åŸã« `:wq!` ãå
¥åããŠå€æŽãä¿åããŠãã ããã
+{{% /notice %}}
+
+StatefulSet ã¯ã€ãã¥ãŒã¿ãã«ã§ãããããæ¢åã® Pod ãåé€ããæ°ãã倿Žãåæ ã㊠StatefulSet ãåäœæããããã«ããŸãã
+
+``` bash
+kubectl delete pod php-apache-0 -n apache
+```
+
+次ã®ã³ãã³ããå®è¡ããŠã倿Žãé©çšãããããšãæ€èšŒããŸãã
+
+``` bash
+kubectl describe statefulset php-apache -n apache
+```
diff --git a/content/ja/ninja-workshops/infrastructure/2-hpa/6-deploy-loadgen.md b/content/ja/ninja-workshops/infrastructure/2-hpa/6-deploy-loadgen.md
new file mode 100644
index 0000000000..5854add210
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/2-hpa/6-deploy-loadgen.md
@@ -0,0 +1,88 @@
+---
+title: è² è·çæããŒã«ã®ãããã€
+linkTitle: 6. è² è·çæããŒã«ã®ãããã€
+weight: 6
+---
+
+ããã§ã¯ `php-apache` Pod ã«å¯ŸããŠè² è·ããããŠã¿ãŸãããããããè¡ãã«ã¯ãã¯ã©ã€ã¢ã³ããšããŠåäœããå¥ã® Pod ãèµ·åããå¿
èŠããããŸããã¯ã©ã€ã¢ã³ã Pod å
ã®ã³ã³ããã¯ç¡éã«ãŒãã§åäœãã`php-apache` ãµãŒãã¹ã«å¯Ÿã㊠HTTP GET ãªã¯ãšã¹ããéä¿¡ãç¶ããŸãã
+
+## 1. loadgen YAML ã®ç¢ºèª
+
+YAML ãã¡ã€ã« `~/workshop/k3s/loadgen.yaml` ã確èªãã以äžã®ã³ãã³ãã§å
å®¹ãæ€èšŒããŸãã
+
+``` bash
+cat ~/workshop/k3s/loadgen.yaml
+```
+
+ãã®ãã¡ã€ã«ã«ã¯è² è·çæããŒã«ã®èšå®ãå«ãŸããŠãããè² è·çæã€ã¡ãŒãžã®ã¬ããªã«ã 2 ã€æã€æ°ãã ReplicaSet ãäœæããŸãã
+
+``` yaml
+apiVersion: apps/v1
+kind: ReplicaSet
+metadata:
+ name: loadgen
+ labels:
+ app: loadgen
+spec:
+ replicas: 2
+ selector:
+ matchLabels:
+ app: loadgen
+ template:
+ metadata:
+ name: loadgen
+ labels:
+ app: loadgen
+ spec:
+ containers:
+ - name: infinite-calls
+ image: busybox
+ command:
+ - /bin/sh
+ - -c
+ - "while true; do wget -q -O- http://php-apache-svc.apache.svc.cluster.local; done"
+```
+
+## 2. æ°ãã namespace ãäœæãã
+
+``` text
+kubectl create namespace loadgen
+```
+
+## 3. loadgen YAML ããããã€ãã
+
+``` text
+kubectl apply -f ~/workshop/k3s/loadgen.yaml --namespace loadgen
+```
+
+è² è·çæããŒã«ããããã€ãããšã`loadgen` namespace ã§ Pod ã皌åããŠããæ§åã確èªã§ããŸãããããŸã§ãšåæ§ã®ã³ãã³ãã䜿ããã³ãã³ãã©ã€ã³ãã Pod ã®ã¹ããŒã¿ã¹ã確èªããŠãã ããã
+
+{{% notice title="ã¯ãŒã¯ã·ã§ããã®èšå" style="tip" icon="question" %}}
+Apache Navigator ã®ã©ã®ã¡ããªã¯ã¹ã倧å¹
ã«å¢å ããã§ããããïŒ
+{{% /notice %}}
+
+## 4. è² è·çæããŒã«ãã¹ã±ãŒã«ãã
+
+ReplicaSet ã¯ãPod ã®è€æ°ã€ã³ã¹ã¿ã³ã¹ã皌åãããæå®ãããæ°ã® Pod ãäžå®ã«ä¿ã€ããã»ã¹ã§ãããã®ç®çã¯ãã¯ã©ã¹ã¿ãŒå
ã§æå®ãããæ°ã® Pod ã€ã³ã¹ã¿ã³ã¹ãåžžã«çšŒåãããããšã§ãPod ãé害ãèµ·ããããã¢ã¯ã»ã¹ã§ããªããªã£ããããéã«ãŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ãžã¢ã¯ã»ã¹ã§ããªããªãããšãé²ãããšã«ãããŸãã
+
+ReplicaSet ã¯ãæ¢åã® Pod ãé害ãèµ·ããããšãã«æ°ããã€ã³ã¹ã¿ã³ã¹ãç«ã¡äžãããã皌åäžã®ã€ã³ã¹ã¿ã³ã¹æ°ãæå®æ°ã«æºããªãå Žåã«ã¹ã±ãŒã«ã¢ããããããåãã©ãã«ãæã€ã€ã³ã¹ã¿ã³ã¹ãå¥éäœæãããå Žåã« Pod ãã¹ã±ãŒã«ããŠã³ãŸãã¯åé€ãããããããšãæ¯æŽããŸããReplicaSet ã¯ãæå®ãããæ°ã® Pod ã¬ããªã«ãç¶ç¶çã«çšŒåããŠããããšãä¿èšŒãããªãœãŒã¹äœ¿çšçã®å¢å æã«ã¯è² è·åæ£ã«ã圹ç«ã¡ãŸãã
+
+以äžã®ã³ãã³ãã§ ReplicaSet ã 4 ã¬ããªã«ã«ã¹ã±ãŒã«ããŠã¿ãŸãããã
+
+``` text
+kubectl scale replicaset/loadgen --replicas 4 -n loadgen
+```
+
+ã³ãã³ãã©ã€ã³ãš Splunk Observability Cloud ã®äž¡æ¹ãããã¬ããªã«ã皌åããŠããããšãæ€èšŒããŠãã ããã
+
+``` text
+kubectl get replicaset loadgen -n loadgen
+```
+
+
+
+{{% notice title="ã¯ãŒã¯ã·ã§ããã®èšå" style="tip" icon="question" %}}
+Apache Navigator ã«ã©ã®ãããªåœ±é¿ãèŠãããã§ããããïŒ
+{{% /notice %}}
+
+è² è·çæããŒã«ã 2ã3 åã»ã©çšŒåãããKubernetes Navigator ãš Apache Navigator ã®ã¡ããªã¯ã¹ãç¶ç¶ããŠèгå¯ããŠãã ããã
diff --git a/content/ja/ninja-workshops/infrastructure/2-hpa/7-setup-hpa.md b/content/ja/ninja-workshops/infrastructure/2-hpa/7-setup-hpa.md
new file mode 100644
index 0000000000..f49ad0044d
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/2-hpa/7-setup-hpa.md
@@ -0,0 +1,92 @@
+---
+title: Setup Horizontal Pod Autoscaling (HPA)
+linkTitle: 7. Setup HPA
+weight: 7
+---
+
+Kubernetes ã«ãããŠãHorizontalPodAutoscaler ã¯ã¯ãŒã¯ããŒããªãœãŒã¹ïŒDeployment ã StatefulSet ãªã©ïŒãèªåçã«æŽæ°ããéèŠã«åãããŠã¯ãŒã¯ããŒããèªåã¹ã±ãŒã«ãããŸãã
+
+æ°Žå¹³ã¹ã±ãŒãªã³ã°ãšã¯ãè² è·ã®å¢å ã«å¯ŸããŠããå€ãã® Pod ããããã€ããããšã§å¯Ÿå¿ããããšãæå³ããŸããããã¯åçŽã¹ã±ãŒãªã³ã°ãšã¯ç°ãªããŸããKubernetes ã«ãããåçŽã¹ã±ãŒãªã³ã°ãšã¯ãã¯ãŒã¯ããŒãçšã«ãã§ã«çšŒåããŠãã Pod ã«ããå€ãã®ãªãœãŒã¹ïŒã¡ã¢ãªã CPU ãªã©ïŒãå²ãåœãŠãããšãæããŸãã
+
+è² è·ãæžå°ããPod ã®æ°ãèšå®ãããæå°å€ãäžåã£ãŠããå ŽåãHorizontalPodAutoscaler ã¯ã¯ãŒã¯ããŒããªãœãŒã¹ïŒDeploymentãStatefulSetããŸãã¯ãã®ä»ã®é¡äŒŒãªãœãŒã¹ïŒã«ã¹ã±ãŒã«ããŠã³ããããæç€ºããŸãã
+
+## 1. Setup HPA
+
+`~/workshop/k3s/hpa.yaml` ãã¡ã€ã«ã確èªããæ¬¡ã®ã³ãã³ãã§å
å®¹ãæ€èšŒããŸã:
+
+``` bash
+cat ~/workshop/k3s/hpa.yaml
+```
+
+ãã®ãã¡ã€ã«ã«ã¯ Horizontal Pod Autoscaler ã®èšå®ãå«ãŸããŠããã`php-apache` ãããã€ã¡ã³ãçšã«æ°ãã HPA ãäœæããŸãã
+
+``` yaml
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+ name: php-apache
+ namespace: apache
+spec:
+ maxReplicas: 4
+ metrics:
+ - type: Resource
+ resource:
+ name: cpu
+ target:
+ averageUtilization: 50
+ type: Utilization
+ - type: Resource
+ resource:
+ name: memory
+ target:
+ averageUtilization: 75
+ type: Utilization
+ minReplicas: 1
+ scaleTargetRef:
+ apiVersion: apps/v1
+ kind: StatefulSet
+ name: php-apache
+```
+
+ãããã€ããããšã`php-apache` ã¯å¹³å CPU 䜿çšçã 50% ãè¶
ãããããããã€ã¡ã³ãã®å¹³åã¡ã¢ãªäœ¿çšçã 75% ãè¶
ããå Žåã«ãæå° 1 Pod ããæå€§ 4 Pod ã®ç¯å²ã§èªåã¹ã±ãŒã«ããŸãã
+
+``` text
+kubectl apply -f ~/workshop/k3s/hpa.yaml
+```
+
+## 2. Validate HPA
+
+``` text
+kubectl get hpa -n apache
+```
+
+Kubernetes ã® **Workloads** ãŸã㯠**Node Detail** ã¿ãã«ç§»åããHPA ã®ãããã€ã¡ã³ãã確èªããŸãã
+
+{{% notice title="Workshop Questions" style="tip" icon="question" %}}
+
+1. 远å ã§äœæããã `php-apache-x` Pod ã¯ããã€ãããŸããïŒ
+2. **Apache web servers (OTel) Navigator** ã®ã©ã®ã¡ããªã¯ã¹ãåã³å€§å¹
ã«å¢å ããŸãããïŒ
+
+{{% /notice %}}
+
+## 3. Increase the HPA replica count
+
+`maxReplicas` ã 8 ã«å¢ãããŸãã
+
+``` bash
+kubectl edit hpa php-apache -n apache
+```
+
+倿Žãä¿åããŸããïŒãã³ã: `Esc` ãæŒããåŸ `:wq!` ã§å€æŽãä¿åããŸãïŒã
+
+{{% notice title="Workshop Questions" style="tip" icon="question" %}}
+
+1. çŸåšããã€ã® Pod ã皌åããŠããŸããïŒ
+
+2. ããã€ã® Pod ã pending ç¶æ
ã§ããïŒ
+
+3. ãªã pending ç¶æ
ãªã®ã§ããïŒ
+
+{{% /notice %}}
+
+**Congratulations!** ã¯ãŒã¯ã·ã§ããã¯å®äºã§ãã
diff --git a/content/ja/ninja-workshops/infrastructure/2-hpa/_index.md b/content/ja/ninja-workshops/infrastructure/2-hpa/_index.md
new file mode 100644
index 0000000000..14e2d9e439
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/2-hpa/_index.md
@@ -0,0 +1,18 @@
+---
+title: Kubernetes ã«ããã Horizontal Pod Autoscaling ã®ã¢ãã¿ãªã³ã°
+linkTitle: Horizontal Pod Autoscaling
+description: Splunk OpenTelemetry Collector ã§ Kubernetes HPA ãã¢ãã¿ãªã³ã°ããã¹ã±ãŒã«ã¢ããããã³ã¹ã±ãŒã«ããŠã³ã®ã€ãã³ãããªã¢ã«ã¿ã€ã ã§èгå¯ããŸãã
+weight: 2
+authors: ["Robert Castley"]
+time: 45 minutes
+aliases:
+ - /ninja-workshops/2-hpa/
+---
+
+ãã®ãã³ãºãªã³ã¯ãŒã¯ã·ã§ããã§ã¯ãSplunk OpenTelemetry Collector ã䜿çšã㊠Kubernetes ã® Horizontal Pod Autoscaling (HPA) ãã¢ãã¿ãªã³ã°ããæ¹æ³ãåŠã³ãŸããPHP/Apache ã¢ããªã±ãŒã·ã§ã³ãšè² è·çæããŒã«ããããã€ããŠèªåã¹ã±ãŒãªã³ã°ã€ãã³ããçºçãããã¹ã±ãŒãªã³ã°ã®ã©ã€ããµã€ã¯ã«å
šäœã芳å¯ããŸãã
+
+å®è·µçãªæŒç¿ãéããŠãOpenTelemetry ReceiverãKubernetes NamespaceãReplicaSetãããã³ HPA ã®ä»çµã¿ãæ¢æ±ããªããããã¹ãŠã Splunk Observability Cloud ã§ã¢ãã¿ãªã³ã°ããŸããKubernetes Navigator ã䜿ãããªããã«ã¹ã¿ã ããã·ã¥ããŒããæ§ç¯ããã¡ããªã¯ã¹ãšã€ãã³ããåæããã¹ã±ãŒãªã³ã°ã¢ã¯ãã£ããã£ã«å¯Ÿããã¢ã©ãŒããéç¥ãã Detector ãèšå®ããŸãã
+
+ãã®ã¯ãŒã¯ã·ã§ããçšã«ãSplunk ã AWS/EC2 äžã« Ubuntu Linux ã€ã³ã¹ã¿ã³ã¹ãäºåæ§æããŠçšæããŠããŸãã
+
+ã¯ãŒã¯ã·ã§ããã§äœ¿çšããã€ã³ã¹ã¿ã³ã¹ãžã®ã¢ã¯ã»ã¹æ¹æ³ã«ã€ããŠã¯ãã¯ãŒã¯ã·ã§ãããªãŒããŒããæäŸããã URL ãã確èªãã ããã
diff --git a/content/ja/ninja-workshops/infrastructure/2-hpa/kubernetes-navigator.md b/content/ja/ninja-workshops/infrastructure/2-hpa/kubernetes-navigator.md
new file mode 100644
index 0000000000..716f40e332
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/2-hpa/kubernetes-navigator.md
@@ -0,0 +1,120 @@
+---
+title: Kubernetes Navigator ã®ãã¢ãŒ
+linkTitle: 2. Kubernetes Navigator
+weight: 2
+hidden: true
+---
+
+## 1. Cluster ãã¥ãŒãš Workload ãã¥ãŒ
+
+Kubernetes Navigator ã§ã¯ãKubernetes ããŒã¿ã衚瀺ããããã® 2 ã€ã®ç°ãªããŠãŒã¹ã±ãŒã¹ãæäŸãããŠããŸãã
+
+* **K8s workloads** ã¯ã¯ãŒã¯ããŒããã€ãŸã *ãããã€ã¡ã³ã* ã«é¢ããæ
å ±ã®æäŸã«ãã©ãŒã«ã¹ããŠããŸãã
+* **K8s nodes** ã¯ã¯ã©ã¹ã¿ãŒãããŒããPodãã³ã³ããã®ããã©ãŒãã³ã¹ã«é¢ããã€ã³ãµã€ãã®æäŸã«ãã©ãŒã«ã¹ããŠããŸãã
+
+æåã«å¿
èŠã«å¿ããŠã©ã¡ããã®ãã¥ãŒãéžæããŸãïŒå¿
èŠã§ããã°ãã¥ãŒãåçã«åãæ¿ããããšãã§ããŸãïŒããã®ã¯ãŒã¯ã·ã§ããã§äž»ã«äœ¿çšããã®ã¯ workload ãã¥ãŒã§ããããã¡ãã«çŠç¹ãåœãŠãŠé²ããŠãããŸãã
+
+### 1.1 K8s ã¯ã©ã¹ã¿ãŒåã®ç¢ºèª
+
+æåã®ã¿ã¹ã¯ã¯ããèªèº«ã®ã¯ã©ã¹ã¿ãŒãç¹å®ããããšã§ããã¯ã©ã¹ã¿ãŒã¯äºåæ§æãããç°å¢å€æ° `INSTANCE` ã«åºã¥ããŠåœåãããŠããŸããã¯ã©ã¹ã¿ãŒåã確èªãããããã¿ãŒããã«ã§ä»¥äžã®ã³ãã³ããå®è¡ããŠãã ããã
+
+``` bash
+echo $INSTANCE-k3s-cluster
+```
+
+ã¯ãŒã¯ã·ã§ããã®åŸåã§ãã£ã«ã¿ãªã³ã°ã«äœ¿çšãããããã¯ã©ã¹ã¿ãŒåãã¡ã¢ããŠãããŠãã ããã
+
+## 2. Workloads ãš Workload Details ãã€ã³
+
+Observability UI ã§ **Infrastructure** ããŒãžã«ç§»åãã**Kubernetes** ãéžæããŸããKubernetes ãµãŒãã¹ã®ã»ããã衚瀺ããããã®äžã® 1 ã€ã **Kubernetes workloads** ãã€ã³ã§ãããã®ãã€ã³ã«ã¯å°ããªã°ã©ãã衚瀺ããããã¹ãŠã®ã¯ãŒã¯ããŒãã§åŠçãããŠããè² è·ã俯ç°çã«ç¢ºèªã§ããŸãã**Kubernetes workloads** ãã€ã³ãã¯ãªãã¯ãããšãworkload ãã¥ãŒã«ç§»åããŸãã
+
+æåã¯ãObservability Cloud Org ã«ã¬ããŒããããŠãããã¹ãŠã®ã¯ã©ã¹ã¿ãŒã®ãã¹ãŠã®ã¯ãŒã¯ããŒãã衚瀺ãããŸããããããã®ã¯ãŒã¯ããŒãã§ã¢ã©ãŒããçºç«ããŠããå Žåã¯ãäžã®ç»åã®å³äžã«ãã€ã©ã€ã衚瀺ãããŸãã
+
+
+
+ããã§ã¯ããã£ã«ã¿ãŒããŒã«ããŒã® **Cluster** ã§ãã£ã«ã¿ãªã³ã°ããŠããèªèº«ã®ã¯ã©ã¹ã¿ãŒãèŠã€ããŸãããã
+
+{{% notice title="Note" style="info" %}}
+æ€çŽ¢ããã¯ã¹ã« `emea-ws-7*` ã®ãããªéšåäžèŽã®ååãå
¥åãããšãçŽ æ©ãã¯ã©ã¹ã¿ãŒãèŠã€ããããšãã§ããŸãã
+
+ãŸããããã©ã«ãã®æéã **-4h** ããçŽè¿ 15 åïŒ**-15m**ïŒã«å€æŽããŠããããšã匷ãããããããŸãã
+{{% /notice %}}
+
+
+
+ããã§ããèªèº«ã®ã¯ã©ã¹ã¿ãŒã®ããŒã¿ã®ã¿ã衚瀺ãããããã«ãªããŸããã
+
+{{% notice title="Workshop Question" style="tip" icon="question" %}}
+ãèªèº«ã®ã¯ã©ã¹ã¿ãŒã§ã¯ãããã€ã®ã¯ãŒã¯ããŒããå®è¡ãããŠãããããã€ã® Namespace ããããŸããïŒ
+{{% /notice %}}
+
+### 2.1 Navigator Selection Chart ã®äœ¿çš
+
+ããã©ã«ãã§ã¯ã**Kubernetes Workloads** ããŒãã«ã¯ `k8s.namespace.name` ã§ã°ã«ãŒãåããã `# Pods Failed` ã§ãã£ã«ã¿ãªã³ã°ãããŠããŸãã`default` namespace ãå±éããŠããã® namespace å
ã®ã¯ãŒã¯ããŒãã確èªããŸãããã
+
+
+
+次ã«ã**Map** ã¢ã€ã³ã³ïŒ**Table** ã¢ã€ã³ã³ã®é£ïŒãéžæããŠãªã¹ããã¥ãŒãããŒãããããã¥ãŒã«å€æŽããŸãããããã®ãªãã·ã§ã³ã倿Žãããšã以äžã®ãããªå¯èŠåïŒãŸãã¯é¡äŒŒã®ãã®ïŒã«ãªããŸãã
+
+
+
+ãã®ãã¥ãŒã§ã¯ãåã¯ãŒã¯ããŒããè²ä»ãã®åè§åœ¢ã«ãªã£ãŠããããšãããããŸãããããã®åè§åœ¢ã¯ãéžæãã **Color by** ãªãã·ã§ã³ã«å¿ããŠè²ãå€åããŸããè²ã¯å¥å
šæ§ã䜿çšç¶æ³ãèŠèŠçã«ç€ºããŠããŸããããŒããããå³äžã® **legend** ã®æå笊ã¢ã€ã³ã³ {{% icon icon="exclamation-circle" %}} ã«ã«ãŒãœã«ãåããããšããã®æå³ã確èªã§ããŸãã
+
+ãã®ç»é¢ã®ãã 1 ã€ã®äŸ¿å©ãªãªãã·ã§ã³ã **Find outliers** ã§ã**Color by** ããããããŠã³ã§éžæãããå
容ã«åºã¥ããŠãã¯ã©ã¹ã¿ãŒã®å±¥æŽåæãæäŸããŸãã
+
+ããã§ã¯ã**Color by** ããããããŠã³ããã¯ã¹ãã **Network transferred (bytes)** ãéžæãã**Find outliers** ãã¯ãªãã¯ããŠããã€ã¢ãã°å
ã® **Scope** ã **Per k8s.namespace.name** ã«ã**Deviation from Median** ã以äžã®ããã«å€æŽããŸãããã
+
+
+
+**Find Outliers** ãã¥ãŒã¯ãã¯ãŒã¯ããŒãïŒãŸãã¯äœ¿çšããŠãã Navigator ã«ãã£ãŠã¯ä»»æã®ãµãŒãã¹ïŒã®äžéšã確èªããäœããå€åãããã©ãããçŽ æ©ãææ¡ããå¿
èŠããããšãã«éåžžã«äŸ¿å©ã§ãã
+
+éåžžãšã¯ç°ãªãåäœïŒå¢å ã»æžå°ã©ã¡ãã®å ŽåãïŒãããŠããã¢ã€ãã ïŒããã§ã¯ã¯ãŒã¯ããŒãïŒãçŽ æ©ãã€ã³ãµã€ããšããŠåŸããããããåé¡ã®çºèŠã容æã«ãªããŸãã
+
+### 2.2 Deployment Overview ãã€ã³
+
+Deployment Overview ãã€ã³ã§ã¯ããããã€ã¡ã³ãã®ã¹ããŒã¿ã¹ãçŽ æ©ãææ¡ã§ããŸãããããã€ã¡ã³ãã® Pod ã PendingãRunningãSucceededãFailedãUnknown ã®ãããã®ç¶æ
ã«ããããäžç®ã§ç¢ºèªã§ããŸãã
+
+
+
+* *Running:* Pod ããããã€ãããå®è¡äžã®ç¶æ
+* *Pending:* ãããã€åŸ
ã¡ã®ç¶æ
+* *Succeeded:* Pod ããããã€ããããžã§ããå®äºããŠçµäºããç¶æ
+* *Failed:* Pod å
ã®ã³ã³ãããå®è¡ãããäœããã®ãšã©ãŒãè¿ããç¶æ
+* *Unknown:* Kubernetes ãæ¢ç¥ã®ãããã®ç¶æ
ãå ±åããŠããªãç¶æ
ïŒäŸãã° Pod ã®èµ·åäžã忢äžãªã©ïŒ
+
+ã¯ãŒã¯ããŒãåããã£ãŒãã§è¡šç€ºããããªãå Žåã¯ãååã«ã«ãŒãœã«ãåããããšå±éã§ããŸãã
+
+ç¹å®ã®ã¯ãŒã¯ããŒãã«ãã£ã«ã¿ãªã³ã°ããã«ã¯ã**k8s.workload.name** åã®ã¯ãŒã¯ããŒãåã®é£ã«ãã 3 ã€ã®ããã **...** ãã¯ãªãã¯ããããããããŠã³ãã **Filter** ãéžæããŸãã
+
+
+
+ããã«ãããéžæããã¯ãŒã¯ããŒãããã£ã«ã¿ãŒã«è¿œå ãããŸãããã®çµæã**default** namespace å
ã®åäžã®ã¯ãŒã¯ããŒãããªã¹ã衚瀺ãããŸãã
+
+
+
+äžèšã®ããŒããããããã**default** namespace å
ã® **splunk-otel-collector-k8s-cluster-receiver** ãèŠã€ããåè§åœ¢ãã¯ãªãã¯ããŠã¯ãŒã¯ããŒãã«é¢ãã詳现æ
å ±ã確èªããŸãã
+
+
+
+{{% notice title="Workshop Question" style="tip" icon="question" %}}
+otel-collector ã® CPU request ãš CPU limit ã®åäœã¯ããããäœã§ããïŒ
+{{% /notice %}}
+
+ãã®æç¹ã§ Pod ã®æ
å ±ãããã«æãäžããŠç¢ºèªããããšãã§ããŸãããããã¯æ¬ã¯ãŒã¯ã·ã§ããã®ç¯å²å€ã§ãã
+
+## 3. Navigator Sidebar
+
+ã¯ãŒã¯ã·ã§ããã®åŸåã§ãã¯ã©ã¹ã¿ãŒã« Apache ãµãŒããŒããããã€ãããšã**Navigator Sidebar** ã«ã¢ã€ã³ã³ã衚瀺ãããŸãã
+
+Kubernetes çšã® Navigator ã§ã¯ãäŸåãããµãŒãã¹ãã³ã³ããã Navigator Sidebar ã§è¿œè·¡ã§ããŸããNavigator Sidebar ãæå€§éã«æŽ»çšããã«ã¯ã`service.name` ãšãã远å dimension ãæ§æããŠã远跡ããããµãŒãã¹ãèšå®ããŸããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ãApache ãç£èŠããããã«ãã³ã¬ã¯ã¿ãŒæ§æå
ã® `extraDimensions` ã以äžã®ããã«ãã§ã«æ§æããŠããŸãã
+
+```yaml
+extraDimensions:
+ service.name: php-apache
+```
+
+äžã®ç»åã®ããã«ãNavigator Sidebar ãå±éãããæ€åºããããµãŒãã¹ãžã®ãªã³ã¯ã远å ãããŸãã
+
+
+
+ããã«ãããNavigator éãç°¡åã«åãæ¿ããããšãã§ããŸããåãããšã Apache ãµãŒããŒã€ã³ã¹ã¿ã³ã¹ã«ãåœãŠã¯ãŸããNavigator Sidebar ãã Kubernetes Navigator ã«ãã°ããæ»ãããšãã§ããŸãã
diff --git a/content/ja/ninja-workshops/infrastructure/_index.md b/content/ja/ninja-workshops/infrastructure/_index.md
new file mode 100644
index 0000000000..7cf7f7bf44
--- /dev/null
+++ b/content/ja/ninja-workshops/infrastructure/_index.md
@@ -0,0 +1,8 @@
+---
+title: Infrastructure & Platform
+linkTitle: Infrastructure
+weight: 3
+description: Kubernetes ã®ã¹ã±ãŒãªã³ã°ã Cisco AI Pods ã®ãããªãã©ãããã©ãŒã åºæã®ã¹ã¿ãã¯ãç£èŠããŸãã
+time: 1 hour 45 minutes
+layout: "hero"
+---
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/1-workshop-overview/_index.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/1-workshop-overview/_index.md
new file mode 100644
index 0000000000..364ea07dae
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/1-workshop-overview/_index.md
@@ -0,0 +1,132 @@
+---
+title: ã¯ãŒã¯ã·ã§ããã®æŠèŠ
+linkTitle: 1. ã¯ãŒã¯ã·ã§ããã®æŠèŠ
+weight: 1
+archetype: chapter
+time: 5 minutes
+description: OBI ã¯ãŒã¯ã·ã§ããã®ç®æšãåææ¡ä»¶ãã¢ãŒããã¯ãã£ã
+---
+
+## ãã®ã¯ãŒã¯ã·ã§ããã§åŠã¶ããš
+
+ãã®ã¯ãŒã¯ã·ã§ãããçµããé ã«ã¯ã次ã®ããšãã§ããããã«ãªããŸãã
+
+- eBPF ã Linux ã«ãŒãã«ã¬ãã«ã§ã®ãŒãã³ãŒãèšè£
ãã©ã®ããã«å®çŸããããçè§£ãã
+- ãã¢ãã¹ãäžã§åäœäžã®ã¢ããªã±ãŒã·ã§ã³ã OBI ãã€ããªã§èšè£
ãã
+- ããªã°ãããïŒè€æ°èšèªïŒã®ãã€ã¯ããµãŒãã¹ã¹ã¿ãã¯ã Docker Compose ã§ãããã€ããã³ã³ãã 1 ã€ã§åæ£ãã¬ãŒã·ã³ã°ã远å ãã
+- åãã¹ã¿ãã¯ã Splunk OTel Collector Helm chart ã䜿ã£ãŠ Kubernetes ã«ãããã€ãããã©ã° 1 ã€ã§ OBI ãæå¹åãã
+- Splunk APM ãããã²ãŒãããŠã忣ãã¬ãŒã¹ããµãŒãã¹ãããããªã¯ãšã¹ããããŒã確èªãã
+
+## åææ¡ä»¶
+
+ã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã«ã¯å¿
èŠãªãã®ããã¹ãŠäºåæ§æãããŠããŸãã
+
+| èŠä»¶ | ã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã§ã®ç¶æ
|
+|---|---|
+| Linux ãã¹ã | æäŸæžã¿ïŒUbuntuïŒ |
+| Python 3.9+ | ã€ã³ã¹ããŒã«æžã¿ |
+| Docker & Docker Compose | ã€ã³ã¹ããŒã«æžã¿ |
+| K3sïŒKubernetesïŒ | ã€ã³ã¹ããŒã«æžã¿ |
+| kubectl | ã€ã³ã¹ããŒã«æžã¿ |
+| Helm 3 | ã€ã³ã¹ããŒã«æžã¿ |
+| ã¯ãŒã¯ã·ã§ããã¢ã»ãã | `~/workshop/obi/` ã«ãããã€æžã¿ |
+
+ããã«æ¬¡ã®ãã®ãå¿
èŠã§ãã
+
+| èŠä»¶ | å
¥ææ¹æ³ |
+|---|---|
+| Splunk Observability Cloud ã¢ã«ãŠã³ã | ã€ã³ã¹ãã©ã¯ã¿ãŒããæäŸãããŸã |
+| **Splunk Access Token**ïŒIngestïŒ | ã€ã³ã¹ã¿ã³ã¹ã§ `env` ãšå
¥åãã`ACCESS_TOKEN` ã確èªããŠãã ãã |
+| **Splunk Realm**ïŒäŸïŒ`us0`ã`us1`ã`eu0`ïŒ | ã€ã³ã¹ã¿ã³ã¹ã§ `env` ãšå
¥åãã`REALM` ã確èªããŠãã ãã |
+| **äžæã®åå**ïŒäŸïŒ`shw-2c74`ïŒ | `env` ã§ `INSTANCE` ã確èªããŠãã ããã`host.name` ãšããŠäœ¿çšãããŸã |
+
+## ã¢ãŒããã¯ãã£
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ããªã¯ãšã¹ããã§ãŒã³ãæ§æãã 3 ã€ã®ã·ã³ãã«ãªãã€ã¯ããµãŒãã¹ã䜿çšããŸãã
+
+```text
+Frontend (Node.js :3000) â Order-Processor (Go :8080) â Payment-Service (Go :8081)
+```
+
+ãããã®ãµãŒãã¹ã«ã¯ **ãªãã¶ãŒãããªãã£ã«é¢ããã³ãŒããäžåãããŸãã**ãOpenTelemetry SDK ããã¬ãŒã·ã³ã°ããããŒãããããªãèšè£
ããããŸãããOBI 㯠eBPF ãããŒãã䜿çšããŠã«ãŒãã«ãããããã®ãµãŒãã¹ãèšè£
ããOpenTelemetry äºæã®ãã¬ãŒã¹ãçæããŠãSplunk OTel Collector ã«éä¿¡ããŸããCollector ã¯ããã Splunk Observability Cloud ã«è»¢éããŸãã
+
+## OBI ãšã¯äœã
+
+[OBIïŒOpenTelemetry eBPF InstrumentationïŒ](https://opentelemetry.io/docs/zero-code/obi/) ã¯ãLinux ã«ãŒãã«ã® eBPF ãããŒãã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ãæµãã HTTP/gRPC ãã©ãã£ãã¯ã芳枬ããã¹ã¿ã³ãã¢ãã³ãšãŒãžã§ã³ãã§ãã**ã«ãŒãã«ãã** ããã»ã¹ã«ã¢ã¿ããããŸããSDK ãã³ãŒã倿Žãåã³ã³ãã€ã«ãäžèŠã§ãããªã¯ãšã¹ãã芳枬ããOpenTelemetry äºæã®ãã¬ãŒã¹ã¹ãã³ãçæããŠãCollector ã«éä¿¡ããŸãã
+
+ããã¯ãSDK ã§èšè£
ããããšã **ã§ããªã** ãŸã㯠**ããããªã** çµç¹ã«ãšã£ãŠäŸ¡å€ããããŸãã
+
+- ãœãŒã¹ã³ãŒãã«ã¢ã¯ã»ã¹ã§ããªãã¬ã¬ã·ãŒã·ã¹ãã
+- åã³ã³ãã€ã«ãéžæè¢ã«ãªãã³ã³ãã€ã«æžã¿èšèª
+- éçºè
ã®æµæïŒãèšè£
ã远å ããæéããªããïŒ
+- ããããã³ãŒã倿Žãå®å
šãªç£æ»ãµã€ã¯ã«ãããªã¬ãŒããŠããŸãèŠå¶äžã®å¶çŽ
+
+## äŸ¡å€ææ¡
+
+å€ãã®çµç¹ã«ã¯ãOpenTelemetry SDK ã§èšè£
ããããšã **ã§ããªã** ãŸã㯠**ããããªã** ã¢ããªã±ãŒã·ã§ã³ããããŸãã
+
+- **ã¬ã¬ã·ãŒã·ã¹ãã **ïŒCOBOL ãã Java ãžã®ç§»è¡ã10 幎åã® .NET Framework ã¢ããªããœãŒã¹ã¢ã¯ã»ã¹ãªãã®ãã³ããŒæäŸãã€ããª
+- **ã³ã³ãã€ã«æžã¿èšèª**ïŒåã³ã³ãã€ã«ãéžæè¢ã«ãªãããŸãã¯ããŒã ãç§»ã£ãŠããŸã£ã GoãRustãC++ ãµãŒãã¹
+- **éçºè
ã®æµæ**ïŒãæéããªãããã¹ããªã³ãã«å
¥ã£ãŠããªãããåããŠããã³ãŒãã¯å€æŽããªãã
+- **èŠå¶äžã®å¶çŽ**ïŒããããã³ãŒã倿Žãå®å
šãªç£æ»ã»èªèšŒãµã€ã¯ã«ãããªã¬ãŒãã
+
+OBI 㯠**ã³ãŒã倿Žãªãã§å®å
šãªåæ£ãã¬ãŒã·ã³ã°** ãæäŸããŸãã
+
+- **SDK çµ±åäžèŠ**ïŒimport ãäŸåé¢ä¿ãã³ã³ãã€ã«æã®å€æŽãäžèŠ
+- **ã¢ããªã±ãŒã·ã§ã³åèµ·åäžèŠ**ïŒOBI 㯠eBPF ãä»ããŠãã§ã«å®è¡äžã®ããã»ã¹ã«ã¢ã¿ããããŸã
+- **èšèªéäŸå**ïŒGoãNode.jsãPythonãJavaãRustãC++ããã®ä» HTTP ãŸã㯠gRPC ã話ããããããã®ã«å¯Ÿå¿
+- **ã³ã³ãã 1 ã€ãŸã㯠Helm ãã©ã° 1 ã€**ïŒcompose ã«è¿œå ããããHelm chart ã§ `obi.enabled=true` ãæå¹åããã ãã§å®äº
+
+## OBI ãšåŸæ¥ã®ãŒãã³ãŒãèšè£
ã®æ¯èŒ
+
+OBI ãšæ¢åã®åŸæ¥åã®èšèªåºæãŒãã³ãŒãèšè£
ïŒJavaãJSã.NETãPythonãGoãPHPïŒã¯ããªãã¶ãŒãããªãã£æŠç¥ã«ãããŠäºããè£å®ãã圹å²ãæãããŸããéããçè§£ããããšã§ãã©ã®ã¢ãããŒãããã€äœ¿ãã¹ãã倿ã§ããŸãã
+
+### 1. èšè£
ã¢ãã«
+
+| èŠ³ç¹ | OBI | åŸæ¥ã®ãŒãã³ãŒãèšè£
|
+|---|---|---|
+| å®è¡ã¢ãã« | ããã»ã¹å€ | ããã»ã¹å
|
+| èšè£
ã¬ã€ã€ãŒ | Linux ã«ãŒãã« / ãããã¯ãŒã¯ | ã¢ããªã±ãŒã·ã§ã³ã©ã³ã¿ã€ã |
+| ã³ãŒã倿Žãå¿
èŠã | äžèŠ | äžèŠãŸãã¯æå°é |
+| ã¢ããªã±ãŒã·ã§ã³åèµ·åãå¿
èŠã | äžèŠ | å¿
èŠ |
+| ã»ãã¥ãªãã£ãããã¡ã€ã« | éé¢ | ã¢ããªã±ãŒã·ã§ã³ãšåãæš©éãããã¡ã€ã« |
+
+### 2. å¯èŠæ§ã®ã¬ãã«
+
+| æ©èœ | OBI | åŸæ¥ã®ãŒãã³ãŒãèšè£
|
+|---|---|---|
+| 忣ãã¬ãŒã·ã³ã° | ãããã³ã«ã¬ãã« | ãã«ãã£ããªã㣠|
+| RED ã¡ããªã¯ã¹ | å¯Ÿå¿ | å¯Ÿå¿ |
+| ã¢ããªã±ãŒã·ã§ã³ãã°ã®åé | éå¯Ÿå¿ | å¯Ÿå¿ |
+| ã¢ããªã±ãŒã·ã§ã³ã®ãã°ãšãã¬ãŒã¹ã®çžé¢ | å¯Ÿå¿ | å¯Ÿå¿ |
+| ã¢ããªã±ãŒã·ã§ã³å
éšïŒãã¬ãŒã ã¯ãŒã¯ã颿°ïŒ | é察å¿ïŒéšåçã䞻㫠GoïŒ | å¯Ÿå¿ |
+| ã«ã¹ã¿ã ã¹ãã³ / ããžãã¹å±æ§ | éå¯Ÿå¿ | å¯Ÿå¿ |
+| ã©ã³ã¿ã€ã ã¡ããªã¯ã¹ïŒJVMãã¡ã¢ãªãã¹ã¬ããïŒ | çŸæç¹ã§ã¯éå¯Ÿå¿ | å¯Ÿå¿ |
+
+### 3. ã«ãã¬ããžãšäºææ§
+
+| ã·ããªãª | OBI | åŸæ¥ã®ãŒãã³ãŒãèšè£
|
+|---|---|---|
+| ãã«ãèšèªç°å¢ | 匷åïŒãããã³ã«ããŒã¹ïŒ | èšèªåºæ |
+| ãµãŒãããŒãã£ã¢ããªã±ãŒã·ã§ã³ | å¯Ÿå¿ | éå®çãcontrib ãªããžã㪠|
+| ã¬ã¬ã·ãŒã·ã¹ãã | å¯Ÿå¿ | éå®ç |
+| ã³ã³ãã€ã«æžã¿èšèªïŒC/C++/RustïŒ | 察å¿ïŒasync ã«äžéšå¶éããïŒ | éå®ç |
+| éåæ / è€éãªãã¬ãŒã ã¯ãŒã¯ | äžéšã®ã±ãŒã¹ã§å¶éãã | 匷å |
+
+### 4. éçšäžã®ç¹æ§
+
+| èŠ³ç¹ | OBI | åŸæ¥ã®ãŒãã³ãŒãèšè£
|
+|---|---|---|
+| ãããã€äœæ¥é | äœïŒããããã€ã³ïŒ | äžïŒãšãŒãžã§ã³ãã¢ã¿ããïŒ |
+| æåã®å¯èŠåãŸã§ã®æé | æ°å | ããé·ãæ°å |
+| ã¢ããªã±ãŒã·ã§ã³ã©ã€ããµã€ã¯ã«ãžã®å€æŽ | ãªã | ãã |
+| ããã©ãŒãã³ã¹ãªãŒããŒããã | æå°éãã€éé¢ | èšèª/ã©ã³ã¿ã€ã ã«ãã |
+
+### 5. Splunk Distro ã®æ©èœ
+
+| æ©èœ | OBI | åŸæ¥ã®ãŒãã³ãŒãèšè£
|
+|---|---|---|
+| Always-on Profiling | é察å¿ïŒå°æ¥ eBPF ãããã¡ã€ã©ãŒãšçµ±åãããå¯èœæ§ããïŒ | ã»ãšãã©ã§ CPUãäžéšã§ã¡ã¢ãªã«å¯Ÿå¿ |
+| ã³ãŒã«ã°ã©ã | éå¯Ÿå¿ | ã»ãšãã©ã§ CPUãäžéšã§ã¡ã¢ãªã«å¯Ÿå¿ |
+| ãã¡ã€ã«ããŒã¹ã®èšå® | 察å¿äºå® | JavaãNode.jsã.NETãPythonïŒå¯Ÿå¿äºå®ïŒ |
+| ããŒã³ãŒãèšè£
| 該åœãªã | å¯Ÿå¿ |
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/1-install-and-run.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/1-install-and-run.md
new file mode 100644
index 0000000000..7a4a56a743
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/1-install-and-run.md
@@ -0,0 +1,90 @@
+---
+title: 1. ã¢ããªã®ã€ã³ã¹ããŒã«ãšå®è¡
+weight: 1
+---
+
+## Python ç°å¢ã®ã»ããã¢ãã
+
+Phase 0 ã®ãã£ã¬ã¯ããªã«ç§»åããä»®æ³ç°å¢ãäœæããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+cd ~/workshop/obi/01-obi-python
+python3 -m venv .venv
+source .venv/bin/activate
+pip3 install -r requirements.txt
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` text
+Collecting flask>=3.0,<4.0
+ Downloading ...
+Successfully installed flask-3.x.x ...
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## Splunk èªèšŒæ
å ±ã®èšå®
+
+èªèšŒæ
å ±ãç°å¢å€æ°ãšããŠãšã¯ã¹ããŒãããŸããåãã¬ãŒã¹ãã«ããŒãå®éã®å€ã«çœ®ãæããŠãã ããã
+
+{{% notice title="Exercise" style="green" icon="running" %}}
+`env` ãå®è¡ãããšãã«ãç°å¢å€æ°ãšã㊠`ACCESS_TOKEN`ã`REALM`ã`INSTANCE` ã®å€ãèšå®ãããŠããå¿
èŠããããŸãã
+
+**èšå®ãããŠããªãå Žåã¯ã次ã®ããã«ãšã¯ã¹ããŒãããŠãã ãã**
+
+``` bash
+export ACCESS_TOKEN=""
+export REALM=""
+export INSTANCE=""
+```
+
+{{% /notice %}}
+
+## ã¢ããªã®å®è¡
+
+Flask ã¢ããªãããã¯ã°ã©ãŠã³ãã§èµ·åããŸãã
+
+``` bash
+python3 app.py &
+```
+
+èµ·åæã«ãã¢ããªã¯ `app.heartbeat` ã¡ããªã¯ã¹ã Splunk Ingest API ã«çŽæ¥ 1 ä»¶éä¿¡ããŸããæ¬¡ã®ãããªåºåã衚瀺ãããŸãã
+
+``` text
+Heartbeat sent to Splunk (200)
+ * Running on http://0.0.0.0:5150
+```
+
+ãŸã Return ããŒãæŒããŠããã³ããã«æ»ããŸãã
+次ã«ããšã³ããã€ã³ãã«ã¢ã¯ã»ã¹ããŠåäœã確èªããŸãã
+
+``` bash
+curl -s http://localhost:5150/hello | jq
+```
+
+次ã®ãããªã¬ã¹ãã³ã¹ãè¿ã£ãŠããã¯ãã§ãã
+
+``` json
+127.0.0.1 - - [04/May/2026 13:10:16] "GET /hello HTTP/1.1" 200 -
+{
+ "host": "",
+ "message": "Hello from the OBI Workshop warm-up!"
+}
+```
+
+## Splunk ã§ã®ç¢ºèª
+
+1. [Splunk Observability Cloud UI](http://app.us1.signalfx.com) ãéãïŒURL ã¯ã¯ãŒã¯ã·ã§ããã®éå¬å Žæã«ãã£ãŠç°ãªããŸãïŒãMetric Finder ã§ `app.heartbeat` ãæ€çŽ¢ããŸãïŒãŸã㯠[ãã£ãŒããäœæ](https://app.us1.signalfx.com/#/chart/new?template=default&filters=sf_metric%3Aapp.heartbeat) ããŸãïŒã
+2. èšå®ããå€ãšäžèŽãã `host.name` 屿§ãæã€ã¡ããªã¯ã¹ã衚瀺ãããŠããã¯ãã§ãã
+
+
+
+{{% notice title="Note" style="info" %}}
+ãã®æç¹ã§ãã¢ããªã¯çšŒåããŠãããSplunk ãããŒã¿ãåä¿¡ã§ããããšã確èªã§ããŸããããããã**ãã¬ãŒã¹ã¯ 1 ä»¶ããããŸãã**ãAPM ã¯ç©ºã®ãŸãŸã§ããã¢ããªã«ã¯èšè£
ã³ãŒãããŸã£ããçµã¿èŸŒãŸããŠããªãããã§ãã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/2-instrument-with-obi.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/2-instrument-with-obi.md
new file mode 100644
index 0000000000..7f472d501e
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/2-instrument-with-obi.md
@@ -0,0 +1,97 @@
+---
+title: 2. OBI ã§ã€ã³ã¹ãã«ã¡ã³ããã
+weight: 2
+---
+
+å®è¡äžã®ãã®ã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠã**ã³ãŒãã 1 è¡ã倿Žããããšãªã** APM ãã¬ãŒã·ã³ã°ã远å ããŸãã
+
+## OBI ã®ããŠã³ããŒã
+
+[GitHub releases page](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/releases) ãããã«ãæžã¿ã® OBI ãã€ããªãããŠã³ããŒãããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+```bash
+VERSION=0.8.0
+ARCH=amd64
+wget "https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/releases/download/v$VERSION/obi-v$VERSION-linux-$ARCH.tar.gz"
+wget "https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/releases/download/v$VERSION/SHA256SUMS"
+sha256sum -c SHA256SUMS --ignore-missing
+tar -xzf "obi-v$VERSION-linux-$ARCH.tar.gz"
+ls -la ./obi
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+```text
+obi-v0.6.0-linux-amd64.tar.gz: OK
+-rwxr-xr-x 1 splunk splunk 112345678 Feb 27 14:47 ./obi
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## OBI ã®å®è¡
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**å¥ã®ã¿ãŒããã«** ã§ã`sudo` ã䜿ã£ãŠ OBI ãå®è¡ããŸãã3 ã€ã®ãã¬ãŒã¹ãã«ããŒããåã®ã¹ãããã§ååŸãã realmãtokenãhostname ã«çœ®ãæããŠãã ããïŒå®äºãŸã§ã« 1 ã 2 åãããå ŽåããããŸãïŒã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+```bash
+cd ~/workshop/obi/01-obi-python
+
+sudo env \
+ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://ingest.${REALM}.signalfx.com:443" \
+ OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="grpc" \
+ OTEL_EXPORTER_OTLP_HEADERS="X-SF-Token=${ACCESS_TOKEN}" \
+ OTEL_SERVICE_NAME="warmup-app" \
+ OTEL_RESOURCE_ATTRIBUTES="deployment.environment=ebpf-bare-app,host.name=${INSTANCE}" \
+ OTEL_EBPF_OPEN_PORT=5150 \
+ ./obi
+```
+
+{{% /tab %}}
+{{% tab title="Look for this in your Output" %}}
+ãã©ãã£ãã¯ãçæããæ¬¡ã®ãããªåºåã衚瀺ãããããšã確èªããŸãã
+
+```text
+...
+time=2026-02-27T19:29:56.296Z level=INFO msg="instrumenting process" component=discover.traceAttacher cmd=/usr/bin/python3.10 pid=245031 ino=7094 type=python service=warmup-app logenricher=false
+...
+time=2026-02-27T19:29:58.278Z level=INFO msg="Launching p.Tracer" component=generic.Tracer
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+{{% /notice %}}
+
+### ãããã®å€æ°ã®åœ¹å²
+
+| 倿° | ç®ç |
+|---|---|
+| `sudo` | eBPF ãããŒãã«ã¯ root / ã«ãŒãã«ã¢ã¯ã»ã¹ãå¿
èŠã§ã |
+| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Splunk ã® OTLP ãã¬ãŒã¹åã蟌ã¿çšã®å®å
šãª URL ã§ããã·ã°ãã«ããšã®ç°å¢å€æ°ã䜿ããšãã® URL ã«ãã®ãŸãŸéä¿¡ãããŸãããããŒã¹å€æ° `OTEL_EXPORTER_OTLP_ENDPOINT` ã䜿ããšæ«å°Ÿã« `/v1/traces` ãä»å ãããSplunk ã®ãã¹ãšäžèŽããªããªããŸã |
+| `OTEL_EXPORTER_OTLP_HEADERS` | Splunk çšã®èªèšŒããããŒã§ã |
+| `OTEL_SERVICE_NAME` | Splunk APM ã«è¡šç€ºããããµãŒãã¹åã§ã |
+| `OTEL_RESOURCE_ATTRIBUTES` | ãã¹ãŠã®ãã¬ãŒã¹ã« `deployment.environment` ãš `host.name` ãèšå®ããèªåã®ããŒã¿ã«çµã蟌ããããã«ããŸã |
+| `OTEL_EBPF_OPEN_PORT` | ããŒã 5150 ã§ãªãã¹ã³ããŠããããã»ã¹ãã€ã³ã¹ãã«ã¡ã³ãããããã« OBI ã«æç€ºããŸã |
+
+{{% notice title="Note" style="info" %}}
+OBI ã®ãã°ã« `failed to upload metrics: 404 Not Found` ã®ãããªèŠåã衚瀺ãããããšããããŸããããã¯æ³å®ãããåäœã§ããSplunk ã® direct ingest ã«ã¯æšæºã® OTLP ã¡ããªã¯ã¹ãšã³ããã€ã³ããååšããªãããã§ãããã¬ãŒã¹ã¯åŒãç¶ãæ£ãããšã¯ã¹ããŒããããŸããPhase 2 ã§ã¯ãcollector ããã¬ãŒã¹ãšã¡ããªã¯ã¹ã®äž¡æ¹ãé©åã«åŠçããŸãã
+{{% /notice %}}
+
+## ãã©ãã£ãã¯ã®çæ
+
+æåã®ã¿ãŒããã«ã«æ»ããããã€ããªã¯ãšã¹ããçæããŸãã
+
+```bash
+for i in $(seq 1 20); do curl -s "http://localhost:5150/hello"; sleep 1; done
+```
+
+***NOTE:*** 404 ãšã©ãŒãçºçããå Žåãcurl ã§æå®ããŠãã URL ã®æ«å°Ÿã« `\` ãä»ããŠããªããå確èªããŠãã ãããäžéšã®ã¿ãŒããã«ã§ã¯ `;` ããšã¹ã±ãŒããããäžæ£ãª URL ã«ãªãããšããããŸãã
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/3-verify-in-splunk.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/3-verify-in-splunk.md
new file mode 100644
index 0000000000..8fa44878e8
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/3-verify-in-splunk.md
@@ -0,0 +1,35 @@
+---
+title: 3. Splunk APM ã§ã®ç¢ºèª
+weight: 3
+---
+
+## Splunk APM ã®ç¢ºèª
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+1. Splunk Observability Cloud ã§ **APM** ã«ç§»åããŸãã
+2. ãµãŒãã¹å `warmup-app` ã§ãã£ã«ã¿ãªã³ã°ããŸãã
+3. `/hello` ãšã³ããã€ã³ãã®ãã¬ãŒã¹ã衚瀺ãããŠããã¯ãã§ãã
+**泚æ: æåã®ãã¬ãŒã¹ãåã蟌ãŸãããŸã§æ°åãããå ŽåããããŸã**
+
+{{% /notice %}}
+
+## äœãèµ·ãã£ãã®ã?
+
+1. Flask ã¢ããªã¯ã裞ãã®ç¶æ
ã§ããªãã¶ãŒãããªãã£ã®ã³ãŒãã¯ãŸã£ããå«ãŸããŠããŸãããhello ãè¿ãããšãšããŒãããŒãã¡ããªã¯ã¹ãéä¿¡ããããšããã§ããŸããã
+2. OBI ã¯ã«ãŒãã«ã®ãããã¯ãŒãã³ã°ã¹ã¿ãã¯ã« eBPF ãããŒããã¢ã¿ããããã¢ããªã®ããã»ã¹ãééãã HTTP ãã©ãã£ãã¯ã芳å¯ããŸããã
+3. OBI 㯠OpenTelemetry äºæã®ãã¬ãŒã¹ã¹ãã³ãçæããSplunk ã«çŽæ¥éä¿¡ããŸããã
+
+**ã«ãŒãã«ããå®è¡äžã®ããã»ã¹ã«åæ£ãã¬ãŒã·ã³ã°ã远å ããããšã«ãªããŸããSDK ãã³ãŒã倿Žãåèµ·åãäžèŠã§ãã**
+
+ãã㯠Phase 1 ãš 2 ã§äœ¿çšããã®ãšåããã¯ãããžãŒã§ããããã¢ããã»ã¹ã§ã¯ãªã Docker ã³ã³ããå
ã§åäœããŸãã
+
+## Phase 0 ã®ã¯ãªãŒã³ã¢ãã
+
+次ã«é²ãåã«ãPython ã¢ããªãš OBI ã忢ããŸãã
+
+``` bash
+kill %1 2>/dev/null
+sudo pkill -f ./obi 2>/dev/null
+deactivate
+```
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/_index.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/_index.md
new file mode 100644
index 0000000000..7a85c2613a
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/2-python-warmup/_index.md
@@ -0,0 +1,16 @@
+---
+title: "Phase 0: Python ãŠã©ãŒã ã¢ãã"
+linkTitle: 2. Python ãŠã©ãŒã ã¢ãã
+weight: 2
+archetype: chapter
+time: 15 minutes
+description: ãã¹ãäžã§çŽ ã® Python ã¢ããªãå®è¡ããã«ã¹ã¿ã ã¡ããªã¯ã¹ã§ Splunk ãžã®æ¥ç¶æ§ã確èªããåŸãDocker ã䜿ããã« OBI ãã€ããªã§ APM ãã¬ãŒã·ã³ã°ã远å ããŸãã
+---
+
+ãã®ãã§ãŒãºã§ã¯ãOBI ãçŽ ã® Linux ããã»ã¹ã«å¯ŸããŠ**ã«ãŒãã«ã¬ãã«**ã§åäœããããšã確èªããŸããã³ã³ããããµã€ãã«ãŒã SDK ãäžèŠã§ãã«ãŒãã«ããã¢ããªãç£èŠãã eBPF ãã€ããªã ãã§åããŸãã
+
+ãã®ã»ã¯ã·ã§ã³ã®çµãããŸã§ã«ã以äžã宿ããŸãã
+
+1. observability ã³ãŒãããŒãã®ç¶æ
ã§åäœãã Python Flask ã¢ããª
+2. Splunk org ãããŒã¿ãåä¿¡ããŠããããšã®èšŒæïŒã«ã¹ã¿ã ã¡ããªã¯ã¹çµç±ïŒ
+3. ã³ãŒã倿ŽãŒãã§ã«ãŒãã«ãã远å ããããã¢ããªã®å®å
šãª APM ãã¬ãŒã¹
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/1-configure-and-start.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/1-configure-and-start.md
new file mode 100644
index 0000000000..7482b87d36
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/1-configure-and-start.md
@@ -0,0 +1,72 @@
+---
+title: 1. ã¹ã¿ãã¯ã®æ§æãšèµ·å
+weight: 1
+---
+
+## Splunk èªèšŒæ
å ±ã®è¿œå
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+**泚æ:** ãèªèº«ã®ç°å¢ã§ `ACCESS_TOKEN`ã`REALM`ã`INSTANCE` ãååŸããŠãã ããããããã config ã«è²Œãä»ããå¿
èŠããããŸãã
+
+``` bash
+echo $ACCESS_TOKEN; echo $REALM; echo $INSTANCE
+```
+
+Phase 1/2 ãã£ã¬ã¯ããªã«ç§»åãããšãã£ã¿ã§ `docker-compose.yaml` ãéããŸãã
+
+``` bash
+cd ~/workshop/obi/02-obi-docker
+vim docker-compose.yaml #or editor of choice
+```
+
+`splunk-otel-collector` ãµãŒãã¹ãèŠã€ãã4 ã€ã®ãã¬ãŒã¹ãã«ããŒå€ãå®éã®èªèšŒæ
å ±ã«çœ®ãæããŸãã
+
+``` yaml
+ environment:
+ SPLUNK_INGEST_TOKEN: "YOUR_ACCESS_TOKEN_HERE" # <-- Your Splunk ingest token
+ SPLUNK_REALM: "YOUR_REALM" # <-- Your realm (us0, us1, eu0, etc.)
+ WORKSHOP_HOST_NAME: "" # <-- the value from INSTANCE when you use `env` on terminal
+ WORKSHOP_ENVIRONMENT: "" # <-- The hostname value above suffixed with `-ebpf`
+```
+
+ãã¡ã€ã«ãä¿åããŸãã
+
+{{% /notice %}}
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+**ãªã `WORKSHOP_HOST_NAME` ãš `WORKSHOP_ENVIRONMENT` ãå¿
èŠãªã®ãïŒ** ã¯ãŒã¯ã·ã§ããã®åå è
å
šå¡ãåã Splunk org ã«ãã¬ã¡ããªãéä¿¡ããŸãããããã®å€ã¯ããã¹ãŠã®ã¡ããªã¯ã¹ãšãã¬ãŒã¹ã« `host.name` ããã³ `deployment.environment` 屿§ãšããŠèšå®ããããããSplunk äžã§**èªåã®**ããŒã¿ã ãããã£ã«ã¿ãªã³ã°ã§ããŸãã
+{{% /notice %}}
+
+## ã¹ã¿ãã¯ã®èµ·å
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+docker-compose up --build -d
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` text
+[+] Building 12.3s (24/24) FINISHED
+[+] Running 6/6
+ â Container 02-obi-docker-payment-service-1 Started
+ â Container 02-obi-docker-order-processor-1 Started
+ â Container 02-obi-docker-frontend-1 Started
+ â Container 02-obi-docker-splunk-otel-collector-1 Started
+ â Container 02-obi-docker-load-generator-1 Started
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ãã®ã³ãã³ããå®äºãããŸã§æ°åããããŸãã3 ã€ã®ã¢ããªã±ãŒã·ã§ã³ã€ã¡ãŒãžããœãŒã¹ãããã«ããã以äžãèµ·åããŸãã
+
+- **frontend** ã [http://localhost:3000](http://localhost:3000) ã§èµ·å
+- **order-processor** ãããŒã 8080 ã§èµ·å
+- **payment-service** ãããŒã 8081 ã§èµ·å
+- **splunk-otel-collector** ãããŒã 4317/4318 ã§ãã¬ã¡ããªãåä¿¡
+- **load-generator** ã 2 ç§ããšã« `/create-order` ãžèªåçã«ãªã¯ãšã¹ããéä¿¡
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/2-generate-traffic.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/2-generate-traffic.md
new file mode 100644
index 0000000000..90760a02ab
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/2-generate-traffic.md
@@ -0,0 +1,47 @@
+---
+title: 2. ãã©ãã£ãã¯ã®çæ
+weight: 2
+---
+
+## ããã³ããšã³ããžã®ã¢ã¯ã»ã¹
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+curl ã䜿ã£ãŠãã©ãã£ãã¯ãçæããŸãã
+
+``` bash
+curl -s http://localhost:3000/create-order | jq
+```
+
+{{% /notice %}}
+
+次ã®ãã㪠JSON ã¬ã¹ãã³ã¹ãè¿ã£ãŠããã¯ãã§ãã
+
+``` json
+{
+ "order": "confirmed",
+ "payment": {
+ "status": "success",
+ "transaction_id": "txn-a1b2c3d4e5f6",
+ "amount": 42
+ }
+}
+```
+
+ãªã¯ãšã¹ã㯠3 ã€ã®ãµãŒãã¹ãã¹ãŠãçµç±ããŸãããããããçŸæç¹ã§ã¯èª°ãããã芳枬ããŠããŸããã
+
+## ã³ãŒãã確èªãã
+
+å°ãæéãåã£ãŠãœãŒã¹ã³ãŒãã調æ»ããèšè£
ãäžåè¡ãããŠããªãããšã確èªããŸãããã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+``` bash
+grep -r "opentelemetry\|otel\|tracing\|instrument" ~/workshop/obi/02-obi-docker/frontend/
+grep -r "opentelemetry\|otel\|tracing\|instrument" ~/workshop/obi/02-obi-docker/order-processor/
+grep -r "opentelemetry\|otel\|tracing\|instrument" ~/workshop/obi/02-obi-docker/payment-service/
+```
+
+{{% /notice %}}
+
+3 ã€ã®ã³ãã³ãã¯ããããäœãè¿ããŸãããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®ã©ãã«ãã**ãã¬ãŒã·ã³ã°ããããŒããSDK ããèšè£
ãäžåååšããŸãã**ã
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/3-check-splunk.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/3-check-splunk.md
new file mode 100644
index 0000000000..94bdf6f0ca
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/3-check-splunk.md
@@ -0,0 +1,30 @@
+---
+title: 3. Splunk ã§ç¢ºèªãã
+weight: 3
+---
+
+## ã€ã³ãã©ã¹ãã©ã¯ãã£ã¡ããªã¯ã¹ã確èªãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+1. [Metric Finder](https://app.us1.signalfx.com/#/metrics) ãéãïŒãŸã㯠[ãã£ãŒããäœæ](https://app.us1.signalfx.com/#/chart/new?template=default&filters=sf_metric%3Aworkshop_heartbeat)ïŒã㊠`workshop_heartbeat` ãæ€çŽ¢ããŸãã
+2. `host.name` ã `WORKSHOP_HOST_NAME` ã®å€ãšäžèŽããã¡ããªã¯ã¹ã衚瀺ãããã¯ãã§ãã
+3. ãã® `host.name` ã§æ€çŽ¢ããŠãcollector ãéä¿¡ããŠããä»ã®ã¡ããªã¯ã¹ïŒCPUãã¡ã¢ãªããã£ã¹ã¯ãªã©ïŒã確èªããŸãã
+
+{{% /notice %}}
+
+## APM ã空ã§ããããšã確èªãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+1. Splunk Observability Cloud ã§ **APM** ã«ç§»åããŸãã
+2. å®çŸ©ãã environmentïŒ`WORKSHOP_ENVIRONMENT`ïŒã§ãã£ã«ã¿ããŸãã
+3. **空** ã«ãªã£ãŠããïŒãŸãã¯ååšããªãïŒã¯ãã§ãããµãŒãã¹ããã¬ãŒã¹ããµãŒãã¹ãããããããŸããã
+
+{{% /notice %}}
+
+collector ã¯ããã©ã«ãã®åäœãšããŠã€ã³ãã©ã¹ãã©ã¯ãã£ã¡ããªã¯ã¹ãéä¿¡ããŠããŸããããã¬ãŒã¹ãçæãããã®ããªãããããšã¯ã¹ããŒããããã¬ãŒã¹ã¯ãããŸããã
+
+{{% notice title="Note" style="info" %}}
+ããããbeforeãã®ç¶æ
ã§ããå®éã®ãªã¯ãšã¹ããåŠçãã 3 ã€ã®ãµãŒãã¹ã皌åããŠããŸãããSplunk APM ã¯ãããã®ãªã¯ãšã¹ãããŸã£ããå¯èŠåã§ããŠããŸãããæ¬¡ã®ã»ã¯ã·ã§ã³ã§ã¯ã**ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã«æãå ããããšãªã** ããã解決ããŸãã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/_index.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/_index.md
new file mode 100644
index 0000000000..51374dc5ac
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/3-docker-before-obi/_index.md
@@ -0,0 +1,14 @@
+---
+title: "Phase 1: Docker (Before OBI)"
+linkTitle: 3. Docker Before OBI
+weight: 3
+archetype: chapter
+time: 15 minutes
+description: Docker Compose ã§ 3 ã€ã®ãã€ã¯ããµãŒãã¹ããããã€ããAPM ã空ã§ããããšã確èªããŸããã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ããªãããããã¬ãŒã¹ã¯äžåååšããŸããã
+---
+
+ãã®ãã§ãŒãºã§ã¯ãããªã°ãããïŒãŸããã®èšèã§ãïŒïŒãªãã€ã¯ããµãŒãã¹ã¹ã¿ãã¯ããããã€ãããBeforeãã®ç¶æ
ã確ç«ããŸããã€ã³ãã©ã¹ãã©ã¯ãã£ã¡ããªã¯ã¹ã¯ Splunk ã«æµããŸãããã¢ããªã±ãŒã·ã§ã³ã«ã¯ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ãäžåãªããããAPM ã«ãã¬ãŒã¹ã¯ 1 ä»¶ããããŸããã
+
+```text
+Frontend (Node.js :3000) â Order-Processor (Go :8080) â Payment-Service (Go :8081)
+```
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/1-add-obi-service.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/1-add-obi-service.md
new file mode 100644
index 0000000000..2c58c2a2d9
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/1-add-obi-service.md
@@ -0,0 +1,80 @@
+---
+title: 1. OBI ãµãŒãã¹ã®è¿œå
+weight: 1
+---
+
+## docker-compose.yaml ã« OBI ã远å ãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+ãšãã£ã¿ã§ `docker-compose.yaml` ãéããŸãã
+
+``` bash
+cd ~/workshop/obi/02-obi-docker
+docker-compose down
+vim docker-compose.yaml #or editor of choice
+```
+
+ãã¡ã€ã«ã®äžçªäžãŸã§ã¹ã¯ããŒã«ãããšã`PHASE 2` ãšããã³ã¡ã³ããããã¯ããããŸãã**ãã®ã³ã¡ã³ãã®çŽäž**ã«ä»¥äžã®ãããã¯ã貌ãä»ããŸãã`frontend:` ã `load-generator:` ãªã©ã®ä»ã®ãµãŒãã¹ãšæãããã«ã**2ã¹ããŒã¹ã®ã€ã³ãã³ã**ãç¶æããŠãã ããã
+
+``` yaml
+ obi:
+ image: otel/ebpf-instrument:main
+ pid: host
+ privileged: true
+ network_mode: host
+ volumes:
+ - ./obi-config.yaml:/config/obi-config.yaml
+ - /sys/fs/cgroup:/sys/fs/cgroup
+ environment:
+ OTEL_EBPF_CONFIG_PATH: /config/obi-config.yaml
+```
+
+**泚æ:** vim ã§è²Œãä»ããéã¯ã貌ãä»ãåã« `:set paste` ãå®è¡ãããšãã©ãŒããããç¶æãããŸãã
+
+ãã¡ã€ã«ãä¿åããŸãã
+
+{{% /notice %}}
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+`obi:` ã 2 ã¹ããŒã¹ã€ã³ãã³ããããŠããããšïŒ`frontend:` ã `load-generator:` ãªã©ãšåãã¬ãã«ïŒã確èªããŠãã ãããã€ã³ãã³ããªãã§äžçªå·Šã«ããå ŽåãDocker Compose 㯠`Additional property obi is not allowed` ãšãããšã©ãŒã§æåŠããŸãã`services:` ãããã¯ã®**å
åŽ**ã«é
眮ããå¿
èŠããããŸãã
+{{% /notice %}}
+
+### åè¡ã®åœ¹å²
+
+| è¡ | å
容 | éèŠæ§ |
+|---|---|---|
+| `image: otel/ebpf-instrument:main` | [OBI ã³ã³ããã€ã¡ãŒãž](https://hub.docker.com/r/otel/ebpf-instrument) | ã¹ã¿ãã¯ã«è¿œå ããã®ã¯ããã ãã§ã |
+| `pid: host` | ãã¹ãã® PID åå空éãå
±æããŸã | OBI ã**ä»ã®**ã³ã³ããã§å®è¡ãããŠããããã»ã¹ãåç
§ã§ããå¿
èŠããããŸã |
+| `privileged: true` | ã«ãŒãã«ã¬ãã«ã®ã¢ã¯ã»ã¹æš©ãä»äžããŸã | eBPF ããã°ã©ã ã¯ã«ãŒãã«é¢æ°ã«ãããŒããã¢ã¿ããããå¿
èŠããããŸã |
+| `network_mode: host` | ãã¹ãã®ãããã¯ãŒã¯ã¹ã¿ãã¯ãå
±æããŸã | ã³ã³ããã¹ãäŒæã«å¿
èŠã§ããOBI ã¯ãããã¯ãŒã¯ã¬ãã«ã§ãã¬ãŒã¹ã³ã³ããã¹ããæ³šå
¥ããŸã |
+| `volumes: ./obi-config.yaml:...` | ãµãŒãã¹ãã£ã¹ã«ããªèšå®ãããŠã³ãããŸã | OBI ã«å¯ŸããŠãèšè£
ããããã»ã¹ãšãã®ååãæå®ããŸã |
+| `volumes: /sys/fs/cgroup:...` | cgroup ãã¡ã€ã«ã·ã¹ãã ãããŠã³ãããŸã | OBI ã¯ããã䜿çšããŠãã³ã³ããå
ã§å®è¡ãããŠããããã»ã¹ãæ€åºããŸã |
+| `OTEL_EBPF_CONFIG_PATH` | ã³ã³ããå
ã®èšå®ãã¡ã€ã«ãæå®ããŸã | OBI èšå®çšã®æšæºç°å¢å€æ°ã§ã |
+
+## OBI ãèµ·åãã
+
+Docker Compose 㯠`obi` ãµãŒãã¹ã®ã¿ãæ°èŠã§ããããšãæ€åºãããããèµ·åããŸããæ¢åã®ãµãŒãã¹ã¯ãã®ãŸãŸå®è¡ããç¶ããŸãã
+
+{{< tabs >}}
+{{% tab title="ã¹ã¯ãªãã" %}}
+
+``` bash
+docker-compose up -d
+```
+
+{{% /tab %}}
+{{% tab title="åºåäŸ" %}}
+
+``` text
+[+] Running 6/6
+ â Container 02-obi-docker-payment-service-1 Running
+ â Container 02-obi-docker-order-processor-1 Running
+ â Container 02-obi-docker-frontend-1 Running
+ â Container 02-obi-docker-splunk-otel-collector-1 Running
+ â Container 02-obi-docker-load-generator-1 Running
+ â Container 02-obi-docker-obi-1 Started
+```
+
+{{% /tab %}}
+{{< /tabs >}}
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/2-understand-config.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/2-understand-config.md
new file mode 100644
index 0000000000..a6b651b850
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/2-understand-config.md
@@ -0,0 +1,45 @@
+---
+title: 2. OBI èšå®ã®çè§£
+weight: 2
+---
+
+## OBI èšå®ãã¡ã€ã«
+
+`obi-config.yaml`ïŒãªããžããªã«æ¢ã«å«ãŸããŠããŸãïŒãéããŠãOBI ãã©ã®ããã«ãµãŒãã¹ãæ€åºããèšè£
ããã®ããçè§£ããŸãããã
+
+``` bash
+cat ~/workshop/obi/02-obi-docker/obi-config.yaml
+```
+
+``` yaml
+discovery:
+ instrument:
+ - name: "frontend"
+ open_ports: 3000
+ - name: "order-processor"
+ open_ports: 8080
+ - name: "payment-service"
+ open_ports: 8081
+
+ebpf:
+ context_propagation: all
+
+otel_traces_export:
+ endpoint: http://localhost:4318
+```
+
+### åã»ã¯ã·ã§ã³ã®åäœ
+
+**`discovery.instrument`** ã¯ãOBI ã«å¯ŸããŠãµãŒãã¹ãèŠã€ããæ¹æ³ãšããã®ãµãŒãã¹ã«ä»ããååãæç€ºããŸãããªãã¹ã³ããŠããããŒãã§ããã»ã¹ããããã³ã°ãã`name` ãçæããããã¬ãŒã¹ã® `service.name` 屿§ã«å²ãåœãŠãŸããããããªãå ŽåãOBI ã¯å®è¡ãã¡ã€ã«ã®ãã¹ïŒäŸ: `/usr/local/bin/order-processor`ïŒããµãŒãã¹åãšããŠäœ¿çšããŸãã
+
+**`context_propagation: all`** ã¯åæ£ãã¬ãŒã·ã³ã°ã®éµãšãªããŸããOBI ã¯ã«ãŒãã«ã¬ãã«ã§éä¿¡ HTTP ãªã¯ãšã¹ãã« `Traceparent` ããããŒã泚å
¥ããŸããããã«ããã`frontend` ã§éå§ããããã¬ãŒã¹ãããããã®ãµãŒãã¹ããã¬ãŒã·ã³ã°ã«ã€ããŠäœãç¥ããªããŠãã`order-processor` ãçµç±ã㊠`payment-service` ãŸã§æ¥ç¶ãããŸãã
+
+**`otel_traces_export.endpoint`** ã¯ãOBI ã«ãã¬ãŒã¹ã®éä¿¡å
ãæç€ºããŸããOBI 㯠`network_mode: host` ã䜿çšããŠããããã`localhost:4318` 㯠compose ãã¡ã€ã«ã§ãã¹ãã«ãããã³ã°ãããŠãã collector ã®ããŒãã«å°éããŸãã
+
+{{% notice title="ãã³ã" style="primary" icon="lightbulb" %}}
+ãã詳现ãªèšå®ãªãã·ã§ã³ã«ã€ããŠã¯ãOBI ã®ããã¥ã¡ã³ããåç
§ããŠãã ããã
+
+* [Service discovery](https://opentelemetry.io/docs/zero-code/obi/configure/service-discovery)
+* [Context propagation](https://opentelemetry.io/docs/zero-code/obi/configure/metrics-traces-attributes/#context-propagation)
+* [Config example](https://opentelemetry.io/docs/zero-code/obi/configure/example/)
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/3-verify-traces.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/3-verify-traces.md
new file mode 100644
index 0000000000..ee102ac7d5
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/3-verify-traces.md
@@ -0,0 +1,69 @@
+---
+title: 3. Splunk ã§ãã¬ãŒã¹ã確èªãã
+weight: 3
+---
+
+## ã¯ã€ãã¯æ€èšŒ
+
+ãŸãããã¹ãŠãæ£åžžã«åäœããŠããããšã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+docker-compose ps
+curl -s localhost:3000/create-order | jq
+docker-compose logs obi | head -30
+```
+
+{{% /tab %}}
+{{% tab title="Expected" %}}
+
+``` text
+# docker-compose ps - all 6 containers running
+# curl - returns JSON order confirmation
+# obi logs - shows "instrumenting process" for each service
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+OBI ã®ãã°ã§ã次ã®ãããªè¡ãæ¢ããŠãã ããã
+
+``` text
+level=INFO msg="instrumenting process" cmd=/usr/local/bin/payment-service service=payment-service
+level=INFO msg="instrumenting process" cmd=/usr/local/bin/order-processor service=order-processor
+level=INFO msg="instrumenting process" cmd=node service=frontend
+```
+
+## Splunk APM ã確èªãã
+
+ãã¬ãŒã¹ãæµãå§ãããŸã§ 30ã60 ç§åŸ
ã£ãŠãããSplunk APM ã確èªããŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+1. **Service Map**: APM ã«ç§»åããç°å¢ã§ãã£ã«ã¿ãªã³ã°ããŸãã`frontend` -> `order-processor` -> `payment-service` ã® 3 ã€ã®ãµãŒãã¹ã衚瀺ãããã¯ãã§ãã
+2. **Traces**: ä»»æã®ãã¬ãŒã¹ãã¯ãªãã¯ããŸãã3 ã€ã®ãµãŒãã¹ãã¹ãŠã«ãããå®å
šãªåæ£ãã¬ãŒã¹ãšãåãããã®ã¿ã€ãã³ã°ã衚瀺ãããŸãã
+3. **ãã§ãŒãº 1 ãšã®æ¯èŒ**: æ°ååãŸã§å®å
šã«ç©ºã ã£ã APM ããã·ã¥ããŒãã«ãå®å
šãªãµãŒãã¹ããããžãŒã衚瀺ãããããã«ãªããŸããã
+
+{{% /notice %}}
+
+**Compose ãã¡ã€ã«ã« 1 ã€ã®ã³ã³ããã远å ããã ãã§ããã¢ããªã±ãŒã·ã§ã³ã³ãŒã㯠1 è¡ã倿ŽããŠããŸãããããã§ããå®å
šãªåæ£ãã¬ãŒã·ã³ã°ãå©çšã§ããããã«ãªããŸããã**
+
+## è§£çäŸ
+
+éäžã§ã€ãŸãããå Žåã¯ããã¹ãŠã®å€æŽãé©çšãããæçµçã® `docker-compose.yaml` ãæ¬¡ã®å Žæã«çšæãããŠããŸãã
+
+``` bash
+cat ~/workshop/obi/02-obi-docker/docker-compose.final.yaml
+```
+
+ãèªèº«ã® `docker-compose.yaml` ãšæ¯èŒããŠãçžéç¹ã確èªããŠãã ããã
+
+## Docker ã®ã¯ãªãŒã³ã¢ãã
+
+Kubernetes ãã§ãŒãºã«é²ãåã«ãDocker ã¹ã¿ãã¯ã忢ããŸãã
+
+``` bash
+docker-compose down
+```
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/_index.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/_index.md
new file mode 100644
index 0000000000..6639d06be2
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/4-docker-obi-magic/_index.md
@@ -0,0 +1,14 @@
+---
+title: "Phase 2: The OBI Magic"
+linkTitle: 4. Docker with OBI
+weight: 4
+archetype: chapter
+time: 20 minutes
+description: Docker Compose ã¹ã¿ãã¯ã« OBI eBPF ãšãŒãžã§ã³ãã远å ããŸããã¢ããªã±ãŒã·ã§ã³ã³ãŒããäžå倿Žããã«ãSplunk APM ã§å®å
šãªåæ£ãã¬ãŒã¹ã衚瀺ãããŸãã
+---
+
+ãã®ãã§ãŒãºã§ã¯ãDocker Compose ã¹ã¿ãã¯ã« 1 ã€ã®ã³ã³ããã远å ããŸããã¢ããªã±ãŒã·ã§ã³ã³ãŒããäžå倿Žããã«ã3 ã€ã®ãµãŒãã¹ãã¹ãŠã«ãããå®å
šãªåæ£ãã¬ãŒã¹ã Splunk APM ã«è¡šç€ºãããŸãã
+
+{{% notice icon="user" style="orange" title="The Key Moment" %}}
+ããã¯ã¯ãŒã¯ã·ã§ããã®äžæ žãšãªããã¢ã§ãã**1 ã€ã®ã³ã³ãã**ã远å ããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã**äžè¡ã倿Žãã**ã«ã**ãã¬ãŒã¹ãŒã**ã®ç¶æ
ãã**å®å
šãªåæ£ãã¬ãŒã·ã³ã°**ãžãšé²ãããšããŠããŸãã
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/1-build-and-load-images.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/1-build-and-load-images.md
new file mode 100644
index 0000000000..e0f77e4035
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/1-build-and-load-images.md
@@ -0,0 +1,125 @@
+---
+title: 1. ã€ã¡ãŒãžã®ãã«ããšããŒã
+weight: 1
+---
+
+## ã¯ã©ã¹ã¿ãŒã®ç¢ºèª
+
+ã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã«ã¯ K3d ãããªã€ã³ã¹ããŒã«ãããŠããŸããåäœããŠããããšã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+kubectl get nodes
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` text
+NAME STATUS ROLES AGE VERSION
+k3d-shw-ece9-cluster-agent-0 Ready 4h6m v1.33.4+k3s1
+k3d-shw-ece9-cluster-agent-1 Ready 4h6m v1.33.4+k3s1
+k3d-shw-ece9-cluster-server-0 Ready control-plane,master 4h6m v1.33.4+k3s1
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## ã¢ããªã±ãŒã·ã§ã³ã€ã¡ãŒãžã®ãã«ã
+
+K8s ãããã§ã¹ãã¯ããŒã«ã«ã§ãã«ãããã€ã¡ãŒãžãåç
§ããŸãã`02-obi-docker/` ã®ãœãŒã¹ãããã«ãããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+cd ~/workshop/obi/03-obi-k8s
+docker build -t obi-workshop-frontend:latest ../02-obi-docker/frontend
+docker build -t obi-workshop-order-processor:latest ../02-obi-docker/order-processor
+docker build -t obi-workshop-payment-service:latest ../02-obi-docker/payment-service
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` text
+[+] Building 8.2s (10/10) FINISHED
+ => => naming to docker.io/library/obi-workshop-frontend:latest
+[+] Building 12.1s (11/11) FINISHED
+ => => naming to docker.io/library/obi-workshop-order-processor:latest
+[+] Building 11.8s (11/11) FINISHED
+ => => naming to docker.io/library/obi-workshop-payment-service:latest
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## ã€ã¡ãŒãžã K3d ã«ã€ã³ããŒã
+
+K3d 㯠Docker ã§ã¯ãªã containerd ã䜿çšãããããã€ã¡ãŒãžãã¯ã©ã¹ã¿ãŒã«ã€ã³ããŒãããå¿
èŠããããŸãããŸããã¯ã©ã¹ã¿ãŒåã確èªããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+k3d cluster list
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` text
+NAME SERVERS AGENTS LOADBALANCER
+shw-ece9-cluster 1/1 2/2 true
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+次ã«ã€ã¡ãŒãžãã€ã³ããŒãããŸãã`CLUSTER_NAME` 㯠`env` ã§å©çšå¯èœã«ãªã£ãŠããã¯ãã§ãããèšå®ãããŠããªãå Žåã¯æ¬¡ãå®è¡ããŠãã ããã
+
+```
+export CLUSTER_NAME=$(k3d cluster list -o json | jq -r '.[].name')
+```
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+k3d image import -c $CLUSTER_NAME \
+ obi-workshop-frontend:latest \
+ obi-workshop-order-processor:latest \
+ obi-workshop-payment-service:latest
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` text
+INFO[0000] Importing image(s) into cluster 'shw-ece9-cluster'
+INFO[0000] Starting new tools node...
+INFO[0000] Starting node 'k3d-shw-ece9-cluster-tools'
+INFO[0000] Saving 3 image(s) from runtime...
+INFO[0003] Importing images into nodes...
+INFO[0003] Importing images from tarball '/k3d/images/k3d-shw-ece9-cluster-images-20260227211818.tar' into node 'k3d-shw-ece9-cluster-server-0'...
+INFO[0003] Importing images from tarball '/k3d/images/k3d-shw-ece9-cluster-images-20260227211818.tar' into node 'k3d-shw-ece9-cluster-agent-1'...
+INFO[0003] Importing images from tarball '/k3d/images/k3d-shw-ece9-cluster-images-20260227211818.tar' into node 'k3d-shw-ece9-cluster-agent-0'...
+INFO[0015] Removing the tarball(s) from image volume...
+INFO[0016] Removing k3d-tools node...
+INFO[0020] Successfully imported image(s)
+INFO[0020] Successfully imported 3 image(s) into 1 cluster(s)
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+{{% notice title="Tip" style="primary" icon="lightbulb" %}}
+äžèšã®ã¹ã¯ãªããã¯ã¯ã©ã¹ã¿ãŒåãèªåæ€åºããŸããè€æ°ã® k3d ã¯ã©ã¹ã¿ãŒãããå Žåã¯ãæç€ºçã«æå®ã§ããŸãã
+
+``` bash
+k3d image import -c shw-ece9-cluster obi-workshop-frontend:latest obi-workshop-order-processor:latest obi-workshop-payment-service:latest
+```
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/2-deploy-baseline.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/2-deploy-baseline.md
new file mode 100644
index 0000000000..9a886e9baf
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/2-deploy-baseline.md
@@ -0,0 +1,145 @@
+---
+title: 2. ããŒã¹ã©ã€ã³ã®ãããã€
+weight: 2
+---
+
+## ã¯ãŒã¯ã·ã§ããã¢ããªã±ãŒã·ã§ã³ã®ãããã€
+
+ã¢ããªã±ãŒã·ã§ã³ã¯ç¬èªã®åå空éã«ãããã€ããŸãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+cd ~/workshop/obi/03-obi-k8s
+kubectl apply -f namespace.yaml
+kubectl apply -f apps.yaml
+kubectl apply -f load-generator.yaml
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` text
+namespace/obi-workshop created
+deployment.apps/frontend created
+service/frontend created
+deployment.apps/order-processor created
+service/order-processor created
+deployment.apps/payment-service created
+service/payment-service created
+deployment.apps/load-generator created
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## Splunk OTel Collector ã®ã€ã³ã¹ããŒã«
+
+[Splunk OTel Collector Helm chart](https://github.com/signalfx/splunk-otel-collector-chart) ã¯ãCollector ã Kubernetes ã«ãããã€ããæ¬çªéçšåãã®æ¹æ³ã§ããCollector ã®ãããã€ã¡ã³ãããµãŒãã¹ãèšå®ãèªåçã«åŠçããŸãã
+
+### Helm ãªããžããªã®è¿œå
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart
+helm repo update
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` text
+"splunk-otel-collector-chart" has been added to your repositories
+Hang tight while we grab the latest from your chart repositories...
+...Successfully got an update from the "splunk-otel-collector-chart" chart repository
+Update Complete. âHappy Helming!â
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+### Collector ã®ã€ã³ã¹ããŒã«
+
+ããã§ã¯ OBI ãæå¹å**ããã«** Splunk OTel Collector ãã€ã³ã¹ããŒã«ããŸããæ¬¡ã®ã¹ãããã§ OBI ãæå¹åããæå¹åååŸã®éãã確èªããŸãã
+
+{{% notice title="Note" style="info" %}}
+ç°å¢å€æ° `ACCESS_TOKEN`ã`REALM`ã`INSTANCE` ã¯ãã¯ãŒã¯ã·ã§ããã€ã³ã¹ã¿ã³ã¹ã«ãããããèšå®ãããŠããŸãã`env` ãå®è¡ããŠååšã確èªããŠãã ããã
+{{% /notice %}}
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+helm -n obi-workshop install splunk-otel-collector \
+ splunk-otel-collector-chart/splunk-otel-collector \
+ --set="splunkObservability.realm=${REALM}" \
+ --set="splunkObservability.accessToken=${ACCESS_TOKEN}" \
+ --set="clusterName=${INSTANCE}-k8s" \
+ --set="environment=${INSTANCE}-ebpf"
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` text
+NAME: splunk-otel-collector
+LAST DEPLOYED: Thu Feb 27 22:30:15 2026
+NAMESPACE: default
+STATUS: deployed
+REVISION: 1
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## ãã¹ãŠã皌åããŠããããšã®ç¢ºèª
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+kubectl get pods -n obi-workshop
+```
+
+{{% /tab %}}
+{{% tab title="Example Output" %}}
+
+``` text
+NAME READY STATUS RESTARTS AGE
+frontend-7d8b9f4c5-x2k4n 1/1 Running 0 30s
+load-generator-5c6d7e8f9-m3j2k 1/1 Running 0 28s
+order-processor-8e9f0a1b2-p4q5r 1/1 Running 0 30s
+payment-service-9f0a1b2c3-s6t7u 1/1 Running 0 30s
+
+NAME READY STATUS RESTARTS AGE
+splunk-otel-collector-agent-abc12 1/1 Running 0 45s
+splunk-otel-collector-cluster-receiver-xyz34 1/1 Running 0 45s
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+## ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ã
+
+NodePort çµç±ã§ããã³ããšã³ãã«ã¢ã¯ã»ã¹ããŸãã
+
+``` bash
+kubectl port-forward -n obi-workshop svc/frontend 30000:3000 &; sleep 5
+```
+
+ããŒããã©ã¯ãŒããå®äºããããcurl ã§ããŒãžã«ã¢ã¯ã»ã¹ã§ããŸãã
+
+``` bash
+curl -s http://localhost:30000/create-order | jq
+```
+
+## APM ã空ã§ããããšã®ç¢ºèª
+
+{{% notice title="Exercise" style="green" icon="running" %}}
+
+Splunk APM ãéããenvironment `-ebpf` ã§ãã£ã«ã¿ãªã³ã°ããŠãã ãããCollector ããã®ã€ã³ãã©ã¡ããªã¯ã¹ã¯è¡šç€ºãããŸããã**æ°èŠã®ã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã¹ã¯ãŸã 衚瀺ãããªã**ã¯ãã§ãããµãŒãã¹ã¯çšŒåããŠããŸããããŸã èšè£
ãããŠããªãç¶æ
ã§ãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/3-add-obi-daemonset.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/3-add-obi-daemonset.md
new file mode 100644
index 0000000000..b2fe74b663
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/3-add-obi-daemonset.md
@@ -0,0 +1,87 @@
+---
+title: 3. Helm ã䜿ã£ãŠ OBI ãæå¹åãã
+weight: 3
+---
+
+ããã§ãã¢ããªã±ãŒã·ã§ã³ã³ãŒããäžå倿Žããããšãªãããã£ã 1 åã® Helm ã¢ããã°ã¬ãŒãã§ã¯ã©ã¹ã¿ãŒå
šäœã«ãã¬ãŒã·ã³ã°ã远å ã§ããŸãã
+
+## OBI ãæå¹ã«ã㊠Collector ãã¢ããã°ã¬ãŒããã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+``` bash
+helm -n obi-workshop upgrade splunk-otel-collector \
+ splunk-otel-collector-chart/splunk-otel-collector \
+ --set="splunkObservability.realm=${REALM}" \
+ --set="splunkObservability.accessToken=${ACCESS_TOKEN}" \
+ --set="clusterName=${INSTANCE}-k8s" \
+ --set="environment=${INSTANCE}-ebpf" \
+ --set="obi.enabled=true"
+```
+
+{{% /notice %}}
+
+倿Žç¹ã¯ãã® `--set="obi.enabled=true"` ãã 1 ã€ã ãã§ããæ®ãã¯ãã¹ãŠ Helm ãã£ãŒããåŠçããŠãããŸãã
+
+- **OBI DaemonSet** ããããã€ããïŒããŒãããšã« 1 ã€ã® PodïŒ
+- RBACïŒServiceAccountãClusterRoleãClusterRoleBindingïŒãæ§æãã
+- OBI ãèªåçã« Collector ã«åãã
+- eBPF ã«å¿
èŠãª Linux capabilities ãä»äžãã
+
+### OBI ã«å¿
èŠãªãã®ã¯ïŒ
+
+eBPF ã¯ã«ãŒãã«ã¬ãã«ã§åäœãããããOBI Pod ã¯ææ Œãããæš©éã§å®è¡ãããŸãã
+
+``` yaml
+hostPID: true # See all processes on the node, including other pods
+hostNetwork: true # Observe and inject trace context into network traffic
+privileged: true # Attach eBPF probes to the kernel
+```
+
+ã¯ã©ã¹ã¿ãŒã®ããªã·ãŒäžãæš©éãçž®å°ããå¿
èŠãããå Žåã¯ã[OBI Security Documentation](https://opentelemetry.io/docs/zero-code/obi/security/) ãåç
§ããŠãã ããã
+
+## OBI ã皌åããŠããããšã確èªãã
+
+{{< tabs >}}
+{{% tab title="Script" %}}
+
+``` bash
+kubectl get pods -n obi-workshop -l app.kubernetes.io/name=obi
+kubectl logs -n obi-workshop -l app.kubernetes.io/name=obi --tail=20
+```
+
+{{% /tab %}}
+{{% tab title="Example Output to look for" %}}
+
+``` text
+NAME READY STATUS RESTARTS AGE
+obi-abc12 1/1 Running 0 45s
+
+...
+level=INFO msg="instrumenting process" service=payment-service
+...
+level=INFO msg="instrumenting process" service=order-processor
+...
+level=INFO msg="instrumenting process" service=frontend
+```
+
+{{% /tab %}}
+{{< /tabs >}}
+
+ãã©ãã£ãã¯ãçæããŸãã
+
+``` bash
+curl -s http://localhost:30000/create-order | jq
+```
+
+## Splunk APM ã確èªãã
+
+ãã¬ãŒã¹ãæµããŠãããŸã§ 30ã60 ç§åŸ
ã¡ãŸãã
+
+{{% notice title="æŒç¿" style="green" icon="running" %}}
+
+1. **Service Map**: `frontend` -> `order-processor` -> `payment-service` ã® 3 ã€ã®ãµãŒãã¹ã衚瀺ãããŠããã¯ãã§ãã
+2. **Traces**: ä»»æã®ãã¬ãŒã¹ãã¯ãªãã¯ããŸãã3 ã€ã®ãµãŒãã¹ãã¹ãŠã«ãŸããã忣ãã¬ãŒã¹å
šäœãšãåãããã®æèŠæéã確èªã§ããŸãã
+3. **Phase 2 ãšåãæµã**: ã³ãŒã倿Žã¯ãŒãããã©ã°ã 1 ã€ä»ãã `helm upgrade` ã 1 åå®è¡ããã ãã§ãã
+
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/4-how-this-scales.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/4-how-this-scales.md
new file mode 100644
index 0000000000..be2385e21a
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/4-how-this-scales.md
@@ -0,0 +1,76 @@
+---
+title: 4. ã¹ã±ãŒãªã³ã°ã®ä»çµã¿
+weight: 4
+---
+
+## ç°å¢ã暪æãããã¿ãŒã³
+
+Phase 0 ã§ã¯ãã€ããªãå®è¡ããŸãããPhase 2 (Docker) ã§ã¯ã³ã³ããã 1 ã€è¿œå ããŸãããPhase 3 (K8s) ã§ã¯ `helm upgrade` ã 1 åå®è¡ããŸããããã¿ãŒã³ã¯åãã§ãã
+
+| ç°å¢ | OBI ã®ããã〠| 倿Žå
容 |
+|---|---|---|
+| ãã¢ãã¹ã | `sudo` çµç±ã®ãã€ã㪠| äœãå€ããªã: OBI ãã«ãŒãã«ããããã»ã¹ãç£èŠ |
+| Docker Compose | ã³ã³ãã 1 〠| `docker-compose.yaml` ã«ãµãŒãã¹ã远å |
+| Kubernetes | Helm chart ã®ãã©ã° | `helm upgrade` ã `--set="obi.enabled=true"` ã§å®è¡ |
+
+[Splunk OTel Collector Helm chart](https://github.com/signalfx/splunk-otel-collector-chart/blob/main/docs/zero-code-ebpf-instrumentation.md) ã¯ãcollector ãš OBI ã®äž¡æ¹ããããã€ããæ¬çªåãã®æ¹æ³ã§ãããããªãèªååã®ããã«ã[OpenTelemetry Operator](https://opentelemetry.io/docs/kubernetes/operator/) ã¯ã¢ãããŒã·ã§ã³ã䜿ã£ãŠ OBI ããµã€ãã«ãŒãšããŠèªåçã«ã€ã³ãžã§ã¯ãã§ããŸãã
+
+## 䟡å€ã®æŽç
+
+å€ãã®çµç¹ã«ã¯ãOpenTelemetry SDK ã§èšè£
**ã§ããªã**ããŸãã¯èšè£
**ããããªã**ã¢ããªã±ãŒã·ã§ã³ããããŸãã
+
+- **ã¬ã¬ã·ãŒã·ã¹ãã **: COBOL ãã Java ãžã®ç§»è¡ã10 幎åã® .NET Framework ã¢ããªããœãŒã¹ã³ãŒãã«ã¢ã¯ã»ã¹ã§ããªããã³ããŒæäŸã®ãã€ããª
+- **ã³ã³ãã€ã«èšèª**: GoãRustãC++ ã®ãµãŒãã¹ã§ãåã³ã³ãã€ã«ãéžæè¢ã«ãªãããããã¯ããŒã ãæ¢ã«ä»ãžç§»ã£ãŠãã
+- **éçºè
ã®æµæ**: ãæéããªãããã¹ããªã³ãã«å
¥ã£ãŠããªãããåããŠããã³ãŒãã¯å€ããªãã
+- **èŠå¶äžã®å¶çŽ**: ã³ãŒãã倿Žãããšç£æ»ã»èªèšŒãµã€ã¯ã«å
šäœãåèµ°ãã
+
+OBI ã¯**ã³ãŒã倿Žãªãã§å®å
šãªåæ£ãã¬ãŒã·ã³ã°**ãæäŸããŸãã
+
+- **SDK çµ±åäžèŠ**: import ãªããäŸåé¢ä¿ãªããã³ã³ãã€ã«æã®å€æŽãªã
+- **ã¢ããªã±ãŒã·ã§ã³ã®åèµ·åäžèŠ**: OBI 㯠eBPF ãä»ããŠæ¢ã«åäœäžã®ããã»ã¹ã«ã¢ã¿ãã
+- **èšèªéäŸå**: HTTP ãŸã㯠gRPC ã話ããã®ãªã GoãNode.jsãPythonãJavaãRustãC++ ã§åäœ
+- **ã³ã³ãã 1 ã€ããŸã㯠Helm ã®ãã©ã° 1 ã€**: compose ã«è¿œå ããã Helm chart ã§ `obi.enabled=true` ãæå¹åããã°å®äº
+
+## ç°å¢ã«ãã£ãŠã¯ obi/eBPF ã®èšå®ã«ã«ã¹ã¿ãã€ãºãå¿
èŠãªå ŽåããããŸã
+
+OpenShift ãªã©ã®ã±ãŒã¹ã§ã¯ãobi ã®èšå®ã«è¿œå æ
å ±ãå¿
èŠã«ãªãããšããããŸãã
+ãã®äŸãæäŸããŠããã Leandro de Oliveira e Ferreira ã«æè¬ããŸãïŒ
+
+```
+# obi-scc.yaml
+apiVersion: security.openshift.io/v1
+kind: SecurityContextConstraints
+metadata:
+ name: splunk-otel-obi-scc
+allowPrivilegedContainer: true
+allowHostPID: true
+allowHostDirVolumePlugin: true
+allowHostNetwork: true
+allowHostPorts: true
+allowPrivilegeEscalation: true
+readOnlyRootFilesystem: false
+runAsUser:
+ type: RunAsAny
+seLinuxContext:
+ type: RunAsAny
+fsGroup:
+ type: RunAsAny
+supplementalGroups:
+ type: RunAsAny
+volumes:
+ - configMap
+ - emptyDir
+ - hostPath
+ - secret
+ - projected
+allowedCapabilities:
+ - BPF
+ - PERFMON
+ - SYS_PTRACE
+ - DAC_READ_SEARCH
+ - NET_ADMIN
+ - NET_RAW
+ - CHECKPOINT_RESTORE
+ - SYS_ADMIN
+users: []
+```
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/_index.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/_index.md
new file mode 100644
index 0000000000..0a0392a937
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/5-kubernetes/_index.md
@@ -0,0 +1,12 @@
+---
+title: "Phase 3: Kubernetes"
+linkTitle: 5. Kubernetes
+weight: 5
+archetype: chapter
+time: 25 minutes
+description: åã3ã€ã®ãµãŒãã¹ãKubernetesã«ãããã€ããOBI DaemonSetã远å ããããšã§ãå®å
šãªåæ£ãã¬ãŒã·ã³ã°ãå®çŸããŸãããŒãã³ãŒãã®ãŸãŸããšã³ã¿ãŒãã©ã€ãºã°ã¬ãŒãã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãå©çšã§ããŸãã
+---
+
+ãã®ãã§ãŒãºã§ã¯ãPhase 2ã§äœ¿çšãããçŽ ã®ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãããã®ãŸãŸæµçšãã[Splunk OTel Collector Helm chart](https://github.com/signalfx/splunk-otel-collector-chart)ã䜿çšããŠKubernetesã«ãããã€ããŸãã
+
+Collectorã¯Helmã§ãããã€ããã`obi.enabled=true`ãšããåäžã®ãã©ã°ã§OBIãæå¹åããããšã§ããã¹ãŠã®ããŒãäžã®ãã¹ãŠã®Podãã€ã³ã¹ãã«ã¡ã³ãããOBI DaemonSetããããã€ãããŸãã
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/6-wrap-up/_index.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/6-wrap-up/_index.md
new file mode 100644
index 0000000000..9b98264b1c
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/6-wrap-up/_index.md
@@ -0,0 +1,75 @@
+---
+title: Wrap Up
+linkTitle: 6. Wrap Up
+weight: 6
+archetype: chapter
+time: 5 minutes
+description: äž»ãªåŠã³ã®ãã€ã³ããã¯ãªãŒã³ã¢ããæé ãã¯ãŒã¯ã·ã§ãããçºå±ãããããã®ã¢ã€ãã¢ã玹ä»ããŸãã
+---
+
+## äž»ãªåŠã³ã®ãã€ã³ã
+
+1. **OBI ã¯ã«ãŒãã«ããèšè£
ããŸãã** SDK ãã³ãŒã倿Žãåã³ã³ãã€ã«ãäžèŠã§ããeBPF ãããŒãããããã¯ãŒã¯ã¬ãã«ã§ HTTP/gRPC ãã©ãã£ãã¯ã芳枬ããŸãã
+
+2. **ã³ã³ããã¹ãäŒæã¯ãããã¯ãŒã¯ã¬ãã«ã§è¡ãããŸãã** OBI ã¯éä¿¡ããã HTTP ãªã¯ãšã¹ãã« `Traceparent` ããããŒã泚å
¥ãããã¬ãŒã·ã³ã°ããŸã£ããèªèããŠããªããµãŒãã¹éã§ããã¬ãŒã¹ãé£çµããŸãã
+
+3. **ãããã€ã¡ã³ããã¿ãŒã³ã¯äžè²«ããŠããŸãã** ãã¢ã¡ã¿ã«ãDockerãKubernetes ã®ãããã®å Žåã§ããã¢ãããŒãã¯åãã§ããã¢ããªãšäžŠã¹ãŠ OBI ãå®è¡ããã³ã¬ã¯ã¿ãŒãæã瀺ãã ãã§ãã
+
+4. **ããã¯çŸå®ã®ãšã³ã¿ãŒãã©ã€ãºã®èª²é¡ã解決ããŸãã** ã¬ã¬ã·ãŒã¢ããªãã³ã³ãã€ã«æžã¿ãã€ããªãèŠå¶äžã®å¶çŽãéçºè
ããã®æµæ OBI ã¯ã³ãŒãã倿Žããã«ãªãã¶ãŒãããªãã£ãå®çŸããŸãã
+
+## ã¯ãªãŒã³ã¢ãã
+
+### Kubernetes
+
+``` bash
+kill %1 2>/dev/null; # kill port forward
+helm -n obi-workshop uninstall splunk-otel-collector
+kubectl delete namespace obi-workshop
+```
+
+### Docker
+
+``` bash
+cd ~/workshop/obi/02-obi-docker
+docker-compose down
+```
+
+### Phase 0 (Python)
+
+``` bash
+sudo pkill -f ./obi 2>/dev/null
+kill %1 2>/dev/null
+```
+
+## ã¯ãŒã¯ã·ã§ãããçºå±ããã
+
+ãã¹ãŠã®ãã§ãŒãºãå®äºããããLLMïŒCursorãCopilotãChatGPT ãªã©ïŒã䜿ã£ãŠã¯ãŒã¯ã·ã§ãããçºå±ãããã¢ã€ãã¢ãããã€ã玹ä»ããŸãã
+
+### æ°ãããšã³ããã€ã³ãã远å ãã
+
+LLM ã«äŸé Œã㊠`order-processor` ã« `GET /order-status/:id` ãšã³ããã€ã³ãã远å ããŠã¿ãŠãã ãããOBI ã¯èšå®å€æŽãªãã§èªåçã«ãã¬ãŒã¹ããŸãïŒãã§ã«ããŒã 8080 ãç£èŠããŠããŸãïŒã
+
+### æ°ãããµãŒãã¹ã远å ãã
+
+LLM ã«äŸé ŒããŠããŒã 8082 ã§åäœãã PythonïŒFlaskïŒã® `inventory-service` ãäœæããŠã¿ãŠãã ããã以äžã®äœæ¥ãå¿
èŠã§ãã
+
+- ãµãŒãã¹ã®ã³ãŒããš Dockerfile ãäœæãã
+- `docker-compose.yaml` ã«è¿œå ãã
+- `obi-config.yaml` ã«ããŒã 8082 ã远å ãã
+
+### ãšã©ãŒã·ããªãªã远å ãã
+
+LLM ã«äŸé Œã㊠`payment-service` ã 20% ã®ç¢ºçã§ã©ã³ãã ã« 500 ã¹ããŒã¿ã¹ã§å€±æããããã«ããŠã¿ãŠãã ããããã㊠`order-processor` ã«ãªãã©ã€ããžãã¯ã远å ããŸããSplunk APM ã«ãšã©ãŒçã衚瀺ãããã®ã確èªããŠãã ããã
+
+### ã¬ã€ãã³ã·ãŒã·ãã¥ã¬ãŒã·ã§ã³ã远å ãã
+
+LLM ã«äŸé Œã㊠`payment-service` ã« 100ã500ms ã®ã©ã³ãã ãªã¬ã€ãã³ã·ãŒã远å ããŠã¿ãŠãã ãããSplunk APM ã®ãµãŒãã¹ãã¥ãŒã«ã¬ã€ãã³ã·ãŒååžã衚瀺ãããã®ã確èªããŠãã ããã
+
+{{% notice title="Note" style="info" %}}
+çºå±ãããéã®æ³šæç¹
+
+- OpenTelemetry SDK 㯠**远å ããªãã§ãã ãã**ããŒãã³ãŒãèšè£
ããããã€ã³ãã§ã
+- ãµãŒãã¹ã¯ Docker ãããã¯ãŒã¯äžã«ä¿ã¡ããµãŒãã¹ééä¿¡ã« `localhost` ã䜿ããªãã§ãã ãã
+- æ°ããããŒãã远å ããé㯠`obi-config.yaml` ãæŽæ°ããŠãã ãã
+- ã³ãŒã倿ŽåŸã¯åãã«ãããŠãã ãã: `docker-compose up --build -d`
+{{% /notice %}}
diff --git a/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/_index.md b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/_index.md
new file mode 100644
index 0000000000..01c6c24d3b
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/16-obi-ebpf/_index.md
@@ -0,0 +1,35 @@
+---
+draft: false
+hidden: false
+title: Zero-Code APM with OBI and eBPF
+linkTitle: Zero-Code APM with OBI
+weight: 16
+archetype: chapter
+time: 90 minutes
+authors: ["Jeremy Hicks"]
+description: Add full distributed tracing to apps with zero code changes using OpenTelemetry eBPF Instrumentation, streaming telemetry to Splunk Observability Cloud.
+aliases:
+ - /ninja-workshops/16-obi-ebpf/
+---
+
+ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ã**OpenTelemetry eBPF Instrumentation (OBI)** ã®åšåãäœéšããŸããOBI 㯠Linux ã«ãŒãã«ããçŽæ¥ãµãŒãã¹ãèšè£
ããããŒãã³ãŒãã®ã¢ããªã±ãŒã·ã§ã³ããã©ãŒãã³ã¹ã¢ãã¿ãªã³ã°ææ³ã§ãã
+
+3 ã€ã®ãã§ãŒãºãé çªã«é²ããããããåã®ãã§ãŒãºã®äžã«ç©ã¿éããŠãããŸãã
+
+- **Phase 0 -- Python Warm-up**: ãã¹ãäžã§çŽ ã® Python ã¢ããªãå®è¡ããŸããOBI ãã€ããªã䜿çšããŠã«ãŒãã«ãã APM ãã¬ãŒã·ã³ã°ã远å ããŸããSDK ãã³ãŒã倿ŽãäžèŠã§ãã
+- **Phase 1 -- Docker (Before OBI)**: 3 ã€ã®å€èšèªãã€ã¯ããµãŒãã¹ (Node.js + Go + Go) ã Docker Compose ã§ãããã€ããŸããAPM ã空ã§ããããšã確èªããŸãã
+- **Phase 2 -- Docker (The Magic)**: OBI ã³ã³ããã 1 ã€è¿œå ããŸãã3 ã€ãã¹ãŠã®ãµãŒãã¹ã§å®å
šãªåæ£ãã¬ãŒã¹ã Splunk APM ã«è¡šç€ºãããŸããã³ãŒã倿Žã¯ãŒãã§ãã
+- **Phase 3 -- Kubernetes**: åããµãŒãã¹ã Splunk OTel Collector Helm chart ã䜿çšã㊠K8s ã«ãããã€ããŸãã1 ã€ã®ãã©ã°ã§ OBI ãæå¹åããŸããåããŒãã³ãŒããã¬ãŒã·ã³ã°ãããšã³ã¿ãŒãã©ã€ãºã°ã¬ãŒãã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã§å®çŸããŸãã
+
+```text
+Phase 0: Python (:5150) ââââ instrumented by OBI binary on host
+
+Phase 1: Frontend (Node.js :3000) â Order-Processor (Go :8080) â Payment-Service (Go :8081)
+ â infrastructure metrics only, APM is empty
+
+Phase 2: Same three services + one OBI container
+ â full distributed traces, zero code changes
+
+Phase 3: Same services on Kubernetes + Splunk OTel Collector Helm chart + obi.enabled=true
+ â same tracing, scales to any cluster
+```
diff --git a/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/1-recording-a-test.md b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/1-recording-a-test.md
new file mode 100644
index 0000000000..69f71b54cf
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/1-recording-a-test.md
@@ -0,0 +1,196 @@
+---
+title: 1.1 ãã¹ãã®èšé²
+weight: 1
+---
+
+ãã®ã¹ãããã§ã¯ãChrome DevTools Recorder ã䜿çšããŠããã¢çš Online Boutique ã¹ãã¢ããã³ãã§ã®äžé£ã®ãŠãŒã¶ãŒãžã£ãŒããŒããã£ããã£ããŸããRecorder ã¯ããªãã®æäœãç£èŠããåã¯ãªãã¯ãããŒå
¥åãããã²ãŒã·ã§ã³ãæ§é åãããã¹ããããšããŠèšé²ããŸããæäœå¯Ÿè±¡ã®åèŠçŽ ã«ã€ããŠã**è€æ°ã®ã»ã¬ã¯ã¿ãŒæŠç¥**ïŒCSSãXPath ãªã©ïŒããã£ããã£ãããããçµæãšããŠåŸããããã¹ãã¯ã»ãšãã©ã®ããã³ããšã³ã倿Žã«å¯ŸããŠå
ç¢ã§ããããã»ã¬ã¯ã¿ãŒãæ©èœããªããªã£ãå Žåã¯ã次ã®ã»ã¬ã¯ã¿ãŒãé çªã«è©Šè¡ãããŸããèšé²ã¯ JSON ãã¡ã€ã«ã«ä¿åããæ¬¡ã®ã¹ãããã§ Splunk Synthetic Monitoring ã«ã€ã³ããŒãããŸãã
+
+## éå§ URL ãéã
+
+ã¯ãŒã¯ã·ã§ããã®éå§ URL ã Chrome ã§éããŸããäžèšã®è©²åœãããªã³ã¯ãã¯ãªãã¯ããŠãæ°ããã¿ãã§ãµã€ããéããŠãã ããã
+
+{{% notice note %}}
+ã¯ãŒã¯ã·ã§ããã®éå§ URL 㯠**EMEA** ãš **AMER/APAC** ã§ç°ãªããŸãããäœãŸãã®ãªãŒãžã§ã³ã«å¿ããæ£ãã URL ã䜿çšããŠãã ããã
+
+{{% tabs %}}
+{{% tab title="EMEA Workshop URL" %}}
+
+[https://online-boutique-eu.splunko11y.com/](https://online-boutique-eu.splunko11y.com/)
+
+{{% /tab %}}
+{{% tab title="AMER/APAC Workshop URL" %}}
+
+[https://online-boutique-us.splunko11y.com/](https://online-boutique-us.splunko11y.com/)
+
+{{% /tab %}}
+{{% /tabs %}}
+{{% /notice %}}
+
+## Chrome DevTools Recorder ãéã
+
+次ã«ãäžèšã§éããæ°ããã¿ãã§ãWindows ã§ã¯ `Ctrl + Shift + I`ãMac ã§ã¯ `Cmd + Option + I` ãæŒã㊠Developer Tools ãéãããããã¬ãã«ã¡ãã¥ãŒãŸã㯠**More tools** ãã©ã€ã¢ãŠãã¡ãã¥ãŒãã **Recorder** ãéžæããŸãã
+
+
+
+{{% notice title="Note" style="info" %}}
+ãµã€ãã®èŠçŽ ã¯ãã¥ãŒããŒãå¹
ã«ãã£ãŠå€åããããšããããŸããèšé²ãéå§ããåã«ãäœæããããã¹ãïŒDesktopãTabletããŸã㯠MobileïŒã«åãããŠãã©ãŠã¶ãŠã£ã³ããŠã®å¹
ãèšå®ããŠãã ãããã¬ã¹ãã³ã·ããµã€ãã§ã¯ããã¬ãŒã¯ãã€ã³ã以äžã«ãªããšã¡ãã¥ãŒé
ç®ããã³ããŒã¬ãŒã¢ã€ã³ã³ã®èåŸã«é ããããšããããããŸããåºããŠã£ã³ããŠã§ãã«ãŒããªã³ã¯ãã¯ãªãã¯ããšèšé²ããŠãããã¹ããã¢ãã€ã«ãã¥ãŒããŒãã§å®è¡ãããå Žåã¯æ£ããåçãããŸããã圹ç«ã€å Žåã¯ãDevTools ã®ãdock sideãã倿ŽããŠå¥ãŠã£ã³ããŠãšããŠãããã¢ãŠããããŠãã ããã
+{{% /notice %}}
+
+## æ°ããèšé²ãäœæãã
+
+DevTools ãŠã£ã³ããŠã§ Recorder ããã«ãéããç¶æ
ã§ã{{% button style="blue" %}}Create a new recording{{% /button %}} ãã¿ã³ãã¯ãªãã¯ããŠéå§ããŸãã
+
+
+
+**Recording Name** ã«ã¯ãèªåã®ã€ãã·ã£ã«ãèšé²åã®ãã¬ãã£ãã¯ã¹ãšããŠäœ¿çšããŸãïŒäŸ: **`` - Online Boutique**ïŒã**Start Recording** ãã¯ãªãã¯ããŠãæäœã®èšé²ãéå§ããŸãã
+
+
+
+èšé²ãéå§ããããããµã€ãã§ä»¥äžã®æäœãå®è¡ããŠãã ããã
+
+- **Vintage Camera Lens** ãã¯ãªãã¯
+- **Add to Cart** ãã¯ãªãã¯
+- **Place Order** ãã¯ãªãã¯
+- Recorder ããã«ã® **End recording** ãã¯ãªãã¯
+
+
+
+## èšé²ã®ãšã¯ã¹ããŒã
+
+**Export** ãã¿ã³ãã¯ãªãã¯ããŸãã
+
+
+
+圢åŒãšã㊠**JSON** ãéžæãã**Save** ãã¯ãªãã¯ããŸãã
+
+
+
+
+
+**ããã§ãšãããããŸãïŒ** Chrome DevTools Recorder ã䜿çšããŠèšé²ãäœæã§ããŸãããæ¬¡ã¯ããã®èšé²ã䜿çšã㊠Splunk Synthetic Monitoring ã§ Real Browser Test ãäœæããŸãã
+
+### JSON ã®äžèº«ã¯å®éã«ã©ããªã£ãŠããã
+
+èšé²ã®å
容ã確èªãããå Žåã¯ãäžã®å±éå¯èœãªã»ã¯ã·ã§ã³ãéããŠãã ãããæ³šç®ãã¹ãç¹ãããã€ãæããŸãã
+
+- åæäœã¯ `type`ïŒ`navigate`ã`click` ãªã©ïŒãš `selectors` ã®ãªã¹ããæã€ãªããžã§ã¯ãã§ããããã¯åé ã§èª¬æããè€æ°æŠç¥ã®ãã©ãŒã«ããã¯ã§ããRecorder ã¯åªå
é äœé ã«ã»ã¬ã¯ã¿ãŒããªã¹ãåãããã¹ãã©ã³ããŒã¯äžèŽãããã®ãèŠã€ãããŸã§åã»ã¬ã¯ã¿ãŒã詊è¡ããŸãã
+- æåã®ã¹ããã㯠`setViewport` ã§ããŠã£ã³ããŠã®å¯žæ³ãåºå®ããŸããããã«ãããã©ã®ãã±ãŒã·ã§ã³ããå®è¡ããŠãããã¹ãã¯åžžã«åããµã€ãºã§åçãããŸãã
+- ã»ãšãã©ã®ã¯ãªãã¯ã¹ãããã«ã¯ã`navigation` ã® URL ãšããŒãž `title` ãå«ã `assertedEvents` ãå«ãŸããŸãããã㯠Recorder ãæåŸ
ãããçµæãåºå®ããæ¹æ³ã§ããã¯ãªãã¯ã `/cart` ãžã®ããã²ãŒã·ã§ã³ãçºçããã*ã¹ã*ãªã®ã«çºçããªãå Žåãã¹ãããã¯å€±æããŸããå®è¡çµæã«ã¯ãææ§ãªã¿ã€ã ã¢ãŠãã§ã¯ãªããæç¢ºãªã¢ãµãŒã·ã§ã³å€±æãšããŠè¡šç€ºãããŸãã
+
+---
+
+{{% expand "Click here to view the JSON file" %}}
+
+```json
+{
+ "title": "RWC - Online Boutique",
+ "steps": [
+ {
+ "type": "setViewport",
+ "width": 1430,
+ "height": 1016,
+ "deviceScaleFactor": 1,
+ "isMobile": false,
+ "hasTouch": false,
+ "isLandscape": false
+ },
+ {
+ "type": "navigate",
+ "url": "https://online-boutique-eu.splunko11y.com/",
+ "assertedEvents": [
+ {
+ "type": "navigation",
+ "url": "https://online-boutique-eu.splunko11y.com/",
+ "title": "Online Boutique"
+ }
+ ]
+ },
+ {
+ "type": "click",
+ "target": "main",
+ "selectors": [
+ [
+ "div:nth-of-type(2) > div:nth-of-type(2) a > div"
+ ],
+ [
+ "xpath//html/body/main/div/div/div[2]/div[2]/div/a/div"
+ ],
+ [
+ "pierce/div:nth-of-type(2) > div:nth-of-type(2) a > div"
+ ]
+ ],
+ "offsetY": 170,
+ "offsetX": 180,
+ "assertedEvents": [
+ {
+ "type": "navigation",
+ "url": "https://online-boutique-eu.splunko11y.com/product/66VCHSJNUP",
+ "title": ""
+ }
+ ]
+ },
+ {
+ "type": "click",
+ "target": "main",
+ "selectors": [
+ [
+ "aria/ADD TO CART"
+ ],
+ [
+ "button"
+ ],
+ [
+ "xpath//html/body/main/div[1]/div/div[2]/div/form/div/button"
+ ],
+ [
+ "pierce/button"
+ ],
+ [
+ "text/Add to Cart"
+ ]
+ ],
+ "offsetY": 35.0078125,
+ "offsetX": 46.4140625,
+ "assertedEvents": [
+ {
+ "type": "navigation",
+ "url": "https://online-boutique-eu.splunko11y.com/cart",
+ "title": ""
+ }
+ ]
+ },
+ {
+ "type": "click",
+ "target": "main",
+ "selectors": [
+ [
+ "aria/PLACE ORDER"
+ ],
+ [
+ "div > div > div.py-3 button"
+ ],
+ [
+ "xpath//html/body/main/div/div/div[4]/div/form/div[4]/button"
+ ],
+ [
+ "pierce/div > div > div.py-3 button"
+ ],
+ [
+ "text/Place order"
+ ]
+ ],
+ "offsetY": 29.8125,
+ "offsetX": 66.8203125,
+ "assertedEvents": [
+ {
+ "type": "navigation",
+ "url": "https://online-boutique-eu.splunko11y.com/cart/checkout",
+ "title": ""
+ }
+ ]
+ }
+ ]
+}
+```
+
+{{% /expand %}}
diff --git a/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/2-create-real-browser-test.md b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/2-create-real-browser-test.md
new file mode 100644
index 0000000000..fe9f67d508
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/2-create-real-browser-test.md
@@ -0,0 +1,20 @@
+---
+title: 1.2 Real Browser Test ã®äœæ
+weight: 2
+---
+
+å
ã»ã©ä¿åããã¬ã³ãŒãã£ã³ã°ã¯ããŒã«ã«ãã¡ã€ã«ã«ãããŸãããã¢ã©ãŒããçºå ±ããããšãããã³ãã³ããåå3æã«å®è¡ããããšããæšæ¥ã®ãã§ãã¯ã¢ãŠããé
ãã£ããã©ãããæããŠãããããšãã§ããŸãããã¬ã³ãŒãã£ã³ã°ãã Splunk Synthetic Monitoring ãã¹ããžç§»è¡ããããšã§ãããããã¹ãŠãå¯èœã«ãªããŸããåããŠãŒã¶ãŒãžã£ãŒããŒããéžæããã¯ã©ãŠããã±ãŒã·ã§ã³ããç¶ç¶çã«å®è¡ããããã®çµæã¯ã¡ããªã¯ã¹ããã°ããã¬ãŒã¹ãšåã Observability Cloud çµç¹ã«æµã蟌ã¿ãŸãã
+
+Splunk Observability Cloud ã§ **Synthetics** ã«ç§»åããŸããã©ã³ãã£ã³ã°ããŒãžã«ã¯ Synthetic Monitoring ã®3çš®é¡ã®ãã§ãã¯ã衚瀺ãããŠããŸã:
+
+- **Browser tests** â æ¬æ¥æ§ç¯ãããå®å
šãª Chromium ã«ããå®ãŠãŒã¶ãŒãžã£ãŒããŒãã§ãã¯ã§ãã
+- **Uptime tests** â 軜éãªããŒãããã³ HTTP ã®å¯çšæ§ãã§ãã¯ã§ãã
+- **API tests** â è€æ°ã¹ãããã® HTTP ãã©ã³ã¶ã¯ã·ã§ã³ãã§ãã¯ã§ã (Part 2 ã§æ§ç¯ããŸã)ã
+
+{{% button style="blue" %}}Add new test{{% /button %}} ãã¯ãªãã¯ããããããããŠã³ãã **Browser test** ãéžæããŸãã
+
+
+
+ç¶ã㊠**Browser test content** èšå®ããŒãžã衚瀺ãããŸããããã§ãå
ã»ã©ãšã¯ã¹ããŒããã JSON ãã€ã³ããŒããããã¹ãã®å®è¡å Žæãšé »åºŠãèšå®ããåã¹ãããã«ååãä»ããŸããããã«ããããªã³ã³ãŒã«ãšã³ãžãã¢ãå®è¡çµæãäžç®ã§èªã¿åããããã«ãªããŸãã
+
+
diff --git a/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/3-import-json.md b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/3-import-json.md
new file mode 100644
index 0000000000..38b32a4abd
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/3-import-json.md
@@ -0,0 +1,26 @@
+---
+title: 1.3 JSONã®ã€ã³ããŒã
+weight: 3
+---
+
+ãã¹ãã®æ§æãéå§ããã«ã¯ãChrome DevTools Recorder ãããšã¯ã¹ããŒããã JSON ãã¡ã€ã«ãã€ã³ããŒãããå¿
èŠããããŸããSplunk Synthetic Monitoring 㯠Recorder ã®ãã€ãã£ã㪠JSON 圢åŒãçŽæ¥çè§£ã§ããããã倿æé ã¯äžèŠã§ããã€ã³ããŒã¿ãŒãèšé²ãããåã¹ããããèªã¿åãã察å¿ãã Synthetic ãã¹ãã¹ããããäœæããã»ã¬ã¯ã¿ãŒããã¥ãŒããŒããã¢ãµãŒããããããã²ãŒã·ã§ã³ã€ãã³ããä¿æããŸãã
+
+{{% button %}}**Import**{{% /button %}} ãã¿ã³ãæå¹åããã«ã¯ããŸããã¹ãã«ååãä»ããå¿
èŠããããŸããèšé²æãšåãåœåèŠåã䜿çšããŠãã ãããã€ãã·ã£ã«ã®åŸã«ãžã£ãŒããŒåãç¶ããŸããäŸãã° **`` - Online Boutique** ã®ããã«ããŸããã€ãã·ã£ã«ãæ¥é èŸãšããŠä»ããããšã§ãå
±æãããçµç¹å
ã§ãã¬ãŒããŒãããŒã ã¡ã³ããŒããäºãã®äœæ¥ãèŠã€ãããããªããŸãã
+
+
+
+{{% button %}}**Import**{{% /button %}} ãã¿ã³ãæå¹ã«ãªã£ããããããã¯ãªãã¯ããChrome DevTools Recorder ãããšã¯ã¹ããŒããã JSON ãã¡ã€ã«ããããããããããã©ãŠãºããŠéžæããŠãã ããã
+
+
+
+JSON ãè§£æããããšãã€ã³ããŒããããã¹ãããæ°ã瀺ãç·è²ã®ç¢ºèªã¡ãã»ãŒãžã衚瀺ãããŸããããã§äºæãããããå°ãªãæ°ã衚瀺ãããå Žåãéåžžã¯èšé²ãããã¢ã¯ã·ã§ã³ã®ããããã Synthetics ã€ã³ããŒã¿ãŒãèªèã§ãã圢åŒã§ã¯ãªãã£ãããšãæå³ããŸãããã®ç¹å®ã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãåèšé²ãããšãéåžžã¯è§£æ±ºããŸãã
+
+{{% button style="blue" %}}Continue to edit steps{{% /button %}} ãã¯ãªãã¯ããŸãã
+
+
+
+**Edit steps** ãã¥ãŒã«ã¯ãã€ã³ããŒããããåã¹ããããé çªã«è¡šç€ºãããã¢ã¯ã·ã§ã³ã¿ã€ããã¿ãŒã²ããã»ã¬ã¯ã¿ãŒãåŸ
æ©æ¡ä»¶ãªã©ã確èªã§ããŸããããããã¹ããããäžŠã¹æ¿ãããã远å ããããåé€ãããã§ããŸãããããã«ã€ããŠã¯åŸã®ã»ã¯ã·ã§ã³ã§æ±ããŸãã
+
+
+
+ã¹ãããèªäœãç·šéããåã«ããŸããã¹ãã®å®è¡æèšå®ãæ§æããŸããããã©ãããå®è¡ããããã©ã®çšåºŠã®é »åºŠã§å®è¡ããããã©ã®ããã€ã¹ã§å®è¡ããããèšå®ããŸãã{{% button style="blue" %}}< Return to test{{% /button %}} ãã¯ãªãã¯ããŠãã ããã
diff --git a/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/4-edit-test-settings.md b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/4-edit-test-settings.md
new file mode 100644
index 0000000000..dbb9a8d5dc
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/4-edit-test-settings.md
@@ -0,0 +1,63 @@
+---
+title: 1.4 èšå®
+weight: 4
+---
+
+ãã®ããŒãžã®ãã¹ãŠã®èšå®ã¯ãã«ãã¬ããžãã³ã¹ããã·ã°ãã«å質ãç£èŠå¯Ÿè±¡ã·ã¹ãã ãžã®è² è·ã®éã®çŸå®çãªãã¬ãŒããªãã«çŽæ¥å¯Ÿå¿ããŠããŸããã¯ãªãã¯ããŠé²ãåã«ãåã³ã³ãããŒã«ãå®éã«äœãå¶åŸ¡ããã®ããå€ãéžã¶éã®çµéšåã確èªããŸãããã
+
+## Name
+
+ãã¹ãã®è¡šç€ºåã§ãUIãã¢ã©ãŒãã¡ãã»ãŒãžããªã³ã¯ãããããã·ã¥ããŒãããã£ãã¯ã¿ãŒã¿ã€ãã«ãªã©ãããããå Žæã§äœ¿çšãããŸããã³ã³ããã¹ããçã蟌ã¿ãŸãããããµãŒãã¹åããžã£ãŒããŒãïŒå
±æçµç¹ã®å Žåã¯ïŒèªåã®ã€ãã·ã£ã«ãå«ããŸããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ **`` - Online Boutique** ãé©åã§ãã
+
+## Locations
+
+Splunk ããã¹ããå®è¡ããã¯ã©ãŠããªãŒãžã§ã³ã§ããäž»èŠãª AWS ãªãŒãžã§ã³å
šäœã«åæ£ãã 50 ãè¶
ãããã±ãŒã·ã§ã³ããéžæã§ããŸãã**ãã±ãŒã·ã§ã³ã®éžæã¯æ³å以äžã«éèŠã§ã**ãè¿ãããã¡ããªã¯ã¹ã¯ããã®ãã±ãŒã·ã§ã³ããèŠã *宿ž¬ã®* ãŠãŒã¶ãŒäœéšã§ããããããã¯ãŒã¯é
å»¶ãTLS ãã³ãã·ã§ã€ã¯æéãå°çç㪠CDN ã«ãŒãã£ã³ã°ããã¹ãŠå«ãŸããŠããããã§ããN. Virginia ãã 800 ms ã§ããŒãããããµã€ãã§ããCDN ããã£ãã·ã¥ããŠããªããã° Mumbai ãã㯠2.4 ç§ãããå¯èœæ§ããããŸãã
+
+ãã¹ããã©ã¯ãã£ã¹: å®éã®ãŠãŒã¶ãŒãããå Žæã«åèŽãããã±ãŒã·ã§ã³ãéžæããŸããç±³åœæ±éšã«é¡§å®¢ããŒã¹ããããEMEA ã«å¥ã®é¡§å®¢ããŒã¹ãããå Žåã¯ãäž¡æ¹ããç£èŠããŸããããã«ãã©ã®ãŠãŒã¶ãŒããã *é ã* ãã±ãŒã·ã§ã³ãå°ãªããšã 1 ã€è¿œå ãïŒäŸ: ç±³åœå°çšè£œåãªã MelbourneïŒãã°ããŒãã«ã«ãŒãã£ã³ã°ã DNS åé¡ã®æ©æèŠæã«ããªã¢ãšããŠäœ¿ããŸãã
+
+æ¬ã¯ãŒã¯ã·ã§ããã§ã¯ã3 倧éžã«ãŸããã 3 ã€ã®ãã±ãŒã·ã§ã³ã䜿çšããŸã:
+
+- **AWS - N. Virginia**
+- **AWS - London**
+- **AWS - Melbourne**
+
+**Locations** ãã£ãŒã«ããã¯ãªãã¯ããããããããŠã³ãããããããéžæããŸãã
+
+
+
+## Device
+
+ç¹å®ã®ããã€ã¹ãããã¡ã€ã«ããšãã¥ã¬ãŒããããã¥ãŒããŒã寞æ³ããŠãŒã¶ãŒãšãŒãžã§ã³ãæååããããŠãã®ããã€ã¹ãè¿äŒŒãã *ã¹ãããã«ããã* CPU ãšãããã¯ãŒã¯ãããã¡ã€ã«ãèšå®ããŸãããã¥ãŒããŒãã¯ããã¹ããã©ã®ãã±ãŒã·ã§ã³ããå®è¡ããããã«é¢ãããäžè²«ããŠããŸãã
+
+ãããéèŠãªçç±: 4à CPU ã¹ããŒããŠã³ã® fast-3G ã¹ãããã« iPhone X ã§ã¯ãã¹ãããã«ãããŠããªããã¹ã¯ããããã¹ãã§ã¯å®å
šã«èŠããªããªãå®ãŠãŒã¶ãŒã®çã¿ãé¡åšåããŸãããŠãŒã¶ãŒã®å€§åãã¢ãã€ã«ãªããã¢ãã€ã«ã§ç£èŠããŸãããã
+
+## Frequency
+
+åãã±ãŒã·ã§ã³ãããã¹ããå®è¡ããé »åºŠã§ããééãçãã»ã©ãªã°ã¬ãã·ã§ã³ãæ©ãæ€ç¥ã§ããŸãããæ¶è²»ãããã£ãã·ãã£ãå¢ãã察象ãµã€ããžã®è² è·ã倧ãããªããŸãããã£ãã¯ã¿ãŒã«æçšãªã·ã°ãã«ãäžããç¯å²ã§ãæãäœãé »åºŠãéžã³ãŸã:
+
+| Frequency | å
žåçãªçšé |
+| --- | --- |
+| 1 min | ãã©ãã£ãã¯ãå€ãåçæ§ã®é«ããµã€ãã®ã¯ãªãã£ã«ã«ãŠãŒã¶ãŒãžã£ãŒã㌠|
+| 5 min | æ¬çªãžã£ãŒããŒã®å€§åã«ãããããã©ã«ãïŒæ¬ã¯ãŒã¯ã·ã§ããã®èšå®ïŒ |
+| 10â15 min | ããªãããã¯ã·ã§ã³ãã¹ããŒãžã³ã°ãåªå
床ã®äœããã㌠|
+| 30â60 min | ããŒã±ãã£ã³ã°ããŒãžã倿Žé »åºŠãäœãéçã³ã³ãã³ã |
+
+ã¢ã©ãŒãã®èšç®ãæãåºããŸãããã5 åééãšããããšã¯ããªã°ã¬ãã·ã§ã³ã *æåã«* æ€ç¥ãããŸã§ **æå€§ 5 å** ãããå¯èœæ§ããããã»ãšãã©ã®ãã£ãã¯ã¿ãŒã¯çºç«ã« 2ã3 åé£ç¶ã®å€±æãå¿
èŠãšããŸãããããã£ãŠ 5 åééã®ãã¹ãã¯ãã€ã³ã·ãã³ãçºçãã 10ã15 åéã¢ã©ãŒããåºããªãããšããããŸãã
+
+## Round-robin
+
+è€æ°ã®ãã±ãŒã·ã§ã³ãéžæããŠããå Žåã**round-robin** ã¯ãã®ã¹ã±ãžã¥ãŒãªã³ã°æ¹æ³ã倿ŽããŸããOffïŒããã©ã«ãïŒã®å Žåãéžæãããã¹ãŠã®ãã±ãŒã·ã§ã³ãæ¯ã€ã³ã¿ãŒãã«ã§å®è¡ãããŸãã3 ãã±ãŒã·ã§ã³ à 5 åããš = 1 æéããã 36 åã®å®è¡ã§ããOn ã®å ŽåãSplunk ã¯ãã±ãŒã·ã§ã³ãããŒããŒã·ã§ã³ããã€ã³ã¿ãŒãã«ããšã« 1 ã€ãå®è¡ããŸãã3 ãã±ãŒã·ã§ã³ à 5 åããš = 1 æéããã 12 åã®å®è¡ã§ãããåå¥ã®ãã±ãŒã·ã§ã³ã®ãµã³ããªã³ã°ã¯ 15 åããšã«ãªããŸãã
+
+ãã¬ãŒããªã: round-robin ã¯å®è¡æ¶è²»ã倧å¹
ã«åæžãã察象ãžã®è² è·ã軜æžããŸããããã±ãŒã·ã§ã³åäœã®ã·ã°ãã«ãåžèåããŸãïŒãã±ãŒã·ã§ã³åºæã®ãªã°ã¬ãã·ã§ã³ãé¡åšåãããŸã§æéãããããŸãïŒãæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ off ã®ãŸãŸã«ããŸãã
+
+## Active
+
+ãã¹ãã®ãªã³/ãªããåãæ¿ããŸãããªã³ã®ãŸãŸã«ããŸããå®è¡å±¥æŽã®èç©ãæãŸãªããªã£ãå ŽåãåŸã§ãã¹ãäžèЧããç¡å¹åã§ããŸãã
+
+---
+
+ååãèšå®ãã3 ã€ã®ãã±ãŒã·ã§ã³ãéžæããããäžã«ã¹ã¯ããŒã«ã㊠{{% button style="blue" %}}Submit{{% /button %}} ãã¯ãªãã¯ãããã¹ããä¿åããŸãã
+
+ããã§ãã¹ãã¯ãN. VirginiaãLondonãMelbourne ãã 5 åããšã«å®è¡ãããããã¹ã±ãžã¥ãŒã«ãããŸãããæåã®å®è¡ã¯ãã£ã¹ãããããããŸã§éåžžæ°åããããŸãïŒã¹ã±ãžã¥ãŒã©ãŒãåãªãŒãžã§ã³ã§ãã©ãŠã¶ã¹ããããå²ãåœãŠãå¿
èŠãããããïŒãããã«çµæã衚瀺ãããªããŠãå¿é
ããªãã§ãã ããã
+
+åŸ
ã£ãŠããéã{{% button %}}Edit test{{% /button %}} ãã¯ãªãã¯ããŠã**Advanced** èšå®ã確èªããŸãããã
diff --git a/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/5-advanced-settings.md b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/5-advanced-settings.md
new file mode 100644
index 0000000000..7a710d15b7
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/5-advanced-settings.md
@@ -0,0 +1,27 @@
+---
+title: 1.5 Advanced Settings
+weight: 5
+---
+
+ããã©ã«ãèšå®ã¯ãèªèšŒäžèŠã®å
¬éãžã£ãŒããŒã§ããã°ã»ãšãã©ã®å Žåã§ååã§ãããå®éã®æ¬çªãµã€ãã§ã¯ **Advanced** ã«ããã³ã³ãããŒã«ã®ãã¡å°ãªããšã1ã€ãå¿
èŠã«ãªãããšããããããŸããæ¬ã¯ãŒã¯ã·ã§ããã§ã¯ãããã®èšå®ã¯è¡ããŸããããåŸã§é©åãªããŒã«ãéžã¹ãããããããããäœã®ããã«ããã®ããç¥ã£ãŠãã䟡å€ã¯ãããŸãã
+
+**Advanced** ãã¯ãªãã¯ããŠããã«ãå±éããŸãã
+
+{{% notice note %}}
+æ¬ã¯ãŒã¯ã·ã§ããã§ã¯æ
å ±æäŸã®ã¿ãç®çãšããŠããããããããã®èšå®ã¯ **䜿çšããŸãã**ã
+{{% /notice %}}
+
+
+
+## Security
+
+- **TLS/SSL validation** â æå¹åãããšãèšŒææžã®æå¹æéããã¹ãåã®äžäžèŽãä¿¡é Œãããªãçºè¡è
ãã§ãŒã³ã®æ€èšŒã匷å¶ããŸããèªå·±çœ²åèšŒææžã䜿çšããã¹ããŒãžã³ã°ç°å¢ã«å¯ŸããŠãã¹ããè¡ãå Žåããã®èšå®ã *ãªã* ã«ããå¿
èŠãããããšããããŸãããæ¬çªãã¹ãã§ã¯ãªãã®ãŸãŸã«ããŠã¯ãããŸãããèšŒææžé¢é£ã®é害ã«å¯Ÿããæãäœã³ã¹ããªæ©æèŠåã·ã°ãã«ã®1ã€ãç¡å¹åããŠããŸãããã§ãã
+- **Authentication** â ãã¹ãŠã®ãªã¯ãšã¹ããšãšãã«éä¿¡ãããèªèšŒæ
å ±ã§ãHTTP BasicèªèšŒã®èåŸã«ãããµã€ãïŒå
éšããŒã«ãpre-prodç°å¢ã§ã¯ä»ã§ãäžè¬çã§ãïŒã«æçšã§ããèªèšŒæ
å ±ã¯ã€ã³ã©ã€ã³ã§å
¥åããã®ã§ã¯ãªã [concealed global variables](https://docs.splunk.com/Observability/synthetics/test-config/global-variables.html) ãšããŠä¿åããŠãã ãããconcealedå€ã¯ãã¹ãèšå®ãèªã誰ã«ãèŠãããããã䜿ããã¹ãŠã®ãã¹ããç·šéããããšãªãäžç®æã§ããŒããŒã·ã§ã³ã§ããŸãã
+
+## Custom Content
+
+- **Custom headers** â ãã¹ããè¡ããã¹ãŠã®ãªã¯ãšã¹ãã«éä¿¡ããã远å ã®ããããŒã§ããäžè¬çãªçšéãšããŠã¯ãããã¯ãšã³ããåæããã·ã¥ããŒããRUMã®éèšããåæãã©ãã£ãã¯ãé€å€ããããã«äœ¿çšã§ãã `X-Synthetics: true`ïŒãŸãã¯é¡äŒŒã®ïŒããããŒãã³ãŒã«ããã£ãã·ã¥ã®ããã©ãŒãã³ã¹ããã¹ãããããã® `Cache-Control: no-cache` ããããŒãç¹å®ã®ããªã¢ã³ãã«ãã¹ããåºå®ããããã®A/Bãã¹ãçšCookieããã£ãŒãã£ãŒãã©ã°ã®ãªãŒããŒã©ã€ãããããŒãªã©ããããŸãã
+- **Cookies** â ãã¹ãéå§ *å* ã«ãã©ãŠã¶ã§èšå®ãããŸããå
žåçãªçšéã¯ããã¹ããã¯ãªãã¯ããå¿
èŠã®ããèŠçŽ ãèŠãé ããŠããŸãäžåéãã®ã¢ãŒãã«ïŒCookieãããŒãããã¥ãŒã¹ã¬ã¿ãŒã賌èªããããããã¢ããïŒã®æå¶ã§ããCookieã¯éå§URLã®ãã¡ã€ã³ã«ã¹ã³ãŒããããŠãããSplunk Synthetic Monitoringã¯ç»é²å¯èœãªãã¡ã€ã³ãå€å®ããããã« [public suffix list](https://publicsuffix.org/) ã䜿çšããŸãã
+- **Host overrides** â DNS解決æã«ãããã¹ãããå¥ã®ãã¹ããžãªã¯ãšã¹ãããªã«ãŒãããŸããäžè¬çãªãã¿ãŒã³ã¯2ã€ãããŸãã1ã€ã¯ãããããããã¢ãŒãããããšããŠããCDNãšããžããŒãã«å¯ŸããŠæ¬çªURLããã¹ãããããšïŒ`www.example.com` ãç¹å®ã®ãšããžIPã«ãªãŒããŒã©ã€ãïŒããã1ã€ã¯ããžã£ãŒããŒã®ãã¹ãŠã®ã¹ããããæžãæããããšãªããã¹ããŒãžã³ã°åœ¢ç¶ã®ããã¯ãšã³ãã«å¯ŸããŠæ¬çªåœ¢ç¶ã®ãã¹ããå®è¡ããããšïŒ`api.example.com` ã `api-staging.example.com` ã«ãªãŒããŒã©ã€ãïŒã§ãã
+
+次ã«ããã¹ãã¹ããããç·šéããŠãããããã«æå³ã®ããååãä»ããŸããããã¯ãã¹ãããã倱æãå§ããããŒã ã¡ã€ããã¢ã©ãŒããèªãŸãªããã°ãªããªããªã£ãç¬éã«éèŠã«ãªããŸãã
diff --git a/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/6-edit-steps.md b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/6-edit-steps.md
new file mode 100644
index 0000000000..044ddb97f6
--- /dev/null
+++ b/content/ja/ninja-workshops/instrumentation/4-synthetics-scripting/1-real-browser-test/6-edit-steps.md
@@ -0,0 +1,51 @@
+---
+title: 1.6 ãã¹ãã¹ãããã®ç·šé
+weight: 6
+---
+
+ããã©ã«ãã§ã¯ãChrome Recorder ããåºåãããã¹ããã㯠**"Go to URL"** ã **"Click on `