add influxdb

This commit is contained in:
Dylan Knutson
2023-08-21 12:05:19 -07:00
parent d21bacb9a3
commit 48cfa13427
2 changed files with 47 additions and 0 deletions

View File

@@ -4,6 +4,12 @@ development:
org: "primary"
bucket: "redux-scraper-dev"
staging:
host: "http://grafana:8086"
token: "cq3ytOdINIktgUynWj0tDfkpFha8iQHy0njLmpx87Rlko4bo2Gn8oxdk6dLL6y-X3jlZqXJjZ2xtpzFvk1BSMw=="
org: "primary"
bucket: "redux-scraper-dev"
production:
host: "http://grafana.local:8086"
token: "W2ikhmpQxQHZAStgSEK6s6aJxnOqeD4Zz2MI1m_lnD1JX57V9Esqm0zXb3DWbN7Gnj2GdmF_YrcvE8cy6NbIqQ=="

View File

@@ -0,0 +1,41 @@
client = InfluxDB2::Client.new(
Rails.application.config.x.influxdb.host || raise("no host"),
Rails.application.config.x.influxdb.token || raise("no token"),
bucket: Rails.application.config.x.influxdb.bucket || raise("no bucket"),
org: Rails.application.config.x.influxdb.org || raise("no org"),
precision: InfluxDB2::WritePrecision::NANOSECOND,
use_ssl: false,
)
write_api = client.create_write_api
ActiveSupport::Notifications.subscribe "process_action.action_controller" do |name, started, finished, unique_id, data|
request = data[:request]
api_token = request.params[:api_token]
api_user = api_token ? ApplicationController::API_TOKENS[api_token] : nil
ip = request.headers["HTTP_CF_CONNECTING_IP"] || request.remote_ip
hash = {
name: "process_action.action_controller",
tags: {
method: "#{data[:controller]}##{data[:action]}",
format: data[:format],
http_method: data[:method],
status: data[:status],
exception: data[:exception]&.first,
},
fields: {
ip: ip,
api_token: api_token,
api_user: api_user,
time_in_controller: (finished - started) * 1000,
time_in_view: (data[:view_runtime] || 0).ceil,
time_in_db: (data[:db_runtime] || 0).ceil,
request_id: unique_id,
},
time: started,
}
write_api.write(data: hash)
rescue
Rails.logger.error("error writing influxdb metric: #{$!}")
end