s3にhive形式で送信したい時の設定

aggregator nodeとかでs3でhive形式にしたい(athenaで使いたい時)時の最後のメモ

   <store>
      @type s3
      @id s3_nginx_json
      s3_bucket 私のバケット
      s3_region ap-northeast-1
      path nginx/${tag_parts[n]}/dt=%Y-%m-%d-%H/
      s3_object_key_format %{path}%{time_slice}_%{index}.%{file_extension}
      buffer_path /var/log/td-agent/buffer/s3/nginx/${tag_parts[n]}/
      buffer_chunk_limit 128m
      output_tag false
      output_time false
      flush_interval 10m
      time_slice_format %M
    </store>

fluentdのパラメーターとプラグインメモ

パラメータ

@id

kakakakakku.hatenablog.com

qiita.com

plugin_idに名前をつけられる。mackerelとかにメトリック送りたい時にオブジェクトidだと不便なので名前つけとくといい。

プラグイン

forestプラグイン

Fluentd v0.14 では fluent-plugin-forest が不要な話 - Usual Software Engineer

s3に送る時とかにプレースホルダで動的にパスを変えたかったりする場合に使うもの。 0.14からはcoreに入って不要なプラグインとして記述する必要は無い様子

EC2のインスタンスプロファイルとIAMロールの実務上の違い

毎度おなじみのクラスメソットさんがわかりやすい dev.classmethod.jp

インスタンスプロファイルってなに?

インスタンスプロファイルは IAM ロールのコンテナであり、
インスタンスの起動時に EC2 インスタンスにロール情報を渡すために使用できます。

参考URL http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html

書いてある通り、IAMRoleを納めるための容器であり、EC2にアタッチする時に必要なコネクターの役割をします。

引用元に書いてある通りなんですが、 インスタンスプロファイルとiamロールが

  • 1対Nになってる
  • EC2に紐づけられるのはIAMロールそのものじゃなくてインスタンスプロファイル

サンプルで記載されているCloudformationのEC2立ち上げの設定を読んでみると

IamInstanceProfile: !Ref myInstanceProfile

iamロールを付与してるわけじゃなくてインスタンスプロファイルを指定してる

実務上意識することってどういうことなのかと勝手に解釈

該当記事を読んだ感じだとaws cliやcloudformationでインスタンスを立ち上げる時に理解していないとハマるってことかと思う。 コンソールから立ち上げるとIAMロールをそのままアタッチしてるように見えるけどそうではない。

繰り返しになるが EC2にアタッチするのはIAMロールではなくて「IAMロールを付与したインスタンスプロファイルである」ってことかと。

ansible-playbookコマンドでsshがタイムアウトするからとりあえずtimeout時間を伸ばしたい

--timeout=300

オプションつけるだでとりあえずタイムアウト時間は伸ばせる

ansible-playbook  -i development-hosts site.yml --timeout=300

こんな感じ

datadogのmotinrorメッセージでslackの @here @channelでメンションしたい

ただの件名の通りなんですが、 いまいち情報にたどり着けなかったので

@channel

<!channel>
@here

<!here>

である