λ³Έ κ°μ΄λλ μ°λΆν¬ μλ²μ CPU, λ©λͺ¨λ¦¬, λμ€ν¬ μ¬μ©λ₯ μ μ€μκ°μΌλ‘ μΈ‘μ νμ¬ μ격 MariaDB(qst-s.iptime.org)μ μλμΌλ‘ μ
λ°μ΄νΈνλ μμ΄μ νΈ μ€μ κ³Όμ μ λ΄κ³ μμ΅λλ€.
νμ΄μ¬μμ 리μμ€ μΈ‘μ λ° DB μ°κ²°μ μν΄ νμν ν¨ν€μ§λ₯Ό μμ€ν μ 체 νκ²½μ μ€μΉν©λλ€.
# ν¨ν€μ§ λͺ©λ‘ μ
λ°μ΄νΈ
sudo apt update
# 리μμ€ μΈ‘μ (psutil) λ° MariaDB μ°κ²° λΌμ΄λΈλ¬λ¦¬ μ€μΉ
sudo apt install python3-psutil python3-mysql.connector -y
/opt κ²½λ‘μ μ€ν νμΌμ μμ±νκ³ , μ΅μ νλ λλ²κΉ
μ½λλ₯Ό μμ±ν©λλ€.
sudo nano /opt/resource_agent.pyimport time
import psutil
import mysql.connector
import sys
from datetime import datetime
# ==========================================
# [μ€μ ] MariaDB μ μ μ 보
# ==========================================
DB_CONFIG = {
'host': 'qst-s.iptime.org',
'port': 33063,
'user': 'qsentech',
'password': 'qsentech!1233',
'database': 'paradise'
}
def get_connection():
return mysql.connector.connect(**DB_CONFIG)
def main():
print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] μμ΄μ νΈ μλ μμ...")
while True:
conn = None
try:
# 1. λ°μ΄ν° μμ§ (CPUλ 1μ΄κ°μ νκ· κ° μΈ‘μ )
cpu = psutil.cpu_percent(interval=1)
mem = psutil.virtual_memory().percent
disk = psutil.disk_usage('/').percent
# 2. DB μ°κ²° λ° μΏΌλ¦¬ μ€ν
conn = get_connection()
cursor = conn.cursor()
# idxNo 1: CPU, 2: MEMORY, 3: DISK μ
λ°μ΄νΈ
updates = [
("UPDATE tbl_resource_info SET resValue = %s WHERE idxNo = 1", (str(cpu),)),
("UPDATE tbl_resource_info SET resValue = %s WHERE idxNo = 2", (str(mem),)),
("UPDATE tbl_resource_info SET resValue = %s WHERE idxNo = 3", (str(disk),))
]
total_affected = 0
for sql, val in updates:
cursor.execute(sql, val)
total_affected += cursor.rowcount
conn.commit()
# 3. λ‘κ·Έ μΆλ ₯ (PYTHONUNBUFFERED μ€μ μ μ€μκ° νμΈ κ°λ₯)
print(f"[{datetime.now().strftime('%H:%M:%S')}] C:{cpu}% | M:{mem}% | D:{disk}% | Rows:{total_affected}")
except Exception as e:
print(f"Error: {e}", file=sys.stderr)
finally:
if conn and conn.is_connected():
cursor.close()
conn.close()
# 4. 3μ΄ κ°κ²© λκΈ°
time.sleep(3)
if __name__ == "__main__":
main()
μλ²κ° μ¬λΆν λμ΄λ μμ΄μ νΈκ° μλμΌλ‘ μ€νλλλ‘ λ°±κ·ΈλΌμ΄λ μλΉμ€λ‘ λ±λ‘ν©λλ€.
sudo nano /etc/systemd/system/resource-agent.service[Unit]
Description=Paradise Resource Monitoring Agent
After=network.target
[Service]
ExecStart=/usr/bin/python3 /opt/resource_agent.py
Restart=always
RestartSec=5
User=root
# λ‘κ·Έ μ€μκ° νμΈμ μν νκ²½λ³μ
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
μ€μ μ λ³κ²½ν λλ§λ€ μλ λͺ λ Ήμ΄λ€μ μ¬μ©νμ¬ μ μ©ν©λλ€.
# 1. μμ€ν
μ€μ μλ‘κ³ μΉ¨ (νμΌ μμ ν νμ)
sudo systemctl daemon-reload
# 2. μμ΄μ νΈ μλΉμ€ μμ λ° μλμ€ν λ±λ‘
sudo systemctl enable --now resource-agent
# 3. μλΉμ€ μν νμΈ (μ΄λ‘μ active νμΈ)
sudo systemctl status resource-agent
# 4. μ€μκ° λ‘κ·Έ λͺ¨λν°λ§ (DB μ
λ°μ΄νΈ νμΈμ©)
sudo journalctl -u resource-agent -f
sudo journalctl -u resource-agent -f μ€ν μ μ
λ°μ΄νΈλ μ€ μ: 3μ΄ λ¨λμ§ νμΈν©λλ€.