LoginSignup
0
0

More than 1 year has passed since last update.

HoneyBadgerでエラーが発生したjobの引数のリストをBQに送信する

Last updated at Posted at 2022-01-03

paginationされているのでちょっとめんどかった。
https://docs.honeybadger.io/api/faults/#get-a-list-of-notices を参考にした。

$user_ids = []

# returns page of next url
def get_user_ids(url)
  connection = Faraday.new(url: url)
  connection.basic_auth("xxxxxxxxxxxxxxxx", "") # take this from https://app.honeybadger.io/users/edit
  res = JSON.parse(connection.get().env[:response_body])
  res["results"].each do |r|
    $user_ids << r["request"]["params"]["job"]["args"][0]["arguments"][3]["args"][0]
  end
  return res["links"]["next"]
end

url = "https://app.honeybadger.io/v2/projects/xxxxx/faults/yyyyyy/notices"
while !url.nil? do
  url = get_user_ids(url)
end

sql = <<~SQL
  INSERT `org.tmp.table_name`
  VALUES (#{user_ids.join("), (")})
SQL
BigQuery.client.query(sql)


# もし、user_idsが多すぎたら
# $user_ids.each do |uid|
#  sql = <<~SQL
#    INSERT `org.tmp.table_name`
#    VALUES (#{uid})
#  SQL
#  BigQuery.client.query(sql)
# end

もし、user_idsが多すぎたら

以下のエラーがおこる。

Google::Cloud::InvalidArgumentError: resourcesExceeded: Resources exceeded during query execution: Not enough resources for query planning - too many subqueries or query is too complex.
from /app/vendor/bundle/ruby/3.0.0/gems/google-cloud-bigquery-1.34.0/lib/google/cloud/bigquery/service.rb:564:in `rescue in execute'
Caused by Google::Apis::ClientError: resourcesExceeded: Resources exceeded during query execution: Not enough resources for query planning - too many subqueries or query is too complex.
from /app/vendor/bundle/ruby/3.0.0/gems/google-apis-core-0.4.1/lib/google/apis/core/http_command.rb:228:in `check_status'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0