---
title: Troubleshooting using swimlane-tools pod
slug: turbine-installer/troubleshooting-using-swimlane-tools-pod
docTags: 
createdAt: 2025-12-12T09:59:44.133Z
---

The Swimlane application container images such as swimlane-web, swimlane-tasks, and swimlane-api by design are lightweight and do not include the basic utilities such as curl, telnet, ping, nslookup, etc. The reduced image size helps speed up the building and deploying of the containers.


To make troubleshooting easier, the Swimlane Platform Installer includes a swimlane-tools container that can be used for diagnosing the most common issues, especially for air gapped/offline installs. This would include, for example, tools like telnet, nslookup, curl, netcat, mtr, tcptraceroute (to test network connectivity), ldapsearch (for LDAP issues), mongo client, and other useful utilities.

# Accessing the swimlane-tools container

There are few ways to execute into the container. Here are two options:

:::BlockQuote
kubectl -n \<swimlane-namespace> get pods
kubectl exec -it \<swimlane-tools-pod> -- /bin/bash
:::

# Available Tools

The container includes the following tools:

## Debian Linux apt tools

- curl
- dnsutils
- htop
- iftop
- iotop
- iputils-ping
- jq
- ldap-utils
- mtr
- nano
- net-tools
- netcat
- ngrep
- nmap
- nmon
- openssl
- procps
- snmp
- sysstat
- tcpdump
- tcptrace
- tcptraceroute
- telnet
- traceroute
- tshark
- vim
- wget
- gnupg
- python3
- python3-pip


For a full list of installed packages, run ‘*apt list --installed*’.

### Examples:

:::BlockQuote
root\@swimlane-tools-fdd568c9d-m9vgk:/# **traceroute -n sw-api**
traceroute to sw-api (10.96.2.208), 30 hops max, 60 byte packets1 10.96.2.208 0.095 ms 0.050 ms 0.043 ms

:::

:::BlockQuote
root\@swimlane-tools-fdd568c9d-m9vgk:/# **nslookup swimlane-sw-mongo**
Server:10.96.0.10Address:10.96.0.10#53
Name\:swimlane-sw-mongo.default.svc.cluster.localAddress: 10.32.0.17

:::

:::BlockQuote
root\@swimlane-tools-fdd568c9d-m9vgk:/# **python3**
Python 3.7.3 (default, Jul 25 2020, 13:03:44)
\[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

import socket
**print(socket.gethostbyname\_ex('swimlane.com'))**
('swimlane.com', \[], \['172.67.147.162', '104.21.47.122'])

import requests
**requests.get('https\://swimlane.com')**
\<Response \[200]>

import certifi
**certifi.where()**
'/usr/local/lib/python3.7/dist-packages/certifi/cacert.pem'

exit()
:::

**Test port connectivity using nc**

:::BlockQuote

TCP: nc -z -v \[hostname/IP address] \[port number]
UDP: nc -z -v -u \[hostname/IP address] \[port number]
:::

:::BlockQuote
root\@swimlane-tools-fdd568c9d-m9vgk:/# **nc -z -v sw-api 5000**
sw-api.default.svc.cluster.local \[10.96.2.208] 5000 (?) open
:::

:::BlockQuote
root\@swimlane-tools-fdd568c9d-m9vgk:/# **nc -z -v swimlane-sw-mongo 27017**
swimlane-sw-mongo.default.svc.cluster.local \[10.32.0.12] 27017 (?) open
:::

:::BlockQuote
root\@swimlane-tools-fdd568c9d-m9vgk:/# **nc -z -v sw-web 443**
sw-web.default.svc.cluster.local \[10.96.1.116] 443 (https) open

:::

**Use OpenSSL s\_client to check and verify SSL/TLS connectivity**

Open an SSL connection and print the SSL certificate:

:::BlockQuote
openssl s\_client -connect \<hostname or IP>:\<port>
:::

Print all certificates in the certificate chain presented by the SSL service. This is useful when troubleshooting missing intermediate CA certificate issues:

:::BlockQuote
openssl s\_client -connect \<hostname or IP>:\<port> -showcerts
:::

To specify the TLS version in the connection for testing various protocols:

:::BlockQuote
openssl s\_client -connect \<hostname or IP>:\<port> -tls1\_3
:::

For more information, see OpenSSL s\_client commands man page in the OpenSSL toolkit.

## MongoDB Client and Tools

### Mongo shell:

:::BlockQuote
root\@swimlane-tools-fdd568c9d-m9vgk:/# **mongo -u Admin -p --host swimlane-sw-mongo --port 27017 --authenticationDatabase admin --tls --tlsAllowInvalidCertificates admin**
:::

### MongoDB Backup and Restore script:

:::BlockQuote
root\@swimlane-tools-fdd568c9d-m9vgk:/# **python3 /usr/local/bin/backup\_restore\_ha.py -h**
usage: backup\_restore\_ha.py \[-h] \[-v] \[--cert CERT] \{backup,restore} ...

positional arguments: \{backup,restore}
backup Backup command.
restore Restore command

optional arguments:
-h, --help show this help message and exit
-v, --verbose Logging verbosity level.
\--cert CERT Location of Mongo pem certificate.

root\@swimlane-tools-fdd568c9d-m9vgk:/# python3 /usr/local/bin/backup\_restore\_ha.py backup

root\@swimlane-tools-fdd568c9d-m9vgk:/# python3 /usr/local/bin/backup\_restore\_ha.py restore
:::

## Test Internet Connectivity

:::BlockQuote
$ env | grep -i proxy

$ curl -I https\://www\.virustotal.com

$ kubectl -n  \<swimlane-namespace> exec swimlane-tools-0 -- curl -I https\://www\.virustotal.com

\# Run the test connection script from the host

$ python -m pip install requests

$ vi test-connection.py

\# add the following content:

\# ----------BEGIN---------------

import requests
&#x20;
\# initializing URL
url = "https\://www\.virustotal.com"
proxy = \{'http\_proxy' : 'http\://internet.example.com:83',&#x20;
&#x20;        'https\_proxy' : 'http\://internet.example.com:83'}
verify = False
timeout = 60

try:
&#x20;   \# requesting URL
&#x20;   request = requests.get(url,
&#x20;                          proxies=proxy,
&#x20;                          verify=verify,
&#x20;                          timeout=timeout)
&#x20;   print("Internet is on")
&#x20;\# catching exception
except (requests.ConnectionError,
&#x20;       requests.Timeout) as exception:
&#x20;   print("Internet is off")

\# ----------END---------------

\# Copy the same script to the tasks pod and test

$ kubectl -n \<swimlane-namespace> cp test-connection.py \<swimlane-tasks-pod>:/tmp/test-connection.py

\# Run from the container

$ kubectl -n \<swimlane-namespace> exec -it \<swimlane-tasks-pod> -- /bin/bash

\# Inside the container

python /tmp/test-connection.py

exit
:::

**tcpdump**

\# Run the following command on each of the node

:::BlockQuote
sudo tcpdump -i any host \<fqdn>


sudo tcpdump -i any src host quay.io and "tcp\[tcpflags] & (tcp-syn) != 0" and "tcp\[tcpflags] & (tcp-ack) == 0"
:::

\# Wait for few mins to see if any traffic is being sent to \<host> and identify the source

\# Control-C to break

