HiQ - A Modern Observability System
Project description
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
Get Started
Let start with a simplest example by running HiQ against a simple monolithic python code 📄 main.py:
# this is the main.py python source code
import time
def func1():
time.sleep(1.5)
print("func1")
func2()
def func2():
time.sleep(2.5)
print("func2")
def main():
func1()
if __name__ == "__main__":
main()
In this code, there is a simple chain of function calls: main() -> func1 -> func2.
Now we want to trace the functions without modifying its code. Let’s run the following:
git clone https://github.com/oracle-samples/hiq.git
cd hiq/examples/quick_start
python main_driver.py
If everything is fine, you should be able to see the output like this:
From the screenshot we can see the timestamp and the latency of each function:
main |
func1 |
func2 |
tracing overhead |
|
---|---|---|---|---|
latency(second) |
4.0045 |
4.0044 |
2.5026 |
0.0000163 |
HiQ just traced the main.py file running without touching one line of its code.
Documentation
HTML: 🔗 HiQ Online Document, PDF: 🔗 HiQ PDF Document.
Examples
Please check 🔗 examples for usage examples.
Contributing
HiQ welcomes contributions from the community. Before submitting a pull request, please review our 🔗 contribution guide.
Security
Please consult the 🔗 security guide for our responsible security vulnerability disclosure process.
License
Copyright (c) 2022 Oracle and/or its affiliates. Released under the Universal Permissive License v1.0 as shown at https://oss.oracle.com/licenses/upl/.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file hiq-python-1.0.3.tar.gz
.
File metadata
- Download URL: hiq-python-1.0.3.tar.gz
- Upload date:
- Size: 46.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | db10f6cfab1ecb08c94ced26ff4c6c97de92824c7e635de44f32702f541da32e |
|
MD5 | 4d0da0102cddec4b1e0b75d3d2ad8561 |
|
BLAKE2b-256 | a190e0458e379dd1b7d0cd989386a3ffad9085b650322dc9541eea0e631a0173 |
File details
Details for the file hiq_python-1.0.3-py3-none-any.whl
.
File metadata
- Download URL: hiq_python-1.0.3-py3-none-any.whl
- Upload date:
- Size: 54.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83eba83cd521858f9e6da1fcdfdf94cf8f400970ecea6017f869cbc017bed304 |
|
MD5 | 3701f14cbbe12a1d976930e499b6f203 |
|
BLAKE2b-256 | 099693d8086e1397ea2872043ad8e157479d924a5d8bf91dd4b6a29ae3e8c186 |