AWS Cloudwatch LogsのDatadog Logs転送方法

3-6. AWSログ転送設定

概要

ログをDatadogへ転送設定する場合の手順を記載する。 AWSサービスのログをDatadogへ転送する場合、Cloud Watch LogsのロググループをLambdaを介して転送する仕組みとなっている。 AWS管理画面でログを転送する手順を明記する。

前提条件

本手順ではClowd Watch へログの転送が行われロググループが作成されていることを前提とする

手順

1 . Lambda サービスの画面を表示

AWSの管理画面へログインしサービスからLambdaを選択する

2 . Lambda関数の画面へ推移する

左ペインの関数をクリックしdatadog-forwarder-Forwarder-xxxxxxxを選択する

3 . トリガーの選択

Lambdaのデザイナー画面より「トリガーの追加」を選択する

4 . トリガーの作成

トリガーの選択からCioud Watch logsを選択し転送したい対象のロググループを選択する

フィルターの名前について ログの用途が名前からわかるようにしたい為以下命名でフィルターの名前を付けること

<システム名><サーバ名><AWSサービス名>_<ログファイル名> 例:RDSのerror.logの場合 フィルター名:life_RDS_error.log

5 . 作成したトリガーの確認

Lambdaのデザイナー画面からCloudWatchLogsのアイコンをクリックし画面追加したトリガーが作成されていることを確認する

![image][pasted-2020.10.28-20.03.04.png]

6 . 転送したログの確認

Datadog管理画面から設定したロググループのログが転送されていることを確認する

Datadog APIキーおよびアプリケーションキーの追加

4-3. APIキーおよびアプリケーションキーの追加

概要

  • APIキー:API キーはOrganizationごとに固有で、Datadog Agent でメトリクスとイベントを Datadog に送信する際に必要となる。具体的には、AWSアカウントとIntegration連携する際や、コンテナでAgentに読み込ませる際に必要。コンテナの場合は、AWS Secret Managerにキーを登録して、アプリケーション側から取得するようにする。5つまで作成可能。

  • アプリケーションキーAPIキーと組み合わせて使用する。具体的にはTerraformで監視項目(モニター)を作成する際などに指定する。個数制限無し。

手順

以下の画面から作成 https://app.datadoghq.com/account/settings#api

datadog-forwarder Lambdaへのタグの追加方法

4-3. datadog-forwarderにタグを追加

概要

  • AWSからDatadogへ転送する際にdatadog-forwarderという関数名のLambdaを使用している。現在env:<環境名>で追加しているが、追加でタグ付けが必要な場合は本手順を参考にしてください。

手順

1 . スタックの選択

cloud formationからdatadog-forwarderのスタックを選択し更新するを選択する

![image][pasted-2021.01.04-10.56.13.png]

2 . テンプレートの選択 現在のテンプレートの使用にチェックが入っていることを確認し次へを選択する

3.タグを追加 DdTagsの項目に追加したいタグを入力し次へを選択する。

env:prod,stack:classic

4.スタックオプションの設定 他に設定する項目がなければ次へを選択する

5.更新内容の確認 設定した内容の確認画面が表示される為問題なければ機能にチェックをいれスタックの更新を選択する

   

S3からログをDatadog Logsに戻す方法

4-6. DatadogログのRehydrate手順

概要

  • Datadogはデフォルトで管理画面上のログ保持期間が一か月としている。一か月を超過したものはAWS S3へ転送される設計となっており、S3に転送したログをDatadogに戻す機能をRehydrateという。

手順

1 . Datadogの管理コンソールにログインを行いlogsからRehydrate from archivesを選択

2 . Add a new historical view を選択し以下項目を入力後Rehydrate from archivesを選択

① 戻したいログの日付 ② 対象のログのタグを入力する host:XXXX等タグやログの中身で検索することもできる ③prodのままにしておく(デフォルトのままでOK) ④この設定の名前(デフォルトのままでOK) ⑤Rehydrateするログの制限 ⑥この設定の保持期間(デフォルトのままでOK) ⑦通知先

3.Rehydrateの処理時間を確認

図のように残り時間の目安が表示されるので図の二枚目のように緑いろになることを確認する

4.ログの確認

View in Explorerを選択

画面にRehydrateされたログが表示される

Datadog Logsへログの転送を停止する方法

4-5. ログの転送を停止する設定

概要

  • 本番適用後にstage環境のログはDatadogへ転送を行わないように設定する必要がある為ログの転送を停止する方法を明記する

手順

AWSサービスのログを停止する方法

1 .AWSコンソールにログインを行いサービスから Datadogログ転送用のlambdaを選択する

2 . Lambda関数の選択

lambda関数からDatadog logfowarder-xxxxを選択する

3.トリガーの一覧を表示

図の赤枠をクリックしトリガーの一覧を表示する

4.トリガーの削除

ログ転送を無効化したいトリガーを選択し削除をクリックする

5.削除 削除確認のポップアップが表示される為はいをクリックし削除する

EC2のログを停止する方法(agent経由のログの場合)

1.sshでログを転送しているサーバにログインする

2.rootユーザにスイッチする

su -

3.Datadogのconfigファイルのバックアップを取得する

cp -p /etc/datadog-agent/datadog.yaml /etc/datadog-agent/datadog.yaml_yyyymmdd

4.configファイルを編集する

vi /etc/datadog-agent/datadog.yaml

  5.configファイルを編集する

vi /etc/datadog-agent/datadog.yaml

logs_enabled: trueをlogs_enabled: falseに変更する

6.agentの再起動を行う restart datadog-agent

7.agentステータスを確認する datadog-agent status

Logs Agentの下に転送したサービスのログが表示されていないことを確認する

※表示される場合

Logs Agent


    Sending compressed logs in HTTPS to agent-http-intake.logs.datadoghq.com on port 443
    BytesSent: 8.204645e+07
    EncodedBytesSent: 6.2205776e+07
    LogsProcessed: 208343
    LogsSent: 208340

  apache

    Type: file
    Path: /var/log/httpd/baitoru-*_access_log.*
    Status: OK
      567 files tailed out of 567 files matching
    Inputs: /var/log/httpd/baitoru-8080_access_log.20200920_13

EC2のログを停止する方法(OSログの場合)

1.sshでログを転送しているサーバにログインする

2.rootユーザにスイッチする

su -

3.configファイルのバックアップを取得する

cp -p /etc/rsyslog.d/datadog* /tmp/

4.configファイルを削除する

rm -i /etc/rsyslog.d/datadog*

5.サービスを再起動する

service  rsyslog restart

6.サービスが動作している事を確認する

service  rsyslog status

Datadog EC2上のOSログをDatadogに転送する方法

3-7. ログ転送設定

概要

ログをDatadogへ転送設定する場合の手順を記載する。 /var/log/messagesログなどの権限の高いログはAgent経由で転送することができない。 本ページではrsyslogを使用したログの転送方法を記載する。

注意事項

転送テスト時に下記バージョンでDatadogへ転送したところmessagesのログが溢れだしディスクフルとなる事象が発生。 messagesへ吐き出すログレベルをWARNING以上にする事により同事象は発生しなくなった、 必ずstage環境で動作確認をおこなった後に本番へ適用してください。

設定環境

rsyslog バージョン5.8.10 OS centos 6.10

rsyslogのバージョンによって手順が変わる為以下サイトを確認すること https://docs.datadoghq.com/ja/integrations/rsyslog/?tab=datadogussite

手順

1 .転送元のサーバへログインする

2 .rootユーザへスイッチする

3 .rsyslog.confに設定を追記

/etc/rsyslog.confに以下内容を追記する

・20行目付近に以下内容を追記

#Datadog
$ModLoad imfile
$InputFilePollInterval 10
$PrivDropToGroup adm
$WorkDirectory /var/spool/rsyslog

以下をコメントアウトする

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

コメントアウトした次の行に以下を追記(authprivとcronを除いたすべてのfacilityでwarning以上のメッセージを/var/log/messagesに出力する設定)

*.warning;mail.none;authpriv.none;cron.none                /var/log/messages

4 . /etc/rsyslog.dにconfファイルの作成

/etc/rsyslog.d配下に以下命名でファイルを作成する(Datadogにmail,secure,messagsを送る場合は3ファイル作成する必要がある)

・ファイル名 datadog_<log名>.conf

5. confファイルに設定を追加する

## Input for FILE1
$InputFileName /var/log/maillog ←転送したいログのパスを明記する
$InputFileTag mail ←★マークの命名で設定をお願いいたします。
$InputFileStateFile stat-messages
$InputFileSeverity info
$InputRunFileMonitor

## Set the Datadog Format to send the logs
$template DatadogFormat,"<apiキー> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% - - - %msg%\n"

## Define the destination for the logs
*.* @@intake.logs.datadoghq.com:10514;DatadogFormat

★InputFileTag については以下命名で記載をお願います。 今後追加該当しないログについては都度都度下記に記載をお願いいたします。

massagesのログ:message mailのログ:mail secureのログ:secure

・confファイルに権限を与える

# chmod 644 /etc/rsyslog.d/datadog*
# chown root:root /etc/rsyslog.d/datadog*

6. WorkDirectory の作成

# mkdir /var/spool/rsyslog
# chmod 755 /var/spool/rsyslog
# chown root:root /var/spool/rsyslog
# ls -ld /var/spool/rsyslog

7 . サービスの再起動を行う

# service  rsyslog stop
# service  rsyslog start
# service  rsyslog status

8 .ログの確認

Datadog管理画面から設定したログが転送されていることを確認する

FargateのタスクのENIを確認する方法

Fargateタスクから外部に接続しに行く際にどのIPアドレスを使用するのかを確認したい時、タスクのENI情報を見れば良い。 方法は以下のブログに掲載されているので割愛するが、マネコン上の対象のタスクからENI ID(リンク)を確認し、リンクを押下すると対象のENIが表示される。Private IPを確認したい場合そこに記載のIPになる。インターネットに出れる場合はPublic IPも付与されている。

qiita.com