Support

F5 WAF for NGINX adheres to the support policy detailed in the following MyF5 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.