AWS&PHP에서 GCP Stackdriver Logging에 로그를 작성해 봅니다.

전제



AWS 인스턴스 이미
여기 튜토리얼을 기본으로 진행

AWS 계정을 Stackdriver Monitoring에 연결합니다.



여기 참고

승인 자격 증명 만들기



여기 참고

로그 에이전트 설치



AWS에서 다음 명령을 타턴!

curl -sSO htps // dl. 오, ぇ. 이 m/cぉ 우다겐 ts/인 s 탓 lぉ 긴 g-아겐 t. 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 htps : // 게이 t이 m 포세 r. 오 rg / in s t r | php

composer.json에 다음을 씁니다.

sample.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 htps : // 게이 t이 m 포세 r. 오 rg / 드 c / 아 rc c ぇ s / t 브 ぇ 쇼오 친 g. md#p로c-오펜-후-rk-후-d-에로 rs 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";//←ループでログを出力
}

물론 로그 뷰어에서도 로그를 볼 수 있습니다.

<로그 뷰어에서 고급 검색을 지정할 수 있음>
예)
resource.type="aws_ec2_instance"
"Jan 25"AND ("pid 29718"OR "pid 29629")

LoggingClient의 자세한 사양은↓



기타



"Project Name"과 "Project ID"의 차이점은 무엇입니까?
Project Name은 사용자가 임의로 붙일 수 있습니다.
한편 Project ID 구글 클라우드 클라이언트 라이브러리에 인증 연결하는 데 필요합니다.

좋은 웹페이지 즐겨찾기