全部产品
Search
文档中心

Application Real-Time Monitoring Service:Integrasikan Nagios dengan ARMS

更新时间:Mar 11, 2026

Integrasikan Nagios dengan Application Real-Time Monitoring Service (ARMS) Alert Management untuk meneruskan peringatan host dan layanan dari Nagios ke ARMS. ARMS kemudian melakukan deduplikasi dan mengarahkan peringatan tersebut melalui kebijakan notifikasi.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Akun Alibaba Cloud dengan ARMS yang diaktifkan

  • Server Nagios yang sedang berjalan dengan akses administratif

  • Python yang diinstal pada server Nagios

  • Pustaka Python requests (diinstal selama penyiapan jika belum tersedia)

Langkah 1: Buat integrasi Nagios di ARMS

  1. Masuk ke Konsol ARMS.

  2. Pada panel navigasi kiri, pilih Alert Management > Integrations.

  3. Pada tab Alert Integration, klik Nagios.

  4. Pada kotak dialog Create Nagios Integration, masukkan nama dan deskripsi, tentukan periode pemulihan otomatis, lalu klik Save.

    Catatan

    Jika event peringatan tidak dipicu lagi dalam periode pemulihan otomatis, ARMS akan secara otomatis menutupnya.

  5. Pada tab Alert Integration, temukan integrasi Nagios yang telah Anda buat dan salin URL pada kolom Integration Address.

    Copy the integration address

Langkah 2: Konfigurasikan Nagios untuk meneruskan peringatan

Buat skrip Python pada server Nagios untuk mengirim data peringatan ke titik akhir integrasi ARMS, lalu konfigurasikan perintah dan kontak Nagios agar memanggil skrip tersebut.

Buat skrip notifikasi peringatan

  1. Masuk ke server Nagios dan buka direktori plugins:

    cd /usr/local/nagios/libexec/
  2. Buat file bernama nagios-alert.py dengan konten berikut:

    Penting

    Ganti <your-integration-url> dengan alamat integrasi yang Anda salin pada Langkah 1.

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import requests
    import json
    import sys
    import os
    
    headers = {'Content-Type': 'application/json;charset=utf-8'}
    api_url = "<your-integration-url>"  # Ganti dengan alamat integrasi dari Langkah 1
    
    def parse(sys):
        object_type = str(sys.argv[1])
        notification_type = str(sys.argv[2])
        host_name = str(sys.argv[3])
        host_ip = str(sys.argv[4])
        state = str(sys.argv[5])
        time = str(sys.argv[6])
        info = str(sys.argv[7])
    
        if object_type == 'host':
            description = "[{}] {} alert: {} is {}".format(notification_type, object_type, host_name, state)
            service = ""
        else:
            service = str(sys.argv[8])
            description = "[{}] {} alert: {}/{} is {}".format(notification_type, object_type, host_name, service, state)
        content_dict = {'service':""}
        content_dict['object_type'] = object_type
        content_dict['notification_type'] = notification_type
        content_dict['host_name'] = host_name
        content_dict['host_ip'] = host_ip
        content_dict['state'] = state
        content_dict['time'] = time
        content_dict['info'] = info
        content_dict['service'] = service
        content_dict['description'] = description
        print(content_dict)
        return content_dict
    
    
    def msg(text):
        result = requests.post(url=api_url, data=json.dumps(text), headers=headers)
        print(result)
    
    
    if __name__ == '__main__':
        text = parse(sys)
        msg(text)
  3. Instal pustaka requests jika belum terinstal:

    pip install requests

Definisikan perintah Nagios

  1. Buka file konfigurasi perintah Nagios:

    vim /usr/local/nagios/etc/objects/commands.cf
  2. Tambahkan definisi perintah berikut ke dalam file:

    define command{
        command_name notify-host-by-alert
        command_line python /usr/local/nagios/libexec/nagios-alert.py "host" "$NOTIFICATIONTYPE$" "$HOSTALIAS$" "$HOSTADDRESS$" "$HOSTSTATE$" "$LONGDATETIME$" "$HOSTOUTPUT$"
        }
    
    define command{
        command_name notify-service-by-alert
        command_line python /usr/local/nagios/libexec/nagios-alert.py "service" "$NOTIFICATIONTYPE$" "$HOSTALIAS$" "$HOSTADDRESS$" "$SERVICESTATE$" "$LONGDATETIME$" "$SERVICEOUTPUT$" "$SERVICEDESC$"
        }
  3. Simpan dan tutup file.

Perbarui perintah notifikasi kontak

  1. Buka file konfigurasi kontak Nagios:

    vim /usr/local/nagios/etc/objects/contacts.cfg
  2. Tambahkan atau perbarui direktif perintah notifikasi berikut dalam definisi kontak:

    service_notification_commands   notify-service-by-alert
    host_notification_commands      notify-host-by-alert

    Update the contacts.cfg file

  3. Simpan dan tutup file.

Restart Nagios

Jalankan perintah berikut untuk menerapkan perubahan:

systemctl restart nagios

(Opsional) Langkah 3: Sesuaikan pemetaan bidang

ARMS menyediakan pemetaan bidang default antara data peringatan Nagios dan event peringatan ARMS. Untuk menambah atau memodifikasi pemetaan ini, edit integrasinya.

JSON berikut menunjukkan contoh muatan peringatan Nagios:

{
    "info": "SWAP CRITICAL - 0% free (0 MB out of 0 MB) - Swap is either disabled, not present, or of zero size.",
    "description": "[PROBLEM] service alert: localhost/Swap Usage is CRITICAL",
    "service": "Swap Usage",
    "host_ip": "127.0.0.1",
    "state": "CRITICAL",
    "object_type": "service",
    "time": "Tue Sep 14 10:46:49 CST 2021",
    "notification_type": "PROBLEM",
    "host_name": "localhost"
}

Kirim data uji

  1. Pada tab Alert Integration, temukan integrasi tersebut dan klik Edit pada kolom Actions.

  2. Pada bagian Event Mapping, klik Send Test Data.

  3. Pada kotak dialog Send Test Data, tempel muatan peringatan JSON dan klik Send.

    Catatan
    • Jika muncul pesan "Uploaded. No events are generated. Configure mappings based on the original data.", artinya bidang sumber belum dipetakan. Data yang diunggah akan ditampilkan di panel kiri agar Anda dapat memilih bidang saat mengonfigurasi pemetaan.

    • Jika muncul pesan "Uploaded.", konten peringatan telah dilaporkan ke halaman Alert Event History. Untuk informasi lebih lanjut, lihat View historical alert events.

  4. Pada kotak dialog Send Test Data, klik Disable.

Konfigurasikan pemetaan bidang

  1. Pada panel kiri bagian Event Mapping, klik catatan data untuk melihat detailnya.

  2. (Opsional) Pada bagian Select Root Node, aktifkan pemrosesan batch jika data peringatan berisi node array. Pilih node array yang akan digunakan sebagai root node. Sistem akan memproses data di bawah node tersebut secara batch.

    Catatan

    Jika terdapat beberapa node array dalam data peringatan, Anda hanya dapat memilih satu untuk pemrosesan batch.

  3. Pada bagian Map Source Fields to Target Fields, petakan bidang sumber ke bidang peringatan ARMS. Klik ikon Map untuk memilih metode pemetaan:

    • Direct — Memetakan satu bidang sumber ke satu bidang peringatan ARMS.

    • Series — Menggabungkan beberapa bidang sumber dengan pembatas (hanya karakter khusus), lalu memetakan hasilnya ke bidang peringatan ARMS.

    • Condition — Memetakan bidang sumber ke bidang peringatan ARMS hanya jika nilainya memenuhi kondisi tertentu.

    • Mapping table — Memetakan tingkat severity dari sumber peringatan ke tingkat severity ARMS. Gunakan metode ini hanya untuk bidang severity.

Bidang peringatan ARMS

FieldDescription
alertnameNama peringatan kustom.
severityTingkat severity peringatan. Harus menggunakan metode pemetaan Direct.
messageDeskripsi peringatan, digunakan sebagai konten notifikasi peringatan. Panjang maksimum: 15.000 karakter.
valueNilai sampel metrik.
imageUrlURL grafik garis metrik Grafana.
checkItem pemeriksaan peringatan, seperti CPU, JVM, Application Crash, atau Deployment.
sourceSumber peringatan.
classJenis objek yang memicu event peringatan, seperti host.
serviceLayanan sumber, seperti Login Service.
startatTimestamp untuk waktu mulai event.
endatTimestamp untuk waktu akhir event.
generatorUrlURL halaman detail event.

Konfigurasikan deduplikasi event

Deduplikasi event menggabungkan beberapa event yang memiliki nilai sama pada bidang tertentu menjadi satu notifikasi peringatan, sehingga mengurangi kebisingan.

Catatan

Deduplikasi hanya berlaku untuk event yang belum ditutup.

  1. Pada bagian Event Deduplication di halaman Integration Details, pilih bidang yang akan digunakan untuk deduplikasi.

  2. Klik Deduplication Test untuk melihat pratinjau hasil pengelompokan.

    Catatan

    Pengujian deduplikasi dijalankan terhadap 10 catatan data terbaru yang diunggah di bagian Event Mapping.

  3. Klik Save.

Lihat detail event peringatan

  1. Pada panel navigasi kiri, pilih Alert Management > Alert Event History.

  2. Klik nama event peringatan untuk melihat detailnya. Untuk informasi lebih lanjut, lihat View historical alert events.

Manage integrations

Pada tab Alert Integration (Alert Management > Integrations), kelola integrasi Anda dengan operasi berikut:

  • View details — Klik baris integrasi untuk membuka halaman Integration Details.

  • Update key — Pilih More > Update Key pada kolom Actions, lalu klik OK.

    Penting

    Setelah memperbarui kunci, perbarui nilai api_url dalam skrip nagios-alert.py dan restart Nagios. Lihat Langkah 2: Konfigurasikan Nagios untuk meneruskan peringatan.

  • Edit — Klik Edit pada kolom Actions untuk memodifikasi integrasi di halaman Integration Details, lalu klik Save.

  • Enable or disable — Klik Enable atau Disable pada kolom Actions.

  • Delete — Klik Delete pada kolom Actions, lalu klik OK.

  • Add an event processing flow — Klik Add Event Processing Flow pada kolom Actions. Untuk informasi lebih lanjut, lihat Work with event processing flows.

  • Create a notification policy — Pilih More > Create Notification Policy pada kolom Actions. Untuk informasi lebih lanjut, lihat Create and manage a notification policy.

Langkah selanjutnya

Setelah membuat kebijakan notifikasi, ARMS akan menghasilkan peringatan dan mengirimkan notifikasi untuk event peringatan yang masuk berdasarkan kebijakan tersebut. Untuk informasi lebih lanjut, lihat Create and manage a notification policy.

Untuk meninjau peringatan yang telah dikirim, buka halaman Alert Sending History. Untuk informasi lebih lanjut, lihat View historical alerts.