Search in sources :

Example 1 with ServiceComponent

use of com.thinkbiganalytics.servicemonitor.model.ServiceComponent in project kylo by Teradata.

the class NifiServiceStatusCheck method nifiStatus.

/**
 * Check to see if NiFi is running
 *
 * @return the status of NiFi
 */
private ServiceComponent nifiStatus() {
    String componentName = "NiFi";
    ServiceComponent component = null;
    try {
        AboutDTO aboutEntity = nifiRestClient.getNifiVersion();
        String nifiVersion = aboutEntity.getVersion();
        component = new DefaultServiceComponent.Builder(componentName + " - " + nifiVersion, ServiceComponent.STATE.UP).message("NiFi is up.").build();
    } catch (Exception e) {
        component = new DefaultServiceComponent.Builder(componentName, ServiceComponent.STATE.DOWN).exception(e).build();
    }
    return component;
}
Also used : DefaultServiceComponent(com.thinkbiganalytics.servicemonitor.model.DefaultServiceComponent) ServiceComponent(com.thinkbiganalytics.servicemonitor.model.ServiceComponent) DefaultServiceComponent(com.thinkbiganalytics.servicemonitor.model.DefaultServiceComponent) AboutDTO(org.apache.nifi.web.api.dto.AboutDTO)

Example 2 with ServiceComponent

use of com.thinkbiganalytics.servicemonitor.model.ServiceComponent in project kylo by Teradata.

the class DatabaseServiceCheckDao method healthCheck.

public ServiceStatusResponse healthCheck() {
    String serviceName = "database";
    String componentName = "Kylo Database";
    ServiceComponent component = null;
    Map<String, Object> properties = new HashMap<>();
    try {
        properties = (Map<String, Object>) JdbcUtils.extractDatabaseMetaData(jdbcTemplate.getDataSource(), new DatabaseMetaDataCallback() {

            public Object processMetaData(DatabaseMetaData metadata) throws SQLException, MetaDataAccessException {
                Map<String, Object> properties = new HashMap<>();
                properties.put("database", metadata.getDatabaseProductName());
                properties.put("databaseVersion", metadata.getDatabaseMajorVersion() + "." + metadata.getDatabaseMinorVersion());
                properties.put("url", metadata.getURL());
                return properties;
            }
        });
        String dbVersion = properties.get("database") + " " + properties.get("databaseVersion");
        component = new DefaultServiceComponent.Builder(dbVersion, ServiceComponent.STATE.UP).message(properties.get("database") + " is up.").properties(properties).build();
    } catch (MetaDataAccessException e) {
        component = new DefaultServiceComponent.Builder(componentName, ServiceComponent.STATE.DOWN).exception(e).build();
    }
    return new DefaultServiceStatusResponse(serviceName, Arrays.asList(component));
}
Also used : DatabaseMetaDataCallback(org.springframework.jdbc.support.DatabaseMetaDataCallback) DefaultServiceComponent(com.thinkbiganalytics.servicemonitor.model.DefaultServiceComponent) ServiceComponent(com.thinkbiganalytics.servicemonitor.model.ServiceComponent) HashMap(java.util.HashMap) SQLException(java.sql.SQLException) DefaultServiceStatusResponse(com.thinkbiganalytics.servicemonitor.model.DefaultServiceStatusResponse) DatabaseMetaData(java.sql.DatabaseMetaData) MetaDataAccessException(org.springframework.jdbc.support.MetaDataAccessException) HashMap(java.util.HashMap) Map(java.util.Map)

Example 3 with ServiceComponent

use of com.thinkbiganalytics.servicemonitor.model.ServiceComponent in project kylo by Teradata.

the class ActivemqServiceStatusCheck method activemqStatus.

/**
 * Check if Activemq is running
 *
 * @return Status of Activemq
 */
private ServiceComponent activemqStatus() {
    String componentName = "Activemq";
    String serviceName = SERVICE_NAME;
    ServiceComponent component = null;
    Connection activemqConnection = null;
    /**
     * Prepare Alert Message
     */
    ServiceAlert alert = null;
    alert = new DefaultServiceAlert();
    alert.setLabel(componentName);
    alert.setServiceName(serviceName);
    alert.setComponentName(componentName);
    String finalServiceMessage = "";
    try {
        if (this.activemqPoolConnection != null) {
            /**
             * Create Instance of Connection from Pool
             */
            activemqConnection = this.activemqPoolConnection.createConnection();
            /**
             *  On successful connection , return status to Kylo
             */
            finalServiceMessage = "Activemq is running.";
            alert.setMessage(finalServiceMessage);
            alert.setState(ServiceAlert.STATE.OK);
            component = new DefaultServiceComponent.Builder(componentName, ServiceComponent.STATE.UP).message(finalServiceMessage).addAlert(alert).build();
        }
    } catch (Exception jmsConnectionException) {
        finalServiceMessage = "Activemq is down.";
        alert.setMessage(finalServiceMessage);
        alert.setState(ServiceAlert.STATE.CRITICAL);
        component = new DefaultServiceComponent.Builder(componentName, ServiceComponent.STATE.DOWN).message(finalServiceMessage).exception(jmsConnectionException).addAlert(alert).build();
    } finally {
        if (activemqConnection != null)
            try {
                activemqConnection.close();
            } catch (JMSException e) {
                log.error("Unable to close activemq connection", e);
            }
    }
    return component;
}
Also used : DefaultServiceAlert(com.thinkbiganalytics.servicemonitor.model.DefaultServiceAlert) ServiceAlert(com.thinkbiganalytics.servicemonitor.model.ServiceAlert) DefaultServiceComponent(com.thinkbiganalytics.servicemonitor.model.DefaultServiceComponent) ServiceComponent(com.thinkbiganalytics.servicemonitor.model.ServiceComponent) Connection(javax.jms.Connection) DefaultServiceAlert(com.thinkbiganalytics.servicemonitor.model.DefaultServiceAlert) JMSException(javax.jms.JMSException) JMSException(javax.jms.JMSException)

Example 4 with ServiceComponent

use of com.thinkbiganalytics.servicemonitor.model.ServiceComponent in project kylo by Teradata.

the class AmbariServicesStatusCheck method addAmbariServiceErrors.

/**
 * add ambari Service errors to the supplied list
 */
private void addAmbariServiceErrors(String exceptionMessage, List<ServiceStatusResponse> list, Map<String, List<String>> definedServiceComponentMap) {
    if (definedServiceComponentMap != null && !definedServiceComponentMap.isEmpty()) {
        String message = "Status Unknown. Unable to check service.  Ambari connection error: " + exceptionMessage;
        for (Map.Entry<String, List<String>> entry : definedServiceComponentMap.entrySet()) {
            String serviceName = entry.getKey();
            List<String> componentNames = entry.getValue();
            List<ServiceComponent> components = new ArrayList<>();
            if (componentNames != null && !componentNames.isEmpty()) {
                for (String componentName : componentNames) {
                    if (ServiceMonitorCheckUtil.ALL_COMPONENTS.equals(componentName)) {
                        componentName = serviceName;
                    }
                    ServiceComponent serviceComponent = new DefaultServiceComponent.Builder("Unknown", serviceName, componentName, ServiceComponent.STATE.UNKNOWN).message(message).build();
                    components.add(serviceComponent);
                }
            } else {
                // add the component based uppon the Service Name
                ServiceComponent serviceComponent = new DefaultServiceComponent.Builder("Unknown", serviceName, serviceName, ServiceComponent.STATE.UNKNOWN).message(message).build();
                components.add(serviceComponent);
            }
            ServiceStatusResponse serviceStatusResponse = new DefaultServiceStatusResponse(serviceName, components);
            list.add(serviceStatusResponse);
        }
    }
}
Also used : DefaultServiceStatusResponse(com.thinkbiganalytics.servicemonitor.model.DefaultServiceStatusResponse) ServiceStatusResponse(com.thinkbiganalytics.servicemonitor.model.ServiceStatusResponse) DefaultServiceComponent(com.thinkbiganalytics.servicemonitor.model.DefaultServiceComponent) ServiceComponent(com.thinkbiganalytics.servicemonitor.model.ServiceComponent) ArrayList(java.util.ArrayList) DefaultServiceStatusResponse(com.thinkbiganalytics.servicemonitor.model.DefaultServiceStatusResponse) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map)

Example 5 with ServiceComponent

use of com.thinkbiganalytics.servicemonitor.model.ServiceComponent in project kylo by Teradata.

the class AmbariServicesStatusCheck method healthCheck.

/**
 * https://github.com/apache/ambari/blob/trunk/ambari-server/docs/api/v1/host-component-resources.md
 *
 * State 	Description                                                                          <br>
 * INIT 	The initial clean state after the component is first created.                        <br>
 * INSTALLING 	In the process of installing the component.                                  <br>
 * INSTALL_FAILED 	The component install failed.                                                <br>
 * INSTALLED 	The component has been installed successfully but is not currently running.  <br>
 * STARTING 	In the process of starting the component.                                    <br>
 * STARTED 	The component has been installed and started.                                        <br>
 * STOPPING 	In the process of stopping the component.                                    <br>
 * UNINSTALLING 	In the process of uninstalling the component.                                <br>
 * UNINSTALLED 	The component has been successfully uninstalled.                             <br>
 * WIPING_OUT 	In the process of wiping out the installed component.                        <br>
 * UPGRADING 	In the process of upgrading the component.                                   <br>
 * MAINTENANCE 	The component has been marked for maintenance.                               <br>
 * UNKNOWN 	The component state can not be determined.                                           <br>
 */
@Override
public List<ServiceStatusResponse> healthCheck() {
    List<ServiceStatusResponse> serviceStatusResponseList = new ArrayList<>();
    // Get the Map of Services and optional Components we are tracking
    Map<String, List<String>> definedServiceComponentMap = ServiceMonitorCheckUtil.getMapOfServiceAndComponents(services);
    if (definedServiceComponentMap != null && !definedServiceComponentMap.isEmpty()) {
        try {
            AmbariClient client = ambariClient;
            // get the Clusers from ambari
            List<String> clusterNames = client.getAmbariClusterNames();
            // get the Service Status from Ambari
            ServiceComponentInfoSummary response = client.getServiceComponentInfo(clusterNames, services);
            // get alert info for these services as well
            AlertSummary alertSummary = client.getAlerts(clusterNames, services);
            // Convert the Ambari Alerts to the Pipeline Controller Alert
            List<ServiceAlert> serviceAlerts = transformAmbariAlert(alertSummary);
            // Convert the Ambari ServiceComponentInfo objects to Pipeline Controller ServiceComponents
            serviceStatusResponseList = transformAmbariServiceComponents(response, serviceAlerts, definedServiceComponentMap);
        } catch (RestClientException e) {
            Throwable cause;
            if (e.getCause() != null) {
                cause = e.getCause();
            } else {
                cause = e;
            }
            ServiceComponent ambariServiceComponent = new DefaultServiceComponent.Builder("Unknown", "Ambari", "Ambari REST_CLIENT", ServiceComponent.STATE.DOWN).exception(cause).build();
            List<ServiceComponent> ambariComponents = new ArrayList<>();
            ambariComponents.add(ambariServiceComponent);
            ServiceStatusResponse serviceStatusResponse = new DefaultServiceStatusResponse(ambariServiceComponent.getServiceName(), ambariComponents);
            serviceStatusResponseList.add(serviceStatusResponse);
            // add the other services as being Warnings
            addAmbariServiceErrors(cause.getMessage(), serviceStatusResponseList, definedServiceComponentMap);
        }
    }
    return serviceStatusResponseList;
}
Also used : ServiceComponentInfoSummary(com.thinkbiganalytics.servicemonitor.rest.model.ambari.ServiceComponentInfoSummary) DefaultServiceStatusResponse(com.thinkbiganalytics.servicemonitor.model.DefaultServiceStatusResponse) ServiceStatusResponse(com.thinkbiganalytics.servicemonitor.model.ServiceStatusResponse) DefaultServiceComponent(com.thinkbiganalytics.servicemonitor.model.DefaultServiceComponent) ServiceComponent(com.thinkbiganalytics.servicemonitor.model.ServiceComponent) ArrayList(java.util.ArrayList) DefaultServiceStatusResponse(com.thinkbiganalytics.servicemonitor.model.DefaultServiceStatusResponse) DefaultServiceComponent(com.thinkbiganalytics.servicemonitor.model.DefaultServiceComponent) ServiceAlert(com.thinkbiganalytics.servicemonitor.model.ServiceAlert) DefaultServiceAlert(com.thinkbiganalytics.servicemonitor.model.DefaultServiceAlert) RestClientException(org.springframework.web.client.RestClientException) ArrayList(java.util.ArrayList) List(java.util.List) AlertSummary(com.thinkbiganalytics.servicemonitor.rest.model.ambari.AlertSummary) AmbariClient(com.thinkbiganalytics.servicemonitor.rest.client.ambari.AmbariClient)

Aggregations

DefaultServiceComponent (com.thinkbiganalytics.servicemonitor.model.DefaultServiceComponent)9 ServiceComponent (com.thinkbiganalytics.servicemonitor.model.ServiceComponent)9 DefaultServiceStatusResponse (com.thinkbiganalytics.servicemonitor.model.DefaultServiceStatusResponse)7 ArrayList (java.util.ArrayList)6 DefaultServiceAlert (com.thinkbiganalytics.servicemonitor.model.DefaultServiceAlert)5 ServiceAlert (com.thinkbiganalytics.servicemonitor.model.ServiceAlert)5 ServiceStatusResponse (com.thinkbiganalytics.servicemonitor.model.ServiceStatusResponse)5 List (java.util.List)5 HashMap (java.util.HashMap)4 Map (java.util.Map)4 ApiClusterList (com.cloudera.api.model.ApiClusterList)2 ApiCluster (com.cloudera.api.model.ApiCluster)1 ApiHealthCheck (com.cloudera.api.model.ApiHealthCheck)1 ApiRole (com.cloudera.api.model.ApiRole)1 ApiService (com.cloudera.api.model.ApiService)1 AmbariClient (com.thinkbiganalytics.servicemonitor.rest.client.ambari.AmbariClient)1 ClouderaRootResource (com.thinkbiganalytics.servicemonitor.rest.client.cdh.ClouderaRootResource)1 AlertSummary (com.thinkbiganalytics.servicemonitor.rest.model.ambari.AlertSummary)1 ServiceComponentInfoItem (com.thinkbiganalytics.servicemonitor.rest.model.ambari.ServiceComponentInfoItem)1 ServiceComponentInfoSummary (com.thinkbiganalytics.servicemonitor.rest.model.ambari.ServiceComponentInfoSummary)1