Search in sources :

Example 1 with CruiseControlUtils.utcDateFor

use of com.linkedin.cruisecontrol.CruiseControlUtils.utcDateFor in project cruise-control by linkedin.

the class AlertaSelfHealingNotifier method alertTopicAnomaly.

private void alertTopicAnomaly(AnomalyType anomalyType, final String localHostname, List<AlertaMessage> alertaMessages, TopicAnomaly topicAnomaly) {
    if (topicAnomaly instanceof TopicPartitionSizeAnomaly) {
        TopicPartitionSizeAnomaly topicPartitionSizeAnomaly = (TopicPartitionSizeAnomaly) topicAnomaly;
        for (Map.Entry<TopicPartition, Double> entry : topicPartitionSizeAnomaly.sizeInMbByPartition().entrySet()) {
            AlertaMessage alertaMessage = new AlertaMessage(localHostname, ALERT_MESSAGE_PREFIX_TOPIC_PARTITION_SIZE_ANOMALY + entry.getKey().toString());
            alertaMessage.setSeverity(NotifierUtils.getAlertSeverity(anomalyType).toString());
            alertaMessage.setGroup(AlertaAlertGroup.PERFORMANCE.toString());
            alertaMessage.setValue(String.format("%f MB", entry.getValue()));
            alertaMessage.setCreateTime(CruiseControlUtils.utcDateFor(topicAnomaly.detectionTimeMs(), 3, ChronoUnit.SECONDS));
            alertaMessages.add(alertaMessage);
        }
    } else if (topicAnomaly instanceof TopicReplicationFactorAnomaly) {
        TopicReplicationFactorAnomaly topicReplicationFactorAnomaly = (TopicReplicationFactorAnomaly) topicAnomaly;
        for (Entry<Short, Set<TopicReplicationFactorAnomalyEntry>> entry : topicReplicationFactorAnomaly.badTopicsByDesiredRF().entrySet()) {
            entry.getValue().forEach(topicReplicationFactorAnomalyEntry -> {
                AlertaMessage alertaMessage = new AlertaMessage(localHostname, ALERT_MESSAGE_PREFIX_TOPIC_REPLICATION_FACTOR_ANOMALY + topicReplicationFactorAnomalyEntry.topicName());
                alertaMessage.setSeverity(NotifierUtils.getAlertSeverity(anomalyType).toString());
                alertaMessage.setGroup(AlertaAlertGroup.PERFORMANCE.toString());
                alertaMessage.setValue(String.format("%.2f", topicReplicationFactorAnomalyEntry.violationRatio()));
                alertaMessage.setCreateTime(CruiseControlUtils.utcDateFor(topicAnomaly.detectionTimeMs(), 3, ChronoUnit.SECONDS));
                alertaMessages.add(alertaMessage);
            });
        }
    } else {
        AlertaMessage alertaMessage = new AlertaMessage(localHostname, anomalyType.toString());
        alertaMessage.setSeverity(NotifierUtils.getAlertSeverity(anomalyType).toString());
        alertaMessage.setGroup(AlertaAlertGroup.PERFORMANCE.toString());
        alertaMessage.setCreateTime(CruiseControlUtils.utcDateFor(topicAnomaly.detectionTimeMs(), 3, ChronoUnit.SECONDS));
        alertaMessages.add(alertaMessage);
    }
}
Also used : GoalViolations(com.linkedin.kafka.cruisecontrol.detector.GoalViolations) BrokerEntity(com.linkedin.kafka.cruisecontrol.monitor.sampling.holder.BrokerEntity) BrokerFailures(com.linkedin.kafka.cruisecontrol.detector.BrokerFailures) LoggerFactory(org.slf4j.LoggerFactory) KafkaMetricAnomaly(com.linkedin.kafka.cruisecontrol.detector.KafkaMetricAnomaly) TopicAnomaly(com.linkedin.kafka.cruisecontrol.detector.TopicAnomaly) ArrayList(java.util.ArrayList) InetAddress(java.net.InetAddress) Anomaly(com.linkedin.cruisecontrol.detector.Anomaly) TopicReplicationFactorAnomaly(com.linkedin.kafka.cruisecontrol.detector.TopicReplicationFactorAnomaly) DiskFailures(com.linkedin.kafka.cruisecontrol.detector.DiskFailures) Map(java.util.Map) MaintenanceEvent(com.linkedin.kafka.cruisecontrol.detector.MaintenanceEvent) TopicPartition(org.apache.kafka.common.TopicPartition) CruiseControlUtils.utcDateFor(com.linkedin.cruisecontrol.CruiseControlUtils.utcDateFor) Logger(org.slf4j.Logger) CruiseControlUtils(com.linkedin.cruisecontrol.CruiseControlUtils) Time(org.apache.kafka.common.utils.Time) AnomalyType(com.linkedin.cruisecontrol.detector.AnomalyType) Set(java.util.Set) IOException(java.io.IOException) UnknownHostException(java.net.UnknownHostException) List(java.util.List) ChronoUnit(java.time.temporal.ChronoUnit) TopicReplicationFactorAnomalyEntry(com.linkedin.kafka.cruisecontrol.detector.TopicReplicationFactorAnomaly.TopicReplicationFactorAnomalyEntry) Entry(java.util.Map.Entry) TopicPartitionSizeAnomaly(com.linkedin.kafka.cruisecontrol.detector.TopicPartitionSizeAnomaly) Collections(java.util.Collections) TopicReplicationFactorAnomalyEntry(com.linkedin.kafka.cruisecontrol.detector.TopicReplicationFactorAnomaly.TopicReplicationFactorAnomalyEntry) Entry(java.util.Map.Entry) TopicPartition(org.apache.kafka.common.TopicPartition) TopicPartitionSizeAnomaly(com.linkedin.kafka.cruisecontrol.detector.TopicPartitionSizeAnomaly) Map(java.util.Map) TopicReplicationFactorAnomaly(com.linkedin.kafka.cruisecontrol.detector.TopicReplicationFactorAnomaly) TopicReplicationFactorAnomalyEntry(com.linkedin.kafka.cruisecontrol.detector.TopicReplicationFactorAnomaly.TopicReplicationFactorAnomalyEntry)

Aggregations

CruiseControlUtils (com.linkedin.cruisecontrol.CruiseControlUtils)1 CruiseControlUtils.utcDateFor (com.linkedin.cruisecontrol.CruiseControlUtils.utcDateFor)1 Anomaly (com.linkedin.cruisecontrol.detector.Anomaly)1 AnomalyType (com.linkedin.cruisecontrol.detector.AnomalyType)1 BrokerFailures (com.linkedin.kafka.cruisecontrol.detector.BrokerFailures)1 DiskFailures (com.linkedin.kafka.cruisecontrol.detector.DiskFailures)1 GoalViolations (com.linkedin.kafka.cruisecontrol.detector.GoalViolations)1 KafkaMetricAnomaly (com.linkedin.kafka.cruisecontrol.detector.KafkaMetricAnomaly)1 MaintenanceEvent (com.linkedin.kafka.cruisecontrol.detector.MaintenanceEvent)1 TopicAnomaly (com.linkedin.kafka.cruisecontrol.detector.TopicAnomaly)1 TopicPartitionSizeAnomaly (com.linkedin.kafka.cruisecontrol.detector.TopicPartitionSizeAnomaly)1 TopicReplicationFactorAnomaly (com.linkedin.kafka.cruisecontrol.detector.TopicReplicationFactorAnomaly)1 TopicReplicationFactorAnomalyEntry (com.linkedin.kafka.cruisecontrol.detector.TopicReplicationFactorAnomaly.TopicReplicationFactorAnomalyEntry)1 BrokerEntity (com.linkedin.kafka.cruisecontrol.monitor.sampling.holder.BrokerEntity)1 IOException (java.io.IOException)1 InetAddress (java.net.InetAddress)1 UnknownHostException (java.net.UnknownHostException)1 ChronoUnit (java.time.temporal.ChronoUnit)1 ArrayList (java.util.ArrayList)1 Collections (java.util.Collections)1