Panduan Perutean Peringatan Grafana

Node.js

Mengonfigurasi Peringatan Email Ganda di Grafana

Mengelola konfigurasi peringatan di Grafana seringkali memerlukan penyesuaian, terutama ketika kondisi yang berbeda memerlukan pemberitahuan ke titik kontak yang terpisah. Saat ini, sistem peringatan disiapkan untuk menangani semua situasi secara seragam dengan memberi tahu satu titik kontak, apa pun kondisi peringatan spesifiknya.

Tantangannya sekarang adalah menyempurnakan penyiapan ini dengan mengarahkan peringatan ke dua alamat email berbeda berdasarkan sifat pemicu peringatan—kesalahan versus kondisi yang cocok. Penyesuaian ini akan membantu komunikasi yang tepat sasaran dan memastikan bahwa tim yang tepat mengatasi masalah tertentu secara efisien.

Memerintah Keterangan
require('nodemailer') Memuat modul Nodemailer yang digunakan untuk mengirim email dari Node.js.
require('express') Memuat kerangka kerja Express untuk menangani fungsionalitas server web di Node.js.
express.json() Middleware di Express untuk mengurai payload JSON yang masuk.
createTransport() Membuat objek transporter yang dapat digunakan kembali menggunakan transport SMTP default.
sendMail() Mengirim email menggunakan objek transporter.
app.post() Mendefinisikan rute dan mengikatnya ke fungsi tertentu untuk dijalankan ketika rute dipicu oleh permintaan POST.
app.listen() Mulai menerima koneksi pada port yang ditentukan.
fetch() Fungsi browser asli digunakan untuk membuat permintaan web dan menangani respons.
setInterval() Menjadwalkan eksekusi berulang suatu fungsi pada interval yang ditentukan.

Menjelaskan Skrip Peringatan Grafana

Skrip yang disediakan berfungsi sebagai solusi backend dan frontend untuk mengelola notifikasi Grafana dengan titik kontak berbeda berdasarkan kondisi notifikasi. Skrip backend menggunakan Node.js dengan framework Express dan modul Nodemailer. Pengaturan ini memungkinkan pembuatan server web yang mendengarkan permintaan POST pada port tertentu. Ketika peringatan dipicu di Grafana, ia mengirimkan data ke server ini. Server kemudian menganalisis sifat peringatan—apakah itu karena kesalahan atau kondisi yang cocok—dan merutekan email ke titik kontak yang sesuai menggunakan Nodemailer.

Skrip front-end dirancang untuk menampilkan status peringatan secara dinamis pada halaman web menggunakan HTML biasa dan JavaScript. Ini secara berkala mengambil status peringatan dari backend dan memperbarui halaman web sesuai dengan itu. Hal ini sangat berguna untuk pemantauan real-time di lingkungan di mana tim yang berbeda mungkin perlu diberi informasi dengan cepat tentang jenis peringatan tertentu. Penggunaan 'fetch()' untuk membuat permintaan web dan 'setInterval()' untuk menyetel kecepatan refresh memastikan dasbor tetap mutakhir tanpa intervensi manual.

Perutean Email Dinamis di Grafana Alerts

Node.js dengan Nodemailer dan Grafana Webhook

const nodemailer = require('nodemailer');
const express = require('express');
const app = express();
const port = 3000;
app.use(express.json());
const transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: 'your-email@gmail.com',
    pass: 'your-password'
  }
});
app.post('/alert', (req, res) => {
  const { alertState, ruleId } = req.body;
  let mailOptions = {
    from: 'your-email@gmail.com',
    to: '',
    subject: 'Grafana Alert Notification',
    text: `Alert Details: ${JSON.stringify(req.body)}`
  };
  if (alertState === 'error') {
    mailOptions.to = 'contact-point1@example.com';
  } else if (alertState === 'ok') {
    mailOptions.to = 'contact-point2@example.com';
  }
  transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
      console.log('Error sending email', error);
      res.status(500).send('Email send failed');
    } else {
      console.log('Email sent:', info.response);
      res.send('Email sent successfully');
    }
  });
});
app.listen(port, () => console.log(`Server running on port ${port}`));

Visualisasi Frontend untuk Status Peringatan Grafana

JavaScript dengan HTML

<html>
<head>
<title>Grafana Alert Dashboard</title>
</head>
<body>
<div id="alertStatus"></div>
<script>
const fetchData = async () => {
  const response = await fetch('/alert/status');
  const data = await response.json();
  document.getElementById('alertStatus').innerHTML = `Current Alert Status: ${data.status}`;
};
fetchData();
setInterval(fetchData, 10000); // Update every 10 seconds
</script>
</body>
</html>

Manajemen Peringatan Tingkat Lanjut di Grafana

Dalam konfigurasi Grafana tingkat lanjut, mengelola peringatan berdasarkan berbagai kondisi dan mengirimkan pemberitahuan ke titik akhir yang berbeda dapat meningkatkan efisiensi operasional secara signifikan. Dengan memanfaatkan kerangka peringatan Grafana yang fleksibel, pengguna dapat menyiapkan aturan kompleks yang bereaksi berbeda bergantung pada pola data atau status sistem tertentu. Fleksibilitas ini sangat penting untuk sistem yang memerlukan tingkat keparahan respons berbeda atau departemen yang memerlukan informasi spesifik. Grafana memungkinkan pembuatan beberapa saluran notifikasi, yang dapat diarahkan ke berbagai alamat email atau sistem notifikasi lain seperti Slack, PagerDuty, atau SMS.

Menyiapkan konfigurasi tersebut melibatkan penentuan kondisi peringatan dalam Grafana dan penggunaan skrip eksternal atau API Grafana untuk meningkatkan fungsionalitas. Misalnya, dengan mengintegrasikan Grafana dengan solusi skrip seperti Node.js, seperti yang ditunjukkan, pengguna dapat memprogram logika yang disesuaikan untuk menangani status peringatan yang berbeda. Metode ini memberikan pendekatan yang lebih berbeda dalam manajemen peringatan, memastikan bahwa orang yang tepat mendapatkan informasi yang tepat pada waktu yang tepat, mungkin sebelum masalah menjadi lebih parah.

  1. Bagaimana cara membuat peringatan di Grafana?
  2. Anda dapat membuat peringatan langsung dari dasbor Grafana dengan memilih panel yang ingin Anda beri peringatan, lalu mengklik tab "Peringatan" dan mengatur kondisi yang akan memicu peringatan tersebut.
  3. Bisakah Grafana mengirim peringatan ke banyak penerima?
  4. Ya, Grafana dapat mengirimkan peringatan ke banyak penerima dengan mengonfigurasi beberapa saluran notifikasi dan mengaitkannya dengan aturan peringatan Anda.
  5. Apakah mungkin untuk menyesuaikan peringatan Grafana berdasarkan tingkat keparahan?
  6. Ya, Anda dapat menyesuaikan pemberitahuan berdasarkan tingkat keparahan dengan menggunakan kondisi berbeda dalam aturan pemberitahuan dan mengarahkannya ke saluran yang sesuai.
  7. Bisakah saya mengintegrasikan API eksternal dengan Grafana untuk peringatan yang lebih kompleks?
  8. Ya, Grafana mendukung integrasi dengan API eksternal, yang memungkinkan mekanisme peringatan yang lebih kompleks dan logika notifikasi yang disesuaikan.
  9. Bagaimana cara memastikan peringatan Grafana selalu terkirim, bahkan saat server downtime?
  10. Untuk memastikan peringatan dikirim selama waktu henti server, Anda harus mempertimbangkan untuk menghosting instance Grafana dan databasenya di server dengan ketersediaan tinggi atau menggunakan Grafana Cloud, yang menawarkan jaminan waktu aktif yang kuat.

Kemampuan untuk menyesuaikan notifikasi peringatan di Grafana ke penerima yang berbeda berdasarkan kondisi peringatan menawarkan keuntungan signifikan untuk pemantauan sistem dan respons insiden. Melalui penggunaan skrip di Node.js dan integrasi kemampuan peringatan fleksibel Grafana, administrator dapat memastikan bahwa informasi penting disampaikan dengan segera kepada pemangku kepentingan yang tepat, sehingga meningkatkan efisiensi dan daya tanggap operasional.