Toolhub is configured to emit log records to stderr as json blobs in the Elastic Common Schema format (T276374). These log events can be seen inside the k8s cluster with a command like kubectl logs -f --since=10m --all-containers=true --max-log-requests=15 -lapp=toolhub. The events look something like:
{"@timestamp":"2021-09-29T15:00:58.365Z","log.level":"error","message":"Timeout connecting to https://toolhub.toolforge.org/toolinfo.json","ecs":{"version":"1.6.0"},"error":{"message":"HTTPSConnectionPool(host='toolhub.toolforge.org', port=443): Max retries exceeded with url: /toolinfo.json (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f2075fca7f0>, 'Connection to toolhub.toolforge.org timed out. (connect timeout=5)'))","stack_trace":" File \"/srv/app/toolhub/apps/crawler/tasks.py\", line 178, in fetch_content\n timeout=(5, 13),\n File \"/opt/lib/poetry/toolhub-2uZo5AhP-py3.7/lib/python3.7/site-packages/requests/api.py\", line 75, in get\n return request('get', url, params=params, **kwargs)\n File \"/opt/lib/poetry/toolhub-2uZo5AhP-py3.7/lib/python3.7/site-packages/requests/api.py\", line 61, in request\n return session.request(method=method, url=url, **kwargs)\n File \"/opt/lib/poetry/toolhub-2uZo5AhP-py3.7/lib/python3.7/site-packages/requests/sessions.py\", line 542, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/lib/poetry/toolhub-2uZo5AhP-py3.7/lib/python3.7/site-packages/requests/sessions.py\", line 655, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/lib/poetry/toolhub-2uZo5AhP-py3.7/lib/python3.7/site-packages/requests/adapters.py\", line 504, in send\n raise ConnectTimeout(e, request=request)\n","type":"ConnectTimeout"},"log":{"logger":"toolhub.apps.crawler.tasks","origin":{"file":{"line":199,"name":"tasks.py"},"function":"fetch_content"}},"process":{"name":"MainProcess","pid":1,"thread":{"id":139777462257472,"name":"MainThread"}},"trace":{"id":"none"}}
In the logstash cluster, there are log events related to Toolhub (https://logstash.wikimedia.org/goto/c1d0a6ef181ed59da2bdb4f0fe1962eb), but these events are all from Kubernetes itself and not from the Django pod.