AWSのCloudWatchのメトリクスをCLIからカジュアルに確認したいと思ってツールを作り始めている

asciicast

やりたいこと

  • 何か問題が発生した時に、手元のターミナルでAWSリソースの状況をカジュアルに確認したい
    • 初動を早くしたい
    • プロジェクトが多すぎて「ディスプレイで常に見える化」みたいなのは無理

現状

  • インスタンスIDとかRDSのIDを指定したらCloudWatchのメトリクス情報を *stat ライクに表示する
  • YAMLファイルでCloudWatchで取得するメトリクス情報を実質的にいくらでも拡張可能(YAMLファイルでオプションを拡張する実装)

ちなみにデフォルトのYAMLファイルは以下のような感じ。

---
resources:
  ec2:
    namespace: AWS/EC2
    dimensions_name: InstanceId
    metrics:
      cpu:
        metric_name: CPUUtilization
        statistic: Average
      netin:
        metric_name: NetworkIn
        statistic: Average
      netout:
        metric_name: NetworkOut
        statistic: Average
  rds:
    namespace: AWS/RDS
    dimensions_name: DBInstanceIdentifier
    metrics:
      cpu:
        metric_name: CPUUtilization
        statistic: Average
      read:
        metric_name: ReadIOPS
        statistic: Average
      write:
        metric_name: WriteIOPS
        statistic: Average
  elb:
    namespace: AWS/ELB
    dimensions_name: LoadBalancerName
    metrics:
      req:
        metric_name: RequestCount
        statistic: Sum
      400:
        metric_name: HTTPCode_Backend_4XX
        statistic: Sum
      500:
        metric_name: HTTPCode_Backend_5XX
        statistic: Sum

TODO / 検討事項

  • *stat ライクに定期間隔で追記出力(最短で1分間隔だけど。。。)
  • どれくらい行を出すかの設定(時間?最大行?)
  • CloudWatchアラームの状態で数値の色を変える?それともYAMLで設定?
  • テーブル表示がちょっと冗長なのでなんとかしたい。現在は tj/terminal-table · GitHub を利用
  • awstat という名前で作っているけれどもAWStatsとレーベンシュタイン距離が1