14Room

みんな泣きながらオトナになったんだ。

Ubuntu 14.04LTSから16.04.6 LTSにアップデートしてみた

下記コマンドでアップデート sudo apt-get update sudo apt-get upgrade アップグレード可能かチェック do-release-upgrade -c アップグレード可能なら下記コマンドで実行 sudo do-release-upgrade ついでに元々インストールされていたmysql 5.6を5.7にアッ…

td-agentでtemporarily failed to flush the buffer error="could not find a temporary directory" と言われたら

td-agentでログをS3にアップロードって、よくやりますよね。 でも、アップロードされないのです(TT)。 で、td-agentのログを調べたら、 temporarily failed to flush the buffer. next_retry=2016-11-11 07:26:34 +0000 error_class="ArgumentError" error="…

apt-get updateでAn error occurred during the signature verificationが出たときの対処法

久しぶりに apt-get update しようとしたところ、 W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://packages.treasuredata.com trusty InRelease: T…

ansibleのset_factで宣言した変数は、同じset_fact内では参照できない

下記のようなplaybookを作って実行したところ、 - hosts: - localhost connection: local become: False gather_facts: False tasks: - set_fact: aaa="naked" bbb="{{ aaa }}" undefined variableとか言われちゃって、エラーになっちゃいます。 # ansible-p…

githubに登録したpublic keyが分からなくなったら

仮の話ですが、例えばgithubに登録していたSSHのprivate keyが外部に流出しちゃった場合は早急にその鍵を使えなくする必要があると思うのですが、たくさん登録してたりすると、どれが流出したprivate keyと対になるpublic keyなのか分からない事があります。…

docker execでパイプ「|」を含んだコマンドを実行させたい。

題名のままなのですが、docker execでパイプ「|」を含んだコマンドを実行させたい状況が発生しました。 例えばdockerで動くpostgresに対して、下記のようなコマンドでデータをリストアしようとした場合です。 docker exec postgres_container gunzip -c back…

td-agentでログをS3に送る、ついでに暗号化もする。

概要 ある程度の規模になると、日々サーバ上に溜まるログを何処かに集約したくなります。 オートスケールなどを利用するとサーバ停止時にログも一緒に失われるので、サーバ上のストレージ以外の場所に待避した方が良さそうです。 今なら安価で安全なS3に置く…

ausearchをcronで定期実行させる

auditのlogから欲しい情報を検索するために使えるausearchはとても便利です。 -kでkey fieldに設定した文字列を含む情報だけ抜き出すとか、–start, –endで指定した時間の情報だけ見るとかもできます。 しかし、crontab中でausearchを呼び出すと期待した結果…

LambdaでRDSを定期的にスケールアップ・ダウンさせてみた

概要 普段はmicroインスタンスで十分だけど、重いSQLを実行するときだけsmallにしたいという要件を満たすために、 Lambdaを使ってサーバレスでRDSを定期的にスケールアップさせてみました。 ここではスケールアップする方法のみ記述してますが、業務時間終了…

StatusCakeからslackにアラートを飛ばしてみる

概要 URL監視を手軽にする際にStatusCakeは便利です。設定は簡単だし、監視対象URL数もフリープランで20個以上軽く行けますし。 今回はStatusCakeからslackにアラートを飛ばしてみようとした際にしょうもないところでハマったのでソレについて述べます。 sla…

Google Developers Launchpadで$100,000 GETした時の思い出

gcp

概要 Google Developers Launchpadに選出され$100,000 GETした時の流れを簡単にまとめました。 自分たちがGoogle Developers Launchpadに挑戦した時(2015/4)と状況が変わっているので、今はちょっと違うかもしれませんが誰かの参考になればイイなと。 流れ 2…

Shinjuku.rb #33 でspot instanceについてLTさせてもらった時の資料

aws

概要 Shinjuku.rb #33 ではLTのお題目に縛りが無かったのでインフラっぽいことを喋らせてもらいました。 資料 Aws spot instanceを攻めてみた 発表用 from taro uematsu

ubuntuでセキュリティアップデートを自動で行う。

概要 unattended-upgradesを導入してdpkgで管理されてるアプリのセキュリティアップデートを自動で行います。 インストール apt-get install unattended-upgrades 設定 /etc/apt/apt.conf.d/50unattended-upgradesの下記のコメントアウトを外す Unattended-U…

unable to resolve hostのエラーを抑制する。

概要 sudoコマンドを実行した際などホスト名が解決できないと sudo: unable to resolve host と出力されますが、ウザいので抑制したいです。 対処法 下記のスクリプトで起動時にhostnameを/etc/hostsに追記する。 -------------- #! /bin/sh ### BEGIN INIT …

mysqldumpslowの結果をslackに投げてみた

概要 以前、mysqlのslow query数をslackに投稿させていましたが、数だけでなく質も見ないとダメだなということで、今回はmysqldumpslowによる統計結果を投稿させるようにしました。 mysqldumpslow MySQLに付属しているツールで、スロークエリログを集計して…

MySQL+MHA+HAproxy+consul環境構築ログ

MySQL MHAで使う万能ユーザを用意します。 grant all privileges on *.* to mha@'10.%' identified by 'mhapassword'; mysqlチェック用ユーザを作成 grant select on *.* to haproxy@'10.%';] MHA 準備 mha manager ssh-keygen -t rsa -f /root/.ssh/id_rsa …

upstartでdaemon化してみよう

概要 OSSの中にはinitスクリプトの無いモノが少なく無いですが、upstartで手軽にdaemon化してしまいましょう。ちなみにdaemon化したプロセスが不意に落ちた場合も自動で立ち上げ直してくれる機能もあります。ここではMHAを例にdaemon化してみました。 instal…

HTTP load balancingで海を跨いだ負荷分散をしてみた

gcp

概要 GCPのHTTP load balancingには一つのIPアドレスで複数のリージョンに負荷分散できる機能があります。 Google Cloud Platform Blog: Unveiling scalable HTTP load balancing across cloud regions これを上手く使えば、ニューヨークにいる人にはアメリ…

DKIM導入

概要 送信したメールがSPAM扱いされるので、証明書による送信元証明を付加しました。 インストール インストール sudo apt-get install opendkim opendkim-tools ディレクトリ用意 mkdir -p /etc/opendkim/keys/naked.com 鍵生成 cd /etc/opendkim/keys/nake…

ゾンビDBの作り方 at GCP

概要 毎朝、前の日に本番DBから取ったバックアップを元に復活するDBをGCPでも作りました。 やってることは、 mysql止める 古いvolumeをアンマウント 古いvolumeをdetach スナップショットから新しいボリュームを作成 新しいvolumeをattach 新しいvolumeをマ…

ゾンビDBの作り方 at AWS

aws

概要 開発メンバーからの要望で毎日、本番DBから取ったバックアップを元にデータをリフレッシュするDBを作りました。 何度データを壊しても次の朝には復活してるので社内ではコレをゾンビDBと呼んでいます。 やってることは、 1.定期的に取ってるsnapshotか…

capistranoでデバッグのため、ダミータスクを動かしてみる

概要 デプロイの処理を1個づつ試しながら確認したい場合が多々有ります。 そんな時はCapfileにダミータスクを追加して、そのタスクを直接動かして動作を確認してみましょう。 Capfile 例)GCPのインスタンスリストをコマンドから取得する処理を確かめてみる。…

Google cloud shell使ってみました

gcp

Google cloud shellって? 日本語だと下記のページで概要を掴めるかと思います。 Google Cloud Platform Japan 公式ブログ: Google Cloud Shell の無料期間が 2016 年末まで延長 使ってみました 特に設定の必要も無くGCPのコマンドが使えますし、普通にlinux…

local-ssdを積んだインスタンスのサイズ変更はできない

gce

概要 local-ssdを積んだインスタンスのサイズ変更はできないので、気をつけましょう。 (local-ssdについては下記を見てもらうと雰囲気はつかめるかと思います。) Google for Work Japan 公式ブログ: [GCP] Local SSD がどなたでも利用できるようになりまし…

GCPでサブネットが使えるようになった。

gcp

概要 AWSでは「VPC内でサブネットを切ってAPPのネットワークとDBのネットワークを分ける」みたいなことができますが、GCPでは出来ませんでした。が、いつの間にかGCPでもサブネットを切ることが出来るようになったようです。 GCPのnetworks 以前のGCPではnet…

GCEのインスタンスサイズを変更する

gce

概要 EC2だとインスタンス停止後、change instance sizeで一発ですが、gceでは下記の手順を踏んでインスタンスサイズの変更を実施します。 流れは下記の通りです。ここではmanageというインスタンスのサイズを変更してみます。 サイズを変更したいインスタン…

slackにslow query数を出してみた

概要 注意しなきゃいけ無いんだけど、気が付いたらslow queryがいっぱい出ていた・・・・。なんて事を回避するために、とりあえず毎日slackにslow query数を出すようにしてみました。 Webhook URL slackにslow query数を投げるためのWebhook URLを取得します…

DBバックアップスクリプト(GCP版)

概要 もしもの時のためにmaster-dbのデータバックアップを行っています。 バックアップスクリプト #!/bin/sh date=`date '+%Y%m%d%H'` DESCRIPTION="db-backup-$date" gcloud compute -q --project "naked.co.jp:api-project-123456789" disks snapshot "mas…

rbenvでrubyのバージョン管理をする。

sudo update-alternatives --config editor sudo visudo -f /etc/sudoers.d/00_base 下記を追記 Defaults !secure_path Defaults env_keep += "PATH RBENV_ROOT" 環境変数設定 export RBENV_ROOT=/usr/local/rbenv export PATH=${RBENV_ROOT}/bin:${PATH} rb…

SSL証明書の期限を調べてみよう

概要 ブラウザで確認する方法もありますが、ここではコマンドで確認する方法を述べます。 コマンド実行 -connect で調査したいFQDNを指定します。 openssl s_client -connect nativeapi.naked.com:443 < /dev/null 2> /dev/null | openssl x509 -text | grep…