update
This commit is contained in:
@@ -0,0 +1 @@
|
||||
.env-example
|
||||
15
.env-example
Normal file
15
.env-example
Normal file
@@ -0,0 +1,15 @@
|
||||
PORT=3000
|
||||
|
||||
DB_PORT=
|
||||
DB_NAME=
|
||||
DB_USERNAME=
|
||||
DB_PASSWORD=
|
||||
DB_HOST=
|
||||
|
||||
SMTP_PORT=
|
||||
SMTP_HOST=
|
||||
SMTP_SENDER=
|
||||
AUTH_EMAIL=
|
||||
AUTH_PASSWORD=
|
||||
|
||||
ALERT_EMAIL=xxx@gmail.com,yyy@gmail.com
|
||||
@@ -8,6 +8,8 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
@@ -119,6 +121,78 @@ func Route(db *gorm.DB) {
|
||||
w.Write([]byte("success"))
|
||||
}))
|
||||
|
||||
http.HandleFunc("/server-down-notification", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodGet {
|
||||
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
||||
}
|
||||
|
||||
sessionID := helper.GenerateSessionID()
|
||||
module := "SERVER DOWN NOTIFICATION"
|
||||
log.Printf("%+v %+v request %+v", sessionID, module, nil)
|
||||
|
||||
subject := "Server Down 🚨"
|
||||
|
||||
sendTo := strings.Split(os.Getenv("ALERT_EMAIL"), ",")
|
||||
|
||||
type Data struct {
|
||||
TimeAt string
|
||||
Host string
|
||||
}
|
||||
|
||||
data := Data{TimeAt: time.Now().Format("2006-01-02 15:04:05"), Host: "36.66.3.44"}
|
||||
|
||||
htmlString := helper.ParseHTML("template/server-down.html", data)
|
||||
|
||||
go func() {
|
||||
log.Printf("%+v %+v SENDING EMAIL TO %+v", sessionID, module, sendTo)
|
||||
err := helper.SendEmail(sendTo, sendTo, "", subject, "", htmlString)
|
||||
if err != nil {
|
||||
log.Printf("%+v %+v response %+v", sessionID, module, err.Error())
|
||||
} else {
|
||||
log.Printf("%+v %+v EMAIL SENT TO %+v", sessionID, module, sendTo)
|
||||
}
|
||||
}()
|
||||
|
||||
log.Printf("%+v %+v response %+v", sessionID, module, "success")
|
||||
w.Write([]byte("success"))
|
||||
}))
|
||||
|
||||
http.HandleFunc("/high-memory-notification", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodGet {
|
||||
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
||||
}
|
||||
|
||||
sessionID := helper.GenerateSessionID()
|
||||
module := "HIGH MEMORY USAGE NOTIFICATION"
|
||||
log.Printf("%+v %+v request %+v", sessionID, module, nil)
|
||||
|
||||
subject := "High Memory Usage 🚨"
|
||||
|
||||
sendTo := strings.Split(os.Getenv("ALERT_EMAIL"), ",")
|
||||
|
||||
type Data struct {
|
||||
TimeAt string
|
||||
Host string
|
||||
}
|
||||
|
||||
data := Data{TimeAt: time.Now().Format("2006-01-02 15:04:05"), Host: "36.66.3.44"}
|
||||
|
||||
htmlString := helper.ParseHTML("template/high-memory-usage.html", data)
|
||||
|
||||
go func() {
|
||||
log.Printf("%+v %+v SENDING EMAIL TO %+v", sessionID, module, sendTo)
|
||||
err := helper.SendEmail(sendTo, sendTo, "", subject, "", htmlString)
|
||||
if err != nil {
|
||||
log.Printf("%+v %+v response %+v", sessionID, module, err.Error())
|
||||
} else {
|
||||
log.Printf("%+v %+v EMAIL SENT TO %+v", sessionID, module, sendTo)
|
||||
}
|
||||
}()
|
||||
|
||||
log.Printf("%+v %+v response %+v", sessionID, module, "success")
|
||||
w.Write([]byte("success"))
|
||||
}))
|
||||
|
||||
http.HandleFunc("*", middleware.ResponseTimeMiddleware(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(404)
|
||||
w.Write([]byte("what are you looking for!?"))
|
||||
|
||||
58
template/high-memory-usage.html
Normal file
58
template/high-memory-usage.html
Normal file
@@ -0,0 +1,58 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>🚨 Penggunaan Memori Tinggi</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #f2f4f6;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
background-color: #ffffff;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
max-width: 100%;
|
||||
margin: auto;
|
||||
border: 1px solid #e0e0e0;
|
||||
}
|
||||
.header {
|
||||
color: #d62828;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.info {
|
||||
font-size: 14px;
|
||||
color: #333333;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.footer {
|
||||
font-size: 12px;
|
||||
color: #888;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">🚨 Peringatan: Penggunaan Memori Tinggi</div>
|
||||
|
||||
<div class="info">
|
||||
<strong>🖥 Host:</strong> {{.Host}}<br />
|
||||
<strong>📊 Penggunaan RAM:</strong> Melebihi 85%<br />
|
||||
<strong>🕒 Waktu Deteksi:</strong> {{.TimeAt}}<br />
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Penggunaan memori pada server telah melebihi batas yang diizinkan. Mohon
|
||||
segera lakukan pemeriksaan untuk menghindari potensi gangguan layanan.
|
||||
</p>
|
||||
|
||||
<div class="footer">
|
||||
Email ini dikirim secara otomatis oleh sistem monitoring. Terima kasih.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
59
template/server-down.html
Normal file
59
template/server-down.html
Normal file
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>🚨 Server Down</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #f6f8fa;
|
||||
color: #333;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
background-color: #ffffff;
|
||||
border-radius: 8px;
|
||||
padding: 20px;
|
||||
border: 1px solid #e1e4e8;
|
||||
max-width: 100%;
|
||||
margin: auto;
|
||||
}
|
||||
.header {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: #e63946;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.info {
|
||||
margin: 10px 0;
|
||||
}
|
||||
.footer {
|
||||
font-size: 12px;
|
||||
color: #888;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
🚨 Peringatan: Server Down
|
||||
</div>
|
||||
|
||||
<div class="info">
|
||||
<strong>🕒 Waktu Deteksi:</strong> {{.TimeAt}}<br />
|
||||
<strong>🌐 Host / Endpoint:</strong> {{.Host}}<br />
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Mohon segera lakukan pengecekan pada sistem terkait agar layanan dapat
|
||||
kembali normal.
|
||||
</p>
|
||||
|
||||
<div class="footer">
|
||||
Email ini dikirim secara otomatis oleh sistem monitoring.<br />
|
||||
Terima kasih atas perhatian dan tindak lanjutnya.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user