[zeromq-dev] Statistics protocol v0.1

Marten Feldtmann itlists at schrievkrom.de
Fri Jun 1 10:40:07 CEST 2012


I was not precise enough ...

> Why you don't use pub/sub?

We use pub/sub .... via multicast in our system ... sorry, that I did 
not make that clear.

> What it consists of?
>> ->  location (computer) of the process sending this information
>> (ip-number - no name)
> Why do you use IP number instead names? I believe
> it's internal internal policy in your company or somesuch.
> Or is it just debugging info, along with node name?
>> ->  name of the process
>> ->  process id
> Is PID just a debugging info, or is it meaningful? (do you aggregate
> info from several processes?)

Well I have to differentiate, where the statistic informations come from 
and due to the fact, that several instances of the same system can run 
on one computer I have to add an additional information, which makes the 
definition of the running program more or less possible.

>> ->  start-time of statistic interval (in ASCII to make it more readable
>> in a format like: 01.06.2012T21:00:00.000+12 .. in that well known
>> format) and including timezone information.
> It's interesting from two points:
> 1. Textual data format may be nicer than unix timestamp. But
> I'd prefer UTC only timestamp. As it's not intended to be presented
> to user as is (except for debugging), its easier to deal with UTC
> timestamps than with diverse timezones.

Well I like to have an overview over that info and a string is more 
readable and to get a Unix Timestamp is not that portable and overall 
easy possible to retrieve.

> 2. We used to send timestamp at the time of sending, not
> the start of interval. Its easier  to produce, and it's more logical
> when we send a counter, instead of a rate value (see below).
>> ->  duration length of the statistic interval in milliseconds
> This one I've obviously missed. Will add shortly.
>> ->  symbolic name of the statistic producer (0MQ node)
>> ->  sub-symbolic name of the statistic producer (0MQ node)
> So, according to the text below, I think that symbolic name
> it's DNS name of the node, and sub-symbolic name it's name
> of the subsystem, inside of the process. Am I right?

Well, we do not do script programming here. We have some Smalltalk 
systems and within each running Smalltalk system (each is a process 
within the operating system) ) we have some 0MQ sockets (or node) doing 
its work/task. After all I would like to find out, what traffic each of 
these processes/tasks are doing.

As an example (remember: all of these nodes may run within one Smalltalk 
image - one OS process, but many, many Smalltalk light processes).

* we have a 0MQ statistic collector node (subscribe) (which itselfs 
produces statistics also - but only receiving traffic ones). This one 
collects the statistics info published. Its node type-name is "statsub". 
We have only up to one statistic collector node in one running process, 
so there is no need to give this type a subtype name. This node runs 
only when needed.

* each process has one 0MQ statistic sending node (publisher). (which 
itselfs produces statistics also - but only sending traffic ones). Its 
node type-name is "statpub". We have only one statistic sender node in 
one running process, so there is no need to give this type a subtype name.

The same happens for logging information. publish/subscribe and only 
singletons are within a running process. Type names are "logpub" and 
"logsub". No sub types needed

* then we have a domain working node (producing PDF files). (request and 
reply). This one received commands and sends results - therefore another 
source for statistics information. There may be several of instances 
running within ONE process - therefore a subtype is useful (which may be 
a unique number).

* Then we have service publishers. Each application (pub/sub) can offer 
its services to the local network.


More information about the zeromq-dev mailing list