{"repo":"innogames/pirate","free":true,"listed":false,"github":"https://github.com/innogames/pirate","clone":"git clone https://github.com/innogames/pirate.git","description":"Realtime metrics server written in Go","language":"Go","stars":12,"topics":["grafsy","graphite","go","metrics"],"license":"MIT","category":"analytics","readme_excerpt":"Pirate What is Pirate? Pirate is a gateway, written in go, which accepts client-side metrics via UDP and makes them available to grafsy. In the end you can have near-time dashboards with client-side metrics. Architecture - UDP packets are accepted by the UDP server - if compression is enabled, the packets are decompressed for the next step - plain text messages are parsed into header attributes and the metrics body (see protocol) - parsed messages are validated, invalid messages or metrics will be dropped (see validation) - valid metric names are then resolved to their Graphite path - at the end the writer will take care of sending the metrics to Grafsy via TCP or filesystem - beside this there is a monitoring component, which tracks own metrics like udp received , metrics received or metrics dropped , which are also sent to the writer All the components of the data pipeline are implemented as workers (goroutines), which scale with the amount of CPUs. Additionally there are buffers (go channels) between those components. This means, even if some messages are processed a bit slower, the rest of the system should not be affected. In the rare case that all buffers should be full, incoming UDP packets will be dropped immediately. Protocol The client's message is a (GZIP-encoded) UDP packet, which consist of two parts: the header and the body. The header is the first line of the message and contains information about the whole message (e.g. the project identifier and custom attrib","default_branch":null,"files":null,"tree":[],"storefront":"/r/innogames","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/innogames/pirate/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}