Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions content/agent/about.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: "Overview"
weight: 100
toc: true
docs: DOCS-000
---
{{<call-out "note" "F5 NGINX Agent v3.0 is available now">}}
<!-- (TODO: Link instructions ) -->
{{</call-out>}}

### About F5 NGINX Agent
The F5 NGINX Agent is a lightweight companion daemon designed to work with NGINX One, enabling remote management of the NGINX Instance(s). It also gathers performance metrics from NGINX and transmits them to the NGINX One Console for enhanced monitoring and control.

### Key Features
- Enable Access to Key NGINX One Use Cases
- Seamlessly integrates with essential NGINX One functionality, simplifying access to its core use cases and enhancing operational workflows.
- [Connect to NGINX One Console]({{< relref "/agent/install-upgrade/install/#connect-an-instance-to-nginx-one-console" >}})

- Real-Time Observability into NGINX One Data Plane Instances
- Provides live monitoring and actionable insights into the performance, status, and health of NGINX One Data Plane instances, improving decision-making and operational efficiency.

- [OpenTelemetry](https://opentelemetry.io/) support comes with F5 NGINX Agent, and the ability to [export the metrics data]({{< relref "/agent/otel/configure-otel-metrics.md" >}}) for use in other applications.

---

## How it works

### Configuration management

- The F5 NGINX Agent provides an interface that enables users to deploy configuration changes to NGINX from a centralized management plane.
- Additionally, the F5 NGINX Agent verifies that the configuration changes are successfully applied to NGINX.

### Metrics Collection

- The F5 NGINX Agent comes pre-packaged with an embedded OpenTelemetry Collector .
- This embedded collector gathers vital performance and health metrics for both NGINX and the underlying instance it operates on.
- For example, it tracks key metrics such as active connections, requests per second, HTTP status codes, and response times. Additionally, it collects system-level data, including CPU usage, memory consumption, and disk I/O. These insights provide deep observability into NGINX's behavior, enabling teams to troubleshoot issues effectively, optimize performance, and maintain high availability.
- Collected metrics can be seamlessly exported to the NGINX One Console or integrated with third-party data aggregators.




{{< img src="agent-flow.png" caption="How Agent works" alt="How NGINX Agent works" width="99%">}}

---

6 changes: 4 additions & 2 deletions content/agent/changelog.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
---
title: "Changelog"
weight: 1200
weight: 700
toc: true
docs: "DOCS-1093"
---

{{< note >}}You can find the full changelog, contributor list and assets for NGINX Agent in the [GitHub repository](https://github.com/nginx/agent/releases).{{< /note >}}

See the list of supported Operating Systems and architectures in the [Technical Specifications]({{< relref "./technical-specifications.md" >}}).

---
## Release [v3.0.0](https//github.com/nginx/agent/releases/tag/v3.0.0)

---
## Release [v2.40.0](https://github.com/nginx/agent/releases/tag/v2.40.0)

Expand Down
8 changes: 0 additions & 8 deletions content/agent/configuration/_index.md

This file was deleted.

95 changes: 0 additions & 95 deletions content/agent/configuration/configure-nginx-agent-features.md

This file was deleted.

9 changes: 4 additions & 5 deletions content/agent/contribute/_index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
---
title: "Contribute"
description: "Learn about the NGINX Agent community and contribute to the project."
linkTitle: "Contribute"
menu: docs
weight: "500"
weight: 600
url: /nginx-agent/contribute/
---
---

Learn about the NGINX Agent community and how to contribute to the project.
10 changes: 4 additions & 6 deletions content/agent/contribute/community.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
---
title: "Community and contribution"
draft: false
weight: 100
toc: true
tags: [ "docs" ]
docs: "DOCS-1087"
categories: ["configuration"]
doctypes: ["task"]
weight: 100
docs: DOCS-000
---

This topic describes the various ways you can get involved with the F5 NGINX Agent project.

# Community

- Our [Slack channel #nginx-agent](https://nginxcommunity.slack.com/), is the go-to place to start asking questions and sharing your thoughts.
Expand Down
54 changes: 25 additions & 29 deletions content/agent/contribute/dev-environment-setup.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,61 @@
---
title: "Development environment setup"
draft: false
weight: 200
toc: true
tags: [ "docs" ]
docs: "DOCS-1088"
categories: ["development"]
doctypes: ["task"]
weight: 200
docs: DOCS-000
---

## Overview

Learn how to setup a Development Environment for NGINX Agent.
This page describes how to configure a development environment for F5 NGINX Agent.

While most Linux or FreeBSD operating systems can be used to contribute to the NGINX Agent project, the following steps have been designed for Ubuntu.

Ubuntu is the recommended operating system for development, as it comes with most packages requires to build and run NGINX Agent.

## Before you begin

## Select an Operating System
To begin this task, you will require the following:

While most Linux or FreeBSD operating systems can be used to contribute to the NGINX Agent project, the following steps have been designed for Ubuntu. Ubuntu is packaged with most libraries required to build and run NGINX Agent, and is the recommended platform for NGINX Agent development.
- A [working NGINX Agent instance]({{< relref "/agent/install-upgrade/install.md" >}}).
- A [Go installation](https://go.dev/dl/) of version 1.22.2 or newer.
- A [Protocol Buffer Compiler](https://grpc.io/docs/protoc-installation/) installation.

## Install NGINX
You will also need a copy of the NGINX Agent repository, which you can clone using `git`:

Follow the steps in the [Installation]({{< relref "/agent/installation-upgrade/" >}}) section to download, install, and run NGINX and NGINX Agent.
```shell
git clone [email protected]:nginx/agent.git
```

## Clone the NGINX Agent Repository
Read [Cloning a repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) for more information

Using your preferred method, clone the NGINX Agent repository into your development directory. See [Cloning a GitHub Repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) for additional help.
Follow the steps in the [Installation]({{< relref "/agent/install-upgrade/install.md" >}}) topic to install NGINX Agent.

## Installing Prerequisite Packages
## Install prerequisite packages
Depending on the operating system distribution, it may be necessary to install the following packages in order to build NGINX Agent.

Change to the NGINX Agent source directory:
```bash
```shell
cd <path_to_development_directory>/agent
```

Install Make:
```bash
```shell
sudo apt install make
```

NGINX Agent is written in Go. You may [download Go](https://go.dev/doc/install) and follow installation instructions on the same page or run:
```bash
sudo apt install golang-go
```

Install Protoc:
```bash
sudo apt install -y protobuf-compiler
```

Install NGINX Agent tools and dependencies:

Before starting development on NGINX Agent, it is important to download and install the necessary tool and dependencies required by NGINX Agent. You can do this by running the following `make` command:
```bash
```shell
make install-tools deps
```

## Building NGINX Agent from Source Code
## Build NGINX Agent from source code

Run the following commands to build and run NGINX Agent:

```bash
```shell
make build
sudo make run
```
90 changes: 90 additions & 0 deletions content/agent/contribute/start-mock-interface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
title: Start mock control plane interface
toc: true
weight: 300
docs: DOCS-000
---

This document describes how to configure and run F5 NGINX Agent using a mock interface ("control plane") for NGINX Agent to report to.

The mock interface is useful when developing NGINX Agent, as it allows you to view what metrics are being reported.

## Before you begin

To begin this task, you will require the following:

- A [working NGINX Agent instance]({{< relref "/agent/install-upgrade/install.md" >}}).
- A [Go installation](https://go.dev/dl/) of version 1.22.2 or newer.
- A [go-swagger](https://goswagger.io/go-swagger/install/) installation.

You will also need a copy of the NGINX Agent repository, which you can clone using `git`:

```shell
git clone [email protected]:nginx/agent.git
```

Read [Cloning a repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) for more information.

## Start the gRPC mock control plane

Start the mock control plane by running the following command from the `agent` source code root directory:

```shell
go run sdk/examples/server.go
```
```text
INFO[0000] http listening at 54790 # mock control plane port
INFO[0000] grpc listening at 54789 # grpc control plane port which NGINX Agent will report to
```

The mock control plane can use either gRPC or REST protocols to communicate with NGINX Agent.

To enable them, view the [Enable gRPC and REST interfaces]({{< relref "/agent/how-to/enable-interfaces.md" >}}) topic.

## Launch Swagger UI

To launch the Swagger UI for the REST interface run the following command:

```shell
make launch-swagger-ui
```

## Start NGINX Agent

Open another terminal window and start NGINX Agent. Issue the following command from the `agent` source code root directory.

```shell
sudo make run
```
```text
WARN[0000] Log level is info
INFO[0000] setting displayName to XXX
INFO[0000] NGINX Agent at with pid 12345, clientID=XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX name=XXX
INFO[0000] NginxBinary initializing
INFO[0000] Commander initializing
INFO[0000] Comms initializing
INFO[0000] OneTimeRegistration initializing
INFO[0000] Registering XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX
INFO[0000] Metrics initializing
INFO[0000] MetricsThrottle initializing
INFO[0000] DataPlaneStatus initializing
INFO[0000] MetricsThrottle waiting for report ready
INFO[0000] Metrics waiting for handshake to be completed
INFO[0000] ProcessWatcher initializing
INFO[0000] Extensions initializing
INFO[0000] FileWatcher initializing
INFO[0000] FileWatchThrottle initializing
INFO[0001] Events initializing
INFO[0001] OneTimeRegistration completed
```

Open a web browser to view the mock control plane at [http://localhost:54790](http://localhost:54790). The following links will be shown in the web interface:

- **registered** - shows registration information of the data plane
- **nginxes** - lists the nginx instances on the data plane
- **configs** - shows the protobuf payload for NGINX configuration sent to the management plane
- **configs/chunked** - shows the split-up payloads sent to the management plane
- **configs/raw** - shows the actual configuration as it would live on the data plane
- **metrics** - shows a buffer of metrics sent to the management plane (similar to what will be sent back in the REST API)

For more NGINX Agent use cases, refer to the [NGINX Agent SDK examples](https://github.com/nginx/agent/tree/main/sdk/examples).
7 changes: 7 additions & 0 deletions content/agent/how-to/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: "How-to guides"
weight: 500
url: /nginx-agent/how-to/
---

Learn how to configure NGINX Agent
Loading