操作系统:

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)

#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数据库的更多相关文章

  1. PHP Apache Access Log 分析工具 拆分字段成CSV文件并插入Mysql数据库分析

    现在需要分析访问日志,怎么办? 比如分析D:\Servers\Apache2.2\logs\access2014-05-22.log http://my.oschina.net/cart/针对这个问题 ...

  2. PHP大批量插入mysql数据库的优化

    <?php /** * Created by PhpStorm. * User: hanks * Date: 6/2/2017 * Time: 6:03 PM */ //PHP大批量插入mysq ...

  3. Python datatime 格式转换,插入MySQL数据库

    Python datatime 格式转换,插入MySQL数据库 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-11-2 ...

  4. Mybatis插入MySQL数据库中文乱码

    Mybatis插入MySQL数据库中文乱码 在dataSource.properties配置文件中设置useUnicode=true&characterEncoding=utf-8编码即可. ...

  5. Loadrunner脚本优化-参数化之关联MySQL数据库获取数据

    脚本优化-参数化之关联MySQL数据库获取数据 by:授客 QQ:1033553122 测试环境: Loadrunner 11 Win7 64位 实操: 1.   安装MySQL ODBC驱动程序 O ...

  6. python 从csv文件插入mysql数据库

    一个工作遇到的问题,将excel文件的内容插入到mysql数据库中. 总体思路是 excel文件-->转换成csv文件-->csv文件读取-->读取数据插入mysql数据库 用到py ...

  7. python批量插入mysql数据库(性能相关)以及反引号的使用

    参考link: https://blog.csdn.net/qq_35958094/article/details/78462800(插入相关) https://www.cnblogs.com/hya ...

  8. 【性能测试】:LR插入mysql数据库数据,脚本参数化问题

    一,今天准备脚本做mysql数据库的铺地数据,脚本内容不赘述,在批量执行insert语句时候,出现一个问题: // sprintf(chQuery, "insert into table ( ...

  9. Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    转自http://www.cnblogs.com/fnz0/p/5713102.html 不知道自己什么时候才有这种钻研精神- -. 1      背景 系统中需要批量生成单据数据到数据库表,所以采用 ...

随机推荐

  1. Linux 内核列举设备和驱动

    如果你在编写总线级别的代码, 你可能不得不对所有已经注册到你的总线的设备或驱动进 行一些操作. 它可能会诱惑人直接进入 bus_type 结构中的各种结构, 但是最好使用已经 提供的帮助函数. 为操作 ...

  2. Fetch 记录

    encodeURI()不会对本身属于URI的特殊字符进行编码,例如冒号.正斜杠.问号和井字号:而encodeURIComponent()则会对它发现的任何非标准字符进行编码. Fetch 请求body ...

  3. HDU 6623 Minimal Power of Prime(数学)

    传送门 •题意 给你一个大于 1 的正整数 n: 它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少. •题解 把[1,10000]内的素数筛出来,然后对于每个素$P$数遍历 ...

  4. dotnet 判断程序当前使用管理员运行降低权使用普通权限运行

    有一些程序是不想通过管理员权限运行的,因为在很多文件的读写,如果用了管理员权限程序写入的程序,其他普通权限的程序是无法直接访问的.本文告诉大家如何判断当前的程序是通过管理员权限运行,然后通过资源管理器 ...

  5. dotnet 通过 WMI 获取系统启动的服务

    本文告诉大家如何通过 WMI 获取系统启动的服务 通过 Win32_Service 可以获取系统启动的服务 获取的时候只需要拿Caption和State就可以 var mc = "Win32 ...

  6. hdu 2454 Degree Sequence of Graph G(可简单图化判定)

    传送门 •Havel-Hakimi定理: 给定一个非负整数序列{d1,d2,...dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化. 进一步,若图为简单图,则称此序列可简单图 ...

  7. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  8. Centos中Qt编译问题(/usr/bin/ld: 找不到 -lpulse-mainloop-glib,/usr/bin/ld: 找不到 -lpulse...)

    Linux下QT编写一个与视频播放的程序,出现/usr/bin/ld: 找不到 -lpulse-mainloop-glib,/usr/bin/ld: 找不到 -lpulse 解决办法: 首先find ...

  9. centos 下yum lock的解决办法

    centos 下yum lock的解决办法 centos7下yum install的时候,报了一堆错误,如下: Another app is currently holding the yum loc ...

  10. Spring||IQ

    Here's the question about spring 1.Spring概述 Spring 是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应 ...