org.rrd4j.core.ArcDef Java Examples
The following examples show how to use
org.rrd4j.core.ArcDef.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DefaultMetricsDatabase.java From onos with Apache License 2.0 | 5 votes |
@Override public MetricsDatabase build() { checkNotNull(metricName, METRIC_NAME_MSG); checkNotNull(resourceName, RESOURCE_NAME_MSG); checkArgument(!dsDefs.isEmpty(), METRIC_TYPE_MSG); // define the resolution of monitored metrics rrdDef = new RrdDef(DB_PATH + SPLITTER + metricName + SPLITTER + resourceName, RESOLUTION_IN_SECOND); try { DsDef[] dsDefArray = new DsDef[dsDefs.size()]; IntStream.range(0, dsDefs.size()).forEach(i -> dsDefArray[i] = dsDefs.get(i)); rrdDef.addDatasource(dsDefArray); rrdDef.setStep(RESOLUTION_IN_SECOND); // raw archive, no aggregation is required ArcDef rawArchive = new ArcDef(CONSOL_FUNCTION, XFF_VALUE, STEP_VALUE, ROW_VALUE); rrdDef.addArchive(rawArchive); // always store the metric data in memory... rrdDb = new RrdDb(rrdDef, RrdBackendFactory.getFactory(STORING_METHOD)); } catch (IOException e) { log.warn("Failed to create a new round-robin database due to {}", e); } return new DefaultMetricsDatabase(metricName, resourceName, rrdDb); }
Example #2
Source File: MetricsHistoryHandler.java From lucene-solr with Apache License 2.0 | 4 votes |
private NamedList<Object> getDbData(RrdDb db, String[] dsNames, Format format, SolrParams params) throws IOException { NamedList<Object> res = new SimpleOrderedMap<>(); if (dsNames == null || dsNames.length == 0) { dsNames = db.getDsNames(); } StringBuilder str = new StringBuilder(); RrdDef def = db.getRrdDef(); ArcDef[] arcDefs = def.getArcDefs(); for (ArcDef arcDef : arcDefs) { SimpleOrderedMap<Object> map = new SimpleOrderedMap<>(); res.add(arcDef.dump(), map); Archive a = db.getArchive(arcDef.getConsolFun(), arcDef.getSteps()); // startTime / endTime, arcStep are in seconds FetchRequest fr = db.createFetchRequest(arcDef.getConsolFun(), a.getStartTime() - a.getArcStep(), a.getEndTime() + a.getArcStep()); FetchData fd = fr.fetchData(); if (format != Format.GRAPH) { // add timestamps separately from values long[] timestamps = fd.getTimestamps(); if (format == Format.LIST) { // Arrays.asList works only on arrays of Objects map.add("timestamps", Arrays.stream(timestamps).boxed().collect(Collectors.toList())); } else { str.setLength(0); for (int i = 0; i < timestamps.length; i++) { if (i > 0) { str.append('\n'); } str.append(String.valueOf(timestamps[i])); } map.add("timestamps", str.toString()); } } SimpleOrderedMap<Object> values = new SimpleOrderedMap<>(); map.add("values", values); for (String name : dsNames) { double[] vals = fd.getValues(name); switch (format) { case GRAPH: RrdGraphDef graphDef = new RrdGraphDef(); graphDef.setTitle(name); graphDef.datasource(name, fd); graphDef.setStartTime(a.getStartTime() - a.getArcStep()); graphDef.setEndTime(a.getEndTime() + a.getArcStep()); graphDef.setPoolUsed(false); graphDef.setAltAutoscale(true); graphDef.setAltYGrid(true); graphDef.setAltYMrtg(true); graphDef.setSignature("Apache Solr " + versionString); graphDef.setNoLegend(true); graphDef.setAntiAliasing(true); graphDef.setTextAntiAliasing(true); graphDef.setWidth(500); graphDef.setHeight(175); graphDef.setTimeZone(TimeZone.getDefault()); graphDef.setLocale(Locale.ROOT); // redraw immediately graphDef.setLazy(false); // area with a border graphDef.area(name, new Color(0xffb860), null); graphDef.line(name, Color.RED, null, 1.0f); RrdGraph graph = new RrdGraph(graphDef); BufferedImage bi = new BufferedImage( graph.getRrdGraphInfo().getWidth(), graph.getRrdGraphInfo().getHeight(), BufferedImage.TYPE_INT_RGB); graph.render(bi.getGraphics()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(bi, "png", baos); values.add(name, Base64.byteArrayToBase64(baos.toByteArray())); break; case STRING: str.setLength(0); for (int i = 0; i < vals.length; i++) { if (i > 0) { str.append('\n'); } str.append(String.valueOf(vals[i])); } values.add(name, str.toString()); break; case LIST: values.add(name, Arrays.stream(vals).boxed().collect(Collectors.toList())); break; } } } return res; }