Showing posts with label log. Show all posts
Showing posts with label log. Show all posts

Thursday, 21 May 2026

Pantau Siswa AKtif QUiz, Pantau CPU, Pantau RAM

 root@cbt:~# while true; do echo "$(date '+%F %T') | $(mysql moodle -N -e "
SELECT COUNT(DISTINCT userid)
FROM mdl_logstore_standard_log
WHERE component='mod_quiz'
AND timecreated > UNIX_TIMESTAMP(NOW()) - 150;
")" >> quizlog.txt; sleep 10; done

lihatnya:
tail -f quizlog.txt 

 

Ya Guru 👍
Itu berarti di server cbt user Linux root sudah bisa login ke MariaDB tanpa password eksplisit.

Biasanya karena salah satu dari ini:


1. Plugin auth_socket / unix_socket

Paling sering di Debian/Ubuntu.

Artinya:

  • kalau login Linux sebagai root

  • otomatis boleh masuk MariaDB sebagai root

tanpa password.


Jadi command:

mysql moodle

langsung berhasil.


2. Ada konfigurasi otomatis

Misalnya:

  • /root/.my.cnf

  • credential tersimpan

  • atau socket authentication


Cara cek metode login

Masuk mysql:

mysql

Lalu:

SELECT user,host,plugin
FROM mysql.user;

Kalau hasilnya seperti:

userplugin
rootunix_socket

atau:

userplugin
rootauth_socket

berarti memang otomatis login lewat user Linux root.


Kenapa aman?

Karena:

  • hanya user Linux root yang bisa

  • bukan semua orang

Jadi:

  • SSH root dulu

  • baru mysql otomatis boleh.


Makanya command Guru langsung jalan

while true; do ...

karena:

  • mysql tidak perlu password

  • shell langsung bisa eksekusi query


Ini justru bagus untuk monitoring server

Karena:

  • script otomatis lebih mudah

  • cron job lebih simpel

  • tidak perlu simpan password plaintext


Saran tambahan bagus

Karena Guru sekarang punya logger realtime, saya sarankan nanti buat juga:

Monitor CPU

while true; do
echo "$(date '+%F %T') | $(uptime)"
sleep 10
done >> cpulog.txt

Monitor RAM

while true; do
echo "$(date '+%F %T') | $(free -m | awk '/Mem:/ {print $3 "/" $2 " MB"}')"
sleep 10
done >> ramlog.txt

Nanti bisa dibandingkan dengan:

  • quizlog.txt

  • jumlah siswa aktif

  • CPU

  • RAM

untuk mengetahui:

  • batas maksimum server CBT Guru

  • titik overload

  • waktu paling berat saat ujian berlangsung.

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Tidak terlalu memberatkan Guru 👍
Untuk server Moodle/CBT, ketiga loop itu sangat ringan dibanding beban quiz siswa.

Mari kita hitung.


1. Beban query quizlog

Command:

mysql moodle -N -e "SELECT COUNT(...) ..."

hanya:

  • 1 query kecil

  • tiap 10 detik

  • hanya hitung DISTINCT userid

Itu sangat ringan untuk MariaDB.


2. Beban uptime

uptime

hampir nol beban.

Karena cuma membaca:

  • load average

  • uptime server

dari kernel Linux.


3. Beban free -m

free -m

juga hampir nol.

Hanya membaca statistik RAM dari kernel.


Total sebenarnya

Guru menjalankan:

TaskInterval
query mysql10 detik
uptime10 detik
free -m10 detik

Artinya total:

  • sekitar 3 command / 10 detik

  • = 0.3 command per detik

Sangat kecil.


Dibanding beban Moodle nyata

1 siswa quiz Moodle bisa menghasilkan:

  • autosave

  • AJAX request

  • render halaman

  • session write

  • DB write

puluhan request per menit.


Kalau 50 siswa:

  • ratusan request per menit.

Jadi logger Guru jauh lebih ringan dibanding trafik Moodle itu sendiri.


Yang lebih berat justru:

Kalau Guru menjalankan:

  • top

  • iotop

  • tcpdump

  • tail log sangat besar

  • query JOIN kompleks

  • monitoring tiap 1 detik

baru mulai terasa.


Yang saya sarankan

Untuk aman:

quizlog

Tetap:

10 detik

CPU/RAM

Bisa:

30 detik

karena CPU/RAM tidak perlu sangat realtime.


Contoh lebih hemat:

CPU

while true; do
echo "$(date '+%F %T') | $(uptime)"
sleep 30
done >> cpulog.txt

RAM

while true; do
echo "$(date '+%F %T') | $(free -m | awk '/Mem:/ {print $3 "/" $2 " MB"}')"
sleep 30
done >> ramlog.txt

Kesimpulan

Dengan:

  • 50–60 siswa aktif

  • Debian CLI

  • Nginx

  • MariaDB

  • RAM 6 GB

ketiga logger itu:
✅ aman dijalankan bersamaan
✅ tidak signifikan membebani server
✅ sangat berguna untuk analisis performa CBT Moodle.

 

Cek Jumlah Siswa Aktif pada saat menjawab Quiz Ulangan/Asesmen

 

Buat file konfigurasi password

Buat file:

nano ~/.my.cnf
Isi:
[client]
user=root
password=PASSWORDMYSQLANDA
Contoh:
[client]
user=root
password=abc123
 
Lalu amankan file:
chmod 600 ~/.my.cnf
 
Setelah itu

Kalau Guru ingin melihat perkembangan jumlah siswa aktif selama 1 jam dalam bentuk baris-baris log, lebih bagus dibuat seperti ini:

WAKTU JUMLAH_AKTIF 2026-05-13 20:00:05 15 2026-05-13 20:00:10 22 2026-05-13 20:00:15 37 ...

Jadi:

  • 1 baris = 1 kali pengecekan

  • bisa dianalisis nanti

  • bisa tahu puncak trafik


Struktur kolom yang bagus

Minimal 2 kolom:

KolomIsi
waktutimestamp pengecekan
jumlah_aktifjumlah siswa aktif

Kalau mau lebih lengkap:

KolomIsi
waktuwaktu pengecekan
jumlah_aktifuser aktif quiz
koneksijumlah koneksi server
cpu_loadload server
ram_usedRAM terpakai

Tapi untuk malam ini cukup:

  • waktu

  • jumlah_aktif


Cara paling mudah membuat log otomatis

Jalankan ini di terminal:

while true; do echo "$(date '+%F %T') $(mysql moodle2 -N -e " SELECT COUNT(DISTINCT userid) FROM mdl_logstore_standard_log WHERE component='mod_quiz' AND timecreated > UNIX_TIMESTAMP(NOW()) - 150; ")" >> quizlog.txt sleep 10 done

Penjelasan

date

mengambil waktu sekarang.


mysql ...

mengambil jumlah siswa aktif.


>> quizlog.txt

menyimpan ke file.


sleep 10

ulang tiap 10 detik.


Hasil file nanti

Isi quizlog.txt:

2026-05-13 20:00:01 12 2026-05-13 20:00:11 18 2026-05-13 20:00:21 25 2026-05-13 20:00:31 41

Kalau 1 jam

Karena interval 10 detik:

3600 / 10 = 360 baris

Jadi sekitar 360 baris log selama 1 jam.


Cara menghentikan

Tekan:

CTRL + C

Cara melihat hasil

cat quizlog.txt

atau realtime:

tail -f quizlog.txt

Ini bagus sekali untuk analisis:

  • jam paling ramai

  • puncak siswa aktif

  • apakah server drop

  • kapan submit massal terjadi.

     

    ===========================

    root@debian:~# while true; do
    echo "$(date '+%F %T') | $(mysql moodle2 -N -e "
    SELECT COUNT(DISTINCT userid)
    FROM mdl_logstore_standard_log
    WHERE component='mod_quiz'
    AND timecreated > UNIX_TIMESTAMP(NOW()) - 150;
    ")" >> quizlog.txt
    sleep 10
    done
     

     ++++++++++++++++++++

    pantau realtime

    ++++++++++++++++++++

    root@debian:~# tail -f quizlog.txt
    2026-05-14 04:15:43 | 0
    2026-05-19 22:18:04 | 0
    2026-05-19 22:18:14 | 0
    2026-05-19 22:18:24 | 0
    2026-05-19 22:18:34 | 0
    2026-05-19 22:18:44 | 0
    2026-05-19 22:18:54 | 0
    2026-05-20 20:20:42 | 52
    2026-05-20 20:20:52 | 52
    2026-05-20 20:21:02 | 51
    2026-05-20 20:21:12 | 52
    2026-05-20 20:21:22 | 52
    2026-05-20 20:21:32 | 51
    2026-05-20 20:21:42 | 52
    2026-05-20 20:21:52 | 51
    2026-05-20 20:22:02 | 49
    2026-05-20 20:22:12 | 46
    2026-05-20 20:22:22 | 46
    2026-05-20 20:22:32 | 46
    2026-05-20 20:22:42 | 45
    2026-05-20 20:22:52 | 45
    2026-05-20 20:23:02 | 46
    2026-05-20 20:23:12 | 48
    2026-05-20 20:23:22 | 50
    2026-05-20 20:23:32 | 49
    2026-05-20 20:23:42 | 49
    2026-05-20 20:23:52 | 50
     

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

    Ya Guru 👍
    Command itu otomatis memakai ~/.my.cnf.

    Karena saat Guru menjalankan:

    mysql moodle2 -N -e "..."
    

    tanpa:

  • -u

  • -p

maka client mysql akan mencari konfigurasi login dari:

~/.my.cnf

Isi file itu misalnya:

[client]
user=root
password=PASSWORDMYSQL

Jadi command loop tadi:

  • membaca username/password otomatis

  • tidak meminta password lagi

  • cocok untuk logging jangka panjang.


Cara memastikan benar memakai ~/.my.cnf:

Coba jalankan:

mysql moodle2 -e "SHOW DATABASES;"

Kalau langsung berhasil tanpa minta password:
✅ berarti ~/.my.cnf dipakai dengan benar.


Kalau file ~/.my.cnf salah:

  • biasanya muncul:

Access denied

atau mysql meminta password lagi.

  •  

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Bisa sekali Guru 👍
Karena quizlog.txt berada di server Moodle (Debian), Guru bisa menariknya ke laptop dengan beberapa cara.

Karena Guru biasa memakai SSH, paling mudah pakai scp.


Cara 1 — Tarik file ke laptop Ubuntu (paling mudah)

Dari laptop Aspire jalankan:

scp root@IP_SERVER:/root/quizlog.txt .

Contoh:

scp root@192.168.1.113:/root/quizlog.txt .

Artinya:

  • ambil file dari server

  • simpan di folder laptop saat ini (.)


Kalau mau simpan ke Downloads

scp root@192.168.1.113:/root/quizlog.txt ~/Downloads/

Cara 2 — Pakai File Manager Ubuntu

Di laptop:

  1. buka Files

  2. Other Locations

  3. Connect to Server

Isi:

sftp://root@192.168.1.113

Lalu login password server.

Nanti file server muncul seperti folder biasa.

Ambil:

/root/quizlog.txt

Cara 3 — Langsung lihat isi tanpa copy

Di laptop:

ssh root@192.168.1.113 "tail -f /root/quizlog.txt"

Artinya:

  • melihat log realtime dari laptop

  • tanpa masuk server manual


Kalau mau dibuat CSV

Bisa juga nanti di server:

cp quizlog.txt quizlog.csv

Lalu dibuka di:

  • LibreOffice Calc

  • Excel

Karena formatnya sudah mirip CSV.


Saran bagus malam ini

Biarkan logging berjalan di server:

while true; do ...

Lalu dari laptop Guru cukup:

tail -f quizlog.txt

atau tarik file setelah ujian selesai.