mtr_monitor 0.4.0 → 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/Dockerfile +10 -0
- data/Gemfile.lock +1 -1
- data/README.md +10 -18
- data/docker-compose.yml +5 -0
- data/exe/mtr_report +25 -37
- data/lib/mtr_monitor.rb +13 -4
- data/lib/mtr_monitor/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f4fc19a4c802efd3bc96fca5ca2f737c0147eb0
|
4
|
+
data.tar.gz: df11b7d5705fdc2a086702889bec29cf3bcc4c77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddb342e7429f1018777e1e98e1e198f31df57e084709f5229686da3937c94a28fb81a93766907c6a9485a7a2f25be2196a24cec23f7dc3462508b9248c64518f
|
7
|
+
data.tar.gz: 980bb3e934e45d20f729f47710f770e0f5ee8dacf4b14f7a5775ffb047257cf24f6f2874cec3874fc6a27b32371812ffe2b9250bef0639a3dee39477f86c2fc4
|
data/Dockerfile
ADDED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,34 +1,26 @@
|
|
1
1
|
# MtrMonitor
|
2
2
|
|
3
|
-
|
4
|
-
and collects statsd metrics.
|
3
|
+
[](https://semaphoreci.com/renderedtext/mtr-monitor)
|
5
4
|
|
6
|
-
## Installation
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
```ruby
|
11
|
-
gem 'mtr_monitor'
|
12
|
-
```
|
6
|
+
Generates a MTR report, uploads the report to S3, and finally parses the report
|
7
|
+
and collects statsd metrics.
|
13
8
|
|
14
|
-
|
9
|
+
### Run mtr_monitor as a docker container
|
15
10
|
|
16
11
|
``` bash
|
17
|
-
|
12
|
+
docker run -d -v /var/log/mtr:/var/log/mtr -e NAME=<> -e DOMAIN=<> -e MTR_OPTIONS=<> -e S3_BUCKET=<> -e AWS_ACCESS_KEY_ID=<> -e AWS_SECRET_ACCESS_KEY=<> -e SLEEP_TIME=<> renderedtext/mtr_monitor
|
18
13
|
```
|
19
14
|
|
20
|
-
|
21
|
-
|
22
|
-
### Generate an MTR report from the CLI
|
15
|
+
### Generate an MTR report from Ruby
|
23
16
|
|
24
|
-
|
25
|
-
export AWS_ACCESS_KEY_ID=<XXX>
|
26
|
-
export AWS_SECRET_ACCESS_KEY=<YYY>
|
17
|
+
Install mtr_monitor as a gem:
|
27
18
|
|
28
|
-
|
19
|
+
```ruby
|
20
|
+
gem 'mtr_monitor'
|
29
21
|
```
|
30
22
|
|
31
|
-
|
23
|
+
Invoke mtr generation:
|
32
24
|
|
33
25
|
``` ruby
|
34
26
|
name = "google"
|
data/docker-compose.yml
ADDED
data/exe/mtr_report
CHANGED
@@ -1,41 +1,29 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require "mtr_monitor"
|
4
|
-
require "optparse"
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
report = MtrMonitor::Report.new(name,
|
32
|
-
domain,
|
33
|
-
s3_bucket,
|
34
|
-
aws_access_key_id,
|
35
|
-
aws_secret_access_key)
|
36
|
-
|
37
|
-
puts "Generating report"
|
38
|
-
report.generate
|
39
|
-
|
40
|
-
puts "Submiting metrics"
|
41
|
-
report.submit_metrics
|
5
|
+
name = ENV.fetch("NAME")
|
6
|
+
domain = ENV.fetch("DOMAIN")
|
7
|
+
s3_bucket = ENV.fetch("S3_BUCKET")
|
8
|
+
aws_access_key_id = ENV.fetch("AWS_ACCESS_KEY_ID")
|
9
|
+
aws_secret_access_key = ENV.fetch("AWS_SECRET_ACCESS_KEY")
|
10
|
+
mtr_options = ENV.fetch("MTR_OPTIONS", "")
|
11
|
+
sleep_time = ENV.fetch("SLEEP_TIME", "5").to_i
|
12
|
+
|
13
|
+
loop do
|
14
|
+
report = MtrMonitor::Report.new(name,
|
15
|
+
domain,
|
16
|
+
s3_bucket,
|
17
|
+
mtr_options,
|
18
|
+
aws_access_key_id,
|
19
|
+
aws_secret_access_key)
|
20
|
+
|
21
|
+
puts "Generating report"
|
22
|
+
report.generate
|
23
|
+
|
24
|
+
puts "Submiting metrics"
|
25
|
+
report.submit_metrics
|
26
|
+
|
27
|
+
puts "Sleeping for #{sleep_time} minutes"
|
28
|
+
sleep(sleep_time * 60)
|
29
|
+
end
|
data/lib/mtr_monitor.rb
CHANGED
@@ -8,12 +8,13 @@ module MtrMonitor
|
|
8
8
|
#
|
9
9
|
class Report
|
10
10
|
|
11
|
-
def initialize(name, domain, s3_bucket, aws_access_key_id, aws_secret_access_key)
|
11
|
+
def initialize(name, domain, s3_bucket, mtr_options, aws_access_key_id, aws_secret_access_key)
|
12
12
|
@name = name
|
13
13
|
@domain = domain
|
14
14
|
@s3_bucket = s3_bucket
|
15
15
|
@aws_access_key_id = aws_access_key_id
|
16
16
|
@aws_secret_access_key = aws_secret_access_key
|
17
|
+
@mtr_options = mtr_options
|
17
18
|
|
18
19
|
@log_name = "#{@name}/#{Time.now.strftime("%Y-%m-%d")}/#{host_ip_address}/#{Time.now.strftime("%H-%M")}.log"
|
19
20
|
@log_path = "/var/log/mtr/#{@log_name.gsub("/", "-")}"
|
@@ -24,9 +25,9 @@ module MtrMonitor
|
|
24
25
|
puts "Local Path : #{@log_path}"
|
25
26
|
puts "S3 Path : #{@s3_path}"
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
run "sudo mkdir -p /var/log/mtr"
|
29
|
+
run "sudo sh -c 'mtr --report #{@mtr_options} #{@domain} > #{@log_path}'"
|
30
|
+
run "AWS_ACCESS_KEY_ID='#{@aws_access_key_id}' AWS_SECRET_ACCESS_KEY='#{@aws_secret_access_key}' aws s3 cp #{@log_path} #{@s3_path}"
|
30
31
|
end
|
31
32
|
|
32
33
|
def submit_metrics
|
@@ -51,6 +52,14 @@ module MtrMonitor
|
|
51
52
|
def host_ip_address
|
52
53
|
`/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1`.strip.gsub(".", "-")
|
53
54
|
end
|
55
|
+
|
56
|
+
def log_path
|
57
|
+
@log_path
|
58
|
+
end
|
59
|
+
|
60
|
+
def run(cmd)
|
61
|
+
`#{cmd}`
|
62
|
+
end
|
54
63
|
end
|
55
64
|
|
56
65
|
class Hop
|
data/lib/mtr_monitor/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mtr_monitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RenderedText DevOps Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rt-watchman
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- ".gitignore"
|
78
78
|
- ".rspec"
|
79
79
|
- CODE_OF_CONDUCT.md
|
80
|
+
- Dockerfile
|
80
81
|
- Gemfile
|
81
82
|
- Gemfile.lock
|
82
83
|
- LICENSE.txt
|
@@ -84,6 +85,7 @@ files:
|
|
84
85
|
- Rakefile
|
85
86
|
- bin/console
|
86
87
|
- bin/setup
|
88
|
+
- docker-compose.yml
|
87
89
|
- exe/mtr_report
|
88
90
|
- lib/mtr_monitor.rb
|
89
91
|
- lib/mtr_monitor/version.rb
|
@@ -108,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
110
|
version: '0'
|
109
111
|
requirements: []
|
110
112
|
rubyforge_project:
|
111
|
-
rubygems_version: 2.
|
113
|
+
rubygems_version: 2.6.14
|
112
114
|
signing_key:
|
113
115
|
specification_version: 4
|
114
116
|
summary: Generate, parse, and collect MTR reports
|