[NEW] maintenance_server_monitoring
This commit is contained in:
1
maintenance_server_monitoring/models/__init__.py
Normal file
1
maintenance_server_monitoring/models/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import maintenance_equipment
|
@@ -0,0 +1,46 @@
|
||||
from odoo import fields, models
|
||||
import subprocess
|
||||
import sys
|
||||
import psutil
|
||||
|
||||
|
||||
class MaintenanceEquipment(models.Model):
|
||||
_inherit = 'maintenance.equipment'
|
||||
|
||||
server_domain = fields.Char('Server Domain')
|
||||
ssh_private_key_path = fields.Char("SSH private key path", default="/opt/odoo/auto/dev/ssh_keys/id_rsa")
|
||||
last_monitoring_test_date = fields.Datetime('Date of last monitoring test', readonly=True)
|
||||
ping_ok = fields.Boolean("Ping ok", readonly=True)
|
||||
available_memory_percent = fields.Float('Percent of available memory', readonly=True)
|
||||
|
||||
def install_dependencies(self):
|
||||
if "ping3" not in sys.modules:
|
||||
command = ['pip','install',"ping3"]
|
||||
response = subprocess.call(command)
|
||||
return response
|
||||
|
||||
|
||||
def monitoring_test(self):
|
||||
self.install_dependencies()
|
||||
self.test_ping()
|
||||
self.test_available_memory_percent()
|
||||
self.last_monitoring_test_date = fields.Datetime.now()
|
||||
return
|
||||
|
||||
def test_available_memory_percent(self):
|
||||
import paramiko
|
||||
ssh = paramiko.SSHClient()
|
||||
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
ssh.connect(self.server_domain, username="root", key_filename=self.ssh_private_key_path)
|
||||
_stdin, stdout, _stderr = ssh.exec_command("free | grep Mem | awk '{print $3/$2 * 100.0}'")
|
||||
self.available_memory_percent = float(stdout.read().decode())
|
||||
|
||||
def test_ping(self):
|
||||
from ping3 import ping
|
||||
hostname = self.server_domain
|
||||
r = ping(hostname)
|
||||
if r:
|
||||
self.ping_ok = True
|
||||
else:
|
||||
self.ping_ok = False
|
||||
return
|
Reference in New Issue
Block a user