ot2sy39's note

twitter 140文字じゃ書けないときの外部エントリみたいな

【復習】第16回春だからログ解析するぞシェル芸勉強会:03

続き。

Q3-1 ログの件数が一番多い曜日はどれ

gawk '{print $1}' access_log | xargs date ***** | sort | uniq -c

ってな感じでいけそう、 でもログの行数すごいからうまくxargsで処理できるのか? と思いつつ、man dateでフォーマット文字列を確認してたら、 date -f -なる便利オプションを発見して解決。

gawk '{print $1}' access_log | date -f - "+%w" | sort | uniq -c

Q3-2 ログの件数が一番多い時間帯はどれ

Q1と同じ。自分の中では定番となっていて、あまり他の方法を考え付かない。 結果的には速い方法だったぽいが、考えなしなのは良くない。

gawk '{h[substr($2,1,2)]+=1} END {for(i in h){print h[i], i}}' access_log | sort -rn

【復習】第16回春だからログ解析するぞシェル芸勉強会:02

【復習】第16回春だからログ解析するぞシェル芸勉強会:01 - ot2sy39's diary の続き。

Q1 NASAのログについて、ステータスコードを抽出して、どのコードがいくつあるか数えてみましょう

初手思いついたのがコレ。あるパターンの行の数を数えるとき、ついパターンをキーとした連想配列に出現回数を数えてしまう。

gawk '{status[$(NF-1)]+=1} END{for(i in status){printf i, status[i]}}' access_log

でもサンプル回答ではキーをプリントしちゃって、sort & uniq -c。

awk '{print $(NF-1)}' access_log | LANG=C sort | uniq -c

うむ、サンプルの方が間違いなくシンプル。

念のため手元の環境*1で処理時間を測ってみると、 だいたい連想配列版が半分くらいの時間で完了していた(やったね!)*2。 富豪なら無視するレベルだが。

連想配列 sort | uniq -c版
real 4.243s 9.335s
user 3.955s 10.130s
sys 0.286s 0.554s

Q2 NASAのログについて、ファイルを開かずに、ログの多い日を探しだしてみましょう

「ログの多い日」=「ファイルの行数の多い日」としか考えられず、 頭の中は以下のコマンドで占拠されてしまった。

wc -l 1995*

サンプル回答は「ls -l | sort -k5,5n | tail」。 「lsを使ってサイズを見たら開かないでも見当がつきます」とのこと。 まあそうだよね。

*1:さくらVPS(1G) 石狩第1ゾーン メモリ1GB ディスク100GB(HDD) CPU2コア CentOS 6.3(64bit) ローカルにまともなUNIX環境がないのでVPSでやってる……

*2:サンプル回答はawkだがCentOSなのでawk=gawk

【復習】第16回春だからログ解析するぞシェル芸勉強会:01

まずは準備だけ。今回のシェル芸勉強会は準備段階から篩い落としにきた。

準備1

zcat access_log.nasa.gz |
gawk -vFS='[[ /:]' 'BEGIN{m["Jul"]=7; m["Aug"]=8;} {printf("%04d%02d%02d %02d%02d%02d %s\n", $7, m[$6], $5, $8, $9, $10, $0)}' > access_log

とりあえず書いたのがコレ↑。 月変換用連想配列の準備はもっとスマートな記述がありそう。

結果を確認してみるとおおむね上手くいってるが、稀に日付が2カラム目に出力されるレコードがある。 上手くいかないデータをみると、リクエスト元データに ':' や '/' が入っているケースが存在することがわかった。 マジで……。 ホスト名に英数字とアンダースコア以外使っていいわけ? いや俺が無知なだけでApacheのログにはユーザ名などの付加データが ':' や '/' で区切って追加されるんだきっと。

zcat access_log.nasa.gz |
gawk '{print $4,$0}' |
sed 's/^\[//' |
gawk hogehoge

というわけで日時のカラム($4)のみ切り出して加工する必要があり、 限りなくサンプル回答↓に近づくのであった。

【問題と解答例】第16回春だからログ解析するぞシェル芸勉強会 | 上田ブログ

準備2

準備2はサンプル回答の形式を知っていたのでそのままだった。

Android 5.1 on Nexus7 2012 w/3g

既報したように、4/14(火)の朝にAndroid5.1アップデートが振ってきた。

Nexus7 (2012 w/3G) にAndroid5.1到着! - ot2sy39's diary

アップデートにかかった時間は、WiFi環境で30分ほど。 アップデート時にはアプリ最適化プロセスが走るが、 最適化対象が120もあったのには驚いた(システム系アプリも含めてだが)。 UIなどについては何が変わったか気づかない程度。

モバイルネットワークの不具合は解消せず

最初の24時間は順調に使えていたが、 本日正午前にモバイルネットワークが使えなくなってしまう不具合が再発。 アップデート前と同様に、APN設定不可となってしまい、 機内モードON/OFFなどでも回復しない。 端末再起動で回復したが、15時ごろに確認したところ再発していた。

もう少し使ってみないと発生頻度に変化があるかは判断できないが、 不具合が解消していないのは確かのようだ。 諦めて新しい端末の導入などを検討するべきかもしれない。

続々 Android 5 と MVNO SIM と Nexus7(2012 w/3g)

相変わらず3Gが掴めなくなっては再起動というNexus7ライフを堪能している。Android 5.1が降ってくるのを首を長くして待っている状態だ。

ただ、IIJmioツイッターアカウントから気になるツイートがあった。APNプロトコルを「IPv4/IPv6」にしていることが原因で不安定になることがあるらしい。

さてAPN設定は?

さっそくAPN設定を確認してみたが、「IPv4」のみであった。残念ながら、この問題は関係なかったようだ。

f:id:ot2sy39:20150319234925p:plain

続 Android 5 と MVNO SIM と Nexus7(2012 w/3g)

Android 5 と MVNO SIM と Nexus7(2012 w/3g) - ot2sy39's diary の続き。

前回は不要なAPNを消して様子見としていたが、結論からいうと再発した。頻度は微妙に減ったような気がしないでもないというレベルなので、正直不要APN消去は関係ないかもしれない。

読んでもらえるかは分からないが、「タブレット情報」のフィードバックからグーグルに症状をメールした。Googleから反応があればまた書く。

端末情報

前回の記事に書いておくべきだったが、正確な端末情報を載せておく。

モデル番号 Nexus7

Andoridバージョン 5.0.2

ベースバンドバージョン 1231_0.18.0_0409

カーネルバージョン 3.1.10-g6ff7a51 android-build@vpbs1.mtv.corp.google.com #1 Wed Dec 10 19:55:59 UTC 2014

ビルド番号 LRX22G

f:id:ot2sy39:20150218072632p:plain