<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Kentik</title>
    <description>The latest articles on Forem by Kentik (@kentik).</description>
    <link>https://forem.com/kentik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F7787%2Fb017c25e-5801-4f60-8192-16a9ca945fe8.png</url>
      <title>Forem: Kentik</title>
      <link>https://forem.com/kentik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kentik"/>
    <language>en</language>
    <item>
      <title>The (Mostly) Complete Guide to Installing Kentik NMS</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Fri, 12 Apr 2024 13:52:24 +0000</pubDate>
      <link>https://forem.com/kentik/the-mostly-complete-guide-to-installing-kentik-nms-150j</link>
      <guid>https://forem.com/kentik/the-mostly-complete-guide-to-installing-kentik-nms-150j</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The saying “nobody likes a know-it-all” applies equally well to blog series – they’re really not terribly loveable. That goes double for a deep-dive technical blog series. We, who make our livelihood and career in tech, appreciate in-depth information and tutorials. But if a post has “part 8 of 33” in the title, it’s a safe bet that most folks will scroll right by because who wants to make that kind of commitment?&lt;/p&gt;

&lt;p&gt;I share this with you to explain that I never intended to create a blog series on using &lt;a href="https://www.kentik.com/product/network-monitoring-system/" rel="noopener noreferrer"&gt;Kentik NMS&lt;/a&gt;. My goal was to share what I knew about Kentik’s newest addition to the platform, and to do so in a way that was focused and easy to consume in a reasonable amount of time.&lt;/p&gt;

&lt;p&gt;But there’s so dang much that NMS can do! &lt;a href="https://www.kentik.com/blog/getting-started-with-kentik-nms/" rel="noopener noreferrer"&gt;One topic&lt;/a&gt; triggered an idea for &lt;a href="https://www.kentik.com/blog/using-kentik-network-monitoring-system-to-identify-network-outages/" rel="noopener noreferrer"&gt;another&lt;/a&gt;, and &lt;a href="https://www.kentik.com/blog/adding-multiple-custom-metrics-to-kentik-nms/" rel="noopener noreferrer"&gt;another&lt;/a&gt;, and here we are, six posts later, and I haven’t really gone into the details of how to install NMS yet.&lt;/p&gt;

&lt;p&gt;I’ll admit the oversight – not starting with the NMS installation – was (slightly) intentional. I’m tired of slogging through 30 paragraphs covering “how to install” before I even know if the tool I’m reading about does anything I need or care about. So, I made the conscious decision to start by digging into the useful features and circle back to installation once I felt NMS had proven its worth.&lt;/p&gt;

&lt;p&gt;That time has come.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observations* on the NMS architecture
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;(*You see what I did there, right?)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’m not going to belabor the overall design of NMS with a bunch of “…color glossy photographs with circles and arrows and a paragraph on the back of each one explaining what each one was…” (hat tip to Arlo Guthrie) because it’s pretty simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; The targets: This is the stuff you want to monitor – network gear and servers that sit on-premises, in the cloud, or both.&lt;/li&gt;
&lt;li&gt; The Ranger Collector: A system – it can be physical, virtual, or nothing more than a host for a Docker container – that’s in the same logical network, so it’s able to receive data and pull metrics from the stuff you want to monitor.&lt;/li&gt;
&lt;li&gt; The Kentik platform: This is the system – located remotely from you and your devices – to which the Ranger Collector sends data.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ok, maybe just &lt;em&gt;one&lt;/em&gt; photograph: &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nx76i87b1ii6tk9afo3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nx76i87b1ii6tk9afo3.png" alt="The targets, collector, and platform" width="480" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure twice, cut once
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqtb4ot68m4u6la027us4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqtb4ot68m4u6la027us4.jpg" alt="Measure twice, cut once" width="480" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eagle-eyed readers will note that I did, in fact, briefly touch on how to install Kentik NMS in both the NMS migration guide and also the blog &lt;a href="https://www.kentik.com/blog/getting-started-with-kentik-nms/" rel="noopener noreferrer"&gt;Getting Started With Kentik NMS&lt;/a&gt;. This blog will go into far greater detail than those two, but I will still use bits from other blogs if they work well. Back in “Getting Started…” I wrote:&lt;/p&gt;

&lt;p&gt;There’s nothing more frustrating than being ready to test out a new piece of technology and then finding out you’re not prepared. So before you head down to the “Installation and configuration” section, make sure you have the following things in hand:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; A system to install the Kentik NMS collector on. The collector is an agent that can be installed directly onto a Linux-based system or as a Docker container. Per the &lt;a href="https://kb.kentik.com/v0/Bd11.htm#Bd11-NMS_Agent_Requirements" rel="noopener noreferrer"&gt;Kentik Knowledge Base&lt;/a&gt; instructions, you’ll want a system with at least a single core and 4GB of RAM.&lt;/li&gt;
&lt;li&gt; Verify the system can access the required remote sites:

&lt;ul&gt;
&lt;li&gt;  Docker Hub&lt;/li&gt;
&lt;li&gt;  TCP 443 to grpc.api.kentik.com (or kentik.eu for Europe)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Verify the system can access the devices you want to monitor:

&lt;ul&gt;
&lt;li&gt;  Ping (ICMP)&lt;/li&gt;
&lt;li&gt;  SNMP (UDP port 161)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Check that you have the following information for the devices you want to monitor:

&lt;ul&gt;
&lt;li&gt;  A list of IP addresses and/or one or more CIDR notated subnets (example: 192.168.1.0/24)&lt;/li&gt;
&lt;li&gt;  The SNMP v2c read-only community string and/or SNMP version 3 username, authentication type and passphrase, privacy type and passphrase.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; You have a Kentik account. If you are just testing NMS, we recommend &lt;em&gt;not&lt;/em&gt; using an existing production account. If you don’t, head over to &lt;a href="https://portal.kentik.com/login" rel="noopener noreferrer"&gt;https://portal.kentik.com/login&lt;/a&gt; and get one set up.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you’ve got all of your technical ducks in a row (which, to be honest, shouldn’t take that long), you’re ready to get started on this NMS adventure!  &lt;/p&gt;

&lt;p&gt;That about sums it up. To get NMS up and running, you just need:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; A system to install the collector on&lt;/li&gt;
&lt;li&gt; Systems to monitor&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And with that, you’re ready to get installing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Kentik NMS
&lt;/h2&gt;

&lt;p&gt;As I mentioned earlier, there are two primary options for installing the Kentik NMS Ranger Collector: direct or Docker. I will cover both, but regardless of which one you plan to use, you’ll start in the &lt;a href="https://portal.kentik.com/" rel="noopener noreferrer"&gt;Kentik portal&lt;/a&gt;. Click the “hamburger menu” (the three lines in the upper left corner), which shows the full portal menu:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F932sczz7wu5hctqw76n3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F932sczz7wu5hctqw76n3.png" alt="Kentik main menu" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femlqfb49ky9kqy6qpkir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femlqfb49ky9kqy6qpkir.png" alt="Discover Devices button" width="140" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click “Devices” and then click the friendly blue “Discover Devices” button in the upper right corner.&lt;/p&gt;

&lt;p&gt;There’s a quick question on whether you want full monitoring or “ping-only” – just to know if systems are up or down: &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftl7op14iiqulmm8uxrb3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftl7op14iiqulmm8uxrb3.png" alt="Add NMS devices screen" width="580" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next screen allows you to install the collector, either as a Docker container:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqe4yo4jflq5xw90dpkmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqe4yo4jflq5xw90dpkmx.png" alt="Docker installation" width="800" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or on a full Linux system:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wrbdrus9yvo2x2genr2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wrbdrus9yvo2x2genr2.png" alt="Linux installation" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing direct
&lt;/h3&gt;

&lt;p&gt;Let’s start with a “direct” installation on a regular Linux system. Again, this can be an actual bare-metal server or a VM on-site or in the cloud. The only requirement is that the machine you’re installing on can access the systems you want to monitor.&lt;/p&gt;

&lt;p&gt;Copy the command from the portal, SSH to the target system, and paste that command. (Note: You must have sudo permission to run this command.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F856r1wbi2np3it9lj43u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F856r1wbi2np3it9lj43u.png" alt="Installing direct - copy command from portal" width="780" height="657"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The installer will complete and… well, in most cases, that’s pretty much it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8szvbcwkllah9z3vgrkm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8szvbcwkllah9z3vgrkm.png" alt="Installer completed" width="780" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No, really. That’s it. The next step involves getting things set up in the Kentik portal, so I will leave that aside for now.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing with Docker
&lt;/h3&gt;

&lt;p&gt;This process starts out the same as with the Direct option – copy the command from the Kentik portal, SSH to the system hosting the Docker container, and paste.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;However&lt;/em&gt;… there are a couple of implicit expectations that are worth stating out loud:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The system you’re using already has Docker and all its necessary components installed.&lt;/li&gt;
&lt;li&gt;  The user under which you’re installing has full permission to create, run, shut down, and update docker containers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Presuming that’s the case, cut, paste, and run! &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnivyz3z6waxyb89azae.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnivyz3z6waxyb89azae.png" alt="Installing with Docker - copy the command" width="780" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the Docker run command completes, there’s not much to see:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fao899os0gc9iucl73yx7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fao899os0gc9iucl73yx7.png" alt="Docker command completed" width="780" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Scanning and adding devices (aka: the fun part)
&lt;/h2&gt;

&lt;p&gt;Shortly after installing the Ranger Collector, you’ll see the agent name (or the name of the system the agent is installed on) show up in the “Select an Agent” area below the installation commands:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8i6oju2u5gdcm3m56x2v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8i6oju2u5gdcm3m56x2v.png" alt="Select an agent" width="800" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go ahead and click “Use this Agent.” That will automatically authorize it and take you to the next screen, where you can specify the devices you want to monitor. From the next screen, you’ll enter an IP address, a comma-separated list of IPs, or a CIDR-noted range (example: 192.168.1.0/24).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxfu1w6glrx9ghw41vuo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxfu1w6glrx9ghw41vuo.png" alt="Enter IP address" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trick: You can mix and match, including individual IPs and CIDR ranges.&lt;/p&gt;

&lt;p&gt;Another trick: if there are specific systems you want to ignore, list them with a minus (-) in front.&lt;/p&gt;

&lt;p&gt;Presuming this is your first time adding devices, you’ll probably have to click “Add New Credential.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hsvomyas8cyqmmlm1ty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hsvomyas8cyqmmlm1ty.png" alt="Choose SNMP v2" width="450" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkm6a3kstru0h1dvn80r6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkm6a3kstru0h1dvn80r6.png" alt="Choose SNMP v3" width="450" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s get this out of the way: You will &lt;em&gt;never&lt;/em&gt; select SNMP v1. Just don’t.&lt;/p&gt;

&lt;p&gt;That said, select SNMP v2c or v3, include the relevant credentials, give it a unique name, and click “Add Credential.”&lt;/p&gt;

&lt;p&gt;Then select it from the previous screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8h18khs577gyh7kau4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8h18khs577gyh7kau4j.png" alt="Credentials plus Start Discovery" width="650" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At that point, click “Start Discovery” to kick off the real excitement.&lt;/p&gt;

&lt;p&gt;The collector will start pinging devices and ensuring they respond to SNMP. Once completed, you’ll see a list of devices. You can check/uncheck the ones you want to monitor and click “Add Devices.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1pa9abd6d5qklphujih8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1pa9abd6d5qklphujih8.png" alt="Discovery complete" width="800" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker for the distracted
&lt;/h2&gt;

&lt;p&gt;I don’t want to presume that every reader is already familiar – let alone comfortable – with Docker and its basic commands. I recognize that there are &lt;em&gt;a lot&lt;/em&gt; of Docker tutorials on the internet. In fact, I’ve lost several weeks of my life looking for (and at) them. But I also recognize that not every reader of this blog manages swarms of containers. So here’s the absolute minimum information you’ll need to be able to maintain your Ranger collector Docker container.&lt;/p&gt;

&lt;p&gt;You can see which containers are running (along with their container IDs) with the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker ps&lt;/code&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgo5yin81xfamnln6ywjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgo5yin81xfamnln6ywjw.png" alt="See which containers are running" width="780" height="86"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see an output of what a Docker container is doing with this command like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker logs --follow &amp;lt;container id&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08tlxvuya2180blud4np.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08tlxvuya2180blud4np.png" alt="See an output of a Docker container" width="780" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have issues with any containers, including the command to build or run the Kentik agent, you can easily stop a container with this command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker stop &amp;lt;container id&amp;gt;&lt;/code&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxuwl26gd13dwrwdbeaxp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxuwl26gd13dwrwdbeaxp.png" alt="Command to stop a container" width="780" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once a container is stopped, you probably will want to restart it. The problem is that it won’t show up using &lt;code&gt;docker ps&lt;/code&gt;. To see containers that are no longer running, use the -a (“all”) switch:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker ps -a&lt;/code&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4w9svrgx0lkpjkuibc49.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4w9svrgx0lkpjkuibc49.png" alt="PS command" width="780" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And then, to start that container again, run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker start &amp;lt;container id&amp;gt;&lt;/code&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa3lip6yk65f4zdkhmtgn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa3lip6yk65f4zdkhmtgn.png" alt="Restart a Docker container" width="780" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If something has gone horribly wrong, you can stop and then completely remove the container. (Warning: You’ll need to go back into the Kentik portal and re-run the original command to rebuild it, re-authenticate it, and add devices to be monitored by it.)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker rm &amp;lt;container id&amp;gt;&lt;/code&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqu5s5arf4c3zb0wklf9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqu5s5arf4c3zb0wklf9g.png" alt="Remove the container" width="380" height="108"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Variety (and customization) is the spice of life
&lt;/h2&gt;

&lt;p&gt;If you’ve been following along in the blog series, you’ll know that you can add custom SNMP metrics along with the ones collected by default. To do that, you need to create certain files and make them discoverable by the NMS Ranger Collector agent when it starts up. Whether you’re using the direct or Docker version of the agent, do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Create the directory: &lt;code&gt;/opt/kentik/components/ranger/local/config&lt;/code&gt;. If you’re running the direct agent, everything up to “ranger” will already be there, but you’ll have to create local/config.&lt;/li&gt;
&lt;li&gt; In that directory, create three directories:

&lt;ul&gt;
&lt;li&gt;  /profiles&lt;/li&gt;
&lt;li&gt;  /reports&lt;/li&gt;
&lt;li&gt;  /sources&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Make the user:group “kentik:kentik” the owner of everything you just created and all the files and directories beneath it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;sudo chown -R kentik:kentik /opt/kentik/components/ranger/local/config&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note: You must monitor at least one device for /opt/kentik/components/ranger to exist.&lt;/p&gt;

&lt;p&gt;Another note: If you add more files, you’ll probably need to re-issue that command.&lt;/p&gt;

&lt;p&gt;Trick: You can also make this directory easier to get to by using the &lt;a href="https://www.freecodecamp.org/news/symlink-tutorial-in-linux-how-to-create-and-remove-a-symbolic-link/" rel="noopener noreferrer"&gt;Linux “symbolic link” capability&lt;/a&gt;. &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9ebmrckr0vvkkzvqe8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9ebmrckr0vvkkzvqe8y.png" alt="Linux symbolic link capability" width="780" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This would change the chown command to:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo chown -R kentik:kentik /local_kentik&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You still need that directory for the Docker version of Kentik NMS, so do everything I described at the beginning of this section. But you’ll also need to tell Docker to mount it as a custom folder. To do that, we’ll start by looking at the “docker run” command that you used to install the container in the first place:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --name=kagent --detach --restart unless-stopped 
--pull=always --cap-add NET_RAW --env K_COMPANY_ID=1234567 --env
K_API_ROOT=grpc.api.kentik.com:443 --mount 
source=kagent-data,target=/opt/kentik/ kentik/kagent:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adding the custom folder means including the line:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-v /opt/kentik/components/ranger/local/config&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;…to the end of that command. Which would look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --name=kagent --detach --restart unless-stopped
--pull=always --cap-add NET_RAW --env K_COMPANY_ID=1234567 --env
K_API_ROOT=grpc.api.kentik.com:443 --mount
source=kagent-data,target=/opt/kentik/ kentik/kagent:latest -v /opt/kentik/components/ranger/local/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But wait! If you used the symlink trick from earlier, the command line becomes slightly easier to manage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --name=kagent --detach --restart unless-stopped
--pull=always --cap-add NET_RAW --env K_COMPANY_ID=1234567 --env
K_API_ROOT=grpc.api.kentik.com:443 --mount 
source=kagent-data,target=/opt/kentik/ kentik/kagent:latest -v /local_kentik
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Troubleshooting and other swear words
&lt;/h2&gt;

&lt;p&gt;Working in tech, we become used to the fact that things rarely go right the first time. Only through careful consideration, iteration, and correction can we achieve the result we initially envisioned.&lt;/p&gt;

&lt;p&gt;This section is devoted to a few things that might not initially work as you hoped when setting up Kentik NMS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Peeking behind the curtain
&lt;/h3&gt;

&lt;p&gt;The Kentik Ranger Collector agent runs pretty silently during installation and afterward, which is usually a good thing. Still, when you suspect something is going wrong, it can be anything from slightly unsettling to downright rage-inducing. The good news is that most of the information you need is in the Linux Journal. The Linux Journal records every outbound message, error, update, whine, sigh, and grumble that your Linux system experiences – especially when it concerns services that run through the systemctl utility.&lt;/p&gt;

&lt;p&gt;The command to peer inside the Journal is, appropriately enough, journalctl. But typing that by itself will likely yield a metric tonne of mostly irrelevant information. To see messages and output specific to Kentik NMS, you should use the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo journalctl -u kagent&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;What this is saying is, “Show me the Journal, but filter for the following UNIT (hence the “-u”), which is either the name of a service or a pattern to match. If that’s still too much information, try this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo journalctl -u kagent –since "10 minutes ago"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7b16da8krdxyi2qyavp4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7b16da8krdxyi2qyavp4.png" alt="Linux Journal" width="780" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That asks for the Journal to be filtered down to messages about the Kentik agent (“kagent”), specifically those that have appeared in the last 10 minutes.&lt;/p&gt;

&lt;p&gt;If you want to see a running list of messages as they show up in the journal in real time, use this. The “-f” means “follow”:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo journalctl -f -u kagent&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Meanwhile, if you have a Docker container, you can see what’s happening with Docker’s logs:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker logs --follow &amp;lt;container id&amp;gt;&lt;/code&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08tlxvuya2180blud4np.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08tlxvuya2180blud4np.png" alt="Docker logs" width="780" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  No devices are discovered
&lt;/h3&gt;

&lt;p&gt;If you’ve installed the NMS Ranger Collector agent, authenticated it into the platform, and run a scan, and no devices have been found, obviously, something needs to be fixed. Here’s a short list of things that might have gone wrong:&lt;/p&gt;

&lt;h3&gt;
  
  
  You can’t reach the target devices.
&lt;/h3&gt;

&lt;p&gt;This is hands-down the most common issue. Whether due to firewall issues or a simple routing oversight, it’s important to start by verifying that the machine on which you’re running the NMS Ranger Collector agent can talk to the devices you want to monitor.&lt;/p&gt;

&lt;p&gt;Start off by running ping and ensuring you’ve got a clean response. &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvq302rd4986aiftmhnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvq302rd4986aiftmhnm.png" alt="Run ping" width="480" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, make sure you can reach the device via SNMP. Here are the essential steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  On the system running the Ranger Collector agent, go to the command line/terminal.&lt;/li&gt;
&lt;li&gt;  Type “snmp -V” (that’s a capital “V”) to verify that SNMP is installed on this system. If not, install it.&lt;/li&gt;
&lt;li&gt;  Next, do an SNMPWALK on the system object ID, which is present on all devices that are running SNMP:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;snmpwalk -v 2c -c &amp;lt;snmp community string&amp;gt; &amp;lt;device IP address&amp;gt; 1.3.6.1.2.1.1.2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If that works, you’ll see a response like this: &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvmx7ukzfst2fhmufexx6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvmx7ukzfst2fhmufexx6.png" alt="SNMPwalk" width="780" height="98"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point, you’ll know a few things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  If you can’t ping the device, you have a routing or firewall issue.&lt;/li&gt;
&lt;li&gt;  If you can ping but can’t get SNMP information, then:

&lt;ul&gt;
&lt;li&gt;  The target device is refusing the SNMP request.&lt;/li&gt;
&lt;li&gt;  Or it’s not running SNMP.&lt;/li&gt;
&lt;li&gt;  Or you need to correct some piece of information, like the community string.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Custom OIDS aren't being collected
&lt;/h3&gt;

&lt;p&gt;While this blog doesn’t get into it, a few other posts in this series delved deep into &lt;a href="https://www.kentik.com/blog/adding-multiple-custom-metrics-to-kentik-nms/" rel="noopener noreferrer"&gt;getting custom metrics&lt;/a&gt; and sending them to the Kentik platform. If that’s not working, here’s a list of things to check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Check the YAML files in an editor that shows the type of whitespace you’re using. Mixing spaces with tabs will never end well for anyone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqbc1c00o1jyyayctq8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqbc1c00o1jyyayctq8y.png" alt="Check whitespace" width="330" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Verify that all the files in /opt/kentik/components/ranger/local/config are owned by kentik:kentik.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdo0w6e0glcs6lnvua0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdo0w6e0glcs6lnvua0j.png" alt="Verify config" width="780" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Verify that the custom files are the correct “kind” – profile, report, or source.&lt;/li&gt;
&lt;li&gt;  Make sure the metadata name elements match up from file to file.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Red light, green light (stopping and starting)
&lt;/h3&gt;

&lt;p&gt;Sometimes, the Kentik agent needs a good swift kick in the process. To do that, you can use the systemctl utility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;sudo systemctl stop kagent.service&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;sudo systemctl start kagent.service&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;sudo systemctl restart agent.service&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Meanwhile, as discussed in the section on Docker, sometimes you need to restart the container itself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;docker ps&lt;/code&gt; To get a list of running containers&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;docker ps -a&lt;/code&gt; To get a list of all containers (running or stopped)&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;docker stop &amp;lt;container ID&amp;gt;&lt;/code&gt; To stop the container&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;docker start &amp;lt;container ID&amp;gt;&lt;/code&gt; To start the container&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;docker restart &amp;lt;container ID&amp;gt;&lt;/code&gt; To stop and start the container all at once&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;docker rm &amp;lt;container ID&amp;gt;&lt;/code&gt; To delete the container

&lt;ul&gt;
&lt;li&gt;  Note: You have to stop the container first&lt;/li&gt;
&lt;li&gt;  Another note: All the systems monitored by this container will have to be re-added when you recreate it.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  The end of the beginning
&lt;/h2&gt;

&lt;p&gt;If you’ve arrived here after reading the previous posts on &lt;a href="https://www.kentik.com/blog/using-kentik-network-monitoring-system-to-identify-network-outages/" rel="noopener noreferrer"&gt;using Kentik NMS to troubleshoot&lt;/a&gt;, &lt;a href="https://www.kentik.com/blog/how-to-configure-kentik-nms-to-collect-custom-snmp-metrics/" rel="noopener noreferrer"&gt;adding a single custom metric&lt;/a&gt;, &lt;a href="https://www.kentik.com/blog/adding-multiple-custom-metrics-to-kentik-nms/" rel="noopener noreferrer"&gt;adding multiple custom metrics&lt;/a&gt;, or &lt;a href="https://www.kentik.com/blog/adjusting-data-before-sending-it-to-kentik-nms/" rel="noopener noreferrer"&gt;modifying custom metrics&lt;/a&gt; before they’re sent to the Kentik platform, you now have everything you need to get the Kentik NMS Ranger Collector agent installed, running, and collecting monitoring data from your systems.&lt;/p&gt;

&lt;p&gt;On the other hand, if you arrived here fresh from the internet and this is your first encounter with Kentik NMS, I invite you to use the links in the paragraph above to explore further.&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>kentik</category>
      <category>networking</category>
      <category>observability</category>
    </item>
    <item>
      <title>Adjusting Data Before Sending it to Kentik NMS</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Tue, 02 Apr 2024 14:36:07 +0000</pubDate>
      <link>https://forem.com/kentik/adjusting-data-before-sending-it-to-kentik-nms-340g</link>
      <guid>https://forem.com/kentik/adjusting-data-before-sending-it-to-kentik-nms-340g</guid>
      <description>&lt;p&gt;In my ongoing exploration of Kentik NMS, I continue to peel back not only the layers of what the product can do but also the layers of information I quietly glossed over in my original example, hoping nobody noticed.&lt;/p&gt;

&lt;p&gt;In this blog, I want to both admit to and correct one of the most glaring ones:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0kqqbmmkqudlvmbl8cg4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0kqqbmmkqudlvmbl8cg4.png" alt="Metrics Explorer showing device temperature" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If that is the temperature of one of your devices, you should seek immediate assistance. I don’t want to alarm you, but that’s six times hotter than the surface of the sun.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzjsquarmwzraxm0eujb0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzjsquarmwzraxm0eujb0.png" alt="A very hot PC" width="380" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In reality, the SNMP OID in question gives temperature in &lt;em&gt;mC (microcelsius)&lt;/em&gt;, so all we really need to do is divide by 1,000. But this opens the door to plenty of other situations where it’s not only nice but necessary to adjust metrics before sending them to Kentik NMS.&lt;/p&gt;

&lt;p&gt;Kentik comes with scripting capabilities courtesy of &lt;a href="https://bazel.build/rules/language" rel="noopener noreferrer"&gt;Starlark&lt;/a&gt; (formerly known as Skylark), a Python-like language created by Google.&lt;/p&gt;

&lt;p&gt;That last sentence will either set your mind at ease or send you running for the door, and I’m honestly not sure how I feel about it myself.&lt;/p&gt;

&lt;p&gt;But, back to the task at hand, Starlark will let you take the values that come in via an OID and then manipulate them.&lt;/p&gt;

&lt;p&gt;A script block, which goes in the &lt;code&gt;reports&lt;/code&gt; file, must define a function called &lt;code&gt;process&lt;/code&gt; with two parameters: the record and the index set. It typically looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reports:
  /foo/bar/baz:
    script: !starlark |
      def process(n, indexes):
          (do stuff here)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s really all you have to know for now.&lt;/p&gt;

&lt;p&gt;If you missed &lt;a href="https://preview--kentik-website.netlify.app/blog/using-kentik-network-monitoring-system-to-identify-network-outages/" rel="noopener noreferrer"&gt;the original post&lt;/a&gt; and don’t feel like going back and reading it, here are the essentials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Move to (or create if it doesn’t exist) the dedicated folder on the system where the Kentik agent (kagent) is running:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;/opt/kentik/components/ranger/local/config&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  In that directory, create directories for /sources, /reports, and /profiles&lt;/li&gt;
&lt;li&gt;  Create three specific files:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt; Under /sources, a file that lists the custom OID to be collected&lt;/li&gt;
&lt;li&gt; Under /reports, a file that associates the custom OID with the data category it will appear under within the Kentik portal&lt;/li&gt;
&lt;li&gt; Under /profiles, a file that describes a type of device (Using the SNMP System Object ID) and the report(s) to be associated with that device type&lt;/li&gt;
&lt;li&gt; Make sure all of those directories (and the files beneath them) are owned by the Kentik user and group:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;sudo chown -R kentik:kentik /opt/kentik/components/ranger/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;sources/linux.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-linux
  kind: sources
sources:
  CPUTemp: !snmp
    value: 1.3.6.1.4.1.2021.13.16.2.1.3.1
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;reports/linux_temps_report.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-temp
  kind: reports
reports:
  /device/linux/temp:
    fields:
      CPUTemp: !snmp
        value: 1.3.6.1.4.1.2021.13.16.2.1.3.1
        metric: true
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;profiles/local-net-snmp.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-net-snmp
  kind: profile
profile:
  match:
    sysobjectid:
      - 1.3.6.1.4.1.8072.*
  reports:
    - local-temp
  include:
    - device_name_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As I showed earlier in this post, that gives you data that looks like this in Metrics Explorer:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0kqqbmmkqudlvmbl8cg4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0kqqbmmkqudlvmbl8cg4.png" alt="Metrics Explorer showing device temperature" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice that my temperature readings are up around the 33,000 mark? We gotta do something about that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfz5feq9acmwy0x3qwcc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfz5feq9acmwy0x3qwcc.png" alt="A chill PC" width="380" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, we’ll do the simple math - dividing our output by 1000.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  sources/linux.yml - stays the same&lt;/li&gt;
&lt;li&gt;  profiles/local-net-snmp.yml - stays the same&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our new reports/linux_temps_report.yml file becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-temp
  kind: reports
reports:
  /device/linux/temp:
    script: !starlark |
      def process(n, indexes):
        n[’CPUTemp’].value = n[’CPUTemp’].value//1000
    fields:
      CPUTemp: !snmp
        value: 1.3.6.1.4.1.2021.13.16.2.1.3.1
        metric: true
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let’s take a moment to unpack the changes to this file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  under the category /device/linux/temp, we’re going to declare a starlark script&lt;/li&gt;
&lt;li&gt;  That script is going to take (is piped - | ) a process that includes

&lt;ul&gt;
&lt;li&gt;  n, the record containing the data&lt;/li&gt;
&lt;li&gt;  indexes, the index set for the record&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  it pulls re-assigns the CPUTemp value from the record, replacing it with the original value divided by 1000

&lt;ul&gt;
&lt;li&gt;  To dig into the guts of Starlark for a moment, the two slashes (”//”) indicate “floored division” - which takes just the integer portion of the result.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  The YAML file then goes on to identify the record itself, pulling the value from the OID 1.3.6.1.4.1 (and so on).&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I’m going to re-phrase because what the file does is actually backward from what is happening:&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;script:&lt;/code&gt; block declares the process but doesn’t run it. It’s just setting the stage.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;fields:&lt;/code&gt; block is the part that identifies the data we’re pulling. Every time a machine returns temperature information (a record set), that process is run, replacing the original CPUTemp value with CPUTemp/1000.&lt;/p&gt;

&lt;p&gt;The result is an entirely different set of temperature values:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsvxgdj6bwugobkzftb7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsvxgdj6bwugobkzftb7y.png" alt="Metrics Explorer showing revised temperature metrics" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When you need a dessert topping AND a floor wax
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdm1bb83vb5n3zt2yqusv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdm1bb83vb5n3zt2yqusv.png" alt="New Shimmer meme" width="380" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sometimes, you need to do the math but also store (and display) the original value. In that case, you just need one small change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-temp
  kind: reports
reports:
  /device/linux/temp:
    script: !starlark |
      def process(n, indexes):
        n.append(’CPUTempC’, n[’CPUTemp’].value//1000, metric=True)
    fields:
      CPUTemp: !snmp
        value: 1.3.6.1.4.1.2021.13.16.2.1.3.1
        metric: true
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuo9opjg9flzpwxnmz7qe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuo9opjg9flzpwxnmz7qe.png" alt="Updated CPU temperature metrics in Celsius" width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To build on the previous example, this is what it would look like if you wanted to take that Celsius result and convert it to Fahrenheit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-tempF
  kind: reports
reports:
  /device/linux/tempF:
    script: !starlark |
      def process(n, indexes):
        n.append(’CPUTempF’, n[’CPUTemp’].value//1000*9/5+32, metric=True)
    fields:
      CPUTemp: !snmp
        value: 1.3.6.1.4.1.2021.13.16.2.1.3.1
        metric: true
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk11rphfy775vd7h4aiuj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk11rphfy775vd7h4aiuj.png" alt="Updated CPU temperature metrics in Farenheit" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s a lot more to say about (and explore with) Starlark, but I want to leave you with just a few tidbits for now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Ranger will call the process function every time the report runs.&lt;/li&gt;
&lt;li&gt;  For table-based reports, the process function will be called once for each row.

&lt;ul&gt;
&lt;li&gt;  create new records&lt;/li&gt;
&lt;li&gt;  maintain state across calls to process&lt;/li&gt;
&lt;li&gt;  combine data from multiple table rows&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  Scripts can be included in the report (as shown in this blog), or referenced as an external file:
&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;script: !external
  type: starlark
  file: test.star
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://preview--kentik-website.netlify.app/blog/adding-multiple-custom-metrics-to-kentik-nms/" rel="noopener noreferrer"&gt;In my most recent blog&lt;/a&gt; on adding custom OIDs, I showed how to add a table of values instead of just a single item. The specific use case was providing temperatures for each of the CPUs in a system.&lt;/p&gt;

&lt;p&gt;The YAML files to do that looked like this:&lt;/p&gt;

&lt;p&gt;sources/linux.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-linux
  kind: sources
sources:
  CPUTemp: !snmp
    table: 1.3.6.1.4.1.2021.13.16.2
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;reports/temp.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-temp
  kind: reports
reports:
  /device/linux/temp:
    fields:
      name: !snmp
        table: 1.3.6.1.4.1.2021.13.16.2
        value: 1.3.6.1.4.1.2021.13.16.2.1.2
        metric: false
      CPUTemp: !snmp
        table: 1.3.6.1.4.1.2021.13.16.2
        value: 1.3.6.1.4.1.2021.13.16.2.1.3
        metric: true
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;profiles/local-net-snmp.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-net-snmp
  kind: profile
profile:
  match:
    sysobjectid:
      - 1.3.6.1.4.1.8072.*
  reports:
    - local-temp
  include:
    - device_name_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Incorporating what we’ve learned in this post, here are the changes. You’ll note that I’ve renamed a few things mostly to keep these new elements from conflicting with what we created before:&lt;/p&gt;

&lt;p&gt;linux_multitemp.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: linux_multitemp
  kind: sources
sources:
  CPUTemp_Multi: !snmp
    table: 1.3.6.1.4.1.2021.13.16.2
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is effectively the same as the linux_temp.yml I re-posted from the last post. But again, I renamed the file, the metadata name, and the source name to keep things a little separate from what we’ve done.&lt;/p&gt;

&lt;p&gt;linux_multitempsc_reports.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-multitempC
  kind: reports
reports:
  /device/linux/multitempC:
    script: !starlark |
      def process(n, indexes):
        n[’CPUTemp_Multi’].value = n[’CPUTemp_Multi’].value//1000
    fields:
      CPUname: !snmp
        table: 1.3.6.1.4.1.2021.13.16.2
        value: 1.3.6.1.4.1.2021.13.16.2.1.2
        metric: false
      CPUTemp_Multi: !snmp
        table: 1.3.6.1.4.1.2021.13.16.2
        value: 1.3.6.1.4.1.2021.13.16.2.1.3
        metric: true
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The major change here is the addition of the &lt;code&gt;script&lt;/code&gt; block. The other changes are simply renaming:&lt;/p&gt;

&lt;p&gt;local_net_snmp.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-net-snmp
  kind: profile
profile:
  match:
    sysobjectid:
      - 1.3.6.1.4.1.8072.*
  reports:
    - local-temp
    - local-multitempC
  include:
    - device_name_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this file, our addition strictly includes &lt;code&gt;local-multitempC&lt;/code&gt; in the reports section.&lt;/p&gt;

&lt;p&gt;The result is a delightful blend of everything we’ve tested out so far. We have temperature values for each of the CPUs on a given system, and those values have been converted from microCelsius to Celcius.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffxzzdh3bs0gxrt1r1tv5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffxzzdh3bs0gxrt1r1tv5.png" alt="Updated temperature metrics - microCelsius to Celsius" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This post, along with all those that have come before, again highlights the incredible flexibility and capability of Kentik NMS. But there are so many more things to show! How to ingest non-SNMP data, how to add totally new device types, and how to install the NMS in the first place.&lt;/p&gt;

&lt;p&gt;Wait… THAT HASN’T BEEN COVERED YET?!?!&lt;/p&gt;

&lt;p&gt;Oof. I’d better get started writing the next post.&lt;/p&gt;

&lt;p&gt;As always, I hope you’ll stick with me as we learn more about this together. If you’d like to get started now, start a &lt;a href="https://preview--kentik-website.netlify.app/get-started/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; or &lt;a href="https://preview--kentik-website.netlify.app/get-demo/" rel="noopener noreferrer"&gt;request a personalized demo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>snmp</category>
      <category>kentik</category>
      <category>networking</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Getting to Work with Kentik NMS</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Wed, 13 Mar 2024 18:27:17 +0000</pubDate>
      <link>https://forem.com/kentik/getting-to-work-with-kentik-nms-58ek</link>
      <guid>https://forem.com/kentik/getting-to-work-with-kentik-nms-58ek</guid>
      <description>&lt;p&gt;I &lt;a href="https://www.kentik.com/blog/setting-sail-with-kentik-nms-unified-network-telemetry/" rel="noopener noreferrer"&gt;recently explored why Kentik&lt;/a&gt; built and released an all-new &lt;a href="https://www.kentik.com/product/network-monitoring-system/" rel="noopener noreferrer"&gt;network monitoring system (NMS)&lt;/a&gt; that includes traditional and more modern telemetry collection techniques, such as APIs, OpenTelemetry, and Influx.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.kentik.com/blog/getting-started-with-kentik-nms/" rel="noopener noreferrer"&gt;After that&lt;/a&gt;, I briefly covered the steps to install Kentik NMS and start monitoring a few devices.&lt;/p&gt;

&lt;p&gt;What I left out and will cover in this post is what it might look like when you have everything installed and configured. Along the way, I’ll dig a little deeper into the various screens and features associated with Kentik NMS.&lt;/p&gt;

&lt;p&gt;This raises the question, as eloquently put by &lt;a href="https://youtu.be/5IsSpAOD6K8?t=48" rel="noopener noreferrer"&gt;The Talking Heads&lt;/a&gt;, “Well, how did I get here?” Meaning: Where in this post do I explain how to install NMS?&lt;/p&gt;

&lt;p&gt;My answer, &lt;em&gt;for this moment only&lt;/em&gt;, is, “I don’t care.” &lt;a href="https://www.kentik.com/blog/getting-started-with-kentik-nms/" rel="noopener noreferrer"&gt;You can refer to the previous post&lt;/a&gt; for a walkthrough of the installation, and many “how to install Kentik NMS” knowledge articles, blog posts, music videos*, and Broadway plays are either already available or will exist by the time you finish reading this post. But for this post, I’m not going to spend a single sentence explaining how NMS is installed. My focus is entirely on the benefit and value of Kentik NMS once it’s up and running.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;* There will absolutely NOT be a music video - the Kentik legal team.&lt;br&gt;&lt;br&gt;
** OH HELL YES, WE ABSOLUTELY WILL!! - the Kentik creative marketing group (who do the final edit of blogs before they post)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And to think, your day had started so well. The sun was shining, the birds were singing, the coffee was fresh and hot, and you could feel the first flutters of hope – hope that you’d be able to get some good work done today, hope that you could take a chunk out of those important tasks, or hope that you could avoid the unplanned work of system outages.&lt;/p&gt;

&lt;p&gt;And then came the call.&lt;/p&gt;

&lt;p&gt;“The Application” was down. Nobody could get in. Nothing was working.&lt;/p&gt;

&lt;p&gt;Now, let’s be completely honest about this. “The Application” was not, in fact, down. The servers were responding, the application services were running, and so on. But, being equally honest, it was slow.&lt;/p&gt;

&lt;p&gt;As we all know, “slow” is the new “broken.” Even if it wasn’t &lt;em&gt;literally&lt;/em&gt; down, it wasn’t fully accessible and responsive, which means it was &lt;em&gt;effectively&lt;/em&gt; down.&lt;/p&gt;

&lt;p&gt;What differentiates today from all the dark days in the past is that today, you have Kentik NMS installed, configured, and collecting data – data that the Kentik platform transforms into usable information that you can use to drive action.&lt;/p&gt;

&lt;p&gt;Let’s look at “The Application” – at the data flowing across the wire:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjx5xy76ajkdcrfyu0iy4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjx5xy76ajkdcrfyu0iy4.png" alt="Application showing drop in data" width="480" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By any account, that’s pretty down-ish.&lt;/p&gt;

&lt;p&gt;The problem is that a count of the inbound and outbound data doesn’t tell us what’s wrong; it just tells us that something &lt;em&gt;is&lt;/em&gt; wrong.&lt;/p&gt;

&lt;p&gt;Likewise, the information from so-called “higher level” tools – monitoring solutions that focus on traces and such – might tell us that the flow of data has slowed or even stopped, but there’s no indication why.&lt;/p&gt;

&lt;p&gt;This is why network monitoring &lt;em&gt;still&lt;/em&gt; matters – both to you as a monitoring practitioner, engineer, and aficionado and to teams, departments, and businesses overall.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qlnsnxqq3ywzhbn6oep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qlnsnxqq3ywzhbn6oep.png" alt="Drop in ICMP packets" width="480" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see, at exactly the moment, a drop in the most basic metric of all: the ICMP packets received by the devices.&lt;/p&gt;

&lt;p&gt;Now, ICMP packets (also known as the good old “ping”) are still data, but when they’re affected equally and simultaneously with application-layer traffic, there’s a good chance the problem is network-based.&lt;/p&gt;

&lt;p&gt;What was the problem? I’ll leave it to your experience, history, and imagination to fill in the blanks. In my example above, I changed the duplex setting on one of the ports, forcing a duplex mismatch that caused every other packet (or so) to drop. But it could have been a busy network device, a misconfigured route, or even a bad cable.&lt;/p&gt;

&lt;p&gt;In terms of making the case for Kentik NMS, the upshot is that network errors still occur. Often. And application-centric tools are ill-equipped to identify them, let alone help you resolve them.&lt;/p&gt;

&lt;p&gt;Almost as fast as it started, the problem is resolved. With the duplex mismatch reversed, pings are back up to normal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flva9dnv8rmjftjdvlr6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flva9dnv8rmjftjdvlr6d.png" alt="Pings show traffic is back to normal" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the application traffic is back up with it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firbelo77d7mrvfw1hzjc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firbelo77d7mrvfw1hzjc.png" alt="Application traffic normal" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You pour yourself a fresh cup of coffee, listen to the birds chirping outside the window, and settle into what continues to look like a great day.&lt;/p&gt;

&lt;p&gt;Now that I’ve given you a reason to want to look around, I thought I’d spend some time pointing out the highlights and features of Kentik NMS so you could see the full range of what’s possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  The main NMS screen
&lt;/h3&gt;

&lt;p&gt;We’ll start at the main Kentik screen, the one you see when you log into &lt;a href="https://portal.kentik.com/" rel="noopener noreferrer"&gt;https://portal.kentik.com&lt;/a&gt;. From here, click the “hamburger” menu in the upper left corner and choose “Network Monitoring System.” That will drop you into the main dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wvgln1vmpane2x20aox.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wvgln1vmpane2x20aox.png" alt="NMS dashboard" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the main screen, you’ll see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A geographic map showing the location of your devices&lt;/li&gt;
&lt;li&gt;  A graph and a table showing the availability information for those devices&lt;/li&gt;
&lt;li&gt;  An overview of the traffic (bandwidth) being passed by/through your infrastructure&lt;/li&gt;
&lt;li&gt;  Any active alerts&lt;/li&gt;
&lt;li&gt;  Tables with a sorted list of devices that have high bandwidth, CPU, or memory utilization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Returning to the hamburger menu, we’ll revisit the “Devices” list, but now that we &lt;em&gt;have&lt;/em&gt; devices, we’ll take a closer look.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18vb0fecpvrnjx2fbjla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18vb0fecpvrnjx2fbjla.png" alt="List of devices in the Kentik platform" width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This page is exactly what it claims to be – a list of your devices. From this one screen, you have easy access to the ability to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Sort the list by clicking on the column headings.&lt;/li&gt;
&lt;li&gt;  Search for specific devices using any data types shown on the screen.&lt;/li&gt;
&lt;li&gt;  Filter the list using the categories in the left-hand column.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are also some drop-down elements worth noting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The “Group By” drop-down adds collapsable groupings to the list of devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvvs5n9b7aqt6v5qi6ty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvvs5n9b7aqt6v5qi6ty.png" alt="Dropdown menu showing Group-by dimensions" width="180" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The “Actions” drop-down will export the displayed data to CSV or push it out to Metrics Explorer for deeper analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1bnl4i5jvxet488gf5qr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1bnl4i5jvxet488gf5qr.png" alt="Actions menu" width="280" height="122"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The “Customize” option in the upper right corner lets you add or remove data columns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjflnejcd0oa3ogafom4c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjflnejcd0oa3ogafom4c.png" alt="Customize columns menu" width="250" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The friendly blue “Discover Devices” button allows you to add new devices to newly added or existing collector instances.&lt;/p&gt;

&lt;p&gt;Remember all the cool stuff I just covered about devices? The following image looks similar, except it focuses on your network interfaces.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmzb81z9q71hxde72zg3m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmzb81z9q71hxde72zg3m.png" alt="Network interfaces" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwl2nqeoby09krn34vhrx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwl2nqeoby09krn34vhrx.png" alt="Metrics Explorer" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Metrics Explorer is, in many ways, identical to Kentik’s existing &lt;a href="https://kb.kentik.com/v4/Db03.htm" rel="noopener noreferrer"&gt;Data Explorer&lt;/a&gt; capability. It’s also incredibly robust and nuanced, so much so that it deserves and will get its own dedicated blog post.&lt;/p&gt;

&lt;p&gt;For now, I will give this incredibly brief overview just to keep this post moving along:&lt;/p&gt;

&lt;p&gt;First, all the real “action” (meaning how you interact with Metrics Explorer) happens in the right-hand column.&lt;/p&gt;

&lt;p&gt;Second, it’s important to remember that the entire point of the Metrics Explorer is to help you graphically build a query of the network observability data Kentik is collecting.&lt;/p&gt;

&lt;p&gt;With those two points out of the way, the right-hand area has five primary areas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Measurement allows you to select which data elements and how they are used.

&lt;ul&gt;
&lt;li&gt;  The initial drop-down lets you select the broad category of telemetry from which your metrics will be drawn. For NMS, you will often select from either the /interfaces/ or the /device/ grouping.&lt;/li&gt;
&lt;li&gt;  Metrics indicate the data elements that should be used for the graph.&lt;/li&gt;
&lt;li&gt;  Group by Dimensions will create sub-groupings of that data on the graph. Absent any “group by,” you end up with a single set of data points across time. Grouping by name, location, etc, will create a more granular breakdown.&lt;/li&gt;
&lt;li&gt;  Merge Series is a summary option that allows you to apply sum, min, max, or average functions to the data based on the groupings.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Visualization options: This section controls how the data displays on the left.

&lt;ul&gt;
&lt;li&gt;  Chart type: Line, bar, pie, table only, etc.&lt;/li&gt;
&lt;li&gt;  Metric: The column that is used as the scale for the Y-axis.&lt;/li&gt;
&lt;li&gt;  Aggregation: Whether the graph should map every data point, an average, a sum, etc.&lt;/li&gt;
&lt;li&gt;  Sample size: When aggregating, all the data from a specific time period (from 1 to 60 minutes) will be combined.&lt;/li&gt;
&lt;li&gt;  Series count: How many items from the full data set should be displayed in the graph&lt;/li&gt;
&lt;li&gt;  Transformation: Whether to treat the data points as they are or as counters.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Time: The period of time from which to display data and whether to display time markings in UTC or “local” (the time of whatever computer is viewing the graph).&lt;/li&gt;
&lt;li&gt; Filtering: This will let you add limitations to include data that matches (or does &lt;em&gt;not&lt;/em&gt; match) specific criteria.&lt;/li&gt;
&lt;li&gt; Dimension: Non-numeric columns such as location, name, vendor, or subnet.

&lt;ul&gt;
&lt;li&gt;  Metric: Numeric data.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Table options: These set the options for the table of data that displays below the graph and lets you select how many rows and whether they’ll be aggregated by Last, Min, Max, Average, or P95 methods.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  AD&amp;amp;D: About data and device types
&lt;/h2&gt;

&lt;p&gt;After folks see how helpful Kentik can be, the next question is usually, “Will it cover &lt;em&gt;my&lt;/em&gt; gear?” While a list of vendors isn’t the same as a comprehensive list of each make and model, this is a blog post, and nobody will take that kind of time. Meanwhile, the list below should still give you a good idea of what is available out of the box. From there, modifying existing profiles to include specific metrics or even completely new devices is relatively simple.&lt;/p&gt;

&lt;p&gt;As of the time of this writing, Kentik NMS automatically collects data from devices made by the following vendors. For the legal-eagles in the group who are sensitive about trademarks, capitalization, and such, please note that this is a dump directly out of device-type directory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  3com&lt;/li&gt;
&lt;li&gt;  a10_networks&lt;/li&gt;
&lt;li&gt;  accedian&lt;/li&gt;
&lt;li&gt;  adva&lt;/li&gt;
&lt;li&gt;  alteon&lt;/li&gt;
&lt;li&gt;  apc&lt;/li&gt;
&lt;li&gt;  arista&lt;/li&gt;
&lt;li&gt;  aruba&lt;/li&gt;
&lt;li&gt;  audiocodes&lt;/li&gt;
&lt;li&gt;  avaya&lt;/li&gt;
&lt;li&gt;  avocent&lt;/li&gt;
&lt;li&gt;  broadforward&lt;/li&gt;
&lt;li&gt;  brother&lt;/li&gt;
&lt;li&gt;  calix&lt;/li&gt;
&lt;li&gt;  canon&lt;/li&gt;
&lt;li&gt;  cisco&lt;/li&gt;
&lt;li&gt;  corero&lt;/li&gt;
&lt;li&gt;  datacom&lt;/li&gt;
&lt;li&gt;  dell&lt;/li&gt;
&lt;li&gt;  elemental&lt;/li&gt;
&lt;li&gt;  exagrid&lt;/li&gt;
&lt;li&gt;  extreme&lt;/li&gt;
&lt;li&gt;  f5&lt;/li&gt;
&lt;li&gt;  fortinet&lt;/li&gt;
&lt;li&gt;  fscom&lt;/li&gt;
&lt;li&gt;  gigamon&lt;/li&gt;
&lt;li&gt;  hp&lt;/li&gt;
&lt;li&gt;  huawei&lt;/li&gt;
&lt;li&gt;  ibm&lt;/li&gt;
&lt;li&gt;  infoblox&lt;/li&gt;
&lt;li&gt;  juniper&lt;/li&gt;
&lt;li&gt;  lantronix&lt;/li&gt;
&lt;li&gt;  meraki&lt;/li&gt;
&lt;li&gt;  mikrotik&lt;/li&gt;
&lt;li&gt;  netapp&lt;/li&gt;
&lt;li&gt;  nokia&lt;/li&gt;
&lt;li&gt;  nvidia&lt;/li&gt;
&lt;li&gt;  opengear&lt;/li&gt;
&lt;li&gt;  palo_alto&lt;/li&gt;
&lt;li&gt;  pf_sense&lt;/li&gt;
&lt;li&gt;  server_iron&lt;/li&gt;
&lt;li&gt;  servertech&lt;/li&gt;
&lt;li&gt;  sunbird&lt;/li&gt;
&lt;li&gt;  ubiquiti&lt;/li&gt;
&lt;li&gt;  velocloud&lt;/li&gt;
&lt;li&gt;  vertiv&lt;/li&gt;
&lt;li&gt;  vyos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, this is just the start of your Kentik NMS journey. There is so much more to the platform, from adding custom metrics and new devices to building comprehensive dashboards that contextualize data to creating alerts that convert monitoring information into action. I will be digging into all that and more in the coming weeks and months, even as Kentik NMS continues to grow and improve.&lt;/p&gt;

&lt;p&gt;I hope you’ll stick with me as we learn more about this together. If you’d like to get started now, &lt;a href="https://www.kentik.com/get-started/" rel="noopener noreferrer"&gt;sign up for a free trial&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>observability</category>
      <category>snmp</category>
      <category>networking</category>
    </item>
    <item>
      <title>Getting Started with Kentik NMS</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Thu, 07 Mar 2024 20:54:55 +0000</pubDate>
      <link>https://forem.com/kentik/getting-started-with-kentik-nms-4p7e</link>
      <guid>https://forem.com/kentik/getting-started-with-kentik-nms-4p7e</guid>
      <description>&lt;p&gt;Kentik NMS is here to provide better network performance monitoring and observability. Read how to get started, from installation and configuration to a brief tour of what you can expect from Kentik’s new network monitoring solution.&lt;/p&gt;

&lt;p&gt;In my &lt;a href="https://www.kentik.com/blog/setting-sail-with-kentik-nms-unified-network-telemetry/" rel="noopener noreferrer"&gt;last post&lt;/a&gt;, I explored the reasons why Kentik recently built and released an all-new network monitoring system (NMS) that includes traditional techniques like SNMP along with more modern methods of collecting telemetry like APIs, OpenTelemetry, and influx.&lt;/p&gt;

&lt;p&gt;For this article, we’ll jump right into getting set up in &lt;a href="https://www.kentik.com/product/network-monitoring-system/" rel="noopener noreferrer"&gt;Kentik NMS&lt;/a&gt;, from installation and configuration to a brief tour of what you can expect from Kentik’s new network monitoring solution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpl2sae1blwelpapxdd2e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpl2sae1blwelpapxdd2e.png" alt="Network monitoring system (NMS) meme" width="380" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s nothing more frustrating than being ready to test out a new piece of technology and then finding out you’re not prepared. So before you head down to the “Installation and Configuration” section, make sure you have the following things in hand:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; A system to install the Kentik NMS collector on. The collector is an agent that can be installed directly onto a Linux-based system or as a Docker container. Per the &lt;a href="https://kb.kentik.com/v0/Bd11.htm#Bd11-NMS_Agent_Requirements" rel="noopener noreferrer"&gt;Kentik Knowledge Base&lt;/a&gt; instructions, you’ll want a system with at least a single core and 4GB of RAM.&lt;/li&gt;
&lt;li&gt; Verify the system can access the required remote sites:

&lt;ul&gt;
&lt;li&gt;  Docker Hub&lt;/li&gt;
&lt;li&gt;  TCP 443 to grpc.api.kentik.com (or kentik.eu for Europe)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Verify the system can access the devices you want to monitor:

&lt;ul&gt;
&lt;li&gt;  Ping (ICMP)&lt;/li&gt;
&lt;li&gt;  SNMP (UDP port 161)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Check that you have the following information for the devices you want to monitor:

&lt;ul&gt;
&lt;li&gt;  A list of IP addresses and/or one or more CIDR notated subnets (example: 192.168.1.0/24)&lt;/li&gt;
&lt;li&gt;  The SNMP v2c read-only community string and/or SNMP version 3 username, authentication type and passphrase, privacy type, and passphrase&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; You have a Kentik account. If you are just testing NMS out, we’d recommend &lt;em&gt;not&lt;/em&gt; using an existing production account. (Not because NMS is unsafe, but because the possibility of accidentally triggering an event that the real Helpdesk will get and think they have to respond to is no fun. Be nice to your support folks. They know where all your data is kept.) If you don’t have an account, head over to &lt;a href="https://portal.kentik.com/login" rel="noopener noreferrer"&gt;https://portal.kentik.com/login&lt;/a&gt; and get one set up.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you’ve got all of your technical ducks in a row (which, to be honest, shouldn’t take that long), you’re ready to get started on this NMS adventure!&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation and configuration
&lt;/h2&gt;

&lt;p&gt;Whether you install the Kentik NMS collector on a Linux system (physical or virtual) or in a Docker container, you’ll start in the portal. Click the “hamburger menu” (the three lines in the upper left corner), which shows the full portal menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0e2vdittn2l17a9oat8x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0e2vdittn2l17a9oat8x.png" alt="Kentik main menu" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femlqfb49ky9kqy6qpkir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femlqfb49ky9kqy6qpkir.png" alt="Discover Devices button" width="140" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click “Devices” and then select the friendly blue “Discover Devices” button in the upper right corner.&lt;/p&gt;

&lt;p&gt;The next screen allows you to install the collector, either as a Docker container:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqe4yo4jflq5xw90dpkmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqe4yo4jflq5xw90dpkmx.png" alt="Docker installation" width="800" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or on a full Linux system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wrbdrus9yvo2x2genr2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wrbdrus9yvo2x2genr2.png" alt="Linux installation" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shortly after doing that, you’ll see the agent name (or the name of the system the agent is installed on) show up in the “Select an Agent” area below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8i6oju2u5gdcm3m56x2v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8i6oju2u5gdcm3m56x2v.png" alt="Select an agent" width="800" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go ahead and click “Use this Agent.”&lt;/p&gt;

&lt;p&gt;From the next screen, you’ll enter an IP address, a comma-separated list of IPs, or a CIDR-noted range (example: 192.168.1.0/24).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxfu1w6glrx9ghw41vuo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxfu1w6glrx9ghw41vuo.png" alt="Enter IP address" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trick: You can mix and match, including individual IPs and CIDR ranges.&lt;/p&gt;

&lt;p&gt;Another trick: If there are specific systems you want to ignore, list them with a minus (-) in front.&lt;/p&gt;

&lt;p&gt;Presuming this is your first time adding devices, you’ll probably have to click “Add New Credential.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hsvomyas8cyqmmlm1ty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hsvomyas8cyqmmlm1ty.png" alt="Choose SNMP v2" width="450" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkm6a3kstru0h1dvn80r6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkm6a3kstru0h1dvn80r6.png" alt="Choose SNMP v3" width="450" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s get this out of the way: You will &lt;em&gt;never&lt;/em&gt; select SNMP v1. Just don’t.&lt;/p&gt;

&lt;p&gt;That said, choose SNMP v2c or v3, include the relevant credentials, give it a unique name, and click “Add Credential.”&lt;/p&gt;

&lt;p&gt;Then select it from the previous screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8h18khs577gyh7kau4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8h18khs577gyh7kau4j.png" alt="Credentials plus Start Discovery" width="650" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At that point, click “Start Discovery” to kick off the real excitement.&lt;/p&gt;

&lt;p&gt;The collector will start pinging devices and ensuring they respond to SNMP. Once completed, you’ll see a list of devices. You can check/uncheck the ones you want to monitor and click “Add Devices.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1pa9abd6d5qklphujih8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1pa9abd6d5qklphujih8.png" alt="Discovery complete" width="800" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The main NMS screen
&lt;/h3&gt;

&lt;p&gt;Now that we have some devices installed and are collecting data, let’s take a quick look around.&lt;/p&gt;

&lt;p&gt;Back up in the main Kentik menu, click “Network Monitoring System.” That will drop you into the main dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fetdqclhyca375ydezsoz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fetdqclhyca375ydezsoz.png" alt="Kentik Network Monitoring System dashboard" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the main screen, you’ll see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A geographic map showing the location of your devices&lt;/li&gt;
&lt;li&gt;  A graph and a table showing the availability information for those devices&lt;/li&gt;
&lt;li&gt;  An overview of the traffic (bandwidth) being passed by/through your infrastructure&lt;/li&gt;
&lt;li&gt;  Any active alerts&lt;/li&gt;
&lt;li&gt;  Tables with a sorted list of devices that have high bandwidth, CPU, or memory utilization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Returning to the hamburger menu, we’ll revisit the “Devices” list, but now that we &lt;em&gt;have&lt;/em&gt; devices, we’ll take a closer look.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7siurx3v5styyx3d3u3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7siurx3v5styyx3d3u3.png" alt="Device List" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This page is exactly what it claims to be – a list of your devices. From this one screen, you have easy access to the ability to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Sort the list by clicking on the column headings.&lt;/li&gt;
&lt;li&gt;  Search for specific devices using any data types shown on the screen.&lt;/li&gt;
&lt;li&gt;  Filter the list using the categories in the left-hand column.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are also some drop-down elements worth noting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The “Group By” drop-down adds collapsable groupings to the list of devices.&lt;/li&gt;
&lt;li&gt;  The “Actions” drop-down will export the displayed data to CSV or push it out to Metrics Explorer for deeper analysis.&lt;/li&gt;
&lt;li&gt;  The “Customize” option in the upper right corner lets you add or remove data columns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And we’re already familiar with the friendly blue “Discover Devices” button.&lt;/p&gt;

&lt;p&gt;Remember all the cool stuff I just covered about devices? The following image looks similar, except it focuses on your network interfaces.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphbe69unvfg5w1m8vbpe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphbe69unvfg5w1m8vbpe.png" alt="Interfaces list" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs2abdpu81deka2xb9ubn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs2abdpu81deka2xb9ubn.png" alt="Metrics Explorer" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Metrics Explorer is, in many ways, identical to Kentik’s existing &lt;a href="https://kb.kentik.com/v4/Db03.htm" rel="noopener noreferrer"&gt;Data Explorer&lt;/a&gt; capability. It’s also incredibly robust and nuanced. So much so that it deserves, and will get, its own dedicated blog post.&lt;/p&gt;

&lt;p&gt;For now, I will give this incredibly brief overview just to keep this post moving along:&lt;/p&gt;

&lt;p&gt;First, all the real “action” (meaning how you interact with Metrics Explorer) happens in the right-hand column.&lt;/p&gt;

&lt;p&gt;Second, it’s important to remember that the entire point of the Metrics Explorer is to help you graphically build a query of the network observability data Kentik is collecting.&lt;/p&gt;

&lt;p&gt;With those two points out of the way, the right-hand area has five primary areas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Measurement allows you to select which data elements and how they are used.&lt;/li&gt;
&lt;li&gt; Visualization options: This section controls how the data displays on the left.&lt;/li&gt;
&lt;li&gt; Time: The period of time to display data from and whether to display time markings in UTC or “local” (the time of whatever computer is viewing the graph).&lt;/li&gt;
&lt;li&gt; Filtering: This will let you add limitations so that only data that matches (or does &lt;em&gt;not&lt;/em&gt; match) certain criteria is included.&lt;/li&gt;
&lt;li&gt; Table options: These set the options for the table of data that displays below the graph and lets you select how many rows and whether they’ll be aggregated by Last, Min, Max, Average, or P95 methods.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And that ends our brief tour!&lt;/p&gt;

&lt;p&gt;We’ve only skimmed the surface of what Kentik NMS offers, but hopefully, you’re ready to start adding your own devices and interfaces. We’ll be back soon with more NMS tutorials and walkthroughs, but in the meantime, &lt;a href="https://www.kentik.com/get-started/" rel="noopener noreferrer"&gt;sign up now to get started with a 30-day free trial of Kentik&lt;/a&gt; and see &lt;a href="https://www.kentik.com/product/network-monitoring-system/" rel="noopener noreferrer"&gt;Kentik NMS&lt;/a&gt; in action yourself.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>monitoring</category>
      <category>observability</category>
      <category>snmp</category>
    </item>
    <item>
      <title>How to Configure Kentik NMS to Collect Custom SNMP Metrics</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Thu, 07 Mar 2024 20:42:50 +0000</pubDate>
      <link>https://forem.com/kentik/how-to-configure-kentik-nms-to-collect-custom-snmp-metrics-27dl</link>
      <guid>https://forem.com/kentik/how-to-configure-kentik-nms-to-collect-custom-snmp-metrics-27dl</guid>
      <description>&lt;p&gt;Out of the gate, NMS collects an impressive array of metrics and telemetry. But there will always be bits that need to be added. This brings me to the topic of today’s blog post: How to configure NMS to collect a custom SNMP metric.&lt;/p&gt;

&lt;p&gt;The recent release of &lt;a href="https://www.kentik.com/product/network-monitoring-system/" rel="noopener noreferrer"&gt;Kentik NMS&lt;/a&gt; has impressed and excited a lot of folks, as evidenced by the volume of current Kentik customers kicking the tires of our newest capability, as well as folks who hadn’t dipped their toes in the warm and welcoming waters of Kentik’s platform until they heard about NMS.&lt;/p&gt;

&lt;p&gt;Out of the gate, NMS collects an impressive array of metrics and telemetry. But that doesn’t mean it knows about absolutely everything. No matter how diligently Kentik’s engineers work to incorporate devices and data points (both new and old), there will always be bits that need to be added.&lt;/p&gt;

&lt;p&gt;Not only is it impossible for any monitoring and observability solution to know about every possible data point, but making a tool collect “every” metric would cause it to be unreasonably slow.&lt;/p&gt;

&lt;p&gt;The goal, instead, is to collect all the telemetry commonly needed and provide the ability to extend the tool to collect other metrics specific to each company’s circumstances.&lt;/p&gt;

&lt;p&gt;This brings me to the topic of today’s blog post: How to configure NMS to collect a custom SNMP metric.&lt;/p&gt;

&lt;p&gt;Imagine sitting at your desk, monitoring your little heart out with Kentik NMS. Even the Raspberry Pi boxes you’re using for small but essential tasks are showing up. Things are looking great.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvn4tpxu7tmtjte7v8i0s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvn4tpxu7tmtjte7v8i0s.png" alt="Raspberry Pi device" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Until you realize two things in quick succession:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Those Raspberry Pi’s are warm enough to heat up a slice of… well, actual raspberry pie.&lt;/li&gt;
&lt;li&gt; Temperature stats aren’t showing up.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnm5dj3ln7nyaqi33i6xi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnm5dj3ln7nyaqi33i6xi.png" alt="Raspberry Pi temperature showing no data" width="700" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To be clear, I’m using temperature as a simple but common example. It could just as easily be toner status on a printer or a list of services running on a server, complete with CPU, RAM, and IO utilization for each service. What I’m about to explain is how to include &lt;em&gt;any&lt;/em&gt; new SNMP metric, irrespective of data type or vendor.&lt;/p&gt;

&lt;p&gt;With those clarifications out of the way, let’s add some temperature stats to our view to see whether we should stock up on fire extinguishers.&lt;/p&gt;

&lt;p&gt;Before we start making changes, I want to go over the information you need at your fingertips.&lt;/p&gt;

&lt;p&gt;First and foremost, you need to have the SNMP objects (OIDs) that get the data you want, and you should be certain the device responds to those objects in the way you expect.&lt;/p&gt;

&lt;p&gt;In my case, the OID I want is: &lt;code&gt;1.3.6.1.4.1.2021.13.16.2.1.3.1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;There are lots of sources for OID information; one such source is &lt;a href="https://oidref.com/" rel="noopener noreferrer"&gt;https://oidref.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To validate that my device responds correctly, I can use the SNMPWalk utility to poll just that value:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fvdv1z19b4jlngtsg1a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fvdv1z19b4jlngtsg1a.png" alt="SNMPWalk Utility" width="780" height="102"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we have our OID and we’ve confirmed it works on the device in question, our last step is to ensure we understand how this value is formatted. In this case, it’s in “milli-Celsius,” so 39166 is actually 39.1 degrees Celsius (or 102.38 degrees Fahrenheit).&lt;/p&gt;

&lt;p&gt;Finally, I have to understand the SNMP system object (sysobjectid) of the device to which I want to add my data. You can find that by going into Kentik’s portal, visiting the Devices page, and adding the SysObjectID column.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92z0rqh0muwh3ti1jhw2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92z0rqh0muwh3ti1jhw2.png" alt="Device list showing additional column" width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or if you go to the details page for a specific device and view it in the left-hand column:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6gld4o9pv3qa1j3tses.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6gld4o9pv3qa1j3tses.png" alt="Raspberry Pi details" width="380" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that what I’ll be using for this example is &lt;code&gt;1.3.6.1.4.1.8072.3.2.10&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note that this will affect any Linux-based system because Raspberry Pis don’t have their own unique system ID.&lt;/p&gt;

&lt;p&gt;Now we’re ready to get this value added and displayed in Kentik NMS!&lt;/p&gt;

&lt;p&gt;I’m not going to hide the important information behind a wall of step-by-step text. This section is the straightforward, simple, direct answer. But it lacks context and detail and, therefore, might not make much sense. That’s what the rest of this post is about. But for those who want to get right to the point:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Customizations to Kentik NMS all go in &lt;code&gt;/opt/kentik/components/ranger/local/config&lt;/code&gt;. Whether you are adding a custom OID, overwriting an existing OID with a new source (not covered in this post), or adding a new device type (also not covered in this post), it all goes there.

&lt;ul&gt;
&lt;li&gt;  This directory &lt;em&gt;might&lt;/em&gt; already exist. If it doesn’t, go ahead and create it yourself.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; In that directory, create three directories:

&lt;ol&gt;
&lt;li&gt; /profiles&lt;/li&gt;
&lt;li&gt; /reports&lt;/li&gt;
&lt;li&gt; /sources&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt; In sources/, create linux-temps_source.yml and add the following information:
&lt;/li&gt;

&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-linux
  kind: sources
sources:
  CPUtemp: !snmp
    value: 1.3.6.1.4.1.2021.13.16.2.1.3.1
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; In reports/, create linux_temps_report.yml and add the following information:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-temp
  kind: reports
reports:
  /device/linux/temp:
    fields:
      CPUTemp: !snmp
        value: 1.3.6.1.4.1.2021.13.16.2.1.3.1
        metric: true
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; In profiles/, create a file named local-net-snmp.yml and add the following information:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-net-snmp
  kind: profile
profile:
  match:
    sysobjectid:
      - 1.3.6.1.4.1.8072.*
  reports:
    - local-temp
  include:
    - device_name_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; Make the user:group “kentik:kentik” the owner of everything you just created and all the files and directories beneath it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;sudo chown -R kentik:kentik&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;/opt/kentik/components/ranger/local/config&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note: This is only necessary if you’re running the Kentik NMS agent on a regular Linux system whether it’s a VM or not. This isn’t necessary for Docker-based agents, but I’ll explicitly cover that in a later section.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Restart the collector process (kagent):&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;sudo systemctl restart kagent.service&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Wait a polling cycle or two, and you’ll be able to see it in the Metrics Explorer:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvukqqf4jrvjm0ucuug2x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvukqqf4jrvjm0ucuug2x.png" alt="Metrics Explorer showing temperature" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The previous section presented a lot of information in a very tight package. It was probably just enough for folks who are already familiar with NMS and its internal structures. But if you’re newer to the platform, you may be looking for additional information, detail, or context. That’s what I plan to present in the rest of this post.&lt;/p&gt;

&lt;p&gt;Kentik NMS is, at its heart, a straightforward set of processes and directories. When you install it, all the essential files will be located in &lt;code&gt;/opt/kentik/components/ranger/current&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxl9056a7pe7ek0pvbf4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxl9056a7pe7ek0pvbf4.png" alt="Install location" width="580" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The LATEST.ZIP file contains all of the device profiles and information needed to collect data from those devices. The beauty of this system is that NMS works with LATEST.ZIP as-is, without unpacking or unzipping it. Every time you restart the Kentik agent (kagent), it checks for a newer version and downloads it if necessary. So you’re guaranteed to get all the latest updates and goodies without any special upgrade process.&lt;/p&gt;

&lt;p&gt;Note: Sharp-eyed Linux-literate readers will notice that “current” is actually a symbolic link to the latest version. This is important because if you make changes here, you’ll find those changes inexplicably lost after the next update.&lt;/p&gt;

&lt;p&gt;Upshot: Avoid future headaches. Don’t make changes in this directory.&lt;/p&gt;

&lt;p&gt;If you &lt;em&gt;did&lt;/em&gt; unpack LATEST.ZIP (but, as I said, &lt;em&gt;don’t&lt;/em&gt;), you’d find a specific directory structure underneath it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47c3ripd837e9fnpwo5a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47c3ripd837e9fnpwo5a.png" alt="Directory structure" width="480" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The key directories there are Profiles, Reports, and Sources. Each one contains a set of YAML files defining an aspect of the collected data.&lt;/p&gt;

&lt;p&gt;Important note: The names of the files aren’t important. What matters is the information you provide in the &lt;code&gt;name:&lt;/code&gt; element within each YAML file. That will allow you to connect or associate a profile to a report, a report to a source, and so on.&lt;/p&gt;

&lt;p&gt;A source tells Kentik NMS about one or more OIDS to collect. Here’s an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-linux
  kind: sources
sources:
  temp: !snmp
    value: 1.3.6.1.4.1.2021.13.16.2.1.3.1
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This file can be understood as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A source named “local-linux”&lt;/li&gt;
&lt;li&gt;  The type (or kind) of file is a “source” (there are others, which you’ll understand in a minute)&lt;/li&gt;
&lt;li&gt;  The collection method is SNMP&lt;/li&gt;
&lt;li&gt;  The SNMP object (OID) to collect is &lt;code&gt;1.3.6.1.4.1.2021.13.16.2.1.3.1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  That value should be collected every 60 seconds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Files in the Report folder tell Kentik NMS how to display a specific OID within the Metrics Explorer. There are several elements that repeat the things in the Source file, but – for reasons beyond the scope of this post – they’re necessary in both files.&lt;/p&gt;

&lt;p&gt;Here’s an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-temp
  kind: reports
reports:
  /device/linux/temp:
    fields:
      CPUTemp: !snmp
        value: 1.3.6.1.4.1.2021.13.16.2.1.3.1
        metric: true
    interval: 60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This information can be parsed as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The name of this report is local-temp&lt;/li&gt;
&lt;li&gt;  The type (or “kind”) of file is – somewhat obviously – a report&lt;/li&gt;
&lt;li&gt;  Within Metrics Explorer, the data being collected will show up under /device/linux/temp&lt;/li&gt;
&lt;li&gt;  The data elements that will be available in Metrics Explorer is “CPUTemp,” which is an SNMP data element

&lt;ul&gt;
&lt;li&gt;  This element will contain the data collected by the SNMP OID &lt;code&gt;1.3.6.1.4.1.2021.13.16.2.1.3.1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Which is a metric rather than a table or some other type of data structure.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  The data will be displayed in 60-second increments.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Profiles associate specific reports with the device types (as identified by their SNMP System Object ID, or sysobjectid) and also mention common data elements (like name, or IP) that should be associated with the data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 1
metadata:
  name: local-net-snmp
  kind: profile
profile:
  match:
    sysobjectid:
      - 1.3.6.1.4.1.8072.*
  reports:
    - local-temp
  include:
    - device_name_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One more time, let’s parse this out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The name of the profile is local-net-temp&lt;/li&gt;
&lt;li&gt;  The type (or kind, there’s that word again) of the file is a profile&lt;/li&gt;
&lt;li&gt;  This profile applies to anything with an SNMP SysObjectID starting with &lt;code&gt;1.3.6.1.4.1.8072.*&lt;/code&gt; (this means most Linux-type machines that run net-SNMP).&lt;/li&gt;
&lt;li&gt;  Devices that match this profile will collect data found in the Report file with a name: element “local-temp.”&lt;/li&gt;
&lt;li&gt;  The device name and IP data should be included along with the data in the local-temp report and associated source.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may have noticed that the &lt;code&gt;kind&lt;/code&gt; element in all three files above identifies the file type and matches the file’s directory. If you have a nagging suspicion that the directory structure matches up with the Kind label, you are right.&lt;/p&gt;

&lt;p&gt;In fact, you don’t &lt;em&gt;actually&lt;/em&gt; need the directories. You could put all your files in a single folder, and as long as the Kind: value was correct, everything would match up. We here at Kentik encourage you to use the three-directory approach because it makes organizing, tracking, and maintaining a large number of profiles much easier in the long run.&lt;/p&gt;

&lt;h3&gt;
  
  
  Possession is 9/10ths of the law and 10/10ths of Linux permissions
&lt;/h3&gt;

&lt;p&gt;Once all your files are in place, it’s important to ensure Kentik can access them. This comes down to giving ownership to both the “kentik” user and the “kentik” group.&lt;/p&gt;

&lt;p&gt;Remembering that all of your customizations will go in the folder &lt;code&gt;/opt/kentik/components/ranger/local/config&lt;/code&gt; we need to make sure everything you just created will be owned by the kentik user and group. The command to give ownership would be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chown -R kentik:kentik /opt/kentik/components/ranger/local/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: This is only necessary if you’re running the Kentik NMS agent on a regular Linux system, whether it’s a VM or not. This isn’t necessary for docker-based agents, but I’ll explicitly cover that in a later section.&lt;/p&gt;

&lt;p&gt;Finally, restart the collector process (kagent):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl edit kagent.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait a polling cycle or two, and you’ll be able to see it in the Metrics Explorer:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvukqqf4jrvjm0ucuug2x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvukqqf4jrvjm0ucuug2x.png" alt="Metrics Explorer showing temperature" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Throughout this post, I’ve focused on the commands and options for the direct installation of the Kentik agent. If you’re running the containerized version, very little changes, but it’s still worth running through those differences for folks who prefer the Docker version of the Kentik NMS collector.&lt;/p&gt;

&lt;p&gt;Before we move on, I don’t want to presume that every reader is already familiar – let alone comfortable – with Docker and its basic commands. Here are a few that you might need.&lt;/p&gt;

&lt;p&gt;You can see which containers are running (along with their container IDs) with the following command:&lt;/p&gt;

&lt;p&gt;You can see an output of what a Docker container is doing with this command (you get the container ID with the docker ps command):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker logs –follow &amp;lt;container id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, if you have issues with any containers, including the command to build or run the New Relic agent, you can easily stop and remove a container with these commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker stop &amp;lt;container id&amp;gt;
docker rm &amp;lt;container id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the Docker version of Kentik NMS, you will need to mount your custom folder into the container and add that path to the Kentik agent command line. What is that custom folder, you ask? If you’ve been paying attention, you can probably already guess:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/opt/kentik/components/ranger/local/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s right, it’s the same folder we’ve already been working with.&lt;/p&gt;

&lt;p&gt;Starting with the “docker run” command that you used to install the container in the first place:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --name=kagent --detach --restart unless-stopped --pull=always --cap-add NET_RAW --env K_COMPANY_ID=1234567 --env K_API_ROOT=grpc.api.kentik.com:443 --mount source=kagent-data,target=/opt/kentik/ kentik/kagent:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You would simply add&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-v /opt/kentik/components/ranger/local/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;…to the end of that command.&lt;/p&gt;

&lt;p&gt;The full command would look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --name=kagent --detach --restart unless-stopped --pull=always --cap-add NET_RAW --env K_COMPANY_ID=1234567 --env K_API_ROOT=grpc.api.kentik.com:443 --mount source=kagent-data,target=/opt/kentik/ kentik/kagent:latest -v /opt/kentik/components/ranger/local/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it! Everything else in this post still applies, and you don’t even need to run the chown command to ensure ownership of that directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting and other swear words
&lt;/h2&gt;

&lt;p&gt;Despite our best efforts, careful planning, detailed analysis, and heartfelt prayers – even with all that, things sometimes go awry. As the philosopher John Bender said in the profoundly philosophical work &lt;em&gt;The Breakfast Club&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;“Screws fall out all the time; the world is an imperfect place.”&lt;/p&gt;

&lt;p&gt;With that great truth firmly in mind, I wanted to offer some tools and techniques you can use to identify where things may have gone off the rails.&lt;/p&gt;

&lt;p&gt;YAML stands for “yet another markup language,” which, like most acronyms, tells you exactly &lt;em&gt;nothing&lt;/em&gt; about it. YAML is similar in many ways to XML or JSON, an insight that provides little comfort to many of us who have an emotionally complicated relationship with those other two systems.&lt;/p&gt;

&lt;p&gt;My personal trauma aside, YAML is great for configuration files because it’s highly structured. But for that same reason, it can be easy to bork something up because of a small (and hard-to-find) oversight. Here are the ones that might trip you up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Everything you do in a YAML file will be in the form of a pair of information that follows the pattern: “key: value”

&lt;ul&gt;
&lt;li&gt;  Some examples:

&lt;ul&gt;
&lt;li&gt;  name: local-temp&lt;/li&gt;
&lt;li&gt;  kind: profile&lt;/li&gt;
&lt;li&gt;  interval: 60s&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;  Underscores, dashes, or spaces can separate words in keys.&lt;/li&gt;

&lt;li&gt;  A key will always end with a colon (:)&lt;/li&gt;

&lt;li&gt;  Indentation in the file matters!

&lt;ul&gt;
&lt;li&gt;  You must have them.&lt;/li&gt;
&lt;li&gt;  There must be a certain number of spaces.&lt;/li&gt;
&lt;li&gt;  Indents must use spaces. They can not be tabs.&lt;/li&gt;
&lt;li&gt;  Things that are on the same level (“name” and “kind,” for example) must line up with the &lt;em&gt;same&lt;/em&gt; number of spaces.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Sometimes, the Kentik agent needs a good swift kick in the… process. To do that, you can use the systemctl utility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;sudo systemctl stop kagent.service&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;sudo systemctl start kagent.service&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;sudo systemctl restart kagent.service&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Linux journal isn’t some specialized magazine or email newsletter. It’s the onboard record of every outbound message, error, update, whine, sigh, and grumble that your Linux system experiences – especially when it concerns services that run through the systemctl utility.&lt;/p&gt;

&lt;p&gt;The command to peer inside the Journal is, appropriately enough, journalctl. But typing that by itself will likely yield a metric tonne of mostly irrelevant information. In order to see messages and output specific to Kentik NMS, you should use the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo journalctl -u kagent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If that list is overwhelming, include the following bit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo journalctl -u kagent –since "10 minutes ago"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if you want to see the messages appearing in the Journal in real time, use this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo journalctl -u kagent -f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is more – a whole lot more! – to explore with Kentik NMS, including ways to add SNMP table data, create profiles for completely new device types, and even add data that isn’t coming from SNMP in the first place.&lt;/p&gt;

&lt;p&gt;Even so, this post should get you moving ahead in collecting those bits of information you know are available on your devices but aren’t collected by default by Kentik NMS today.&lt;/p&gt;

&lt;p&gt;To get started with Kentik NMS, &lt;a href="https://www.kentik.com/get-started/" rel="noopener noreferrer"&gt;sign up for a free 30-day trial&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>snmp</category>
      <category>monitoring</category>
      <category>networking</category>
      <category>kentik</category>
    </item>
    <item>
      <title>Setting Sail with Kentik NMS: Unified Network Telemetry</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 04 Mar 2024 15:00:00 +0000</pubDate>
      <link>https://forem.com/kentik/setting-sail-with-kentik-nms-unified-network-telemetry-2ke3</link>
      <guid>https://forem.com/kentik/setting-sail-with-kentik-nms-unified-network-telemetry-2ke3</guid>
      <description>&lt;p&gt;Kentik NMS has launched and is setting sail in familiar waters. Monitoring with SNMP and streaming telemetry is only the first leg of the journey. In short order, we’ll unfurl additional options, increasing NMS’s velocity and maneuverability.&lt;/p&gt;

&lt;p&gt;So you may have heard by now that Kentik has released a &lt;a href="https://www.kentik.com/product/network-monitoring-system/" rel="noopener noreferrer"&gt;network monitoring system&lt;/a&gt;, commonly known as an “NMS,” in the smoky rooms of observability aficionados. This is more than just a cute little add-on to our robust flow-based monitoring capabilities. This is a stem-to-stern product that could stand alone if we wanted it to.&lt;/p&gt;

&lt;p&gt;But the question that arises in many people’s minds, like the first light peeking over a distant horizon, is: Why?&lt;/p&gt;

&lt;p&gt;Why, when the discipline of network monitoring is solidly into its third decade, would we think their shores are yet uncharted?&lt;/p&gt;

&lt;p&gt;More to the point, is Kentik trying to imply that – in this age of ubiquitous cloud, containers, microservices, and APIs – the regular old route-and-switch network even matters anymore?&lt;/p&gt;

&lt;p&gt;Given that we’re releasing Kentik NMS, the answer is obviously “yes.” But in this blog post, I need to get at why we’re doing it. Besides, you know, “customers keep asking for it” (although, admittedly, that is a pretty good reason).&lt;/p&gt;

&lt;p&gt;First, traditional monitoring still matters. Hardware — both in terms of availability and performance — still matters. On-premises systems still matter. And “the network” - meaning anything from bare metal packet pushers in a closet all the way up to a Kubernetes cluster in the cloud — matters.&lt;/p&gt;

&lt;p&gt;All of those things I’ve just named, along with a myriad of other infrastructure elements, are still critical components for organizations large and small. Being able to collect telemetry and visualize it effectively, turning data into information that drives action, is a core capability for any — and every — business.&lt;/p&gt;

&lt;p&gt;Second, the people responsible for running and maintaining their networks keep telling us that the current set of solutions on the market have either failed to keep up or that the cost of keeping up is so high their speed of adoption is unacceptably slow.&lt;/p&gt;

&lt;p&gt;Before you interpret what I just said as an insult to existing vendors, let me be clear: I have a tremendous amount of respect for and even love the existing monitoring tools on the market. They do many things well, and in some cases, they were the first to do those things. They blazed trails, educated consumers, and established whole markets and sub-specialties within IT.&lt;/p&gt;

&lt;p&gt;But pivoting an entire product line is almost impossibly complicated. An established tool has existing customers who cannot be abandoned, which means keeping the current solutions more or less the same. Adding new capabilities is predicated on the ability of the tool to accommodate those new functions without breaking existing ones.&lt;/p&gt;

&lt;p&gt;For example, let’s look at collecting network metrics via API rather than a more traditional method like using &lt;a href="https://www.kentik.com/blog/the-benefits-and-drawbacks-of-snmp-and-streaming-telemetry/" rel="noopener noreferrer"&gt;SNMP&lt;/a&gt;. And please understand the irony of calling SNMP “traditional” versus APIs when network devices have included API options for the better part of a decade.&lt;/p&gt;

&lt;p&gt;While it’s been possible to collect data from hardware via API calls for quite some time, precious few network monitoring tools support this capability or do it particularly well. To be sure, the solutions that focus on application monitoring do it better, but even there, it’s in the context of the application rather than hardware.&lt;/p&gt;

&lt;p&gt;The reason for this isn’t because monitoring solutions vendors are lazy or uninspired. It’s that the work of adding an API collector is hard; different vendors have implemented API interfaces in just a different enough way to create additional hurdles, and normalizing the API data with the other telemetry presents its own hurdles.&lt;/p&gt;

&lt;p&gt;This difficulty stems from the fact that hardware didn’t support APIs when the tools were conceived and written.&lt;/p&gt;

&lt;p&gt;And if all of that is true for a 10-year-old technology like REST-ful APIs, how much more so is it true for OpenTelemetry and its Cisco-specific cousin, streaming telemetry?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4ps3pq5nihz5f7rg1oc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4ps3pq5nihz5f7rg1oc.png" alt="Kentik Network Monitoring System dashboard" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kentik NMS in action&lt;/p&gt;

&lt;p&gt;All of this is my way of saying that Kentik realized the world needed a new NMS because:&lt;br&gt;&lt;br&gt;
A) That data still matters, and&lt;br&gt;&lt;br&gt;
B) Creating an NMS from the ground up was actually easier than bolting additional capabilities onto an existing tool.&lt;/p&gt;

&lt;p&gt;This brings us to the point we find ourselves at today: &lt;a href="https://www.kentik.com/blog/reinventing-network-monitoring-and-observability-with-kentik-ai/" rel="noopener noreferrer"&gt;Kentik NMS has launched&lt;/a&gt; and is setting sail in familiar waters. Monitoring with SNMP and streaming telemetry is only the first leg of the journey. In short order, we’ll unfurl additional options, increasing NMS’s velocity and maneuverability.&lt;/p&gt;

&lt;p&gt;So, now that the ship has set sail, I hope you &lt;a href="https://www.kentik.com/get-started/" rel="noopener noreferrer"&gt;come aboard&lt;/a&gt; and have a look around.&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>observability</category>
      <category>networking</category>
    </item>
    <item>
      <title>Alerts Should Work for You, Not the Other Way Around</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Wed, 15 Nov 2023 20:17:04 +0000</pubDate>
      <link>https://forem.com/kentik/alerts-should-work-for-you-not-the-other-way-around-2961</link>
      <guid>https://forem.com/kentik/alerts-should-work-for-you-not-the-other-way-around-2961</guid>
      <description>&lt;p&gt;“A few years back, I was tuning an alert rule and accidentally triggered the alert, which created 772 tickets. Twice.”&lt;/p&gt;

&lt;p&gt;This (all too true) story serves as the introduction of the main thesis of my talk in the video below (and the reason for its title): That alerts — contrary to the popular opinion held by IT practitioners across the spectrum of tech — don’t inherently suck. The problem lies in how alerts are typically created, which causes them to be… well, let’s just say “sub-optimal” and leave it at that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fast.wistia.net/embed/iframe/cdb46q0i30" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkyjy12kfafai8e9wwuk6.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve given this talk frequently at conferences such as &lt;a href="https://www.youtube.com/watch?v=vtE-TFblEgE" rel="noopener noreferrer"&gt;DevOpsDays BRUM&lt;/a&gt;, &lt;a href="https://www.youtube.com/watch?v=9_-4ni7ncuw" rel="noopener noreferrer"&gt;DevOpsDays TLV&lt;/a&gt;, &lt;a href="https://vimeo.com/channels/1848325/843992066" rel="noopener noreferrer"&gt;Monitorama&lt;/a&gt;, and others. I believe its popularity is largely due to its fun approach to a frustrating issue.&lt;/p&gt;

&lt;p&gt;I’d like to take a few moments of your time here to emphasize points I make in the talk, but then extend those ideas in ways that don’t fit the limitations of time or format common in conference presentations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The slippery slope to “Monitoring Engineer”
&lt;/h2&gt;

&lt;p&gt;If you’ve read this far, there’s a good chance you care about alerts for more than just your own personal reasons. You probably have people — whether on your immediate team or in the larger organization — who look to and rely on you for help designing, implementing, maintaining, and fixing alerts.&lt;/p&gt;

&lt;p&gt;While most of us first encounter monitoring solutions because we want to know more about our own sh… tuff, it quickly follows that we’re helping others set up monitoring for themselves. Before long, we found ourselves in the “resident expert” role. Once that reputation gets around, the job (whether official or not) is irrevocably added to our responsibilities.&lt;/p&gt;

&lt;p&gt;The good news is that this is a huge opportunity for those who enjoy the work. Monitoring is an undeniable game-change in organizations willing to embrace and use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alerts ≠ Monitoring
&lt;/h2&gt;

&lt;p&gt;One of my first encounters with alerting that was completely off the rails was at a company that defined uptime as “100% minus the # of alerts” in a given period. It was utterly unhinged.&lt;/p&gt;

&lt;p&gt;While it was an extreme example, the underlying issue — confusing alerting with monitoring — isn’t rare at all. For many individuals (and teams, departments, and entire companies), the raison d’être for monitoring is to have alerts, which is simply not helpful or effective.&lt;/p&gt;

&lt;p&gt;Monitoring is nothing more (and nothing less) than the consistent, persistent collection of data from a set of systems. Everything else that a monitoring and observability solution provides — dashboards, widgets, reports, automation, and alerts — is merely a happy by-product of having monitoring in the first place.&lt;/p&gt;

&lt;p&gt;As a monitoring engineer, I know something is amiss when I see people hyper-focusing on alerts to the exclusion (if not the detriment) of monitoring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alerts need proof of their value
&lt;/h2&gt;

&lt;p&gt;An alert should only exist if it has a proven, measurable, meaningful impact. The best way to validate that is to see if an alert is intended to cause&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  someone&lt;/li&gt;
&lt;li&gt;  to do something&lt;/li&gt;
&lt;li&gt;  RIGHT. NOW.&lt;/li&gt;
&lt;li&gt;  about a problem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If all of those conditions aren’t met, you’re looking at an alert that is trying to replace some other monitoring structure — a dashboard, a report, etc.&lt;/p&gt;

&lt;p&gt;But that merely proves that an alert is actionable, not valuable. And I must be clear: “important” isn’t the same as “valuable.” Importance implies that it is technically, intellectually, or (believe it or not) emotionally meaningful to some person or group.&lt;/p&gt;

&lt;p&gt;“Valuable” is much more particular: The existence of the alert can be directly tied to a financial outcome.&lt;/p&gt;

&lt;p&gt;How does one establish this? Start with what the world would look like without the alert:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  How would the people who can fix the issue find out about the problem? And more to the point, how LONG would it take for the people who can resolve the issue to find out?&lt;/li&gt;
&lt;li&gt;  Are there any inherent losses while the problem is happening? An online sales system that generates $1,000 an hour loses that amount every hour it’s unavailable.&lt;/li&gt;
&lt;li&gt;  How long would it take to fix the problem? In some cases, it’s the same amount of time, alert or not. But in far more circumstances, if the problem were left unaddressed for the length of time identified in the first bullet, it would take longer (possibly significantly longer) to resolve.&lt;/li&gt;
&lt;li&gt;  What is the regular (“total loaded”) rate for the staff who can fix the issue?&lt;/li&gt;
&lt;li&gt;  What is the “interruption cost” for that staff? This means the staff is (ostensibly) not sitting around waiting for this particular error. So what is the value of their normal work? Because they will NOT be doing it during the time they are addressing this issue.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You are welcome to take the formula above and, as the saying goes, “salt to taste.”&lt;/p&gt;

&lt;p&gt;Once you have this, recalculate all of the above WITH the alert. The difference between the first calculation and the second is the dollar value of the alert.&lt;/p&gt;

&lt;p&gt;Now, you can set up a simple report showing the number of occurrences the alert triggered, multiplied by the value. That is the amount this one alert has saved the company during that time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability enables us to change our focus
&lt;/h2&gt;

&lt;p&gt;Back when I started working with monitoring solutions (yeah, yeah, Grampa. When dinosaurs ruled the earth and you had to chisel each bit into the hard drive by hand with a lodestone), we had to guess at the user’s experience from an array of much lower-level data. We’d look at network traffic, disk I/O, server connections, and other metrics and use those metrics to guess what was happening at the top of the OSI model.&lt;/p&gt;

&lt;p&gt;We didn’t do it because we thought it was the best option. We did it because it was the ONLY option. Tracing didn’t really come onto the scene — in terms of true application monitoring - until 2010. And it only took hold because of the fundamental change in application architecture.&lt;/p&gt;

&lt;p&gt;The widespread adoption of cloud computing (AWS EC2 went GA in 2006) and mobile phones (the first iPhone came on the scene in 2007) radically changed how we interacted with applications. Facebook had an unbelievable (for the time) 600 million users in 2010. That number grew to 800 million in 2011 and over 1 billion in 2012.&lt;/p&gt;

&lt;p&gt;Against THAT backdrop, application tracing and real user monitoring went from something we could only do in carefully controlled QA environments to a technique that was not only possible but game-changing.&lt;/p&gt;

&lt;p&gt;Because the entire reason we have monitoring — the whole damn point — is to understand what users are experiencing with an application. That’s it. That’s the whole enchilada.&lt;/p&gt;

&lt;p&gt;So, I will go on record as saying that alerting should focus on that aspect first and foremost. If the user experience is impacted, sound the alarm and get people out of bed if necessary.&lt;/p&gt;

&lt;p&gt;At that point, all the other telemetry - metrics, events, and logs - can be used to understand the details of the impact. But those lower-level data points no longer have to be the trigger point for alerts. Not in most cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where do we go from here?
&lt;/h2&gt;

&lt;p&gt;Hopefully, you have enough time between this blog and my talk to reflect on your existing alerts with an eye toward real improvement. You may find yourself deleting alerts you once thought essential. You will also undoubtedly spend time tweaking your alerts to make them more actionable, meaningful, and valuable.&lt;/p&gt;

&lt;p&gt;Just ensure you don’t trigger an alert storm in the process, or you’ll end up in the helpdesk, manually closing 1,544 tickets.&lt;/p&gt;

&lt;p&gt;Don’t ask me how I know.&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>observability</category>
      <category>alerts</category>
    </item>
    <item>
      <title>Lessons From a Six-Month Job Search</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 13 Nov 2023 19:27:30 +0000</pubDate>
      <link>https://forem.com/kentik/lessons-from-a-six-month-job-search-19od</link>
      <guid>https://forem.com/kentik/lessons-from-a-six-month-job-search-19od</guid>
      <description>&lt;p&gt;Now that I’m free to &lt;a href="https://www.linkedin.com/posts/leonadato_im-happy-to-share-that-im-starting-a-new-activity-7123039211913445376-Ih-4" rel="noopener noreferrer"&gt;share the news&lt;/a&gt; that I’ve landed at &lt;a href="https://kentik.com" rel="noopener noreferrer"&gt;Kentik&lt;/a&gt; – a visionary company filled by an amazing group of folks who believe that the value of their team goes far beyond what they might offer to the business – I wanted to take a minute to reflect on my job search, comment on the state of the job market, and share some lessons I’ve picked up along the way.&lt;/p&gt;

&lt;p&gt;Let me be clear – I’m under no illusion that the world has breathlessly awaited the thoughts of a middle-age white dude and will now, graced with my heretofore-undiscovered wisdom, be a truly better place. People with far more knowledge, experience, and expertise have written and spoken on this topic, with data and examples that are far more eloquent and compelling than anything I could hope to share.&lt;/p&gt;

&lt;p&gt;No, my point in sharing this is to offer what little confirmation and comfort I can to anyone currently looking for work too. Confirmation that the job market is really, REALLY challenging right now. And comfort that the rejections and (possibly worse) the ghostings you’re getting daily are both common in this current trend, and also not at all a reflection on you, your skills, your experience, your value to a business, or your worth as a person.&lt;/p&gt;

&lt;p&gt;I’ll be blunt and honest: As a white (or at least white-passing), cis-gendered, heterosexual, middle aged man with over 35 years of industry experience, I have literally every ounce of privilege a human body can contain – with the possible exception that I’m not the son of a CEO, and will inherit the company some day.&lt;/p&gt;

&lt;p&gt;Despite all those advantages, it took me six months of solid searching to find my next gig. Even when you take into account that the job I was seeking (Developer Relations Advocate) is less common than, say, a staff developer or sales engineer, it’s still a significant span of time to finding a job.&lt;/p&gt;

&lt;p&gt;Now, when I say it’s a “bad” job market, I want to offer some qualifiers only time and experience can bring: It’s not the 2009 “the housing market just crashed and we’re in the Great Recession” bad. It’s not the 2002 “the dot-com bubble just burst” bad, either. If we’re really trying to find the low water mark, it’s also not as bad as the 1973-1975 US recession, let alone the Great Depression.&lt;/p&gt;

&lt;p&gt;But playing the “back in my day” game is cold comfort to anyone looking for a new job in the here-and-now, whether by choice or due to one of the far-too-common layoffs playing havoc with the tech industry right now.&lt;/p&gt;

&lt;p&gt;At the same time, the context offers some reassurances: Yes, it’s bad. No, it’s not the worst ever seen. And in those other cases, the economy and job market bounced back.&lt;/p&gt;

&lt;p&gt;While financial analysts will tell you it took 15 years for the NASDAQ to recover from the 2000 dot com bubble, most folks in tech will say that the job market cleared up in about 8 to 18 months, depending on where you lived and what you did.&lt;/p&gt;

&lt;p&gt;The market recovered from the 2009 housing market crash that triggered the Great Recession in about 4 years. Employers began adding jobs a year after that.&lt;/p&gt;

&lt;p&gt;Beyond context and perspective, there are other lessons I’ve learned, which I plan to share in upcoming blog posts. But my message for this one is pretty simple: Being honest with yourself will carry you forward when everything else seems uncertain.&lt;/p&gt;

&lt;p&gt;Take time every day (yes, every day) to check in with yourself and ask if the goals you are pursuing are the ones you still want, and whether the cost – in time, energy (physical, mental, emotional), and also money – are still worth it. If the equation doesn’t balance out, be equally honest about what you think would.&lt;/p&gt;

&lt;p&gt;I have a few friends who have done this math and pivoted to entirely different careers; or to different areas of tech; or who have put their job hunt on hold.&lt;/p&gt;

&lt;p&gt;All of these are valid choices and don’t let anyone tell you otherwise.&lt;/p&gt;

&lt;p&gt;At the same time, the job market won’t be this hard forever. By all indications, it’s not even “this hard” by the time you read this post. Things appear to be easing up a bit. While that might be the results of a &lt;a href="https://www.investopedia.com/september-hiring-surge-shows-the-job-market-is-staying-hot-despite-the-feds-best-efforts-8348322" rel="noopener noreferrer"&gt;September surge&lt;/a&gt;, it could just as easily be a sign that things are looking up. Only time will tell.&lt;/p&gt;

&lt;p&gt;From the start of my job search, I had an inkling that my experiences might be the source of a blog. Actually, who am I kidding? I *KNEW* that I’d try to turn this into a blog, no matter what happened. In any case, I resolved to keep copious notes on which companies I applied to, and how those conversations went.&lt;/p&gt;

&lt;p&gt;What I hadn’t expected was how hard it would be to turn those notes into a meaningful visualization. As it turns out, I needed three separate graphs to really convey everything about the process.&lt;/p&gt;

&lt;p&gt;This first animation (courtesy of &lt;a href="https://flourish.studio/" rel="noopener noreferrer"&gt;Flourish&lt;/a&gt;) does a good job of showing the number of simultaneous job conversations over time. (click the image to see the full animation)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://public.flourish.studio/visualisation/14974769/?utm_source=embed&amp;amp;utm_campaign=visualisation/14974769" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxlerjrb82g46f5r5yp4.png" alt="Courtesy of Flourish" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But it fails to really give you a sense of how those conversations went. For that, my good friend and former colleague &lt;a href="https://thomaslarock.com/" rel="noopener noreferrer"&gt;Thomas LaRock&lt;/a&gt; suggested I use a Sankey view. Honestly, I struggled to figure out exactly HOW to turn my information into Sankey data, until I saw &lt;a href="https://www.linkedin.com/posts/ericbrowning_i-debated-about-being-this-open-it-doesnt-activity-7122234289093541888-A8oE?utm_source=share&amp;amp;utm_medium=member_desktop" rel="noopener noreferrer"&gt;this post&lt;/a&gt; from &lt;a href="https://www.linkedin.com/in/ericbrowning/" rel="noopener noreferrer"&gt;Eric Browning&lt;/a&gt; (an amazing Product and UX designer who happens to be looking for his next adventure. You really should check him out.).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyjehbtf8fe7wu5aym101.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyjehbtf8fe7wu5aym101.png" alt=" " width="799" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But even those two graphs still fail to convey the sheer volume of applications, rejections, and so on. For that I’ve defaulted to a simple bar chart:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffvv3bi1g69jq5r8fooqe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffvv3bi1g69jq5r8fooqe.png" alt=" " width="769" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Across six months, I applied to over 40 companies, actively interviewed at 30, and gained a lot of interesting insights along the way. I plan to share some of those lessons in the coming weeks, and even the output from some of the take-home assignments I was given as part of the interview process.&lt;/p&gt;

&lt;p&gt;But for now, my main point is: You can do this. You can handle it. It’s a lot, but it’s not more than you can bear. You may need to approach it differently, or consider an alternate path forward, but it’s never the less, something you can do.&lt;/p&gt;

</description>
      <category>career</category>
      <category>job</category>
    </item>
    <item>
      <title>Visibly Kentik</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 30 Oct 2023 14:00:00 +0000</pubDate>
      <link>https://forem.com/kentik/visibly-kentik-gl9</link>
      <guid>https://forem.com/kentik/visibly-kentik-gl9</guid>
      <description>&lt;p&gt;(This post originally appeared on &lt;a href="https://www.kentik.com/blog/visibly-kentik/" rel="noopener noreferrer"&gt;the Kentik blog&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;What’s the opposite of “Hello, I Must Be Going”?&lt;/p&gt;

&lt;p&gt;I ask because, here at Kentik, one of the requirements for a blog is to have a solid music reference. Or several. I inferred this from a review of existing blog content. OK, actually, &lt;a href="https://dev.to/blog/why-cant-network-teams-have-nice-things/"&gt;just this blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It’s important that I get this right because – as both the location and the very existence of this blog imply – I’m able to call Kentik my home now, at least professionally, and I don’t want to do anything that might get things off on the wrong foot. Honestly, &lt;a href="https://www.youtube.com/watch?v=TzIOeSB9RaU" rel="noopener noreferrer"&gt;I cannot believe it’s true&lt;/a&gt;. And while I know &lt;a href="https://www.youtube.com/watch?v=C9IwBJYTwQ0" rel="noopener noreferrer"&gt;you can’t hurry love&lt;/a&gt;, I already feel like I’m hanging with old friends.&lt;/p&gt;

&lt;p&gt;I won’t belabor the point (or the song references). Still, I did want to highlight some of the things I’m excited about now that I’ve officially become a “Kentikian” (yeah, that’s what we call ourselves around here, but &lt;a href="https://www.youtube.com/watch?v=daYXFb0JtsI" rel="noopener noreferrer"&gt;it don’t matter to me&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability is for everyone
&lt;/h2&gt;

&lt;p&gt;Monitoring – both network-specific and the broader category of solutions that include APM, synthetics, traces, and even capital-O Observability (whether you spell it out or write it “o11y” like the super cool DevOps folks) – isn’t just a niche skill practiced by a few key people in an org.&lt;/p&gt;

&lt;p&gt;If there’s anything I’ve learned over the quarter-century of installing, managing, and extending monitoring solutions, it’s that the data it contains is the lifeblood of the business and a superpower for any IT practitioner motivated enough to leverage it. Monitoring and the insights it provides via alerts, reports, and dashboards allow organizations to react to changes more quickly, identify and recover from issues more reliably, and understand the true health and performance of the business and the systems on which that business is built.&lt;/p&gt;

&lt;p&gt;If there’s one thing I’m excited to share now that I’m here at Kentik, it’s the experiences, lessons, and insights I’ve gleaned from using dozens of tools over thousands of hours at companies that ranged from modest (25-100 systems), to moderate (1-5000 systems), to mind-boggling (250,000 systems).&lt;/p&gt;

&lt;h2&gt;
  
  
  Content by IT folks, for IT folks
&lt;/h2&gt;

&lt;p&gt;Whether it’s a blog &lt;a href="https://dev.to/blog/why-cant-network-teams-have-nice-things/"&gt;highlighting the ways network monitoring has (and hasn’t) changed&lt;/a&gt; or an analysis of what it looks like when an &lt;a href="https://dev.to/blog/ending-saint-helenas-exile-from-the-internet/"&gt;entire island cuts over from satellite internet to (undersea) fiber&lt;/a&gt;, Kentik places a high value in talking to IT folks the way we speak to each other.&lt;/p&gt;

&lt;p&gt;Of course, that starts with clear, concise, and detailed explanations of the latest technology or technique and how to leverage it within Kentik’s platform.&lt;/p&gt;

&lt;p&gt;But it also includes frank explanations when something doesn’t stack up. Even more importantly, Kentik isn’t afraid to share honest looks at what we need to do as tech practitioners to show up and do our best work every day for the businesses that depend on us.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=DuRF5MJ7xcE" rel="noopener noreferrer"&gt;It also means having fun sometimes&lt;/a&gt;. Because if the work were a never-ending joyless struggle, most of us would have built our careers as hamster ranchers, deep sea carpentry engineers, or competitive maraschino cherry jugglers.&lt;/p&gt;

&lt;h2&gt;
  
  
  With all due respect to Sesame Street, “c” is for community
&lt;/h2&gt;

&lt;p&gt;A user community has to be more than a support forum. It has to not only allow but encourage conversations and connections between members irrespective of their company affiliations or the problems they’re encountering at the moment. A community should uplift, inform, inspire, comfort, and celebrate.&lt;/p&gt;

&lt;p&gt;I’ll be honest (and one of the reasons I’m thrilled to be at Kentik is because this kind of honesty is not only permitted but valued), our community isn’t there – YET. And my saying that we need it is far more than aspirational. It’s happening. Stay tuned to this channel for more information as it becomes available.&lt;/p&gt;

&lt;p&gt;But community can be found in many places and in many ways. Community also happens in the comment section of blogs and videos, in the shared stories of the hallway track at conferences and user groups, and in the whispered interjections and hastily scribbled notes during keynotes.&lt;/p&gt;

&lt;p&gt;Kentik – and incredibly, I’m now included in that amazing collection of folks – is committed to building a vibrant, passionate, engaging, participatory community, and I hope you will stick around to be part of it because it’s going to be something special.&lt;/p&gt;

&lt;h2&gt;
  
  
  The (mostly) unnecessary summary
&lt;/h2&gt;

&lt;p&gt;I still haven’t figured out the opposite of “Hello, I Must Be Going,” but perhaps I don’t need to. In 1930, 21 years before Mr. Collins graced us with his presence, let alone his musical genius, Groucho Marx &lt;a href="https://www.youtube.com/watch?v=_YrNQaXdOxU" rel="noopener noreferrer"&gt;sang the song&lt;/a&gt; in the classic movie “Animal Crackers.” The lyrics make it clear that leaving doesn’t mean not staying:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I’ll stay a week or two&lt;br&gt;&lt;br&gt;
I’ll stay the summer through&lt;br&gt;&lt;br&gt;
But I am telling you:&lt;br&gt;&lt;br&gt;
I must be going”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Like Groucho, no matter how many times I sign off, I don’t plan to really go anywhere. I plan to be extremely visible here at Kentik, whether on &lt;a href="https://dev.to/blog/"&gt;the blog&lt;/a&gt;, in the &lt;a href="https://www.youtube.com/@KentikHQ" rel="noopener noreferrer"&gt;video channel&lt;/a&gt;, at conferences, or in community spaces.&lt;/p&gt;

&lt;p&gt;I hope to see you there, too!&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;For those who skipped comparative linguistics in school, “Kentik” is Yiddish for “visible.”&lt;/em&gt;&lt;/p&gt;

</description>
      <category>kentik</category>
      <category>community</category>
      <category>jobs</category>
    </item>
  </channel>
</rss>
