Commit graph

1627 commits

Author SHA1 Message Date
Julius Volz a68b880c27 Add tests for new timestamp/duration functions.
...and fix the first bugs in them where they truncate precision below a
second.
2015-03-21 17:50:45 +01:00
Julius Volz cb816ea14a Improve timestamp/duration parsing in query API.
Don't handle `0` as a special timestamp value for "now" anymore, except
in the `QueryRange()` case, where existing API consumers still expect
`0` to mean "now".

Also, properly return errors now for malformed timestamp/duration
float values.
2015-03-21 16:58:45 +01:00
Julius Volz 8a4acefd66 Allow custom timestamps in instant query API. 2015-03-20 23:10:58 +01:00
Julius Volz c78436d707 Remove unused API time dependency injection. 2015-03-20 23:10:26 +01:00
beorn7 fbc44d8f95 Add benchmark for loading chunks and chunk descs. 2015-03-19 19:28:21 +01:00
Björn Rabenstein 942686427d Merge pull request #596 from prometheus/beorn7/ingestion-tweaks
Remove the ingestion channel.
2015-03-19 17:56:55 +01:00
Björn Rabenstein bf5fc720d3 Merge pull request #589 from prometheus/beorn7/persistence
Redesign series maintenance and chunk persistence.
2015-03-19 17:56:46 +01:00
Björn Rabenstein a3bd2f6eb8 Merge pull request #601 from prometheus/beorn7/rename-persist-queue
Rename persist queue len/cap to num/max chunks to persist.
2015-03-19 17:56:03 +01:00
Björn Rabenstein 5440422bca Merge pull request #603 from prometheus/beorn7/storage-resilience
Increase resilience of the storage against data corruption.
2015-03-19 17:55:37 +01:00
beorn7 6a21f73898 Fixes after review. 2015-03-19 17:54:59 +01:00
beorn7 51d35f4481 Instrument series maintenance durations. 2015-03-19 17:06:16 +01:00
Julius Volz 3c473c635b Merge pull request #600 from prometheus/fix-special-graph-values
More fixes around special values in graphs.
2015-03-19 16:55:54 +01:00
beorn7 12ae6e9203 Increase resilience of the storage against data corruption - step 4.
Step 4: Add a configurable sync'ing of series files after modification.
2015-03-19 15:58:02 +01:00
beorn7 11bd9ce1bd Increase resilience of the storage against data corruption - step 3.
Step 3: Remember the mtime of series files and make use of it to
detect series files that are not the one the checkpoint thinks they
are.
2015-03-19 15:44:11 +01:00
Julius Volz 6fa510d6fa More fixes around special values in graphs. 2015-03-19 14:26:25 +01:00
beorn7 e25cca823c Increase resilience of the storage against data corruption - step 2.
Step 2: Add a flag -storage.local.pedantic-checks to check every
series file.

Also, remove countPersistedHeadChunks channel, which is unused.
2015-03-19 12:06:15 +01:00
beorn7 3d8d8928be Increase resilience of the storage against data corruption - step 1.
Step 1: Admit the problem by turning the various "panic"s into logged
errors, followed by marking the persistence as dirty.
2015-03-19 11:49:18 +01:00
beorn7 da7c0461c6 Rename persist queue len/cap to num/max chunks to persist.
Remove deprecated flag storage.incoming-samples-queue-capacity.
2015-03-18 19:36:41 +01:00
beorn7 a075900f9a Merge branch 'beorn7/persistence' into beorn7/ingestion-tweaks 2015-03-18 19:09:31 +01:00
beorn7 1d8fc7d56f Change minor things after code review. 2015-03-18 19:09:07 +01:00
beorn7 1a86dd3893 Merge branch 'master' into beorn7/persistence 2015-03-18 18:57:55 +01:00
beorn7 fa1935a644 Remove /api/targets call and do not show job and instance labels on status.
/api/targets was undocumented and never used and also broken.

Showing instance and job labels on the status page (next to targets)
does not make sense as those labels are set in an obvious way.

Also add a doc comment to TargetStateToClass.
2015-03-18 18:53:43 +01:00
Julius Volz b68ecdd451 Merge pull request #599 from fabxc/fabxc/logexp
Add ln, log2, log10 and exp functions
2015-03-16 19:42:56 +01:00
Fabian Reinartz 624f27f4b6 Add ln, log2, log10 and exp functions to the query language. 2015-03-16 18:26:19 +01:00
beorn7 3f81622628 Merge branch 'master' into beorn7/persistence 2015-03-16 15:21:31 +01:00
Björn Rabenstein 36531b5278 Merge pull request #593 from prometheus/beorn7/chunk-encoding
Improve various things around chunk encoding.
2015-03-16 14:53:58 +01:00
Julius Volz 60c7748a17 Merge pull request #598 from prometheus/binop-special-float-values
Fix special value handling in division and modulo.
2015-03-16 14:52:45 +01:00
Julius Volz b2651027fc Fix special value handling in division and modulo.
This fixes https://github.com/prometheus/prometheus/issues/597
2015-03-16 14:23:40 +01:00
beorn7 be11cb2b07 Remove the sample ingestion channel.
The one central sample ingestion channel has caused a variety of
trouble. This commit removes it. Targets and rule evaluation call an
Append method directly now. To incorporate multiple storage backends
(like OpenTSDB), storage.Tee forks the Append into two different
appenders.

Note that the tsdb queue manager had its own queue anyway. It was a
queue after a queue... Much queue, so overhead...

Targets have their own little buffer (implemented as a channel) to
avoid stalling during an http scrape. But a new scrape will only be
started once the old one is fully ingested.

The contraption of three pipelined ingesters was removed. A Target is
an ingester itself now. Despite more logic in Target, things should be
less confusing now.

Also, remove lint and vet warnings in ast.go.
2015-03-15 14:08:22 +01:00
beorn7 0056eaeb4f Redesign series maintenance and chunk persistence. 2015-03-14 22:05:23 +01:00
beorn7 5bea942d8e Improve various things around chunk encoding.
A number of mostly minor things:

- Rename chunk type -> chunk encoding.

- After all, do not carry around the chunk encoding to all parts of
  the system, but just have one place where the encoding for new
  chunks is set based on the flag. The new approach has caveats as
  well, but the polution of so many method signatures is worse.

- Use the default chunk encoding for new chunks of existing
  series. (Previously, only new _series_ would get chunks with the
  default encoding.)

- Use an enum for chunk encoding. (But keep the version number for the
  flag, for reasons discussed previously.)

- Add encoding() to the chunk interface (so that a chunk knows its own
  encoding - no need to have that in a different top-level function).

- Got rid of newFollowUpChunk (which would keep the existing encoding
  for all chunks of a time series). Now only use newChunk(), which
  will create a chunk encoding according to the flag.

- Simplified transcodeAndAdd.

- Reordered methods of deltaEncodedChunk and doubleDeltaEncoded chunk
  to match the order in the chunk interface.

- Only transcode if the chunk is not yet half full. If more than half
  full, add a new chunk instead.
2015-03-14 19:03:20 +01:00
Julius Volz 6b0ef506f3 Merge pull request #595 from prometheus/show-special-values-as-gaps
Show special float values as gaps.
2015-03-14 03:29:58 +01:00
Julius Volz 91da12ad6a Show special float values as gaps. 2015-03-13 21:08:22 +01:00
Björn Rabenstein c63dfbfab5 Merge pull request #592 from prometheus/beorn7/fix
Remove hopelessly outdated tutorial.
2015-03-13 16:14:15 +01:00
beorn7 33ef2e411b Remove hopelessly outdated tutorial. 2015-03-13 15:50:57 +01:00
Björn Rabenstein d797546b2d Merge pull request #590 from prometheus/beorn7/fix
Sync the checkpoints.
2015-03-11 23:39:07 +01:00
beorn7 9ecf93526d Sync the checkpoints.
Because that's what should be done with checkpoints.
2015-03-11 19:10:51 +01:00
Julius Volz 7de2cf2fce Merge pull request #588 from prometheus/update-vendoring
Update vendored client_golang to 0.3.2.
2015-03-11 18:45:14 +01:00
Julius Volz 18efed761b Update vendored client_golang to 0.3.2.
For the Prometheus server, this fixes a bug where rules with a
right-hand-side that had a metric name would not correctly replace that
metric name with the left-hand side's rule name.
2015-03-11 18:20:02 +01:00
Björn Rabenstein afa7375d36 Merge pull request #587 from prometheus/beorn7/chunk-encoding
Actually use double-delta encoding for transcoding. :-o
2015-03-11 17:18:57 +01:00
beorn7 853f971540 Actually use double-delta encoding for transcoding. :-o 2015-03-11 16:52:58 +01:00
Björn Rabenstein d4ef509b0f Merge pull request #579 from prometheus/beorn7/chunk-encoding
Implement double-delta encoded chunks.
2015-03-07 23:57:47 +01:00
Julius Volz a9cbcf442d Merge pull request #583 from prometheus/nicer-target-health
Nicer formatting of target health table on /status.
2015-03-07 23:55:45 +01:00
Julius Volz 52ce3599c9 Nicer formatting of target health table on /status. 2015-03-07 23:35:28 +01:00
Julius Volz c0b71b2b6e Merge pull request #582 from prometheus/rename-unreachable
Rename UNREACHABLE to UNHEALTHY.
2015-03-07 23:32:30 +01:00
Julius Volz 140eede5e0 Rename UNREACHABLE to UNHEALTHY.
The current wording suggests that a target is not reachable at all,
although it might also get set when the target was reachable, but there
was some other error during the scrape (invalid headers or invalid
scrape content). UNHEALTHY is a more general wording that includes all
these cases.

For consistency, ALIVE is also renamed to HEALTHY.
2015-03-07 23:18:18 +01:00
beorn7 66e768f05e Improve docstring for chunk type flag. 2015-03-06 17:04:07 +01:00
beorn7 23ba8a5516 Make floats exact again.
This should do the right thing for the old delta chunks, too.
2015-03-06 17:03:56 +01:00
beorn7 a8d4f8af9a Improve minor things after review.
The problem of float precision will be addressed in the next commit.
2015-03-06 12:53:00 +01:00
beorn7 13fcf1ddbc Implement double-delta encoded chunks. 2015-03-05 20:33:26 +01:00