PRISM is a multi-tenant DevOps and observability tool designed to capture metrics from multiple real-time cloud containers and display them on a user-friendly interface. It features an alerting system, log analysis capabilities, and high security through OAuth integration.
In this architecture, services communicate asynchronously through events, promoting loose coupling and scalability. This design efficiently handles real-time metrics and log collection from multiple cloud containers or pushing real-time notifications to the frontend.
The PRISM server employs an event-driven microservices architecture, consisting of the following services:
- User Service: Handles user authentication and authorization.
- Log Write Service (Collector): Collects logs from cloud containers and stores them in Elasticsearch.
- Log Read Service (Reader): Retrieves logs from Elasticsearch, does analysis and sends them to the frontend.
- Notify Service: Sends (smtp) emails to the user or real-time server-sent events (SSE) notifications to the frontend when alerts are triggered.
- Docker Requirements:
installation link docs.docker.com/desktop/
- Docker Engine
- Docker CLI Client
- Docker Desktop
- Auth0 Account:
sign up for a free account at auth0.com
-
Clone the repository
gh repo clone prism-o11y/prism-server # or git clone https://github.com/prism-o11y/prism-server.git -
Ensure environment variables are set load the environment variables from in the format of
.env.exampleto.envin theassets/envdirectory. -
Run the server
docker compose -f compose.app.yml -f compose.infra.yml -f compose.mgmt.yml up
Example: detailed step-by-step guide for 5 notify node setup:
-
Cleanup existing
docker compose -f compose.infra.yaml -f compose.app.yaml -f compose.mgmt.yaml down -v -
Setup initial infra
docker compose -f compose.app.yaml -f compose.infra.yaml -f compose.mgmt.yaml up db elasticsearch zookeeper cache kafka kafka-init --build -
Run the services
docker compose -f compose.app.yaml -f compose.infra.yaml up alert-noti-service-1 alert-noti-service-2 alert-noti-service-3 alert-noti-service-4 alert-noti-service-5 user-service log-write-service log-read-service --build -
Run Consul and Nginx
docker compose -f compose.app.yaml -f compose.infra.yaml up consul nginx --build
-
.
├── alert-noti-service
│ ├── cmd
│ │ └── prism
│ ├── internal
│ │ ├── conf
│ │ ├── depends
│ │ ├── notify
│ │ │ ├── models
│ │ │ ├── smtp
│ │ │ │ └── templates
│ │ │ └── sse
│ │ │ └── lock
│ │ └── server
│ └── pkg
│ └── server
├── assets
│ ├── data
│ │ └── test
│ ├── env
│ └── nginx
│ └── conf.d
│ ├── common
│ ├── sites
│ └── upstreams
├── log-read-service
│ ├── cmd
│ │ └── prism
│ └── internal
│ ├── conf
│ ├── depends
│ └── server
├── log-write-service
│ ├── cmd
│ │ └── prism
│ └── internal
│ ├── collector
│ ├── conf
│ ├── depends
│ └── server
├── shared
│ ├── data
│ │ ├── elastics
│ │ ├── kafka
│ │ └── rconn
│ └── server
└── user-service
├── scripts
├── sql
├── src
│ ├── api
│ │ └── v1
│ ├── config
│ ├── database
│ ├── jwt
│ ├── kafka
│ ├── server
│ └── svc
│ ├── apps
│ ├── auth
│ ├── org
│ ├── sse
│ └── user
└── test


