HiQ - A Modern Observability System
HiQ([https://github.com/oracle-samples/hiq](https://github.com/oracle-samples/hiq)) is a declarative, non-intrusive, dynamic and transparent tracking system for both monolithic application and distributed system. It brings the runtime information tracking and optimization to a new level without compromising with speed and system performance, or hiding any tracking overhead information. HiQ applies for both I/O bound and CPU bound applications.

To explain the four features, declarative means you can declare the things you want to track in a text file, which could be a JSON, YAML or even CSV, and no need to change program code. Non-intrusive means HiQ doesn’t requires to modify original python code. Dynamic means HiQ supports tracing metrics featuring at run time, which can be used for adaptive tracing. Transparent means HiQ provides the tracing overhead and doesn’t hide it no matter it is huge or tiny.

In addition to latency tracking, HiQ provides memory, disk I/O and Network I/O tracking out of the box. The output can be saved in form of normal line by line log file, or HiQ tree, or span graph.

## Installation

pip install hiq-python

## Documentation

**HTML**: 📷[ HiQ Online Documents](https://hiq.readthedocs.io/en/latest/index.html)  
**PDF**: Please check 📷[ HiQ User Guide](https://github.com/oracle-samples/hiq/blob/main/hiq/docs/hiq.pdf).

## Jupyter NoteBook

### Add Observability to PaddleOCR

* [Latency](https://github.com/oracle-samples/hiq/blob/henry_dev/hiq/examples/paddle/demo.ipynb)
* [Memory](https://github.com/oracle-samples/hiq/blob/main/hiq/examples/paddle/demo_memory.ipynb)

### Add Observability to AlexNet

* [Latency](https://github.com/oracle-samples/hiq/blob/main/hiq/examples/onnxruntime/demo.ipynb)
* [Intrusive](https://github.com/oracle-samples/hiq/blob/main/hiq/examples/onnxruntime/demo_intrusive.ipynb)

## Examples

Please check 📷[ examples](https://github.com/oracle-samples/hiq/blob/main/hiq/examples) for usage examples.