private List<GraphiteMetric> getUptimeMetrics() { List<GraphiteMetric> allGraphiteMetrics = new ArrayList<>(); try { int currentTimestampInSeconds = (int) (System.currentTimeMillis() / 1000); String rawUptime = FileIo.readFileToString(super.getLinuxProcFileSystemLocation() + "/uptime"); if ((rawUptime == null) || rawUptime.isEmpty()) return allGraphiteMetrics; int indexOfFirstSpace = rawUptime.indexOf(' '); if (indexOfFirstSpace == -1) return allGraphiteMetrics; String uptimeSinceOsBoot = rawUptime.substring(0, indexOfFirstSpace).trim(); if ((uptimeSinceOsBoot == null) || uptimeSinceOsBoot.isEmpty()) return allGraphiteMetrics; BigDecimal uptimeSinceOsBoot_BigDecimal = new BigDecimal(uptimeSinceOsBoot); if (uptimeSinceOsBoot_BigDecimal.compareTo(BigDecimal.ZERO) != -1) { allGraphiteMetrics.add( new GraphiteMetric( "OS_Uptime-Seconds", uptimeSinceOsBoot_BigDecimal, currentTimestampInSeconds)); } } catch (Exception e) { logger.error(e.toString() + System.lineSeparator() + StackTrace.getStringFromStackTrace(e)); } return allGraphiteMetrics; }
protected List<GenericMetricFormat> getMetricsFromFile( boolean alwaysCheckOutputFiles, String metricPrefix) { if (fileToMonitor_ == null) { return new ArrayList<>(); } List<GenericMetricFormat> metrics = new ArrayList<>(); if (FileIo.doesFileExist(fileToMonitor_)) { Long currentFileLastModifiedTimestamp = null; try { currentFileLastModifiedTimestamp = fileToMonitor_.lastModified(); } catch (Exception e) { logger.warn(e.toString() + System.lineSeparator() + StackTrace.getStringFromStackTrace(e)); } if ((currentFileLastModifiedTimestamp != null) && (currentFileLastModifiedTimestamp >= applicationStartTimeInMs_)) { boolean doesFileHaveNewerLastModifiedTimestamp = (previousFileLastModifiedTimestamp_ != null) && (previousFileLastModifiedTimestamp_ < currentFileLastModifiedTimestamp); if ((previousFileLastModifiedTimestamp_ == null) || ((previousFileLastModifiedTimestamp_ != null) && alwaysCheckOutputFiles) || doesFileHaveNewerLastModifiedTimestamp) { String fileContents = FileIo.readFileToString( fileToMonitor_, NUM_FILE_READ_RETRIES, DELAY_BETWEEN_READ_RETRIES_IN_MS); List<GenericMetricFormat> metricsFromFile = getMetricsFromString(fileContents, metricPrefix, applicationStartTimeInMs_); metrics.addAll(metricsFromFile); previousFileLastModifiedTimestamp_ = currentFileLastModifiedTimestamp; } } } return metrics; }