読者です 読者をやめる 読者になる 読者になる

雑記

インフラのことだったりプログラムのことだったりどうでもいいこと書いたり。要は雑記。

ChatOpsとTerraformについて発表しました

それぞれの資料はこちら とりあえずはじめるChatOps from Masaki Ogawa AWSをテラフォーミングする会(Terraformハンズオン) from Masaki Ogawa 両方ともこれから始める人むけの資料です。 ChatOpsもTerraformも、うまく使いこなせれば生産性や効率が格…

CircleCIでAndroidのビルドが失敗する

いつも通りにビルドしたら以下のメッセージがでた。 Could not find com.android.support:appcompat-v7:22.2.1. Androidのsupportライブラリがみつからないとか。 対処 明示的にライブラリをアップデートするように指定 変更前 dependencies: override: - ec…

Terraformで最低限のAWS環境を作ってみた

タイトル通り。 Terraformってなに? インフラの構成をコード化するもの。 AWSに限っていうと、VPCやSecurityGroup、GatewayからEC2などなどをコード化できる。 (Terraform自体はAWSだけでなく、DigitalOceanやHerokuなど各種サービスに対応している) サーバ…

ImageMagick-lastをAmazonLinuxにインストールする

AmazonLinuxでインストールできるImageMagickは若干バージョンが古いです。 最新版をパッケージでインストールするにはremiから入れればいいのですが、普通にやると依存関係でエラーがでます。 エラー: パッケージ: ImageMagick-last-libs-6.9.1.2-1.el6.rem…

AWS SDK for GOを使ってRoute53のレコードを取得する

go

タイトル通り、サンプル作ってみました 環境 % go version go version go1.4.2 darwin/amd64 準備 パッケージの取得 % go get -u github.com/aws/aws-sdk-go/ % go get -u github.com/vaughan0/go-ini go-iniはaws-sdk-goのcredentialsで使ってるらしく、い…

go langことはじめ

go

ちょっとgoさわってみたくなった インストール Macなのでhomebewで % brew install go ちょーかんたん PATHの設定 zshなので.zprofileで if [ -x "`which go`" ]; then export GOROOT=`go env GOROOT` export GOPATH=$HOME/.golocal export PATH=$PATH:$GORO…

EC2のタグをCLIで管理するtapewriterというツールを作った

aws

タイトル通りですが、EC2のタグをCLIで管理したくて(=コード化したくて)作ってみました。 om732/tapewriter route53をDSLで管理するroadworkerという素晴らしいツールがあるのですが、おもいっきりその影響を受けています。 (や、ほんと素晴らしいツールで結…

sensuについてちょっとだけ発表した

資料は以下。 sensuのちょっと進んだ使い方 from Masaki Ogawa こういった発表は初めてだったんだけど、伝えたいこと全然言えなかった。 難しいものですね。 多分内容的にはニッチなものです。 最近では監視系はSaaSを利用するパターンが主流だと思うんだけ…

気がづいたらGrafanaの2.0(beta)がリリースされてた

ざっと見た感じ、結構変わってますね。 グラフのスナップショットがとれるらしい -> 障害時にスナップしてチャットに送るとかできるのかな シングルパネルが表示できる -> 最新のロードアベレージとかパッと見てわかるようになる バックエンドをブラウザ上か…

コマンドで暗号方式を指定してSSL接続する

今更だけど、OpenSSL関連の脆弱性でお世話になったコマンドを備忘録としてめも。 POODLE、FREAKの時に使いました。 SSL3対応か確認する(POODLEの確認) % openssl s_client -connect example.com:443 -ssl3 暗号化スイートでEXPORTが使われているか確認(FREAK…

nginxのluaモジュールを使ってみる

インストール インストールの方法としてopenrestyを使う方法と各ライブラリをひとつずつ用意して通常のnginxに組み込む形があった。 openrestyを使うことが強く推奨とのことですが、今回はnginxに自分で組み込む形にします。 (公式が配布していないnginxを使…

Rubyで特定のディレクトリ以下のファイルを一括requireする

タイトル通り、特定のディレクトリ以下にあるファイルを一括でrequireする方法 ディレクトリ構成 ├── libs │ ├── hoge.rb │ └── piyo.rb └── run.rb 上記のlibs以下を読み込んでみる。 コード hoge.rb module Test class Hoge def output() puts 'hoge' end …

Ansibleでリトライ処理をする

例えばAnsibleでTomcatを起動したとき、確認のためにhttpでアクセスして確認したいとします。 curlでローカルにアクセス、失敗したら数秒後に再度アクセスして確認という処理をしたかったのですが、 Ansibleでそんなのないよなーって思って探してみたらあり…

AMIにaws-sdk for rubyをインストールしようとしたらエラーがでた

タイトル通りなんだけど、その時の対応メモ。 そもそもの依存関係のパッケージインストール $ sudo yum install libxml2-devel $ sudo yum install libxslt-devel aws-sdkをインストール aws-sdkをインストール $ sudo gem i aws-sdk ただ、依存関係にあるパ…

OpsCenterをNginxでproxyする

はまったのでメモ 普通にproxyすると こんな設定で普通にproxyすると、各ノードの状態を取得することができません。 location / { proxy_pass http://localhost:8888; } /tcp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/xhrstream?nocache=0.9999999999999999といっ…

bowerでgitプロトコルではなくhttpsでパッケージを取得する

デフォルトだとbowerを実行すると、git://でパッケージを取得しにいきます。 ただ、これだとネットワーク環境によってはうまく取得できない場合があります。 例えば、社外へアクセスするポートに制限がかかっているときなど(gitだとポート9418を利用する。自…

MEANスタック環境の構築

MEANスタック環境を構築してみる ちょっとした管理ツールを作る必要が出てきたので、どうせなら面白く作りたいなーと思い話題のMEANスタックで作ってみようかなーと。 今回はお試しで環境の構築まで。 前提環境 OSはCentOS6 Vagrant環境 ほぼまっさらな状態…

datastax-agent(OpsCenterのagent)を手動でインストールする

OpsCenterを利用するときに、Agentもインストールする必要があります。 基本的にはOpsCenterの管理画面からインストールすることになるのですが、rootアカウント、もしくはsudoersの権限を持ったアカウントを設定しないとインストールできないです。 セキュ…

Vagrantでvmをロールバックするプラグイン(saharaプラグイン)

http://qiita.com/succi0303/items/e06bca7db5a0c3de96af#3-1 こういうプラグインがほしかった、、、! これまでAnsibleのテストでup->destroy->up->destroyを繰り返していたのがこれで捗りますね! というかそもそもVagrantにプラグインがあるという認識が…

mailコマンドでsmtpサーバを指定する

ワンライナーで実行する場合は以下。 echo test | mail -s "test" -S "smtp=smtp://mail.example.com:25" hoge@example.com もしくは~/.mailrcを設定する。 - ~/.mailrc set smtp=smtp://mail.example.com:25 上記は認証情報一切なしの方法ですが、smtp-auth…

CentOS6にtmux1.9をユーザ領域にインストール

Cent6のyumでtmuxをインストールすると1.6系がインストールされるんですが、一部機能が使えなかったりするんで現時点で最新版の1.9系を入れてみます。 問題が そのままコンパイルするとmake時に以下のエラーがでます。 control.c: In function ‘control_call…

sensuとGrafanaを連携してグラフを自動生成してみる

sensuを使っていて何が不満だったかというと、グラフの生成なんですよね。 監視対象についてはsensu-clientsを設定して起動すれば終わりだったのに対し、グラフの生成だけは毎回ダッシュボードからぽちぽち設定する必要があったのです。これがちょーめんどく…

sensuのおれおれベストプラクティス

sensuを導入してみました。 で、その導入時に困ったのが、subscriptionsのグルーピング設計や設定ファイルの置き方なんですね。 ネットの情報を見ててもインストールしてみたーや他のサービスとの連携だったりがまとまっていて、実際にどのように設定してい…

sensuのkeepalive間隔

sensuは30秒毎にクライアント毎にkeepaliveする。 この30秒はハードコーディングされているため、設定できない(おそらく) /opt/sensu/embedded/lib/ruby/gems/2.0.0/gems/sensu-0.14.0/lib/sensu @timers[:master] << EM::PeriodicTimer.new(30) do 他のchec…

vagrantでマウントしているディレクトリの注意点

vagrant使うとローカル環境のディレクトリがマウントされているじゃないですか。 その領域をドキュメントルートとした場合、ファイルを更新してブラウザでリロードしても反映されなかったので、その対策めも。 原因 簡単に言うとキャッシュ。webサーバでなく…

sensu クライアントを監視対象から削除

APIをたたく必要あり。 (削除しないとずっとエラーのままで残ります) コマンドだと以下。 curl -X DELETE http://sensu-apiのip:4567/clients/[clientの名前] 例えばAPIが「192.168.33.10」で「hogehoge」というクライアントを監視対象から削除したい場合は…

sensuでembedded rubyを使う

embedded ruby=sensuにbundleされているrubyのこと。 yumでインストールした場合は/opt/sensu/embedded/bin/rubyに格納されているやつ。 設定は以下の通り。 /etc/default/sensu EMBEDDED_RUBY=true 元はfalseだけど、上記設定をtrueにすればいいだけ。 fal…

巷で話題のsensuをインストール

乗り遅れ気味ですが、実際に使ってみましたよ。 http://sensuapp.org/ 感想としてはいい感じ。何がいい感じというと柔軟性の高さがいい感じ。 APIは充実してるし、pluginも作りやすいし。 公式でmonitoring frameworkと名乗っちゃってるあたり素敵ですね。 …

Zabbix + Hyclops 自動登録されるホストのグループ設定をする

AWSAccountテンプレートのマクロ設定時に{$VM_GROUPS}も設定すること。 でないと「host追加時にグループ設定されていないからhost追加できないよ」、というメッセージがでます。 こんなメッセージ。 /opt/hyclops/logs/hyclops_server.log [2014-09-18 16:35…

vagrantを日本語対応する

Vagrantで作ったCentOSだと日本語対応していないので設定。 LOCALE パッケージのインストール # yum groupinstall "Japanese Support" 設定 # localedef -f UTF-8 -i ja_JP ja_JP.utf8 LANGの修正 LANG="ja_JP.UTF-8" 時刻 /etc/sysconfig/clock ZONE="Asia/…

vagrantで同じBoxファイルで複数のOSを立ち上げる

Vagrantfileに以下のように設定する config.vm.define :default do | default | default.vm.hostname = "default" default.vm.network :private_network, ip: "192.168.33.10", virtualbox__intnet: "intnet" end config.vm.define :client do | client | cl…

fluentdとzabbixを連携(1)

fluentdとzabbixを連携してみるよ。 今回はお試しということで、Apacheのステータスコードを集計してzabbixに送ってみる プラグイン fluentdの以下のプラグインを利用 datacounter zabbix プラグインのインストール # /usr/lib64/fluent/ruby/bin/fluent-gem…

flutentdのインストールから設定

いい加減サーバに入ってログ見て原因さぐって、、というのが手間になってきた。 もうちょっとさくっとログをチェックしたいですね。 さらにいうとログ監視もこれでできちゃうともっと素敵ですね。 目的 以下のログを解析したい Apacheのアクセスログ メール…

virshの使い方

KVMをCLIで操作するコマンドのvirshのメモ。ちょくちょく更新する。かも。 とりあえずこまったら このコマンドを実行! # virsh help 情報の表示 稼働中のVMの一覧を見たい # virsh list 停止中も含めVMの一覧を見たい # virsh list --all 稼働中のネットワ…

GateOneをインストールしてみた

GateOneって? ブラウザ上でコンソールを提供するらしい。よくあるクラウドサービスの管理画面で操作するコンソールみたいなものかな?(とも思ったけど違った…) http://liftoff.github.io/GateOne/ インストール環境 CentOS6.5 動作環境 公式より Python 2.6…

ローカルディスクとNFSとGlusterFSの読み書き速度の比較

簡単なスクリプト作って計測してみた。 全てサーバ・クライアント共にKVM上で実施。 計測対象 クライアントのローカルディスク NFS領域(asyncオプションつき) GlusterFS領域 計測方法 write dd使って1Gのファイルを作成して計測 read 1Gのファイルをcatをtim…

CentOS6にGlusterFSを構築

GlusterFSについて 分散ファイルシステム。詳細は以下がとても参考になりました。 http://itpro.nikkeibp.co.jp/article/COLUMN/20130104/447701/ ボリュームについて distributed ファイル単位でボリューム内のbrickに分散させる GlusterFSのデフォルトの動…

LDAP構築メモ

LDAPを作る機会があったので構築メモ。 環境 CentOS6 LDAP Server install # yum install openldap-servers openldap-clients 設定 DBの設定 # cd /home/ldap # cp -a /usr/share/openldap-servers/DB_CONFIG.example DB_CONFIG slapd.dの初期化 # cd /etc/o…

MySQLにSSL接続してみる

環境 OS CentOS5系と6系で確認 MySQLのバージョン 5.0系、5.1系、5.5系で確認 設定可能なMySQLのバージョン 5系から SSLが有効となっているか確認 mysql> show variables like '%ssl%'; +---------------+----------+ | Variable_name | Value | +----------…

vyattaを使ってみた

vyattaって? ソフトウェアルーターです。DebianベースのLinuxです。 ちょっとルーターを作らなきゃいけなくなり、Centとかでも作ってもよかったんだけどどうせならということで使ってみました。 環境はVMwareでの仮想環境です。 ダウンロード 以下のページ…

redisのインストールと使い方

今更ながらredisについてお勉強。 インストールまではやってたのですが、なかなか使う機会がなく。。 redisって? 「危険なほどのスピード」とか言われてますね。 実際の機能としては永続化できるオンメモリ型のKVSという点がよく注目されていますが、多様な…

zabbixでnginxの接続状態を確認する

nginxにはstub_statusというnginxへの接続状態を提供する機能があります。http://wiki.nginx.org/HttpStubStatusModule#stub_statusApacheでいうserver-statusですね。せっかくなのでこのstub_statusの値をzabbixから取得できるようにしてみました。 nginx側…

nginxのproxy_set_headerの設定場所

若干はまったのでメモ。 何が起きたか 設定をちょこちょこ修正してたらproxy後にheaderがうまく付与されなくなりました。 その時の設定 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded…

nginx+varnish+apache+phpの環境構築(3)

前回と前々回の続き。今回はvarnishの設定。 各設定の補足はコメントにて記載。 *設定 # # backend # backend app { .host = "app.hogehoge.com; .port = "80"; } # # acl purge setting # acl purge { "localhost"; "127.0.0.1"; } sub vcl_recv { set req.…

nginx+varnish+apache+phpの環境構築(2)

前回の続き。というわけで設定を晒してみる。 今回はLBのnginxの設定。 基本設定 nginx.confの設定 worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx…

nginx+varnish+apache+phpの環境構築(1)

最近nginxを調べてたのはこれがやりたかったからです。 長くなりそうだから複数に分けます。 環境 OS CentOS6.4 lb nginx1.4.1 cache varnish3.0.3 web(静的) nginx1.4.1 web(動的) apache2.2.15+php5.3.3 構成 Internet ------------------------------- | …

sphinxの基本的な記法メモ

sphinxって? python製のドキュメンテーションビルダー。 何でも開発者が使うと幸せになれるとかなれないとか。 というわけで 使ってみてるけどなかなかいい感じ。 viで書けたりgitとかでバージョン管理出来るのがよいですね。 ただhtmlをプレビューで見れな…

nginxのアクセスログに特定のファイルの記録を除外する

画像とかjsとかcssとかの記録を除外する方法。 location / { if ($uri ~ \.(gif|jpg|png|ico|js|css)$) { access_log off; } ・ ・ ・ }ログの書き出しって割と重いから、少しでもこれでリソースを節約。

nginxでロードバランス設定メモ

ロードバランスというかupstreamの設定に関するメモ。 参考 http://nginx.org/en/docs/http/ngx_http_upstream_module.html 振り分けの重みづけしたい weightで調整 upstream backend { server example-1:8080 weight=4; server example-2:8080; }上記設定で…

nginxのgeoモジュールが便利すぎる

なにができるの? REMOTE_ADDRを列挙して変数に格納できます。 設定してみる 特定のIPしかアクセスさせたくないコンテンツがあるとします。 今回は例として「/admin」以下へのアクセスはローカルネットワークからのアクセスのみを許可させます。 http { ・ …