AWS&PHPからGCP Stackdriver Logging にlogを書き込んでみる
前提
AWSインスタンスすでにある
ここのチュートリアルを基本に進める
AWSアカウントをStackdriver Monitoring に接続する。
ここを参考に
承認認証情報を作成する
ここを参考に
ログ エージェントをインストールする
AWSにて以下のコマンドをタターン!
curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh
sha256sum install-logging-agent.sh
チェックサムコマンド(ファイルの同一性を確認するための数値)の出力結果
07ca6e522885b9696013aaddde48bf2675429e57081c70080a9a1364a411b395 install-logging-agent.sh
インストールスクリプト実行
sudo bash install-logging-agent.sh
ログエージェントとは?
ログエージェントは fluentd をベースとしており、Google Compute Engine や Amazon EC2 の仮想マシン(VM)インスタンス上で実行されます。このエージェントは、一般的なサードパーティのアプリケーションやシステム ソフトウェアから Stackdriver Logging にログをストリーミングします。ログ エージェントをすべての VM インスタンスにインストールすることをおすすめします。
logに書き込んでみる
AWSのコマンドラインで
logger "hello my first log"
PHPで挑戦してみる
Google API を使えるようにする
API Manager-> StackdriverLogging API->認証情報
Google-Cloud-PHPのAPI仕様はここから
<コンポーザをインストル>
curl -sS https://getcomposer.org/installer | php
composer.jsonに以下を書き込む
"require": {
"monolog/monolog": "1.2.*"
}
php composer.phar install
composer require google/cloud
こんなエラーがでてきたら
Installation failed, reverting ./composer.json to its original content.
The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details
↓これで解決
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
pecl install grpc
composer require google/gax && composer require google/proto-client-php
sudo mv ~/composer.phar /usr/local/bin/composer
記述方法
sample.php
<?php
require 'vendor/autoload.php';
use Google\Cloud\Logging\LoggingClient;
$logging = new LoggingClient([
'keyFilePath' => '/etc/google/auth/application_default_credentials.json',//←各々のkeyfilePathを設定
'projectId' => 'XXXXXXX'//←各々のprojectIdを設定
]);
// Get a logger instance.
$logger = $logging->logger('syslog');//←logのインスタンスを生成
// Write a log entry.
$logger->write('my message from php ');//←出力メッセージを記載
//↓ここからはログを取得してコンソールに表示する↓
// List log entries from a specific log.
$entries = $logging->entries([
'filter' => 'logName = projects/hoge/logs/syslog'//←表示したいログのパスを記載
]);
foreach ($entries as $entry) {
echo $entry->info()['textPayload'] . "\n";//←ループでログを出力
}
<?php
require 'vendor/autoload.php';
use Google\Cloud\Logging\LoggingClient;
$logging = new LoggingClient([
'keyFilePath' => '/etc/google/auth/application_default_credentials.json',//←各々のkeyfilePathを設定
'projectId' => 'XXXXXXX'//←各々のprojectIdを設定
]);
// Get a logger instance.
$logger = $logging->logger('syslog');//←logのインスタンスを生成
// Write a log entry.
$logger->write('my message from php ');//←出力メッセージを記載
//↓ここからはログを取得してコンソールに表示する↓
// List log entries from a specific log.
$entries = $logging->entries([
'filter' => 'logName = projects/hoge/logs/syslog'//←表示したいログのパスを記載
]);
foreach ($entries as $entry) {
echo $entry->info()['textPayload'] . "\n";//←ループでログを出力
}
もちろんログビューアからもログは見れます。
<ログビューアからなら高度な検索を指定できる>
例)
resource.type="aws_ec2_instance"
"Jan 25" AND ("pid 29718" OR "pid 29629")
LoggingClientの詳しい仕様は↓
その他
"Project Name" と "Project ID"の違いは?
Project Name は、ユーザが任意でつけれるものです。
一方 Project ID グーグルクラウドクライアントライブラリに認証接続するために必要になります。
Author And Source
この問題について(AWS&PHPからGCP Stackdriver Logging にlogを書き込んでみる), 我々は、より多くの情報をここで見つけました https://qiita.com/makotoiwkb/items/6acc49861556eaede065著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .