diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 3d04dfa0..d6a841de 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -25,10 +25,10 @@ jobs: - name: Test run: cd ddosify_engine && go test -coverpkg=./... -coverprofile=coverage.txt -parallel 1 -covermode=atomic -short ./... && go tool cover -func coverage.txt - - uses: codecov/codecov-action@v2 - with: - token: ${{ secrets.CODECOV_TOKEN }} - files: coverage.txt - name: codecov-ddosify # optional - fail_ci_if_error: true # optional (default = false) - verbose: true # optional (default = false) + - name: Upload reports to codecov + run: | + curl -Os https://uploader.codecov.io/latest/linux/codecov + chmod +x codecov + ./codecov -t ${CODECOV_TOKEN} -f coverage.txt + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f0b07bc5..ecfdd92c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,6 +42,6 @@ jobs: with: distribution: goreleaser version: latest - args: release --rm-dist + args: release --clean env: GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} diff --git a/README.md b/README.md index 671425d5..a26c01b8 100644 --- a/README.md +++ b/README.md @@ -3,18 +3,17 @@ Anteon logo light
-

Kickstart Kubernetes Monitoring in 1 min - Free up time for DevOps and Coding

+

Kickstart Kubernetes Monitoring in 1 min - Free up time for DevOps and Coding

- anteon latest version  - Anteon license - Anteon discord server - cncf landscape -

- -

-Anteon Kubernetes Monitoring Service Map -Anteon automatically generates Service Map of your K8s cluster without code instrumentation or sidecars. So you can easily find the bottlenecks in your system. Red lines indicate the high latency between services. + Anteon Kubernetes Monitoring Service Map +

+ anteon latest version  + Anteon license + Anteon discord server + cncf landscape +

+ Anteon automatically generates Service Map of your K8s cluster without code instrumentation or sidecars. So you can easily find the bottlenecks in your system. Red lines indicate the high latency between services.

@@ -23,14 +22,13 @@ Discord

-## What is Anteon (formerly Ddosify)? - -Anteon (formerly Ddosify) is an [open-source](https://github.com/getanteon/anteon), eBPF-based **Kubernetes Monitoring** and **Performance Testing** platform. +## 🐝 What is Anteon? +**Anteon** (formerly Ddosify) is an [open-source](https://github.com/getanteon/anteon), eBPF-based **Kubernetes Monitoring** and **Performance Testing** platform. ### πŸ”Ž Kubernetes Monitoring -- **Automatic Service Map Creation:** Anteon automatically creates a **service map** of your cluster without code instrumentation or sidecars. So you can easily find the bottlenecks in your system. +- **Automatic Service Map Creation:** Anteon automatically creates a **service map** of your cluster without code instrumentation or sidecars. So you can easily [find the bottlenecks](https://getanteon.com/docs/kubernetes-monitoring/#finding-bottlenecks) in your system. - **Performance Insights:** It helps you spot issues like services taking too long to respond or slow SQL queries. - **Real-Time Metrics:** The platform tracks and displays live data on your cluster instances CPU, memory, disk, and network usage. - **Ease of Use:** You don't need to change any code, restart services, or add extra components (like sidecars) to get these insights, thanks to the [eBPF based agent (Alaz)](https://github.com/getanteon/alaz). @@ -54,164 +52,43 @@ Anteon (formerly Ddosify) is an [open-source](https://github.com/getanteon/anteo Anteon Performance Testing generates load from worldwide with no-code scenario builder.

-## Anteon Stack - -Anteon Stack consists of 4 parts: - -- [Anteon Load Engine (Ddosify)](#anteon-load-engine-ddosify) -- [Anteon eBPF Agent (Alaz)](#anteon-ebpf-agent-alaz) -- [Anteon Self-Hosted](#anteon-self-hosted) -- [Anteon Cloud](#anteon-cloud) - - -

-Anteon Stack -

- -### Anteon Load Engine (Ddosify) - -[Ddosify](https://github.com/getanteon/anteon/tree/master/ddosify_engine) is the load engine, written in Golang. It's a CLI load-testing tool. Anteon Self-Hosted and Anteon Cloud use it under the hood for load generation. It is fully open-source and can be used on the CLI as a standalone tool. It has ~8K Github Stars. Ddosify is available via [Docker](https://hub.docker.com/r/ddosify/ddosify), [Docker Extension](https://hub.docker.com/extensions/ddosify/ddosify-docker-extension), [Homebrew Tap](https://github.com/getanteon/anteon/tree/master/ddosify_engine#homebrew-tap-macos-and-linux), and downloadable pre-compiled binaries from the [releases page](https://github.com/getanteon/anteon/releases/tag/v1.0.6) for macOS, Linux, and Windows. - -Check out the [Ddosify Docs](https://github.com/getanteon/anteon/tree/master/ddosify_engine) page for more information and usage. - -### Anteon eBPF Agent (Alaz) -[Alaz](https://github.com/getanteon/alaz) is an open-source Anteon eBPF agent that can inspect and collect Kubernetes (K8s) service traffic without the need for code instrumentation, sidecars, or service restarts. Alaz is deployed as a DaemonSet on your Kubernetes cluster. It collects metrics and sends them to Anteon Cloud or Anteon Self-Hosted. It is also Prometheus compatible, so that you can use it as a standalone tool. - -Check out the [Alaz](https://github.com/getanteon/alaz) repository for more information and usage. - -### Anteon Self-Hosted +## πŸ“š Documentation -[Anteon Self-Hosted](https://github.com/getanteon/anteon/tree/master/selfhosted) features a web-based user interface, **Performance Testing**, and **Kubernetes Monitoring** capabilities. You can add your servers as Load Engines to the platform for distributed performance testing. While it shares many of the same functionalities as Anteon Cloud, the Self-Hosted version is designed to be deployed within your infrastructure for enhanced control and customization. +- [🐝 Anteon Stack](https://getanteon.com/docs/stack/) +- [πŸš€ Getting Started](https://getanteon.com/docs/getting-started/) +- [πŸ”Ž Kubernetes Monitoring](https://getanteon.com/docs/kubernetes-monitoring/) +- [πŸ”¨ Performance Testing](https://getanteon.com/docs/performance-testing/) -It has two versions: Community Edition (CE) and Enterprise Edition (EE). You can see the differences in the below [comparison table](#comparison-of-anteon-cloud-self-hosted-ee-self-hosted-ce). +## ✨ About This Repository -Check out our [Github Page](https://github.com/getanteon/anteon/tree/master/selfhosted) for more information and usage. +This repository includes the source code for the Anteon Load Engine (Ddosify). You can access Docker Images for the Anteon Engine and Self Hosted on Docker Hub. Since Anteon is a Verified Publisher on Docker Hub, there isn't any pull limits. +- [Ddosify documentation](https://github.com/getanteon/anteon/tree/master/ddosify_engine) provides information on the installation, usage, and features of the Anteon Load Engine. +- The [Self-Hosted](https://github.com/getanteon/anteon/tree/master/selfhosted) folder contains installation instructions for the Self-Hosted version. +- [Anteon eBPF agent (Alaz)](https://github.com/getanteon/alaz) has its own repository. -#### Quick Start - -(1) Deploy using Docker Compose: - -```bash -curl -sSL https://raw.githubusercontent.com/getanteon/anteon/master/selfhosted/install.sh | bash -``` -

- Available on aws marketplace  -

- -(2) You can deploy Anteon Self Hosted on Kubernetes using the [Helm chart](https://github.com/getanteon/anteon-helm-charts). - -### Anteon Cloud - -[Anteon Cloud](https://app.getanteon.com/) features a SaaS, web-based user interface, multi-location-based **Performance Testing**, and **Kubernetes Monitoring**. Anyone can test the performance of backend endpoints, monitor Kubernetes Clusters, and find the bottlenecks in the system. It has a simple/no code UI, insightful charts, service maps, and more features. - -With Anteon Cloud, you can generate traffic to your endpoints from 25+ countries without code or scripting. - -Check out [Anteon Cloud](https://app.getanteon.com/) to find the performance issues on your system instantly. - -### Comparison of Anteon Cloud, Self-Hosted EE, Self-Hosted CE -

-Anteon versus - -*CE: Community Edition, EE: Enterprise Edition* -

- -## Kubernetes Monitoring Features - -#### βœ… Service Map -Easily get insights about what is going on in your cluster. You do not have to change your code or add sidecars anymore. More β†’ -

-Anteon - Service Map Feature -

- -#### βœ… Detailed Insights -Inspect incoming, outgoing traffic, SQL queries, golden signals, HTTP 5xx status codes, Top Latencies and RPS, and more. More β†’ -

-Anteon - Detailed Insights Feature -

- -#### βœ… Metrics Dashboard -The Metric Dashboard provides a straightforward way to observe Node Metrics. Anteon observes CPU, Memory, Disk, and Network usage of your nodes. You can also create alerts on these metrics. More β†’ - -

-Anteon - Metrics Dashboard Feature -

- -#### βœ… Find Bottlenecks -Start a load test and monitor your system all within the same UI. You do not need to correlate the load test results with the monitoring data and switch between different tools. - -You will see the outgoing requests, response times and status codes on the load test **Summary** tab. -

-Anteon - Find Bottlenecks Feature -

- -You will see the incoming requests to your K8s cluster, service-to-service traffic, RPS, latencies, SQL queries, and more on the **Monitoring** tab. So you can easily correlate the load test results with the monitoring data without switching between different tools. -

-Anteon - Find Bottlenecks Feature -

- - -## Performance Testing Features -#### βœ… Parametrization -Use built-in random data generators. More β†’ -

-Anteon - Parametrization Feature -

- - -#### βœ… CSV Data Import -Import test data from CSV and use it in the scenario. More β†’ -

-Anteon - Test Data Feature -

- -#### βœ… Environments -Store constant values as environment variables. More β†’ -

-Anteon - Environment Feature -

- -#### βœ… Correlation -Extract variables from earlier phases and pass them on to the following ones. More β†’ -

-Anteon - Correlation Feature -

- -#### βœ… Assertion -Verify that the response matches your expectations. More β†’ -

-Anteon - Assertion Feature -

- -#### βœ… Debugging -Analyze request and response data before starting the load test. More β†’ -

-Anteon - Debugging Feature -

- -#### βœ… Postman Import -Import Postman collections with ease and transform them into load testing scenarios. More β†’ -

-Anteon - Postman Import Feature -

+See the [Anteon website](https://getanteon.com/) for more information. +## πŸ› οΈ Contributing -## About This Repository +See our [Contribution Guide](./CONTRIBUTING.md) and please follow the [Code of Conduct](./CODE_OF_CONDUCT.md) in all your interactions with the project. -This repository includes the source code for the Anteon Load Engine(Ddosify). You can access Docker Images for the Anteon Engine and Self Hosted on Docker Hub. Since Anteon is a Verified Publisher on Docker Hub, you do not have any pull limits. +Thanks goes to these wonderful people! -The [Ddosify Docs](https://github.com/getanteon/anteon/tree/master/ddosify_engine) folder provides information on the installation, usage, and features of the Anteon Load Engine (Ddosify). The [Self-Hosted](https://github.com/getanteon/anteon/tree/master/selfhosted) folder contains installation instructions for the Self-Hosted version. [Anteon eBPF agent (Alaz)](https://github.com/getanteon/alaz) has its own repository. + + + -To learn about the **Performance Testing** usage of both Self-Hosted and Cloud versions, please refer to the [this documentation](https://getanteon.com/docs/performance-testing/test-suite/). For the **Kubernetes Monitoring** usage, please refer to the [this documentation](https://getanteon.com/docs/kubernetes-monitoring/). +Made with [contrib.rocks](https://contrib.rocks). -## Communication +### πŸ“¨ Communication -You can join our [Discord Server](https://discord.com/invite/9KdnrSUZQg) for issues, feature requests, feedbacks or anything else. +You can join our [Discord Server](https://discord.com/invite/9KdnrSUZQg) for issues, feature requests, feedbacks or anything else. -## Disclaimer +### ⚠️ Disclaimer Anteon is created for testing the performance of web applications. Users must be the owner of the target system. Using it for harmful purposes is extremely forbidden. Anteon team & company is not responsible for its’ usages and consequences. -## License +## πŸ“œ License -Licensed under the AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html +Licensed under the [AGPLv3](LICENSE) diff --git a/selfhosted/README.md b/selfhosted/README.md index bb8c4bc5..d2117fca 100644 --- a/selfhosted/README.md +++ b/selfhosted/README.md @@ -3,257 +3,22 @@ Anteon logo light
-

Anteon Self Hosted (formerly Ddosify): Effortless Kubernetes Monitoring and Performance Testing

+

Anteon Self Hosted: Effortless Kubernetes Monitoring and Performance Testing

Anteon Kubernetes Monitoring Service Map -Anteon (formerly Ddosify) detects high latency service calls on your K8s cluster. So you can easily find the root service causing the problem. +Anteon detects high latency service calls on your K8s cluster. So you can easily find the root service causing the problem.

-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 ["What is Anteon"](https://github.com/getanteon/anteon/#what-is-anteon) section in the main README, or consult the complete [documentation](https://getanteon.com/docs/performance-testing/test-suite/). - -Anteon aws marketplace deployment  - -## Effortless Installation - -βœ… **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**: [Helm chart](https://github.com/getanteon/anteon-helm-charts) for Kubernetes deployments. - -βœ… **Easy to Deploy**: Automated setup processes using Docker Compose and Helm Charts. - -βœ… **AWS Marketplace**: [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-mwvnujtgjedjy) listing for easy deployment on AWS (Amazon Web Services). - -βœ… **Kubernetes Monitoring**: With the help of [Anteon eBPF Agent (Alaz)](https://github.com/getanteon/alaz) you can monitor your Kubernetes Cluster, create Service Map and get metrics from your Kubernetes nodes. - -## πŸ›  Prerequisites - -- [Git](https://git-scm.com) -- [Docker](https://docs.docker.com/get-docker/) -- [Docker Compose](https://docs.docker.com/compose/install/) (`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) - -> [!NOTE] -> Only Linux and MacOS are supported at the moment. Windows is not supported. - -## Deploy with Docker Compose - -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 [install.sh](./install.sh) file to see what it does. You can also run the commands manually by following the [Manual Installation](#-manual-installation) section. - -> [!WARNING] -> Since Docker Compose deploys all the services on the same server, it is recommended to deploy Anteon Self-hosted on a Kubernetes cluster with our [Helm chart](https://github.com/getanteon/anteon-helm-charts). - -Anteon Self Hosted starts in the background. You can access the dashboard at [http://localhost:8014](http://localhost:8014). The system is started always on boot if Docker is started. You can stop the system in the [Stop/Start the Services](#-stopstart-the-services) section. - -```bash -curl -sSL https://raw.githubusercontent.com/getanteon/anteon/master/selfhosted/install.sh | bash -``` - -## Deploy on Kubernetes (Recommended) - -You can deploy Anteon Self Hosted on Kubernetes using the [Helm chart](https://github.com/getanteon/anteon-helm-charts). - -## πŸ“– Manual Installation - -### 1. Clone the repository - -```bash -git clone https://github.com/getanteon/anteon.git -cd anteon/selfhosted -``` - -### 2. Update the environment variables (optional) - -The default values for the environment variables are set in the [.env](./.env) file. You can modify these values to suit your needs. The following environment variables are available: - -- `DOCKER_INFLUXDB_INIT_USERNAME`: InfluxDB username. Default: `admin` -- `DOCKER_INFLUXDB_INIT_PASSWORD`: InfluxDB password. Default: `ChangeMe` -- `DOCKER_INFLUXDB_INIT_ADMIN_TOKEN`: InfluxDB admin token. Default: `5yR2qD5zCqqvjwCKKXojnPviQaB87w9JcGweVChXkhWRL` -- `POSTGRES_PASSWORD`: Postgres password. Default: `ChangeMe` - -### 3. Deploy the services - -```bash -docker-compose up -d -``` -### 4. Access the dashboard - -The dashboard is available at [http://localhost:8014](http://localhost:8014) - -### 5. Show the logs - -```bash -docker-compose logs -``` - -## πŸ”§ Add New Engine - -The [Anteon Engine](https://github.com/getanteon/anteon) 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 [install.sh](install.sh) 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 [Remove New Engine](#-remove-new-engine) section for removing the engine container. - -### **Example 1**: Adding the engine to the same server - -```bash -NAME=anteon_hammer_1 -docker run --name $NAME -dit \ - --network anteon \ - --restart always \ - ddosify/selfhosted_hammer:1.4.3 -``` - -### **Example 2**: Adding the engine to a different server - -Set `SERVICE_ADDRESS` to the IP address of the service server. Set `IP_ADDRESS` to the IP address of the engine server. - -```bash -# Make sure to set the following environment variables -SERVICE_ADDRESS=SERVICE_IP -IP_ADDRESS=ENGINE_IP -NAME=anteon_hammer_1 - -docker run --name $NAME -dit \ - --env SERVICE_ADDRESS=$SERVICE_ADDRESS \ - --env IP_ADDRESS=$IP_ADDRESS \ - --restart always \ - ddosify/selfhosted_hammer:1.4.3 -``` - -You should see `mq_waiting_new_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. - -### **Example 3**: Adding the engine to Kubernetes - -You can deploy the engine on Kubernetes using the Helm chart. Please check the [Anteon Helm chart](https://github.com/getanteon/anteon-helm-charts/tree/master/charts/anteon#add-new-engine-optional) repository for more information. - -## 🧹 Remove New Engine - -If you added new engines, you can remove them by running the following command. Change the docker container name `anteon_hammer_1` to the name of the engine you added. - -```bash -docker rm -f anteon_hammer_1 -``` - -## πŸ›‘ Stop/Start the Services - -If you installed the project using the [install.sh](./install.sh) 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 [remove the engine](#-remove-new-engine) containers. This is completely fine. The network `anteon` is not removed from docker. If you do not want to see this error, you can [remove the engine](#-remove-new-engine) 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 [Quick Start](#%EF%B8%8F-quick-start-recommended) section again. - -## Enable Kubernetes Monitoring - -To monitor your Kubernetes Cluster, you need to run the [Anteon eBPF Agent (Alaz)](https://github.com/getanteon/alaz) as a DaemonSet. Refer to the [Alaz](https://github.com/getanteon/alaz) repository for more information. - -## 🧩 Services Overview - -| 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. | - -## Telemetry Data - -Anteon Self Hosted collects anonymous usage data to help us improve the product. You can disable this feature by setting the `ANONYMOUS_TELEMETRY_ENABLED` environment variable to `False` of the `backend` service in the [docker-compose.yml](./docker-compose.yml) file. - -```yaml -backend: - ... - environment: - - ANONYMOUS_TELEMETRY_ENABLED: "False" - ... -``` - -### Example Data - -
- Here is the example of data that we collect: - -```json -{ - "k8s": { - "pod_count": 12, - "service_count": 3, - "daemonset_count": 1, - "namespace_count": 4, - "deployment_count": 2, - "node_count_active": 1, - "node_count_passive": 5 - }, - "metrics": { - "cpu_count": 16, - "total_ram_bytes": 16664440832, - "total_root_filesystem_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" - ] - } - } -} -``` -
+## πŸ“š Documentation +- [🐝 Installing Anteon Self-Hosted](https://getanteon.com/docs/self-hosted/installation/) +- [βš™ Installing eBPF Agent (Alaz)](https://getanteon.com/docs/self-hosted/install-ebpf-agent-alaz-on-self-hosted/) +- [πŸ“° Upgrading to Self-Hosted Enterprise](https://getanteon.com/docs/self-hosted/upgrading-to-self-hosted-enterprise/) +- [πŸ“§ Slack Integration](https://getanteon.com/docs/self-hosted/self-hosted-slack-integration/) +See the [documentation](https://getanteon.com/docs/self-hosted/) for other guides such as [disabling telemetry](https://getanteon.com/docs/self-hosted/disabling-telemetry-data/). ## πŸ“ License -Anteon Self Hosted is licensed under the AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html +Anteon Self Hosted is licensed under the [AGPLv3](../LICENSE)