Support

Support policy

F5 WAF for NGINX adheres to the support policy detailed in the following knowledge base article: K000140156.

Contact F5 Support

For questions or assistance with installing, troubleshooting, or using F5 WAF for NGINX, contact support through the MyF5 Customer Portal.

Collecting log information

As part of opening a support ticket, you will be asked to collect troubleshooting information for a customer support engineer.

The steps involved depend on your deployment type.

Get the operating system information:

cat /etc/os-release > system_version.txt && uname -r >> system_version.txt && cat /proc/version >> system_version.txt

Collect the package versions:

cat /opt/app_protect/VERSION /opt/app_protect/RELEASE > package_versions.txt

You may need a different command depending on the operating system.

shell
# Alpine Linux
apk info -vv | grep -E 'nginx|app-protect' > package_versions.txt
# Debian / Ubuntu
apt list --installed | grep -E 'nginx|app-protect' > package_versions.txt
# RHEL / Amazon Linux / Oracle Linux
rpm -qa nginx* app-protect* > package_versions.txt

Create a list of files called tarball-targets.txt:

text
system_version.txt
package_versions.txt
/var/log/app_protect/*
/var/log/nginx/*
/etc/nginx.conf
# Add any additional policy or log configuration files

Create a tarball using the list of files:

tar cvfz logs.tgz `cat tarball-targets.txt`

Use docker compose to create log files:

sudo docker compose logs > docker_compose_logs.txt

If a centralized logging system such as the ELK stack is used, you should retrieve them in CSV format instead:

sudo docker compose logs > docker_compose_logs.csv

Add the log files to a tarball:

tar cvfz logs.tgz docker_compose_logs.txt

In the following steps, replace <example-ns> with the namespace you used to deploy F5 WAF for NGINX.

Verify the pods in your deployment:

kubectl get pods -n <example-ns>

Use the following script to collect logs from every pod, which will create a timestamped directory with files after each pod and container:

shell
#!/bin/bash

set -x

# Define the namespace variable
NAMESPACE="<example-ns>"

# Define a directory to store log files
log_dir="k8s_logs_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$log_dir"

# Loop through all pods and containers, saving logs to timestamped directories
for pod in $(kubectl get pods -n $NAMESPACE -o=name | sed 's|pod/||g'); do
    for container in $(kubectl get pod/$pod -n $NAMESPACE -o=jsonpath='{.spec.containers[*].name}'); do
        kubectl logs $pod -c $container -n $NAMESPACE > "${log_dir}/${pod}_${container}_logs.txt"
    done
done

Once the log files have been saved, run the following command to create a tarball:

tar cvfz logs.tgz .

Attach the tarball named logs.tgz to your support ticket.