빠른 시작: Python 사용

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

시작하기 전에

이 빠른 시작을 완료하려면 결제가 사용 설정된 Google Cloud 프로젝트가 있어야 합니다. Google Cloud 프로젝트가 없거나 Cloud 프로젝트에 결제가 사용 설정되어 있지 않으면 다음을 수행하세요.
  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

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

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

시작하기

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

Cloud Shell

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

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

    1. Cloud Console에서 Cloud Shell 활성화를 클릭합니다.

      Cloud Shell 활성화

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

      Cloud Shell 시작하기

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

       gcloud config set project [PROJECT_ID]
      

Linux

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

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

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

      서비스 계정으로 이동

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

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

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

    5. 완료를 클릭합니다.

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

      • 서비스 계정에서 옵션 더보기를 클릭하고 키 관리를 선택합니다.
      • 창에서 키 추가를 클릭합니다.
      • 키 유형JSON을 선택한 후 만들기를 클릭합니다. 잠시 후 팝업 창에 아래와 비슷한 메시지가 표시됩니다.

        비공개 키 저장됨

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

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

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

소스 클론

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

git clone https://github.com/googleapis/python-logging

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

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

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

cd python-logging/samples/snippets

로그 항목 쓰기

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에서 스토리지 > 브라우저로 이동합니다.

    Storage 브라우저로 이동

  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. 표의 행마다 메뉴 가 있습니다. 싱크의 메뉴를 클릭하고 싱크 세부정보 보기를 선택합니다.

    3. 그러면 싱크 세부정보에 싱크의 작성자 ID가 나열됩니다. ID를 클립보드에 복사합니다.

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

    Storage 브라우저로 이동

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

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

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

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

싱크 검증

싱크 및 대상이 올바르게 구성되었는지 확인하려면 다음을 수행합니다.

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

    python snippets.py my-log write
    
  2. Cloud Storage 버킷의 콘텐츠를 봅니다.

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

      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] 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 프로젝트를 삭제하거나 빠른 시작 리소스를 삭제합니다.

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

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

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

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

다음 단계