17
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHP(monolog)でCloudWatchにログを貯める

Last updated at Posted at 2018-05-04

いろいろなログをAWS CloudWatchで集中管理したいな・・・ということでPHPのログを流し込む例。
monologであればLaravelでもそのまま使えますので。

基本的には、ここのBasic Usageの通りやればいいのですが、一部情報が不足しているので追加メモ。さらに詳しいログ設定は、AWS公式のここを見ればいいのですが、英語訳が変なのと、いきなり見るには少々複雑。

PHP書くのもめんどくさい場合は、コマンドでも書き込めます。ここを参考にして下さい。

前提

IAMユーザーの準備

とりあえずCloudWatchFullAccess権限を持つユーザーを準備し、KeyとSecretを取得しておきます。

リージョン情報の準備

だいたい東京なので、ap-northeast-1でしょうか。必要に応じてメモします。

ライブラリのインストール

composerで必要なライブラリをインストールしておきます。

cd
mkdir phplog
cd phplog
composer require aws/aws-sdk-php monolog/monolog maxbanton/cwh:^1.0

実装

実装は下記の通り。基本的にmaxbanton/cwhのページのものと同じですが、require "vender/autoload.php"など追加しています。

この通り動かすと[php-logtest]というグループと[ec2-instance-1]というストリームが自動生成され、ログが貯まります。

index.php
<?php

    require "vendor/autoload.php";

    use Aws\CloudWatchLogs\CloudWatchLogsClient;
    use Maxbanton\Cwh\Handler\CloudWatch;
    use Monolog\Logger;

    $sdkParams = [
        'region' => 'ap-northeast-1',
        'version' => 'latest',
        'credentials' => [
            'key' => 'xxxxxxxxxxxxxxxx',
            'secret' => 'xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxx',
        ]
    ];

    // Instantiate AWS SDK CloudWatch Logs Client
    $client = new CloudWatchLogsClient($sdkParams);

    // Log group name, will be created if none
    $groupName = 'php-logtest';

    // Log stream name, will be created if none
    $streamName = 'ec2-instance-1';

    // Days to keep logs, 14 by default. Set to `null` to allow indefinite retention.
    $retentionDays = 30;

    // Instantiate handler (tags are optional)
    $handler = new CloudWatch($client, $groupName, $streamName, $retentionDays, 10000, ['my-awesome-tag' => 'tag-value']);

    // Create a log channel
    $log = new Logger('name');

    // Set handler
    $log->pushHandler($handler);

    // Add records to the log
    $log->debug('Foo');
    $log->warning('Bar');
    $log->error('Baz');

備忘

  • 当然ですが、AWS以外(オンプレなど)からでも貯められます。
  • 上記で動作を確認した上で、公式情報を参考により詳細な設定をするといいでしょう。
17
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?