Carpe Diem

備忘録

dockerのlog周りの対応

概要

dockerを本番運用する際にログの扱いに悩んだので情報をまとめてみました。

環境

  • docker v1.12.1

コンテナのログは何処に渡すべきか

主に以下の3通りになると思います。

  1. コンテナ内に保存
  2. volume先に指定してに永続保存
  3. log driverを使って転送
続きを読む

remote_addrとかx-forwarded-forとかx-real-ipとか

背景

ECSでNginxのコンテナをプロキシとして立てたところ、APIサーバのアクセスログのクライアントIPがNginxのコンテナIPになっていたのでその修正をしたのがきっかけです。

環境

  • Nginx 1.10.2
  • Docker1.12.1

構成

f:id:quoll00:20210820054858p:plain

Client -> ELB -> Nginx -> API

という構成とします。

続きを読む

Goのpresentで発表用スライドを作成する

概要

先日Goオールスターズ2で登壇させて頂き、その時プレゼン作成のために使ったpresentの使い方を紹介します。
presentを使うと↓のようなスライドを作れます

http://go-talks.appspot.com/github.com/jun06t/go-all-stars/main.slide#1

メリット・デメリット

実際に使ってみたメリット、デメリットを挙げます。

メリット

  • プログラムをスライド上で実行できる
  • スタイルが統一できる

デメリット

  • プログラムのソースコードの分割が大変(はみ出したらスライド外に表示される)
  • 画像の位置など指定できない
  • ブログなどで埋め込み表示ができない
  • フルスクリーン表示できない
  • アニメーション使えない

あまり融通のきかない感じに見えますが、スライド上でプログラムが実行できるのはやはりメリットは大きく、またプログラムを載せる時に簡単に導入できるのは便利でした。

続きを読む

Expressでroutingの後にmiddlewareを置きたい

概要

あるサーバ用のライブラリを使ったときにrouting後にmiddlewareを挟む必要が出てきました。
そのときに幾つかハマったことがあったので、それをまとめます。

環境

  • Node.js 6.6.0
  • Express 4.13.4

Express4のミドルウェアの流れ

まずはミドルウェアの実行順について検証します。

続きを読む

ESLintを設定する

概要

以前はJSLint, JSHintなどが使われていましたが、最近はplugableなESLintがコードの検証に使われる様になってきました。
今回はその設定方法を簡単に説明します。

環境

  • Node.js 6.6.0
  • ESLint 3.5.0

インストールと設定

npmでインストールします。

$ npm install -g eslint
続きを読む

TerraformでECS環境の構築【オートスケール編】

概要

TerraformでECS環境の構築 - Carpe Diemでは書いてなかったオートスケールについてです。
terraform 0.7からServiceでのオートスケールにも対応したので、それを使って構築します。

環境

  • Ubuntu 14.04
  • Terraform 0.7.3

実装

完成形はこちら github.com

続きを読む

MongoDBのデータをElasticsearchにリアルタイム同期

概要

以前はMongoRiverを使う - Carpe Diemで紹介したようにRiverという機能を使って同期を実現させていました。
しかしながらElasticsearchがRiverを廃止することを決め、バージョン2.x以降は使うことができなくなりました。

そこで調べてみて挙がったのは以下です。

ツール 用途 デメリット
logstash 様々なデータをElasticsearchへ投入するツール。
公式が薦めてる
inputにmongoのプラグインがない
beats ログの解析に使える。ダッシュボードもすぐ用意できる mongoのデータを送るようなプラグインがない
embulk バルクローダー。fluentdのバッチ版 バッチ版というようにリアルタイム同期ではない
fluentd リアルタイムな同期システムを作れる データがすでにあるものに対しての全同期には不向き
transporter 全同期可能。リアルタイムなデータ同期もできる sharded mongo clusterに未対応
mongo-connector 同上 デフォルト設定だとログが少ない

以上の結果からmongo-connectorを使用することにしました。

続きを読む