python3小脚本-监控服务器性能并插入mysql数据库

Posted python坚持者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3小脚本-监控服务器性能并插入mysql数据库相关的知识,希望对你有一定的参考价值。

操作系统:

centos版本 7.4
防火墙 关闭
selinux 关闭
python版本 3.6
mysql版本 5.7

 

 

 

 

 

 

#操作系统性能脚本

[root@localhost sql]# cat cpu_mac.py 

#!/usr/bin/env python3

#coding:utf-8

 

import subprocess

 

def monitor(frist_invoke=1):

    shell_command = \'sar 1 1| grep "^Average:"\'

    status,result = subprocess.getstatusoutput(shell_command)

    if status != 0:

        value_dic = {\'status\': status}

    else:

        value_dic = {}

        #print(\'---res:\',result)

        user,nice,system,iowait,steal,idle = result.split()[2:]

        #拿回监控数据后保存为字典

        value_dic= {

            \'user\': user,

            \'nice\': nice,

            \'system\': system,

            \'idle\': idle,

            \'status\': status

        }

    return value_dic

 

if __name__ == \'__main__\':

    print(monitor())

 

 

#获取服务器性能后使用python3插入数据库脚本

[root@localhost sql]# cat /root/sql/class_sql.py

import pymysql

import cpu_mac

from datetime import datetime

 

db = pymysql.connect("192.168.10.100", "root", "root", "dx_monitor", charset="utf8")

 

#获取当前时间

NOW = datetime.now()

#获取当前时间,并格式化

TIME_DATE = NOW.strftime("%Y-%m-%d %H:%M:%S")

#获取当前时间,并格式化为年月

MONITOR_DATE = NOW.strftime("%Y_%m")

 

class monitor:

 

    def __init__(self, db, MONITOR_DATE, TIME_DATE):

        self.db = db

        self.MONITOR_DATE = MONITOR_DATE

        self.TIME_DATE = TIME_DATE

 

    def create_table(self):

#获取当前数据库游标

        cursor = self.db.cursor()

#查看当前数据表是否存在

        date_sql = "DROP TABLE IF EXISTS res_monitor_{0}".format(self.MONITOR_DATE)

        try:

#创建数据表

            sql = """

                CREATE TABLE  res_monitor_self.MONITOR_DATE (

                id int UNSIGNED AUTO_INCREMENT,

                user varchar(20) NOT NULL,

                nice varchar(20) NOT NULL,

                system varchar (20) NOT NULL,

                idle  varchar(20) NOT NULL,

                status varchar(20) NOT NULL,

                date DATETIME,

                PRIMARY KEY( id )

                )ENGINE=InnoDB DEFAULT CHARSET=utf8;

                """.format(self.MONITOR_DATE)

#判断数据表

            data = cursor.execute(date_sql)

#执行创建表

            cursor.execute(sql)

            self.db.close()

            #print("Database version : %s" % data)

            #print("表创建成功")

        except :

            print(\'表错误\')

            data = cursor.execute(date_sql)

            cursor.execute(sql)

            self.db.close()

            print("Database version : %s" % data)

            print("表创建成功")

            cursor.close()

            self.db.close()

 

    def insert_table(self):

 

        de = cpu_mac.monitor()

#插入数据到数据库表空间

        sql = "INSERT INTO res_monitor_{0} (user, nice, system, idle, status, date) VALUES (%s, %s, %s, %s, %s, %s)".format(self.MONITOR_DATE)

        cursor = db.cursor()

        T = (( de[\'user\']), (de[\'nice\']), (de[\'system\']), (de[\'idle\']), (de[\'status\']), (self.TIME_DATE))

        try:

#执行表

            cursor.execute(sql, T)

            self.db.commit()

            print(\'监控数据插入ok\')

        #     print(\'ok 123\')

        #     # sql = "INSERT INTO res_monitor_{0} (user, nice, system, idle, status, date) VALUES ({1}, {2}, {3}, {4}, {5})".format(MONITOR_DATE, de[\'user\'], de[\'nice\'], de[\'system\'], de[\'idle\'], de[\'status\'])

        #

        #     print(sql)

        #

        #     # cursor.execute(sql, T)

        #     print(\'监控数据插入ok\')

        except:

            self.db.rollback()

            print(\'监控数据插入错误\')

        cursor.close()

        self.db.close()

 

 

if __name__ == \'__main__\':

    db_sql = monitor(db,MONITOR_DATE,TIME_DATE)

    if TIME_DATE_MONTH == \'01\':

        db_sql.create_table()

    db_sql.insert_table()

 

#写入定时任务

[root@localhost sql]# crontab -l

* * * * * /usr/bin/python3 /root/sql/class_sql.py

#连接数据库

[root@localhost ~]# mysql -uroot -proot -h192.168.10.100

#创建的库

 

 

#创建的表

 

#执行的最终结果

 

 

以上是关于python3小脚本-监控服务器性能并插入mysql数据库的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter性能测试-监控服务器指标详细步骤

编写python3脚本监控Nginx服务状态

监控mysq服务

通过shell脚本进行数据库操作

服务器性能检测脚本(CPU内存硬盘空间)

jenkins 怎么监控linux性能