Django显示服务器性能监控

本文档介绍了如何使用Django框架在Linux环境中监控服务器的CPU、内存和进程信息。详细步骤包括设置Django项目、配置数据库连接、创建Models、数据库操作、视图函数的编写、HTML模板的创建以及URL路由的设定。最终,通过运行Django程序,可以展示服务器的CPU和内存使用情况以及进程详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

监控系统CPU、内存和进程信息

一、运行环境与项目目录

  1. Django 2.0.7
  2. python 3.7
  3. pymysql 0.9.3
    在这里插入图片描述

二、配置文档:Setting

  1. mysql 数据库
# Author: Allan
# Datetime: 2019-05-21
import pymysql
pymysql.install_as_MySQLdb()

DATABASES = {
   
   
    'default': {
   
   
        # 注释sqlite3
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

        # mysql
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'database',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'ip',
        'PORT': 3306,
    }
}
  1. Application definition
INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'web'  #添加App,下面python3 mkmigrations web使用
]

MIDDLEWARE = [
   'django.middleware.security.SecurityMiddleware',
   'django.contrib.sessions.middleware.SessionMiddleware',
   'django.middleware.common.CommonMiddleware',
   # 'django.middleware.csrf.CsrfViewMiddleware', 注释这一行,防止403错误
   'django.contrib.auth.middleware.AuthenticationMiddleware',
   'django.contrib.messages.middleware.MessageMiddleware',
   'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'monitor.urls'

TEMPLATES = [
   {
   
   
       'BACKEND': 'django.template.backends.django.DjangoTemplates',
       'DIRS': [os.path.join(BASE_DIR, 'templates')],  #修改模版目录
       'APP_DIRS': True,
       'OPTIONS': {
   
   
           'context_processors': [
               'django.template.context_processors.debug',
               'django.template.context_processors.request',
               'django.contrib.auth.context_processors.auth',
               'django.contrib.messages.context_processors.messages',
           ],
       },
   },
]
  1. S ecurity
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['*']
  1. Internationalization
LANGUAGE_CODE = 'en-us'
# 修改时区
TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True
# 修改时区
USE_TZ = False

二、创建 Models,操作数据

from django.db import models

# Create your models here.


class CpuInfo(models.Model):
    # CPU信息
    time = models.DateTimeField()
    host = models.CharField(max_length=40)
    usage_system = models.FloatField(null=True)
    usage_user = models.FloatField(null=True)
    usage_softirq = models.FloatField(null=True)
    usage_iowait = models.FloatField(null=True)


class MemoryInfo(models.Model):
    #内存信息
    time = models.DateTimeField()
    host = models.CharField(max_length=40)
    used_percent = models.FloatField(null=True)


class ProcstatInfo(models.Model):
    # 进程信息
    time = models.DateTimeField()
    host = models.CharField(max_length=100)
    exe = models.CharField(max_length=40)
    pid = models.FloatField()
    cpu_usage = models.FloatField(null=True)
    memory_rss = models.FloatField(null=True)

三、创建数据库

  1. Terminal 下运行manager.py
# python3 manager.py mkmigrations web
# python3 manager.py migrate
  1. 查询mysql
mysql> show tables;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    449745
Current database: perf_monitor

+----------------------------+
| Tables_in_perf_monitor     |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| web_cpuinfo                |
| web_memoryinfo             |
| web_procstatinfo           |
+----------------------------+
13 rows in set (0.51 sec)

mysql> 

四、 views.py

创建两个views,一个显示CPU和内存信息;另一个现实进程信息

# Author: Allan
# Datetime: 2019-05-21
import time
import json
from django.shortcuts import render
from web import models

# Create your views here.


def show_procstat(request):
    servers = ['rotestZone01', 'rotestZone02']
    procstat_ret = {
   
   }
    for server in servers:
        procstat_info = models.ProcstatInfo.objects.filter(host=server)
        procstat_exe = {
   
   }
        for row in procstat_info:
            temp_time = int(time.mktime(row.time.timetuple())) * 1000
            key = str(row.exe) + '_' + str(int(row.pid))
            if key not in procstat_exe:
                procstat_exe[key] = {
   
   }
                procstat_exe[key]['cpu_usage'] = []
                procstat_exe[key]['memory_rss'] = []
            procstat_exe[key]['cpu_usage'].append([temp_time, row.cpu_usage])
            procstat_exe[key]['memory_rss'].append([temp_time, row
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值