ruby_for_grafana_loki 0.0.1
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/Gemfile +3 -0
- data/README.md +0 -0
- data/lib/ruby_for_grafana_loki/client.rb +54 -0
- data/lib/ruby_for_grafana_loki/connection.rb +39 -0
- data/lib/ruby_for_grafana_loki/query.rb +8 -0
- data/lib/ruby_for_grafana_loki/request.rb +29 -0
- data/lib/ruby_for_grafana_loki/version.rb +3 -0
- data/lib/ruby_for_grafana_loki.rb +11 -0
- metadata +80 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5ec9e06323e8376d4ee340c324820349259f2d3b9590d66b494fa537520e6e15
|
4
|
+
data.tar.gz: 878b6ef35c8ae5635b96a8c525f36dbbcabb92cf8f5f7b38af660ccc3c71d304
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 311e1cabe3829e3f4b5a4a9f5fc3f3c6da4842eb4767531d7d76dbc658f862cd469b6ef5b4bee6a6defbcdca6e93af5ff5415e28f08390bfb637aab7e508f2cd
|
7
|
+
data.tar.gz: e00297c20a6d8e57fed8b65e6005d23dabf3fdf4f4695efa8d1b5c7ab08ee544fb8cd0820e5a6f5b2d75b7a1cd5508f13b0d018e8f3e9dd67aa5843085b3efb9
|
data/Gemfile
ADDED
data/README.md
ADDED
File without changes
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module RubyForGrafanaLoki
|
2
|
+
class Client
|
3
|
+
include RubyForGrafanaLoki::Request
|
4
|
+
|
5
|
+
def initialize(logger)
|
6
|
+
@logger = logger
|
7
|
+
end
|
8
|
+
|
9
|
+
def send_log(log_message)
|
10
|
+
curr_datetime = Time.now.to_i * 1_000_000_000
|
11
|
+
|
12
|
+
host = "somehost"
|
13
|
+
msg = "On server #{host} detected error"
|
14
|
+
|
15
|
+
payload = {
|
16
|
+
"streams" => [
|
17
|
+
{
|
18
|
+
"stream" => {
|
19
|
+
"source" => "Name-of-your-source",
|
20
|
+
"job" => "name-of-your-job",
|
21
|
+
"host" => host
|
22
|
+
},
|
23
|
+
"values" => [[curr_datetime.to_s, log_message]],
|
24
|
+
"entries" => [
|
25
|
+
{
|
26
|
+
"ts" => curr_datetime,
|
27
|
+
"line" => "[WARN] " + msg
|
28
|
+
}
|
29
|
+
]
|
30
|
+
}
|
31
|
+
]
|
32
|
+
}
|
33
|
+
|
34
|
+
json_payload = JSON.generate(payload)
|
35
|
+
uri = '/loki/api/v1/push'
|
36
|
+
|
37
|
+
# Use logger for sending logs to both default logger and Loki
|
38
|
+
@logger.info "Sending log to Loki: #{json_payload}"
|
39
|
+
|
40
|
+
# Send logs to Loki using the post method
|
41
|
+
post(uri, json_payload)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
# # In your application code
|
48
|
+
#
|
49
|
+
# # Example with Rails logger
|
50
|
+
# rails_logger = Logger.new(STDOUT)
|
51
|
+
# client = RailsLokiExporterDev.client(rails_logger)
|
52
|
+
#
|
53
|
+
# # Send a log entry to Loki
|
54
|
+
# client.send_log("This is a log message.")
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module RubyForGrafanaLoki
|
2
|
+
module Connection
|
3
|
+
|
4
|
+
BASE_URL = 'http://localhost:3100/'
|
5
|
+
|
6
|
+
def connection
|
7
|
+
Faraday.new(options) do |faraday|
|
8
|
+
faraday.adapter Faraday.default_adapter
|
9
|
+
faraday.request :url_encoded
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def post(path, body)
|
14
|
+
response = connection.post(path) do |req|
|
15
|
+
req.headers['Content-Type'] = 'application/json'
|
16
|
+
req.body = JSON.generate(body)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Check if the request was successful
|
20
|
+
if response.success?
|
21
|
+
return JSON.parse(response.body)
|
22
|
+
else
|
23
|
+
raise "Failed to make POST request. Response code: #{response.status}, Response body: #{response.body}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
def options
|
29
|
+
headers = {
|
30
|
+
accept: 'application/json',
|
31
|
+
'Content-Type' => 'application/json'
|
32
|
+
}
|
33
|
+
return {
|
34
|
+
url: BASE_URL,
|
35
|
+
headers: headers
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module RubyForGrafanaLoki
|
2
|
+
module Request
|
3
|
+
include RubyForGrafanaLoki:: Connection
|
4
|
+
|
5
|
+
def post(url, payload)
|
6
|
+
respond_with(
|
7
|
+
connection.post url, payload
|
8
|
+
)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def respond_with(response)
|
13
|
+
if response.success?
|
14
|
+
puts 'Log sent successfully to Loki.'
|
15
|
+
puts "Response code: #{response.status}, Response body: #{response.body}"
|
16
|
+
body = response.body.empty? ? response.body : JSON.parse(response.body)
|
17
|
+
puts body
|
18
|
+
else
|
19
|
+
puts "Failed to send log to Loki. Response code: #{response.status}, Response body: #{response.body}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def get(path)
|
24
|
+
respond_with(
|
25
|
+
connection.get(path)
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby_for_grafana_loki
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Oleg Ten
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-12-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.6'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: zeitwerk
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.4'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.4'
|
41
|
+
description: Attempt to make gem
|
42
|
+
email:
|
43
|
+
- tennet0505@gmail.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files:
|
47
|
+
- README.md
|
48
|
+
files:
|
49
|
+
- Gemfile
|
50
|
+
- README.md
|
51
|
+
- lib/ruby_for_grafana_loki.rb
|
52
|
+
- lib/ruby_for_grafana_loki/client.rb
|
53
|
+
- lib/ruby_for_grafana_loki/connection.rb
|
54
|
+
- lib/ruby_for_grafana_loki/query.rb
|
55
|
+
- lib/ruby_for_grafana_loki/request.rb
|
56
|
+
- lib/ruby_for_grafana_loki/version.rb
|
57
|
+
homepage: https://rubygems.org/gems/ruby_for_grafana_loki
|
58
|
+
licenses:
|
59
|
+
- MIT
|
60
|
+
metadata: {}
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options: []
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.7.0
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
requirements: []
|
76
|
+
rubygems_version: 3.4.10
|
77
|
+
signing_key:
|
78
|
+
specification_version: 4
|
79
|
+
summary: Ruby for Grafana Loki
|
80
|
+
test_files: []
|