ผู้ดำเนินการ Prometheus จัดเตรียมการใช้งาน Kubernetes และการจัดการ Prometheus และส่วนประกอบการตรวจสอบที่เกี่ยวข้อง วัตถุประสงค์ของโปรเจ็กต์นี้คือเพื่อลดความซับซ้อนและทำให้การกำหนดค่าสแต็กการตรวจสอบที่ใช้ Prometheus สำหรับคลัสเตอร์ Kubernetes เป็นไปโดยอัตโนมัติ
ตัวดำเนินการ Prometheus รวมถึงแต่ไม่จำกัดเพียงคุณลักษณะต่อไปนี้:
ทรัพยากรที่กำหนดเองของ Kubernetes : ใช้ทรัพยากรที่กำหนดเองของ Kubernetes เพื่อปรับใช้และจัดการ Prometheus, Alertmanager และส่วนประกอบที่เกี่ยวข้อง
การกำหนดค่าการปรับใช้ที่ง่ายขึ้น : กำหนดค่าพื้นฐานของ Prometheus เช่น เวอร์ชัน การคงอยู่ นโยบายการเก็บรักษา และแบบจำลองจากทรัพยากร Kubernetes ดั้งเดิม
การกำหนดค่าเป้าหมาย Prometheus : สร้างการกำหนดค่าเป้าหมายการตรวจสอบโดยอัตโนมัติโดยยึดตามการสืบค้นป้ายกำกับ Kubernetes ที่คุ้นเคย ไม่จำเป็นต้องเรียนรู้ภาษาการกำหนดค่าเฉพาะของ Prometheus
สำหรับข้อมูลเบื้องต้นเกี่ยวกับ Prometheus Operator โปรดดูคู่มือการเริ่มต้นใช้งาน
ผู้ปฏิบัติงานเองถือว่ามีความพร้อมในการผลิต โปรดดูเวอร์ชันข้อกำหนดทรัพยากรที่กำหนดเอง (CRD) สำหรับสถานะของ CRD แต่ละรายการ:
monitoring.coreos.com/v1
: CRD และ API ที่เสถียร การเปลี่ยนแปลงทำในลักษณะที่เข้ากันได้แบบย้อนหลัง
monitoring.coreos.com/v1beta1
: CRD และ API ที่ไม่เสถียร การเปลี่ยนแปลงสามารถเกิดขึ้นได้ แต่ทีมงานมุ่งเน้นไปที่การหลีกเลี่ยงสิ่งเหล่านั้น เราสนับสนุนการใช้งานจริงสำหรับผู้ใช้ที่ยอมรับความเสี่ยงที่จะทำลายการเปลี่ยนแปลง
monitoring.coreos.com/v1alpha1
: CRD และ API ที่ไม่เสถียร การเปลี่ยนแปลงสามารถเกิดขึ้นได้บ่อยครั้ง และเราขอแนะนำให้หลีกเลี่ยงการใช้งานในสภาพแวดล้อมที่มีความสำคัญต่อภารกิจ
ผู้ดำเนินการ Prometheus ใช้ทรัพยากรที่กำหนดเองของ Kubernetes เพื่อลดความซับซ้อนในการปรับใช้และการกำหนดค่าของ Prometheus, Alertmanager และส่วนประกอบการตรวจสอบที่เกี่ยวข้อง
kube-prometheus จัดเตรียมตัวอย่างการกำหนดค่าสำหรับสแต็กการตรวจสอบคลัสเตอร์ที่สมบูรณ์โดยอิงตาม Prometheus และตัวดำเนินการ Prometheus ซึ่งรวมถึงการปรับใช้อินสแตนซ์ Prometheus และ Alertmanager หลายรายการ ผู้ส่งออกตัววัด เช่น node_exporter สำหรับการรวบรวมตัววัดโหนด การกำหนดค่าเป้าหมายแบบขูดที่เชื่อมโยง Prometheus กับตำแหน่งข้อมูลตัววัดต่างๆ และตัวอย่างกฎการแจ้งเตือนสำหรับการแจ้งเตือนปัญหาที่อาจเกิดขึ้นในคลัสเตอร์
แผนภูมิ prometheus-community/kube-prometheus-stack Helm มีการตั้งค่าคุณลักษณะที่คล้ายกันเป็น kube-prometheus แผนภูมินี้ได้รับการดูแลโดยชุมชน Prometheus สำหรับข้อมูลเพิ่มเติม โปรดดูที่ readme ของแผนภูมิ
ตัวดำเนินการ Prometheus ต้องการ Kubernetes เวอร์ชัน 1.16.0
เป็นอย่างน้อย หากคุณเพิ่งเริ่มต้นใช้งาน Prometheus Operator ขอแนะนำเป็นอย่างยิ่งให้ใช้เวอร์ชันเสถียรล่าสุด
คุณสมบัติหลักของ Prometheus Operator คือการตรวจสอบเซิร์ฟเวอร์ Kubernetes API เพื่อดูการเปลี่ยนแปลงในอ็อบเจ็กต์เฉพาะ และให้แน่ใจว่าการปรับใช้ Prometheus ปัจจุบันตรงกับอ็อบเจ็กต์เหล่านี้ ผู้ดำเนินการดำเนินการตามข้อกำหนดทรัพยากรที่กำหนดเอง (CRD) ต่อไปนี้:
Prometheus
ซึ่งกำหนดการปรับใช้ Prometheus ที่ต้องการ
PrometheusAgent
ซึ่งกำหนดการปรับใช้ Prometheus ที่ต้องการ แต่ทำงานในโหมด Agent
Alertmanager
ซึ่งกำหนดการปรับใช้ Alertmanager ที่ต้องการ
ThanosRuler
ซึ่งกำหนดการปรับใช้ Thanos Ruler ที่ต้องการ
ServiceMonitor
ซึ่งระบุอย่างชัดเจนว่าควรตรวจสอบกลุ่มบริการ Kubernetes อย่างไร ผู้ดำเนินการสร้างการกำหนดค่า Prometheus scrape โดยอัตโนมัติตามสถานะปัจจุบันของออบเจ็กต์ในเซิร์ฟเวอร์ API
PodMonitor
ซึ่งระบุอย่างชัดเจนว่าควรตรวจสอบกลุ่มของพ็อดอย่างไร ผู้ดำเนินการสร้างการกำหนดค่า Prometheus scrape โดยอัตโนมัติตามสถานะปัจจุบันของออบเจ็กต์ในเซิร์ฟเวอร์ API
Probe
ซึ่งระบุอย่างชัดเจนว่าควรตรวจสอบกลุ่มของทางเข้าหรือเป้าหมายคงที่อย่างไร ผู้ปฏิบัติงานจะสร้างการกำหนดค่า Prometheus scrape โดยอัตโนมัติตามคำจำกัดความ
ScrapeConfig
ซึ่งระบุการกำหนดค่าการคัดลอกที่จะเพิ่มลงใน Prometheus อย่างเปิดเผย CustomResourceDefinition นี้ช่วยในการคัดลอกทรัพยากรภายนอกคลัสเตอร์ Kubernetes
PrometheusRule
ซึ่งกำหนดชุดกฎการแจ้งเตือนและ/หรือการบันทึก Prometheus ที่ต้องการ ตัวดำเนินการสร้างไฟล์กฎซึ่งอินสแตนซ์ Prometheus สามารถใช้ได้
AlertmanagerConfig
ซึ่งระบุส่วนย่อยของการกำหนดค่า Alertmanager อย่างเปิดเผย อนุญาตการกำหนดเส้นทางการแจ้งเตือนไปยังตัวรับที่กำหนดเอง และการตั้งค่ากฎการยับยั้ง
ตัวดำเนินการ Prometheus จะตรวจจับการเปลี่ยนแปลงในเซิร์ฟเวอร์ Kubernetes API กับออบเจ็กต์ใดๆ ข้างต้นโดยอัตโนมัติ และตรวจสอบให้แน่ใจว่าการปรับใช้และการกำหนดค่าที่ตรงกันจะได้รับการซิงค์กัน
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ CRD ที่นำเสนอโดยผู้ดำเนินการ Prometheus โปรดดูที่หน้าการออกแบบ
เพื่อป้องกันไม่ให้กฎการแจ้งเตือนและการบันทึก Prometheus ที่ไม่ถูกต้องก่อให้เกิดความล้มเหลวในอินสแตนซ์ Prometheus ที่ใช้งาน เราจัดให้มีเว็บฮุคการรับเข้าเพื่อตรวจสอบทรัพยากร PrometheusRule
เมื่อสร้างหรืออัปเดตครั้งแรก
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัตินี้ โปรดดูคู่มือผู้ใช้
หมายเหตุ: การเริ่มต้นอย่างรวดเร็วนี้ไม่ได้จัดเตรียมสแต็กการตรวจสอบทั้งหมด หากนั่นคือสิ่งที่คุณกำลังมองหา โปรดดูโครงการ kube-prometheus หากคุณต้องการทั้งสแต็ก แต่ได้ใช้ bundle.yaml
แล้ว ให้ลบบันเดิลก่อน ( kubectl delete -f bundle.yaml
)
หากต้องการทดลองใช้ Prometheus Operator ภายในคลัสเตอร์อย่างรวดเร็ว ให้เลือกรีลีส และรันคำสั่งต่อไปนี้ซึ่งจะปรับใช้ตัวดำเนินการในเนมสเปซ default
:
kubectl สร้าง -f Bundle.yaml
หากคุณต้องการปรับใช้ตัวดำเนินการ Prometheus ในเนมสเปซอื่น คุณต้องมี kustomize
:
NAMESPACE=my_namespace ปรับแต่งแก้ไขชุดเนมสเปซ $NAMESPACE && kubectl create -k
หมายเหตุ: ตรวจสอบให้แน่ใจว่าได้ปรับเนมสเปซใน ClusterRoleBinding หากปรับใช้ในเนมสเปซอื่นที่ไม่ใช่เนมสเปซเริ่มต้น
หากต้องการเรียกใช้ตัวดำเนินการภายนอกคลัสเตอร์:
ทำ scripts/run-external.sh <ชื่อคลัสเตอร์ kubectl>
หากต้องการลบตัวดำเนินการและ Prometheus ให้ลบทรัพยากรแบบกำหนดเองที่คุณสร้างขึ้นในแต่ละเนมสเปซออกก่อน ผู้ปฏิบัติงานจะปิดระบบโดยอัตโนมัติและลบพ็อด Prometheus และ Alertmanager และ ConfigMaps ที่เกี่ยวข้อง
สำหรับ n ใน $(kubectl รับเนมสเปซ -o jsonpath={..metadata.name}); ทำ kubectl ลบ --all --namespace=$n โพร, servicemonitor, podmonitor, alertmanagerdone
หลังจากผ่านไปสองสามนาที คุณสามารถดำเนินการต่อและลบโอเปอเรเตอร์ออกได้
kubectl ลบ -f Bundle.yaml
ผู้ปฏิบัติงานจะสร้างบริการโดยอัตโนมัติในแต่ละเนมสเปซที่คุณสร้างทรัพยากร Prometheus หรือ Alertmanager และกำหนดคำจำกัดความทรัพยากรที่กำหนดเองสามรายการ คุณสามารถทำความสะอาดสิ่งเหล่านี้ได้ทันที
สำหรับ n ใน $(kubectl รับเนมสเปซ -o jsonpath={..metadata.name}); ทำ kubectl ลบ --ignore-not-found --namespace=$n บริการที่ดำเนินการ alertmanager-operateddonekubectl ลบ --ignore-not-found customresourcedefinitions prometheuses.monitoring.coreos.com servicemonitors.monitoring.coreos.com podmonitors.monitoring.coreos.com alertmanagers.monitoring.coreos.com prometheusrules.monitoring.coreos.com alertmanagerconfigs.monitoring.coreos.com scrapeconfigs.monitoring.coreos.com
ดูการทดสอบ
ดูการมีส่วนร่วม
หากคุณพบช่องโหว่ด้านความปลอดภัยที่เกี่ยวข้องกับ Prometheus Operator โปรดอย่ารายงานโดยการเปิดปัญหา GitHub แต่โปรดส่งอีเมลไปยังผู้ดูแลโครงการที่พบในไฟล์ MAINTAINERS.md แทน
ตรวจสอบเอกสารการแก้ไขปัญหาสำหรับปัญหาทั่วไปและคำถามที่พบบ่อย (FAQ)
โลโก้องค์กรผู้ดำเนินการโพรมีธีอุสถูกสร้างขึ้นและสนับสนุนโดย Bianca Cheng Costanzo