[AWS] 로컬 Windows 시스템에서 X-Ray 사용

7136 단어 x-rayAWSPython

개시하다


AWS의 X-Ray의 첫 페이지를 보면...
AWS와의 협력
AWS X-레이는 아마존 EC2, 아마존 EC2 컨테이너 서비스(Amazon ECS), AWS 람바다, AWS 엘라스틱 빈스토크와 협업한다.Java、Node.그리고X-Ray는 NET에 설명된 위의 서비스를 위해 설계된 응용 프로그램으로 사용할 수 있습니다.
'그 환경에서만 사용할 수 있나요?'그렇게 생각하지만 로컬 컴퓨터에서도 사용할 수 있다.부팅 서버에서도 사용할 수 있습니다.해당 OS로 인터넷에 접속하면
따라서 로컬 Windows 시스템을 사용해 보십시오.

환경 구조


여기.의 X-Ray 구성도에서 X-Ray는 SDK에서X-Ray daemon로, 데몬은 AWS로 데이터를 보내는 구조를 묘사했다.
로컬 PC에서 데몬이 이동하면 OK입니다.

데몬 다운로드


여기.デーモンのダウンロード부터.
이번에 선택했다Windows (実行可能ファイル).

Credential 구성


데몬이 데이터를 보낼 AWS 계정을 설정해야 합니다.
이전 페이지X-Ray にデータを送信するアクセス権限をデーモンに付与する에 적힌 바와 같이credentials 파일에 IAM 사용자의 접근 키를 설정합니다.
credentials 파일은 보통 <ホームディレクトリ>/.aws/credentials입니다.
[default]
aws_access_key_id = アクセスキー
aws_secret_access_key = シークレットキー
자동[default] 프로필을 사용하는 것 같고, AWS 계정·IAM 사용자 여러 명을 사용하는 사람은 설정 전환이 좀 번거로울 수 있다.

데몬 실행


다운로드한 zip의 압축을 풀다.cfg.yaml 동작 설정은 가능하지만 여기에는 변경 사항이 없습니다.DOS에서 데몬을 실행하는exe입니다.
> cd <xray_windows.exeのあるディレクトリ>
> .\xray_windows.exe -o -n ap-northeast-1
2019-06-19T14:20:19+09:00 [Info] Initializing AWS X-Ray daemon 3.0.1
2019-06-19T14:20:19+09:00 [Info] Using buffer memory limit of 80 MB
2019-06-19T14:20:19+09:00 [Info] 1280 segment buffers allocated
2019-06-19T14:20:19+09:00 [Info] Using region: ap-northeast-1
2019-06-19T14:20:19+09:00 [Info] Starting proxy http server on 127.0.0.1:2000
명령줄 옵션 정보-o는 로컬 모델입니다.로컬 PC에서 수행해야 합니다.-n에 영역을 지정합니다.여기서 데이터를 보낼 X-Ray 영역을 지정합니다.
이 도스 창문은 계속 열려 있다.

테스트 프로그램


Python3.여섯 개의 프로그램으로 시험해 보다.

필수 라이브러리


설치aws-xray-sdk.
> pip install aws-xray-sdk
"Lambda에서 X-Ray를 사용해 봤다"는 기사입니다.와 마찬가지로 필요한 프로그램 라이브러리만 설치하지 않는 방법도 OK.

출처


"Lambda에서 X-Ray를 사용해 봤다"는 기사입니다.와 동일한 처리 내용.
SNS에 대해서만 퍼블리쉬를 진행하는 프로그램이다.
test_xray.py
import json
import boto3
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch
patch(['boto3'])


def lambda_handler(event, context):

    client = boto3.client("sns", region_name="ap-northeast-1")
    print(client)

    request = {
        'TopicArn': "<SNS Topic の ARN>",
        'Message': "test",
        'Subject': "test"
    }
    response = client.publish(**request)
    status_code = response['ResponseMetadata']['HTTPStatusCode']

    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }


if __name__ == '__main__':
    xray_recorder.begin_segment("local-test_x-ray")
    lambda_handler(None, None)
    xray_recorder.end_segment()
Lambda function에서 시도한 소스와 달리
  xray_recorder.begin_segment("local-test_x-ray")  xray_recorder.end_segment()의 장소.
이 때문에
  from aws_xray_sdk.core import xray_recorder반드시begin_segment가 없으면 실행 중 오류가 발생합니다.end_segment가 없으면 오류가 발생하지 않지만 데이터가 전송되지 않습니다.

실행 & 결과


데몬을 이동하는 DOS와 달리 DOS 창을 열고 테스트 프로그램을 실행합니다.
> python test_xray.py
정상적인 작업을 수행하면 데몬의 DOS에 다음 로그가 표시됩니다.
2019-06-19T14:48:13+09:00 [Info] Successfully sent batch of 1 segments (0.097 seconds)
데몬에서 지정한 AWS 계정, 영역의 X-Ray 화면에는 이런 측정 데이터put이 있습니다.

좋은 웹페이지 즐겨찾기