Carpe Diem

備忘録

2015-01-01から1年間の記事一覧

最新のDockerをインストール

概要 Ubuntuのデフォルトパッケージはすでにsupportされていないため、公式サイトのやり方で最新のものを入れます。 環境 Vagrant 1.8.0 Ubuntu 14.04 Docker 1.9.1 事前準備 Ubuntu Wily 15.10 Ubuntu Vivid 15.04 Ubuntu Trusty 14.04 (LTS) 上記のバージ…

GrafanaでSensuのモニタリングを可視化

概要 Sensuはサーバを監視してアラートを鳴らすことはできますがそのデータを可視化することはできません。 なのでそれを可能にするGrafanaを扱います。 環境 Ubuntu 14.04 Sensu 0.21.0 InfluxDB 0.9.6 Grafana 2.5.0 サーバ構成 サーバ IP Sensu-Server 19…

Sensu クライアントインストール

概要 Sensuのクライアント側です。 簡単のため、RabbitMQの通信にSSLは導入していません。 環境 Ubuntu 14.04 Sensu 0.21.0 サーバ構成 サーバ IP sensu-server, rabbitMQ 192.168.33.100 sensu-client 192.168.33.101

Sensu サーバインストール

概要 監視ツールであるSensuを導入します。 構成をきちんと把握するために手動でインストールしていきます。 アーキテクチャ Source: Sensu | What is Sensu?

RabbitMQ のインストール

概要 RabbitMQをUbuntuにインストールします。 環境 Ubuntu 14.04 RabbitMQ 3.5.6 インストール publicキーの登録 $ wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc $ sudo apt-key add rabbitmq-signing-key-public.asc

FluentdをDatadogで監視

概要 fluentdを使う上でbuffer溢れは気になるポイントです。 monitor_agentを導入すればcurlで確認できますが、瞬間的な値であるためできれば継続した値が得られると便利です。 zabbixやsensuと組み合わせる方法もありますが、今回は一番楽そうなDataDogとい…

Elasticsearch 2.x のインストール

概要 メジャーバージョンアップでちょこちょこ変更点があるのでその対応を含めたインストール方法です。 環境 Ubuntu 14.04 Elasticsearch 2.1.0 Java 1.8.0_66 Java8のインストール $ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update …

Node.jsでcluster環境でのlogging

概要 cluster環境では複数のプロセスが並列に動きます。 この状態で1つのログファイルにアクセスすると干渉が起きます。 かと言って各プロセス毎にログファイルを作成してしまうのは集約が面倒です。 今回はlog4jsを使ってその問題を解決します。 環境 Node…

MongoDBのAggregationとSQLの比較

概要 MongoDBのAggregationとSQLとの比較です。 どうやって集計するかな?と悩んだ時に慣れているSQLとの比較があると分かりやすいと思って公式ドキュメントに沿った形で載せてます。 環境 MongoDB 3.0.7 オペレータの比較 SQL MongoDB WHERE $match GROUP B…

MacでDocker環境構築

概要 MacでDocker環境を構築するためのメモです。 バージョンアップでも同じ進め方になります。 最新版は以下で確認します。 Release notes 環境 Docker 1.9.1 Docker Machine 0.5.1 Docker Compose 1.5.0 Docker Toolboxのインストール WindowsとMacにはAll…

Node.jsでFacebookのOAuth2.0を用いた認証

概要 FacebookのOAuth2.0を利用した認証を使うことがあったのでまとめました。 Node.jsなのでpassportというライブラリを使用します。 環境 Node.js 5.0.0 Express 4.13.1 npm 3.4.0 事前準備 以下のFacebookページでOAuth用のアプリを用意してください。 Fa…

コマンドラインでVirtualBoxのポートフォワード設定

概要 Dockerを開発環境に使う上でポートフォワードをする際、GUIからやるよりコマンドラインでできたほうが嬉しいので調べてみました。 環境 VirtualBox v5.0.8 使用するVMの名前はdevとします。 コマンド 追加 VBoxManage controlvm "VM名" natpf1 "ルール…

TerraformでAWSのセキュアな構成を構築

概要 PublicSubnetとPrivateSubnetを切り分けてよりセキュアに構築する方法。 PrivateSubnetのインスタンスにSSHアクセスする場合は別途VPNを立てる形になると思いますが、今回は割愛させていただきます。 環境 Terraform 0.6.3 構成図とネットワークフロー …

NginxでHTTP/2

概要 Nginxが1.9.5からHTTP/2に対応しました。 ソースからmodule指定でビルドする必要もなく、mainlineの1.9.5をパッケージでインストールすれば使えます。 環境 Ubuntu 14.04 Nginx 1.9.5 Nginxインストール Nginxの最新版をインストール(パッケージ管理)…

Terraformでtarget指定の削除

概要 Terraformでインスタンスなどを削除する際、普段xxx.tfファイルの該当箇所削除してterraform applyで消してたんですが、あるとき消す順番の指定が必要になって「仕方ないから2回(消す順に)実行するかー」と思ってtarget指定したのですが、何故かterr…

DiCEでダイナミックDNSのIP更新

概要 ダイナミックDNSを設定するとIPでなくドメイン名で自宅サーバへアクセスできます。 ただしグローバルIPが更新された時に、利用しているダイナミックDNSのサービスにに通知する必要があります。 DiCEは通知するためのツールです。 他にもddclientやinady…

Terraform で ELB の設定とインスタンス作成

概要 前回の続きです。ここまで来たら小規模ながらきちんとしたAWS構成を作れます。 環境 Ubuntu 14.04 Terraform 0.6.2 前提 Terraform でセキュリティグループを管理でVPC、サブネット、セキュリティグループの設定が済んでいる状態。 フォルダ構成 ├── co…

Supervisorでプロセスを管理

概要 Node.jsサーバなどはApacheやNginxと違ってデフォルトでは自動起動してくれません。 そういったプロセスを簡単に管理できるSupervisorを使います。 環境 Ubuntu 14.04 Node.js 0.12.7 Supervisor 3.0b2 Node.jsサーバの用意 インストール $ npm install…

Nginxのログをlogrotateでローテーション

概要 アクセスログをそのままにすると肥大化するので、ローテーションして分割する必要があります。 環境 Ubuntu 14.04 Nginx 1.4.6 logrotate 3.8.7 Nginxの用意 $ sudo aptitude install nginx インストール後、自動でlogrotateのnginx用設定が/etc/logrot…

fluentdで複数サーバのログをまとめる

概要 複数のサーバのアクセスログをAggregatorにまとめます。こうすることでログの管理が一元化されるので、ログの管理先をS3やElasticsearchに変更したりするときにAggregatorだけの対応で済みます。 環境 Ubuntu 14.04 Nginx 1.4.6 fluentd 0.12.12 構成 I…

fluentdでアクセスログをS3へ送信

概要 fluentdを用いてアクセスログをS3に保存する方法です。 今回はApacheのログをS3に送信します。 環境 Ubuntu 14.04 fluentd 0.12.12 Apache 2.4.7 事前準備 バケットの用意 fluentd-log01という名前で作成します。 注意としてS3のバケット名は他の利用者…

FilterとAggregationの組み合わせ

概要 Aggregationの結果にフィルタをかけたいと思ったら、使うクエリによって検索結果とAggsの結果が異なったのでそのまとめ。 環境 Ubuntu 14.04 Elasticsearch 1.6.0 簡単な区別 フィルタ 検索結果をフィルタする aggsの結果をフィルタする Filtered Query…

MongoDB 3.0 での explain

概要 MongoDB 3.0 からexplainの結果が大きく変わりました。 スロークエリを調べる上で、インデックスの使用、外部ソートの使用などをどこで確認するかをまとめてみました。 環境 Ubuntu 14.04 MongoDB 3.0.4 大まかな構造(全体) > db.users.find({name: "…

JWTを使ってGoogleAPIのアクセストークン取得する

概要 GoogleAPIを使う際、多くの場合は「ユーザごとに認証させてアクセストークンを発行し、リクエストに利用する」という流れですが、APIによってはわざわざユーザ個別にアクセストークンを発行させる必要がないケースもあります。 そんなケースでは「Servi…

Terraform でセキュリティグループを管理

概要 セキュリティグループはAWS標準のファイアウォール機能です。 作成したセキュリティグループをEC2インスタンスやELBに設定することで反映されます。 今回はTerraformでそれを作成し、EC2に結びつけてみます。 環境 Ubuntu 14.04 Terraform 0.5.2 前提 T…

Nginx でリバースプロキシを設定

概要 1024番以下のポートを使用する場合、root権限がいるためnodeやrailsでは直接80番や443番を使えません。 そんなときにポートフォワードするためのリバースプロキシをnginxで構築します。 環境 Ubuntu 14.04 Nginx 1.4.6 Node 0.12.3 Nginxの設定 最低限…

Packer で AWS の AMI を作成する

概要 AWSのAMIをPackerから作ります。基本的にAnsibleで使用するパッケージをインストールします。 簡単のためNginxだけインストールしたAMIを作ります。 Packerのインストールは「Packer で Virtualbox 用の VagrantBox を作成する」を参考にしてください。…

検索時に複数のクエリでスコアを付ける

概要 検索した時に「部分一致させたいけど、上位に出るのは前方一致してるものがいいなぁ」といった時の対応。 検索文字 デフォルト 希望 fa faterefactorfacebook fatefacebookrefactor 環境 Ubuntu 14.04 Elasticsearch 1.5.0

Elasticsearch の Aggregation 機能

Aggregationって? FacetsAPIの上位版です。集計する機能です。SQLならGROUP BYに相当します。 maxやavgといった複雑な条件で集約を行えます。 大谷さんの以下のスライドが非常にわかりやすいです。

dstatで見るポイント

概要 dstatがサーバの状態を調べるのに便利!というのはよく見るんですが、どこを見ればいいのかしっかり理解してなかったのでサーバの負荷状態を再現しながら見るべきポイントをまとめました。 環境 Ubuntu 14.04 dstat 0.7.2 stress 1.0.1 負荷試験で見る…