damv1alertdaemon2025


Namedamv1alertdaemon2025 JSON
Version 1.0.0 PyPI version JSON
download
home_pageNone
Summarydevelopment damv1alertdaemon2025 package
upload_time2025-08-21 03:31:36
maintainerNone
docs_urlNone
authordhonyabumuhammad (Bekasi)
requires_python>=3.0
licenseNone
keywords alertdaemon2025 discord_cleanup_daemon discord_sender polling-logs grafana_url_generator
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## Pkg 🔹 damv1alertdaemon2025
<b>[ Monitoring Loki Grafana Alert System – Eco Mode Enhanced ]</b> <br />

Ringkasan: <br />
Package ini adalah sistem polling dan pengiriman alert dari Loki ke Discord, dengan dukungan Eco Mode yang mengatur perilaku bundle dan single alert agar lebih efisien pada waktu tertentu. Seluruh komponen sudah divalidasi untuk memastikan presisi logika, kompatibilitas antar modul, dan kesesuaian format output.

<br />
Installation
<pre>
❯ pip install damv1alertdaemon2025
</pre>

<br />
Logic Features → +Eco Mode
<pre>
  Mode             Format / Template      Panjang Maks   Isi Log Maks    Tujuan                              
  ---------------- ---------------------- -------------- --------------- -----------------------------------
  Bundle (Normal)  Detail + sectioned     2000 chars     800 chars/log   Penuh, sesuai header + log konteks  
  Single (Normal)  Per alert, detail      2000 chars     800 chars/log   Penuh, hanya 1 alert per pesan        
  Bundle (Eco)     Ringkasan (compact)    2000 chars          -          Efisien, rekap singkat per alert    
  Single (Eco)     Ringkasan (compact)    2000 chars          -          Efisien, rekap singkat per alert 
</pre>

<br />
Prinsip kerja:

- Non-Eco Mode: Bundle & single bekerja seperti normal.
- Eco Mode: Semua alert (bundle maupun single) otomatis mengikuti format Eco Mode yang lebih ringkas.

<br />

<b>Validasi Struktural & Fungsi Global.</b>

1.  `build_section()`
    - Sudah direfaktor menjadi fungsi global reusable di `discord_sender.py`.
    - Digunakan oleh `send_discord_bundle_messages()` dan `send_discord_bundle_messages_eco()`.

    <br />

2.  `polling_state_eco`
    - Terintegrasi di:
      - polling_state_manager.py
      - enqueue_alerts()
      - process_alerts()
      - send_discord_bundle_messages_eco() (menandai label direktori eco-mode di log).

    <br />

3.  Struktur direktori terpisah
    - Normal mode → temp/polling_state/
    - Eco mode → temp/polling_state_eco/

<br />

---

<b>Validasi Kompatibilitas & Konsistensi.</b>
<pre>
Komponen                        Status                     Catatan Tambahan                                                                  
------------------------------  -------------------------  ----------------------------------------------------------------------------------
discord_sender.py               ✅ Refactor lengkap         Fungsi build_section, send_discord_bundle_messages, send_discord_bundle_messages_eco selaras
alert_daemon.py                 ✅ Kompatibel penuh         Sudah adaptif terhadap polling_state_path dan eco_mode
polling_state_manager.py        ✅ Refactor modular         Mendukung path ganda untuk polling state
enqueue_alerts()                ✅ Kompatibel               Path polling state sudah berdasarkan eco_mode
process_alerts()                ✅ Presisi logika bundle    ECO dan NON-ECO mode sudah dipisah logika polling state-nya
Validasi ISO time & timezone    ✅ Presisi                  Semua konversi datetime sudah menggunakan Asia/Jakarta
Pola aman known_safe_patterns   ✅ Berfungsi                Rotasi dan validasi sudah lengkap
Output log/debug Discord        ✅ Konsisten                Label ECO dan direktori bundle dicetak di log
discord_delete_filters          ✅ Sesuai                   Aturan cleanup pesan Discord mengikuti filter author, is_bot, channel, usia (created_at_older_than)
config_loader.py                ✅ Konsisten                ENV_FILE dan alert-config/*.json sudah ter-parse dengan fallback default
cleanup_daemon.py               ✅ Selaras                  Usia pesan Discord diverifikasi dengan CLEANUP_OLD_ENTRIES_SECONDS & created_at_older_than
eco_mode (alert-config)         ✅ Valid                    Interval, start_hour, end_hour, timezone sudah teruji
patterns_messages_discord       ✅ Akurat                   Regex validasi pesan Discord (bundle/single/eco) sudah cocok dengan output
polling_state_ttl_seconds       ✅ Efektif                  TTL file polling_state kedaluwarsa otomatis sesuai konfigurasi
restart_info_handler            ✅ Lengkap                  Informasi restart tersimpan di temp/last_restart_info.json dan terbaca saat startup
timestamp_store                 ✅ Konsisten                Penyimpanan timestamp query di last_timestamps.json sesuai alur polling                     
</pre>

<br />

---

<b>Konfigurasi .env & Variabel config:</b> <br />
Berikut adalah daftar environment variable dan variabel config yang digunakan pada project_x/main.py dan dapat di-customize oleh pengguna di proyek lain:
<pre>
Komponen                          Status                     Catatan Tambahan                                                                  
-------------------------------   -------------------------  ----------------------------------------------------------------------------------
ALERT_CONFIG_PATH                 str                        Path file konfigurasi alert (default: ./alert-config/alerts.json)
CHANNEL_ID                        int                        ID channel Discord (cleanup) (default: None)
CLEANUP_MODE                      str                        Mode cleanup: simulate atau execute (default: simulate)
CLEANUP_OLD_ENTRIES_SECONDS       int                        TTL untuk entri lama di last_timestamps.json, default 86400 detik (24 jam). Digunakan untuk housekeeping log lama, bukan untuk pesan Discord
DEFAULT_BUNDLE_MODE               str                        Mode bundle default untuk pengiriman alert. Nilai: bundle atau split (default: bundle)
DEFAULT_END_OFFSET                int                        Offset akhir default (detik) (default: 3)
DEFAULT_OFFSET                    dict                       Offset gabungan {start_offset, end_offset} yang dipakai saat query Loki jika tidak override (default: {'start_offset': 3, 'end_offset': 3})
DEFAULT_OFFSET_ECO                int                        Offset default (detik) khusus eco-mode (default: 3)
DEFAULT_OFFSET_END                int                        Offset akhir default (detik) (default: 3)
DEFAULT_OFFSET_START              int                        Offset awal default (detik) (default: 3)
DEFAULT_POLLING_STATE_DIR         str                        Direktori default untuk menyimpan polling state (default: temp/polling_state)
DEFAULT_POLLING_STATE_ECO_DIR     str                        Direktori default untuk polling state saat eco-mode aktif (default: temp/polling_state_eco)
DEFAULT_START_OFFSET              int                        Offset awal default (detik) (default: 3)
DELAY_BUFFER_SECONDS              int                        Buffer delay (detik) sebelum mengambil data log dari Loki (default: 2)
DISCORD_LOG_CHAR_LIMIT            int                        Batas karakter per log yang di-embed di pesan Discord (default: 800)
DISCORD_MAX_LENGTH                int                        Batas total karakter untuk satu payload pesan Discord (default: 2000)
DISCORD_TOKEN                     str                        Token bot Discord (mode cleanup) (default: None)
DISCORD_WEBHOOK_URL               str                        Webhook Discord untuk alert (default: None)
ECO_CONFIG                        dict                       Konfigurasi eco-mode (enabled, jam start/end, polling interval, timezone, include_single_mode). Default: {'enabled': True, 'start_hour': 14, 'end_hour': 16, 'polling_interval': 60, 'timezone': 'Asia/Jakarta', 'include_single_mode': True}
ECO_POLL_INTERVAL                 int                        Interval polling eco-mode (detik) (default: 60)
GRAFANA_BASE_URL                  str                        Base URL Grafana (default: None)
GRAFANA_DATASOURCE_UID            str                        UID datasource Grafana (default: None)
KNOWN_SAFE_PATTERNS_META_PATH     str                        Path file metadata rotasi pola aman (default: ./temp/known_safe_patterns_meta.json)
KNOWN_SAFE_PATTERNS_PATH          str                        Path file JSON berisi pola aman yang sudah disimpan (default: ./temp/known_safe_patterns.json)
KNOWN_SAFE_PATTERNS_ROTATE_HOURS  int                        Jam rotasi pola aman (default: 24)
LIMIT                             int                        Batas jumlah log per query (default: 100)
LOKI_URL                          str                        URL endpoint Loki (default: None)
POLL_INTERVAL                     int                        Interval polling (detik) (default: 30)
POLLING_STATE_TTL_SECONDS         int                        TTL untuk file polling state di temp/polling_state/, default 3600 detik (1 jam). Setelah lewat TTL, file polling state akan dihapus otomatis
PROCESSED_IDS_WINDOW_SECONDS      int                        Window waktu (detik) untuk menyaring ID log yang sudah diproses agar tidak duplikat (default: 10)
RESTART_INFO_PATH                 str                        Path file untuk menyimpan informasi restart terakhir (default: ./temp/last_restart_info.json)
SCAN_LIMIT                        int                        Batas scan pesan Discord (cleanup) (default: 50)
THREAD_MONITOR_INTERVAL           int                        Interval monitor thread (detik) (default: 60)
TIMESTAMP_STORE                   str                        Nama file penyimpanan timestamp hasil polling (default: last_timestamps.json)

</pre>

<br />

<b>ECO MODE CONFIGURATION (eco_mode)</b> <br />

Fitur ECO Mode digunakan untuk mengurangi frekuensi polling dan notifikasi selama periode waktu tertentu, 
misalnya di luar jam kerja, dengan tetap mengumpulkan data untuk diproses nanti.

<pre>
Struktur Konfigurasi:
  "eco_mode": {
    "enabled": true,
    "start_hour": 23,
    "end_hour": 4,
    "polling_interval": 60,
    "timezone": "Asia/Jakarta",
    "include_single_mode": true
  }
</pre>

Penjelasan Parameter:
- enabled: (boolean) Aktifkan atau nonaktifkan ECO Mode.
- start_hour: (integer) Jam mulai ECO Mode (0-23, dalam zona waktu yang ditentukan).
- end_hour: (integer) Jam berakhir ECO Mode (0-23). 
  Jika end_hour < start_hour (contoh: 23 → 4), rentang melewati tengah malam dan tetap didukung.
- polling_interval: (detik) Interval polling saat ECO Mode aktif. Nilai harus lebih besar dari POLL_INTERVAL normal.
- timezone: Zona waktu acuan. Harus valid sesuai database IANA (contoh: "Asia/Jakarta").
- include_single_mode: (boolean) Jika true, alert dengan mode "single" tetap diproses meskipun dalam ECO Mode.

<br />

Catatan:
- Semua nilai dapat di-override melalui ENV atau file `.env`.
- `ECO_POLL_INTERVAL` memiliki prioritas: ENV > `ECO_CONFIG` > default.
- ECO Mode dievaluasi setiap siklus polling berdasarkan waktu sistem saat ini.
- Konfigurasi bersifat harian (tidak bisa dijadwalkan per tanggal spesifik).
- Saat ECO Mode aktif, bundle alert dikirim dalam format ringkasan (eco) dan polling berjalan lebih lambat.

&nbsp;

---

<b>Struktur File Konfigurasi: alert-config/*.json:</b> <br />
File konfigurasi yang berisi aturan pemantauan log Loki, pengiriman alert ke Discord, pola validasi pesan, dan aturan cleanup pesan.
<pre>

Komponen                         Status        Catatan Tambahan
-------------------------------  ------------  ------------------------------------------------------------------------
default_offset                   dict          Offset default untuk query ke Loki.
                                                - start_offset (int): offset awal (detik) (default: 3)
                                                - end_offset (int): offset akhir (detik) (default: 3)

default_bundle_mode              str           Mode bundle default untuk alert.
                                                - "bundle": alert digabungkan
                                                - "single": alert dikirim satu per satu
                                                (default: bundle)

eco_mode                         dict          Konfigurasi eco-mode polling.
                                                - enabled (bool): aktif/tidak eco-mode
                                                - start_hour (int): jam mulai eco (0-23)
                                                - end_hour (int): jam selesai eco (0-23)
                                                - polling_interval (int): interval polling (detik)
                                                - timezone (str): zona waktu (contoh: Asia/Jakarta)
                                                - include_single_mode (bool): apakah alert mode "single" ikut di eco-mode

alerts                           list          Daftar alert yang akan dipantau.
  ├─ title                       str           Judul alert (deskripsi singkat).
  ├─ category                    str           Kategori alert (misal: Database, JavaException, Monitoring).
  ├─ query                       str           Query Loki untuk mendeteksi alert.
  ├─ start_offset                int           (opsional) offset awal khusus alert ini (override default_offset.start).
  ├─ end_offset                  int           (opsional) offset akhir khusus alert ini (override default_offset.end).
  ├─ mode                        str           (opsional) mode alert: "bundle" atau "single".
  ├─ include_bundle_header       bool          (opsional) apakah header bundle disertakan dalam pesan Discord.
  ├─ polling_delay               int           (opsional) delay tambahan polling (detik).
  └─ mentions                    list[str]     (opsional) daftar mention Discord, contoh: ["@here", "<@1234567890>"]

patterns_messages_discord        dict          Definisi pola regex untuk mengenali pesan Discord yang dihasilkan alert.
  ├─ KNOWN_PATTERNS_CONTENT      list[dict]    Pola regex untuk isi pesan alert Discord (mode bundle/single).
      ├─ name                    str           Nama pola (deskripsi pola regex).
      └─ regex                   str           Regex pattern untuk validasi isi pesan.
  └─ KNOWN_PATTERNS_EMBED        list[dict]    Pola regex untuk pesan dalam bentuk embed.
      ├─ name                    str           Nama pola (deskripsi pola regex).
      └─ regex                   str           Regex pattern untuk validasi embed alert.

discord_delete_filters           dict          Filter untuk proses cleanup pesan di Discord.
  ├─ author                      str           Nama author pesan (misal: "damv1 alert#0000").
  ├─ is_bot                      bool          Apakah pesan berasal dari bot (default: true).
  ├─ channel_name                str           Nama channel Discord target (contoh: "#alarm-alert").
  ├─ guild_name                  str           Nama guild/server Discord.
  ├─ status_content              str           Status konten yang dikenali (misal: "recognized").
  ├─ pattern_source              str           Sumber pola untuk validasi pesan (misal: "KNOWN_PATTERNS_CONTENT").
  └─ created_at_older_than       str           Batas usia pesan yang akan dihapus. Format waktu:
                                                - "20m" = 20 menit
                                                - "1h"  = 1 jam
                                                - "1d"  = 1 hari
</pre>

&nbsp;



            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "damv1alertdaemon2025",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.0",
    "maintainer_email": null,
    "keywords": "alertdaemon2025, discord_cleanup_daemon, discord_sender, polling-logs, grafana_url_generator",
    "author": "dhonyabumuhammad (Bekasi)",
    "author_email": "<baba-rtw24133@tutamail.com>",
    "download_url": null,
    "platform": null,
    "description": "## Pkg \ud83d\udd39 damv1alertdaemon2025\n<b>[ Monitoring Loki Grafana Alert System \u2013 Eco Mode Enhanced ]</b> <br />\n\nRingkasan: <br />\nPackage ini adalah sistem polling dan pengiriman alert dari Loki ke Discord, dengan dukungan Eco Mode yang mengatur perilaku bundle dan single alert agar lebih efisien pada waktu tertentu. Seluruh komponen sudah divalidasi untuk memastikan presisi logika, kompatibilitas antar modul, dan kesesuaian format output.\n\n<br />\nInstallation\n<pre>\n\u276f pip install damv1alertdaemon2025\n</pre>\n\n<br />\nLogic Features \u2192 +Eco Mode\n<pre>\n  Mode             Format / Template      Panjang Maks   Isi Log Maks    Tujuan                              \n  ---------------- ---------------------- -------------- --------------- -----------------------------------\n  Bundle (Normal)  Detail + sectioned     2000 chars     800 chars/log   Penuh, sesuai header + log konteks  \n  Single (Normal)  Per alert, detail      2000 chars     800 chars/log   Penuh, hanya 1 alert per pesan        \n  Bundle (Eco)     Ringkasan (compact)    2000 chars          -          Efisien, rekap singkat per alert    \n  Single (Eco)     Ringkasan (compact)    2000 chars          -          Efisien, rekap singkat per alert \n</pre>\n\n<br />\nPrinsip kerja:\n\n- Non-Eco Mode: Bundle & single bekerja seperti normal.\n- Eco Mode: Semua alert (bundle maupun single) otomatis mengikuti format Eco Mode yang lebih ringkas.\n\n<br />\n\n<b>Validasi Struktural & Fungsi Global.</b>\n\n1.  `build_section()`\n    - Sudah direfaktor menjadi fungsi global reusable di `discord_sender.py`.\n    - Digunakan oleh `send_discord_bundle_messages()` dan `send_discord_bundle_messages_eco()`.\n\n    <br />\n\n2.  `polling_state_eco`\n    - Terintegrasi di:\n      - polling_state_manager.py\n      - enqueue_alerts()\n      - process_alerts()\n      - send_discord_bundle_messages_eco() (menandai label direktori eco-mode di log).\n\n    <br />\n\n3.  Struktur direktori terpisah\n    - Normal mode \u2192 temp/polling_state/\n    - Eco mode \u2192 temp/polling_state_eco/\n\n<br />\n\n---\n\n<b>Validasi Kompatibilitas & Konsistensi.</b>\n<pre>\nKomponen                        Status                     Catatan Tambahan                                                                  \n------------------------------  -------------------------  ----------------------------------------------------------------------------------\ndiscord_sender.py               \u2705 Refactor lengkap         Fungsi build_section, send_discord_bundle_messages, send_discord_bundle_messages_eco selaras\nalert_daemon.py                 \u2705 Kompatibel penuh         Sudah adaptif terhadap polling_state_path dan eco_mode\npolling_state_manager.py        \u2705 Refactor modular         Mendukung path ganda untuk polling state\nenqueue_alerts()                \u2705 Kompatibel               Path polling state sudah berdasarkan eco_mode\nprocess_alerts()                \u2705 Presisi logika bundle    ECO dan NON-ECO mode sudah dipisah logika polling state-nya\nValidasi ISO time & timezone    \u2705 Presisi                  Semua konversi datetime sudah menggunakan Asia/Jakarta\nPola aman known_safe_patterns   \u2705 Berfungsi                Rotasi dan validasi sudah lengkap\nOutput log/debug Discord        \u2705 Konsisten                Label ECO dan direktori bundle dicetak di log\ndiscord_delete_filters          \u2705 Sesuai                   Aturan cleanup pesan Discord mengikuti filter author, is_bot, channel, usia (created_at_older_than)\nconfig_loader.py                \u2705 Konsisten                ENV_FILE dan alert-config/*.json sudah ter-parse dengan fallback default\ncleanup_daemon.py               \u2705 Selaras                  Usia pesan Discord diverifikasi dengan CLEANUP_OLD_ENTRIES_SECONDS & created_at_older_than\neco_mode (alert-config)         \u2705 Valid                    Interval, start_hour, end_hour, timezone sudah teruji\npatterns_messages_discord       \u2705 Akurat                   Regex validasi pesan Discord (bundle/single/eco) sudah cocok dengan output\npolling_state_ttl_seconds       \u2705 Efektif                  TTL file polling_state kedaluwarsa otomatis sesuai konfigurasi\nrestart_info_handler            \u2705 Lengkap                  Informasi restart tersimpan di temp/last_restart_info.json dan terbaca saat startup\ntimestamp_store                 \u2705 Konsisten                Penyimpanan timestamp query di last_timestamps.json sesuai alur polling                     \n</pre>\n\n<br />\n\n---\n\n<b>Konfigurasi .env & Variabel config:</b> <br />\nBerikut adalah daftar environment variable dan variabel config yang digunakan pada project_x/main.py dan dapat di-customize oleh pengguna di proyek lain:\n<pre>\nKomponen                          Status                     Catatan Tambahan                                                                  \n-------------------------------   -------------------------  ----------------------------------------------------------------------------------\nALERT_CONFIG_PATH                 str                        Path file konfigurasi alert (default: ./alert-config/alerts.json)\nCHANNEL_ID                        int                        ID channel Discord (cleanup) (default: None)\nCLEANUP_MODE                      str                        Mode cleanup: simulate atau execute (default: simulate)\nCLEANUP_OLD_ENTRIES_SECONDS       int                        TTL untuk entri lama di last_timestamps.json, default 86400 detik (24 jam). Digunakan untuk housekeeping log lama, bukan untuk pesan Discord\nDEFAULT_BUNDLE_MODE               str                        Mode bundle default untuk pengiriman alert. Nilai: bundle atau split (default: bundle)\nDEFAULT_END_OFFSET                int                        Offset akhir default (detik) (default: 3)\nDEFAULT_OFFSET                    dict                       Offset gabungan {start_offset, end_offset} yang dipakai saat query Loki jika tidak override (default: {'start_offset': 3, 'end_offset': 3})\nDEFAULT_OFFSET_ECO                int                        Offset default (detik) khusus eco-mode (default: 3)\nDEFAULT_OFFSET_END                int                        Offset akhir default (detik) (default: 3)\nDEFAULT_OFFSET_START              int                        Offset awal default (detik) (default: 3)\nDEFAULT_POLLING_STATE_DIR         str                        Direktori default untuk menyimpan polling state (default: temp/polling_state)\nDEFAULT_POLLING_STATE_ECO_DIR     str                        Direktori default untuk polling state saat eco-mode aktif (default: temp/polling_state_eco)\nDEFAULT_START_OFFSET              int                        Offset awal default (detik) (default: 3)\nDELAY_BUFFER_SECONDS              int                        Buffer delay (detik) sebelum mengambil data log dari Loki (default: 2)\nDISCORD_LOG_CHAR_LIMIT            int                        Batas karakter per log yang di-embed di pesan Discord (default: 800)\nDISCORD_MAX_LENGTH                int                        Batas total karakter untuk satu payload pesan Discord (default: 2000)\nDISCORD_TOKEN                     str                        Token bot Discord (mode cleanup) (default: None)\nDISCORD_WEBHOOK_URL               str                        Webhook Discord untuk alert (default: None)\nECO_CONFIG                        dict                       Konfigurasi eco-mode (enabled, jam start/end, polling interval, timezone, include_single_mode). Default: {'enabled': True, 'start_hour': 14, 'end_hour': 16, 'polling_interval': 60, 'timezone': 'Asia/Jakarta', 'include_single_mode': True}\nECO_POLL_INTERVAL                 int                        Interval polling eco-mode (detik) (default: 60)\nGRAFANA_BASE_URL                  str                        Base URL Grafana (default: None)\nGRAFANA_DATASOURCE_UID            str                        UID datasource Grafana (default: None)\nKNOWN_SAFE_PATTERNS_META_PATH     str                        Path file metadata rotasi pola aman (default: ./temp/known_safe_patterns_meta.json)\nKNOWN_SAFE_PATTERNS_PATH          str                        Path file JSON berisi pola aman yang sudah disimpan (default: ./temp/known_safe_patterns.json)\nKNOWN_SAFE_PATTERNS_ROTATE_HOURS  int                        Jam rotasi pola aman (default: 24)\nLIMIT                             int                        Batas jumlah log per query (default: 100)\nLOKI_URL                          str                        URL endpoint Loki (default: None)\nPOLL_INTERVAL                     int                        Interval polling (detik) (default: 30)\nPOLLING_STATE_TTL_SECONDS         int                        TTL untuk file polling state di temp/polling_state/, default 3600 detik (1 jam). Setelah lewat TTL, file polling state akan dihapus otomatis\nPROCESSED_IDS_WINDOW_SECONDS      int                        Window waktu (detik) untuk menyaring ID log yang sudah diproses agar tidak duplikat (default: 10)\nRESTART_INFO_PATH                 str                        Path file untuk menyimpan informasi restart terakhir (default: ./temp/last_restart_info.json)\nSCAN_LIMIT                        int                        Batas scan pesan Discord (cleanup) (default: 50)\nTHREAD_MONITOR_INTERVAL           int                        Interval monitor thread (detik) (default: 60)\nTIMESTAMP_STORE                   str                        Nama file penyimpanan timestamp hasil polling (default: last_timestamps.json)\n\n</pre>\n\n<br />\n\n<b>ECO MODE CONFIGURATION (eco_mode)</b> <br />\n\nFitur ECO Mode digunakan untuk mengurangi frekuensi polling dan notifikasi selama periode waktu tertentu, \nmisalnya di luar jam kerja, dengan tetap mengumpulkan data untuk diproses nanti.\n\n<pre>\nStruktur Konfigurasi:\n  \"eco_mode\": {\n    \"enabled\": true,\n    \"start_hour\": 23,\n    \"end_hour\": 4,\n    \"polling_interval\": 60,\n    \"timezone\": \"Asia/Jakarta\",\n    \"include_single_mode\": true\n  }\n</pre>\n\nPenjelasan Parameter:\n- enabled: (boolean) Aktifkan atau nonaktifkan ECO Mode.\n- start_hour: (integer) Jam mulai ECO Mode (0-23, dalam zona waktu yang ditentukan).\n- end_hour: (integer) Jam berakhir ECO Mode (0-23). \n  Jika end_hour < start_hour (contoh: 23 \u2192 4), rentang melewati tengah malam dan tetap didukung.\n- polling_interval: (detik) Interval polling saat ECO Mode aktif. Nilai harus lebih besar dari POLL_INTERVAL normal.\n- timezone: Zona waktu acuan. Harus valid sesuai database IANA (contoh: \"Asia/Jakarta\").\n- include_single_mode: (boolean) Jika true, alert dengan mode \"single\" tetap diproses meskipun dalam ECO Mode.\n\n<br />\n\nCatatan:\n- Semua nilai dapat di-override melalui ENV atau file `.env`.\n- `ECO_POLL_INTERVAL` memiliki prioritas: ENV > `ECO_CONFIG` > default.\n- ECO Mode dievaluasi setiap siklus polling berdasarkan waktu sistem saat ini.\n- Konfigurasi bersifat harian (tidak bisa dijadwalkan per tanggal spesifik).\n- Saat ECO Mode aktif, bundle alert dikirim dalam format ringkasan (eco) dan polling berjalan lebih lambat.\n\n&nbsp;\n\n---\n\n<b>Struktur File Konfigurasi: alert-config/*.json:</b> <br />\nFile konfigurasi yang berisi aturan pemantauan log Loki, pengiriman alert ke Discord, pola validasi pesan, dan aturan cleanup pesan.\n<pre>\n\nKomponen                         Status        Catatan Tambahan\n-------------------------------  ------------  ------------------------------------------------------------------------\ndefault_offset                   dict          Offset default untuk query ke Loki.\n                                                - start_offset (int): offset awal (detik) (default: 3)\n                                                - end_offset (int): offset akhir (detik) (default: 3)\n\ndefault_bundle_mode              str           Mode bundle default untuk alert.\n                                                - \"bundle\": alert digabungkan\n                                                - \"single\": alert dikirim satu per satu\n                                                (default: bundle)\n\neco_mode                         dict          Konfigurasi eco-mode polling.\n                                                - enabled (bool): aktif/tidak eco-mode\n                                                - start_hour (int): jam mulai eco (0-23)\n                                                - end_hour (int): jam selesai eco (0-23)\n                                                - polling_interval (int): interval polling (detik)\n                                                - timezone (str): zona waktu (contoh: Asia/Jakarta)\n                                                - include_single_mode (bool): apakah alert mode \"single\" ikut di eco-mode\n\nalerts                           list          Daftar alert yang akan dipantau.\n  \u251c\u2500 title                       str           Judul alert (deskripsi singkat).\n  \u251c\u2500 category                    str           Kategori alert (misal: Database, JavaException, Monitoring).\n  \u251c\u2500 query                       str           Query Loki untuk mendeteksi alert.\n  \u251c\u2500 start_offset                int           (opsional) offset awal khusus alert ini (override default_offset.start).\n  \u251c\u2500 end_offset                  int           (opsional) offset akhir khusus alert ini (override default_offset.end).\n  \u251c\u2500 mode                        str           (opsional) mode alert: \"bundle\" atau \"single\".\n  \u251c\u2500 include_bundle_header       bool          (opsional) apakah header bundle disertakan dalam pesan Discord.\n  \u251c\u2500 polling_delay               int           (opsional) delay tambahan polling (detik).\n  \u2514\u2500 mentions                    list[str]     (opsional) daftar mention Discord, contoh: [\"@here\", \"<@1234567890>\"]\n\npatterns_messages_discord        dict          Definisi pola regex untuk mengenali pesan Discord yang dihasilkan alert.\n  \u251c\u2500 KNOWN_PATTERNS_CONTENT      list[dict]    Pola regex untuk isi pesan alert Discord (mode bundle/single).\n      \u251c\u2500 name                    str           Nama pola (deskripsi pola regex).\n      \u2514\u2500 regex                   str           Regex pattern untuk validasi isi pesan.\n  \u2514\u2500 KNOWN_PATTERNS_EMBED        list[dict]    Pola regex untuk pesan dalam bentuk embed.\n      \u251c\u2500 name                    str           Nama pola (deskripsi pola regex).\n      \u2514\u2500 regex                   str           Regex pattern untuk validasi embed alert.\n\ndiscord_delete_filters           dict          Filter untuk proses cleanup pesan di Discord.\n  \u251c\u2500 author                      str           Nama author pesan (misal: \"damv1 alert#0000\").\n  \u251c\u2500 is_bot                      bool          Apakah pesan berasal dari bot (default: true).\n  \u251c\u2500 channel_name                str           Nama channel Discord target (contoh: \"#alarm-alert\").\n  \u251c\u2500 guild_name                  str           Nama guild/server Discord.\n  \u251c\u2500 status_content              str           Status konten yang dikenali (misal: \"recognized\").\n  \u251c\u2500 pattern_source              str           Sumber pola untuk validasi pesan (misal: \"KNOWN_PATTERNS_CONTENT\").\n  \u2514\u2500 created_at_older_than       str           Batas usia pesan yang akan dihapus. Format waktu:\n                                                - \"20m\" = 20 menit\n                                                - \"1h\"  = 1 jam\n                                                - \"1d\"  = 1 hari\n</pre>\n\n&nbsp;\n\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "development damv1alertdaemon2025 package",
    "version": "1.0.0",
    "project_urls": null,
    "split_keywords": [
        "alertdaemon2025",
        " discord_cleanup_daemon",
        " discord_sender",
        " polling-logs",
        " grafana_url_generator"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b5fe6b74bede167930f8e185bdfb05088d084ff2a41bb243d788abf438924888",
                "md5": "53fbfdd6c28130ec1fed35a1b65e8241",
                "sha256": "f3ffd0916e9508b17ae0b7a8a3a25c48d696126380e6f6cd0ddf2c579cad845f"
            },
            "downloads": -1,
            "filename": "damv1alertdaemon2025-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "53fbfdd6c28130ec1fed35a1b65e8241",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.0",
            "size": 27757,
            "upload_time": "2025-08-21T03:31:36",
            "upload_time_iso_8601": "2025-08-21T03:31:36.426761Z",
            "url": "https://files.pythonhosted.org/packages/b5/fe/6b74bede167930f8e185bdfb05088d084ff2a41bb243d788abf438924888/damv1alertdaemon2025-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-21 03:31:36",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "damv1alertdaemon2025"
}
        
Elapsed time: 2.36399s