October 4, 2018
amberwilsonla
Open-Sourcing Panoptes, Oath’s distributed network telemetry collector
<p><a href="https://yahoodevelopers.tumblr.com/post/178699833943/open-sourcing-panoptes-oaths-distributed-network" class="tumblr_blog">yahoodevelopers</a>:</p><blockquote>
<p>By Ian Flint, Network Automation Architect and Varun Varma, Senior Principal Engineer<b><br/></b></p>
<p>The Oath network automation team is proud to announce that we are open-sourcing <a href="https://github.com/yahoo/panoptes">Panoptes</a>, a distributed system for collecting, enriching and distributing network telemetry. </p>
<p>We developed Panoptes to address several issues inherent in legacy polling systems, including overpolling due to multiple point solutions for metrics, a lack of data normalization, consistent data enrichment and integration with infrastructure discovery systems. </p>
<p>Panoptes is a pluggable, distributed, high-performance data collection system which supports multiple polling formats, including SNMP and vendor-specific APIs. It is also extensible to support emerging streaming telemetry standards including gNMI.</p>
<p><b>Architecture</b></p>
<p>The following block diagram shows the major components of Panoptes:</p>
<figure class="tmblr-full" data-orig-height="720" data-orig-width="960"><img src="https://66.media.tumblr.com/1d91c0bf305fc8986648ef529be1c7d6/tumblr_inline_pg14wwqH9X1w911gs_540.png" data-orig-height="720" data-orig-width="960"/></figure><p>Panoptes is written primarily in Python, and leverages multiple open-source technologies to provide the most value for the least development effort. At the center of Panoptes is a metrics bus implemented on Kafka. All data plane transactions flow across this bus; discovery publishes devices to the bus, polling publishes metrics to the bus, and numerous clients read the data off of the bus for additional processing and forwarding. This architecture enables easy data distribution and integration with other systems. For example, in preparing for open-source, we identified a need for a generally available time series datastore. We developed, tested and released a plugin to push metrics into InfluxDB in under a week. This flexibility allows Panoptes to evolve with industry standards.</p>
<p>Check scheduling is accomplished using Celery, a horizontally scalable, open-source scheduler utilizing a Redis data store. Celery’s scalable nature combined with Panoptes’ distributed nature yields excellent scalability. Across Oath, Panoptes currently runs hundreds of thousands of checks per second, and the infrastructure has been tested to more than one million checks per second.</p>
<p>Panoptes ships with a simple, CSV-based discovery system. Integrating Panoptes with a CMDB is as simple as writing an adapter to emit a CSV, and importing that CSV into Panoptes. From there, Panoptes will manage the task of scheduling polling for the desired devices. Users can also develop custom discovery plugins to integrate with their CMDB and other device inventory data sources.</p>
<p>Finally, any metrics gathering system needs a place to send the metrics. Panoptes’ initial release includes an integration with InfluxDB, an industry-standard time series store. Combined with Grafana and the InfluxData ecosystem, this gives teams the ability to quickly set up a fully-featured monitoring environment.</p>
<p><b>Deployment at Oath</b></p>
<p>At Oath, we anticipate significant benefits from building Panoptes. We will consolidate four siloed polling solutions into one, reducing overpolling and the associated risk of service interruption. As vendors move toward streaming telemetry, Panoptes’ flexible architecture will minimize the effort required to adopt these new protocols.</p>
<p>There is another, less obvious benefit to a system like Panoptes. As is the case with most large enterprises, a massive ecosystem of downstream applications has evolved around our existing polling solutions. Panoptes allows us to continue to populate legacy datastores without continuing to run the polling layers of those systems. This is because Panoptes’ data bus enables multiple metrics consumers, so we can send metrics to both current and legacy datastores.</p>
<p>At Oath, we have deployed Panoptes in a tiered, federated model. We install the software in each of our major data centers and proxy checks out to smaller installations such as edge sites. All metrics are polled from an instance close to the devices, and metrics are forwarded to a centralized time series datastore. We have also developed numerous custom applications on the platform, including a load balancer monitor, a BGP session monitor, and a topology discovery application. The availability of a flexible, extensible platform has greatly reduced the cost of producing robust network data systems. </p>
<p><b>Easy Setup</b></p>
<p>Panoptes’ open-source release is packaged for easy deployment into any Linux-based environment. Deployment is straightforward, so you can have a working system up in hours, not days.</p>
<p>We are excited to share our internal polling solution and welcome engineers to contribute to the codebase, including contributing device adapters, metrics forwarders, discovery plugins, and any other relevant data consumers. </p>
<p><i>Panoptes is available at <a href="https://github.com/yahoo/panoptes">https://github.com/yahoo/panoptes</a>, and you can connect with our team at <a href="mailto:network-automation@oath.com">network-automation@oath.com</a>.</i><br/></p>
</blockquote>