kubernetes log 流式数据处理
PS: 最近在重构公司的业务容器化平台,记录一块。关于容器日志的, kubernetes python API本身提供了日志流式数据,在以前的版本是不会输出新数据的,后续版本进行了改进。
直接上代码
Flask 前端路由块
# Router
"""获取项目pod的日志"""
@api_cluster_pod.route('/<env>/<cluster_name>/pod/<pod_name>/log')
@env_rules
def api_cluster_pod_log(env, cluster_name, pod_name):"""查看pod的log"""tail_lines = request.values.get("tail_lines", 1000)namespace = request.values.get("namespace", "")# 生成Config Objecttry:cluster_config = ClusterConfig(env=env,cluster_name=cluster_name,namespace=namespace)except Exception as e:return jsonify(dict(code=5000,message='获取集群接口时未找到对应条目, 信息:{0}'.format(str(e))))try:poder = Pod( cluster_config)resp = Response(stream_with_context(poder.get_pod_log(pod_name, tail_lines)), mimetype="text/plain")return respexcept Exception as e:return jsonify(dict(code=7000,message=str(e)))
Flask 后端代码块
# 后台功能
class Pod:...def get_pod_log(self, pod_name, tail_lines=100):"""获取pod的日志:param tail_lines: # 显示最后多少行:return:"""try:# stream pod logstreams = self.cluster.api.read_namespaced_pod_log(pod_name,self.cluster_config.namespace,follow=True,_preload_content=False,tail_lines=tail_lines).stream()return streamsexcept ApiException as e:if e.status == 404:logger.exception("Get Log not fund Podname: {0}".format(pod_name))raise PodNotFund("获取日志时,未找到此pod: {0}".format(pod_name))if e.status == 400:raise PodNotFund("容器并未创建成功,请联系运维人员进行排查。")raise eexcept Exception as e:logger.exception("Get Log Fail: {0}".format(str(e)))raise e
HTML
<!DOCTYPE>
<html>
<head><title>Flushed ajax test</title><meta charset="UTF-8" /><script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script><style>#log-container {height: 800px;/*width: 800px;*/overflow-x: scroll;padding: 10px;}.logs {background-color: black;color: aliceblue;font-size: 18px;}</style>
</head>
<body>
<div id="log-container"><pre class="logs"></pre>
</div><script type="text/javascript">var last_response_len = false;var logs = $("#log-container");$.ajax('http://localhost/api/pre/ops-test/pod/ops-test-1211763235-jfbst/log?tail_lines=100', {xhrFields: {onprogress: function(e){var this_response, response = e.currentTarget.response;if(last_response_len === false){this_response = response;last_response_len = response.length;}else{this_response = response.substring(last_response_len);last_response_len = response.length;}// console.log(this_response);// 接收服务端的实时日志并添加到HTML页面中$("#log-container pre").append(this_response);// 滚动条滚动到最低部$("#log-container").scrollTop($("#log-container pre").height() - $("#log-container").height() + 10);}}}).done(function(data){console.log('Complete response = ' + data);}).fail(function(data){console.log('Error: ', data);});console.log('Request Sent');
</script>
</body>
</html>
其它
我们应用是前后端分离的,把html里面的核心代码放置VUE里面就可以了。
效果图
日志是流式的,如果Container有日志,则窗口会运态更新。
kubernetes log 流式数据处理相关推荐
- Java8 新特性之流式数据处理(转)
转自:https://www.cnblogs.com/shenlanzhizun/p/6027042.html 一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作 ...
- Java8 :流式数据处理
java8的流式处理极大了简化我们对于集合.数组等结构的操作,让我们可以以函数式的思想去操作,本篇文章将探讨java8的流式数据处理的基本使用. 一. 流式处理简介 在我接触到java8流式处理的时候 ...
- 图解大数据 | 流式数据处理-Spark Streaming
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/84 本文地址:http://www.showmeai.tech/article-det ...
- JDK8 新特性流式数据处理
在学习JDK8新特性Optional类的时候,提到对于Optional的两个操作映射和过滤设计到JDK提供的流式出来.这篇文章便详细的介绍流式处理: 一. 流式处理简介 流式处理给开发者的第一感觉就是 ...
- java8 新特性之流式数据处理_Java8新特性 - 集合流式编程 - 最终操作
2.数据源的获取 2.1.数据源的简介 数据源,顾名思义,既是流中的数据的来源.是集合的流式编程的第一步,将数据源中的数据读取到流中,进行处理.注意:将数据读取到流中进行处理的时候,与数据源中的数据没 ...
- 基于spark的流式数据处理—流计算处理流程以及应用场景
本文主要从一下几个方面来介绍流计算处理流程: 概述 数据实时采集 数据实时计算 实时查询服务 概述 传统的数据处理流程,需要先采集数据并存储在关系数据库等数据管理系统中,之后由用户通过查询操作和数据管 ...
- jstorm mysql_zookeeper,kafka,jstorm,memcached,mysql流式数据处理平台部署
一.平台环境介绍: 1.系统信息:项目信息 系统版本:Ubuntu14.04.2 LTS \n \l 用户:***** 密码:****** Java环境:openjdk-7-jre 语言:en_US. ...
- jstorm 读取mysql_zookeeper,kafka,jstorm,memcached,mysql流式数据处理平台部署
一.平台环境介绍: 1.系统信息: 项目 信息 系统版本: Ubuntu14.04.2 LTS \n \l 用户: ***** 密码: ****** Java环境: openjdk-7-jre 语言: ...
- 基于spark的流式数据处理—批处理和流处理区别
静态数据 很多企业为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据.技术人员可以利用数据挖掘和OLAP(On-Line Analytical Processing)分析工具从静 ...
最新文章
- R语言可视化散点图(scatter plot)图、为图中的部分数据点添加标签、ggrepel包来帮忙
- arm服务器配置信息,ARM板 web服务器交叉编译及配置
- php实现tail,Linux-如何用php实现Linux下的tail -f命令?
- 对比DFT程序与FFT程序的效率
- Pycharm如何自动换行
- 小点点软件对你非常实用
- Android系列---JSON数据解析
- AndroidStudio_安卓原生开发_什么是AndroidStudio NDK ---Android原生开发工作笔记140
- Day709.JShell -Java8后最重要新特性
- 任务含有时间窗与资源含有上下班时间的时间冲突约束构建思路
- Mybatis之插件
- Gin+Mysql简单的Restful风格的API
- 微信iPad协议-云控系统-微商工具-云发单-微信机器人
- 谷歌高级搜索技巧之高级语法查询指令
- 树型选择器/Browsing HDFS筛选文件类型
- php 点赞 代码,WordPress模板如何使用纯代码实现点赞功能?
- php可以用scanf,PHP可以使用“scanf”来打印输出结果( )。
- 单目视觉SLAM综述
- 机房监控系统的功能特点以及工作原理!
- 《系统设计》微服务不是银弹
热门文章
- 洛谷P2312解方程
- boost::trait::is_reference 的研究与修改
- ibatis自动生成插件
- 构建一个计算机网络,计算机网络--网络构建(一)
- n阶乘的c语言代码,求10000的阶乘(c语言代码实现)
- POJ2349二分+并查集,类似最小树的贪心
- hdu4940 有上下界的无源可行流判断
- hdu1839 二分最短路
- hdu4496并查集的删边操作
- 【数字信号处理】相关函数与线性卷积关系 ( 卷积概念 | 相关函数概念 | 相关函数与线性卷积对比 | x(-m) 共轭 与 y(m) 的卷积就是两个信号 位移 m 的相关函数 )