Skip to content

KHI v0.56.0

Latest

Choose a tag to compare

@github-actions github-actions released this 23 Jun 08:00
fa419fe

KHI v0.56.0

.khi file format structure change

Previously .khi file format used JSON for storing its metadata and gzipped raw array buffer for long text part. This limits the maximum size of the logs due to the max string length accepted on V8.
This version changed .khi to use protocol buffer based file schema. It allows performant serialization/deserialization while we maintain file schema interface across backend and frontend.
Protocol buffer has limitation on the max size per single message, thus KHI concatenate multiple protos on simple KHI's container file format.

Comparison by file format update

scenario log volume old format size new format size reduction ratio
basic scenario 223464 logs 128.2MB 19.4MB x 6.6
larger scenario 1386843 logs 885.3MB 144.4MB x6.1

This is not only for the file size issue. KHI needs decompress string data from the file at the beginning of the load to perform filtering and consume a lot of memory(The larger scenario data with old format couldn't be loaded on my environment.) This allows frontend to open larger log data.

Note that even if we support larger log volume, still it's recommended to set appropriate filter to query. Larger logs takes longer time to filter and the inspection experience would be worse.

UI changes

More types of timelines

KHI was initially designed only for visualizing Kubernetes logs. Thus timeline layer count was fixed and it always has the structure APIVersion -> Kind -> Namespace -> Resource -> SubResource.
However, now we have a lot of types of visualization are placed with hierarchical relationships such as .status.conditions or .metadata.ownerReference. We recently added support for CSM TD resources or Managed airflow. These were needed to be placed on timeline with mapping their concept to kubernetes concept forcibly.
New change allows defining new timeline type for each parsers and the count of layers of timeline hierarchy is not limited.
image

With this change, Kubernetes resource hierarchy was changed to cluster name -> api version -> kind -> namespace -> resource -> subresource with aiming to support multi clusters.
image

New timeline filters

By the change of timeline types, KHI no longer guarantee given data contains namespace or kind timeline. It needed more widely applicable filtering mechanism.

image

CEL based filtering

image

The new filtering system is based on CEL based highly flexible filtering system. Now advanced user can input the filter directly. One of the example of this usage is to filter timelines by its manifest property.
The screenshot captures filtering timelines which has status.qosClass = Burstable. This allows us to find resources with more complex conditions.

Severity filtering

image

KHI hasn't supported severity based filtering. This was not from the architectural limit, but more like my own ideological policy. But now I supported it as there were many requests on it.
But note that severities in distributed system sometimes become misleading because each component decides its severity from its own perspective. Severity is not a universal criteria of logs.

Log body search and diff body search

image image

Our log or diff components hasn't provided searching capability. It lead user to use in-browser search but it sometimes hit other elements not on the logs or the manifest.

Graph view integration on the dockable window

hevc.mov

Now KHI's graph view is integrated on the dockable window. It allows us to see the diagram along with the timeline.

What's Changed

Bug Fixes 🐛

  • fix composer parsers to use GCPMainMessageFieldSet because log.MainMessageFieldSet is no longer used by default by @kyasbal in #792
  • fixed CSM access log timeline style by @kyasbal in #796
  • fix style override didn't reflect its status to preview by @kyasbal in #794

CI/CD ⚙️

  • fix build script failure for releasing by @kyasbal in #790
  • Simplified and optimized release workflows running on Cloud Build by @kyasbal in #797

Documentation 📝

  • docs: fix typo in development guide (automativally → automatically) by @manumishra12 in #799

Other Changes 🛠

New Contributors

Full Changelog: v0.55.2...v0.56.0