Google Admin SDK Reports API に぀いお質問です。

255 views
Skip to first unread message

wezardnet

unread,
Mar 8, 2016, 3:24:43 AM3/8/16
to Google Apps API Japan
お䞖話になりたす。

Reports API の Activities: list で Google ドラむブの Audit Log を取埗しようずしおいるのですが、少々困ったこずがありたす。
Audit Log は startTime ず endTime を指定しお 1 日分を取埗しおいたす
この API は䞀床に取埗できる件数は最倧 1,000 件ず制限があるので、それ以䞊は pageToken をセットしおペヌゞングで取埗しおいく感じになるず思いたす。

ここたでは他の Google API ずそれほど倉わりはないので問題はないのですが、ある条件䞋でレスポンスにログが重耇しお返される堎合がありたす。

条件ずは Audit Log に同日同時刻のアクティビティが耇数たずえば数䞇件蚘録されおいる堎合です。

[1page]
Date uniqueQualifier
2016-02-25 08:59:13 -6395600542386494321
2016-02-25 08:59:13 -5322012104754841933
2016-02-25 08:59:13 -5431156148369679552
           ・
           ・
           ・
           ・

[5page]
Date uniqueQualifier
2016-02-25 08:59:13 -5431156148369679552
2016-02-25 08:59:13 -5498559612578655264
2016-02-25 08:59:13 -5322012104754841933 ⇒ これが重耇10page, 20page, Npage ず耇数回に枡っお返される
           ・
           ・
           ・

おそらく Reports API が日時だけで゜ヌトしおレスポンスを返しおいるので、ペヌゞングが正しく機胜しおいないのではないかず考えおいたす。
ちなみに uniqueQualifier はナニヌクな倀ではありたせん。同日同時刻に同じアクティビティが発生した堎合、同じ倀でログが蚘録されおいるこずがありたす。ですので、これは重耇にはなりたせん。

䞊蚘のケヌスは uniqueQualifier は同じで䞭身もたったく同じ堎合になりたす。
uniqueQualifier をキヌにしお、䞭身の JSON を Base64 でコレクションに入れお重耇分を陀倖させおいるのですが、
件数が倚い堎合はメモリも消費したすし、なにより 1 日分のログ取埗がたったく終わる気配がないです。無限ルヌプな感じ...

なにかお知恵ずいうか、知芋などありたしたらご教瀺いただけるず助かりたす。

Tatsuya Nakano

unread,
Mar 8, 2016, 8:15:22 AM3/8/16
to Google Apps API Japan
䞭野です。

同時刻でそれだけあるずいうこずはuserKeyはallで実行しおいるず思いたすが
そのデヌタ量だず確かに時間がすごく掛かりそうですね。GoogleAPIの仕様䞊、pageTokenで蟿るしかないのでallだず䞊列実行ができないはず

userKeyはメヌルアドレスやUser.idが䜿えるみたいなので
手間は増えたすがナヌザヌ単䜍で䞊列取埗しおみおはいかがでしょうか。
  1. DirectoryAPI User:listで党Appsアカりントを取埗しおDBに退避。
  2. 1のUser.idをuserKeyに入れおReports APIを実行。※ここを䞊列で流す



2016幎3月8日火曜日 17時24分43秒 UTC+9 wezardnet:

wezardnet

unread,
Mar 8, 2016, 7:25:50 PM3/8/16
to Google Apps API Japan
䞭野さん、返信ありがずうございたす

なるほど、ナヌザヌ単䜍で取埗するのも”手”ですね。たしかに䞊列実行させれば凊理時間は倧幅に短瞮されそうです。


ただ、今回のケヌスでは同䞀ナヌザヌで同日同時刻にログが蚘録されおいるのです。
おそらく、ドラむブ Sync 系のアプリか䜕かでロヌカル端末ず同期したタむミングではないかず掚枬しおいたす。人為的な操䜜ではあり埗ないですね

Reports API で取埗したログを芋るず、少なくずも 1 䞇件ぐらいのファむル同期がされた圢跡がありたす。
これを 1,000 件ず぀ペヌゞングで取埗しおいくず 1 件あたり 1,000 件重耇しお取埗されるように芋えたす。
API が前凊理でどこたで返したのかわからないのでしょうか...

぀たり、本来は 1 䞇件のログなのに 10,000 × 1,000 = 10,000,000 件のログが API で返される挙動になりたす。
重耇ログを捚おお API コヌルし続けるのも、さすがにこの件数になるず蟛いです。。。




2016幎3月8日火曜日 22時15分22秒 UTC+9 Tatsuya Nakano:

Tatsuya Nakano

unread,
Mar 9, 2016, 8:12:36 AM3/9/16
to Google Apps API Japan
wezardnetさん

なるほど。。
重耇がちょっずあるのかず思っおいたしたがそんなにあるのですか、、いくらなんでも倉ですよね。

2点ほど確認しお欲しいです。

■管理コン゜ヌル䞊は重耇しお衚瀺されたすか
レポヌト -> 監査 -> ドラむブから芋れるず思いたす圓方の環境がUnlimitedでないのでドラむブのログが出せないのですたぶんそこにあるはず

■nextPageTokenの確認
ペヌゞングが正しく機胜しおいないのではないかず考えおいたす。
私もそんな気がしおきたした。
重耇がでるあたりのpageTokenから以䞋の2パタヌンでそれぞれnextPageTokenを取埗しおもらえたすか
・maxResultsを100にしお10回投げた時の最埌のnextPageToken
・maxResultsを1000にしお1回投げた時のnextPageToken
pageTokenの仕組み䞊、䞊蚘2぀は同じ1001番目をさすので同じにならないずおかしいです。

※仮にですが
1000の時のnextPageTokenが1001番目ではなく2番目を返すような挙動をしおいる堎合、1぀ず぀しか進たないので以䞋のようにAPI発行数が1000倍必芁になりたすね。
1回目が1〜1000番目のデヌタ
2回目が2〜1001番目のデヌタ
3回目が3〜1002番目のデヌタ
・・・
1000回目が999〜1999番目のデヌタ




2016幎3月9日氎曜日 9時25分50秒 UTC+9 wezardnet:

wezardnet

unread,
Mar 10, 2016, 4:03:36 AM3/10/16
to Google Apps API Japan
䞭野さん、アドバむスありがずうございたす

1 ぀目に぀いおは確認枈みです。

■管理コン゜ヌル䞊は重耇しお衚瀺されたすか

 ⇒ 重耇されずに衚瀺されたす。なので API で抜いた時はなぜ重耇するのか䞍思議に感じおいたずころです。

2 ぀目に぀いおは別件の割り蟌み䜜業が入ったので未確認です。こちらは興味深いので埌日調査しおみたす。少しお時間をください。



2016幎3月9日氎曜日 22時12分36秒 UTC+9 Tatsuya Nakano:

wezardnet

unread,
Mar 29, 2016, 1:36:24 AM3/29/16
to Google Apps API Japan
䞭野さん、少し時間が空いおしたいたしたが 2 点目に぀いお調査しおみたした。

たず、重耇がない郚分では、期埅どおりの nextPageToken が返る挙動を確認したした。
これは䞭野さんが回答されたずおりです。


次に重耇が発生するず思われる郚分の nextPageToken を調べおみたずころ、
maxResults 倀が 1,000, 100, 10 のそれぞれの時で 1, 2 ,  n 回目の API コヌルずすべお同じ倀になりたす。

぀たりは maxResults 倀が 1,000 の時は 
  • 1001 - 2000 番目のデヌタ → 101 - 200 番目ず同じ → 11 - 20 番目ず同じ
ずいうおかしな倀になりたす。これだずたぶん 1 件ず぀取埗しおいるのず倉わらないず思われたす。

調査結果をスプレッドシヌトにたずめたしたので、こちらを芋た方が早いです。




2016幎3月9日氎曜日 22時12分36秒 UTC+9 Tatsuya Nakano:
wezardnetさん

Tatsuya Nakano

unread,
Mar 29, 2016, 9:28:17 AM3/29/16
to Google Apps API Japan
wezardnetさん

ご確認ありがずうございたす。

それはNextPageTokenがぶっ壊れおいる気がしたすね。

こういう時はどうするんでしょう。。issueに登録でしょうか。


2016幎3月29日火曜日 14時36分24秒 UTC+9 wezardnet:

wezardnet

unread,
Apr 4, 2016, 11:21:17 PM4/4/16
to Google Apps API Japan
拙い英文で issue 䞊げおおきたした。うたく䌝わっお察応しおくれるず嬉しいなぁ...



2016幎3月29日火曜日 22時28分17秒 UTC+9 Tatsuya Nakano:
Reply all
Reply to author
Forward
0 new messages