NGiNXのアクセス元を可視化する方法を実験してたら、うまくいったので資料化してみました!結構使い道あるんじゃないかな−と思います!たぶん!
2015年4月6日月曜日
2015年4月1日水曜日
fluentdにHTTPヘルスチェックを返答させるのまき
(2015/04/13:RubyGem化しました)
Google Compute Engineの微妙な困りどころとして、「ロードバランサーのヘルスチェックがHTTPプロトコルかつstatus:200を返答しなくてはならない」というのがあります。
つまり『サーバーがHTTPを返答させる必要が無くても、ヘルスチェックのためにHTTPを返答させる必要がある』ということです。
…ということで、みんな大好きfluentdにヘルスチェックを返答させちゃおう!というおはなし。
方針としてはデフォルトで入っている「in_http」プラグインを使って、サブクラス化しちゃうという作戦です。
これをfluentdに読み込ませます!念のため、既存のin_httpも動くか確認します。
チェックしてみましょう!
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でリトライ処理するサンプルコードを書いてみました!
…ですが、とっても困るのがバックエンドサーバーで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に突っ込んでみたかったんです!
まとめておいたので、みんなみてね!
何がしたかったのかというと、モバイル端末のログを収集してBigQueryに突っ込んでみたかったんです!
まとめておいたので、みんなみてね!
2015年2月10日火曜日
EMLauncherのダウンロードURLの期限をメンテナンスするのまき
EMLauncher使ってますか!Testfrightが終了する今、EMLauncherはベータテスターにとって救世主のような存在ですね!
…EMLauncherの機能に、「QRコードでリンク先URLを共有」という機能があります。これはEMLauncherにログインできない人でも、ダウンロード先URLを共有出来るという便利な機能です。
なのですが、このURLって期間限定なんですよね。期間限定なのはいいんですが、期限を設定する方法がないんです!
ということでソースを直接修正しましょうということです。該当箇所はこちら。
…EMLauncherの機能に、「QRコードでリンク先URLを共有」という機能があります。これはEMLauncherにログインできない人でも、ダウンロード先URLを共有出来るという便利な機能です。
なのですが、このURLって期間限定なんですよね。期間限定なのはいいんですが、期限を設定する方法がないんです!
ということでソースを直接修正しましょうということです。該当箇所はこちら。
const URL_EXPIRE = 86400; ///< link_idの有効時間
2015年1月25日日曜日
figでudpを指定したいのまき
fig使ってますか!Docker使うのにとっても便利ですよね!
…fig.yml書いてると出る疑問は、「udpってどうやってポート指定するの?」ってことだと思います!
実は簡単で、portの後ろに書くだけです。
…fig.yml書いてると出る疑問は、「udpってどうやってポート指定するの?」ってことだと思います!
実は簡単で、portの後ろに書くだけです。
ports: - "3000" - "24224:24224/tcp" - "24224:24224/udp"
2014年12月19日金曜日
gateがvHost対応したのでテンプレ的なコンフィグ作ってみた
gate使ってますか!
自サイトにお手軽にgoogle認証を組み込めるという、夢のプロダクトです!
Ver0.4でついにvhost対応されました。これで『トップディレクトリからのパスを変更すると動かなくなるプロダクト』でも問題なく動かせるようになりました!ヤッタネ!
…ということで、コンフィグのテンプレ的なものを作ってみました。
自サイトにお手軽に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
登録:
投稿 (Atom)