greenhat 0.3.4 → 0.5.0
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/bin/greenhat +2 -6
- data/lib/greenhat/accessors/disk.rb +1 -3
- data/lib/greenhat/accessors/gitlab.rb +7 -2
- data/lib/greenhat/accessors/memory.rb +1 -1
- data/lib/greenhat/archive.rb +19 -8
- data/lib/greenhat/cli.rb +35 -135
- data/lib/greenhat/entrypoint.rb +170 -0
- data/lib/greenhat/host.rb +25 -37
- data/lib/greenhat/settings.rb +33 -5
- data/lib/greenhat/shell/args.rb +22 -9
- data/lib/greenhat/shell/faststats.rb +23 -3
- data/lib/greenhat/shell/field_helper.rb +1 -1
- data/lib/greenhat/shell/filter_help.rb +217 -162
- data/lib/greenhat/shell/gitlab.rb +1 -0
- data/lib/greenhat/shell/log.rb +150 -25
- data/lib/greenhat/shell/markdown.rb +21 -25
- data/lib/greenhat/shell/old_search_helper.rb +54 -0
- data/lib/greenhat/shell/page.rb +1 -1
- data/lib/greenhat/shell/pipe.rb +31 -0
- data/lib/greenhat/shell/platform.rb +28 -0
- data/lib/greenhat/shell/query.rb +378 -0
- data/lib/greenhat/shell/report.rb +76 -24
- data/lib/greenhat/shell/shell_helper.rb +42 -393
- data/lib/greenhat/shell.rb +19 -4
- data/lib/greenhat/thing/file_types.rb +51 -1
- data/lib/greenhat/thing/formatters/api_json.rb +4 -2
- data/lib/greenhat/thing/formatters/bracket_log.rb +1 -1
- data/lib/greenhat/thing/formatters/colon_split_strip.rb +2 -2
- data/lib/greenhat/thing/formatters/dotenv.rb +1 -1
- data/lib/greenhat/thing/formatters/format.rb +0 -11
- data/lib/greenhat/thing/formatters/free_m.rb +2 -2
- data/lib/greenhat/thing/formatters/json.rb +43 -15
- data/lib/greenhat/thing/formatters/json_shellwords.rb +3 -2
- data/lib/greenhat/thing/formatters/kube_json.rb +3 -2
- data/lib/greenhat/thing/formatters/multiline_json.rb +1 -1
- data/lib/greenhat/thing/formatters/nginx.rb +11 -3
- data/lib/greenhat/thing/formatters/table.rb +3 -3
- data/lib/greenhat/thing/formatters/time_space.rb +0 -16
- data/lib/greenhat/thing/helpers.rb +12 -11
- data/lib/greenhat/thing/info_format.rb +4 -4
- data/lib/greenhat/thing/kind.rb +5 -0
- data/lib/greenhat/thing/super_log.rb +0 -101
- data/lib/greenhat/thing.rb +31 -25
- data/lib/greenhat/version.rb +1 -1
- data/lib/greenhat/views/api.slim +55 -0
- data/lib/greenhat/views/chart.slim +42 -0
- data/lib/greenhat/views/chart_template.slim +31 -0
- data/lib/greenhat/views/chartkick.js +21 -0
- data/lib/greenhat/views/css.slim +47 -0
- data/lib/greenhat/views/gitaly.slim +53 -0
- data/lib/greenhat/views/headers.slim +16 -0
- data/lib/greenhat/views/index-old.slim +51 -0
- data/lib/greenhat/views/index.slim +14 -14
- data/lib/greenhat/views/info.slim +17 -18
- data/lib/greenhat/views/production.slim +55 -0
- data/lib/greenhat/views/sidekiq.slim +55 -0
- data/lib/greenhat/views/time.slim +63 -0
- data/lib/greenhat/views/workhorse.slim +16 -0
- data/lib/greenhat/web/api.rb +94 -0
- data/lib/greenhat/web/chartkick_shim.rb +14 -0
- data/lib/greenhat/web/faststats.rb +44 -0
- data/lib/greenhat/web/gitaly.rb +65 -0
- data/lib/greenhat/web/helpers.rb +198 -0
- data/lib/greenhat/web/production.rb +104 -0
- data/lib/greenhat/web/sidekiq.rb +73 -0
- data/lib/greenhat/web/stats_helpers.rb +74 -0
- data/lib/greenhat/web/time.rb +36 -0
- data/lib/greenhat/web/workhorse.rb +43 -0
- data/lib/greenhat/web.rb +63 -19
- data/lib/greenhat.rb +2 -0
- metadata +74 -5
@@ -2,169 +2,205 @@ module GreenHat
|
|
2
2
|
# CLI Helper
|
3
3
|
module ShellHelper
|
4
4
|
# Unify Filter / Filter Help
|
5
|
-
# rubocop:disable Metrics/MethodLength,
|
5
|
+
# rubocop:disable Metrics/MethodLength,Layout/LineLength
|
6
6
|
module Filter
|
7
|
-
def self.help
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
puts ' E.g. --page (default to true), --page=true, --page=false'
|
20
|
-
puts
|
21
|
-
|
22
|
-
puts '--round'.pastel(:green)
|
23
|
-
puts ' Attempt to round all integers. Default: 2.'
|
24
|
-
puts ' E.g. --round, --round=3, --round=0'
|
25
|
-
puts
|
26
|
-
|
27
|
-
puts '--limit'.pastel(:green)
|
28
|
-
puts ' Limit total output lines. Disabled by default. Default without value is based on screen height'
|
29
|
-
puts ' E.g. --limit, --limit=5'
|
30
|
-
puts
|
31
|
-
|
32
|
-
puts '--json'.pastel(:green)
|
33
|
-
puts ' Print output back into JSON'
|
34
|
-
puts
|
35
|
-
|
36
|
-
puts '--or'.pastel(:green)
|
37
|
-
puts ' Filters will use OR instead of AND (all match vs any match)'
|
38
|
-
puts
|
39
|
-
|
40
|
-
puts '--total'.pastel(:green)
|
41
|
-
puts ' Print only total count of matching entries'
|
42
|
-
puts
|
43
|
-
|
44
|
-
puts '--fields'.pastel(:green)
|
45
|
-
puts ' Print only Available fields for selected files'
|
46
|
-
puts
|
47
|
-
|
48
|
-
puts '--slice'.pastel(:green)
|
49
|
-
puts ' Extract specific fields from entries (slice multiple with comma)'
|
50
|
-
puts ' Ex: --slice=path or --slice=path,params'
|
51
|
-
puts
|
52
|
-
|
53
|
-
puts '--except'.pastel(:green)
|
54
|
-
puts ' Exclude specific fields (except multiple with comma)'
|
55
|
-
puts ' Ex: --except=params --except=params,path'
|
56
|
-
puts
|
57
|
-
|
58
|
-
puts '--exists'.pastel(:green)
|
59
|
-
puts ' Ensure field exists regardless of contents'
|
60
|
-
puts ' Ex: --exists=params --exists=params,path'
|
61
|
-
puts
|
62
|
-
|
63
|
-
puts '--stats'.pastel(:green)
|
64
|
-
puts ' Order/Count occurrances by field. Combine with `truncate` for key names'
|
65
|
-
puts ' Ex: --stats=params --except=params,path'
|
66
|
-
puts
|
67
|
-
|
68
|
-
puts '--uniq'.pastel(:green)
|
69
|
-
puts ' Show unique values only'
|
70
|
-
puts ' Ex: --uniq=params --uniq=params,path'
|
71
|
-
puts
|
72
|
-
|
73
|
-
puts '--pluck'.pastel(:green)
|
74
|
-
puts ' Extract values from entries'
|
75
|
-
puts ' Ex: --pluck=params --pluck=params,path'
|
76
|
-
puts
|
77
|
-
|
78
|
-
puts '--archive'.pastel(:green)
|
79
|
-
puts ' Limit to specific archvie name (partial matching /inclusive). Matching SOS tar.gz name'
|
80
|
-
puts ' Ex: --archive=dev-gitlab_20210622154626, --archive=202106,202107'
|
81
|
-
puts
|
82
|
-
|
83
|
-
puts '--sort'.pastel(:green)
|
84
|
-
puts ' Sort by multiple fields'
|
85
|
-
puts ' Ex: --sort=duration_s,db_duration_s'
|
86
|
-
puts
|
87
|
-
|
88
|
-
puts '--reverse'.pastel(:green)
|
89
|
-
puts ' Reverse all results'
|
90
|
-
puts ' Ex: --reverse'
|
91
|
-
puts
|
92
|
-
|
93
|
-
puts '--combine'.pastel(:green)
|
94
|
-
puts ' Omit archive identifier dividers. Useful with sort or time filters'
|
95
|
-
puts ' Ex: --combine'
|
96
|
-
puts
|
97
|
-
|
98
|
-
puts '--case'.pastel(:green)
|
99
|
-
puts ' Exact case match. Defaults to case insensitive'
|
100
|
-
puts ' Ex: --case; --name=Jon, --name=jane --case'
|
101
|
-
puts
|
102
|
-
|
103
|
-
puts '--exact'.pastel(:green)
|
104
|
-
puts ' Exact parameter/value match. Defaults to partial match'
|
105
|
-
puts ' Ex: --field=CommonPartial --exact'
|
106
|
-
puts
|
107
|
-
|
108
|
-
puts '--start'.pastel(:green)
|
109
|
-
puts ' Show events after specified time. Filtered by the `time` field'
|
110
|
-
puts ' Use with `--end` for between selections'
|
111
|
-
puts ' Ex: log filter --start="2021-06-22 14:44 UTC" --end="2021-06-22 14:45 UTC"'
|
112
|
-
puts
|
113
|
-
|
114
|
-
puts '--end'.pastel(:green)
|
115
|
-
puts ' Show events before specified time. Filtered by the `time` field'
|
116
|
-
puts ' Use with `--start` for between selections'
|
117
|
-
puts ' Ex: log filter --end="2021-06-22"'
|
118
|
-
puts
|
119
|
-
|
120
|
-
puts '--time_zone'.pastel(:green)
|
121
|
-
puts ' Manipulate the `time` field into a specific timezone'
|
122
|
-
puts ' Ex: log filter --time_zone=EDT'
|
123
|
-
puts
|
124
|
-
|
125
|
-
puts '--text'.pastel(:green)
|
126
|
-
puts ' Full entry text searching (slow)'
|
127
|
-
puts ' --text="anything here"'
|
128
|
-
puts
|
129
|
-
|
130
|
-
puts '--table_style'.pastel(:green)
|
131
|
-
puts ' Renderer used for formatted output. basic, ascii, or unicode(default)'
|
132
|
-
puts ' Ex: log filter --table_style=base'
|
133
|
-
puts
|
134
|
-
|
135
|
-
puts '--truncate'.pastel(:green)
|
136
|
-
puts ' Truncate field length. On by default (4 rows). Performance issues!'
|
137
|
-
puts ' Disable with --truncate=0'.pastel(:bright_red)
|
138
|
-
puts ' Ex: --truncate=200, --truncate=2048"'
|
139
|
-
puts
|
140
|
-
|
141
|
-
puts 'Field Searching'.pastel(:blue)
|
142
|
-
puts ' --[key]=[value]'
|
143
|
-
puts ' Search in key for value'
|
144
|
-
puts ' Example: --path=mirror/pull'
|
145
|
-
puts
|
146
|
-
|
147
|
-
puts 'Search specific logs'.pastel(:blue)
|
148
|
-
puts ' Any non dash parameters will be the log list to search from'
|
149
|
-
puts " Ex: log filter --path=api sidekiq/current (hint: use `#{'ls'.pastel(:yellow)}` for log names"
|
150
|
-
puts
|
151
|
-
|
152
|
-
puts 'Example Queries'.pastel(:blue)
|
153
|
-
puts " Also see #{'examples'.pastel(:bright_blue)} for even more examples"
|
154
|
-
puts ' log filter --class=BuildFinishedWorker sidekiq/current --slice=time,message'
|
155
|
-
puts ' log filter gitlab-rails/api_json.log --slice=ua --uniq=ua --ua=gitlab-runner'
|
156
|
-
|
157
|
-
puts
|
7
|
+
def self.help(args = '')
|
8
|
+
if args.blank?
|
9
|
+
help_index.values.map { |x| x.push '' }
|
10
|
+
else
|
11
|
+
list = help_index.select do |k, _v|
|
12
|
+
k.to_s.include? args
|
13
|
+
end
|
14
|
+
|
15
|
+
list.values
|
16
|
+
end
|
17
|
+
|
18
|
+
# .map { |x| x.join("\n") }.join("\n\n")
|
158
19
|
end
|
159
20
|
|
21
|
+
# TODO: Confirm Remove
|
22
|
+
# def self.legacy
|
23
|
+
# puts "\u2500".pastel(:cyan) * 20
|
24
|
+
# puts 'Filter'.pastel(:yellow)
|
25
|
+
# puts "\u2500".pastel(:cyan) * 20
|
26
|
+
|
27
|
+
# puts 'Options'.pastel(:blue)
|
28
|
+
# puts '--raw'.pastel(:green)
|
29
|
+
# puts ' Disable formatting and page/less'
|
30
|
+
# puts
|
31
|
+
|
32
|
+
# puts '--page'.pastel(:green)
|
33
|
+
# puts ' Specifically enable or disable paging'
|
34
|
+
# puts ' E.g. --page (default to true), --page=true, --page=false'
|
35
|
+
# puts
|
36
|
+
|
37
|
+
# puts '--round'.pastel(:green)
|
38
|
+
# puts ' Attempt to round all integers. Default: 2.'
|
39
|
+
# puts ' E.g. --round, --round=3, --round=0'
|
40
|
+
# puts
|
41
|
+
|
42
|
+
# puts '--limit'.pastel(:green)
|
43
|
+
# puts ' Limit total output lines. Disabled by default. Default without value is based on screen height'
|
44
|
+
# puts ' E.g. --limit, --limit=5'
|
45
|
+
# puts
|
46
|
+
|
47
|
+
# puts '--json'.pastel(:green)
|
48
|
+
# puts ' Print output back into JSON'
|
49
|
+
# puts
|
50
|
+
|
51
|
+
# puts '--or'.pastel(:green)
|
52
|
+
# puts ' Filters will use OR instead of AND (all match vs any match)'
|
53
|
+
# puts
|
54
|
+
|
55
|
+
# puts '--total'.pastel(:green)
|
56
|
+
# puts ' Show total count, duration, start/end time for matching entries'
|
57
|
+
# puts
|
58
|
+
|
59
|
+
# puts '--fields'.pastel(:green)
|
60
|
+
# puts ' Print only Available fields for selected files'
|
61
|
+
# puts
|
62
|
+
|
63
|
+
# puts '--slice'.pastel(:green)
|
64
|
+
# puts ' Extract specific fields from entries (slice multiple with comma)'
|
65
|
+
# puts ' Ex: --slice=path or --slice=path,params'
|
66
|
+
# puts
|
67
|
+
|
68
|
+
# puts '--except'.pastel(:green)
|
69
|
+
# puts ' Exclude specific fields (except multiple with comma)'
|
70
|
+
# puts ' Ex: --except=params --except=params,path'
|
71
|
+
# puts
|
72
|
+
|
73
|
+
# puts '--exists'.pastel(:green)
|
74
|
+
# puts ' Ensure field exists regardless of contents'
|
75
|
+
# puts ' Ex: --exists=params --exists=params,path'
|
76
|
+
# puts
|
77
|
+
|
78
|
+
# puts '--stats'.pastel(:green)
|
79
|
+
# puts ' Order/Count occurrances by field. Combine with `truncate` for key names'
|
80
|
+
# puts ' Ex: --stats=params --except=params,path'
|
81
|
+
# puts
|
82
|
+
|
83
|
+
# puts '--uniq'.pastel(:green)
|
84
|
+
# puts ' Show unique values only'
|
85
|
+
# puts ' Ex: --uniq=params --uniq=params,path'
|
86
|
+
# puts
|
87
|
+
|
88
|
+
# puts '--pluck'.pastel(:green)
|
89
|
+
# puts ' Extract values from entries'
|
90
|
+
# puts ' Ex: --pluck=params --pluck=params,path'
|
91
|
+
# puts
|
92
|
+
|
93
|
+
# puts '--archive'.pastel(:green)
|
94
|
+
# puts ' Limit to specific archvie name (partial matching /inclusive). Matching SOS tar.gz name'
|
95
|
+
# puts ' Ex: --archive=dev-gitlab_20210622154626, --archive=202106,202107'
|
96
|
+
# puts
|
97
|
+
|
98
|
+
# puts '--sort'.pastel(:green)
|
99
|
+
# puts ' Sort by multiple fields'
|
100
|
+
# puts ' Ex: --sort=duration_s,db_duration_s'
|
101
|
+
# puts
|
102
|
+
|
103
|
+
# puts '--reverse'.pastel(:green)
|
104
|
+
# puts ' Reverse all results'
|
105
|
+
# puts ' Ex: --reverse'
|
106
|
+
# puts
|
107
|
+
|
108
|
+
# puts '--combine'.pastel(:green)
|
109
|
+
# puts ' Omit archive identifier dividers. Useful with sort or time filters'
|
110
|
+
# puts ' Ex: --combine'
|
111
|
+
# puts
|
112
|
+
|
113
|
+
# puts '--case'.pastel(:green)
|
114
|
+
# puts ' Exact case match. Defaults to case insensitive'
|
115
|
+
# puts ' Ex: --case; --name=Jon, --name=jane --case'
|
116
|
+
# puts
|
117
|
+
|
118
|
+
# puts '--exact'.pastel(:green)
|
119
|
+
# puts ' Exact parameter/value match. Defaults to partial match'
|
120
|
+
# puts ' Ex: --field=CommonPartial --exact'
|
121
|
+
# puts
|
122
|
+
|
123
|
+
# puts '--start'.pastel(:green)
|
124
|
+
# puts ' Show events after specified time. Filtered by the `time` field'
|
125
|
+
# puts ' Use with `--end` for between selections'
|
126
|
+
# puts ' Ex: log filter --start="2021-06-22 14:44 UTC" --end="2021-06-22 14:45 UTC"'
|
127
|
+
# puts
|
128
|
+
|
129
|
+
# puts '--end'.pastel(:green)
|
130
|
+
# puts ' Show events before specified time. Filtered by the `time` field'
|
131
|
+
# puts ' Use with `--start` for between selections'
|
132
|
+
# puts ' Ex: log filter --end="2021-06-22"'
|
133
|
+
# puts
|
134
|
+
|
135
|
+
# puts '--time_zone'.pastel(:green)
|
136
|
+
# puts ' Manipulate the `time` field into a specific timezone'
|
137
|
+
# puts ' Ex: log filter --time_zone=EDT'
|
138
|
+
# puts
|
139
|
+
|
140
|
+
# puts '--text'.pastel(:green)
|
141
|
+
# puts ' Full entry text searching (slow)'
|
142
|
+
# puts ' --text="anything here"'
|
143
|
+
# puts
|
144
|
+
|
145
|
+
# puts '--table_style'.pastel(:green)
|
146
|
+
# puts ' Renderer used for formatted output. basic, ascii, or unicode(default)'
|
147
|
+
# puts ' Ex: log filter --table_style=base'
|
148
|
+
# puts
|
149
|
+
|
150
|
+
# puts '--truncate'.pastel(:green)
|
151
|
+
# puts ' Truncate field length. On by default (4 rows). Performance issues!'
|
152
|
+
# puts ' Disable with --truncate=0'.pastel(:bright_red)
|
153
|
+
# puts ' Ex: --truncate=200, --truncate=2048"'
|
154
|
+
# puts
|
155
|
+
|
156
|
+
# puts 'Search specific logs'.pastel(:blue)
|
157
|
+
# puts ' Any non dash parameters will be the log list to search from'
|
158
|
+
# puts " Ex: log filter --path=api sidekiq/current (hint: use `#{'ls'.pastel(:yellow)}` for log names"
|
159
|
+
# puts
|
160
|
+
|
161
|
+
# puts 'General (Field) Searching'.pastel(:blue)
|
162
|
+
# puts " There are different ways filter within specific keys/fields within log. The baseline is #{'--[key]=[value]'.pastel(:green)}"
|
163
|
+
# puts ' This will, by default, select any entries with any partial match (case insensitive) of [value] in the entry [key]'
|
164
|
+
# puts ' Example: --path=mirror/pull'
|
165
|
+
# puts
|
166
|
+
|
167
|
+
# puts " You can modify logic with params like: #{'case'.pastel(:green)}, #{'exact'.pastel(:green)}"
|
168
|
+
# puts ' Ex Case turn on case sensitivity, exact will change from the inclusive to only exact matching.'
|
169
|
+
# puts
|
170
|
+
|
171
|
+
# puts " You can also use multiple #{'--[key]=[value]'.pastel(:green)} to narrow down, or combine it with #{'or'.pastel(:green)} to be more inclusive"
|
172
|
+
# puts ' Ex nginx/gitlab_access.log --http_user_agent=gitlab-runner --path=/api/v4/jobs/request'
|
173
|
+
# puts ' This will look through the access logs for anything that is a runner (user agent) and hitting the request endpoint'
|
174
|
+
# puts
|
175
|
+
|
176
|
+
# puts " You can also modify whether a field search excluded or a integer (and technically string) comparison by changing the operator: #{'(!= >= <=)'.pastel(:green)}"
|
177
|
+
# puts ' Ex "nginx/gitlab_access.log --http_user_agent=gitlab-runner --http_user_agent!=13.12.0" will exclude any entries with 13.12.0/13.12 runners'
|
178
|
+
# puts ' Ex "sidekiq/current --duration_s>=5 --class!=LdapSyncWorker" Duration over 5 that is not an ldap job'
|
179
|
+
# puts
|
180
|
+
|
181
|
+
# puts 'Pipe to Shell'.pastel(:blue)
|
182
|
+
# puts ' This is very experimental! The idea is to take all the output from the search and allow a pipe into a traditional shell command.'
|
183
|
+
# puts ' Due to the arg parsing its not a straight send to the terminal. You may need to escape quotes.'
|
184
|
+
# puts ' Order is relevant, no arguments after the pipe'
|
185
|
+
# puts
|
186
|
+
# puts ' <files> <params> | grep path'
|
187
|
+
# puts
|
188
|
+
|
189
|
+
# puts 'Example Queries'.pastel(:blue)
|
190
|
+
# puts " Also see #{'examples'.pastel(:bright_blue)} for even more examples"
|
191
|
+
# puts ' log filter --class=BuildFinishedWorker sidekiq/current --slice=time,message'
|
192
|
+
# puts ' log filter gitlab-rails/api_json.log --slice=ua --uniq=ua --ua=gitlab-runner'
|
193
|
+
|
194
|
+
# puts
|
195
|
+
# end
|
196
|
+
|
160
197
|
def self.help_index
|
161
198
|
{
|
162
199
|
title: [
|
163
200
|
"\u2500".pastel(:cyan) * 20,
|
164
201
|
'Filter'.pastel(:yellow),
|
165
|
-
"\u2500".pastel(:cyan) * 20
|
166
|
-
|
167
|
-
options: [
|
202
|
+
"\u2500".pastel(:cyan) * 20,
|
203
|
+
'',
|
168
204
|
'Options'.pastel(:blue)
|
169
205
|
],
|
170
206
|
|
@@ -202,7 +238,7 @@ module GreenHat
|
|
202
238
|
|
203
239
|
total: [
|
204
240
|
'--total'.pastel(:green),
|
205
|
-
'
|
241
|
+
' Show total count, duration, start/end time for matching entries'
|
206
242
|
],
|
207
243
|
|
208
244
|
fields: [
|
@@ -335,11 +371,30 @@ module GreenHat
|
|
335
371
|
' Ex: --truncate=200, --truncate=2048"'
|
336
372
|
],
|
337
373
|
|
338
|
-
|
339
|
-
'Field Searching'.pastel(:blue),
|
340
|
-
'
|
341
|
-
'
|
342
|
-
' Example: --path=mirror/pull'
|
374
|
+
field_search: [
|
375
|
+
'General (Field) Searching'.pastel(:blue),
|
376
|
+
" There are different ways filter within specific keys/fields within log. The baseline is #{'--[key]=[value]'.pastel(:green)}",
|
377
|
+
' This will, by default, select any entries with any partial match (case insensitive) of [value] in the entry [key]',
|
378
|
+
' Example: --path=mirror/pull',
|
379
|
+
'',
|
380
|
+
" You can modify logic with params like: #{'case'.pastel(:green)}, #{'exact'.pastel(:green)}",
|
381
|
+
' Ex Case turn on case sensitivity, exact will change from the inclusive to only exact matching.',
|
382
|
+
'',
|
383
|
+
" You can also use multiple #{'--[key]=[value]'.pastel(:green)} to narrow down, or combine it with #{'or'.pastel(:green)} to be more inclusive",
|
384
|
+
' Ex nginx/gitlab_access.log --http_user_agent=gitlab-runner --path=/api/v4/jobs/request',
|
385
|
+
' This will look through the access logs for anything that is a runner (user agent) and hitting the request endpoint',
|
386
|
+
'',
|
387
|
+
" You can also modify whether a field search excluded or a integer (and technically string) comparison by changing the operator: #{'(!= >= <=)'.pastel(:green)}",
|
388
|
+
' Ex "nginx/gitlab_access.log --http_user_agent=gitlab-runner --http_user_agent!=13.12.0" will exclude any entries with 13.12.0/13.12 runners',
|
389
|
+
' Ex "sidekiq/current --duration_s>=5 --class!=LdapSyncWorker" Duration over 5 that is not an ldap job'
|
390
|
+
],
|
391
|
+
|
392
|
+
pipe_to_shell: [
|
393
|
+
'Pipe to Shell'.pastel(:blue),
|
394
|
+
' This is very experimental! The idea is to take all the output from the search and allow a pipe into a traditional shell command.',
|
395
|
+
' Due to the arg parsing its not a straight send to the terminal. You may need to escape quotes.',
|
396
|
+
' Order is relevant, no arguments after the pipe',
|
397
|
+
' <files> <params> | grep path'
|
343
398
|
],
|
344
399
|
|
345
400
|
ls: [
|
@@ -357,7 +412,7 @@ module GreenHat
|
|
357
412
|
|
358
413
|
}
|
359
414
|
end
|
360
|
-
# rubocop:enable Metrics/MethodLength,
|
415
|
+
# rubocop:enable Metrics/MethodLength,Layout/LineLength
|
361
416
|
end
|
362
417
|
end
|
363
418
|
end
|