如何跟踪我的谷歌云存储中的文件下载

时间:2017-08-28 13:25:04

标签: google-cloud-storage

我需要一种方法来跟踪我的网站用户对我的云存储中的mp3文件的下载情况吗?除了存储日志,还有其他解决方案。

2 个答案:

答案 0 :(得分:2)

有一个存储日志记录功能:https://cloud.google.com/storage/docs/access-logs

答案 1 :(得分:0)

这个问题已经很老了,但是我想我可以分享我的解决方案,以防有人仍在寻找解决方案。您需要启用访问日志,然后编写一些脚本来下载和解析访问日志。

我用过Ruby,这是我脚本的内容:

#!/usr/bin/env ruby
require 'fileutils'

temp_dir = "/tmp/access-logs"
output_file = "/tmp/download-count.csv"

# Clean up the existing access logs
FileUtils.rm_rf(temp_dir)
FileUtils.mkdir(temp_dir)
`/usr/bin/gsutil -m cp "gs://my_access_logs/FusionAuthAccesssLog_usage_*" #{temp_dir} > /dev/null 2>&1`

# Collect the counts
counts = Hash.new(0)
Dir.foreach(temp_dir) do |file|
  if File.file?("#{temp_dir}/#{file}")
    date = file.gsub(/MyAccesssLog_usage_([0-9]{4})_([0-9]{2})_([0-9]{2}).*/, '\1\2\3')
    File.readlines("#{temp_dir}/#{file}").each do |l|
      if l =~ /my-file.zip"/
        counts[date] = counts[date] + 1
      end
    end
  end
end

File.open(output_file, "w", :encoding => "UTF-8") do |f|
  # Write the header
  f.puts("Date,Download count\n")

  # Write the counts
  counts.sort.each do |date,count|
    f.puts("#{date},#{count}\n")
  end
end

我为此写了一篇博客文章,其中还详细介绍了该脚本。这是链接:https://fusionauth.io/blog/2018/09/20/download-counts-from-google-cloud-storage