kubernetes日志流式数据处理

  

PS:最近在重构公司的业务容器化平台,记录一块。关于容器日志的,kubernetes python API本身提供了日志流式数据,在以前的版本是不会输出新数据的,后续版本进行了改进。

  

直接上代码

  
瓶前端路由块
  
 <代码类="语言python ">
  #路由器
  ”“”获取项目pod的日志”“
  @api_cluster_pod.route ('/& lt; env>/& lt; cluster_name>/舱/& lt; pod_name>/日志)
  @env_rules
  def api_cluster_pod_log (env cluster_name pod_name):
  ”“查看pod的日志”“”
  
  tail_lines=request.values。(“tail_lines”, 1000年)
  名称空间=request.values。get("名称空间”、“”)
  
  #生成配置对象
  试一试:
  cluster_config=ClusterConfig (
  env=env,
  cluster_name=cluster_name,
  名称空间=名称空间
  )
  除了例外e:
  返回jsonify (dict类型(
  代码=5000,
  消息='获取集群接口时未找到对应条目,信息:{0}的.format (str (e))
  ))
  
  试一试:
  能够=Pod (cluster_config)
  resp=(stream_with_context(能够响应。get_pod_log (pod_name tail_lines)), mimetype=" text/plain”)
  返回职责
  
  除了例外e:
  返回jsonify (dict类型(
  代码=7000,
  消息=str (e)
  ) 
  
瓶后端代码块
  
 <代码类="语言python "> #后台功能
  豆荚类:
  …
  def get_pod_log(自我、pod_name tail_lines=100):
  ”“”
  获取pod的日志
  :param tail_lines: #显示最后多少行
  返回:
  ”“”
  试一试:
  #流荚日志
  流=self.cluster.api.read_namespaced_pod_log (
  pod_name,
  self.cluster_config.namespace,
  遵循=True,
  _preload_content=False,
  tail_lines=tail_lines) .stream ()
  返回流
  
  除了ApiException e:
  如果e。状态==404:
  记录器。异常(“日志不是基金Podname: {0}“.format (pod_name))
  提高PodNotFund(“获取日志时,未找到此舱:{0}“.format (pod_name))
  如果e。状态==400:
  提高PodNotFund(“容器并未创建成功,请联系运维人员进行排查。”)
  e
  除了例外e:
  记录器。异常(“日志失败:{0}“.format (str (e)))
  e
   之前
  
  
 <代码> & lt; ! DOCTYPE>
  & lt; html>
  & lt; head>
  & lt; title>刷新ajax test
  & lt;元charset=" utf - 8 "/比;
  & lt;脚本type=" text/javascript " src=" https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js "祝辞& lt;/script>
  
  & lt; style>
  # log-container {
  身高:800 px;/*宽度:800 px; */overflow-x:滚动;
  填充:10 px;
  }
  . log {
  背景颜色:黑色;
  颜色:aliceblue;
  字体大小:18 px;
  }
  & lt;/style>
  & lt;/head>
  & lt; body>
  & lt; div id=發og-container”比;
  & lt;前类="日志"比;
  & lt;/pre>
  & lt;/div>
  
  & lt;脚本type=" text/javascript祝辞
  var last_response_len=false;
  var日志=$ (" # log-container ");
  美元. ajax (“http://localhost/api/pre/ops test/pod/ops -测试- 1211763235 - jfbst/log?tail_lines=100”, {
  xhrFields: {
  alt=" kubernetes日志流式数据处理"> 

kubernetes日志流式数据处理