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
Masuk ke Konsol ARMS.
Pada panel navigasi kiri, pilih Alert Management > Integrations.
Pada tab Alert Integration, klik Nagios.
Pada kotak dialog Create Nagios Integration, masukkan nama dan deskripsi, tentukan periode pemulihan otomatis, lalu klik Save.
CatatanJika event peringatan tidak dipicu lagi dalam periode pemulihan otomatis, ARMS akan secara otomatis menutupnya.
Pada tab Alert Integration, temukan integrasi Nagios yang telah Anda buat dan salin URL pada kolom 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
Masuk ke server Nagios dan buka direktori plugins:
cd /usr/local/nagios/libexec/Buat file bernama
nagios-alert.pydengan konten berikut:PentingGanti
<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)Instal pustaka
requestsjika belum terinstal:pip install requests
Definisikan perintah Nagios
Buka file konfigurasi perintah Nagios:
vim /usr/local/nagios/etc/objects/commands.cfTambahkan 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$" }Simpan dan tutup file.
Perbarui perintah notifikasi kontak
Buka file konfigurasi kontak Nagios:
vim /usr/local/nagios/etc/objects/contacts.cfgTambahkan atau perbarui direktif perintah notifikasi berikut dalam definisi kontak:
service_notification_commands notify-service-by-alert host_notification_commands notify-host-by-alert
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
Pada tab Alert Integration, temukan integrasi tersebut dan klik Edit pada kolom Actions.
Pada bagian Event Mapping, klik Send Test Data.
Pada kotak dialog Send Test Data, tempel muatan peringatan JSON dan klik Send.
CatatanJika 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.
Pada kotak dialog Send Test Data, klik Disable.
Konfigurasikan pemetaan bidang
Pada panel kiri bagian Event Mapping, klik catatan data untuk melihat detailnya.
(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.
CatatanJika terdapat beberapa node array dalam data peringatan, Anda hanya dapat memilih satu untuk pemrosesan batch.
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
| Field | Description |
|---|---|
| alertname | Nama peringatan kustom. |
| severity | Tingkat severity peringatan. Harus menggunakan metode pemetaan Direct. |
| message | Deskripsi peringatan, digunakan sebagai konten notifikasi peringatan. Panjang maksimum: 15.000 karakter. |
| value | Nilai sampel metrik. |
| imageUrl | URL grafik garis metrik Grafana. |
| check | Item pemeriksaan peringatan, seperti CPU, JVM, Application Crash, atau Deployment. |
| source | Sumber peringatan. |
| class | Jenis objek yang memicu event peringatan, seperti host. |
| service | Layanan sumber, seperti Login Service. |
| startat | Timestamp untuk waktu mulai event. |
| endat | Timestamp untuk waktu akhir event. |
| generatorUrl | URL 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.
Deduplikasi hanya berlaku untuk event yang belum ditutup.
Pada bagian Event Deduplication di halaman Integration Details, pilih bidang yang akan digunakan untuk deduplikasi.
Klik Deduplication Test untuk melihat pratinjau hasil pengelompokan.
CatatanPengujian deduplikasi dijalankan terhadap 10 catatan data terbaru yang diunggah di bagian Event Mapping.
Klik Save.
Lihat detail event peringatan
Pada panel navigasi kiri, pilih Alert Management > Alert Event History.
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.
PentingSetelah memperbarui kunci, perbarui nilai
api_urldalam skripnagios-alert.pydan 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.