Aleksandr Razumov
Aleksandr Razumov
Achieve 100% prometheus compatibility.
Query: ``` sum(count_over_time({cluster=~"$cluster", job="$export_job"} |~ "process_exec" |~ "$namespace" |~ "$container_runtime" | json | process_exec_process_pod_namespace =~ "$namespace" and process_exec_parent_binary=`$container_runtime` and process_exec_parent_pid != 1 [$__range])) by (process_exec_process_pod_workload) ``` Error: ``` "instant query:...
Fallback from zap json logs to generic ones without the "msg" field. Example: Kubernetes audit log ```json {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Request","auditID":"49a08e1d-3ed6-4879-a3c4-0b83cb349a58","stage":"ResponseComplete","requestURI":"/api/v1/pods?fieldSelector=status.phase%21%3DSucceeded%2Cstatus.phase%21%3DFailed\u0026limit=100","verb":"list","user":{"username":"system:serviceaccount:kube-federation-system:host-cluster-kommander","uid":"03859d7f-5b1f-4476-b38b-0312199c1463","groups":["system:serviceaccounts","system:serviceaccounts:kube-federation-system","system:authenticated"]},"sourceIPs":["172.21.160.144"],"objectRef":{"resource":"pods","apiVersion":"v1"},"responseStatus":{"metadata":{},"code":200},"requestReceivedTimestamp":"2025-10-14T10:46:27.983670Z","stageTimestamp":"2025-10-14T10:46:28.002751Z","annotations":{"authentication.k8s.io/legacy-token":"system:serviceaccount:kube-federation-system:host-cluster-kommander","authentication.k8s.io/legacy-token-manual-secret":"host-cluster-kommander","authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding \"kubefed-controller-manager:host-cluster-kommander\" of ClusterRole \"kubefed-controller-manager:host-cluster-kommander\" to ServiceAccount \"host-cluster-kommander/kube-federation-system\""}} ```
For analytical/metrics purposes add size in bytes of 1. Raw log record `size_raw` 2. Aggregated (parsed) log record `size`
Data retetion options per tenant. Probably even per `f(resource)` with callbacks?
Integrate sentry for error reporting. All 500-s and panics should be sent to sentry.
Multi-tiered storage support, e.g. sending to block storage after some retention policy
The oteldb should support downsampling, probably by writing simultaniously into multiple destinations with different degree of sampling. Probably even per `f(resource)` with callbacks?
https://github.com/planetscale/vtprotobuf