mysql用supervisor管理_使用Supervisor管理进程

1.  Superivisor简介:

Supervisor是一个C/S系统,它允许用户在类UNIX系统上监控和管理一系列的进程。你可以把一个进程以Daemon的形式用Supervisor来管理。

2.  安装:

使用pip来安装Supervisor:[root@test1 ~]# pip install supervisor

如果CentOS系统中没用安装pip,可以通过如下命令安装pip:[root@test1 ~]# yum -y install python-pip

3.  配置文件:

Supervisor的配置文件需要手动执行命令来生成,如下:[root@test1 ~]# echo_supervisord_conf > /etc/supervisord.conf

4.  常用的配置项:command=/bin/cat                 ---- 启动程序时执行的命令;

directory=/tmp                   ---- 执行目录,若有/home/test/test1.py,将directory设置成/home/test,则command只需设置成python test1.py。否则command必须设置成绝对路径;

process_name=%(program_name)s     ---- 进程启动,使用program name作为进程名,默认值;

autostart=true                   ---- 随Supervisor启动一起启动;

startsecs=1                      ---- 等待多长时间后认为程序启动成功,默认为1;

startretries=3                   ---- 启动失败时的重试次数,默认为3;

user=root                        ---- 以root身份运行程序;

priority=999                     ---- 优先级。值越高,最后启动,最先被关闭,默认值999。

5.  命令:

Supervisor有两个可执行程序 :supervisord 和 supervisorctl。

supervisord用来依据配置文件的策略管理后台守护进程;

supervisorctl管理员用于向后台守护进程发送“启动/重启/停止”等指令。

6.  一个例子,使用Supervisor管理一个Python Flask程序hello.py:[program:flasky]

directory=/opt/flasky/

command=/opt/flasky/venv/bin/python hello.py runserver --host 192.168.1.101 -p 8080

autostart=true

startsecs=10

startretries=2

user=root

stderr_logfile=/tmp/flasky-error.log

stdout_logfile=/tmp/flasky-error.log

7.  启动Supervisord:[root@test1 ~]# /usr/bin/supervisord -c /etc/supervisord.conf

8.  查看进程状态:[root@test1 ~]# /usr/bin/supervisorctl status

flasky                           STARTING

[root@test1 ~]# /usr/bin/supervisorctl status

flasky                           RUNNING   pid 46778, uptime 0:00:10

[root@test1 ~]# /usr/bin/supervisorctl status

flasky                           RUNNING   pid 46778, uptime 0:00:13

9.  Supervisorctl管理命令:supervisorctl status                ---- 查看supervisor管理进程的状态;

supervisorctl stop programname      ---- 用来关闭某个进程,programname指上例中的flasky;

supervisorctl start programname     ---- 用来启动某个进程;

supervisorctl restart programname   ---- 用来重启某个进程;

supervisorctl stop all              ---- 关闭所有的进程;

supervisorctl reload                ---- 停止所有进程,载入最新的配置文件,并根据最新的配置启动、管理进程;

supervisorctl update                ---- 根据最新的配置文件,启动新配置的进程或重启配置有变化的进程,没有改动过的进程不会受到影响;

supervisorctl shutdown              ---- 关闭supervisor服务。

10、执行supervisorctl时异常:error: , : file:

这时可以在执行supervisorctl时通过-c选项指定配置文件的位置:[root@test1 ~]# /usr/bin/supervisorctl -c /etc/supervisord.conf status

曾经有一次面试,面试官提问:“有一个脚本,如何让它在开机之后一小时的时候开始执行?”

我答:“在脚本开头加上‘sleep 3600’,再把脚本加入rc.d目录开机启动。”

其实,用Supervisor就可以更合理地实现。

这是一个比较复杂的项目,需要一定的技术基础。以下是大致的步骤: 1. 搭建Flask应用程序,包括路由和页面模板。 2. 安装mysql,并连接到Flask应用程序。 3. 编写采集系统CPU和内存使用率的Python脚本,并将采集到的数据存储到mysql中的表中。 4. 使用Ajax实现前端页面与后端的数据交互,定时获取mysql中的数据并更新折线图。 具体实现步骤如下: 1. 搭建Flask应用程序 首先需要安装Flask框架和相关依赖。可以使用pip命令进行安装: ```python pip install flask pip install flask-mysql ``` 接下来创建一个Flask应用程序,并编写路由和页面模板。 ```python from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run() ``` 在templates文件夹下创建一个名为index.html的模板文件,用于显示实时监控的折线图。 ```html <!DOCTYPE html> <html> <head> <title>CPU内存实时监控</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.6.0/echarts.min.js"></script> </head> <body> <div id="chart" style="width: 100%; height: 400px;"></div> <script> var myChart = echarts.init(document.getElementById('chart')); var option = { title: { text: 'CPU内存实时监控' }, tooltip: { trigger: 'axis' }, legend: { data:['CPU使用率', '内存使用率'] }, xAxis: { type: 'category', boundaryGap: false, data: [] }, yAxis: { type: 'value', axisLabel: { formatter: '{value}%' } }, series: [ { name: 'CPU使用率', type: 'line', data: [] }, { name: '内存使用率', type: 'line', data: [] } ] }; myChart.setOption(option); setInterval(function() { $.ajax({ url: '/data', success: function(data) { var xAxisData = []; var cpuData = []; var memData = []; for(var i = 0; i < data.length; i++) { xAxisData.push(data[i].time); cpuData.push(data[i].cpu); memData.push(data[i].memory); } myChart.setOption({ xAxis: { data: xAxisData }, series: [ { name: 'CPU使用率', data: cpuData }, { name: '内存使用率', data: memData } ] }); } }); }, 1000); </script> </body> </html> ``` 2. 安装mysql,并连接到Flask应用程序 首先需要安装mysql,并创建一个数据库和一个表用于存储采集到的数据。 ```sql CREATE DATABASE monitor; USE monitor; CREATE TABLE data ( id INT NOT NULL AUTO_INCREMENT, time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, cpu FLOAT, memory FLOAT, PRIMARY KEY (id) ); ``` 接下来在Flask应用程序中添加mysql配置,并连接到mysql。 ```python from flaskext.mysql import MySQL app = Flask(__name__) app.config['MYSQL_DATABASE_HOST'] = 'localhost' app.config['MYSQL_DATABASE_PORT'] = 3306 app.config['MYSQL_DATABASE_USER'] = 'root' app.config['MYSQL_DATABASE_PASSWORD'] = '123456' app.config['MYSQL_DATABASE_DB'] = 'monitor' mysql = MySQL() mysql.init_app(app) @app.route('/data') def get_data(): cursor = mysql.get_db().cursor() cursor.execute('SELECT * FROM data ORDER BY time DESC LIMIT 30') data = cursor.fetchall() return jsonify(data) ``` 3. 编写采集系统CPU和内存使用率的Python脚本,并将采集到的数据存储到mysql中的表中 使用psutil库可以方便地获取系统CPU和内存使用率。编写一个Python脚本,定时采集CPU和内存使用率,并将采集到的数据存储到mysql中的表中。 ```python import psutil import time import pymysql conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='monitor') while True: cpu_percent = psutil.cpu_percent(interval=1) mem_percent = psutil.virtual_memory().percent cursor = conn.cursor() cursor.execute('INSERT INTO data (cpu, memory) VALUES (%s, %s)', (cpu_percent, mem_percent)) conn.commit() time.sleep(1) conn.close() ``` 4. 使用Ajax实现前端页面与后端的数据交互,定时获取mysql中的数据并更新折线图 在前面的index.html模板文件中已经使用Ajax定时获取数据并更新折线图。 ```javascript setInterval(function() { $.ajax({ url: '/data', success: function(data) { var xAxisData = []; var cpuData = []; var memData = []; for(var i = 0; i < data.length; i++) { xAxisData.push(data[i].time); cpuData.push(data[i].cpu); memData.push(data[i].memory); } myChart.setOption({ xAxis: { data: xAxisData }, series: [ { name: 'CPU使用率', data: cpuData }, { name: '内存使用率', data: memData } ] }); } }); }, 1000); ``` 以上就是使用Flask+mysql+html搭建CPU内存实时监控折线图功能的大致步骤。需要注意的是,由于采集系统CPU和内存使用率的Python脚本需要长时间运行,可以使用supervisor等工具进行进程管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值