วิธีติดตั้งและกำหนดค่า 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

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

วิธีตั้งค่าและใช้ SQLite Encryption Extension บน macOS อย่างปลอดภัยGrowth
30 กรกฎาคม 2569 เวลา 20:30

วิธีตั้งค่าและใช้ SQLite Encryption Extension บน macOS อย่างปลอดภัย

**SQLite Encryption Extension (SEE) คือส่วนขยายที่ให้ SQLite รองรับการเข้ารหัสข้อมูลโดยอัตโนมัติบนไฟล์ฐานข้อมูล การใช้งาน SEE บน macOS ต้องทำตามขั้นตอนตั้งค่าและคอมไพล์อย่างระมัดระวัง เพื่อป้องกันข้อม…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีสร้าง Local Development Environment แบบ Isolated ด้วย VS Code Dev Containers บน macOS อย่างปลอดภัยGrowth
30 กรกฎาคม 2569 เวลา 19:00

วิธีสร้าง Local Development Environment แบบ Isolated ด้วย VS Code Dev Containers บน macOS อย่างปลอดภัย

การพัฒนาแบบ **Isolated** ช่วยให้โค้ดทำงานในสภาพแวดล้อมเดียวกันทุกเครื่องโดยไม่ต้องกังวลเรื่อง Dependency ที่แตกต่างกัน บน macOS เราสามารถใช้ **VS Code Dev Containers** ร่วมกับ Docker เพื่อสร้าง sandbo…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีสร้าง Progressive Web App (PWA) ด้วย Vue.js ให้ทำงานออฟไลน์อย่างปลอดภัยGrowth
30 กรกฎาคม 2569 เวลา 11:30

วิธีสร้าง Progressive Web App (PWA) ด้วย Vue.js ให้ทำงานออฟไลน์อย่างปลอดภัย

**บทความนี้จะอธิบายวิธีสร้าง Progressive Web App (PWA) ด้วย Vue.js ให้ทำงานแบบออฟไลน์อย่างปลอดภัย**

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีตั้งค่า Passwordless Authentication ด้วย WebAuthn บนเว็บไซต์ของคุณอย่างปลอดภัยGrowth
29 กรกฎาคม 2569 เวลา 20:30

วิธีตั้งค่า Passwordless Authentication ด้วย WebAuthn บนเว็บไซต์ของคุณอย่างปลอดภัย

การยืนยันตัวตนแบบ **Passwordless** ด้วย WebAuthn ช่วยลดความเสี่ยงจากรหัสผ่านที่อาจถูกขโมยหรือคาดเดาได้  โดยใช้ข้อมูลชีวมิติหรืออุปกรณ์ฮาร์ดแวร์เป็นกุญแจหลัก  บทความนี้จะสรุปวิธีตั้งค่าให้เว็บของคุณรอง…

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