Datadog คืออะไร
ไอเดียหลักในหนึ่งประโยค
หัวข้อที่มีชื่อว่า “ไอเดียหลักในหนึ่งประโยค”Datadog คือ SaaS backend เดียวที่ Agent ตัวเบา ๆ (บวกโค้ดที่ instrument แล้ว) ป้อน tagged telemetry เข้าไป และทุก product ที่เห็นใน UI — Infrastructure Monitoring, Log Management, APM, Monitors/SLOs, Software Catalog — จริง ๆ แล้วคือมุมมองที่ต่างกันของ data stream เดียวกันนั้นเอง
หนึ่งแพลตฟอร์ม หลาย product
หัวข้อที่มีชื่อว่า “หนึ่งแพลตฟอร์ม หลาย product”ทีมส่วนใหญ่เจอ Datadog ทีละ product — บางคนติดตั้ง Agent เพื่อเก็บ host metric บางคนเปิด APM บางคนเริ่มส่ง log เข้าไป ทำให้เข้าใจง่าย ๆ ว่านี่คือเครื่องมือแยกกันที่บังเอิญใช้ login เดียวกัน แต่จริง ๆ ไม่ใช่ ข้างใต้มีสิ่งเดียวที่ส่งเข้ามาที่ backend ของ Datadog นั่นคือ telemetry ที่มี tag ติดอยู่ metric, log, trace และ process snapshot คือ telemetry รูปแบบต่างกัน แต่ทั้งหมดใช้ tagging model เดียวกัน, organization เดียวกัน และ billing account เดียวกัน
backend เดียวนั้นคือสิ่งที่ขับเคลื่อน
- Infrastructure Monitoring — metric ของ host กับ container, Host Map, dashboard ระดับ resource
- Log Management — การเก็บ, pipeline ประมวลผล, การ index และการค้นหา log event
- APM (Application Performance Monitoring) — distributed trace, service map, มุมมอง latency กับ error rate
- Monitors & SLOs — กฎ alert กับการติดตาม error budget ที่ประเมินจากข้อมูลด้านบนทั้งหมด
- Software Catalog — ไดเรกทอรีของ service ที่ผูก ownership metadata กลับไปหา metric, log และ trace เดียวกัน
ไม่มีตัวไหนเป็นเครื่องมือแยกที่มี storage silo ของตัวเอง ทั้งหมดคือ view เหตุผลที่เรื่องนี้สำคัญในทางปฏิบัติ — เมื่อคุณปรับ tagging ให้ดีขึ้นครั้งเดียว (บทที่ 3 ของ module นี้ลงลึกเรื่องนี้) ทุก view เหล่านี้ดีขึ้นพร้อมกัน คุณไม่ได้ตั้งค่าห้า product แยกกัน คุณตั้งค่า data model เดียว
Agent กับ backend
หัวข้อที่มีชื่อว่า “Agent กับ backend”Agent คือซอฟต์แวร์ชิ้นเล็ก ๆ ที่คุณรันอยู่ข้าง infrastructure ของคุณ — บน host, เป็น container หรือเป็น Kubernetes DaemonSet หน้าที่ของตัวเองแคบมาก คือเก็บข้อมูลในเครื่องแล้วส่งเข้า Datadog backend ผ่าน HTTPS ไม่ได้ render dashboard, ไม่ได้ประเมิน monitor และไม่ได้เก็บ history — ทั้งหมดนั้นอยู่ใน Datadog SaaS backend นั่นคือเหตุผลที่ Agent เองยังคงเบาและทิ้งแล้วสร้างใหม่ได้ง่าย
flowchart LR
Host["Host / Container"] -->|metrics, checks| Agent
App["Instrumented app"] -->|traces| Agent
Files["Log files"] -->|logs| Agent
Agent -->|HTTPS intake| Backend["Datadog Backend (one site)"]
Backend --> Infra["Infrastructure Monitoring"]
Backend --> Logs["Log Management"]
Backend --> APM["APM"]
Backend --> Mon["Monitors / SLOs"]
Backend --> Cat["Software Catalog"]
Site กับ region
หัวข้อที่มีชื่อว่า “Site กับ region”organization ของ Datadog ไม่ได้ลอยอยู่ทั่วอินเทอร์เน็ต — แต่อยู่ใน site เดียว (คำที่ Datadog ใช้เรียก region) เช่น US1, US3, US5, EU1 หรือ AP1 site ที่คุณอยู่คือตัวกำหนด hostname ที่ Agent กับ API call ของคุณต้องใช้ — เช่น org บน US1 คุยกับ api.datadoghq.com ส่วน org บน EU1 คุยกับ api.datadoghq.eu ถ้าตั้งค่า Agent ให้ชี้ไปที่ intake ของ site ผิด จะ authenticate กับ backend คนละตัวไปเลย — นี่คือความผิดพลาดวันแรกที่พบบ่อยที่สุด ควรเช็ค site ของตัวเองให้ชัดเจนแทนที่จะเดาเอา
# datadog.yaml (Agent main config) — site must match your orgapi_key: "<DD_API_KEY>"site: "datadoghq.eu" # e.g. datadoghq.com (US1), datadoghq.eu (EU1), us3.datadoghq.com, ap1.datadoghq.comAPI key เทียบกับ Application key
หัวข้อที่มีชื่อว่า “API key เทียบกับ Application key”credential สองแบบนี้ถูกสับสนบ่อยมากเพราะทั้งคู่ก็แค่ string ที่เอาไปแปะที่ไหนสักที่ แต่อนุญาตให้ทำคนละอย่างกันโดยสิ้นเชิง
- API key อนุญาตให้ ส่งข้อมูลเข้ามา — คือสิ่งที่ Agent ใส่ใน config เพื่อส่ง metric, log และ trace เข้า Datadog โดย key นี้ scope อยู่ที่ organization ไม่ได้ผูกกับคนใดคนหนึ่ง
- Application key อนุญาตให้ ทำตัวเป็น user — key นี้ผูกกับ permission ของ user คนหนึ่งโดยเฉพาะ และใช้เรียก read/management API ของ Datadog (query metric, สร้าง dashboard, จัดการ monitor ผ่าน API หรือ Terraform) ถ้า user คนนั้นถูก deactivate หรือ permission ถูกถอด สิ่งที่ใช้ Application key ของเขาก็เสีย access นั้นไปด้วย
กฎง่าย ๆ — ถ้ากำลังตั้งค่าอะไรบางอย่างให้ ส่ง ข้อมูลเข้า Datadog ต้องใช้ API key ถ้ากำลังเขียน script หรือ Terraform provider ที่ต้อง อ่านหรือจัดการ resource ของ Datadog แทน user คนหนึ่ง ต้องใช้ Application key คู่กับ API key
# Typical pairing for a script that talks to Datadog's APIexport DD_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"export DD_APP_KEY="yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"curl -X GET "https://api.datadoghq.com/api/v1/validate" \ -H "DD-API-KEY: ${DD_API_KEY}" \ -H "DD-APPLICATION-KEY: ${DD_APP_KEY}"