Skip to content

Commit a4f9eb2

Browse files
edits to NIM 2.20 docs and install script (#686)
* edits to NIM 2.20 docs and install script * updates to install script * edits * edits to tech spec guide * fix: Update install-nim-bundle.sh --------- Co-authored-by: Chetan Jain <[email protected]>
1 parent d6f0e0a commit a4f9eb2

File tree

7 files changed

+53
-33
lines changed

7 files changed

+53
-33
lines changed

content/includes/nim/installation/optional-steps/disable-metrics-collection.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ files:
66
- content/nim/disconnected/offline-install-guide.md
77
---
88

9-
If you’re not collecting metricsbecause you didn’t install ClickHouse or don’t plan to use ityou must disable metrics collection in the `/etc/nms/nms.conf` file. This setup requires NGINX Agent version {{< lightweight-nim-nginx-agent-version >}}.
9+
If you’re not collecting metricsbecause you didn’t install ClickHouse or don’t plan to use ityou must disable metrics collection in the `/etc/nms/nms.conf` and `/etc/nms/nms-sm-conf.yaml` files. This setup requires NGINX Agent version {{< lightweight-nim-nginx-agent-version >}}.
1010

1111
For instructions, see [Disable metrics collection]({{< ref "nim/system-configuration/configure-clickhouse.md#disable-metrics-collection" >}}).

content/nim/deploy/kubernetes/deploy-using-helm.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ kubectl create secret docker-registry regcred \
7272
### OpenShift
7373

7474
```shell
75-
oc new-project nms
75+
oc new-project nms && \
7676
oc create secret docker-registry regcred \
7777
--docker-server=private-registry.nginx.com \
7878
--docker-username=<NGINX JWT Token> \

content/nim/deploy/vm-bare-metal/install-nim-manual.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Follow these steps to download the certificate and private key for NGINX Instanc
5858

5959
Install NGINX Open Source or NGINX Plus on the host where you'll install NGINX Instance Manager. NGINX Instance Manager uses NGINX as a front-end proxy and for managing user access.
6060

61-
- [Installing NGINX and NGINX Plus](https://docs.nginx.com/nginx/admin-guide/installing-nginx/)
61+
- [Installing NGINX and NGINX Plus]({{< ref "/nginx/admin-guide/installing-nginx/installing-nginx-plus.md" >}})
6262

6363
<br>
6464

@@ -88,9 +88,9 @@ Make sure to review the [Technical Specifications]({{< ref "/nim/fundamentals/te
8888

8989
NGINX Instance Manager uses ClickHouse to store metrics, events, alerts, and configuration data.
9090

91-
In 2.20.0, we introduced Lightweight mode, which can skip the ClickHouse installation entirely. It’s ideal if you don’t need monitoring data or want a simpler setup. This reduces system requirements and avoids the work of managing a metrics database. You can add ClickHouse later if your needs change.
91+
Starting in version 2.20.0, you can run NGINX Instance Manager in Lightweight mode, which skips the ClickHouse installation entirely. This setup works well if you don’t need monitoring data or want to reduce system requirements. It also avoids the effort of managing a metrics database. You can add ClickHouse later if your needs change.
9292

93-
If you don’t need to store metrics, you can skip installing ClickHouse. But you must use NGINX Agent version {{< lightweight-nim-nginx-agent-version >}}, and you must disable metrics collection in the `/etc/nms/nms.conf` file.
93+
If you don’t need to store metrics, you can skip installing ClickHouse. But you must use NGINX Agent version {{< lightweight-nim-nginx-agent-version >}}, and you must disable metrics collection in the `/etc/nms/nms.conf` and `/etc/nms-sm.conf.yaml` files.
9494

9595
For instructions, see [Disable metrics collection]({{< ref "nim/system-configuration/configure-clickhouse.md#disable-metrics-collection" >}}).
9696

@@ -203,7 +203,7 @@ To install NGINX Instance Manager, you need to add the official repository to pu
203203
1. To upgrade to the latest version of the Instance Manager, run the following command:
204204

205205
```bash
206-
sudo apt-get update
206+
sudo apt-get update && \
207207
sudo apt-get install -y --only-upgrade nms-instance-manager
208208
```
209209

content/nim/disconnected/add-license-disconnected-deployment.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ type:
1818

1919
This guide shows you how to add a license to NGINX Instance Manager in a disconnected (offline) environment. In this setup, systems don’t have internet access. You’ll download and apply your subscription’s JSON Web Token (JWT) license, then verify your entitlements with F5.
2020

21-
{{< call-out "tip" "Using the REST API" "" >}}{{< include "nim/how-to-access-nim-api.md" >}}{{</call-out>}}
21+
{{< call-out "tip" "Using the REST API" "" >}}{{< include "nim/how-to-access-nim-api.md" >}}{{</ call-out >}}
2222

2323

2424
## Before you begin
@@ -39,7 +39,7 @@ To configure NGINX Instance Manager for a disconnected environment, you need to
3939
## Add license and submit initial usage report {#add-license-submit-initial-usage-report}
4040

4141

42-
{{<tabs name="submit-usage-report">}}
42+
{{< tabs name="submit-usage-report" >}}
4343

4444
{{%tab name="Bash script (recommended)"%}}
4545

@@ -86,7 +86,7 @@ To license NGINX Instance Manager, complete each of the following steps in order
8686
8787
Run these `curl` commands on a system that can access NGINX Instance Manager and connect to `https://product.apis.f5.com/` on port `443`. Replace each placeholder with your specific values.
8888
89-
{{<important>}}The `-k` flag skips SSL certificate validation. Use this only if your NGINX Instance Manager is using a self-signed certificate or if the certificate is not trusted by your system.{{</important>}}
89+
{{< important >}}The `-k` flag skips SSL certificate validation. Use this only if your NGINX Instance Manager is using a self-signed certificate or if the certificate is not trusted by your system.{{</ important >}}
9090
9191
1. **Add the license to NGINX Instance Manager**:
9292
@@ -117,7 +117,7 @@ Run these `curl` commands on a system that can access NGINX Instance Manager and
117117
--header "referer: https://<NIM-FQDN>/ui/settings/license"
118118
```
119119
120-
1. **Update the license configuration on NGINX Instance Manager**:
120+
1. **Update the license configuration on NGINX Instance Manager (not required in 2.20 or later)**:
121121
122122
This step ensures that the license configuration is fully applied.
123123

content/nim/fundamentals/tech-specs.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,36 +38,47 @@ This section outlines the recommendations for NGINX Instance Manager deployments
3838

3939
We recommend using SSDs to enhance storage performance.
4040

41-
{{<bootstrap-table "table table-striped table-bordered">}}
41+
{{< bootstrap-table "table table-striped table-bordered" >}}
4242
| Number of Data Plane Instances | CPU | Memory | Network | Storage |
4343
|--------------------------------|--------|----------|-----------|---------|
4444
| 10 | 2 vCPU | 4 GB RAM | 1 GbE NIC | 100 GB |
4545
| 100 | 2 vCPU | 4 GB RAM | 1 GbE NIC | 1 TB |
4646
| 1000 | 4 vCPU | 8 GB RAM | 1 GbE NIC | 3 TB |
47-
{{</bootstrap-table>}}
47+
{{</ bootstrap-table >}}
4848

4949
These values represent the minimum resources needed for deployments that fall under standard configurations.
5050

5151
### Large NGINX configuration deployments
5252

5353
For environments requiring more resources, **large configurations** are suitable. These configurations can support up to **300 upstream servers** and are designed for enterprise environments or applications handling high traffic and complex configurations, without NGINX App Protect.
5454

55-
{{<bootstrap-table "table table-striped table-bordered">}}
55+
{{< bootstrap-table "table table-striped table-bordered" >}}
5656
| Number of Data Plane Instances | CPU | Memory | Network | Storage |
5757
|--------------------------------|--------|----------|-----------|---------|
5858
| 50 | 4 vCPU | 8 GB RAM | 1 GbE NIC | 1 TB |
5959
| 250 | 4 vCPU | 8 GB RAM | 1 GbE NIC | 2 TB |
60-
{{</bootstrap-table>}}
60+
{{</ bootstrap-table >}}
6161

6262
### NGINX configuration deployments with NGINX App Protect {#system-sizing-app-protect}
6363

6464
If using NGINX App Protect features in NGINX Instance Manager, this requires additional CPU and Memory for policy compilation and security monitoring features. At a minimum, 8gb Memory and 4 CPUs are required for a standard NGINX App Protect use case (under 20 NGINX Plus instances). The requirements are heavily dependent on the number of policies being managed, the frequency of updates and the number of events being that occur in the security monitoring feature.
6565

66+
### Lightweight mode {#lightweight-mode}
67+
68+
(New in 2.20.0) You can run NGINX Instance Manager without installing ClickHouse. This setup is useful if you don’t need monitoring data or prefer a simpler deployment. It reduces system requirements and removes the need to manage a metrics database. You can add ClickHouse later if your needs change. For instructions, see [Disable metrics collection]({{< ref "nim/system-configuration/configure-clickhouse.md#disable-metrics-collection" >}}).
69+
70+
In Lightweight mode, we tested NGINX Instance Manager with ten managed NGINX instances and configuration publishing. It ran with as little as 1 CPU core and 1 GB of memory (without App Protect). When App Protect was enabled, we needed 2 CPU cores and 4 GB of memory to compile policies.
71+
72+
These figures are guidelines only. They reflect the minimum tested configuration and may cause performance issues depending on your setup. For better performance, consider allocating more system resources.
73+
74+
6675
### License and usage reporting only {#reporting-sizing}
6776

68-
This section assumes you've configured NGINX Instance Manager to manage your NGINX instances for licensing and usage reporting only. NGINX commercial license and usage reporting is done in an “unmanaged” way, where NGINX sends a request periodically to NGINX Instance Manager solely for counting purposes. For more information, see how you would [Prepare your environment for reporting]({{< ref "/solutions/about-subscription-licenses.md#set-up-environment" >}}).
77+
This section applies when you’ve set up NGINX Instance Manager to handle licensing and usage reporting only. In this setup, NGINX instances report license and usage data in an "unmanaged" way. Each instance sends periodic updates to NGINX Instance Manager for counting purposes only.
78+
79+
For details on how to configure this setup, see [Prepare your environment for reporting]({{< ref "/solutions/about-subscription-licenses.md#set-up-environment" >}}).
6980

70-
Therefore, the requirements for NGINX Instance Manager when used solely for licensing and usage reporting are minimal.
81+
When used only for licensing and usage reporting, NGINX Instance Manager has minimal system requirements. We recommend using [Lightweight mode](#lightweight-mode) in this case to avoid the ClickHouse dependency, especially if you don’t plan to use other features.
7182

7283
{{<bootstrap-table "table table-striped table-bordered">}}
7384
| Number of Data Plane Instances | CPU | Memory | Network | Storage |

content/nim/system-configuration/configure-clickhouse.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type:
1313
## Overview
1414

1515
NGINX Instance Manager uses ClickHouse to store metrics, events, alerts, and configuration data.
16-
If your setup differs from the default configurationfor example, if you use a custom address, enable TLS, set a password, or turn off metricsyou need to update the `/etc/nms/nms.conf` file.
16+
If your setup differs from the default configurationfor example, if you use a custom address, enable TLS, set a password, or turn off metricsyou need to update the `/etc/nms/nms.conf` file.
1717

1818
This guide explains how to update those settings so that NGINX Instance Manager can connect to ClickHouse correctly.
1919

@@ -38,19 +38,27 @@ Unless otherwise specified in the `/etc/nms/nms.conf` file, NGINX Instance Manag
3838

3939
## Disable metrics collection
4040

41-
As of version 2.20, NGINX Instance Manager can run without ClickHouse. This lightweight mode reduces system requirements and simplifies installation for users who do not need metrics. To use this setup, you must run NGINX Agent version {{< lightweight-nim-nginx-agent-version >}}.
41+
Starting in version 2.20, NGINX Instance Manager can run without ClickHouse. This lightweight mode reduces system requirements and simplifies installation for users who don't need metrics. To use this setup, you must run NGINX Agent version `{{< lightweight-nim-nginx-agent-version >}}`.
4242

4343
To disable metrics collection after installing NGINX Instance Manager:
4444

45-
1. Open the configuration file at `/etc/nms/nms.conf`.
46-
45+
1. Open the config file at `/etc/nms/nms.conf`.
46+
4747
2. In the `[clickhouse]` section, set the following value:
4848

4949
```yaml
50-
enable = false
50+
clickhouse:
51+
enable = false
5152
```
5253
53-
3. Restart the NGINX Instance Manager service:
54+
3. Open the `/etc/nms/nms-sm-conf.yaml` file and set:
55+
56+
```yaml
57+
clickhouse:
58+
enable = false
59+
```
60+
61+
4. Restart the NGINX Instance Manager service:
5462

5563
```shell
5664
sudo systemctl restart nms

static/scripts/install-nim-bundle.sh

100755100644
Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -566,14 +566,9 @@ This action deletes all files in the following directories: /etc/nms , /etc/ngin
566566
getLatestPkgVersionFromRepo(){
567567
repoUrl=$1
568568
version=$2
569-
pkg_extension=$3
570-
if [[ "${pkg_extension}" == "rpm" ]]; then
571-
response=$(curl --cert ${NGINX_CERT_PATH} --key ${NGINX_CERT_KEY_PATH} -sL "${repoUrl}" | awk -F '"' '/href=/ {print $2}' | grep -E "$version"| sort -t'-' -k4,4V | tac)
572-
readarray -t versions < <(printf "%s" "${response}")
573-
else
574-
response=$(curl --cert ${NGINX_CERT_PATH} --key ${NGINX_CERT_KEY_PATH} -sL "${repoUrl}" | awk -F '"' '/href=/ {print $2}' | grep -E "$version"| sort -t'_' -k2,2V | tac)
575-
readarray -t versions < <(printf "%s" "${response}")
576-
fi
569+
sort_fields=$3
570+
response=$(curl --cert ${NGINX_CERT_PATH} --key ${NGINX_CERT_KEY_PATH} -sL "${repoUrl}" | awk -F '"' '/href=/ {print $2}' | grep -E "$version"| eval sort "$sort_fields" | tac)
571+
readarray -t versions < <(printf "%s" "${response}")
577572
if [ "${#versions[@]}" -eq 0 ]; then
578573
printf "Package %s not found. See available versions:" "${versions[@]}"
579574
exit 1;
@@ -602,22 +597,26 @@ package_nim_offline(){
602597
cd "${TEMP_DIR}/${TARGET_DISTRIBUTION}" || echo "directory ${TEMP_DIR} does not exits"
603598
if [[ "${USE_NGINX_PLUS}" == "true" ]]; then
604599
NGINX_PLUS_PACKAGE="^nginx-plus_[0-9]+-([0-9]+)~${OS_DISTRO_MAP[${TARGET_DISTRIBUTION}]}_${OS_ARCH}\.${PKG_EXTENSION}$"
600+
SORT_FIELDS="-t'_' -k2,2V"
605601
if [[ "${PKG_EXTENSION}" == "rpm" ]]; then
606602
NGINX_PLUS_PACKAGE="^nginx-plus-[0-9]+-([0-9]+)${OS_DISTRO_MAP[${TARGET_DISTRIBUTION}]}\.${PKG_EXTENSION}$"
603+
SORT_FIELDS="-t'-' -k3,3V"
607604
fi
608605
echo "regex for looking latest version : ${NGINX_PLUS_PACKAGE}"
609-
NGINX_PLUS_VERSION=$(getLatestPkgVersionFromRepo "${NGINX_PLUS_REPO[${TARGET_DISTRIBUTION}]}" "${NGINX_PLUS_PACKAGE}" "${PKG_EXTENSION}")
606+
NGINX_PLUS_VERSION=$(getLatestPkgVersionFromRepo "${NGINX_PLUS_REPO[${TARGET_DISTRIBUTION}]}" "${NGINX_PLUS_PACKAGE}" "${SORT_FIELDS}")
610607
echo "latest version for nginx_plus is ${NGINX_PLUS_VERSION}"
611608
echo "Downloading ${NGINX_PLUS_REPO[${TARGET_DISTRIBUTION}]}/${NGINX_PLUS_VERSION}...."
612609
curl -sfLO --cert ${NGINX_CERT_PATH} --key ${NGINX_CERT_KEY_PATH} "${NGINX_PLUS_REPO[${TARGET_DISTRIBUTION}]}/${NGINX_PLUS_VERSION}"
613610
check_last_command_status "curl -sfLO --cert ${NGINX_CERT_PATH} --key ${NGINX_CERT_KEY_PATH} \"${NGINX_PLUS_REPO[${TARGET_DISTRIBUTION}]}/${NGINX_PLUS_VERSION}\"" $?
614611
else
615612
NGINX_OSS_PACKAGE="^nginx_[0-9]+\.[0-9]+\.[0-9]+-([0-9]+)~${OS_DISTRO_MAP[${TARGET_DISTRIBUTION}]}_${OS_ARCH}\.${PKG_EXTENSION}$"
613+
SORT_FIELDS="-t'_' -k2,2V"
616614
if [[ "${PKG_EXTENSION}" == "rpm" ]]; then
617615
NGINX_OSS_PACKAGE="^nginx-[0-9]+\.[0-9]+\.[0-9]+-([0-9]+)${OS_DISTRO_MAP[${TARGET_DISTRIBUTION}]}\.${PKG_EXTENSION}$"
616+
SORT_FIELDS="-t'-' -k2,2V"
618617
fi
619618
echo "fetching latest version using ${NGINX_OSS_PACKAGE}"
620-
NGINX_OSS_VERSION=$(getLatestPkgVersionFromRepo "${NGINX_REPO[${TARGET_DISTRIBUTION}]}" "${NGINX_OSS_PACKAGE}" "${PKG_EXTENSION}")
619+
NGINX_OSS_VERSION=$(getLatestPkgVersionFromRepo "${NGINX_REPO[${TARGET_DISTRIBUTION}]}" "${NGINX_OSS_PACKAGE}" "${SORT_FIELDS}")
621620
echo "latest version for nginx is ${NGINX_OSS_VERSION}"
622621
echo "Downloading ${NGINX_REPO[${TARGET_DISTRIBUTION}]}/${NGINX_OSS_VERSION}...."
623622
curl -sfLO "${NGINX_REPO[${TARGET_DISTRIBUTION}]}/${NGINX_OSS_VERSION}"
@@ -649,10 +648,12 @@ package_nim_offline(){
649648
check_last_command_status "curl -sfLO \"${CLICKHOUSE_CLIENT_PATH}\"" $?
650649
fi
651650
NIM_PACKAGE_PATH="^nms-instance-manager_[0-9]+\.[0-9]+\.[0-9]+-([0-9]+)~${OS_DISTRO_MAP[${TARGET_DISTRIBUTION}]}_${OS_ARCH}\.${PKG_EXTENSION}$"
651+
SORT_FIELDS="-t'_' -k2,2V"
652652
if [[ "${PKG_EXTENSION}" == "rpm" ]]; then
653653
NIM_PACKAGE_PATH="^nms-instance-manager-[0-9]+\.[0-9]+\.[0-9]+-([0-9]+)${OS_DISTRO_MAP[${TARGET_DISTRIBUTION}]}\.${PKG_EXTENSION}$"
654+
SORT_FIELDS="-t'-' -k4,4V"
654655
fi
655-
NIM_PACKAGE_VERSION=$(getLatestPkgVersionFromRepo "${NIM_REPO[${TARGET_DISTRIBUTION}]}" "${NIM_PACKAGE_PATH}" "${PKG_EXTENSION}")
656+
NIM_PACKAGE_VERSION=$(getLatestPkgVersionFromRepo "${NIM_REPO[${TARGET_DISTRIBUTION}]}" "${NIM_PACKAGE_PATH}" "${SORT_FIELDS}")
656657
echo "Latest version for nginx instance manager is ${NIM_PACKAGE_VERSION}...."
657658
curl -sfLO --cert ${NGINX_CERT_PATH} --key ${NGINX_CERT_KEY_PATH} "${NIM_REPO[${TARGET_DISTRIBUTION}]}/${NIM_PACKAGE_VERSION}"
658659
check_last_command_status "curl -sfLO --cert ${NGINX_CERT_PATH} --key ${NGINX_CERT_KEY_PATH} \"${NIM_REPO[${TARGET_DISTRIBUTION}]}/${NIM_PACKAGE_VERSION}\"" $?

0 commit comments

Comments
 (0)