Project: Ddosify (Observability and Analysis / Observability)
File: README.md

<div align="center"> <img src="https://raw.githubusercontent.com/getanteon/anteon/master/assets/anteon-logo-db.svg#gh-dark-mode-only" alt="Anteon logo dark" width="336px" /><br /> <img src="https://raw.githubusercontent.com/getanteon/anteon/master/assets/anteon-logo-wb.svg#gh-light-mode-only" alt="Anteon logo light" width="336px" /><br /> </div> <h1 align="center">Anteon Self Hosted (formerly Ddosify): Effortless Kubernetes Monitoring and Performance Testing</h1> <p align="center"> <img src="https://raw.githubusercontent.com/getanteon/anteon/master/assets/anteonservicemap_filtered.png" alt="Anteon Kubernetes Monitoring Service Map" /> <i>Anteon (formerly Ddosify) detects high latency service calls on your K8s cluster. So you can easily find the root service causing the problem.</i> </p> This README provides instructions for installing and an overview of the system requirements for Anteon Self-Hosted. For further information on its features, please refer to the section in the main README, or consult the complete . <a href="https://aws.amazon.com/marketplace/pp/prodview-mwvnujtgjedjy" target="blank"><img src="https://img.shields.io/badge/Availableonawsmarketplace-FF9900?style=for-the-badge&logo=amazonaws&logoColor=white" alt="Anteon aws marketplace deployment" /></a>&nbsp; Arm64 and Amd64 Support: Broad architecture compatibility ensures the tool works seamlessly across different systems on both Linux and MacOS. Dockerized: Containerized solution simplifies deployment and reduces dependency management overhead. Helm Chart: for Kubernetes deployments. Easy to Deploy: Automated setup processes using Docker Compose and Helm Charts. AWS Marketplace: listing for easy deployment on AWS (Amazon Web Services). Kubernetes Monitoring: With the help of you can monitor your Kubernetes Cluster, create Service Map and get metrics from your Kubernetes nodes. (`docker-compose` or `docker compose`) Recommended System Requirements Operating System: macOS 10.15 Catalina or later, or Linux (Ubuntu 20.04 LTS, Debian 10, CentOS 8 or later). Windows is not supported. Processor: Quad-core CPU (4 cores) at 2.5 GHz or higher, ARM-based processors are also supported (e.g., Apple M1, M2) Memory: 8 GB RAM or more Storage: At least 5 GB of available hard drive space (preferably SSD for faster load times) You can quickly deploy Anteon Self Hosted by running the following command. This script clones the Anteon repository to your `$HOME/.anteon` directory, and deploys the services using Docker Compose. Please check the file to see what it does. You can also run the commands manually by following the section. Only Linux and MacOS are supported at the moment. Windows is not supported. Anteon Self Hosted starts in the background. You can access the dashboard at . The system is started always on boot if Docker is started. You can stop the system in the section. ```bash curl -sSL https://raw.githubusercontent.com/getanteon/anteon/master/selfhosted/install.sh | bash ``` You can deploy Anteon Self Hosted on Kubernetes using the . ```bash git clone https://github.com/getanteon/anteon.git cd anteon/selfhosted ``` The default values for the environment variables are set in the file. You can modify these values to suit your needs. The following environment variables are available: `DOCKERINFLUXDBINIT_USERNAME`: InfluxDB username. Default: `admin` `DOCKERINFLUXDBINIT_PASSWORD`: InfluxDB password. Default: `ChangeMe` `DOCKERINFLUXDBINITADMINTOKEN`: InfluxDB admin

Default: `5yR2qD5zCqqvjwCKKXojnPviQaB87w9JcGweVChXkhWRL` `POSTGRES_PASSWORD`: Postgres password. Default: `ChangeMe` ```bash docker-compose up -d ``` The dashboard is available at ```bash docker-compose logs ``` The is responsible for generating load to the target URL. You can add multiple engines to scale your load testing capabilities. The Anteon Self Hosted includes a default engine out of the box. To integrate additional engines, simply run a Docker container for each new engine. These engine containers will automatically register with the service and become available for use. Before adding new engines, ensure that you have enabled the distributed mode by clicking the `Unlock the Distributed Mode` button in the dashboard. In case you have modified the default values like InfluxDB password in the `.env` file, utilize the `--env` flag in the docker run command to establish the necessary environment variables. Make sure the new engine server can access the service server. Use the `SERVICE_ADDRESS` environment variable to specify the service server address where the script was executed. The engine server must connect to the following ports on the `SERVICE_ADDRESS`: `9901`: Hammer Manager service. The service server utilizes this port to register the engine. `6672`: RabbitMQ server. The engine server connects to this port to send and receive messages to and from the service server. `9086`: InfluxDB server. The engine server accesses this port to transmit metrics to the backend. `8333`: Object storage server. The engine server uses this port to retrieve the object files like CSV and multipart files. The `NAME` environment variable is used to specify the name of the engine container. You can change this value to whatever you want. It is also used in the section for removing the engine container. ```bash NAME=anteonhammer1 docker run --name $NAME -dit \ --network anteon \ --restart always \ ddosify/selfhosted_hammer:1.4.3 ``` Set `SERVICEADDRESS` to the IP address of the service server. Set `IPADDRESS` to the IP address of the engine server. ```bash SERVICEADDRESS=SERVICEIP IPADDRESS=ENGINEIP NAME=anteonhammer1 docker run --name $NAME -dit \ --env SERVICEADDRESS=$SERVICEADDRESS \ --env IPADDRESS=$IPADDRESS \ --restart always \ ddosify/selfhosted_hammer:1.4.3 ``` You should see `mqwaitingnew_job` log in the engine container logs. This means that the engine is waiting for a job from the service server. After the engine is added, you can see it in the Engines page in the dashboard. You can deploy the engine on Kubernetes using the Helm chart. Please check the repository for more information. If you added new engines, you can remove them by running the following command. Change the docker container name `anteonhammer1` to the name of the engine you

```bash docker rm -f anteonhammer1 ``` If you installed the project using the script, you must first change the directory to the `$HOME/.anteon` directory before running the commands below. ```bash cd $HOME/.anteon/selfhosted docker compose down ``` If you want to remove the complete data like databases in docker volumes, you can run the following command. Warning: This will remove all the data for Anteon Self Hosted. ```bash cd $HOME/.anteon/selfhosted docker compose down --volumes ``` You may encounter the following error when running the `docker compose down` command if you did not containers. This is completely fine. The network `anteon` is not removed from docker. If you do not want to see this error, you can containers first then run the `docker compose down` command again. ```text failed to remove network anteon: Error response from... ``` If you want to start the project again, run the script in the section again. To monitor your Kubernetes Cluster, you need to run the as a DaemonSet. Refer to the repository for more information. | Service | Description | |-|| | `Hammer` | The engine responsible for executing load tests. You can add multiple hammers to scale your load testing capabilities. | | `Hammer Manager` | Manages the engines (Hammers) involved in load testing. | | `Backend` | Handles Kubernetes Monitoring and Performance Testing | | `Alaz Backend` | Handles eBPF Agent (Alaz) Metrics, Traces and Logs | | `InfluxDB` | Database that stores metrics collected during testing. | | `Postgres` | Database that preserves load test results. | | `RabbitMQ` | Message broker enabling communication between Hammer Manager and Hammers. | | `SeaweedFS Object Storage` | Object storage for multipart files and test data (CSV) used in load tests. | | `Nginx` | Reverse proxy for backend, alaz-backend and frontend services. | | `Prometheus` | Collects the Kubernetes Monitoring metrics from the Backend service. | Anteon Self Hosted collects anonymous usage data to help us improve the product. You can disable this feature by setting the `ANONYMOUSTELEMETRYENABLED` environment variable to `False` of the `backend` service in the file. ```yaml backend: ... environment: ANONYMOUSTELEMETRYENABLED: "False" ... ``` <details> <summary>Here is the example of data that we collect:</summary> ```json { "k8s": { "pod_count": 12, "service_count": 3, "daemonset_count": 1, "namespace_count": 4, "deployment_count": 2, "nodecountactive": 1, "nodecountpassive": 5 }, "metrics": { "cpu_count": 16, "totalrambytes": 16664440832, "totalrootfilesystem_bytes": 730759454720 }, "alaz_info": { "ebpf": true, "metrics": true }, "cluster_info": { "name": "test-cluster", "alaz_version": "v0.3.4", "instance_names": [ "test-instance" ], "cluster_details": { "k8s_version": "v1.28.4+k3s2", "cloud_provider": "AWS", "kernel_versions": [ "6.2.0-39-generic" ] } } } ``` </details> Anteon Self Hosted is licensed under the AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html