API Cloudera Manager для получения списка агентов Flume
Я пытаюсь получить количество агентов Flume, работающих на моем кластере CDH5.8, с помощью Cloudera Manager API.
https://cloudera.github.io/cm_api/
До сих пор я не мог понять, какую модель RESTful следует рассмотреть или связанный с ней класс Java. Если кто-то может помочь или проинформировать упомянутый Java-класс для изучения, это будет здорово
С уважением
1 ответ
Решение
Если вы используете следующий API:
Размер items
массив в возвращаемом объекте JSON будет числом агентов Flume. Чтобы узнать количество работающих агентов, для каждого элемента отметьте roleState
равняется STARTED
,
Класс Java ApiRole
это, вероятно, то, что вам нужно. Этот фрагмент кода из примера whirr-cm близок к тому, что вы хотите.
for (ApiService apiService : apiResourceRootV3.getClustersResource().getServicesResource(getName(cluster))
.readServices(DataView.SUMMARY)) {
for (ApiRole apiRole : apiResourceRootV3.getClustersResource().getServicesResource(getName(cluster))
.getRolesResource(apiService.getName()).readRoles()) {
if (apiRole.getRoleState().equals(ApiRoleState.STARTED)) {
servicesNotStarted.remove(apiRole.getName());
}
}
}
Вам просто нужно ограничить это сервисом Flume.