[ https://issues.apache.org/jira/browse/FLINK-9703?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16539889#comment-16539889 ]
ASF GitHub Bot commented on FLINK-9703: --------------------------------------- Github user rsltrifork commented on a diff in the pull request: https://github.com/apache/flink/pull/6288#discussion_r201645393 --- Diff: flink-mesos/src/main/java/org/apache/flink/mesos/runtime/clusterframework/LaunchableMesosWorker.java --- @@ -332,6 +334,22 @@ public String toString() { return taskInfo.build(); } + /** + * Get port keys representing the TM's configured endpoints. This includes mandatory TM endpoints such as + * data and rpc as well as optionally configured endpoints for services such as prometheus reporter + * + * @return A deterministicly ordered Set of port keys to expose from the TM container + */ + private Set<String> getPortKeys() { + LinkedHashSet<String> tmPortKeys = new LinkedHashSet<>(Arrays.asList(TM_PORT_KEYS)); --- End diff -- Yes, ranges are allowed as value. In fact *anything* is allowed as value, because the implementation does not look at which value is assigned to a port key. It always overrules your assigned port value and replaces it with a single port provided by Mesos. My understanding is, that port ranges in the first place are only used for one purpose: To allow picking a single available port from within the range. For example when running multiple TMs on the same machine, where ports would otherwise clash. But this complexity is not needed when spawning TMs with Mesos, because Mesos will always choose and assign a port, which is guarenteed to be available. Therefore, it's safe to only request a single port for each configured portKey. > Mesos does not expose TM Prometheus port > ---------------------------------------- > > Key: FLINK-9703 > URL: https://issues.apache.org/jira/browse/FLINK-9703 > Project: Flink > Issue Type: Bug > Components: Mesos > Reporter: Rune Skou Larsen > Priority: Major > Labels: pull-request-available > > LaunchableMesosWorker makes Mesos expose these ports for a Task Manager: > {{private static final String[] TM_PORT_KEYS = {}} > {{ "taskmanager.rpc.port",}} > {{ "taskmanager.data.port"};}} > But when running Prometheus Exporter on a TM, another port needs to be > exposed to make Flink's Prometheos endpoint externally scrapable by the > Prometheus server. By default this is port 9249, but it is configurable > according to: > [https://ci.apache.org/projects/flink/flink-docs-release-1.6/monitoring/metrics.html#prometheus-orgapacheflinkmetricsprometheusprometheusreporter] > > My plan is to make a PR, that just adds another config option for mesos, to > enable custom ports to be exposed in the provisioned TMs. > I considered carrying parts of the Metrics config into the Mesos code to > automatically map metrics ports in mesos. But making such a "shortcut" > between Flink's metrics and mesos modules would probably need some sort of > integration testing, so I prefer the simple solution of just adding another > Mesos config option. But comments are welcome. -- This message was sent by Atlassian JIRA (v7.6.3#76005)