วิธีติดตั้งและกำหนดค่า OpenTelemetry Collector บน Kubernetes เพื่อรวบรวมเมตริกซ์และล็อกแบบศูนย์กลาง

ที่มาภาพ: Unknown Source

วิธีติดตั้งและกำหนดค่า OpenTelemetry Collector บน Kubernetes เพื่อรวบรวมเมตริกซ์และล็อกแบบศูนย์กลาง

⚡ สรุป 30 วิ

OpenTelemetry Collector เป็นคอมโพเนนท์กลางที่รับข้อมูล telemetry (metrics, logs, traces) จากแอปพลิเคชันแล้วส่งต่อไปยังระบบสังเกตการณ์ต่าง ๆ เช่น Prometheus, Loki หรือ Jaeger

ทำความเข้าใจ OpenTelemetry Collector — What is OpenTelemetry Collector

OpenTelemetry Collector เป็นคอมโพเนนท์กลางที่รับข้อมูล telemetry (metrics, logs, traces) จากแอปพลิเคชันแล้วส่งต่อไปยังระบบสังเกตการณ์ต่าง ๆ เช่น Prometheus, Loki หรือ Jaeger การใช้ Collector ทำให้เราสามารถ รวมศูนย์ การเก็บข้อมูลจากหลายคลัสเตอร์ได้โดยไม่ต้องแก้ไขโค้ดของแอปพลิเคชัน

  • เป็นตัวกลางที่รับ‑ส่งข้อมูลแบบ agent‑less หรือ sidecar
  • รองรับปลั๊กอินหลากหลาย (receivers, processors, exporters)
  • สามารถทำ aggregation, filtering และ enrichment ก่อนส่งต่อ
**Tip: เลือกใช้ Collector เวอร์ชันที่สอดคล้องกับรุ่น OpenTelemetry SDK ที่แอปของคุณใช้อยู่ เพื่อลดความขัดแย้งระหว่างฟีเจอร์

เตรียมสภาพแวดล้อม Kubernetes — Prerequisites

ก่อนติดตั้งเราต้องมีคลัสเตอร์ Kubernetes พร้อม Helm 3 และ namespace ที่จะใช้เก็บ Collector ตรวจสอบว่าคลัสเตอร์ของคุณสามารถเข้าถึง external storage หรือ backend ที่ต้องการส่ง telemetry ได้แล้ว

  • Kubernetes ≥ 1.20
  • Helm 3.x ติดตั้งและทำงานได้ (`helm version`)
  • Namespace เช่น `otel-collector`
  • สิทธิ์ ClusterRole สำหรับอ่านข้อมูลจาก node (หากใช้ DaemonSet)
**ข้อควรระวัง: อย่าลืมเปิดการอนุญาต NetworkPolicy ที่จำเป็นให้ Collector สามารถติดต่อ backend ได้

การติดตั้งด้วย Helm — Install via Helm

Helm ทำให้ขั้นตอนติดตั้งรวดเร็วและสามารถอัปเดตเวอร์ชันต่อไปได้ง่าย ใช้ chart อย่างเป็นทางการจาก OpenTelemetry เพื่อสร้าง Deployment หรือ DaemonSet ตามความต้องการของคุณ

  • เพิ่ม repo: `helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts`
  • อัปเดต cache: `helm repo update`
  • ติดตั้งแบบ Deployment (เหมาะสำหรับ low‑traffic):

`helm install otel-collector open-telemetry/opentelemetry-collector -n otel-collector --set mode=deployment`

  • หรือเลือก DaemonSet (รวบรวมจากทุก node):

`helm install otel-collector open-telemetry/opentelemetry-collector -n otel-collector --set mode=daemonset`

Modeการใช้งานหลักข้อดีข้อเสีย
Deploymentรวบรวมจากแอปที่ส่ง telemetry ไปยัง Serviceใช้ทรัพยากรน้อย, ปรับสเกลง่ายไม่สามารถเก็บข้อมูล node‑level
DaemonSetต้องการเมตริกและล็อกจากทุกโหนดครอบคลุมทุก node, รวบรวม node‑metricsใช้ทรัพยากรเพิ่มตามจำนวน node

กำหนดค่าผ่าน ConfigMap — Configure Collector

Collector ใช้ไฟล์ YAML (หรือ JSON) ที่เรียกว่า *pipeline* เพื่อกำหนดว่า data จะไหลอย่างไร เราจะสร้าง ConfigMap ที่เก็บ `collector-config.yaml` แล้วให้ Deployment/DaemonSet อ้างอิง

```yaml receivers: otlp: protocols: grpc: http:

processors: batch:

exporters: prometheusremotewrite: endpoint: "http://prometheus.example.com/api/v1/write" loki: endpoint: "http://loki.example.com:3100/loki/api/v1/push"

service: pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [prometheusremotewrite] logs: receivers: [otlp] processors: [batch] exporters: [loki] ```

  • สร้าง ConfigMap: `kubectl create configmap otel-config --from-file=collector-config.yaml -n otel-collector`
  • แก้ไข Helm values (`values.yaml`) ให้ใช้ ConfigMap ผ่าน `configMap` หรือ `extraVolumes`
  • รีสตาร์ท Collector เพื่อให้ค่าใหม่ทำงาน (`helm upgrade …`)
**Tip: เปิด `logging.level: debug` ชั่วคราวเมื่อปรับแต่ง pipeline เพื่อตรวจสอบว่า data ถูกส่งผ่านตามที่คาดไว้

รวบรวม Metrics & Logs แบบศูนย์กลาง — Centralized Collection

หลังจาก Collector ทำงานแล้ว แอปของคุณเพียงแค่ส่งข้อมูลไปยัง endpoint ของ Collector (`otel-collector:4317` หรือ `4318`) Collector จะทำหน้าที่ต่อไปนี้:

  • รับ ข้อมูลจากหลายบริการผ่าน OTLP
  • ประมวลผล (batch, filter, resource detection)
  • ส่งออก ไปยัง Prometheus Remote Write สำหรับ metrics และ Loki สำหรับ logs
  • คงที่ การกำหนดค่าเป็นศูนย์กลาง ทำให้การเพิ่มหรือลบแอปใหม่ง่ายกว่าเดิม
  • ตั้งค่า SDK ของแอปให้ชี้ไปที่ Collector (`OTEL_EXPORTER_OTLP_ENDPOINT=otel-collector.otel-collector.svc:4317`)
  • ใช้ Service Mesh (เช่น Istio) เพื่อทำ sidecar injection อัตโนมัติ ถ้าต้องการเก็บ telemetry จากทุก pod
  • ตรวจสอบ latency ของ pipeline ด้วย `receiver/otlp` metric ที่ Collector ส่งออก

ตรวจสอบและดีบัก — Verify and Debug

เพื่อยืนยันว่าข้อมูลไหลอย่างถูกต้อง ให้ตรวจสอบทั้งระดับ Kubernetes และระดับ Collector

  • ดู logs ของ Collector: `kubectl logs -l app=otel-collector -n otel-collector`
  • เช็คสถานะ pod: `kubectl get pods -n otel-collector`
  • ใช้ Prometheus UI ตรวจดูเมตริกของ Collector เช่น `otelcol_receiver_accepted_spans_total`
  • ดู Loki query เพื่อตรวจสอบว่าข้อมูล log ถูกส่งมาถูกต้องหรือไม่
**ข้อควรระวัง: หากพบ “connection refused” ให้ตรวจสอบ Service และ NetworkPolicy ระหว่างแอปและ Collector ก่อน

สรุป — Summary

การตั้งค่า OpenTelemetry Collector บน Kubernetes ช่วยให้คุณเก็บเมตริกและล็อกจากหลายบริการในรูปแบบศูนย์กลางอย่างเป็นระบบ

  • เลือกโหมด Deployment หรือ DaemonSet ตามลักษณะการใช้งาน
  • ใช้ Helm เพื่อติดตั้งอย่างรวดเร็วและอัปเดตเวอร์ชันได้ง่าย
  • กำหนด pipeline ใน ConfigMap เพื่อควบคุม flow ของ telemetry
  • เชื่อมต่อแอปกับ Collector ผ่าน OTLP endpoint แล้วส่งออกไปยัง Prometheus/Loki
  • ตรวจสอบ logs, metrics และ network policy อย่างสม่ำเสมอเพื่อให้ระบบทำงานราบรื่น

สิ่งที่ควรจำ

  • เตรียม Kubernetes ให้พร้อม (เวอร์ชัน, Helm, namespace)
  • เลือกโหมด Collector ที่เหมาะสม เพื่อประหยัดทรัพยากรและครอบคลุมทุก node
  • กำหนดค่า pipeline อย่างเป็นระเบียบ แล้วทดสอบด้วยระดับ debug ก่อนใช้งานจริง
  • ตรวจสอบการเชื่อมต่อ ระหว่าง Collector กับ backend ทุกขั้นตอน
  • อัปเดต Helm chart อย่างสม่ำเสมอเพื่อรับฟีเจอร์และแพตช์ความปลอดภัยใหม่

ด้วยขั้นตอนเหล่านี้ คุณจะสามารถสร้างระบบ observability ที่มั่นคง รองรับการขยายตัวของแอปพลิเคชันบน Kubernetes ได้อย่างมีประสิทธิภาพ.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
วิธีติดตั้งและกำหนดค่า OpenTelemetry Collector บน Kubernetes เพื่อรวบรวมเมตริกซ์และล็อกแบบศูนย์กลาง
ผู้เขียน
กองบรรณาธิการ Thai Tech News
แหล่ง
บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
วันที่เผยแพร่
18 กรกฎาคม 2569 เวลา 19:51

Related

บทความที่เกี่ยวข้อง

วิธีตั้งค่า PostgreSQL บน Docker Compose พร้อมระบบสำรองข้อมูลอัตโนมัติข้ามแพลตฟอร์มGrowth
18 กรกฎาคม 2569 เวลา 19:30

วิธีตั้งค่า PostgreSQL บน Docker Compose พร้อมระบบสำรองข้อมูลอัตโนมัติข้ามแพลตฟอร์ม

การใช้ PostgreSQL บน Docker Compose ช่วยให้เราจัดการฐานข้อมูลได้ง่ายและสม่ำเสมอ แต่หากไม่มีระบบสำรองข้อมูล ข้อมูลสำคัญจะสูญหายได้อย่างรวดเร็ว เรียนรู้วิธีตั้งค่า **PostgreSQL** พร้อม **Backup อัตโนมัต…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีสร้าง Personal Knowledge Base ปลอดภัยด้วย Obsidian และการซิงค์บนคลาวด์Growth
18 กรกฎาคม 2569 เวลา 18:00

วิธีสร้าง Personal Knowledge Base ปลอดภัยด้วย Obsidian และการซิงค์บนคลาวด์

การสร้าง Personal Knowledge Base (PKB) ที่ปลอดภัยช่วยให้คุณเก็บความรู้ส่วนบุคคลได้อย่างเป็นระบบและเข้าถึงได้จากทุกที่ บทความนี้จะอธิบายวิธีใช้ Obsidian เป็นศูนย์กลางจัดการข้อมูล พร้อมเทคนิคการซิงค์บนค…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ6 นาที
วิธีตั้งค่าและใช้ GitHub Copilot ใน Visual Studio Code เพื่อเพิ่มประสิทธิภาพการเขียนโค้ดอย่างมืออาชีพGrowth
18 กรกฎาคม 2569 เวลา 12:00

วิธีตั้งค่าและใช้ GitHub Copilot ใน Visual Studio Code เพื่อเพิ่มประสิทธิภาพการเขียนโค้ดอย่างมืออาชีพ

GitHub Copilot เป็น AI‑assist ที่ช่วยสร้างโค้ดอัตโนมัติใน Visual Studio Code (VS Code) ทำให้คุณเขียนโปรแกรมได้เร็วขึ้นและลดข้อผิดพลาดพื้นฐาน การตั้งค่าเพียงไม่กี่ขั้นตอนก็ทำให้เครื่องมือพร้อมใช้งาน

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ5 นาที
วิธีตั้งค่า SSH Agent Forwarding บน macOS เพื่อเชื่อมต่อหลายเซิร์ฟเวอร์อย่างปลอดภัยGrowth
17 กรกฎาคม 2569 เวลา 19:30

วิธีตั้งค่า SSH Agent Forwarding บน macOS เพื่อเชื่อมต่อหลายเซิร์ฟเวอร์อย่างปลอดภัย

การเปิดใช้งาน **SSH Agent Forwarding** บน macOS ช่วยให้คุณสามารถใช้คีย์ส่วนตัวเดียวในการเชื่อมต่อหลายเซิร์ฟเวอร์โดยไม่ต้องคัดลอกคีย์ไปยังเครื่องแต่ละเครื่อง วิธีนี้ทำให้ขั้นตอนการจัดการคีย์ง่ายขึ้นและ…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ6 นาที
คัดลอกลิงก์แล้ว!