Commit Graph

248 Commits

Author SHA1 Message Date
204c258980 ignore comment lines in CSV files 2019-12-14 08:11:12 +01:00
4e554bfa85 specify additional tags for CSV upload
You can now specify additional tags to be added to all entries.
This makes it possible to remove columns that would be identical
for all entries.
2019-12-14 07:59:22 +01:00
5d8df6888d move Entry and Entries to data-store 2019-12-13 18:15:10 +01:00
550d7ba44e add flag to make CSV upload wait until entries are flushed
To make it easier/possible to write stable unit test the CSV upload
can optionally wait until all entries have been flushed to disk.
This is necessary for tests that ingest data and then read the data.
2019-12-13 18:05:20 +01:00
07ad62ddd9 use Junit5 instead of TestNG
We want to be able to use @SpringBootTest tests that fully initialize
the Spring application. This is much easier done with Junit than TestNG.
Gradle does not support (at least not easily) to run Junit and TestNG
tests. Therefore we switch to Junit with all tests.
The original reason for using TestNG was that Junit didn't support
data providers. But that finally changed in Junit5 with
ParameterizedTest.
2019-12-13 14:33:20 +01:00
394e16ad27 make time column configurable
Adding the header of the time column to the
CsvReaderSettings. This is necessary to parse
arbitrary CSV files.
2019-12-09 18:59:48 +01:00
d383134c42 add support for ISO-like date formats
Recommind is using a pseudo ISO date format for their
log files. It uses a comma instead of a dot for the
second to milli second separator and it does not
add a timezone. Dates without timezone are assumed to be UTC.
2019-12-09 18:40:14 +01:00
60f1a79816 add settings to file upload
This makes it possible to define properties for
the uploaded CSV files. Currently we can define the
separator and which columns are to be ignored.
2019-12-08 20:20:13 +01:00
85679ca0c8 send CSV file via REST 2019-12-08 18:39:43 +01:00
30504672bc extend CsvReaderSettings by list of columns that will not be indexed 2019-12-01 09:21:07 +01:00
ffe5ae8652 add CsvReaderSettings
Preparation to add more complex CSV parsing rules.
2019-11-30 18:32:34 +01:00
08b1be5334 extract CSV reading code to new file
Refactoring to prepare the addition of CSV parsing rules. The parsing
rules will contain information about which columns to ingest or ignore.
This will be used to add the ability to upload files via HTTP post in
addition to the TcpIngestor.
2019-11-30 17:58:01 +01:00
9451feb268 add link to other solutions for the Angular/SpringBoot issue 2019-11-29 20:09:03 +01:00
8832d52ceb enable new Angular application
Remove the controller method that returned the VueJS index page.
Add resource handlers that redirect to the Angular application.
I added two implementations, but activated only one. At the moment I am
not sure which solution is the better. We keep both so that we can
easily switch if need arises.
2019-11-29 20:04:54 +01:00
2d4104e6c1 remove old VueJS application 2019-11-29 20:00:58 +01:00
06b379494f apply new code formatter and save action 2019-11-24 10:20:43 +01:00
e2a33ac6e2 make the code that determines which axis to use explicit
In the previous changeset the code that determined
which axis the plots used was implemented as a
side effect of getting the Gnuplot definition of
an axis.
Changed that to an explit update call with simpler
logic.
2019-11-24 09:08:36 +01:00
57c5cca688 fetch possible values for gallery view 2019-11-14 18:45:32 +01:00
10a7710940 fix CSV parser corrupts duration if duration is last element in line 2019-11-14 18:40:14 +01:00
d9b2327f35 make default for 'splitBy' configurable 2019-11-10 16:33:37 +01:00
198b51089d make defaults for groupBy configurable
We do not know which fields exist at compile time.
But it is a great help to have some pre-selected
fields in groupBy.
Solved by adding a configuration option.
2019-11-10 09:38:16 +01:00
bb8b183f91 rename yAxisScale to axisScale
For some reason PlotRequest.yAxisScale does
not work. PlotRequest.axisScale does work.
2019-10-29 18:08:31 +01:00
5a7cde7815 show plotted images 2019-10-27 08:08:55 +01:00
3190074ce3 add examples to the query suggestions 2019-10-26 19:14:51 +02:00
f28a67a5c1 make it possible to render any combination of plots 2019-10-20 10:16:25 +02:00
b7c4fe4c1f move scatter plot creation into an AggregateHandler 2019-10-20 08:11:09 +02:00
4749d54499 fix deprecations due to SpringBoot 2.2.0
replace deprecated MediaType.APPLICATION_JSON_UTF8_VALUE with
MediaType.APPLICATION_JSON_VALUE
2019-10-19 18:56:44 +02:00
7ca7b80255 create icons for plot types 2019-10-10 12:00:41 +02:00
2787b42c31 adding a few filters (no doing anything yet) 2019-10-09 19:02:34 +02:00
4161cd7f98 only field prefixes returned instead of full values
When using autocomplete to return field values I
missed, that autocomplete had the feature that cut
values at dots. So instead of returning full field
values only the prefix up to the first dot was
returned.
Fixed by making the cut-at-dot feature optional.
2019-08-27 20:37:07 +02:00
2f35978184 fetch available values for gallery via autocomplete method
We had a method that returned the values of a field
with respect to a query. That method was inefficient,
because it executed the query, fetched all Docs
and collected the values.
The autocomplete method we introduced a while back
can answer the same question but much more efficiently.
2019-08-25 18:52:05 +02:00
da97a13ed8 add new ranges for date picker 2019-08-25 10:40:05 +02:00
2cd0d71dde fix compile error in Eclipse
Eclipse marked this as an error. A Gradle build had
no issue.
2019-08-25 10:26:39 +02:00
5b57417f75 make the tics on the y-axis easier readable
People are having trouble to understand durations like
100000 or 2.7E+6 milliseconds. Therefore we are
hanging the labels on the y-axis to include the unit
in the tic's label. We also use multiples of seconds,
minutes, hours and days instead of multiples of 10.
2019-08-25 10:25:47 +02:00
3252fcf42d improve trace logging
- Add filename for trace logs for read/write operations.
2019-08-18 09:25:49 +02:00
574a9c9cc4 update jquery to 3.4.1 2019-07-04 19:12:54 +02:00
a8d77562c9 update daterangepicker to 3.0.5 2019-07-04 19:11:00 +02:00
2cb81e5acd make it possible to ignore columns using the csv ingestor 2019-07-04 09:51:33 +02:00
2eb2a69c17 rename 'percentile' plots to 'cumulative distribution' 2019-05-12 14:30:16 +02:00
dfe9579726 use DateTimeRange.max() instead of arbitrary relative range 2019-04-20 20:36:26 +02:00
d82b33c60e update js libraries 2019-04-20 20:31:51 +02:00
dbe0e02517 rename cluster to partition
We are not clustering the indices, we
are partitioning them.
2019-04-14 10:10:16 +02:00
2a1885a77f cluster the indices 2019-03-31 09:01:55 +02:00
b5e2d0a217 introduce clustering for query completion indices 2019-03-16 10:19:28 +01:00
59aea1a15f introduce index clustering (part 1)
In order to prevent files from getting too big and
make it easier to implement retention policies, we
are splitting all files into chunks. Each chunk
contains the data for a time interval (1 month per
default).
This first changeset introduces the ClusteredPersistentMap
that implements this for PersistentMap. It is used
for a couple (not all) of indices.
2019-02-24 16:50:57 +01:00
fd55ea0866 update vuejs to 2.6.4
Added the version to moment.min.js
2019-02-09 15:39:28 +01:00
93dea402a5 remove obsolete class 2019-02-09 15:25:39 +01:00
493971bcf3 values used in queries were added to the keys.csv
Due to a mistake in Tag which added all strings used
by Tag into the String dictionary, the dictionary
did contain all values that were used in queries.
2019-02-09 08:28:23 +01:00
668d73c926 introduced a new custom file format used for backup and ingestion
The new file format reduces repetition, is easy to parse,
easy to generate in any language and is human readable.
2019-02-03 15:44:35 +01:00
4cde10a9f2 read csv using input stream instead of reader
We are now reading the CSV input without transforming
the data into strings. This reduces the amount of bytes
that have to be converted and copied.
We also made Tag smaller. It no longer stores pointers
to strings, instead it stored integers obtained by
compressing the strings (see StringCompressor). This
reduces memory usage and it speeds up hashcode and
equals, which speeds up access to the writer cache.

Performance gain is almost 100%:
- 330k entries/s -> 670k entries/s, top speed measured over a second
- 62s -> 32s, to ingest 16 million entries
2019-01-01 08:31:28 +01:00