Commit Graph
516 Commits
Author SHA1 Message Date
Stan Hu 7403df6ca7 Merge branch 'suppress-allow-failure-builds' into 'master'
Suppress e-mails on failed builds if allow_failure is set

Every time I push to GitLab, I get > 2 emails saying a spec failed when I don't care about the benchmarks and others that have `allow_failure` set to `true`.

@ayufan mentioned creating a summary e-mail to prevent getting one e-mail per build, but the latter might actually be desirable. For example, I do want to know if Rubocop errors fail right away.

See merge request !2178
2016-01-08 17:31:35 +00:00
Robert Speicher 65308a9c15 Add spec for single-item task lists 2016-01-07 15:25:39 -05:00
Robert Speicher 90510f0037 Merge branch 'milestone-ref' into 'master'
Link to milestone in "Milestone changed" system note

Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/4141

See merge request !2203
2016-01-07 19:22:43 +00:00
Stan Hu 69209612e1 Suppress e-mails on failed builds if allow_failure is set
Every time I push to GitLab, I get > 2 emails saying a spec failed when
I don't care about benchmarks and other specs that have `allow_failure` set to `true`.
2016-01-07 10:45:39 -08:00
Yorick Peterse 7b10cb6f0f Store request methods/URIs as values
Since filtering by these values is very rare (they're mostly just
displayed as-is) we don't need to waste any index space by saving them
as tags. By storing them as values we also greatly reduce the number of
series in InfluxDB.
2016-01-07 13:05:00 +01:00
Yorick Peterse 364b07cff0 Removed UUIDs from metrics transactions
While useful for finding out what methods/views belong to a transaction
this might result in too much data being stored in InfluxDB.
2016-01-07 12:44:15 +01:00
Douwe Maan 539b41929b Milestone reference is a Markdown link 2016-01-07 12:26:05 +01:00
Yorick Peterse 7ed3a5a240 Revert "Store SQL/view timings in milliseconds"
This reverts commit 7549102bb7.

Apparently I was wrong about
ActiveSupport::Notifications::Event#duration returning the duration in
seconds, instead it returns it in milliseconds already.
2016-01-07 11:47:06 +01:00
Yorick Peterse 7549102bb7 Store SQL/view timings in milliseconds
Transaction timings are also already stored in milliseconds, this keeps
things consistent.
2016-01-06 16:37:14 +01:00
Douglas Barbosa Alexandre 837a9065f0 Ensure that we're only importing local pull requests 2016-01-05 15:24:55 -02:00
Douglas Barbosa Alexandre 98909dd12c Generate separate comments when importing GitHub Issues into GitLab 2016-01-05 15:24:55 -02:00
Douglas Barbosa Alexandre dc72a8b305 Refactoring GithubImport::Importer 2016-01-05 15:24:55 -02:00
Douwe Maan 0b66151632 Remove icon from milestone reference. 2016-01-05 16:45:53 +01:00
Douwe Maan fd91b48f24 Merge branch 'master' into milestone-ref 2016-01-05 16:40:23 +01:00
Douwe Maan a7c424515c Merge branch 'rs-relative-links-to-root' into 'master'
Support a single directory traversal in RelativeLinkFilter

Prior, if we were viewing a blob at
`https://example.com/namespace/project/blob/master/doc/some-file.md` and
it contained a relative link such as `[README](../README.md)`, the
resulting link when viewing the blob would be:
`https://example.com/namespace/project/blob/README.md` which omits the
`master` ref, resulting in a 404.

Fixes https://gitlab.com/gitlab-org/release-tools/issues/3

See merge request !2247
2016-01-05 13:32:25 +00:00
Dmitriy Zaporozhets 9914893954 Merge branch 'metrics-tuning' into 'master'
Tuning of metrics data to store

This removes data we don't really need, as well as making sure we don't overload any cache stores or databases.

See merge request !2265
2016-01-05 09:32:19 +00:00
Yorick Peterse 8de491a68f Fix Rubocop styling in AR subscriber specs 2016-01-04 14:21:39 +01:00
Yorick Peterse 2ee8f55599 Automatically prefix transaction series names
This ensures Rails and Sidekiq transactions are split into the series
"rails_transactions" and "sidekiq_transactions" respectively.
2016-01-04 13:17:02 +01:00
Yorick Peterse 2ea464bb27 Use separate series for Rails/Sidekiq sample stats
This removes the need for any tags to differentiate between Sidekiq and
Rails statistics while still being able to separate the two.
2016-01-04 12:45:31 +01:00
Yorick Peterse 825b46f8a3 Track total method call times per transaction
This makes it easier to see where time is spent without having to
aggregate all the individual points in the method_calls series.
2016-01-04 12:19:45 +01:00
Yorick Peterse 66a997a914 Track total query/view timings in transactions 2016-01-04 12:14:36 +01:00
Yorick Peterse 96075be6f4 Ability to increment custom transaction values
This will be used to store/increment the total query/view rendering
timings on a per transaction basis. This in turn can greatly reduce the
amount of metrics stored.
2016-01-04 11:37:46 +01:00
Yorick Peterse cafc784ee1 Removed tracking of hostnames for metrics
This isn't hugely useful and mostly wastes InfluxDB space. We can re-add
this whenever needed (but only once we really need it).
2015-12-31 17:55:10 +01:00
Yorick Peterse bd9f86bb8a Use separate series for Rails/Sidekiq transactions
This removes the need for tagging all metrics with a "process_type" tag.
2015-12-31 17:52:51 +01:00
Yorick Peterse 55ed6e1c96 Cache InfluxDB settings after the first use
This ensures we don't need to load anything from either PostgreSQL or
the Rails cache whenever creating new InfluxDB connections.
2015-12-31 17:47:07 +01:00
Yorick Peterse a6c60127e3 Removed tracking of raw SQL queries
This particular setup had 3 problems:

1. Storing SQL queries as tags is very inefficient as InfluxDB ends up
   indexing every query (and they can get pretty large). Storing these
   as values instead means we can't always display the SQL as easily.
2. We already instrument ActiveRecord query methods, thus we already
   have timing information about database queries.
3. SQL obfuscation is difficult to get right and I'd rather not expose
   sensitive data by accident.
2015-12-31 17:14:02 +01:00
Yorick Peterse 054df415f9 Optimize CSS expressions produced by Nokogiri
Nokogiri produces inefficient XPath expressions when given CSS
expressions such as "a.gfm". Luckily these expressions can be optimized
quite easily while still achieving the same results.

In the two cases where this optimization is applied the run time has
been reduced from around 170 ms to around 15 ms.
2015-12-31 15:46:47 +01:00
Yorick Peterse c936e4e3c8 Removed various default metrics tags
While it's useful to keep track of the different versions (Ruby, GitLab,
etc) doing so for every point wastes disk space and possibly also RAM
(which InfluxDB is all to eager to gobble up). If we want to see the
performance differences between different GitLab versions simply looking
at the performance since the last release date should suffice.
2015-12-31 11:26:04 +01:00
Robert Speicher d9d2e8a3e8 Support a single directory traversal in RelativeLinkFilter
Prior, if we were viewing a blob at
`https://example.com/namespace/project/blob/master/doc/some-file.md` and
it contained a relative link such as `[README](../README.md)`, the
resulting link when viewing the blob would be:
`https://example.com/namespace/project/blob/README.md` which omits the
`master` ref, resulting in a 404.
2015-12-30 15:36:59 -05:00
Yorick Peterse 620e7bb3d6 Write to InfluxDB directly via UDP
This removes the need for Sidekiq and any overhead/problems introduced
by TCP. There are a few things to take into account:

1. When writing data to InfluxDB you may still get an error if the
   server becomes unavailable during the write. Because of this we're
   catching all exceptions and just ignore them (for now).
2. Writing via UDP apparently requires the timestamp to be in
   nanoseconds. Without this data either isn't written properly.
3. Due to the restrictions on UDP buffer sizes we're writing metrics one
   by one, instead of writing all of them at once.
2015-12-29 14:53:45 +01:00
Yorick Peterse 03478e6d5b Strip newlines from obfuscated SQL
Newlines aren't really needed and they may mess with InfluxDB's line
protocol.
2015-12-29 13:40:08 +01:00
Robert Speicher f0ecd69be5 Merge branch 'fix-spelling-mistake' into 'master'
Fix spelling mistake, thanks Connor.

[ci skip]

See merge request !2227
2015-12-29 00:13:16 +00:00
Yorick Peterse ed214a11ca Handle missing settings table for metrics
This ensures we can still boot, even when the "application_settings"
table doesn't exist.
2015-12-28 22:38:34 +01:00
Sytse Sijbrandij 4465e2eca0 Fix spelling mistake, thanks Connor. 2015-12-28 17:08:15 +01:00
Dmitriy Zaporozhets 540eb0a9af Merge branch 'influxdb' into 'master'
Storing of application metrics in InfluxDB

This adds support for tracking metrics in InfluxDB, which in turn can be visualized using Grafana. For more information see #2936.

See merge request !2042
2015-12-28 13:42:15 +00:00
Douwe Maan ef8b1dbf21 Merge branch 'master' into milestone-ref 2015-12-24 21:19:17 +01:00
Douwe Maan 43a3a401bd Merge branch 'master' into mention-all 2015-12-24 20:34:19 +01:00
Douwe Maan 672cbbff95 Only allow group/project members to mention @all 2015-12-24 15:33:51 +01:00
Douwe Maan 989131c530 Render milestone links as references 2015-12-24 14:43:07 +01:00
Patricio Cano 1d3889eb46 Fix identity and user retrieval when special characters are used 2015-12-22 13:23:35 -05:00
Drew Blessing f177aaa5fa Backport JIRA service 2015-12-18 14:19:48 -06:00
Yorick Peterse f181f05e8a Track object counts using the "allocations" Gem
This allows us to track the counts of actual classes instead of "T_XXX"
nodes. This is only enabled on CRuby as it uses CRuby specific APIs.
2015-12-17 17:25:48 +01:00
Yorick Peterse a93a32a290 Support for instrumenting class hierarchies
This will be used to (for example) instrument all ActiveRecord models.
2015-12-17 17:25:48 +01:00
Yorick Peterse a41287d898 Only track method calls above a certain threshold
This ensures we don't end up wasting resources by tracking method calls
that only take a few microseconds. By default the threshold is 10
milliseconds but this can be changed using the gitlab.yml configuration
file.
2015-12-17 17:25:48 +01:00
Yorick Peterse 13dbd663ac Allow filtering of what methods to instrument
This makes it possible to determine if a method should be instrumented
or not using a block.
2015-12-17 17:25:48 +01:00
Yorick Peterse 9f95ff0d90 Track location information as tags
This allows the information to be displayed when using certain functions
(e.g. top()) as well as making it easier to aggregate on a per file
basis.
2015-12-17 17:25:48 +01:00
Yorick Peterse f932b781a7 Replace double quotes when obfuscating SQL
InfluxDB escapes double quotes upon output which makes it a pain to deal
with. This ensures that if we're using PostgreSQL we don't store any
queries containing double quotes in InfluxDB, solving the escaping
problem.
2015-12-17 17:25:48 +01:00
Yorick Peterse 09a311568a Track object count types as tags 2015-12-17 17:25:48 +01:00
Yorick Peterse 641761f1d6 Only instrument methods defined directly
When using instrument_methods/instrument_instance_methods we only want
to instrument methods defined directly in a class, not those included
via mixins (e.g. whatever RSpec throws in during development).

In case an externally included method _has_ to be instrumented we can
still use the regular instrument_method/instrument_instance_method
methods.
2015-12-17 17:25:48 +01:00
Yorick Peterse f43f3b89a6 Added Instrumentation.configure
This makes it easier to instrument multiple modules without having to
type the full namespace over and over again.
2015-12-17 17:25:48 +01:00