cdn_manager_pcache_probe 0.2
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 +7 -0
- data/.gitignore +9 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +38 -0
- data/README.md +14 -0
- data/Rakefile +1 -0
- data/bin/get_pcache_probe +12 -0
- data/cdn-manager_pcache-probe.gemspec +36 -0
- data/lib/cdn_manager_pcache_probe/cli.rb +62 -0
- data/lib/cdn_manager_pcache_probe/connector.rb +64 -0
- data/lib/cdn_manager_pcache_probe/version.rb +3 -0
- metadata +125 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 04aa90fc7326a3f4b18f8afc498804ebb90f9222
|
4
|
+
data.tar.gz: 3b1992a834abdc5496e9be3bd69b96fcc2e2960d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 82515443d9c165798bada808274b6fee2f47a2e08e0ed8ca78c56026fc147f68ee9f6988a947bb9bee71d7231d6062602be7b2f64120264be27b67fef70d30bf
|
7
|
+
data.tar.gz: 0ff333b3e5119a407e3f59ef4db60d2a78375d351dbf36a4b16756d815f0e6005ee9e205cda85462f79d20abb17b2d10ebc9441ade36122f701b095e56ea2fa1
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
cdn_manager_pcache_probe (0.2)
|
5
|
+
json (~> 1.8.3)
|
6
|
+
rest-client (~> 1.8.0)
|
7
|
+
thor (~> 0.19.1)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
domain_name (0.5.25)
|
13
|
+
unf (>= 0.0.5, < 1.0.0)
|
14
|
+
http-cookie (1.0.2)
|
15
|
+
domain_name (~> 0.5)
|
16
|
+
json (1.8.3)
|
17
|
+
mime-types (2.99)
|
18
|
+
netrc (0.11.0)
|
19
|
+
rake (10.4.2)
|
20
|
+
rest-client (1.8.0)
|
21
|
+
http-cookie (>= 1.0.2, < 2.0)
|
22
|
+
mime-types (>= 1.16, < 3.0)
|
23
|
+
netrc (~> 0.7)
|
24
|
+
thor (0.19.1)
|
25
|
+
unf (0.1.4)
|
26
|
+
unf_ext
|
27
|
+
unf_ext (0.0.7.1)
|
28
|
+
|
29
|
+
PLATFORMS
|
30
|
+
ruby
|
31
|
+
|
32
|
+
DEPENDENCIES
|
33
|
+
bundler (~> 1.10)
|
34
|
+
cdn_manager_pcache_probe!
|
35
|
+
rake (~> 10.0)
|
36
|
+
|
37
|
+
BUNDLED WITH
|
38
|
+
1.11.2
|
data/README.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# cdn-manager_pcache-probe
|
2
|
+
Pcache load probe for cdn-manager using ElasticSearch data.
|
3
|
+
|
4
|
+
# Usage
|
5
|
+
|
6
|
+
Get overall usage for last 3 minutes:
|
7
|
+
```bash
|
8
|
+
bin/get_pcache_probe collect --url http://indexer.swisstxt.ch:9200/_all/pcache/_search --interval 3
|
9
|
+
```
|
10
|
+
|
11
|
+
Limit usage to volume_key "blick.simplex.ch":
|
12
|
+
```bash
|
13
|
+
bin/get_pcache_probe collect --url http://indexer.swisstxt.ch:9200/_all/pcache/_search --key blick.simplex.ch
|
14
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
# resolve bin path, ignoring symlinks
|
5
|
+
# resolve path, ignoring symlinks
|
6
|
+
require "pathname"
|
7
|
+
$:.unshift File.expand_path(
|
8
|
+
"../../lib", Pathname.new(__FILE__).realpath
|
9
|
+
)
|
10
|
+
|
11
|
+
require 'cdn_manager_pcache_probe/cli'
|
12
|
+
CdnManagerPcacheProbe::Cli.start(ARGV)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "cdn_manager_pcache_probe/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "cdn_manager_pcache_probe"
|
8
|
+
spec.version = CdnManagerPcacheProbe::VERSION
|
9
|
+
spec.authors = ["niwo"]
|
10
|
+
spec.email = ["nik.wolfgramm@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Pcache load probe for cdn-manager.}
|
13
|
+
spec.description = %q{Pcache load probe for cdn-manager using ElasticSearch data.}
|
14
|
+
spec.homepage = "https://github.com/swisstxt/cdn-manager_pcache-probe"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
18
|
+
# delete this section to allow pushing this gem to any host.
|
19
|
+
# if spec.respond_to?(:metadata)
|
20
|
+
# spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
21
|
+
# else
|
22
|
+
# raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
23
|
+
# end
|
24
|
+
|
25
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
26
|
+
spec.bindir = "bin"
|
27
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
28
|
+
spec.require_paths = ["lib"]
|
29
|
+
|
30
|
+
spec.add_runtime_dependency "thor", "~> 0.19.1"
|
31
|
+
spec.add_runtime_dependency "rest-client", "~> 1.8.0"
|
32
|
+
spec.add_runtime_dependency"json", "~> 1.8.3"
|
33
|
+
|
34
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
35
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
36
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "cdn_manager_pcache_probe/version"
|
3
|
+
require "cdn_manager_pcache_probe/connector"
|
4
|
+
|
5
|
+
module CdnManagerPcacheProbe
|
6
|
+
class Cli < Thor
|
7
|
+
package_name "cdn_manager_pcache_probe"
|
8
|
+
include Thor::Actions
|
9
|
+
|
10
|
+
# catch control-c and exit
|
11
|
+
trap("SIGINT") {
|
12
|
+
puts " bye"
|
13
|
+
exit!
|
14
|
+
}
|
15
|
+
|
16
|
+
# exit with return code 1 in case of an error
|
17
|
+
def self.exit_on_failure?
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "version", "print cdn_manager_pcache_probe version number"
|
22
|
+
def version
|
23
|
+
say "cdn_manager_pcache_probe v#{VERSION}"
|
24
|
+
end
|
25
|
+
map %w(-v --version) => :version
|
26
|
+
|
27
|
+
desc "collect", "probe pcache elasticsearch"
|
28
|
+
option :url,
|
29
|
+
desc: "ElasticSearch URL",
|
30
|
+
required: true
|
31
|
+
option :key,
|
32
|
+
desc: "Limit query on a specific voluem_key"
|
33
|
+
option :interval,
|
34
|
+
desc: "probe inteval in minutes",
|
35
|
+
default: 3,
|
36
|
+
type: :numeric
|
37
|
+
option :delay,
|
38
|
+
desc: "data delay - give elasticsearch some time to receive the logs",
|
39
|
+
default: 5,
|
40
|
+
type: :numeric
|
41
|
+
option :debug,
|
42
|
+
desc: "print debug output",
|
43
|
+
type: :boolean
|
44
|
+
def collect
|
45
|
+
bytes_sent = CdnManagerPcacheProbe::Connector.new(
|
46
|
+
options[:url]
|
47
|
+
).get_probe(options)
|
48
|
+
|
49
|
+
usage = (bytes_sent / (options[:interval] * 60) * 8 / 1024**3).round(3)
|
50
|
+
if options[:key]
|
51
|
+
say "Usage for #{options[:key]} ", :yellow
|
52
|
+
else
|
53
|
+
say "Overall usage ", :yellow
|
54
|
+
end
|
55
|
+
say "over #{options[:interval]} min (#{options[:delay]} min delay):", :yellow
|
56
|
+
puts "Total volume sent: #{(bytes_sent / 1024**3).round(3)} GB"
|
57
|
+
puts "Average bandwidth: #{usage} Gbit/s"
|
58
|
+
end
|
59
|
+
|
60
|
+
end # class
|
61
|
+
|
62
|
+
end # module cli
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module CdnManagerPcacheProbe
|
5
|
+
class Connector
|
6
|
+
def initialize(url, options = {})
|
7
|
+
@url = url
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_live_probe
|
12
|
+
get_probe(Time.now)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_probe(options = {})
|
16
|
+
probe = JSON.parse(
|
17
|
+
RestClient.get(
|
18
|
+
@url, params: { source: query(options) }
|
19
|
+
)
|
20
|
+
)
|
21
|
+
puts "Response: \n" + JSON.pretty_generate(probe) if options[:debug]
|
22
|
+
probe["aggregations"]["bytes_sent"]["value"]
|
23
|
+
end
|
24
|
+
|
25
|
+
def query(options = {})
|
26
|
+
interval = (options[:interval] || 5).to_i
|
27
|
+
delay = (options[:delay] || 5).to_i
|
28
|
+
volume_key_filter = "\"volume_key.raw\": \"#{options[:key]}\"" if options[:key]
|
29
|
+
query = %Q({
|
30
|
+
"size": 0,
|
31
|
+
"query": {
|
32
|
+
"filtered": {
|
33
|
+
"filter": {
|
34
|
+
"bool": {
|
35
|
+
"must": [
|
36
|
+
{ "range": {
|
37
|
+
"@timestamp": {
|
38
|
+
"gt": "now-#{interval + delay}m",
|
39
|
+
"lt": "now-#{delay}m"
|
40
|
+
}
|
41
|
+
}},
|
42
|
+
{ "term": {
|
43
|
+
"type": "pcache"
|
44
|
+
#{", " + volume_key_filter if options[:key]}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
]
|
48
|
+
}
|
49
|
+
}
|
50
|
+
}
|
51
|
+
},
|
52
|
+
"aggs": {
|
53
|
+
"bytes_sent": {
|
54
|
+
"sum": {
|
55
|
+
"field": "body_bytes_sent"
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}).gsub(/\A[[:space:]]+/, '').gsub(/[[:space:]]+\z/, '').gsub(/[[:space:]]+/, ' ')
|
60
|
+
puts "Query: \n" + JSON.pretty_generate(JSON.parse(query)) if options[:debug]
|
61
|
+
query
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
metadata
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cdn_manager_pcache_probe
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.2'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- niwo
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-01-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.19.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.19.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rest-client
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.8.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.8.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: json
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.8.3
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.8.3
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.10'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
description: Pcache load probe for cdn-manager using ElasticSearch data.
|
84
|
+
email:
|
85
|
+
- nik.wolfgramm@gmail.com
|
86
|
+
executables:
|
87
|
+
- get_pcache_probe
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- Gemfile
|
93
|
+
- Gemfile.lock
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- bin/get_pcache_probe
|
97
|
+
- cdn-manager_pcache-probe.gemspec
|
98
|
+
- lib/cdn_manager_pcache_probe/cli.rb
|
99
|
+
- lib/cdn_manager_pcache_probe/connector.rb
|
100
|
+
- lib/cdn_manager_pcache_probe/version.rb
|
101
|
+
homepage: https://github.com/swisstxt/cdn-manager_pcache-probe
|
102
|
+
licenses:
|
103
|
+
- MIT
|
104
|
+
metadata: {}
|
105
|
+
post_install_message:
|
106
|
+
rdoc_options: []
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
requirements: []
|
120
|
+
rubyforge_project:
|
121
|
+
rubygems_version: 2.5.1
|
122
|
+
signing_key:
|
123
|
+
specification_version: 4
|
124
|
+
summary: Pcache load probe for cdn-manager.
|
125
|
+
test_files: []
|