毎回マネジメントコンソールから確認するのも面倒なので、とりあえずターミナルから見れるように。
AWS CLIのインストール
Macにコマンドラインツールが入ってなかったのでインストール。
EC2(Amazon Linux)には元々インストールされてるはず。
下記ページのやり方に従った
Getting Set Up with the AWS Command Line Interface
環境
- Mac OSX 10.9.4
手順
Pythonを使うとのこと。触ったことないが、Macにプリインストールされてた
$ python --version
Python 2.7.5
pipというパッケージ管理ツール(Rubyでいうところのbundler的なやつ?)を使う。
pipはインストールされてなかったので導入、sudo付きでやらないとPermission deniedされた。
$ sudo easy_install pip
pipが入ったら、目的のawscliを。
$ sudo pip install awscli
$ aws --version
aws-cli/1.3.23 Python/2.7.5 Darwin/13.3.0
これでaws
コマンドが利用可能になった。
awsコマンドの初期設定
コマンドを実際に利用して各種サービスにアクセスするには、ちょっとだけ初期設定が必要だった。
$ aws configure
上記コマンドを打つと、AWSアカウントに関する情報を対話的に入力していく感じになる。
アクセスキーID, シークレットアクセスキー, デフォルトのリージョン, デフォルトの出力形式を聞かれるので答えていく。出力形式はとりあえずJSONにしておいた。
入力した情報は、~/.aws/config
に書かれている。
[default]
output = json
region = ap-northeast-1
aws_access_key_id = <AWS_ACCESS_KEY_ID>
aws_secret_access_key = <AWS_SECRET_ACCESS_KEY>
RDSのスロークエリをコマンドラインに表示してみる
ドキュメント眺めてると、RDS用のコマンドだけでもかなりある。使いこなしたらかなり便利そうではある...
ログファイルのリストを出力
まずはdescribe-db-log-files
コマンドでログファイルのリストを出力してみる。
参考: describe-db-log-files
$ aws rds describe-db-log-files --db-instance-identifier <DB_INSTANCE_IDENTIFIER>
出力は以下の様にされる。
{
"DescribeDBLogFiles": [
{
"LastWritten": 1406166300000,
"LogFileName": "error/mysql-error.log",
"Size": 0
},
{
"LastWritten": 1406166506000,
"LogFileName": "slowquery/mysql-slowquery.log",
"Size": 6863
},
{
"LastWritten": 1406160020000,
"LogFileName": "slowquery/mysql-slowquery.log.0",
"Size": 2433
},
...
]
}
スロークエリログの出力
具体的なログの中身を見たいときは
$ aws rds download-db-log-file-portion --db-instance-identifier <DB_INSTANCE_IDENTIFIER> --log-file-name slowquery/mysql-slowquery.log
出力がカオス、なぜか1文字ずつ...
{
"LogFileData": [
"/",
"r",
"d",
"s",
"d",
"b",
"b",
"i",
"n",
"/",
"m",
"y",
"s",
"q",
"l",
[
}
少し調べたら、jqを使って加工するのがよさ気だった。jq
コマンドはhomebrewでインストール済み。
1文字ずつ出力されてるのを統合するため関数add
、改行コードの箇所で改行させるために--raw-output
(-r
)オプションを付けて実行
$ aws rds download-db-log-file-portion --db-instance-identifier <DB_INSTANCE_IDENTIFIER> --log-file-name slowquery/mysql-slowquery.log | jq -r ".LogFileData | add"
だいぶ見やすくなった。以下出力の一部。
/rdsdbbin/mysql/bin/mysqld, うんたらかんたら
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
# Time: 140724 0:25:16
# User@Host: うんたらかんたら
# Query_time: 1.451042 うんたらかんたら
SET timestamp=1406161516;
SELECT うんたらかんたら
これでマネジメントコンソールにわざわざ行くよりはだいぶ楽になったし、見やすい。grepなどでさらに整形して、発行されたクエリの部分だけ抜き出すこともできる。
クソクエリを消し去るために頑張ろう...