빠른 시작: Python 사용

이 빠른 시작에서는 Python 프로그램을 실행해 로그 항목을 쓰고, 읽고, 삭제하고, 내보냅니다.

시작하기 전에

이 빠른 시작을 완료하려면 결제가 사용 설정된 Google Cloud 프로젝트가 있어야 합니다. Google Cloud 프로젝트가 없거나 프로젝트에 결제가 사용 설정되어 있지 않은 경우 다음 단계를 따르세요.
  1. Google 계정으로 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Cloud Console의 프로젝트 선택기 페이지에서 Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

이 빠른 시작에서는 Cloud Logging 및 Cloud Storage를 사용합니다. 이러한 리소스를 사용하면 비용이 발생할 수 있습니다. 빠른 시작을 마친 후에 계속 비용이 청구되지 않도록 하려면 만든 리소스를 삭제하면 됩니다. 자세한 내용은 삭제를 참조하세요.

시작하기

Cloud Shell 환경이나 일반 Linux 환경을 사용해 이 빠른 시작을 완료할 수 있습니다.

Cloud Shell

  1. Python 버전 2.7 및 3.5는 Cloud Shell에 사전 설치되어 있으므로 다른 소프트웨어를 설치하거나 구성할 필요가 없습니다.

  2. Cloud Shell을 열고 프로젝트 구성을 확인합니다.

    1. Cloud Console의 오른쪽 상단에서 Cloud Shell 활성화 버튼을 클릭합니다.

      Cloud Shell 활성화

      Cloud Shell이 창에서 열리고 환영 메시지가 표시됩니다.

      Cloud Shell 시작하기

    2. 환영 메시지가 구성된 프로젝트 ID를 표시합니다. 사용하려는 프로젝트가 아닌 경우 [PROJECT_ID]를 프로젝트 ID로 바꾼 후에 다음 명령어를 실행합니다.

       gcloud config set project [PROJECT_ID]
      

Linux

  1. Python을 설치하고 구성합니다. Python 버전 2나 3 모두 가능합니다. 자세한 내용은 Python 개발 환경 설정을 참조하세요.

  2. 프로젝트에 대한 Cloud Identity and Access Management 권한을 설정합니다. 그 후 프로젝트의 서비스 계정을 만든 다음, 파일을 만들고 Linux 워크스테이션에 다운로드합니다.

    1. Cloud Console에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.

      서비스 계정으로 이동

    2. 빠른 시작 프로젝트를 선택한 다음 서비스 계정 만들기를 클릭합니다.

      • 계정 이름을 입력합니다.
      • 계정 설명을 입력합니다.
      • 만들기를 클릭합니다.
    3. 서비스 계정 권한(선택사항) 창의 역할에서 드롭다운 목록 중 로깅 관리자를 선택합니다. 계속을 클릭합니다.

    4. 사용자에게 서비스 계정 액세스 권한을 부여하려면 이 옵션을 건너뜁니다.

    5. 키 파일을 만들고 워크스테이션에 다운로드합니다.

      • 키 만들기(선택사항) 창에서 키 만들기를 클릭합니다.
      • 키 유형으로 JSON을 선택하고 만들기를 클릭합니다. 잠시 후 팝업 창에 아래와 비슷한 메시지가 표시됩니다.

        비공개 키 저장됨

    6. 완료를 클릭해 서비스 계정 만들기를 완료합니다.

  3. Linux 워크스테이션에서 키 파일의 경로에 환경 변수 GOOGLE_APPLICATION_CREDENTIALS를 설정하여 애플리케이션에 사용자 인증 정보를 제공합니다. 예를 들면 다음과 같습니다.

     export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
    

    이 환경 변수는 현재 셸 세션에만 적용되므로, 새 세션을 열면 변수를 다시 설정해야 합니다.

소스 클론

GitHub 프로젝트 python-docs-samples를 클론합니다.

git clone https://github.com/GoogleCloudPlatform/python-docs-samples

python-docs-samples/logging/cloud-client 디렉터리에는 빠른 시작에서 사용하는 2개의 프로그램이 포함되어 있습니다.

  • snippets.py를 이용하면 로그의 항목을 관리할 수 있습니다.
  • export.py를 이용하면 로그 내보내기를 관리할 수 있습니다.

프로그램 디렉터리로 변경하려면 다음 명령어를 실행하세요.

cd python-docs-samples/logging/cloud-client

로그 항목 쓰기

snippets.py 프로그램은 Python 클라이언트 라이브러리를 사용해 Logging에 로그 항목을 씁니다. 명령줄에 write 옵션이 지정되어 있으면 프로그램이 다음 로그 항목을 씁니다.

  • 구조화되지 않은 데이터를 포함하며 심각도 수준이 지정되지 않은 항목
  • 비구조화된 데이터를 포함하며 심각도 수준이 ERROR인 항목
  • JSON 구조화된 데이터를 포함하며 심각도 수준이 지정되지 않은 항목

my-log 로그에 새 로그 항목을 쓰려면 snippets.py 프로그램을 write 옵션과 함께 실행하세요.

python snippets.py my-log write

로그 항목 보기

Cloud Shell에서 로그 항목을 보려면 snippets.py 프로그램을 list 옵션과 함께 실행하세요.

python snippets.py my-log list

잠시 후 명령어가 완료되고 다음과 비슷한 결과가 표시됩니다.

    Listing entries for logger my-log:
    * 2018-11-15T16:05:35.548471+00:00: Hello, world!
    * 2018-11-15T16:05:35.647190+00:00: Goodbye, world!
    * 2018-11-15T16:05:35.726315+00:00: {u'favorite_color': u'Blue', u'quest': u'Find the Holy Grail', u'name': u'King Arthur'}

결과에 항목이 표시되지 않으면 명령어를 다시 시도합니다. Logging에서 로그 항목을 수신하고 처리하는 데 몇 분 정도 소요됩니다.

로그 뷰어를 사용해 로그 항목을 볼 수도 있습니다. 자세한 내용은 로그 뷰어에서 로그 보기를 참조하세요.

로그 항목 삭제

my-list 로그에서 모든 로그 항목을 삭제하려면 snippets.py 프로그램을 delete 옵션과 함께 실행하세요.

python snippets.py my-log delete

잠시 후 명령어가 완료되고 다음과 같은 결과가 표시됩니다.

Deleted all logging entries for my-log

로그 내보내기

Logging에서는 로그 항목을 Cloud Storage 버킷, BigQuery 데이터세트,Pub/Sub로 내보낼 수 있습니다. 내보내기에 대한 자세한 내용은 로그 내보내기 개요를 참조하세요.

이 섹션에서는 다음과 같은 작업을 수행하게 됩니다.

  • 데이터의 대상으로 사용할 Cloud Storage 버킷을 만듭니다.
  • 대상에 새 로그 항목을 복사하는 싱크를 만듭니다.
  • Cloud Storage 버킷의 권한을 업데이트합니다.
  • Logging에 로그 항목을 작성합니다.
  • 원하는 경우 Cloud Storage 버킷의 콘텐츠를 확인합니다.

대상 만들기

이 빠른 시작에서 사용하는 내보내기 대상은 Cloud Storage 버킷입니다. Cloud Storage 버킷을 만드는 방법은 다음과 같습니다.

  1. Cloud Console에서 스토리지 > 브라우저로 이동합니다.

    브라우저로 이동

  2. 버킷 생성을 클릭합니다.

  3. 버킷의 이름을 선택합니다.

  4. 리전을 선택하고 위치에서 가장 가까운 지리적 옵션을 선택합니다.

  5. 액세스 제어 모델에서 객체 수준 및 버킷 수준 권한 설정을 선택합니다.

  6. 다른 설정은 모두 기본값 그대로 둡니다. 만들기를 클릭합니다.

이 빠른 시작에서는 Cloud Storage 버킷 이름인 myloggingproject-1을 사용합니다.

싱크 만들기

싱크란 Logging에서 새로 도착한 로그 항목을 대상으로 내보낼지 여부를 결정하는 규칙입니다. 싱크에는 3가지 속성이 있습니다.

  • 이름
  • 대상
  • 쿼리

새로 도착한 로그 항목이 쿼리 조건을 충족하면 해당 로그 항목을 대상으로 내보냅니다.

export.py 프로그램은 Python 클라이언트 라이브러리를 이용해 싱크를 만들고, 나열하고, 수정하고, 삭제합니다. 심각도가 INFO 이상인 모든 로그 항목을 Cloud Storage 버킷 myloggingproject-1로 내보내는 mysink 싱크를 만들려면 다음 명령어를 실행하세요.

python export.py create mysink myloggingproject-1 "severity>=INFO"

싱크를 보려면 export.py 프로그램을 list 옵션과 함께 실행하세요.

python export.py list

다음과 유사한 결과가 표시됩니다.

    mysink: severity>=INFO -> storage.googleapis.com/myloggingproject-1

대상 권한 업데이트

export.py 프로그램을 사용하여 싱크를 만들어도 대상(이 경우, Cloud Storage 버킷)의 권한이 수정되지 않습니다. 싱크에 쓰기 권한을 부여하도록 Cloud Storage 버킷의 권한 설정을 변경해야 합니다.

Cloud Storage 버킷의 권한을 업데이트하는 방법은 다음과 같습니다.

  1. 싱크의 작성자 ID를 확인합니다.

    1. 로그 뷰어 페이지로 이동합니다.

      로그 뷰어 페이지로 이동

    2. 로그 라우터를 선택하여 싱크의 작성자 ID를 포함한 싱크 요약을 확인합니다.

  2. Cloud Console에서 Storage > 브라우저를 클릭합니다.

    브라우저로 이동

  3. 버킷 이름을 클릭해 세부정보 뷰를 엽니다.

  4. 권한을 선택하고 구성원 추가를 클릭합니다.

  5. 역할Storage Object Creator로 설정하고 싱크의 작성자 ID를 입력합니다.

자세한 내용은 대상 권한을 참조하세요.

싱크 검증

싱크와 대상이 제대로 구성되었는지 검증하는 방법은 다음과 같습니다.

  1. my-log 로그에 새 로그 항목을 씁니다.

    python snippets.py my-log write
    
  2. Cloud Storage 버킷 콘텐츠를 확인합니다.

    1. Cloud Console에서 Storage > 브라우저를 클릭합니다.

      브라우저로 이동

    2. 버킷 이름을 클릭해 세부정보 뷰를 엽니다. 세부정보 뷰에는 데이터가 포함된 폴더 목록이 표시됩니다. 버킷에 데이터가 없는 경우에는 다음 메시지가 표시됩니다.

      There are no live objects in this bucket.

      내보낸 로그 사용 가능 여부 확인에서 설명한 대로 첫 번째 항목이 대상에 나타나거나 구성 오류 알림을 받을 때까지 2~3시간이 걸릴 수 있습니다.

    3. 버킷에 데이터가 수신되면 세부정보 뷰에 다음과 유사한 결과가 표시됩니다.

      버킷 콘텐츠

    4. 각 폴더의 데이터는 폴더 형태로 정리되며, 각 폴더는 로그 이름을 포함하는 최상위 폴더와 연도, 월, 일의 순서로 라벨이 지정되어 있습니다. 싱크에서 내보낸 데이터를 보려면 my-logs라는 폴더 이름을 클릭한 후 json으로 끝나는 파일이 나올 때까지 연도, 월, 일 하위 폴더를 계속해서 클릭합니다.

      버킷 콘텐츠

    5. JSON 파일에는 Cloud Storage 버킷으로 내보낸 로그 항목이 들어 있습니다. 콘텐츠를 확인할 JSON 파일 이름을 클릭합니다. 다음과 유사한 콘텐츠가 표시됩니다.

       {"insertId":"yf1cshfoivz48",
       "logName":"projects/loggingproject-222616/logs/my-log",
       "receiveTimestamp":"2018-11-15T23:06:14.738729911Z",
       "resource":{"labels":{"project_id":"loggingproject-222616"},"type":"global"},
       "severity":"ERROR",
       "textPayload":"Goodbye, world!",
       "timestamp":"2018-11-15T23:06:14.738729911Z"}
      

      ERRORINFO보다 심각도 수준이 높으므로 'Goodbye, world!'라는 문자열을 포함한 로그 항목을 싱크 대상으로 내보냅니다. 작성된 다른 로그 항목은 INFO보다 낮은 심각도 수준이 기본값으로 설정되어 있기 때문에 대상으로 내보내지 않습니다.

문제해결

Cloud Storage 버킷이 비어 있는 이유는 다음과 같습니다.

  • 버킷에 데이터가 나타날 때까지 충분히 기다리지 않았습니다. 첫 번째 항목이 대상에 나타나거나 구성 오류 알림을 받을 때까지 2~3시간이 걸릴 수 있습니다. 자세한 내용은 내보낸 로그 사용 가능 여부 확인을 참조하세요.

  • 구성 오류가 발생했습니다. 이 경우 다음 제목과 유사한 이메일 메시지를 받게 됩니다.

     [ACTION REQUIRED] Stackdriver Logging export config error in myloggingproject.

    이메일 본문의 콘텐츠에 구성 문제가 설명되어 있습니다. 예를 들어 대상 권한을 업데이트하지 않은 경우 다음과 같은 오류 코드가 표시됩니다.

     bucket_permission_denied

    이러한 특정 조건을 수정하려면 권한 업데이트를 참조하세요.

  • 싱크를 만든 후 로그 항목을 쓰지 않았습니다. 싱크는 새로 도착한 로그 항목에만 적용됩니다. 이 상황을 해결하려면 다음 명령어로 새 로그 항목을 작성하세요.

     python snippets.py my-log write
    

삭제

이 빠른 시작에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. (선택사항) 만들었던 로그 항목을 삭제합니다. 로그 항목을 삭제하지 않으면 로그 항목이 만료된 후에 삭제됩니다. 할당량 정책을 참조하세요. my-log 로그에서 모든 로그 항목을 삭제하려면 다음 명령어를 실행하세요.

     python snippets.py my-log delete
    
  2. 프로젝트를 삭제하거나 빠른 시작 리소스를 삭제합니다.

    • 프로젝트를 삭제하려면 Cloud Console 프로젝트 정보 창에서 프로젝트 설정으로 이동을 클릭한 후 종료를 클릭합니다.

    • 빠른 시작 리소스를 삭제하는 방법은 다음과 같습니다.

      1. 다음 명령어를 실행해 싱크를 삭제합니다.

        python export.py delete mysink
        
      2. Cloud Storage 버킷을 삭제합니다. Cloud Console로 이동하여 스토리지 > 브라우저를 클릭합니다. 버킷 이름 옆의 체크박스를 선택한 후 삭제를 클릭합니다.

다음 단계

  • 서비스 계정, 액세스 범위, Cloud ID and Access Management 역할에 대한 자세한 내용은 서비스 계정을 참조하세요.
  • 로그 뷰어에 대한 자세한 내용은 로그 뷰어를 참조하세요.
  • 로그 항목을 Cloud Storage, BigQuery, Pub/Sub로 내보내는 방법은 로그 내보내기를 참조하세요.
  • Logging 에이전트가 Logging의 가상 머신 인스턴스에서 로그 항목을 수집하는 방법을 알아보세요.
  • 감사 및 규정 준수 요구사항은 감사 로그를 참조하세요.
  • 애플리케이션의 로그를 읽고, 쓰고, 구성하는 방법은 Cloud Logging API를 참조하세요.