Forum Discussion

Steve_130921's avatar
Steve_130921
Icon for Nimbostratus rankNimbostratus
Dec 20, 2013

Denodo Health Monitor

We are installing Denodo servers which require a special external health monitor. The documentation supplied to me on creating the monitor seems to allow me to create the monitor but it doesn't appear to be working. It involves copying a directory onto the F5 and running a custom ping.sh command from that directory. It also mentions to be sure of the java version being 1.5 as it will not compile in java 1.4. It includes a command that would show what version of java is running but even that command doesn't work.

 

At any rate, I can't seem to find anything newer from Denodo. I believe the document is referencing a previous version of LTM. I've been waiting for Denodo to call me as well but that's been a week now. And I'm still waiting for an F5 tech to call me and assist but maybe someone here can answer some of this.

 

Steve

 

6 Replies

  • I would recommend to use an icmp monitor at the node level and a layer 4 monitor at the poll-member level. Connect to the application and capture the traffic with either tcpdump or HTTPWatch or similar. Emulate this using either the HTTP monitor or use an advanced monitor. If you want some help with creating this, post the logs and we can help with creating the monitor.

     

  • I have a bit more to offer now having fought with this even with the Denodo system engineers. The documented method they gave is for pre 11.x versions and they don't exactly have an answer for making this work in 11.4.

    From the Denodo servers (nodes) that were installed, they gave me a zipped directory that needed to be decompressed and copied onto the F5 into folders that no longer exist on 11.4 but was nevertheless copied. Some of these folders and a particular ping.sh file required RWX privileges and that was granted.

    In addition, they have the external monitor bash script that I created and imported into the F5 through file manager. Here is the script:

    !/bin/bash These arguments are supplied automatically for all external pingers: $1 = IP (nnn.nnn.nnn.nnn notation or hostname) $2 = port (decimal, host byte order) $3 and higher = additional arguments

    . /etc/profile pidfile="/var/run/pinger.$1..$2.pid" if [ -f $pidfile ] then kill -9 cat $pidfile > /dev/null 2>&1 fi echo "$$" > $pidfile node_ip=echo "//"$1 cd /config/monitors/denodo-db-tools/bin status=sh /config/monitors/denodo-db-tools/bin/ping.sh -t 2000 -v $node_ip:9999 2>/dev/null | grep OK | wc -l if [ "$status" = "1" ] then rm -f $pidfile echo $status exit 0 fi rm -f $pidfile

    (The directory above '/config/monitors' is supposed to be '/usr/bin/monitors' but it doesn't work as documented because /usr/bin/monitors is a pointer to /config/monitors. So I changed the script to reflect the true folder.).

    From the instructions, this was all the setup required, at least under pre 11.x versions.

    While testing with Denodo engineers, we manually copied this script to the F5 and made it executable and found it gave errors on some things such as no path for the java runtime directory or it's own home directory. We corrected them in the /etc/profile and/or the bash_profile to make it work. Running the script then seemed to work. Denodo didn't seem to know what to do with this so I worked with a good unix administrator to get this worked out and I'm still not sure I understand everything he said was missing or incorrect.

    Regardless, we seemed to get it working at the CLI to at least return the code it says will determine if the server is healthy.

    In the GUI however, applying the imported script into the external monitor and then applying that monitor to either a pool or node causes the server to report unhealthy and be taken down. It seems errors will show in /var/log/ltm and /var/log/bigd but I'm not getting much detail to see the problem. I've been reading on turning on debugging but the little I tried didn't seem to give me any extra output in the logs.

    It seems like the changes we had to make for the scripts path and home directories at the CLI level is possibly not being passed along to the GUI part of the configuration so Denodo says that's an LTM problem. Go figure.

    I haven't administerd Unix in 15 years so the pathing and home directories have me confused as to how to possibly set those items in the script. I did attempt to apply those settings in the script but I don't know if it's doing anything.

    I have ICMP applied at the node level but in order to work properly, this external monitor is required for proper operation on the pool.

    So, after all that, any ideas? I did find out how to get it to report the version of java and it is 1.6.

    Steve

  • I'm not sure why the script is displaying in such a badly formatted manner. Is there another way to post it so it can be read more easily?

     

    Steve

     

  • Ok. I don't know why but today I decided to just remove the files and the monitor and then re-added them just like I did the first time and now it's working. Unfortunately I can't seem to see what the result of the test really is. I tried to redirect the output to a different file but it creates the file with nothing in it. I set DEBUG=0 and also DEBUG=1 and neither setting produces any additional output.

     

    I don't know why it didn't work from the beginning because it's actually configured identical to my original attempt.

     

    Steve

     

    • PeteWhite's avatar
      PeteWhite
      Icon for Employee rankEmployee
      good news. Might be worth capturing what it does via tcpdump
  • One thing you could try is to run the status command manually from the CLI.

     

    This appears to be the one to run. Replace the "$node_ip:9999" section with the proper IP and port, and without the extra options from the script, it may give more detail on whether the check actually functions.

     

    sh /config/monitors/denodo-db-tools/bin/ping.sh -t 2000 -v $node_ip:9999

     

    You may also be able to use some of the example external monitor here: https://devcentral.f5.com/wiki/AdvDesignConfig.TemplateForExternalLtmMonitors.ashx

     

    Another thing to consider is whether you need to strip the IPv6 prefix from the node IP. You can find an example of that in the script from the link above.