github GoogleCloudPlatform/khi v0.49.0
KHI v0.49.0

latest release: v0.49.1
17 hours ago
Gemini_Generated_Image_t5su1vt5su1vt5su

Featured changes:

CSM Access Log support

We have added support for visualizing CSM access logs. By correlating access logs with the timelines of the source client and destination server Pods, you can easily identify the root cause of transient access errors.

image

This example screenshot showing client side error due to "No healthy upstream" when I deleted a server Pod intentionally

Large refactoring & improvement on existing parsers

We have migrated almost all parsers, except for the Kubernetes audit log parser, to a new architecture. This transition has improved concurrency and includes enhancements to several existing parsers.

Control plane log enhancement

image

The control plane log parser now displays Controller Manager logs on individual timelines for each specific controller. This allows you to see at a glance the volume of logs generated by each controller over time and identify which controllers are producing high-severity logs.

Autoscaler log enhancement

Autoscaler status is now visualized on the timeline. If the autoscaler is unable to scale for any reason, the timeline color changes to clearly indicate the issue.

Serial port log enhancement

image

Serial port logs are now displayed on separate timelines for each TTY. This makes it easier to follow the log flow when inspecting specific points. Additionally, the logic for formatting ANSI control characters (which appear as escape sequences in Cloud Logging) has been improved to strip escape characters more accurately.

Optimization

We have eliminated redundant sorting operations during log writing in many parsers. This improves the time complexity from $O(N^2 \log N)$ to $O(N \log N)$, where $N$ is the volume of logs per timeline.

The logic for mapping container IDs to container names in Kubelet logs has been updated to use a Trie-based algorithm. This reduces the complexity from $O(NM)$ to $O(N)$ (where $N$ is the number of container IDs and $M$ is the total length of the logs).

In addition to these algorithmic improvements, I/O locking mechanisms have been optimized to further enhance performance.

Single Binary Executable

Thanks to our new contributor @dlipovetsky, static resources (such as HTML and JS files) can now be embedded directly into the binary. This allows the application to run as a standalone single binary without requiring a Docker container.

However, please note that the currently recommended method for using KHI remains the Docker container approach. We plan to make the single binary approach a recommended standard once the deployment pipelines are fully established in future releases.
 

What's Changed

  • Refactor the new base types of inspection tasks by @kyasbal in #338
  • Large refactors to all the legacy parsers to use the new task base types with granular task separation + adding CSM access log parser by @kyasbal in #354
  • fix panic error on containerd id finder task by @kyasbal in #355
  • Implement the new klog and logfmt structured log parser by @kyasbal in #359
  • Fix the flaky end time input form default value issue by @kyasbal in #360
  • bug: controlplane forms and csm forms were using the same form field priority by @kyasbal in #363
  • Embed static web files in executable, and use them by default by @dlipovetsky in #362
  • Optimize BinaryWriter to write data efficiently from multi threads by @kyasbal in #356
  • Fix issues after upgrading markdown lint by @kyasbal in #366
  • bug: fixed --base-path option to be respected with using embedded file system to serve static files by @kyasbal in #367
  • Optimize HistoryModifier and deprecate HistoryBuilder.ParseLogsByGroups by @kyasbal in #365

Dependencies ⏫

New Contributors

Full Changelog: v0.48.4...v0.49.0

Don't miss a new khi release

NewReleases is sending notifications on new releases.