[ 
https://issues.apache.org/jira/browse/MESOS-433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13634214#comment-13634214
 ] 

Benjamin Mahler commented on MESOS-433:
---------------------------------------

This is starting to suggest that mesos is providing at least part of an 
observability stack on behalf of executors, something that I'm not convinced is 
a good idea, merely in terms of keeping down the number of features we provide. 
Presumably, each executor can host an endpoint and the framework will know 
about all of the executors' endpoints. Whatever observability stack is used can 
then ask each endpoint for the relevant data.

Of course, there are likely many frameworks that will need to implement this, 
so it may very well be something we should implement, but I want to make sure 
the benefits are clear before adding any complexity:
  1. One endpoint per slave, rather than multiple endpoints for the executors.
  2. Mesos will store the data on behalf of executors, but executors probably 
need to cache this data anyway.
  3. ?

Disadvantages:
  1. Adding complexity.
  2. This exposes a(nother) DOS technique, malicious executors can send large 
JSON blobs frequently. The slave may have to manage its memory in order to 
mitigate this.
  3. ?

----------------------------------------------------------------------------
But, assuming we were to implement such a feature:
This would probably be best as an added call on the ExecutorDriver, allowing 
executors to export stats to the slave.

All of the existing Executor interface calls do not return values, and rather 
the Executor has to take action by making calls to the driver. Optionally we 
can add a call to the Executor interface, asking for json. This would be 
beneficial for frameworks that want to be polled for exporting.

Additionally, the slave needs an endpoint for exporting JSON on behalf of the 
executors. Currently, the ExecutorDriver (see: exec.cpp) only sends messages to 
the slave, so the JSON may have to be passed through the slave for simplicity 
initially. We probably want to then create a new libprocess Process to be 
responsible for this storing / exposing the JSON for each executor.

This is how I would implement this:
1. Add export(json) to the ExecutorDriver.
2. Send the JSON data to the slave through a new message type.
3. Have the slave relay the data to a new libprocess Process that exports the 
data on a /executors/exported.json or the like.
                
> add exportStats method to executor
> ----------------------------------
>
>                 Key: MESOS-433
>                 URL: https://issues.apache.org/jira/browse/MESOS-433
>             Project: Mesos
>          Issue Type: New Feature
>          Components: slave, webui
>            Reporter: brian wickman
>
> Now that the slave exports per-executor stats via the UI, the slave should be 
> able to periodically request application-specific stats from the executor 
> (e.g. zookeeper session id, connection counts, whatever) and export them on 
> the executor's behalf.  This way we don't need to reinvent any observability 
> wheels.
> The interface could either be exportStats(task_id) or just exportStats(), and 
> return a JSON object with all stats to export.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to