in src/main/java/com/netflix/bdp/s3mper/alert/impl/CloudWatchAlertDispatcher.java [269:345]
private void buildMessage(AbstractMessage message) {
String hostname = "unknown";
try {
hostname = InetAddress.getLocalHost().getHostName();
} catch (UnknownHostException e) {
log.warn("Failed to identify hostname",e);
}
message.setEpoch(System.currentTimeMillis());
message.setTimestamp(new Date(message.getEpoch()).toString());
message.setHostname(hostname);
String username = conf.get("user.name", System.getProperty("user.name"));
try {
username = UserGroupInformation.getCurrentUser().getUserName();
} catch (IOException e) {
log.warn("Failed to identify user using hadoop library.", e);
}
message.setUsername(username);
message.setGenieId(conf.get("genie.job.id"));
message.setDataovenId(conf.get("dataoven.job.id"));
String queryId = conf.get("hive.query.id");
QueryType queryType = QueryType.Unknown;
if(queryId != null) {
queryType = QueryType.Hive;
message.setLogFile(conf.get("hive.log.file"));
} else {
queryId = conf.get("pig.script.id");
if(queryId != null) {
queryType = QueryType.Pig;
message.setLogFile(conf.get("pig.logfile"));
}
}
message.setQueryId(queryId);
message.setQueryType(queryType);
message.setJobId(conf.get("mapred.job.id"));
message.setTaskId(conf.get("mapred.tip.id"));
message.setAttemptId(conf.get("mapred.task.id"));
message.setInputFile(conf.get("mapred.input.file"));
message.setEmail(conf.get("s3mper.email"));
try {
//We have to guess at this since it may not be explicitly in the config
if(message.getJobId() == null) {
String[] split = conf.get("mapreduce.job.dir").split("/");
String jobId = split[split.length - 1];
message.setJobId(jobId);
}
} catch (RuntimeException e) {
log.debug("Failed to determine job id");
}
try {
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
List<String> stackTrace = new ArrayList<String>(traceDepth);
for (int i = 0; i < traceDepth && i < stack.length; i++) {
stackTrace.add(stack[i].toString());
}
message.setStackTrace(stackTrace);
} catch (Exception e) {
log.debug("Stacktrace generation failed", e);
}
}