タイトル

Need for Answer

2015年4月6日月曜日

NGiNXのアクセス元を、GoogleMapにレンダリングするのまき

NGiNXのアクセス元を可視化する方法を実験してたら、うまくいったので資料化してみました!結構使い道あるんじゃないかな−と思います!たぶん!


2015年4月1日水曜日

fluentdにHTTPヘルスチェックを返答させるのまき

(2015/04/13:RubyGem化しました)

Google Compute Engineの微妙な困りどころとして、「ロードバランサーのヘルスチェックがHTTPプロトコルかつstatus:200を返答しなくてはならない」というのがあります。

つまり『サーバーがHTTPを返答させる必要が無くても、ヘルスチェックのためにHTTPを返答させる必要がある』ということです。

…ということで、みんな大好きfluentdにヘルスチェックを返答させちゃおう!というおはなし。

方針としてはデフォルトで入っている「in_http」プラグインを使って、サブクラス化しちゃうという作戦です。

 module Fluent
  class HttpHealthCheckInput < HttpInput
    Plugin.register_input('http_healthcheck', self)
    def on_request(path_info, params)
      begin
        return ["200 OK", {'Content-type'=>'text/plain'}, ":) < Hello!"]
      end
    end
  end
end

これをfluentdに読み込ませます!念のため、既存のin_httpも動くか確認します。
 
<source>
  type http_healthcheck
  port 8889
  bind 0.0.0.0
</source>

<source>
  type http
  port 8888
  bind 0.0.0.0
  body_size_limit 32m
  keepalive_timeout 10s
</source>


チェックしてみましょう!
 
root@hoge:/etc/google-fluentd/catch-all-inputs.d# curl http://localhost:8889
:) < Hello!
root@hoge:/etc/google-fluentd/catch-all-inputs.d# curl http://localhost:8888
400 Bad Request
'json' or 'msgpack' parameter is required

2015年3月9日月曜日

NGiNX_Luaでバックエンドからのリターンコードで処理をわけるのまき

NGiNXのリバースプロキシ使ってますか!Apache+mod_wsgiの前段にNGiNXを置くとかあるんじゃないでしょうか!多分!

…ですが、とっても困るのがバックエンドサーバーで50xエラーが出ることがあるんですよね。困りますね。ということで、NGiNX_luaでリトライ処理するサンプルコードを書いてみました!

 upstream backend {
    server [proxy先URL];
}

server {
    listen 80 default;
    server_name 127.0.0.1 localhost;

    location / {
       content_by_lua '
         local STR = "/check"..ngx.var.uri
         local res = ngx.location.capture(STR)

         if res.status == ngx.HTTP_OK then
           ngx.say(res.body)
         else
           ngx.sleep(1)
           res = ngx.location.capture("/check")
           ngx.say(res.body)
         end
       ';
    }

    location /check {
      internal;
      rewrite /check/(.*) /$1 break;
      proxy_pass http://backend/;
  }
}

2015年2月18日水曜日

Google Compute Engine上にfluentdを立てて、BigQueryまでつなぎこんでみたのまき

Google Compute Engine上にfluentdを立てて、ログを収集してみました!
何がしたかったのかというと、モバイル端末のログを収集してBigQueryに突っ込んでみたかったんです!

まとめておいたので、みんなみてね!

2015年2月10日火曜日

EMLauncherのダウンロードURLの期限をメンテナンスするのまき

EMLauncher使ってますか!Testfrightが終了する今、EMLauncherはベータテスターにとって救世主のような存在ですね!

…EMLauncherの機能に、「QRコードでリンク先URLを共有」という機能があります。これはEMLauncherにログインできない人でも、ダウンロード先URLを共有出来るという便利な機能です。

なのですが、このURLって期間限定なんですよね。期間限定なのはいいんですが、期限を設定する方法がないんです!

ということでソースを直接修正しましょうということです。該当箇所はこちら。

        const URL_EXPIRE = 86400; ///< link_idの有効時間

2015年1月25日日曜日

figでudpを指定したいのまき

fig使ってますか!Docker使うのにとっても便利ですよね!

…fig.yml書いてると出る疑問は、「udpってどうやってポート指定するの?」ってことだと思います!
実は簡単で、portの後ろに書くだけです。

ports:
 - "3000"
 - "24224:24224/tcp"
 - "24224:24224/udp"

2014年12月19日金曜日

gateがvHost対応したのでテンプレ的なコンフィグ作ってみた

gate使ってますか!
自サイトにお手軽にgoogle認証を組み込めるという、夢のプロダクトです!

Ver0.4でついにvhost対応されました。これで『トップディレクトリからのパスを変更すると動かなくなるプロダクト』でも問題なく動かせるようになりました!ヤッタネ!

…ということで、コンフィグのテンプレ的なものを作ってみました。

#==========================================
# Config for gate
#==========================================
# Gate の待ち受けポート
# Forwardポートは最下部で設定
address: :8888

#==========================================
# ssl keys (optional)
#==========================================
# ssl:
#   cert: ./ssl/ssl.cer
#   key: ./ssl/ssl.key

#==========================================
# 認証
#------------------------------------------
# Github または google認証
#==========================================
auth:
  session:
    # authentication key for cookie store
    key: secret456
    cookie_domain: hoge.com

  info:
    # oauth2 provider name (`google` or `github`)
    # google または github
    service: google

    # your app keys for the service
    client_id: [googleAPI_ID]
    client_secret: [googleAPI_secret] 
    # your app redirect_url for the service:
    # if the service is Google, path is always "/oauth2callback"
    redirect_url: http://hogehoge.hoge.com/oauth2callback

   #--------------------------------------
   # 制限ユーザー
   #--------------------------------------
   # restrict user request. (optional)
   # restrictions:
   #  - hoge.com    # domain of your Google App (Google)
   #  - @gmail.com # specific email address (same as above)
   #  - your_company_org  # organization name (GitHub)

#==========================================
# document root for static files
#==========================================
htdocs: ./htdocs

#==========================================
# proxy 設定
#==========================================
proxy:
  - path: /
    host: hogehoge.hoge.com
    dest: http://127.0.0.1:8080