Open Skipper - Get a Better View of Your Systems
Open Skipper displays and integrates NMEA 0183, NMEA 2000 (N2k) and AIS data from nautical instruments, GPS units and internet data sources. It runs on a PC (laptop or desktop) aboard your boat to show electronic instruments displaying speed, heading and other data. It also receives and transmits data over a serial port (for NMEA 0183), an ActiSense NGT-1-USB NMEA-2000-to-USB converter to read N2K data, and wired and wireless network connections, including TCP and UDP.
Open Skipper is written in Go and exposes some interesting runtime metrics, like memory, garbage collection details, number of threads, and goroutines. It also exports backend latencies, RPS throughput, error rates, connection states, queue states, and restarts in Coda Hale or Prometheus format.
The request logs are valuable, too. They help you track which client has a specific access pattern, such as dial_context, TCP/IP, and TLS handshake, or Driver::findNearest Redis operation. You can use enableAccessLog and disableAccessLog filters to control how log output is grouped by status code, which is helpful for identifying individual clients.
Modern visibility tools, notably distributed tracing libraries like Instana, Jaeger, and Lightstep, provide a waterfall chart of service flows that can give you a good idea of where your services are in the process. But that isn’t enough to answer questions about how your system works, such as “What happened at 2:30am?” or how fast you can respond to an emergency call.
The best way to gain visibility is through the analysis of the traces themselves. That is where a tracing library comes in. In distributed tracing, a trace consists of connected spans, each of which contains a service, an operation, and a duration. They can contain metadata, such as tags and logs, that allow you to group them together for a better view of how your system is behaving.