guys-

i just put a new snapshot of 2.6.0 out at
http://matt-massie.com/ganglia/

here are the changes...

the execution tools are back in the distribution now.  i tracked down the 
bug... the native posix interface in the newer redhat kernels is buggy 
(especially when it comes to handling semaphores).  luckily, the linux 
kernel developers knew they might break things.  if you set 
LD_ASSUME_KERNEL to "2.2.5" before starting gexecd and gexec everything 
works like a charm.  a group in the computer science department at 
university of washington comfirmed the workaround. (i also had to update 
some of the openssl code).

there is a new configuration file syntax for gmond "channels".  in the 
last snapshot, we used send_channels and receive_channels.  that is gone 
now in favor of a more flexible and long-term solution.

the new syntax looks like this

<Channel>
address 239.2.11.71
port 8649
interfaces eth0
action send_receive
ttl 4
</Channel>

<Channel>
address 192.168.0.45
port  6667
action send
</Channel>

there are five attributes for a channel: address, port, interfaces, ttl 
and action (which will likely be changed to actions).

address is the ip address/name of the multicast or unicast address (the 
default is 239.2.11.71).
 
port is the port to send receive or send/receive on (default is 8649).

interfaces is a list of interfaces to send/receive on (default is to let 
the kernel decide a single interface).  you can also set the interfaces to 
"all" which will cause gmond to perform actions (send/receive/s&r) on each 
and every interface on the machine.

ttl is the time-to-live for the messages.  currently this only has meaning 
for a multicast channel.  i'll take about this later in the message.  
default is 1.

action (any better ideas for what to call this?  maybe "flags?") currently 
can be set to "send", "receive" or "send_receive".. but in the future we 
will have "forward" or "bounce" as well. (btw, i'm going to change this 
attribute to be list instead of a string.. it will be a list of actions)  
i'll explain.

later on the message format will be updated to allow message 
incapsulation.  this will allow host A to send data on behalf of host B.

for example, say i have two clusters of machines on private networks.  
each cluster has a single multi-homed machine (say a frontend).  all hosts 
each cluster would multicast on the default ganglia channel and it would 
be collected on the frontends.  the frontends would then bounce/forward 
the information on another gmond.

<Channel>
address 239.2.11.71
port    8649
interfaces eth1  # my private network
ttl     1

action  receive_send forward

forward_address 3.4.5.6  # a unicast route
forward_port    6668
</Channel>

this configuration tells gmond to listen to the private network traffic 
and forward it on to host 3.4.5.6 as it receives data.  the TTL would have 
meaning in the unicast realm as well.. each time a gmond receives data it 
will decrement the TTL for the encapsulated message.  this means you could 
forward data up multiple levels in the hierarchy if you want.

i've changed gmetad as well.

gmetad is now using thread pools.  this means that instead of 
spinning off a thread for each data_source there is a fixed amount of 
worker threads working to pull data from each data_source.  this is much 
more efficient and manageable.

i think if you take a look at the new code you'll see that it's much 
cleaner and more manageable.  i'm going to be focusing more on the rrd 
problems in gmetad next.  i think i have a new approach .. details later.

there is so much more i have to talk about but i can only type so fast and 
i'm looking forward to going home for the weekend.

hope you guys have a great weekend.

-matt




Reply via email to