TEGTO.ServerPulse.EventCommunication 1.0.1

dotnet add package TEGTO.ServerPulse.EventCommunication --version 1.0.1
                    
NuGet\Install-Package TEGTO.ServerPulse.EventCommunication -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TEGTO.ServerPulse.EventCommunication" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TEGTO.ServerPulse.EventCommunication" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="TEGTO.ServerPulse.EventCommunication" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TEGTO.ServerPulse.EventCommunication --version 1.0.1
                    
#r "nuget: TEGTO.ServerPulse.EventCommunication, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TEGTO.ServerPulse.EventCommunication@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TEGTO.ServerPulse.EventCommunication&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=TEGTO.ServerPulse.EventCommunication&version=1.0.1
                    
Install as a Cake Tool

<p align="center"> <h1 align="center"> <img src="https://github.com/user-attachments/assets/0a5286e0-dd10-4f93-a449-328910609bff" width="50%" alt="ServerPulse-logo"> </h1> </p>

<p align="center"> <img src="https://img.shields.io/github/issues-pr-closed/TEGTO/ServerPulse" alt="pull-requests-amount"> <img src="https://img.shields.io/github/last-commit/TEGTO/ServerPulse?style=flat&logo=git&logoColor=white&color=0080ff" alt="last-commit"> <img src="https://img.shields.io/github/languages/top/TEGTO/ServerPulse?style=flat&color=0080ff" alt="repo-top-language"> <img src="https://img.shields.io/github/languages/count/TEGTO/ServerPulse?style=flat&color=0080ff" alt="repo-language-count"> <img src="https://img.shields.io/sonar/coverage/TEGTO_ServerPulse?server=https%3A%2F%2Fsonarcloud.io" alt="sonar-cloud-codecoverage"> <img src="https://sonarcloud.io/api/project_badges/measure?project=TEGTO_ServerPulse&metric=ncloc" alt="sonar-cloud-lineofcode"> </p> <p align="center"> <em>Built with the tools and technologies:</em> </p> <p align="center"> <img src="https://img.shields.io/badge/.NET-512BD4?logo=dotnet&logoColor=fff" alt=".NET"> <img src="https://img.shields.io/badge/Angular-%23DD0031.svg?logo=angular&logoColor=white" alt="Angular"> <img src="https://custom-icon-badges.demolab.com/badge/C%23-%23239120.svg?logo=cshrp&logoColor=white" alt="C#"> <img src="https://img.shields.io/badge/TypeScript-3178C6.svg?style=flat&logo=TypeScript&logoColor=white" alt="TypeScript"> <img src="https://img.shields.io/badge/JavaScript-F7DF1E.svg?style=flat&logo=JavaScript&logoColor=black" alt="JavaScript"> <img src="https://img.shields.io/badge/HTML5-E34F26.svg?style=flat&logo=HTML5&logoColor=white" alt="HTML5"> <img src="https://img.shields.io/badge/Sass-C69?logo=sass&logoColor=fff" alt="SASS"> <img src="https://img.shields.io/badge/Postgres-%23316192.svg?logo=postgresql&logoColor=white" alt="PostgreSQL"> <img src="https://img.shields.io/badge/Apache_Kafka-231F20?logo=apache-kafka&logoColor=white" alt="Apache Kafka"> <img src="https://img.shields.io/badge/redis-CC0000.svg?&logo=redis&logoColor=white" alt="Redis"> <br> <img src="https://img.shields.io/badge/Tailwind%20CSS-%2338B2AC.svg?logo=tailwind-css&logoColor=white" alt="Tailwind"> <img src="https://custom-icon-badges.demolab.com/badge/Microsoft%20Azure-0089D6?logo=msazure&logoColor=white" alt="Azure"> <img src="https://img.shields.io/badge/Google_Cloud-4285F4?logo=google-cloud&logoColor=white" alt="Google Cloud"> <img src="https://img.shields.io/badge/Docker-2496ED.svg?style=flat&logo=Docker&logoColor=white" alt="Docker"> <img src="https://img.shields.io/badge/Kubernetes-326CE5?logo=kubernetes&logoColor=fff" alt="Kubernetes"> <img src="https://img.shields.io/badge/ESLint-4B32C3.svg?style=flat&logo=ESLint&logoColor=white" alt="ESLint"> <img src="https://img.shields.io/badge/SonarCloud-F3702A?logo=sonarcloud&logoColor=fff" alt="ESLint"> <img src="https://img.shields.io/badge/GitHub%20Actions-2088FF.svg?style=flat&logo=GitHub-Actions&logoColor=white" alt="GitHub%20Actions"> <img src="https://img.shields.io/badge/JSON-000000.svg?style=flat&logo=JSON&logoColor=white" alt="JSON"> <img src="https://img.shields.io/badge/YAML-CB171E.svg?style=flat&logo=YAML&logoColor=white" alt="YAML"> </p>

Table of Contents

Description

Server Pulse streamlines the monitoring and visualization of system performance, enabling real-time API metrics collection and display. Designed with simplicity and flexibility in mind, it offers a straightforward alternative to traditional monitoring tools like Prometheus and Grafana, without simple functionality. Server Pulse empowers users with a low-effort setup and intuitive dashboard, ideal for single developers.

Planned Use Cases

  1. API Monitoring: Track API performance, latency, and error rates.
  2. Real-Time Insights: Provide actionable metrics through an interactive dashboard.
  3. Microservice Coordination: Simplify operations in complex, distributed systems.
  4. Quick Deployment: Offer an out-of-the-box monitoring solution with minimal configuration.

How It Works

  1. Data Collection: Metrics are collected from APIs via middleware or agents.
  2. Processing: Metrics are processed in the backend using Kafka for event-driven architecture and Redis for caching.
  3. Service Discovery: Consul manages service registrations and discovery within the microservices architecture.
  4. Security: JWT authentication ensures secure access to API and frontend.

Why Server Pulse?

Server Pulse offers a lightweight, user-friendly alternative to traditional solutions like Prometheus:

  • Ease of Setup: A low-friction onboarding process with minimal configuration.
  • Modern Frontend: Angular-powered UI for seamless navigation and real-time insights.
  • Integrated Architecture: Microservices-ready, with tools like Kafka, Redis, and SignalR for robust performance.
  • All-in-One Solution: Combines monitoring, visualization, and API security in one platform.
  • Client nuget package: Nuget Package
    Get started with client SDK.
  • Documentation: Docs
    API documentation generated with DocFX.

Tech Stack

  • Frontend: Angular with NgRx for state management.
  • Backend: ASP.NET Core Web API.
  • Database: PostgreSQL with Entity Framework Core.
  • Caching: Redis for distributed caching.
  • Messaging: Apache Kafka for event-driven messaging.
  • Authentication: JWT with Azure Communication Services for email confirmation and OAuth 2.0.
  • API Gateway: Ocelot for microservice routing.
  • Resilience: Polly for retry policies and fault tolerance.
  • Containerization: Docker and Kubernetes for deployment.
  • CI/CD: GitHub Actions for automated workflows.
  • Testing: NUnit and Jasmine for unit testing; Testcontainers for integration testing.
  • Cloud: Azure for cloud architecture.
  • Documentation: Swagger, DocFX, and Postman for comprehensive documentation.
  • Code Quality: SonarCloud for static code analysis.

Features

  • Metric Collection: Gather API metrics efficiently and transmit them to the server.
  • Data Visualization: Displays metrics in an intuitive, user-friendly dashboard.
  • Microservices Architecture: Modular and scalable architecture design.
  • Real-Time Updates: Powered by SignalR for live metric updates.
  • Event Processing: Integrates with Apache Kafka for distributed messaging.
  • Secure Access: Implements robust JWT authentication, email confirmation, and OAuth 2.0.
  • Scalable Deployment: Uses Docker containers and Kubernetes orchestration.
  • API Gateway: Employs Ocelot for seamless service endpoint routing and protection.

Getting Started

Kubernetes & Minikube Setup

Prerequisites

Before you begin, ensure you have the following installed on your machine:

  1. Docker: For building and running containers. Install Docker.
  2. Minikube: A lightweight Kubernetes implementation for local testing. Install Minikube.
  3. kubectl: Kubernetes command-line tool to manage clusters. Install kubectl.

1. Clone the repository:

git clone https://github.com/TEGTO/ServerPulse.git

2. Navigate into the Kubernetes folder:

cd ServerPulse/k8/dev

3. Start Minikube:

Open a terminal in the folder and start Minikube:

minikube start

If Minikube is already running, ensure you’re in the correct context:

kubectl config use-context minikube

4. (Optional) Enable OAuth or Email Confirmation Features:

  • Open the backend-conf.yml file.
  • Set the FeatureManagement__X environment feature variable to true.
  • Provide your keys in the secret for a feature.

Deployment Steps

Follow these steps in order:

1. Create the Namespace:

kubectl create namespace server-pulse

2. Configure ConfigMaps and Secrets:

kubectl apply -f backend-conf.yml
kubectl apply -f infrastructure-conf.yml

3. Deploy the Infrastructure: Deploy the database, redis and kafka and wait for them to be fully initialized:

kubectl apply -f kafka.yml
kubectl apply -f infrastructure.yml
kubectl get pods # Verify that the pods are running.

4. Deploy the Backend: Deploy the backend services:

kubectl apply -f backend.yml

5. (Optional) Swagger Open API: Expose and forward the apigateway service using Minikube:

minikube service --namespace=server-pulse apigateway

Go to the swagger documentation page:

<exposed-apigateway-url>/swagger/index.html

6. Deploy the Frontend Deploy the frontend application:

kubectl apply -f frontend.yml

7. Access the Frontend Expose and forward the frontend service using Minikube:

minikube service --namespace=server-pulse frontend

This command will expose and open the frontend in your default web browser or go manually to the exposed url.

Contributors

<a href="https://github.com/TEGTO/ServerPulse/graphs/contributors"> <img src="https://contrib.rocks/image?repo=TEGTO/ServerPulse"/> </a>

Screenshots

image


image


image


image

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on TEGTO.ServerPulse.EventCommunication:

Package Downloads
TEGTO.ServerPulse.EventCommunication.Validators

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1 224 1/2/2025
1.0.0 359 12/30/2024