influxdb-rails 1.0.1.beta2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rubocop.yml +18 -0
- data/.github/workflows/spec.yml +32 -0
- data/.rubocop.yml +36 -7
- data/CHANGELOG.md +22 -1
- data/README.md +43 -34
- data/gemfiles/Gemfile.rails-6.0.x +1 -2
- data/gemfiles/Gemfile.rails-6.1.x +9 -0
- data/influxdb-rails.gemspec +2 -2
- data/lib/influxdb/rails/middleware/active_job_subscriber.rb +11 -11
- data/lib/influxdb/rails/middleware/request_subscriber.rb +9 -1
- data/lib/influxdb/rails/railtie.rb +0 -1
- data/lib/influxdb/rails/sql/normalizer.rb +3 -3
- data/lib/influxdb/rails/tags.rb +2 -2
- data/lib/influxdb/rails/values.rb +1 -1
- data/lib/influxdb/rails/version.rb +1 -1
- data/lib/influxdb-rails.rb +1 -2
- data/lib/rails/generators/influxdb/templates/initializer.rb +4 -0
- data/sample-dashboard/Dockerfile +2 -2
- data/sample-dashboard/README.md +21 -28
- data/sample-dashboard/Rakefile +10 -5
- data/sample-dashboard/Ruby On Rails ActiveJob.json +600 -0
- data/sample-dashboard/{Ruby On Rails Performance (per Action).json → Ruby On Rails Performance per Action.json } +343 -589
- data/sample-dashboard/{Ruby On Rails Performance (per Request).json → Ruby On Rails Performance per Request.json } +361 -211
- data/sample-dashboard/Ruby On Rails Performance.json +1347 -1139
- data/sample-dashboard/Ruby On Rails Requests.json +834 -0
- data/sample-dashboard/Ruby On Rails Slowlog by Action.json +278 -0
- data/sample-dashboard/Ruby On Rails Slowlog by Request.json +277 -0
- data/sample-dashboard/Ruby On Rails Slowlog by SQL.json +328 -0
- data/sample-dashboard/docker-compose.yml +6 -1
- data/sample-dashboard/provisioning/activejob.json +600 -0
- data/sample-dashboard/provisioning/performance-action.json +334 -580
- data/sample-dashboard/provisioning/performance-request.json +355 -205
- data/sample-dashboard/provisioning/performance.json +1336 -1128
- data/sample-dashboard/provisioning/requests.json +834 -0
- data/sample-dashboard/provisioning/slowlog-action.json +278 -0
- data/sample-dashboard/provisioning/slowlog-requests.json +277 -0
- data/sample-dashboard/provisioning/slowlog-sql.json +328 -0
- data/spec/requests/action_controller_metrics_spec.rb +24 -10
- data/spec/requests/action_mailer_deliver_metrics_spec.rb +4 -11
- data/spec/requests/action_view_collection_metrics_spec.rb +7 -16
- data/spec/requests/action_view_partial_metrics_spec.rb +6 -15
- data/spec/requests/action_view_template_metrics_spec.rb +6 -15
- data/spec/requests/active_job_enqueue_metrics_spec.rb +6 -15
- data/spec/requests/active_job_perform_metrics_spec.rb +5 -11
- data/spec/requests/active_record_instantiation_metrics_spec.rb +7 -16
- data/spec/requests/active_record_sql_metrics_spec.rb +13 -29
- data/spec/requests/block_inistrumentation_spec.rb +8 -17
- data/spec/requests/context_spec.rb +1 -1
- data/spec/requests/logger_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -1
- data/spec/support/rails5/app.rb +3 -4
- data/spec/support/rails6/app.rb +3 -4
- data/spec/unit/tags.rb +47 -0
- metadata +25 -14
- data/.travis.yml +0 -28
- data/spec/requests/active_job_perform_start_metrics_spec.rb +0 -68
@@ -16,7 +16,7 @@ module InfluxDB
|
|
16
16
|
{
|
17
17
|
method: "#{payload[:controller]}##{payload[:action]}",
|
18
18
|
hook: "process_action",
|
19
|
-
status:
|
19
|
+
status: status,
|
20
20
|
format: payload[:format],
|
21
21
|
http_method: payload[:method],
|
22
22
|
exception: payload[:exception]&.first,
|
@@ -38,6 +38,14 @@ module InfluxDB
|
|
38
38
|
configuration.client.time_precision
|
39
39
|
)
|
40
40
|
end
|
41
|
+
|
42
|
+
def status
|
43
|
+
if payload[:exception] && ::Rails::VERSION::MAJOR < 7
|
44
|
+
ActionDispatch::ExceptionWrapper.status_code_for_exception(payload[:exception].first)
|
45
|
+
else
|
46
|
+
payload[:status]
|
47
|
+
end
|
48
|
+
end
|
41
49
|
end
|
42
50
|
end
|
43
51
|
end
|
@@ -32,7 +32,6 @@ module InfluxDB
|
|
32
32
|
"sql.active_record" => Middleware::SqlSubscriber,
|
33
33
|
"instantiation.active_record" => Middleware::ActiveRecordSubscriber,
|
34
34
|
"enqueue.active_job" => Middleware::ActiveJobSubscriber,
|
35
|
-
"perform_start.active_job" => Middleware::ActiveJobSubscriber,
|
36
35
|
"perform.active_job" => Middleware::ActiveJobSubscriber,
|
37
36
|
"deliver.action_mailer" => Middleware::ActionMailerSubscriber,
|
38
37
|
"block_instrumentation.influxdb_rails" => Middleware::BlockInstrumentationSubscriber,
|
@@ -8,9 +8,9 @@ module InfluxDB
|
|
8
8
|
|
9
9
|
def perform
|
10
10
|
query.squish!
|
11
|
-
query.gsub!(/(\s(=|>|<|>=|<=|<>|!=)\s)('[^']+'|[
|
12
|
-
query.gsub!(/(\sIN\s)\([
|
13
|
-
regex = /(\sBETWEEN\s)('[^']+'|[
|
11
|
+
query.gsub!(/(\s(=|>|<|>=|<=|<>|!=)\s)('[^']+'|[$+\-\w.]+)/, '\1xxx')
|
12
|
+
query.gsub!(/(\sIN\s)\([^()]+\)/i, '\1(xxx)')
|
13
|
+
regex = /(\sBETWEEN\s)('[^']+'|[+\-\w.]+)(\sAND\s)('[^']+'|[+\-\w.]+)/i
|
14
14
|
query.gsub!(regex, '\1xxx\3xxx')
|
15
15
|
query.gsub!(/(\sVALUES\s)\(.+\)/i, '\1(xxx)')
|
16
16
|
query.gsub!(/(\s(LIKE|ILIKE|SIMILAR TO|NOT SIMILAR TO)\s)('[^']+')/i, '\1xxx')
|
data/lib/influxdb/rails/tags.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module InfluxDB
|
2
2
|
module Rails
|
3
3
|
class Tags
|
4
|
-
def initialize(tags: {},
|
4
|
+
def initialize(config:, tags: {}, additional_tags: InfluxDB::Rails.current.tags)
|
5
5
|
@tags = tags
|
6
6
|
@config = config
|
7
7
|
@additional_tags = additional_tags
|
@@ -9,7 +9,7 @@ module InfluxDB
|
|
9
9
|
|
10
10
|
def to_h
|
11
11
|
expanded_tags.reject do |_, value|
|
12
|
-
value.
|
12
|
+
value.to_s.blank?
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
data/lib/influxdb-rails.rb
CHANGED
@@ -11,6 +11,10 @@ InfluxDB::Rails.configure do |config|
|
|
11
11
|
# config.client.username = "root"
|
12
12
|
# config.client.password = "root"
|
13
13
|
|
14
|
+
## If your InfluxDB service requires an HTTPS connection then you can
|
15
|
+
## enable it here.
|
16
|
+
# config.client.use_ssl = true
|
17
|
+
|
14
18
|
## Various other client and connection options. These are used to create
|
15
19
|
## an `InfluxDB::Client` instance (i.e. `InfluxDB::Rails.client`).
|
16
20
|
##
|
data/sample-dashboard/Dockerfile
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
FROM opensuse/leap:15.
|
1
|
+
FROM opensuse/leap:15.2
|
2
2
|
|
3
3
|
ENV NOKOGIRI_USE_SYSTEM_LIBRARIES 1
|
4
4
|
RUN useradd -g users -p rails -d /home/rails -m rails
|
5
5
|
RUN echo 'rails ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
|
6
6
|
|
7
7
|
RUN zypper -n addrepo -f https://dl.yarnpkg.com/rpm/yarn.repo; zypper --gpg-auto-import-keys refresh
|
8
|
-
RUN zypper -n install --no-recommends ruby2.5-devel nodejs10 make gcc timezone sudo pkg-config sqlite3-devel libxml2-devel libxslt-devel yarn git-core curl
|
8
|
+
RUN zypper -n install --no-recommends ruby2.5-devel nodejs10 make gcc-c++ timezone sudo pkg-config sqlite3-devel libxml2-devel libxslt-devel yarn git-core curl
|
9
9
|
RUN zypper -n clean -a
|
10
10
|
RUN gem install --no-format-executable --no-document rails -v '~> 6'
|
11
11
|
|
data/sample-dashboard/README.md
CHANGED
@@ -4,36 +4,42 @@ A dashboard providing Ruby on Rails performance insights based on
|
|
4
4
|
[Free Software](https://www.fsf.org/about/what-is-free-software), ready to
|
5
5
|
run inside your data-center.
|
6
6
|
|
7
|
-

|
8
8
|
|
9
|
-
By default it measures (in various forms):
|
9
|
+
By default it measures (in various forms) performance of:
|
10
10
|
|
11
|
-
- Controller
|
12
|
-
- View/Partial
|
13
|
-
- Database
|
11
|
+
- Controller Actions
|
12
|
+
- View/Partial Rendering
|
13
|
+
- Database Queries
|
14
|
+
- ActiveJobs
|
15
|
+
- ActionMailers
|
14
16
|
|
15
|
-
|
17
|
+
The dashboards provide an overview and various ways to drill down into numbers on a per request or per action basis. Of course you can use all the awesome features that Influx (Downsampling/Data Retention), Grafana (Alerts, Annotations) and influxdb-rails (custom tags) provide and extend this to your needs. Use your freedom and run, copy, distribute, study, change and improve this software!
|
16
18
|
|
17
19
|
## Requirements
|
18
20
|
|
19
|
-
To be able to measure performance you need the following things available:
|
21
|
+
To be able to measure performance of your Ruby on Rails application you need to have the following things available:
|
20
22
|
|
21
|
-
- [InfluxDB 1.x](https://
|
22
|
-
- [Grafana](https://grafana.com/
|
23
|
+
- [InfluxDB 1.x](https://www.influxdata.com/products/influxdb/)
|
24
|
+
- [Grafana](https://grafana.com/)
|
23
25
|
- A [Ruby On Rails](https://rubyonrails.org/) application with [influxdb-rails](https://github.com/influxdata/influxdb-rails) enabled
|
24
26
|
|
25
27
|
## Installation
|
26
28
|
|
27
|
-
Once you have influx/grafana instances running in your infrastructure just [import
|
28
|
-
dashboards from grafana](https://grafana.com/docs/reference/export_import/#importing-a-dashboard).
|
29
|
+
Once you have influx/grafana instances running in your infrastructure just [import the
|
30
|
+
dashboards from grafana.com](https://grafana.com/docs/reference/export_import/#importing-a-dashboard).
|
29
31
|
|
30
|
-
- [Overview
|
31
|
-
- [Request
|
32
|
+
- [Ruby On Rails Performance Overview](https://grafana.com/dashboards/10428/)
|
33
|
+
- Performance insights into individual requests, see [Ruby On Rails Performance per Request](https://grafana.com/dashboards/10429/)
|
34
|
+
- Performance of individual actions, see [Ruby On Rails Performance per Action](https://grafana.com/grafana/dashboards/11031)
|
35
|
+
- [Ruby On Rails Health Overview](https://grafana.com/grafana/dashboards/14115)
|
36
|
+
- [Ruby on Rails ActiveJob Overview](https://grafana.com/grafana/dashboards/14116)
|
37
|
+
- [Ruby on Rails Slowlog by Request](https://grafana.com/grafana/dashboards/14118)
|
38
|
+
- [Ruby on Rails Slowlog by Action](https://grafana.com/grafana/dashboards/14117)
|
39
|
+
- [Ruby on Rails Slowlog by SQL](https://grafana.com/grafana/dashboards/14119)
|
32
40
|
|
33
41
|
You can also paste the `.json` files from this repository.
|
34
42
|
|
35
|
-
In the unlikely case that you need to change the dashboard *UID*s during import you can configure the *UID* the `Overview` dashboard uses to link to the `Request` dashboard in the [variables](https://grafana.com/docs/reference/templating/#adding-a-variable). Just paste whatever *UID* you've set up for the `Request` dashboard.
|
36
|
-
|
37
43
|
## Demo
|
38
44
|
|
39
45
|
This repository includes a [docker-compose](https://docs.docker.com/compose/) demo setup that brings a simple rails app, influxdb and grafana.
|
@@ -54,19 +60,6 @@ Go to http://0.0.0.0:4000 and do some things. Every request to the rails app wil
|
|
54
60
|
|
55
61
|
You can also use the dashboard with any other rails app you already have. Follow our [install instructions](https://github.com/influxdata/influxdb-rails/#installation), the default configuration works with the demo InfluxDB running on localhost:8086.
|
56
62
|
|
57
|
-
To be able to view individual requests you have to enable request ID tags in your application. Something like:
|
58
|
-
|
59
|
-
```ruby
|
60
|
-
class ApplicationController < ActionController::Base
|
61
|
-
|
62
|
-
before_action :set_influx_data
|
63
|
-
|
64
|
-
def set_influx_data
|
65
|
-
InfluxDB::Rails.current.values = { request: request.request_id }
|
66
|
-
end
|
67
|
-
end
|
68
|
-
```
|
69
|
-
|
70
63
|
### ...then see the dashboards in action
|
71
64
|
|
72
65
|
Just go to http://0.0.0.0:3000 and log in with admin/admin.
|
data/sample-dashboard/Rakefile
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
task default: %w[prepare]
|
2
2
|
|
3
|
-
# rubocop:disable
|
3
|
+
# rubocop:disable Layout/LineLength
|
4
4
|
task :prepare do
|
5
|
-
sh "cat 'Ruby On Rails Performance.json' | sed 's/${DS_INFLUXDB}/InfluxDB/g' > provisioning/performance.json"
|
6
|
-
sh "cat 'Ruby On Rails Performance
|
7
|
-
sh "cat 'Ruby On Rails Performance
|
5
|
+
sh "cat 'Ruby On Rails Performance.json' | sed 's/${DS_INFLUXDB-RAILS}/InfluxDB/g' > provisioning/performance.json"
|
6
|
+
sh "cat 'Ruby On Rails Performance per Request.json' | sed 's/${DS_INFLUXDB-RAILS}/InfluxDB/g' > provisioning/performance-request.json"
|
7
|
+
sh "cat 'Ruby On Rails Performance per Action.json' | sed 's/${DS_INFLUXDB-RAILS}/InfluxDB/g' > provisioning/performance-action.json"
|
8
|
+
sh "cat 'Ruby On Rails ActiveJob.json' | sed 's/${DS_INFLUXDB-RAILS}/InfluxDB/g' > provisioning/activejob.json"
|
9
|
+
sh "cat 'Ruby On Rails Requests.json' | sed 's/${DS_INFLUXDB-RAILS}/InfluxDB/g' > provisioning/requests.json"
|
10
|
+
sh "cat 'Ruby On Rails Slowlog by Action.json' | sed 's/${DS_INFLUXDB-RAILS}/InfluxDB/g' > provisioning/slowlog-action.json"
|
11
|
+
sh "cat 'Ruby On Rails Slowlog by Request.json' | sed 's/${DS_INFLUXDB-RAILS}/InfluxDB/g' > provisioning/slowlog-requests.json"
|
12
|
+
sh "cat 'Ruby On Rails Slowlog by SQL.json' | sed 's/${DS_INFLUXDB-RAILS}/InfluxDB/g' > provisioning/slowlog-sql.json"
|
8
13
|
end
|
9
|
-
# rubocop:enable
|
14
|
+
# rubocop:enable Layout/LineLength
|
@@ -0,0 +1,600 @@
|
|
1
|
+
{
|
2
|
+
"__inputs": [
|
3
|
+
{
|
4
|
+
"name": "DS_INFLUXDB-RAILS",
|
5
|
+
"label": "InfluxDB-Rails",
|
6
|
+
"description": "",
|
7
|
+
"type": "datasource",
|
8
|
+
"pluginId": "influxdb",
|
9
|
+
"pluginName": "InfluxDB"
|
10
|
+
}
|
11
|
+
],
|
12
|
+
"__requires": [
|
13
|
+
{
|
14
|
+
"type": "grafana",
|
15
|
+
"id": "grafana",
|
16
|
+
"name": "Grafana",
|
17
|
+
"version": "7.1.1"
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"type": "panel",
|
21
|
+
"id": "graph",
|
22
|
+
"name": "Graph",
|
23
|
+
"version": ""
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"type": "datasource",
|
27
|
+
"id": "influxdb",
|
28
|
+
"name": "InfluxDB",
|
29
|
+
"version": "1.0.0"
|
30
|
+
}
|
31
|
+
],
|
32
|
+
"annotations": {
|
33
|
+
"list": [
|
34
|
+
{
|
35
|
+
"builtIn": 1,
|
36
|
+
"datasource": "-- Grafana --",
|
37
|
+
"enable": true,
|
38
|
+
"hide": true,
|
39
|
+
"iconColor": "rgba(0, 211, 255, 1)",
|
40
|
+
"name": "Annotations & Alerts",
|
41
|
+
"type": "dashboard"
|
42
|
+
}
|
43
|
+
]
|
44
|
+
},
|
45
|
+
"editable": true,
|
46
|
+
"gnetId": null,
|
47
|
+
"graphTooltip": 0,
|
48
|
+
"id": null,
|
49
|
+
"iteration": 1616428804223,
|
50
|
+
"links": [
|
51
|
+
{
|
52
|
+
"icon": "external link",
|
53
|
+
"includeVars": true,
|
54
|
+
"keepTime": true,
|
55
|
+
"tags": [
|
56
|
+
"influxdb-rails"
|
57
|
+
],
|
58
|
+
"type": "dashboards"
|
59
|
+
}
|
60
|
+
],
|
61
|
+
"panels": [
|
62
|
+
{
|
63
|
+
"aliasColors": {},
|
64
|
+
"bars": false,
|
65
|
+
"cacheTimeout": null,
|
66
|
+
"dashLength": 10,
|
67
|
+
"dashes": false,
|
68
|
+
"datasource": "${DS_INFLUXDB-RAILS}",
|
69
|
+
"decimals": 1,
|
70
|
+
"description": "Number of jobs per queue",
|
71
|
+
"fieldConfig": {
|
72
|
+
"defaults": {
|
73
|
+
"custom": {},
|
74
|
+
"links": []
|
75
|
+
},
|
76
|
+
"overrides": []
|
77
|
+
},
|
78
|
+
"fill": 3,
|
79
|
+
"fillGradient": 0,
|
80
|
+
"gridPos": {
|
81
|
+
"h": 7,
|
82
|
+
"w": 24,
|
83
|
+
"x": 0,
|
84
|
+
"y": 0
|
85
|
+
},
|
86
|
+
"hiddenSeries": false,
|
87
|
+
"hideTimeOverride": false,
|
88
|
+
"id": 2,
|
89
|
+
"legend": {
|
90
|
+
"alignAsTable": true,
|
91
|
+
"avg": false,
|
92
|
+
"current": false,
|
93
|
+
"hideEmpty": false,
|
94
|
+
"hideZero": false,
|
95
|
+
"max": false,
|
96
|
+
"min": false,
|
97
|
+
"rightSide": true,
|
98
|
+
"show": true,
|
99
|
+
"sideWidth": 250,
|
100
|
+
"total": false,
|
101
|
+
"values": false
|
102
|
+
},
|
103
|
+
"lines": true,
|
104
|
+
"linewidth": 1,
|
105
|
+
"links": [],
|
106
|
+
"nullPointMode": "null as zero",
|
107
|
+
"paceLength": 10,
|
108
|
+
"percentage": false,
|
109
|
+
"pluginVersion": "7.1.1",
|
110
|
+
"pointradius": 0.5,
|
111
|
+
"points": false,
|
112
|
+
"renderer": "flot",
|
113
|
+
"seriesOverrides": [],
|
114
|
+
"spaceLength": 10,
|
115
|
+
"stack": true,
|
116
|
+
"steppedLine": false,
|
117
|
+
"targets": [
|
118
|
+
{
|
119
|
+
"alias": "$tag_queue",
|
120
|
+
"groupBy": [
|
121
|
+
{
|
122
|
+
"params": [
|
123
|
+
"$per"
|
124
|
+
],
|
125
|
+
"type": "time"
|
126
|
+
},
|
127
|
+
{
|
128
|
+
"params": [
|
129
|
+
"queue"
|
130
|
+
],
|
131
|
+
"type": "tag"
|
132
|
+
},
|
133
|
+
{
|
134
|
+
"params": [
|
135
|
+
"null"
|
136
|
+
],
|
137
|
+
"type": "fill"
|
138
|
+
}
|
139
|
+
],
|
140
|
+
"measurement": "rails",
|
141
|
+
"orderByTime": "ASC",
|
142
|
+
"policy": "default",
|
143
|
+
"refId": "A",
|
144
|
+
"resultFormat": "time_series",
|
145
|
+
"select": [
|
146
|
+
[
|
147
|
+
{
|
148
|
+
"params": [
|
149
|
+
"value"
|
150
|
+
],
|
151
|
+
"type": "field"
|
152
|
+
},
|
153
|
+
{
|
154
|
+
"params": [],
|
155
|
+
"type": "count"
|
156
|
+
}
|
157
|
+
]
|
158
|
+
],
|
159
|
+
"tags": [
|
160
|
+
{
|
161
|
+
"key": "hook",
|
162
|
+
"operator": "=",
|
163
|
+
"value": "enqueue"
|
164
|
+
}
|
165
|
+
]
|
166
|
+
}
|
167
|
+
],
|
168
|
+
"thresholds": [],
|
169
|
+
"timeFrom": null,
|
170
|
+
"timeRegions": [],
|
171
|
+
"timeShift": null,
|
172
|
+
"title": "by Queues",
|
173
|
+
"tooltip": {
|
174
|
+
"shared": true,
|
175
|
+
"sort": 0,
|
176
|
+
"value_type": "individual"
|
177
|
+
},
|
178
|
+
"type": "graph",
|
179
|
+
"xaxis": {
|
180
|
+
"buckets": null,
|
181
|
+
"mode": "time",
|
182
|
+
"name": null,
|
183
|
+
"show": true,
|
184
|
+
"values": []
|
185
|
+
},
|
186
|
+
"yaxes": [
|
187
|
+
{
|
188
|
+
"format": "short",
|
189
|
+
"label": "jobs",
|
190
|
+
"logBase": 1,
|
191
|
+
"max": null,
|
192
|
+
"min": null,
|
193
|
+
"show": true
|
194
|
+
},
|
195
|
+
{
|
196
|
+
"format": "short",
|
197
|
+
"label": null,
|
198
|
+
"logBase": 1,
|
199
|
+
"max": null,
|
200
|
+
"min": null,
|
201
|
+
"show": false
|
202
|
+
}
|
203
|
+
],
|
204
|
+
"yaxis": {
|
205
|
+
"align": false,
|
206
|
+
"alignLevel": null
|
207
|
+
}
|
208
|
+
},
|
209
|
+
{
|
210
|
+
"aliasColors": {},
|
211
|
+
"bars": false,
|
212
|
+
"dashLength": 10,
|
213
|
+
"dashes": false,
|
214
|
+
"datasource": "${DS_INFLUXDB-RAILS}",
|
215
|
+
"description": "Number of jobs per class",
|
216
|
+
"fieldConfig": {
|
217
|
+
"defaults": {
|
218
|
+
"custom": {},
|
219
|
+
"links": []
|
220
|
+
},
|
221
|
+
"overrides": []
|
222
|
+
},
|
223
|
+
"fill": 1,
|
224
|
+
"fillGradient": 0,
|
225
|
+
"gridPos": {
|
226
|
+
"h": 8,
|
227
|
+
"w": 24,
|
228
|
+
"x": 0,
|
229
|
+
"y": 7
|
230
|
+
},
|
231
|
+
"hiddenSeries": false,
|
232
|
+
"id": 4,
|
233
|
+
"legend": {
|
234
|
+
"alignAsTable": true,
|
235
|
+
"avg": false,
|
236
|
+
"current": false,
|
237
|
+
"max": false,
|
238
|
+
"min": false,
|
239
|
+
"rightSide": true,
|
240
|
+
"show": true,
|
241
|
+
"sideWidth": 250,
|
242
|
+
"total": false,
|
243
|
+
"values": false
|
244
|
+
},
|
245
|
+
"lines": true,
|
246
|
+
"linewidth": 1,
|
247
|
+
"links": [],
|
248
|
+
"nullPointMode": "null as zero",
|
249
|
+
"paceLength": 10,
|
250
|
+
"percentage": false,
|
251
|
+
"pluginVersion": "7.1.1",
|
252
|
+
"pointradius": 2,
|
253
|
+
"points": false,
|
254
|
+
"renderer": "flot",
|
255
|
+
"seriesOverrides": [],
|
256
|
+
"spaceLength": 10,
|
257
|
+
"stack": false,
|
258
|
+
"steppedLine": false,
|
259
|
+
"targets": [
|
260
|
+
{
|
261
|
+
"alias": "$tag_job",
|
262
|
+
"groupBy": [
|
263
|
+
{
|
264
|
+
"params": [
|
265
|
+
"$per"
|
266
|
+
],
|
267
|
+
"type": "time"
|
268
|
+
},
|
269
|
+
{
|
270
|
+
"params": [
|
271
|
+
"job"
|
272
|
+
],
|
273
|
+
"type": "tag"
|
274
|
+
},
|
275
|
+
{
|
276
|
+
"params": [
|
277
|
+
"null"
|
278
|
+
],
|
279
|
+
"type": "fill"
|
280
|
+
}
|
281
|
+
],
|
282
|
+
"measurement": "rails",
|
283
|
+
"orderByTime": "ASC",
|
284
|
+
"policy": "default",
|
285
|
+
"refId": "A",
|
286
|
+
"resultFormat": "time_series",
|
287
|
+
"select": [
|
288
|
+
[
|
289
|
+
{
|
290
|
+
"params": [
|
291
|
+
"value"
|
292
|
+
],
|
293
|
+
"type": "field"
|
294
|
+
},
|
295
|
+
{
|
296
|
+
"params": [],
|
297
|
+
"type": "count"
|
298
|
+
}
|
299
|
+
]
|
300
|
+
],
|
301
|
+
"tags": [
|
302
|
+
{
|
303
|
+
"key": "hook",
|
304
|
+
"operator": "=",
|
305
|
+
"value": "perform_start"
|
306
|
+
}
|
307
|
+
]
|
308
|
+
}
|
309
|
+
],
|
310
|
+
"thresholds": [],
|
311
|
+
"timeFrom": null,
|
312
|
+
"timeRegions": [],
|
313
|
+
"timeShift": null,
|
314
|
+
"title": "by Classes",
|
315
|
+
"tooltip": {
|
316
|
+
"shared": true,
|
317
|
+
"sort": 0,
|
318
|
+
"value_type": "individual"
|
319
|
+
},
|
320
|
+
"type": "graph",
|
321
|
+
"xaxis": {
|
322
|
+
"buckets": null,
|
323
|
+
"mode": "time",
|
324
|
+
"name": null,
|
325
|
+
"show": true,
|
326
|
+
"values": []
|
327
|
+
},
|
328
|
+
"yaxes": [
|
329
|
+
{
|
330
|
+
"format": "short",
|
331
|
+
"label": null,
|
332
|
+
"logBase": 1,
|
333
|
+
"max": null,
|
334
|
+
"min": null,
|
335
|
+
"show": true
|
336
|
+
},
|
337
|
+
{
|
338
|
+
"format": "short",
|
339
|
+
"label": null,
|
340
|
+
"logBase": 1,
|
341
|
+
"max": null,
|
342
|
+
"min": null,
|
343
|
+
"show": false
|
344
|
+
}
|
345
|
+
],
|
346
|
+
"yaxis": {
|
347
|
+
"align": false,
|
348
|
+
"alignLevel": null
|
349
|
+
}
|
350
|
+
},
|
351
|
+
{
|
352
|
+
"aliasColors": {},
|
353
|
+
"bars": true,
|
354
|
+
"dashLength": 10,
|
355
|
+
"dashes": false,
|
356
|
+
"datasource": "${DS_INFLUXDB-RAILS}",
|
357
|
+
"description": "Performance of jobs by class",
|
358
|
+
"fieldConfig": {
|
359
|
+
"defaults": {
|
360
|
+
"custom": {},
|
361
|
+
"links": [],
|
362
|
+
"unit": "ms"
|
363
|
+
},
|
364
|
+
"overrides": []
|
365
|
+
},
|
366
|
+
"fill": 0,
|
367
|
+
"fillGradient": 0,
|
368
|
+
"gridPos": {
|
369
|
+
"h": 7,
|
370
|
+
"w": 24,
|
371
|
+
"x": 0,
|
372
|
+
"y": 15
|
373
|
+
},
|
374
|
+
"hiddenSeries": false,
|
375
|
+
"id": 5,
|
376
|
+
"legend": {
|
377
|
+
"alignAsTable": true,
|
378
|
+
"avg": false,
|
379
|
+
"current": false,
|
380
|
+
"max": false,
|
381
|
+
"min": false,
|
382
|
+
"rightSide": true,
|
383
|
+
"show": true,
|
384
|
+
"sideWidth": 250,
|
385
|
+
"total": false,
|
386
|
+
"values": false
|
387
|
+
},
|
388
|
+
"lines": false,
|
389
|
+
"linewidth": 1,
|
390
|
+
"links": [],
|
391
|
+
"nullPointMode": "null",
|
392
|
+
"paceLength": 10,
|
393
|
+
"percentage": false,
|
394
|
+
"pluginVersion": "7.1.1",
|
395
|
+
"pointradius": 2,
|
396
|
+
"points": true,
|
397
|
+
"renderer": "flot",
|
398
|
+
"seriesOverrides": [],
|
399
|
+
"spaceLength": 10,
|
400
|
+
"stack": false,
|
401
|
+
"steppedLine": false,
|
402
|
+
"targets": [
|
403
|
+
{
|
404
|
+
"alias": "$tag_job",
|
405
|
+
"groupBy": [
|
406
|
+
{
|
407
|
+
"params": [
|
408
|
+
"$__interval"
|
409
|
+
],
|
410
|
+
"type": "time"
|
411
|
+
},
|
412
|
+
{
|
413
|
+
"params": [
|
414
|
+
"job"
|
415
|
+
],
|
416
|
+
"type": "tag"
|
417
|
+
}
|
418
|
+
],
|
419
|
+
"measurement": "rails",
|
420
|
+
"orderByTime": "ASC",
|
421
|
+
"policy": "default",
|
422
|
+
"refId": "A",
|
423
|
+
"resultFormat": "time_series",
|
424
|
+
"select": [
|
425
|
+
[
|
426
|
+
{
|
427
|
+
"params": [
|
428
|
+
"value"
|
429
|
+
],
|
430
|
+
"type": "field"
|
431
|
+
},
|
432
|
+
{
|
433
|
+
"params": [
|
434
|
+
"99"
|
435
|
+
],
|
436
|
+
"type": "percentile"
|
437
|
+
}
|
438
|
+
]
|
439
|
+
],
|
440
|
+
"tags": [
|
441
|
+
{
|
442
|
+
"key": "hook",
|
443
|
+
"operator": "=",
|
444
|
+
"value": "perform"
|
445
|
+
}
|
446
|
+
]
|
447
|
+
}
|
448
|
+
],
|
449
|
+
"thresholds": [],
|
450
|
+
"timeFrom": null,
|
451
|
+
"timeRegions": [],
|
452
|
+
"timeShift": null,
|
453
|
+
"title": "Performance",
|
454
|
+
"tooltip": {
|
455
|
+
"shared": true,
|
456
|
+
"sort": 0,
|
457
|
+
"value_type": "individual"
|
458
|
+
},
|
459
|
+
"type": "graph",
|
460
|
+
"xaxis": {
|
461
|
+
"buckets": null,
|
462
|
+
"mode": "time",
|
463
|
+
"name": null,
|
464
|
+
"show": true,
|
465
|
+
"values": []
|
466
|
+
},
|
467
|
+
"yaxes": [
|
468
|
+
{
|
469
|
+
"format": "ms",
|
470
|
+
"label": null,
|
471
|
+
"logBase": 2,
|
472
|
+
"max": null,
|
473
|
+
"min": null,
|
474
|
+
"show": true
|
475
|
+
},
|
476
|
+
{
|
477
|
+
"format": "short",
|
478
|
+
"label": null,
|
479
|
+
"logBase": 1,
|
480
|
+
"max": null,
|
481
|
+
"min": null,
|
482
|
+
"show": false
|
483
|
+
}
|
484
|
+
],
|
485
|
+
"yaxis": {
|
486
|
+
"align": false,
|
487
|
+
"alignLevel": null
|
488
|
+
}
|
489
|
+
}
|
490
|
+
],
|
491
|
+
"refresh": "5m",
|
492
|
+
"schemaVersion": 26,
|
493
|
+
"style": "dark",
|
494
|
+
"tags": [
|
495
|
+
"influxdb-rails",
|
496
|
+
"Health",
|
497
|
+
"Performance",
|
498
|
+
"Ruby on Rails"
|
499
|
+
],
|
500
|
+
"templating": {
|
501
|
+
"list": [
|
502
|
+
{
|
503
|
+
"auto": true,
|
504
|
+
"auto_count": "50",
|
505
|
+
"auto_min": "",
|
506
|
+
"current": {
|
507
|
+
"selected": false,
|
508
|
+
"text": "auto",
|
509
|
+
"value": "$__auto_interval_per"
|
510
|
+
},
|
511
|
+
"hide": 0,
|
512
|
+
"label": null,
|
513
|
+
"name": "per",
|
514
|
+
"options": [
|
515
|
+
{
|
516
|
+
"selected": true,
|
517
|
+
"text": "auto",
|
518
|
+
"value": "$__auto_interval_per"
|
519
|
+
},
|
520
|
+
{
|
521
|
+
"selected": false,
|
522
|
+
"text": "1m",
|
523
|
+
"value": "1m"
|
524
|
+
},
|
525
|
+
{
|
526
|
+
"selected": false,
|
527
|
+
"text": "10m",
|
528
|
+
"value": "10m"
|
529
|
+
},
|
530
|
+
{
|
531
|
+
"selected": false,
|
532
|
+
"text": "30m",
|
533
|
+
"value": "30m"
|
534
|
+
},
|
535
|
+
{
|
536
|
+
"selected": false,
|
537
|
+
"text": "1h",
|
538
|
+
"value": "1h"
|
539
|
+
},
|
540
|
+
{
|
541
|
+
"selected": false,
|
542
|
+
"text": "6h",
|
543
|
+
"value": "6h"
|
544
|
+
},
|
545
|
+
{
|
546
|
+
"selected": false,
|
547
|
+
"text": "12h",
|
548
|
+
"value": "12h"
|
549
|
+
},
|
550
|
+
{
|
551
|
+
"selected": false,
|
552
|
+
"text": "1d",
|
553
|
+
"value": "1d"
|
554
|
+
},
|
555
|
+
{
|
556
|
+
"selected": false,
|
557
|
+
"text": "7d",
|
558
|
+
"value": "7d"
|
559
|
+
},
|
560
|
+
{
|
561
|
+
"selected": false,
|
562
|
+
"text": "14d",
|
563
|
+
"value": "14d"
|
564
|
+
},
|
565
|
+
{
|
566
|
+
"selected": false,
|
567
|
+
"text": "30d",
|
568
|
+
"value": "30d"
|
569
|
+
}
|
570
|
+
],
|
571
|
+
"query": "1m,10m,30m,1h,6h,12h,1d,7d,14d,30d",
|
572
|
+
"queryValue": "",
|
573
|
+
"refresh": 2,
|
574
|
+
"skipUrlSync": false,
|
575
|
+
"type": "interval"
|
576
|
+
}
|
577
|
+
]
|
578
|
+
},
|
579
|
+
"time": {
|
580
|
+
"from": "now-1h",
|
581
|
+
"to": "now"
|
582
|
+
},
|
583
|
+
"timepicker": {
|
584
|
+
"refresh_intervals": [
|
585
|
+
"10s",
|
586
|
+
"30s",
|
587
|
+
"1m",
|
588
|
+
"5m",
|
589
|
+
"15m",
|
590
|
+
"30m",
|
591
|
+
"1h",
|
592
|
+
"2h",
|
593
|
+
"1d"
|
594
|
+
]
|
595
|
+
},
|
596
|
+
"timezone": "",
|
597
|
+
"title": "ActiveJob",
|
598
|
+
"uid": "influxdb-rails-activejob",
|
599
|
+
"version": 12
|
600
|
+
}
|