文档章节

实时日志查看

o
 osc_f71x2pl6
发布于 2018/08/31 18:09
字数 612
阅读 14
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

 

参考:  http://www.ttlsa.com/python/monitor-log-realtime-python-websocket/

 

  http://www.cnblogs.com/xiaoyou2018/archive/2018/07/18/9328950.html

 

  https://blog.csdn.net/devilcry13/article/details/81702147

 

  https://blog.csdn.net/s740556472/article/details/78991704

 

  https://www.cnblogs.com/shihaiming/p/6201678.html

 

 

1. websocket  server 端代码:   websocket_server.py

python  websocket_server.py  启动服务器端.

#!/usr/bin/env python
#-*- encoding: utf-8 -*-


#websocket服务端
from bottle import request, Bottle, abort
from geventwebsocket import WebSocketError
from gevent.pywsgi import WSGIServer
from geventwebsocket.handler import WebSocketHandler
app = Bottle()
users = set()
@app.get('/websocket/')
def handle_websocket():
    wsock = request.environ.get('wsgi.websocket')
    print wsock
    users.add(wsock)
    if not wsock:
        abort(400, 'Expected WebSocket request.')
    while True:
        try:
            message = wsock.receive()
        except WebSocketError:
            break
        print u"现有连接用户:%s" % (len(users))
        if message:
            for user in users:
                try:
                    user.send(message)
                except WebSocketError:
                    print u'某用户已断开连接'
    # 如果有客户端断开,则删除这个断开的websocket
    users.remove(wsock)


if __name__ == "__main__":
    server = WSGIServer(("0.0.0.0", 8100), app,handler_class=WebSocketHandler)
    server.serve_forever()

 

 

2.  查看日志,就需要信息的实时采集,采集过后发给 websocket server.,代码:    websocke_pipe.py

再服务端起动后再起》 python websocke_pipe

这里采集的是本地的日志.

#!/usr/bin/python
# encoding=utf-8


#websocket客户端
import subprocess
import time
from websocket import create_connection
# 配置远程服务器的IP,帐号,密码,端口等,因我做了双机密钥信任,所以不需要密码
# r_user = "root"
# r_passwd='jason_zhang'
# r_ip = "192.168.2.224"
# r_port = 22
r_log = "/tmp/ansible.log"   # 远程服务器要被采集的日志路径
# websocket服务端地址
ws_server = "ws://localhost:8100/websocket/"
# 执行的shell命令(使用ssh远程执行)
cmd = "/usr/bin/tailf {log_path}".format(log_path=r_log)
def tailfLog():
    """获取远程服务器实时日志,并发送到websocket服务端"""
    popen = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
    print('连接成功')
    ws = create_connection(ws_server)   # 创建websocket连接
    while True:
        line = popen.stdout.readline().strip()  #获取内容
        print line
        if line:
            ws.send(line)   #把内容发送到websocket服务端
        print (time.time())
if __name__ == '__main__':
    tailfLog()

 

3.  打开HTML5  页面(也就是客户端)来连接就可以看到实时日志了.

<!DOCTYPE html>
<html>
<head>
</head>
    <body>
    <p>实时日志</p>
    <div>
        <textarea name="content" id="msg" rows="20" cols="100">
        </textarea>
    </div>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
    <script>
    $(document).ready(function() {
        /* !window.WebSocket、window.MozWebSocket检测浏览器对websocket的支持*/
        if (!window.WebSocket) {
            if (window.MozWebSocket) {
                window.WebSocket = window.MozWebSocket;
            } else {
                $('#msg').prepend("<p>你的浏览器不支持websocket</p>");
            }
        }
        /* ws = new WebSocket 创建WebSocket的实例  注意设置对以下的websocket的地址哦*/
        ws = new WebSocket('ws://127.0.0.1:8100/websocket/');
        /*
            ws.onopen  握手完成并创建TCP/IP通道,当浏览器和WebSocketServer连接成功后,会触发onopen消息
            ws.onmessage 接收到WebSocketServer发送过来的数据时,就会触发onmessage消息,参数evt中包含server传输过来的数据;
        */
        ws.onopen = function(evt) {
            $('#msg').append('<li>websocket连接成功</li>');
        }
        ws.onmessage = function(evt) {
            $('#msg').prepend( evt.data);
        }
    });
</script>
</body>
</html>

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
实时分析系统--istatd

istatd是IMVU公司工程师开发的一款优秀的实时分析系统,能够有效地收集,存储和搜索各种分析指标,类似cacti,Graphite,Zabbix等系统。实际上,istatd修改了Graphite的存储后端,重新实现了...

匿名
2013/02/07
2.9K
1
日志分析平台 - Kibana

Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。 环境要求: ruby >= 1.8.7 (probably?) bundler logstash...

匿名
2013/02/13
11.5W
1
Swing界面分析和调试工具--Swing Inspector

Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似,具有强大的Swing/AWT用户界面分析和调试相关功能。 适用于从java swing初级到高级的所有开发人员,能够快速...

匿名
2013/03/06
3.3K
0
Android 设备管理工具--androrat

androrat 是一个对 Android 设备进行远程管理的工具。 功能包括: 获取通讯录信息 获取呼叫记录 获取短信和彩信 通过 GPS 获取定位 实时监控接收到的短信 监控手机的呼叫状态 拍照 获取来自麦...

匿名
2013/03/28
2.7W
11
阿里云开放存储服务的C语言SDK--OSSC

OSSC(Aliyun Open Storage Service C SDK)为阿里云开放存储服务(OSS)提供了一套完整易用的C SDK。 OSSC完全采用C语言开发,并实现了类似面向对象的调用方式,遵循了良好的编码规范,目前O...

大卷卷
2012/10/22
4.5K
0

没有更多内容

加载失败,请刷新页面

加载更多

数据获取的小技巧

在大数据如此火的时代,我们要获取更多数据,就要进行数据采集,过滤,然后再进行使用。比如当我们在进行一个项目并且需要大量真实数据时,就需要通过爬虫去获得,有些爬取额数据还不能直接使用,...

xiaotaomi7
47分钟前
21
0
docker cp 容器和虚拟机间的数据拷贝

容器复制到主机 docker cp {container_name}:{source_path} {target_path}#例子: docker cp php:www/php.ini /home/alex/php.ini 主机复制到容器 docker cp {source_path} {container_nam......

关元
55分钟前
25
0
spring boot整合kafaka批量消费

spring boot整合kafaka批量消费: 配置文件: kafka: producer: bootstrap-servers: 127.0.0.1:9092 batch-size: 16785 #一次最多发送数据量 retries: 1 #发送失败后的重复发送次数 buffer-m...

漫步行者
今天
7
0
最新苹果多屏电脑控制技术---ios群控/苹果群控/一键实时同步操作/入门安装步骤以及功能讲解

创联苹果群控是一款通过无线发送命令来操作主控手机来带动全部被控手机,主控手机怎么操作被控手机全部同步进行相同操作,支持一键每台手机输入不一样的文字!无需连接USB数据线、无需XP框架...

osc_bodzcw38
今天
10
0
NOIP模拟赛 编码

题目描述 一个字符串str的p型编码a的定义如下:把str表示成b1个c1,b2个c2…bn个cn,然后将b1,c1,b2,c2,…,bn,cn收尾拼接成的字符串中最短的字符串设为a。例如:字符串122344111可被描述为"1个...

osc_wcs4pa6z
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部