[Xymon] PULLDATA flag - bug report for xymonfetch

John Thurston john.thurston at alaska.gov
Mon Dec 22 21:14:07 CET 2014


On 12/19/2014 5:27 PM, John Thurston wrote:
> The "pulldata" flag is documented as supporting an explicit ip:port
> combination. In the man file for hosts.cfg:
>
>> pulldata[=[IP][:port]]
>>     This option is recognized by the xymonfetch(8) utility, and causes
>> it to poll the host for client data. The optional IP-address and
>> port-number can be used if the client-side msgcache(8) daemon is
>> listening on a non-standard IP-address or port-number.
>
> but the application does not seem to be picking up the ipaddress or port
> specified. It always uses the address of the host. Take the following
> example config line:
>
> 1.2.3.4  foo.bar.com    # pulldata=5.6.7.8:2014 noconn
>
> By the documentation, I expect it to try pull data from 5.6.7.8 on port
> 2014. It does not. It always tries to pull from 1.2.3.4 on port 1984
>
> Looking in xymonfetch.c, I see where the parsing is done to identify
> explicit IP addresses. Using a "xymondboard fields=XMH_FLAG_PULLDATA",
> all I get back is "PULLDATA". There is never an IP address listed. My C
> isn't good enough to trace farther back through the code :(
>
> I think there may be an error in the parsing of the pulldata tag. Can
> anyone help me unwind this and tell me what I'm doing wrong (or if there
> is a bug I'll have to figure out how to patch)?

There is definitely something wrong here, so I'm changing the 
subject-line. I have enabled debug logging on xymonfetch, and tried 
several different combinations of configurations. When my hosts.cfg 
contains:

> 0.0.0.0         soafoo.alaska.gov           # pulldata=22.92.232.2:1986

the logfile for xymonfetch shows:

> 29776 2014-12-22 10:46:47 Queuing request 1 to 10.20.162.162:1984 for soafoo.alaska.gov: 'pullclient 1

The logged 10. address is what DNS returns for the named host. The 22. 
address is where the msgcache is actually listening. xymonfetch is 
recognizing that it should pull from soafoo.alaska.gov, but it isn't 
recognizing it has been given an explicit IP:PORT from which it should 
pull. It is always using the IP returned by DNS and the default port (1984).

This behavior is seen on 4.3.17, running on Solaris 10, 64-bit, SPARC.

Can anyone else confirm this behavior? If you enable debug logging on 
the xymonfetch process, _you don't actually have to have a msgcache 
listening anywhere_. To reproduce, all you need is a xymon server and a 
resolvable hostname:

A) Add a line to hosts.cfg of the sort:
0.0.0.0	host.name.com	# pulldata=10.11.12.13:2014 noconn

B) Run xymonfetch in the foreground to see what address it uses
./server/bin/xymonfetch --debug --server=ipOfYourXymonServer

You _should_ see a request queued for 10.11.12.13:2014. I suspect you 
will see it timing-out trying port 1984 on your host's real address.

-- 
    Do things because you should, not just because you can.

John Thurston    907-465-8591
John.Thurston at alaska.gov
Enterprise Technology Services
Department of Administration
State of Alaska



More information about the Xymon mailing list