Swimlane Platform Installer Gu...
Troubleshooting Guide
Troubleshooting using swimlane-tools pod
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 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 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 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 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 tcp nc z v \[hostname/ip address] \[port number] udp nc z v u \[hostname/ip address] \[port number] root\@swimlane tools fdd568c9d m9vgk /# nc z v sw api 5000 sw api default svc cluster local \[10 96 2 208] 5000 (?) open 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 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 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 openssl s client connect \<hostname or ip> \<port> showcerts to specify the tls version in the connection for testing various protocols 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 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 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 $ 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 \# initializing url url = "https //www virustotal com" proxy = {'http proxy' 'http //internet example com 83', 'https proxy' 'http //internet example com 83'} verify = false timeout = 60 try \# requesting url request = requests get(url, proxies=proxy, verify=verify, timeout=timeout) print("internet is on") \# catching exception except (requests connectionerror, requests timeout) as exception 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 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 test internet connection json copy the below and save {"$type" "core models integrations task, core","action" {"$type" "core models integrations actions python python3action, core","type" "python3","descriptor" {"$type" "core models integrations actions availableactiondescriptor, core","description" "execute python 3 scripts","actiontype" "python3","family" "scripts","base64image" "data\ image/png;base64,ivborw0kggoaaaansuheugaaafiaaabscayaaadhliobaaaqfeleqvr4ae3aexruzzrh8ucrpahxdns62j12z7iic0kwstw9lsubqiphwrbaion4ehaeyv4vkkolqrjcbb0vfqehqsrv2xesqipa7gubhebiwpkqxiicc9dqopa0y3nmd+swhk6qpw5viptjh9/zwod/pb+ew++t94wy2q2nnoowcjkkoqo52ijkkoq/betef/2azhhq6nemturrvhnlzioog67kfjk8vlwq2lrhgnehavo2k5c4nbrptrm0qxuawvi3rezbtk5iqyowu6vfeuxvlehjwvt5hzbseupiqza6krjlo9e+wvi2uzswzqvjzsafhmr71cnftwgri0ibveqey2pie19cgr2vvbpz6jrvt0n/dyhtuent19kr7xoid3immmhkqkbwzqtezm1atscawuyvqmybadbejqmrvdgrzycimltkqrjuivxs8xfotudgeszbdvoihfyvbpn4y8dmunbqgpp5ha1sk1brk5i2vygm17cuiktkggividgvrdeufskmfq1s660trhakvozusf5hyx/lolgr1igok8y99hsp0quwa9pq/k9mkwchbrevyiuwsgdi36nktewak/genarotxnlahl1gqkuz+hw3vzxih/5u7/stoq6cooqif+yyltidafrxaq1leyi6bxaqxcdeymj+axjtb67bewgf7s98ww6bchton/gbskf9gdo+uozflrqcereferirp7udawtquhbkshzbwwu2kkb6bvqtifada1v+vyuh0n8strvbwhiilvq+xk1qajedb8iyrclgqzspy+o807kvdirozcgyzmplybffzlplbx09d75xpumeddribt9keo55itrv6wpi9+lkwjqw++skfkljalgqctuwp0divszk+peleos0rarz2ojeztkf4hpu88hgh02fqcrkcgklkwx5pgu+lygytf5ndngcufilxr3tjvuwvzet+xr6cfj04mpbhm3+wpts0j0dzkot7hx/ehe+u2kxqybddrk1acdhucutonvidcrpdfvkc9ataaqba4h5vdblbl1eewry3l6ulqetvphuwc3lrfsvy/lp1dytcsf+cfatumidwqa0nvdkd+qp2e7+txwjkkcqgidiyac0mbfonwnngmplucsqhwktqomh+kvklfgdc8iaqjcjkvmmnof8onljxvsltvurrf/dlzuakzbwwg5zghsuedaoysqsf44/nmi8xbr1f/cmwk9y2pqiaaxnfrjfsrebsdrv20dabugogerc1mtz8nxnmstt8hcgz7fg59l3noz7fzzugbico/mje4kvfsqtrlwqc1y3j1vivufaywvd6ob6znserumvvjb0vj6/xagcglsowyxizd6yyhvwasjghxrxzlgbqmxfm27pjbiaqvur4worziiybapfiedes86do5xtkzare48zlyhrisjopqzkt0g5tnwd3yubdxm4sozrg6kykqws61yqpr+xss+rzd9euvcjijizwzeul4xubb13v7ekqkjmnkcfz7fr/xle/cnbq2gybpaaukzbyhqil65axlxt4w4gifrigxql/lciguxcxflm33izisv3ty5nlgnbgizrjykdjhwrervnxjvrllzy6qmxa69yjyrjz+tdjvcokjfmstccwmjhw0uieqz715uof/osim+dst2ozcnjjlfftvp8ku3jqxmfidpq5qar5qksxwhylrimks0spaefrejhojdihgrd0y2eubsjjqxbyggzo1iyn8dmgyqdwlwarqpzx+c5vkqqtwsj/afkokuktfkqwju2lfeaqk2zygolovvfttxnptcgulu0dv56oz3paapdzjmxmgdh56dyz1buy8i5lyfgql2j94rvxnsky7r9qmipygyzi455cvmtfuogogmqhthdequynxisif1nz6q28ituondannlfsz91r5bfkyq3imjmncrds4hoq1873kz2bgekj2hqv4r7zbtqdve6gnudrirgzyjg7yklep+rttu6zp0k//rgzxj25u0tp5su/vnnwjetewwtcqgxwdkmz1qeerkq0qzmvtmvmxtyeo4cy5x5xzlkolaclvc0xvjxccrxlooiicifcaixyjnqt6fyyeuedegiojgdoao8nxcgqnihcohvapfji8krnyp16zvg0beajcgzl0iuyzclm2hdfenerefyzvp/44bz97ojahkiafevuye+p03cqm1x7mgwoicyp4lik+yjuzvo+rqo2tokbexkxit057lvn/lkl76ohkta/xdf8eihbenhig2aziry/gcidsaoraicktergkdfpw/dpmogdlatonk39sa+sszuybc+qxpfrpxv5dksctewqefkibefepdqpzjoutlj9vkelcogiiin/pdj2qtft7lamjaiewib6ahwmcvq6qn1q8prrwbkwjetszebpzhnqvzd+yofis4y/pirygyzj1ise1c3tm4flicednzka2fwqkb6eyrjrh9+quahbar9uxch4q16jbisdgturjfrkpbxrahjhjn+dhv6q8rbwqhdspn/xly51vwrvth3bn2lr7rt4hn3cqcus7wk+wqpurdiw8rdyioxngqt4y7udvpu91k37t9utrdweecinnt4bnfkedsunwmef2kjtpupum/cm69y9ixaq6nle6pf4/d+qttj3mvigo47qjk5ul3itp+h6lv1qmwmz7xltmqqbg8e7mnvbg5p71jc+rizcjbxtzp72iprxjrw6roow6pzvnvtlmatfa2za96cvgbkp2fdpq8ezpyhxwdn4e85yii8z4xiif4ymftcrxxicqh4onjcsxtpgokbhxildchgbn+fzky5vq5v23nng5gm+ssn9p75dqzsvib5fa+ljf48sq5ss9evsblpa14/cl6yrjphr8tig6frnws2b+by/6+img5rotvcmtfkdfuwnbkk2utln+rdnaeytff40ptsujp3cfortew05e9f6ivwh6gbw5hxvnn2/3j8v3ww8scfnhbqxraaj4kl9sfpv7rpvdx3x2yn+ghllnxcnvidbjumslhzjzcbtn3yxf+urcrdyyi+kv0gfkeyhthogqimrjib6c8tgomlz6fxirmonohfxgfmhcdfzprkx8yt5x77mvm7vuoc/e8k9w1t7foowj2st52tlknucnee6jcusndst6io8ghsr7sncee/mr7t0tuq0snfsohnckvhuor5azsfzxzj48l+ft6+7hen88fwz3hqdw9/wr3zwfucmfullqp+djz5jf3sm1lbpeaw3xuajy673t7cji9fn47izcisrkykwv7bkcsvdaitrbvbsuusbe5lpn+ivgp8yzyv0sdboguinicebkb0q7z4kv89uelr6wrh7sxfdgiiit7jhtmi35hpffni67g4wtkhbhlnejetiii1xglfl9upphg8pcvvyfqrz/5rbdofp+1gokeux8cxktkoilqfxh/lr5udilpjfj6kourykkkw/my/a1jaxf3+f/skcmcefvflnvjw6oy0stq7jv0szqb5sx8z4rcz6ofe5b45lw/yhp5hpn4+slurc1ebuwqctuthass404iojycazalp7l5lsdnbg2gijxarm4hilcqtvi/836nh2jibwirisultzqfal+omhxdkp6snz3409nhshgdupftgij6iijhrlrhfa/rlyohfzmksjtcmf1iknt6ynryveh6+rxvxmdnr4wyrkqaewkiesmg9ikuj5+oijhq+nk3hv5xkhxaq1kzmh2qsyiuz0ss73ozz1ikhpkohytrbu2olvbvgi0/otzoax2fatk/f9ijroq2roqsivqgp/kbwh8een8q4mjejrwuf/8xukxxrqleojmirblyhtv9fu4a8seahbgroyminebesizr8z2/gxwfvywgrpovprxyznu/n+uxn54mtxzbbjhrmqrd2xsetaa/yimmixgyev0qxib+jlfo5wyhmn8iis5+glh0kzr7/jxal379vxkii0kdvxcr0vs+ewwdnmwd0pl5fe4qcq8gxunem4fwocpxj7gn67uzvfe4jhs1zimsisquwyjlhsjxvzljg/sjkslp6jkbfgil9ki+pxqiuwfyj3ydcbfgvny9/qnx4ufnemroheuib3v/54awzeaubqtcwwa0yzhwzgvawwc0f7gyichgmrbtarh52qigvi0slvbe8t94j9ahd2vhapiasrcf0ioqllwflsvrbyzaohxkjkcsbqnjsmnqihz68pwlxb9jipuisjwh/c/xlpjattri1mdiftq8gwcjdvpv+9gbikxncyraegcx+ukzsibefryaivxen2sikariairdfmgvjf1c3rxcqthprcxunexcmsdc8xcihmla/p33hd0kwhdg2cie2gskb57cfqna3pocwnkfagyyz/sflz7ocvaz87kanbjlovmmjds1n5k4k4yagigdwdc2ltbeiyqk5duxcjg9kq0pjvqidu6jjo7weqdr7ajnt7ddvvfzpn3ouywgrubojbbqbnmmo2kibhi2ieulibr88hd9y75ahdmqqmwfopxctjups34rcvciaez8ipqjoiehbnyjmod4ev9exykloj41akco5jtofjqduom6jmtomtkei+saiapu/hp/9mh1n/mb7u3c5h8fag/a5vjs3/dexyvee6nfgi4x5nqyk81nlxaxyhj7er1a4ezedbyrhfa7yeemjufwfqgsaameqmd47xz42r4yel0yyduxvfjkxov0aume4ukeanrfc92miajlygbfv7gnig0+eqr9e/fhfk85qobzhpegtkk8yjc3lqmi/8zcskda5hj/dmr2ghxo+tyufroawog6ni22tee+cra1aqhvc5/flbz3h376fseawg6q8m9t90kqo0po0pjyin76ofq2zrawggmtnki6idyq6x6oa1nm4dd8soxbtfbnyw8wwz1v533cl4dspysof1+rh1sn+9cf+n0g4vccihfmdg8kjfuwvphzul40g374xed8cojs+kxiiomipwldws0hw3ftinxpyiktudf3dianxo/f43cmidq6riraqyzu8cf+tec65hnjefrwxro60qanpr2c+ksvxf9gdbfogk+4io/nl8fvzrnqdcshhyfvy92nsvlhu65a5fk7ql2h/kh2htebuqbkrguckbm9cdal43dyko06ihocuw63wmrv+0/gt6crvxokven3u2ci3yx7npjtuabcnsaj/jdxgrmer/whaly6h4icq+zb4xjdh2qvactxw9mjmmpru2ceqjbria8ftucwoaeawaha0zkky4jfava1bli9yg3q6xhxr1r6j4cmwgqgeicxhvywdwbqcj64eohbglgtnqdycbb7ghjc/tpvbbb7ghge7cwrzi6uzfw+kbxppqeif0dezz7ejt40oiadg+3yhxyfhiucbrryfhiucrt/b7dbg7t6bvpaaaaaaelftksuqmcc","readonly"\ false,"pythonversion" "python3","availableoutputvariables" {"$type" "system collections generic dictionary 2\[\[system string, system private corelib],\[core models integrations descriptors namedescriptor, core]], system private corelib","sw task status" {"$type" "core models integrations descriptors namedescriptor, core","name" "task status","description" "the result of task execution","outputtype" "text","disableedit"\ true,"issystem"\ true},"sw task error type" {"$type" "core models integrations descriptors namedescriptor, core","name" "task error type","description" "in case of an error, this is the error type","outputtype" "text","disableedit"\ true,"issystem"\ true},"sw task error message" {"$type" "core models integrations descriptors namedescriptor, core","name" "task error message","description" "in case of an error, this is the error message","outputtype" "text","disableedit"\ true,"issystem"\ true},"sw task stack trace" {"$type" "core models integrations descriptors namedescriptor, core","name" "task error stack trace","description" "in case of an error, this is the error stack trace","outputtype" "text","disableedit"\ true,"issystem"\ true}},"availableoutputtypes" \["insertupdaterecord","email","referentialtask","savetofile","setfieldvalue"],"inputparameters" {"$type" "system collections generic dictionary 2\[\[system string, system private corelib],\[core models integrations descriptors descriptor, core]], system private corelib"},"meta" {"$type" "system collections generic dictionary`2\[\[system string, system private corelib],\[system object, system private corelib]], system private corelib"},"createddate" "0001 01 01t00 00 00z","modifieddate" "0001 01 01t00 00 00z","id" "ans5dv5vvv6nmmzcf","name" "python 3","disabled"\ false},"readonly"\ false,"script" "# importing requests module\nimport requests\n \n# initializing url\nurl = " https //www swimlane com\\"\nproxy = {'http proxy' '', \n 'https proxy' '', \n 'no proxy' ''}\nverify = false\ntimeout = 60\n\ntry \n # requesting url\n request = requests get(url,\n proxies=proxy,\n verify=verify,\n timeout=timeout)\n print("internet is on")\n # catching exception\nexcept (requests connectionerror,\n requests timeout) as exception \n print("internet is off")"},"inputmapping" \[],"issystemtask"\ false,"outputs" \[],"triggers" \[],"createdbyuser" {"$type" "core models utilities usergroupselection, core","id" "am78an sl2m41apnj","name" "swimlane admin"},"modifiedbyuser" {"$type" "core models utilities usergroupselection, core","id" "am78an sl2m41apnj","name" "swimlane admin"},"createddate" "2022 10 27t06 19 25 898z","modifieddate" "2022 12 06t07 53 51 137z","valid"\ true,"uid" "test internet connection 51877","version" 2,"id" "aob2h6ahclvitb8lv","name" "test internet connection","disabled"\ false}