---
title: "การเชื่อมต่อกับ Prometheus Alertmanager - แจ้งเตือนบนมือถือ"
sidebarTitle: Prometheus
description: ส่งการแจ้งเตือนจาก Prometheus Alertmanager มายัง Echobell เพื่อรับการแจ้งเตือนแบบพุชหรือสายโทรเข้าเมื่อเกิดเหตุกับเซิร์ฟเวอร์และโครงสร้างพื้นฐาน
---

import { Step, Steps } from "fumadocs-ui/components/steps";

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

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

## สิ่งที่ต้องเตรียม

- บัญชี Echobell ที่สร้างช่องไว้อย่างน้อยหนึ่งช่อง
- ระบบ Prometheus + Alertmanager ที่ทำงานอยู่
- สิทธิ์แก้ไขไฟล์ตั้งค่า Alertmanager ของคุณ (alertmanager.yml)

## ภาพรวมการตั้งค่า

1. สร้างช่องใน Echobell
2. ตั้งค่าเทมเพลตการแจ้งเตือน (และ Link Template ถ้าต้องการ)
3. เลือกวิธีเชื่อมต่อ:
   - Webhook ผ่าน webhook receiver ของ Alertmanager (แนะนำ)
   - อีเมลผ่าน email receiver ของ Alertmanager (ทางเลือก)
4. สร้างหรืออัปเดตกฎการแจ้งเตือน
5. ทดสอบและปรับแต่ง

## คู่มือทีละขั้นตอน

<Steps>
<Step>
### สร้างช่องใน Echobell

1. เปิดแอป Echobell
2. สร้างช่องใหม่ (เช่น "Prometheus Alerts")
3. เลือกสีเพื่อให้แยกแยะได้ง่าย
</Step>
<Step>

### ตั้งค่าเทมเพลตการแจ้งเตือน

payload ของ webhook จาก Alertmanager มีฟิลด์ที่มีโครงสร้าง เช่น status, commonLabels, commonAnnotations, externalURL และอาร์เรย์ alerts คุณอ้างอิงฟิลด์เหล่านี้ได้โดยตรงในเทมเพลตของ Echobell

เทมเพลตที่แนะนำ:

เทมเพลตหัวข้อ:

```
{{commonLabels.alertname}} - {{status}}
```

เทมเพลตเนื้อหา:

```
🔔 Alert: {{commonLabels.alertname}}
📊 Severity: {{commonLabels.severity}}
🖥️ Instance: {{alerts[0].labels["instance"]}}
⏰ Starts: {{alerts[0].startsAt}}
ℹ️ Summary: {{commonAnnotations.summary}}
🧾 Description: {{commonAnnotations.description}}
```

Link Template (ในการตั้งค่าขั้นสูง) ซึ่งจะใส่หรือไม่ก็ได้:

```
{{alerts[0].generatorURL || externalURL}}
```

ค่านี้จะแสดงลิงก์ตรงไปยังกราฟหรือแดชบอร์ดที่เกี่ยวข้องภายในบันทึกการแจ้งเตือนของคุณ หากไม่มี generatorURL ระบบจะถอยไปใช้ externalURL แทน

</Step>
<Step>
### วิธีเชื่อมต่อแบบ A — Webhook (แนะนำ)

1. ในช่อง Echobell ของคุณ ให้คัดลอก Webhook URL จากส่วน Triggers
2. ใน Alertmanager ให้เพิ่ม webhook receiver ที่ส่งข้อมูลไปยัง URL นั้น

ตัวอย่าง alertmanager.yml แบบย่อที่สุด:

```yaml
route:
  receiver: echobell-webhook

receivers:
  - name: echobell-webhook
    webhook_configs:
      - url: "https://hook.echobell.one/t/<channel-token>"
        send_resolved: true
        http_config:
          follow_redirects: true
```

หมายเหตุ:

- send_resolved: true จะแจ้งเตือนเมื่อเหตุการณ์คลี่คลายด้วย (status เปลี่ยนเป็น resolved)
- Echobell อ่าน JSON body ตามที่ได้รับมาโดยตรง เทมเพลตข้างต้นจึงแสดงผลได้ถูกต้อง
</Step>
<Step>

### วิธีเชื่อมต่อแบบ B — อีเมล (ทางเลือก)

หากคุณต้องการหรือจำเป็นต้องใช้อีเมล ให้ใช้ email receiver ของ Alertmanager แล้วส่งไปยังที่อยู่อีเมลที่ผูกกับช่อง

1. ใน Echobell ให้คัดลอกที่อยู่อีเมลของช่องจากส่วน Triggers
2. ตั้งค่า email receiver ใน Alertmanager และใช้เทมเพลตแบบง่าย ๆ

ตัวอย่างส่วนของไฟล์ตั้งค่า:

```yaml
receivers:
  - name: echobell-email
    email_configs:
      - to: "PASTE_CHANNEL_EMAIL_ADDRESS"
        send_resolved: true
        subject: "{{ .CommonLabels.alertname }} - {{ .Status }}"
        html: |
          <p><strong>Summary:</strong> {{ .CommonAnnotations.summary }}</p>
          <p>{{ .CommonAnnotations.description }}</p>
          <p>
            <a href='{{ (index .Alerts 0).GeneratorURL }}' target='_blank' rel='noopener'>Open in Prometheus</a>
          </p>
```

ในเทมเพลตของ Echobell สำหรับทริกเกอร์อีเมล คุณใช้ตัวแปรอย่าง subject, text และ html ที่ Echobell เตรียมให้อัตโนมัติได้

</Step>
<Step>
### สร้างกฎการแจ้งเตือนตัวอย่าง

นี่คือกฎตัวอย่างสั้น ๆ สำหรับทดสอบการทำงานทั้งหมด:

```yaml
groups:
  - name: example
    rules:
      - alert: HighCPU
        expr: avg(rate(process_cpu_seconds_total[5m])) > 0.8
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "High CPU usage"
          description: "CPU has been over 80% for 2 minutes"
```

เมื่อการแจ้งเตือนนี้ทำงาน Alertmanager จะส่งเหตุการณ์ไปยัง receiver ที่คุณตั้งค่าไว้ และ Echobell จะแจ้งเตือนผู้ติดตามของช่องนั้น

</Step>
</Steps>

## การทดสอบการเชื่อมต่อ

1. ลดค่าเกณฑ์ลงชั่วคราว หรือสร้างการแจ้งเตือนทดสอบที่ทำงานได้อย่างรวดเร็ว
2. ยืนยันว่าคุณได้รับการแจ้งเตือนจาก Echobell เมื่อกฎทำงาน
3. หากใช้ Link Template ให้เปิดบันทึกการแจ้งเตือนแล้วแตะลิงก์
4. คลี่คลายการแจ้งเตือนนั้น แล้วตรวจสอบว่าคุณได้รับการแจ้งเตือนตอนคลี่คลายด้วย (หากเปิดใช้ไว้)

## การเลือกประเภทการแจ้งเตือน

- สำคัญตามเวลา: เหตุระบบจริงล่มขั้นวิกฤต หรือเหตุการณ์ระดับที่ต้องเรียกคนทันที
- โทรเข้า: เหตุล่มร้ายแรงที่ต้องปลุกคุณหรือทะลุโหมดโฟกัสให้ได้
- ปกติ: การแจ้งเตือนทั่วไป คำเตือน หรือข้อมูลแจ้งให้ทราบ

## แนวปฏิบัติที่ดี

1. เขียนเทมเพลตให้กระชับแต่ได้ใจความ (ชื่อการแจ้งเตือน ระดับความรุนแรง instance และสรุป)
2. ใช้ Link Template เพื่อกระโดดไปยังกราฟหรือแดชบอร์ดที่เกี่ยวข้องได้ทันที
3. จัดกลุ่มและกำหนดเส้นทางการแจ้งเตือนใน Alertmanager เพื่อลดสัญญาณรบกวนและความล้าจากการแจ้งเตือน
4. ใส่ label ระบุระดับความรุนแรง แล้วใช้ประเภทการแจ้งเตือนของ Echobell ให้สอดคล้องกับความเร่งด่วน
5. ปกป้อง webhook URL ของ Echobell เสมือนเป็นความลับ และเปลี่ยนใหม่หากรั่วไหล

## การแก้ปัญหา

หากการแจ้งเตือนไม่ปรากฏใน Echobell:

- ตรวจสอบว่า webhook URL หรือที่อยู่อีเมลของช่องถูกต้อง
- ตรวจสอบว่าช่อง Echobell ยังใช้งานอยู่และมีผู้ติดตาม
- ตรวจดูบันทึกของ Alertmanager ว่ามีข้อผิดพลาดในการส่งหรือไม่
- ยืนยันว่า route ใน alertmanager.yml ชี้ไปยัง receiver ที่ต้องการจริง
- ทดสอบด้วยกฎการแจ้งเตือนแบบง่าย ๆ เพียงข้อเดียว
- หากใช้อีเมล ให้ตรวจสอบว่าการตั้งค่า SMTP ใช้งานได้และอีเมลถูกส่งออกจริง

## ความเป็นส่วนตัวและการจัดการข้อมูล

Echobell ให้ความเป็นส่วนตัวมาก่อน:

- เนื้อหาการแจ้งเตือนอยู่บนอุปกรณ์ของคุณ
- เซิร์ฟเวอร์เก็บเพียงข้อมูลการตั้งค่าเท่าที่จำเป็น
- ควรถือว่า webhook URL และที่อยู่อีเมลของช่องเป็นความลับ
- Echobell ไม่เก็บ payload ของการแจ้งเตือนของคุณไว้บนเซิร์ฟเวอร์

## แหล่งข้อมูลเพิ่มเติม

- [เอกสารของ Prometheus](https://prometheus.io/docs/introduction/overview/)
- [การตั้งค่า Alertmanager](https://prometheus.io/docs/alerting/latest/configuration/)
- [กฎการแจ้งเตือน](https://prometheus.io/docs/alerting/latest/alerting_rules/)
- [Webhook ของ Echobell](/docs/webhook)
- [เทมเพลตการแจ้งเตือน](/docs/notification)
- [เงื่อนไขและ Link Template](/docs/conditions)
- [ศูนย์ช่วยเหลือ](/docs/support)
