openshift 如何输出json日志

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: openshift 如何输出json日志

文章目录

1. JSON Logging

2. Add Logging for dev-coffeeshop Namespace

3. 在Kibana中检查结构化日志

3.1 Open Kibana Route

3.2 建立索引模式

3.3 使用Kibana查询Elasticsearch

4. 清理日志查询,方便故障处理

Red Hat OpenShift 4.8 环境集群搭建

openshift 如何输出json日志

openshfit Vertical Pod Autoscaler 实践

openshift Certified Helm Charts 实践

openshift 创建一个Serverless应用程序

openshift gitops 实践

openshift Tekton pipeline 实践

1. JSON Logging

Red Hat®OpenShift®容器平台的4.8版包含了JSON日志记录支持,现在这又回到了日志解决方案中。

客户现在可以精确地控制哪些容器日志是json格式的。他们可以标记通用的JSON模式,以便日志管理系统(Red Hat管理的Elasticsearch系统或第三方系统)确切地知道如何处理这些日志。


当一个parse: json字段被添加到ClusterLogForwarder自定义资源的管道中时,顶级字段被添加并以structured作为前缀。

当使用它们在集成的Elasticsearch集群中存储日志数据时,将为每个新的管道创建新的Elasticsearch索引。进入翻译页面


集群的本地Elasticsearch服务器在创建每一个新索引时都会面临显著的性能影响


实现目标:


演示结构化JSON日志记录

检查一个为dev-咖啡店项目定制的ClusterLogging资源

使用Kibana显示结构化日志

说明如何将结构化日志发送到其他日志采集器

2. Add Logging for dev-coffeeshop Namespace

对于本练习,您将使用以下ClusterLogForwarder配置,该配置已经部署在您的集群中。

要查看ClusterLogForwarder配置,请执行以下操作:


在OpenShift容器平台web控制台中,选择“Project: All Projects”。

使用透视图切换器切换到Administrator透视图并单击Search。

在“Resources”下拉列表中,选择“ClusterLogForwarder”。

单击CLFinstance,然后在出现的页面上单击YAML。

查看这个配置,看看创建JSON日志时的新特性:

apiVersion: logging.openshift.io/v1
kind: ClusterLogForwarder
metadata:
  name: instance
  namespace: openshift-logging
spec:
  inputs:
 - application:
      namespaces:
      - dev-coffeeshop 
    name: dev-coffeeshop-input-example
  outputDefaults: 
    elasticsearch:
      structuredTypeKey:  kubernetes.namespace_name 
        # OR
      structuredTypeName: dev-coffeeshop-index-name 
  pipelines:
 - inputRefs: 
    - dev-coffeeshop-input-example
    name: pipeline-dev-coffeeshop
    outputRefs:
    - default
    parse: json
 - inputRefs: 
    - infrastructure
    - application
    - audit
    outputRefs:
    - default

从dev-coffeeshop名称空间引导日志的定制输入。

默认输出是集群的Elasticsearch,而不是远程服务器。

这将基于名称空间在Elasticsearch中设置一个结构化日志索引。

一个用户定义的字符串,它命名了索引,如果存在的话,前面会有一个structuredTypeKey。

启用JSON解析的管道。

没有JSON解析的所有公共输入的管道。

每个用于Elasticsearch的新JSON日志管道都会在Elasticsearch中创建一个新索引。从命令行,你可以得到一个ES索引的快速列表:oc exec $es_pod -c elasticsearch -- indices


稍后,我们将在dev- coffeshop名称空间中看到咖啡馆应用程序可用的结构化日志。


在Kibana中写一个查询,只从structured.message中获取日志消息。

3. 在Kibana中检查结构化日志

在这个练习中,您通过openshift-logging命名空间中的Kibana路由访问Kibana web控制台,并查询结构化日志。

3.1 Open Kibana Route

1.从OpenShift容器平台web控制台Administrator 的角度找到Kibana URL作为路由,并确保选中了Project: OpenShift -logging。

2.在导航菜单中,导航到“Network → Routes”。

期待看到Kibana服务的位置。

3.单击该位置以打开它。

3.2 建立索引模式

In the Kibana web console, click Management.

Click Index Patterns.

Click Create index pattern.

In the Index pattern field, enter app-dev-coffeeshop-*, then click Next Step.

In the Time Filter field, select @timestamp.

Click Create index pattern.

3.3 使用Kibana查询Elasticsearch

Click Discover.

如果还没有选中app-dev-coffeeshop-*,请使用左侧的下拉列表选择app-dev-coffeeshop-*。

在找到的第一个日志条目上,单击右箭头▶查看日志详细信息。

在列表的底部,找到structured的条目。 elements, including structured.hostName

structured.message, and structured.level

1035234-20181020215539574-213176954.png

每种具有不同JSON格式的日志输入类型都在Elasticsearch数据库中创建一个新索引,以处理不同的structured.*数据。通过“Apache”、“Google”等标准JSON格式组织日志来节约资源。

4. 清理日志查询,方便故障处理

应用程序不断地发出消息,因此您需要一种方法来清除混乱,只查看对您的情况有意义的消息和查询结果。结构化JSON日志记录使这变得更容易。


首先,查看一个杂乱的消息,其中的数据不明显,无法搜索:


在Available Field下找到*t* message并单击add。

观察日志输出如何更容易阅读,但是消息仍然很模糊——这是查看任何输出时的典型情况

整理的信息:


Under Selected fields find *t* message and click remove.

Under Available fields find and click add for *t* structured.message, *t* structured.origin, and *t* structured.type

注意,这里只显示了您做决策所需的关键数据

如果有某种类型的orderID,可以将起源和类型的Order Details与FINISHED和COLLECTED的Order Status关联起来,那就太好了。为了实现这个目标,你会要求开发人员进行哪些代码更改?


在本课程的后面,您将把prod- coffeshop名称空间添加到这个日志管道中,并更新查询。

现在,我们来看看OpenShift容器平台4.8的另一个重要功能:Certified Helm Charts。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
JSON 编解码 JavaScript
工银e生活开发脱坑日志(8)使用json_decode无法解析json,双引号才是json 的标准
工银e生活开发脱坑日志(8)使用json_decode无法解析json,双引号才是json 的标准
77 0
|
消息中间件 JSON 缓存
Golang:将日志以Json格式输出到Kafka2
Golang:将日志以Json格式输出到Kafka2
176 0
|
消息中间件 JSON 缓存
Golang:将日志以Json格式输出到Kafka1
Golang:将日志以Json格式输出到Kafka1
94 0
|
JSON 数据格式 Python
SLS数据加工对Json数据解析与更新
本文档介绍对于包含Json格式字段的日志如何进行解析。 ## 场景一:Json对象展开与提取 日志中包含Json对象,通过e_json进行字段展开与对象提取 **示例1: Json一层展开** * 原始日志 ``` data: {"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}} ``` * 加工规则 ```python e_json("data", de
|
JSON Linux 开发工具
linux下提取日志文件中的某一行JSON数据中的指定Key
linux下提取日志文件中的某一行JSON数据中的指定Key
145 0
|
JSON 数据可视化 JavaScript
python--转换wrf输出的风场数据为网页可视化的json格式
python--转换wrf输出的风场数据为网页可视化的json格式
python--转换wrf输出的风场数据为网页可视化的json格式
|
JSON 监控 前端开发
(扩展)网站流量日志分析--数据可视化-- vue 版--复杂 json 具体实现 | 学习笔记
快速学习(扩展)网站流量日志分析--数据可视化-- vue 版--复杂 json 具体实现
167 0
(扩展)网站流量日志分析--数据可视化-- vue 版--复杂  json 具体实现 | 学习笔记
|
XML JSON 缓存
自定义变量、Nginx 访问日志转换为 json 及 Nginx gzip 压缩功能(二)|学习笔记
快速学习自定义变量、Nginx 访问日志转换为 json 及 Nginx gzip 压缩功能
288 0
自定义变量、Nginx 访问日志转换为 json 及 Nginx gzip 压缩功能(二)|学习笔记
|
JSON 负载均衡 搜索推荐
自定义变量、Nginx 访问日志转换为 json 及 Nginx gzip 压缩功能(一)|学习笔记
快速学习自定义变量、Nginx 访问日志转换为 json 及 Nginx gzip 压缩功能
287 0
自定义变量、Nginx 访问日志转换为 json 及 Nginx gzip 压缩功能(一)|学习笔记
|
XML JSON Java
Spring Batch输出文本数据 XML数据 JSON数据 数据库
Spring Batch输出文本数据 XML数据 JSON数据 数据库