Skip to main content

Documenting Connectivity issues

If you are having any connection issues, please execute the steps below:

  1. Make sure there is no ongoing incident related to the problem on our Status Page[2].
  2. If your endpoint is not an IP address then, check if your DNS resolving the domain name to which you are connecting, e.g., using the dig command:

dig [domain name here]

The correct response will look like this:

; <<>> DiG 9.16.1-Ubuntu <<>> fix.coinapi.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57297
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;fix.coinapi.io. IN A

;; ANSWER SECTION:
fix.coinapi.io. 21599 IN CNAME api.coinapi.io.
api.coinapi.io. 7199 IN CNAME api.coinapi.net.
api.coinapi.net. 3 IN CNAME hdc1-enc-02.coinapi.net.
hdc1-enc-02.coinapi.net. 3 IN CNAME hdc1-enc-02-bay-08.coinapi.net.
hdc1-enc-02-bay-08.coinapi.net. 3598 IN A 185.204.225.28

;; Query time: 76 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Mon Jun 14 14:21:40 UTC 2021
;; MSG SIZE rcvd: 165

The common incorrect response will not include the ANSWER SECTION that implicates a problem on the DNS side.

If this step fails, then analyze DNS issues on our side, and if your team determines that the problem is on our side, please go to the last step directly.

  1. Try to establish a TCP connection to the domain name or IP Address: nc -v [IP address or hostname] -p [port number]

The correct response will look like this: terminal:~#nc -v fix.coinapi.io 3302 Connection to fix.coinapi.io 3302 port [tcp/*] succeeded!

The incorrect response will display why your client could not initiate the connection.

If this step fails, then analyze TCP connection issues on our side, and if your team determines that the problem is on our side, please go to the last step directly.

  1. Switch to the API endpoint without encryption, if possible, and check if the problem still exists. If the problem exists only for encrypted/unencrypted connection type, this is valuable information from the analysis perspective and must be included in the final case submission.

  2. Capture raw traffic data that includes a problem in the PCAP file format, use one of the commands below based on the protocol:

    1. REST API:

      tcpdump -i [your interface name] port 80 or port 443 -w dump.date +"%Y%m%dT%H%M%S".cap

    2. WebSocket API:

      tcpdump -i [your interface name] port 80 or port 443 -w dump.date +"%Y%m%dT%H%M%S".cap

    3. FIX API:

      tcpdump -i [your interface name] port 3302 or port 3303 -w dump.date +"%Y%m%dT%H%M%S".cap

  3. Analyze the PCAP file with your team and make sure that all the conditions below are satisfied:

    1. The problem is on the CoinAPI side.
    2. The problem it's caused by your client misbehaving, acting not according to our product documentation or best industry practices.
    3. CoinAPI is on the other side of the connection. We are not accepting the dumps where our device is not directly on the other side of the connection by looking at the transport layer. The engineer must capture the dump from behind any DNAT gateways or internal proxy servers.
  4. Use the "API issues" ticket form from our Support Portal[1], make sure that:

    1. The problem is described accurately.

    2. All the timestamps are in the UTC timezone.

    3. The output of the DNS check is included if performed.

    4. The output of the TCP check (nc command) is included if performed.

    5. The output of your internal analysis is included in the case, along with the PCAP dump file.

    6. Set the appropriate priority, reflecting the current impact of this specific problem on the company:

      I. Urgent (Production system down)

      II. High (Production system impaired)

      III. Normal (System impaired) 

      IV. Low (General guidance) 

References:

[1] https://support.coinapi.io/

[2] https://status.coinapi.io/