Sha256: 166e65cc72ef885b7dc02bd7e543f020379a802e89eef79800092cb546d84e0e

Contents?: true

Size: 1 KB

Versions: 2

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal: true

require 'riemann/tools'

# Reports NTP stats to Riemann.
module Riemann
  module Tools
    class Ntp
      include Riemann::Tools

      def initialize
        super

        @hostname = `hostname`.chomp
        @ostype = `uname -s`.chomp.downcase
        abort 'WARNING: macOS not explicitly supported. Exiting.' if @ostype == 'darwin'
      end

      def tick
        stats = `ntpq -p -n`
        stats.each_line do |stat|
          m = stat.split
          next if m.grep(/^===/).any? || m.grep(/^remote/).any?

          @ntp_host = m[0].gsub('*', '').gsub('-', '').gsub('+', '')
          send('delay', m[7])
          send('offset', m[8])
          send('jitter', m[9])
        end
      end

      def send(type, metric)
        report(
          host: @hostname,
          service: "ntp peer #{@ntp_host} #{type}",
          metric: metric.to_f,
          state: 'ok',
          description: "ntp peer #{@ntp_host} #{type}",
          tags: ['ntp'],
        )
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
riemann-tools-1.12.0 lib/riemann/tools/ntp.rb
riemann-tools-1.11.0 lib/riemann/tools/ntp.rb