Forum Discussion

spiritie's avatar
3 years ago

Anyone had success with SNMP and reboot required state

Hi Forums

I wanted to hear if anyone have had success with reboot pending with LogicMonitor and SNMP?

Mainly SNMPD on Ubuntu.

Else it maybe a job for SSH monitoring or OpenMetrics with Telegraf?

7 Replies

  • Anonymous's avatar
    Anonymous

    Should be a pretty easy one to do with SSH. https://megamorf.gitlab.io/2019/06/10/check-if-reboot-is-required-after-installing-linux-updates/ I'd suggest doing it as a property source so you can just put them into a group based on the property. Something like this (not extensively tested). 

    import com.jcraft.jsch.JSch
    import com.santaba.agent.util.Settings
    
    host = hostProps.get("system.hostname")
    user = hostProps.get("ssh.user")
    pass = hostProps.get("ssh.pass")
    port = hostProps.get("ssh.port")?.toInteger() ?: 22
    cert = hostProps.get("ssh.cert") ?: '~/.ssh/id_rsa'
    timeout = 15000 // timeout in milliseconds
    try {
        def command = 'test -f /var/run/reboot-required && echo needed'
        def command_output = getCommandOutput(command)
        println("pending.reboot=" + command_output)
        return 0
    }
    catch (Exception e) {println "Unexpected Exception : " + e;return 1;}
    
    /**
     * Helper method which handles creating JSCH session and executing commands
     * @return
     */
    def getCommandOutput(String input_command) {
        try {
            // instantiate JSCH object.
            jsch = new JSch()
            // do we have an user and no pass ?
            if (user && !pass) {
                // Yes, so lets try connecting via cert.
                jsch.addIdentity(cert)
            }
            // create session.
            session = jsch.getSession(user, host, port)
            // given we are running non-interactively, we will automatically accept new host keys.
            session.setConfig("StrictHostKeyChecking", "no");
            String authMethod = Settings.getSetting(Settings.SSH_PREFEREDAUTHENTICATION, Settings.DEFAULT_SSH_PREFEREDAUTHENTICATION);
            session.setConfig("PreferredAuthentications", authMethod);
            // set session timeout, in milliseconds.
            session.setTimeout(timeout)
            // is host configured with a user & password?
            if (pass) {
                // set password.
                session.setPassword(pass);
            }
            // connect
            session.connect()
            // execute command.
            channel = session.openChannel("exec")
            channel.setCommand(input_command)
            // collect command output.
            def commandOutput = channel.getInputStream()
            channel.connect()
            def output = commandOutput.text;
            // disconnect
            channel.disconnect()
            return output
        }
        catch (Exception e) {e.printStackTrace()}
        // ensure we disconnect the session.
        finally {session.disconnect()}
    }

     

    If you want alerts, you could alert off this property pretty easily with a companion datasource that looks like this:

    return 0

    With an appliesto like this:

    auto.pending.reboot == "needed"

  • Yeah, it's easy with SSH, we already have a bash script that can check reboot status of a Linux machine, but we'd like to avoid using SSH as we only use SNMP right now. 

    Quite a lot of work to set up SSH on all devices just to have this ekstra reboot pending check :P 

  • Anonymous's avatar
    Anonymous

    Enabling ssh would get you much more than just this one custom datasource. Worth looking into IMO.

  • 2 minutes ago, Stuart Weenig said:

    Enabling ssh would get you much more than just this one custom datasource. Worth looking into IMO.

    From what I've understood there is more broad monitoring with SNMP on Linux machines with LogicMonitor?

    Is there something particular with the SSH monitoring that is superior than the SNMP monitoring (talking out of the box in LogicMonitor)

  • Anonymous's avatar
    Anonymous

    Yes, many of the SSH datasources available out of the box provide superior monitoring and detail vs. the SNMP data that is pollable.

    25 minutes ago, spiritie said:

    From what I've understood there is more broad monitoring with SNMP on Linux machines with LogicMonitor?

    Almost. There's more SNMP monitoring that happens on Linux than Windows, because Windows has WMI that, like SSH, provides richer monitoring data.

    Also, just because you enable SSH monitoring, doesn't mean you're necessarily disabling SNMP monitoring. Do both.

  • On 2/1/2022 at 5:13 PM, Stuart Weenig said:

    Yes, many of the SSH datasources available out of the box provide superior monitoring and detail vs. the SNMP data that is pollable.

    Almost. There's more SNMP monitoring that happens on Linux than Windows, because Windows has WMI that, like SSH, provides richer monitoring data.

    Also, just because you enable SSH monitoring, doesn't mean you're necessarily disabling SNMP monitoring. Do both.

     

    Hi Stuart

    Thanks for your insight :)/emoticons/smile@2x.png 2x" title=":)" width="20" />

    I think we will wait with the SSH monitoring, we have a lot of machines where we disable SSH as a security measure and only enabled it during maintenance.

    We want to try go the OpenMetrics way instead :)/emoticons/smile@2x.png 2x" title=":)" width="20" />