サーバが不安定だったお知らせ(事後報告)

はてなブックマーク – 「glibc」ライブラリに脆弱性、Linuxの大部分に深刻な影響 – ITmedia エンタープライズ
脆弱性対応するのに18時位に出先でスマホのSSHクライアントからyum update→rebootのコンボを決めたところ、VPS(さくらのVPS。環境はCentOS7)のnetworkが死ぬ事態になりました。
原因は完全私なのですが、再起動に時間がかかってるところに、様子がおかしいと思ってさくらVPSのコントロールパネルから強制再起動かけたのが良くなかったみたいです。
現在は解決済みです。焦った。もうこういうチョンボはやらないように気をつけたいです。

ちなみに2.17-106.el7_2.4がCentOS 7での最新バージョンみたいです。

$ rpm -q --changelog glibc | head
* 金  2月 05 2016 Florian Weimer <fweimer@redhat.com> - 2.17-106.4
- Revert problematic libresolv change, not needed for the
  CVE-2015-7547 fix (#1296030).

* 金  1月 15 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-106.3
- Fix CVE-2015-7547: getaddrinfo() stack-based buffer overflow (#1296030).
- Fix madvise performance issues (#1298930).
- Avoid "monstartup: out of memory" error on powerpc64le (#1298956).

* 水  1月 13 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-106.2

イカリングの情報は一部jsonで取得できる。

タイトルそのまんまです。なんか常識だったらしくてへこみました。なんでみんなsplapi使ってんの。
おそらく認証は下記サイトを参考にすればいけると思うので認証を突破してjsonをパースしてください。
<mini> Miiverse が楽しすぎて… – モノトーンの伝説日記

多分他にもありそう。
https://splatoon.nintendo.net/ranking/index.json
https://splatoon.nintendo.net/friend_list/index.json
https://splatoon.nintendo.net/schedule/index.json

統計とりたいのでステージ情報APIを廃止する予定はないですが(ただ、グレーなものなのでなんともいえない)、nowとnextとnext_allはどうしようか考えちゃいますね…。利用者が全員イカリングに移行したらエンドポイント廃止するかもしれません。
ちなみにAPIの情報収集スクリプトはスクレイピングからjsonのパースに移行しました。(フェスはjsonの構成がわからないので、わかったら対応する予定)
ただし認証は面倒なのでそのままWWW::Mechanizeで突破しています。

DateTime::Format::DateManipインストール時にテストでこける。

cpanでDateTime::Format::DateManipをインストールするとテストでコケる。

Running Build test
t/00load.t ......... ok
t/01conversions.t .. WARNING: the TZ Date::Manip config variable is deprecated
         and will be removed in March 2016.  Please use
         the SetDate or ForceDate config variables instead.
Use of uninitialized value $mod in concatenation (.) or string at /usr/local/share/perl5/Date/Manip/TZ.pm line 181.
Use of uninitialized value $mod in concatenation (.) or string at /usr/local/share/perl5/Date/Manip/TZ.pm line 182.
Use of uninitialized value $mod in concatenation (.) or string at /usr/local/share/perl5/Date/Manip/TZ.pm line 183.
ERROR: [config_var] invalid zone in SetDate:
t/01conversions.t .. 1/6
#   Failed test 'Parse Date 'March 23, 2003''
#   at t/01conversions.t line 67.
#          got: '2003-03-23T00:00:00.000000000 JST
# '
#     expected: '2003-03-23T00:00:00.000000000 EST
# '
t/01conversions.t .. 2/6
#   Failed test 'Format Date '2003-03-23T00:00:00''
#   at t/01conversions.t line 73.
#          got: '2003032317:00:00'
#     expected: '2003032303:00:00'

#   Failed test 'Format Date '2003-03-23T12:00:00''
#   at t/01conversions.t line 73.
#          got: '2003032405:00:00'
#     expected: '2003032315:00:00'
# Looks like you failed 3 tests of 6.
t/01conversions.t .. Dubious, test returned 3 (wstat 768, 0x300)
Failed 3/6 subtests

対策

テスト時のタイムゾーンがAsia/Tokyoになってるのが原因なので、環境変数TZ=US/Easternをセットしてテストを実施する。
これは…テストの作り方がまずい気がするんだけどどうなんだろう…。

splapiのアクセスログの可視化を始めてみた。

利用者多くなってきたし、問い合わせも増えてきて色々めんどくさくなってきたのでfluentdとelasticsearchとkibanaでsplapiのアクセス解析を始めてみました。
導入にめちゃくちゃ苦労してしまったので、後で記事にしようと思います。

reqtimeのグラフ

reqtimeのグラフ

とりあえず上のスクリーンショットはapiがレスポンス返しきるまでの時間なのですが、kibanaが使いこなせてなくて、記録されてるreqtimeが全部出力されちゃってます。(本当は0.005sec間隔ぐらいで区切りたい)
こういうのとかもどうにかしたいですね。