当前位置:首页 > 生活百科

python运维开发实例(python运维管理系统)

栏目:生活百科日期:2025-04-24浏览:0

在日常工作中,我们以往登录到服务器部署安装环境时,所操作的命令都是实时打印过程信息或者查看应用日志实时输出日志的时候我们也可以用tailf命令实时显示,

但是当我们把这些工作web平台化之后,怎么使用实时查看日志呢,我使用过以下两种方法实现:

1. 前端网页使用ajax定时向服务器请求获取日志信息返回。是不是有点low,但功能还是实现了。

2. 前端网页使用websocket建立连接,实时从服务器接收日志。

目前使用第二种方法通过使用flask来实现。

以下简单演示实现过程,从服务器中实时显示日志,可根据实际情况进行修改。

配图,代码参考往下内容

1.测试环境python3 使用pip安装以下库

Flask==1.1.2

gevent==20.9.0

gevent-websocket==0.10.1

2.服务端代码

import osimport timeimport loggingfrom gevent import monkeymonkey.patch_all()from gevent.pywsgi import WSGIServerfrom geventwebsocket.handler import WebSocketHandlerfrom geventwebsocket.exceptions import WebSocketErrorfrom flask import Flask, request, render_templatefrom multiprocessing import cpu_count, Processapp = Flask(__name__)def tailf(filename, websocket):    """打开文件并把读取内容发给websocket"""    with open(filename) as f:        # 输出已经存在的文件内容        websocket.send(''.join(f.readlines()))        # 移动到了文件EOF处        f.seek(0, 2)        while True:            line = f.readline()            if line:                websocket.send(line)            else:                time.sleep(1)@app.route('/tailf/')def tailf_log():    websocket = request.environ&['wsgi.websocket']    # 演示功能这里写死,实际使用可自定义    filename = '/data/ops/20201117/test.log'    if os.path.exists(filename):        try:            tailf(filename, websocket)        except WebSocketError as e:            logging.info('error {} websocket Closed!'.format(e))            websocket.close()        return 'ok'    else:        websocket.send('&<h3&>查看的文件不存在!&</h3&>')@app.route('/')def index():    return render_template('index.html')# 日志配置logging.basicConfig(    filename='logs.log',    format='%(asctime)s %(levelname)s: %(message)s',    level='INFO')# 实例化 这里包括监听端口ws_server = WSGIServer(    ('0.0.0.0', 5000),    app,    log=logging,    handler_class=WebSocketHandler,)ws_server.start()def serve_forever():    try:        ws_server.start_accepting()        ws_server._stop_event.wait()    except KeyboardInterrupt:        ws_server.stop()if __name__ == "__main__":    # 用multiprocessing配合gevent来启动多进程    for i in range(cpu_count()):        p = Process(target=serve_forever)        p.start()

3.前端代码(需要引入jquery.min.js

&<!doctype html&>&<html lang="en"&>&<head&>    &<title&>实时日志查看&</title&>    &<!-- jQuery 3 --&>    &<script src="{{ url_for('static', filename='jquery/dist/jquery.min.js') }}"&>&</script&>&</head&>&<body&>&<p class="container"&>    &<p id="log_id"&>        &<pre&>&</pre&>    &</p&>&</p&>&<script&>    var ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";    var socket = new WebSocket(ws_scheme + '://' + "192.168.209.222:5000/tailf/");    var log_id = $("#log_id");    var log_pre_id = $("#log_id pre");    socket.onopen = function () {        socket.onmessage = function (msg) {            log_pre_id.append(msg.data);            // 滚动条滚动到最低部            log_id.scrollTop(log_pre_id.height() - log_id.height());        };    };    socket.onerror = function () {        log_pre_id.innerHTML = '&<h3&>连接websocket失败!&</h3&>';    };    window.onbeforeunload = function (event) {        console.log("关闭WebSocket连接!");        socket.close();    }&</script&>&</body&>&</html&>

4.运行代码进行测试

在服务器上模拟定时输出信息到日志文件

for i in $(seq 1 1000);do echo -e &“$i &—&—&—&—&—-&” &>&> /data/ops/20201117/test.log;sleep 1;done

在浏览器打开网页实时查看

PS: 我比较好奇在头条发这一类文章有没有流量的,毕竟在这里的大部分以手机端娱乐为主

“python运维开发实例(python运维管理系统)” 的相关文章

三位密码箱忘记密码怎么办(3招快速打开密码箱)

现在的行李箱很多都带有密码锁,行李箱忘记密码了怎么办?很多人都遇到过,今天小编就来教你怎么打开。一:长条转锁1、把箱子反过来放,旋转齿轮如图所示,往黄线方向看,...

墨菲定律书怎么样,一本能提升你的情商和智慧的书籍

墨菲定律&&#8211;张新捷这是一本鸡汤文集,由于作者强行把鸡汤往墨菲定律上靠,结果导致了一个比较尴尬的结果:本书的内容并没有印证墨菲定律,但是本书的出现确实...

互联网项目经理需要懂技术吗(互联网项目经理简历)

关于这个问题,我想开门见山地说一句,需要,而且非常需要。当然有同学就会说了,项目经理懂技术会被技术所束缚,无法跳出技术角度来看待项目整体。还有同学会说,现在是团...

excel数据透视图教程(零基础入门到精通)

数据透视图是数据的另一种表现形式,与数据透视表的不同在于:它可以选择适当的图表,并使用多种颜色来描述数据的特性,它能够更加直观地分析数据。今天就为大家介绍如何使...

产品经理软件有哪些(公认最好用的5大工具)

通过求教自家的产品小哥哥小姐姐,以及自己的草根调研,我整理出产品经理常用的11款工具,按照产品规划的前后顺序分为5大部分:需求分析(信息采集+需求提炼)业务建模...

创业失败案例分析,找出创业失败的原因是什么

从模式、品控和校正三个方面,谈一谈创业败局——15个败局故事带给我们的启示有人说我们现在创业越来越容易,起步容易,但生存下去其实是越来越难——过去一招鲜吃遍天,...

excel保存错了怎么恢复,很简单只需2个步骤就恢复了

太多太多的小伙伴提问,Excel文件未保存就关闭了,怎么恢复数据?如果你搜百度,会搜到一种常见的方法:文件&&#8211;信息&&#8211;管理工作簿&&#8...

什么叫营销,营销的模式及策略是什么

作为一枚广告人,我最不喜欢的说法之一,就是说广告是营销的一部分,是营销一个子集,是营销4P中的Promotion推广。广告和营销自然有重合的地方,但二者其实是截...

企业seo优化方案,企业seo网站如何营销推广

一、网站开发流程1、明确主题其实无论你是企业站、个人站点甚至是流量站点,建站初期你都需要找到一个点,明确自己的主题,以点带面的去规划整个网站,这有点类似做淘宝,...

word打印缩放怎么设置(免费教你设置word打印缩放文档)

Word可以说在我们平日的工作过程中,是一款经常会用到的办公软件了。如果你因为工作的需要,写了两页的Word文档总结,而其实第二页中的内容只有一点点,那么此时如...