ไทย

สำรวจการรวบรวมเมตริกด้วย Prometheus และ Grafana เรียนรู้วิธีตรวจสอบแอปพลิเคชันและโครงสร้างพื้นฐานอย่างมีประสิทธิภาพ

การรวบรวมเมตริก: คู่มือฉบับสมบูรณ์พร้อม Prometheus และ Grafana

ในภูมิทัศน์ไอทีที่ซับซ้อนในปัจจุบัน การตรวจสอบที่มีประสิทธิภาพมีความสำคัญอย่างยิ่งต่อการรักษาความสมบูรณ์และการทำงานของแอปพลิเคชันและโครงสร้างพื้นฐาน การรวบรวมเมตริกเป็นรากฐานสำหรับการตรวจสอบนี้ ช่วยให้คุณสามารถติดตามตัวบ่งชี้ประสิทธิภาพหลัก (KPI) ระบุปัญหาที่อาจเกิดขึ้น และเพิ่มประสิทธิภาพการใช้ทรัพยากร คู่มือฉบับสมบูรณ์นี้จะสำรวจวิธีการใช้ประโยชน์จาก Prometheus และ Grafana ซึ่งเป็นเครื่องมือโอเพนซอร์สอันทรงพลังสองตัวสำหรับการรวบรวมและแสดงภาพเมตริกที่แข็งแกร่ง

การรวบรวมเมตริกคืออะไร

การรวบรวมเมตริกเกี่ยวข้องกับการรวบรวมข้อมูลตัวเลขที่แสดงถึงสถานะและพฤติกรรมของระบบ แอปพลิเคชัน และส่วนประกอบโครงสร้างพื้นฐานต่างๆ เมื่อเวลาผ่านไป เมตริกเหล่านี้สามารถรวมถึงการใช้ CPU การใช้หน่วยความจำ ปริมาณการใช้งานเครือข่าย เวลาตอบสนอง อัตราข้อผิดพลาด และตัวบ่งชี้ที่เกี่ยวข้องอื่นๆ อีกมากมาย ด้วยการวิเคราะห์เมตริกเหล่านี้ คุณจะได้รับข้อมูลเชิงลึกอันมีค่าเกี่ยวกับการทำงานและความสมบูรณ์ของสภาพแวดล้อมของคุณ

ทำไมการรวบรวมเมตริกจึงมีความสำคัญ

ขอแนะนำ Prometheus และ Grafana

Prometheus เป็นชุดเครื่องมือตรวจสอบและแจ้งเตือนระบบโอเพนซอร์สที่พัฒนาขึ้นครั้งแรกที่ SoundCloud มันเก่งในการรวบรวมและจัดเก็บข้อมูลอนุกรมเวลา ซึ่งเป็นข้อมูลที่จัดทำดัชนีตามการประทับเวลา Prometheus ใช้แบบจำลองแบบดึงเพื่อดึงเมตริกจากเป้าหมาย (เช่น เซิร์ฟเวอร์ แอปพลิเคชัน) เป็นระยะๆ มันมีภาษาคิวรีอันทรงพลัง (PromQL) สำหรับการวิเคราะห์ข้อมูลที่รวบรวมและกำหนดกฎการแจ้งเตือน

Grafana เป็นแพลตฟอร์มการแสดงภาพข้อมูลและการตรวจสอบแบบโอเพนซอร์ส มันช่วยให้คุณสร้างแดชบอร์ดและกราฟแบบโต้ตอบเพื่อแสดงข้อมูลจากแหล่งข้อมูลต่างๆ รวมถึง Prometheus Grafana มีตัวเลือกการแสดงภาพมากมาย รวมถึงกราฟ แผนภูมิ ตาราง และเกจ นอกจากนี้ยังรองรับการแจ้งเตือน ช่วยให้คุณได้รับการแจ้งเตือนเมื่อมีการละเมิดเกณฑ์บางอย่าง

Prometheus และ Grafana ร่วมกันสร้างโซลูชันการตรวจสอบที่ทรงพลังและยืดหยุ่น ซึ่งสามารถปรับให้เข้ากับสภาพแวดล้อมและกรณีการใช้งานที่หลากหลายได้ พวกเขาถูกนำมาใช้อย่างหนักในแนวทางปฏิบัติของ DevOps และ SRE (Site Reliability Engineering) ทั่วโลก

สถาปัตยกรรมและแนวคิด Prometheus

การทำความเข้าใจส่วนประกอบหลักของ Prometheus เป็นสิ่งจำเป็นสำหรับการใช้งานและการใช้ประโยชน์อย่างมีประสิทธิภาพ:

เวิร์กโฟลว์ Prometheus

  1. เป้าหมาย (แอปพลิเคชัน เซิร์ฟเวอร์ ฯลฯ) เปิดเผยเมตริก โดยปกติแล้วเมตริกเหล่านี้จะถูกเปิดเผยผ่านปลายทาง HTTP
  2. Prometheus Server ดึงเมตริกจากเป้าหมายที่กำหนดค่าไว้ มันดึงเมตริกเป็นระยะๆ จากปลายทางเหล่านี้
  3. Prometheus จัดเก็บเมตริกที่ดึงในฐานข้อมูลอนุกรมเวลา
  4. ผู้ใช้สืบค้นเมตริกโดยใช้ PromQL สิ่งนี้ทำให้พวกเขาสามารถวิเคราะห์ข้อมูลและสร้างกราฟและแดชบอร์ด
  5. มีการประเมินกฎการแจ้งเตือนตามเมตริกที่เก็บไว้ หากเงื่อนไขของกฎเป็นไปตามนั้น การแจ้งเตือนจะถูกทริกเกอร์
  6. Alertmanager จัดการการแจ้งเตือนที่ถูกทริกเกอร์ มันจะลบข้อมูลซ้ำ กลุ่ม และส่งไปยังช่องทางการแจ้งเตือนที่เหมาะสม

สถาปัตยกรรมและแนวคิด Grafana

Grafana เสริม Prometheus ด้วยการจัดเตรียมอินเทอร์เฟซที่เป็นมิตรต่อผู้ใช้สำหรับการแสดงภาพและการวิเคราะห์เมตริกที่รวบรวม:

เวิร์กโฟลว์ Grafana

  1. กำหนดค่าแหล่งข้อมูล: เชื่อมต่อ Grafana กับเซิร์ฟเวอร์ Prometheus ของคุณ
  2. สร้างแดชบอร์ด: ออกแบบแดชบอร์ดเพื่อแสดงภาพเมตริกของคุณ
  3. เพิ่มพาเนลลงในแดชบอร์ด: เพิ่มพาเนลเพื่อแสดงจุดข้อมูลเฉพาะจาก Prometheus โดยใช้คิวรี PromQL
  4. กำหนดค่าการแจ้งเตือน (ตัวเลือก): ตั้งค่ากฎการแจ้งเตือนภายใน Grafana เพื่อรับการแจ้งเตือนตามเกณฑ์เมตริกเฉพาะ
  5. แชร์แดชบอร์ด: แชร์แดชบอร์ดกับทีมของคุณเพื่อทำงานร่วมกันในการตรวจสอบและการวิเคราะห์

การตั้งค่า Prometheus และ Grafana

ส่วนนี้มีคำแนะนำทีละขั้นตอนเกี่ยวกับการตั้งค่า Prometheus และ Grafana

การติดตั้ง Prometheus

1. ดาวน์โหลด Prometheus:

ดาวน์โหลด Prometheus เวอร์ชันล่าสุดจากเว็บไซต์อย่างเป็นทางการ: https://prometheus.io/download/ เลือกแพ็คเกจที่เหมาะสมสำหรับระบบปฏิบัติการของคุณ (เช่น Linux, Windows, macOS)

2. แตกไฟล์เก็บถาวร:

แตกไฟล์เก็บถาวรที่ดาวน์โหลดไปยังไดเรกทอรีที่คุณเลือก

3. กำหนดค่า Prometheus:

สร้างไฟล์การกำหนดค่า `prometheus.yml` ไฟล์นี้กำหนดเป้าหมายที่ Prometheus จะดึงและตัวเลือกการกำหนดค่าอื่นๆ การกำหนดค่าพื้นฐานอาจมีลักษณะดังนี้:


global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

การกำหนดค่านี้กำหนดงานดึงสองงาน: หนึ่งงานสำหรับ Prometheus เอง (การดึงเมตริกของตัวเอง) และหนึ่งงานสำหรับ node_exporter ที่ทำงานบนพอร์ต localhost 9100 `scrape_interval` ระบุความถี่ที่ Prometheus จะดึงเป้าหมาย

4. เริ่มต้น Prometheus:

เรียกใช้ไฟล์ปฏิบัติการ Prometheus จากไดเรกทอรีที่คุณแตกไฟล์เก็บถาวร:

./prometheus --config.file=prometheus.yml

Prometheus จะเริ่มต้นและฟังบนพอร์ต 9090 ตามค่าเริ่มต้น คุณสามารถเข้าถึงส่วนต่อประสานเว็บ Prometheus ในเบราว์เซอร์ของคุณได้ที่ http://localhost:9090

การติดตั้ง Grafana

1. ดาวน์โหลด Grafana:

ดาวน์โหลด Grafana เวอร์ชันล่าสุดจากเว็บไซต์อย่างเป็นทางการ: https://grafana.com/grafana/download เลือกแพ็คเกจที่เหมาะสมสำหรับระบบปฏิบัติการของคุณ

2. ติดตั้ง Grafana:

ทำตามคำแนะนำในการติดตั้งสำหรับระบบปฏิบัติการของคุณ ตัวอย่างเช่น บน Debian/Ubuntu:


sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana

3. เริ่มต้น Grafana:

เริ่มต้นบริการ Grafana:

sudo systemctl start grafana-server

4. เข้าถึง Grafana:

Grafana จะเริ่มต้นและฟังบนพอร์ต 3000 ตามค่าเริ่มต้น คุณสามารถเข้าถึงส่วนต่อประสานเว็บ Grafana ในเบราว์เซอร์ของคุณได้ที่ http://localhost:3000

ชื่อผู้ใช้และรหัสผ่านเริ่มต้นคือ `admin` และ `admin` คุณจะได้รับแจ้งให้เปลี่ยนรหัสผ่านเมื่อเข้าสู่ระบบครั้งแรก

การเชื่อมต่อ Grafana กับ Prometheus

ในการแสดงภาพเมตริกจาก Prometheus ใน Grafana คุณต้องกำหนดค่า Prometheus เป็นแหล่งข้อมูลใน Grafana

1. เพิ่มแหล่งข้อมูล:

ในส่วนต่อประสานเว็บ Grafana ให้ไปที่ Configuration > Data Sources แล้วคลิก Add data source

2. เลือก Prometheus:

เลือก Prometheus เป็นชนิดของแหล่งข้อมูล

3. กำหนดค่าการเชื่อมต่อ Prometheus:

ป้อน URL ของเซิร์ฟเวอร์ Prometheus ของคุณ (เช่น `http://localhost:9090`) กำหนดค่าตัวเลือกอื่นๆ ตามต้องการ (เช่น การตรวจสอบสิทธิ์)

4. บันทึกและทดสอบ:

คลิก Save & Test เพื่อตรวจสอบว่า Grafana สามารถเชื่อมต่อกับ Prometheus ได้สำเร็จหรือไม่

การสร้างแดชบอร์ดใน Grafana

เมื่อคุณเชื่อมต่อ Grafana กับ Prometheus แล้ว คุณสามารถสร้างแดชบอร์ดเพื่อแสดงภาพเมตริกของคุณได้

1. สร้างแดชบอร์ดใหม่:

ในส่วนต่อประสานเว็บ Grafana ให้คลิกไอคอน + ในแถบด้านข้างและเลือก Dashboard

2. เพิ่มพาเนล:

คลิก Add an empty panel เพื่อเพิ่มพาเนลใหม่ลงในแดชบอร์ด

3. กำหนดค่าพาเนล:


rate(process_cpu_seconds_total{job="node_exporter"}[5m])

คิวรีนี้คำนวณอัตราการเปลี่ยนแปลงของเวลา CPU ที่ใช้โดยกระบวนการที่รวบรวมโดย node_exporter ในช่วงเวลา 5 นาที

4. บันทึกแดชบอร์ด:

คลิกไอคอนบันทึกเพื่อบันทึกแดชบอร์ด

PromQL: ภาษาคิวรี Prometheus

PromQL เป็นภาษาคิวรีอันทรงพลังที่ใช้ในการดึงและจัดการเมตริกที่เก็บไว้ใน Prometheus มันช่วยให้คุณสามารถดำเนินการได้หลากหลาย รวมถึง:

ตัวอย่าง PromQL


rate(process_cpu_seconds_total{job="node_exporter"}[5m])

node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes

(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100

rate(http_requests_total[5m])

การเรียนรู้ PromQL เป็นสิ่งจำเป็นสำหรับการใช้ Prometheus และ Grafana อย่างมีประสิทธิภาพ อ้างอิงเอกสารประกอบ Prometheus สำหรับคำแนะนำที่ครอบคลุมเกี่ยวกับภาษา

การแจ้งเตือนด้วย Prometheus และ Alertmanager

Prometheus มีระบบการแจ้งเตือนที่แข็งแกร่ง ซึ่งช่วยให้คุณสามารถกำหนดกฎตามค่าเมตริก เมื่อเงื่อนไขของกฎเป็นไปตามนั้น การแจ้งเตือนจะถูกทริกเกอร์ และ Alertmanager จะจัดการกระบวนการแจ้งเตือน

การกำหนดกฎการแจ้งเตือน

กฎการแจ้งเตือนถูกกำหนดไว้ในไฟล์การกำหนดค่า `prometheus.yml` นี่คือตัวอย่างกฎการแจ้งเตือนที่ถูกทริกเกอร์เมื่อการใช้ CPU เกิน 80%:


rule_files:
  - "rules.yml"

จากนั้น ในไฟล์ชื่อ `rules.yml` ให้วางกฎเช่นนี้:


groups:
- name: example
  rules:
  - alert: HighCPUUsage
    expr: rate(process_cpu_seconds_total{job="node_exporter"}[5m]) > 0.8
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "ตรวจพบการใช้ CPU สูง"
      description: "การใช้ CPU สูงกว่า 80% บน {{ $labels.instance }}"

คำอธิบาย:

การกำหนดค่า Alertmanager

Alertmanager จัดการเส้นทางและการแจ้งเตือนของการแจ้งเตือน คุณต้องกำหนดค่า Alertmanager เพื่อระบุว่าจะส่งการแจ้งเตือนไปที่ใด (เช่น อีเมล Slack PagerDuty) อ้างอิงเอกสารประกอบ Alertmanager สำหรับคำแนะนำในการกำหนดค่าโดยละเอียด

การกำหนดค่า `alertmanager.yml` ขั้นต่ำอาจมีลักษณะดังนี้:


global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 12h
  receiver: 'web.hook'

receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://localhost:8080/'

การกำหนดค่านี้จะส่งการแจ้งเตือนไปยัง webhook บนพอร์ต localhost 8080 คุณสามารถปรับแต่งส่วน `receivers` เพื่อใช้บริการต่างๆ เช่น Slack หรืออีเมลแทน

ตัวอย่างการใช้งานจริงและกรณีการใช้งาน

Prometheus และ Grafana สามารถใช้เพื่อตรวจสอบแอปพลิเคชันและส่วนประกอบโครงสร้างพื้นฐานที่หลากหลาย นี่คือตัวอย่างการใช้งานจริงบางส่วน:

ตัวอย่าง: การตรวจสอบสถาปัตยกรรมไมโครเซอร์วิส

ในสถาปัตยกรรมไมโครเซอร์วิส Prometheus และ Grafana สามารถใช้เพื่อตรวจสอบความสมบูรณ์และการทำงานของแต่ละบริการ รวมถึงระบบโดยรวม บริการแต่ละรายการสามารถเปิดเผยเมตริกของตัวเอง เช่น อัตราคำขอ เวลาตอบสนอง และอัตราข้อผิดพลาด จากนั้น Prometheus สามารถดึงเมตริกเหล่านี้ และ Grafana สามารถใช้เพื่อแสดงภาพได้ ซึ่งช่วยให้คุณสามารถระบุปัญหาคอขวดด้านประสิทธิภาพหรือความล้มเหลวในบริการเฉพาะได้อย่างรวดเร็ว

เทคนิคขั้นสูงและแนวทางปฏิบัติที่ดีที่สุด

หากต้องการใช้ประโยชน์สูงสุดจาก Prometheus และ Grafana ให้พิจารณาเทคนิคขั้นสูงและแนวทางปฏิบัติที่ดีที่สุดต่อไปนี้:

การแก้ไขปัญหาทั่วไป

แม้จะมีการวางแผนและดำเนินการอย่างระมัดระวัง คุณอาจพบปัญหาเมื่อใช้ Prometheus และ Grafana นี่คือปัญหาทั่วไปบางประการและวิธีแก้ไข:

โซลูชันการตรวจสอบทางเลือก

แม้ว่า Prometheus และ Grafana จะเป็นเครื่องมือที่มีประสิทธิภาพ แต่ก็ไม่ใช่ตัวเลือกเดียวสำหรับการรวบรวมและการแสดงภาพเมตริก โซลูชันการตรวจสอบยอดนิยมอื่นๆ ได้แก่:

โซลูชันการตรวจสอบที่ดีที่สุดสำหรับองค์กรของคุณจะขึ้นอยู่กับข้อกำหนดและงบประมาณเฉพาะของคุณ

บทสรุป

การรวบรวมเมตริกมีความสำคัญอย่างยิ่งต่อการรักษาความสมบูรณ์และการทำงานของแอปพลิเคชันและโครงสร้างพื้นฐาน Prometheus และ Grafana มอบโซลูชันโอเพนซอร์สที่ทรงพลังและยืดหยุ่นสำหรับการรวบรวม จัดเก็บ และแสดงภาพเมตริก ด้วยการทำความเข้าใจแนวคิดหลักและปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดที่สรุปไว้ในคู่มือนี้ คุณสามารถใช้ประโยชน์จาก Prometheus และ Grafana เพื่อสร้างระบบการตรวจสอบที่แข็งแกร่งซึ่งตรงตามความต้องการขององค์กรของคุณ

การตรวจสอบที่มีประสิทธิภาพ ควบคู่ไปกับการแจ้งเตือนเชิงรุกและการตอบสนองต่อเหตุการณ์อย่างรวดเร็ว เป็นรากฐานสำคัญของการดำเนินงานด้านไอทียุคใหม่ การใช้เครื่องมือต่างๆ เช่น Prometheus และ Grafana ช่วยให้องค์กรต่างๆ สามารถให้บริการที่เชื่อถือได้และมีประสิทธิภาพแก่ผู้ใช้ได้ โดยไม่คำนึงถึงสถานที่ตั้งหรืออุตสาหกรรมของตน