MCPcopy Index your code
hub / github.com/chazapp/o11y

github.com/chazapp/o11y @v2.4.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.4.1 ↗ · + Follow
91 symbols 279 edges 49 files 5 documented · 5%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

o11y

Test installation in Minikube WallAPI WallFront End-to-End

A DevOps shop showcase of observability in action.

Navigate this repository with the blog article !

Contents

A Terraform project that deploys to a Minikube cluster the following tools:

  • Grafana
  • Alloy
  • Loki
  • Kube-Prometheus-Stack
  • Tempo
  • Minio
  • Pyroscope

It also deploys the following example services:

These need to be updated to use the Kubernetes Gateway ! - The WallAPI, a REST API written in Golang instrumented via OpenTelemetrySDK and profiled by Pyroscope via /pprof - The WallClient, a front-end client written in React, auto-instrumented via Faro -> Grafana Agent -> Tempo & Loki

The project is moving towards a micro-service architecture, powered by Kubernetes Gateway implemented by Istio. The Gateway binds on ports 80 and 443 and controls access to the following services:

  • auth: An authentication service that provides HTTP handlers POST /register and POST /login which will provide the user with JWTs. The JWT private/public keys are generated by Terraform and added to the .runtime/ folder. The service also provides a GET /.well-known/jwks.json endpoint which provides the public key to validate tokens.

  • url-shortner: A simple url shortner service. The gateway requires request to this service to have a Authorization header providing the JWT.

Minikube

To test the complete stack, create a Minikube cluster then apply with Terraform.

The API Gateway requires minikube tunnel to be running in order for the LoadBalancer service to bind to an IP address. If the tunnel is not up, the Chart will fail to install and the terraform process won't be able to finish.

$ minikube start
$ minikube tunnel &> /dev/null & # runs tunnel in the background
...
$ terraform apply
...

Once applied, you may add the Ingresses for the various services to your /etc/hosts file

$ kubectl get ingress -n monitoring
NAME                               CLASS    HOSTS                 ADDRESS        PORTS   AGE
grafana                            <none>   grafana.local         192.168.49.2   80      10m
...

Note: On Windows, you may need to use the minikube tunnel command and use 127.0.0.1 instead !

You may now access services via your browser.

Extension points exported contracts — how you extend this code

Window (Interface)
(no doc)
apps/landing/types.d.ts
WallMessage (Interface)
(no doc)
apps/wall_front/src/types.d.ts
ApiStatus (Interface)
(no doc)
apps/wall_front/src/types.d.ts
Window (Interface)
(no doc)
apps/wall_front/src/types.d.ts

Core symbols most depended-on inside this repo

Run
called by 8
apps/wall_api/ws/ws.go
VerifyJWT
called by 3
apps/auth/jwt/jwt.go
NewAuthRouter
called by 2
apps/auth/http/engine.go
Run
called by 2
apps/auth/http/engine.go
GenerateJWT
called by 2
apps/auth/jwt/jwt.go
NewWallAPIEngine
called by 2
apps/wall_api/server.go
NewOpsEngine
called by 2
apps/wall_api/server.go
NewURLShortnerRouter
called by 1
apps/url-shortner/http/engine.go

Shape

Function 57
Method 15
Struct 15
Interface 4

Languages

Go73%
TypeScript27%

Modules by API surface

apps/auth/http/engine.go10 symbols
apps/wall_api/api/messages_test.go8 symbols
apps/url-shortner/http/engine.go8 symbols
apps/wall_api/ws/ws.go7 symbols
apps/wall_api/server.go5 symbols
apps/wall_api/api/messages.go5 symbols
apps/wall_api/api/status.go4 symbols
apps/landing/app/root.tsx4 symbols
apps/auth/jwt/jwt.go4 symbols
apps/auth/http/engine_test.go4 symbols
apps/wall_front/src/types.d.ts3 symbols
apps/wall_front/src/BuildInfo.tsx3 symbols

Datastores touched

authDatabase · 1 repos
url-shortnerDatabase · 1 repos

For agents

$ claude mcp add o11y \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page