========================================= Seattle Internet Exchange Status Reporter ========================================= This code is licensed under the GPL version 2.0 only. The code is maintained at `code.crute.me `_ and mirrored to `GitHub `_. This is a server and library for parsing and reporting on the status of a participant at the `Seattle Internet Exchange `_. The server provides a Prometheus endpoint reporting the stats of a participant's ASN on the exchange. The stats are gathered from the `participant data`_ exported by the exchange operators. The library can be used to process the SIX participants feed as well as to fetch and parse additional data that is exported by the SIX route servers. It's mainly useful for generating reports in the case of errors or building monitoring infrastructure around SIX data. Installing ========== The default ``make`` target will create the correct binary. You can also build using regular ``go build``, look at the ``Makefile`` for more details. :: make ./six_status_exporter YOUR-ASN By default the server will run on port ``9119`` and export a Prometheus metrics endpoint at ``/metrics``. Library ======= The main models are located in `six/participant.go`_ and contain the important details about the library. To generate the models from the SIX CSV consume the ``ParseSIXCSV`` and ``FetchParseSIXCSV`` which take a ``io.Reader`` and no arguments, respectively. Those functions are defined in `six/feed_parser.go`_. Contributing ============ The authors welcome and appreciate contributions. To contribute please open a pull request on the GitHub page linked above, or email a patch in ``git am`` format to the author. To have the best contribution experience, please: * Don't break backwards compatibility of public interfaces * Write tests for your new feature/bug fix (run ``make test``) * Ensure that existing tests pass * Update the readme/documentation, if necessary * Ensure your code follows ``go fmt`` standards All code is reviewed before acceptance and changes may be requested to better follow the conventions of the existing API. .. _six/participant.go: https://code.crute.me/pomonaconsulting/six_monitoring/tree/six/participant.go .. _six/feed_parser.go: https://code.crute.me/pomonaconsulting/six_monitoring/tree/six/feed_parser.go .. _participant data: https://www.seattleix.net/participants/>