AWS X-Ray에서 Lambda → Athena 액세스를 시각화해 보았습니다.

이전에 이런 것을 만들었습니다만, 이것을 AWS X-Ray로 가시화해 보면, 무엇을 알 수 있는지, 실험해 보았습니다.

Amazon Athena를 AWS Lambda에서 조작 할 수 있도록 시도했습니다.

AWS X-Ray 데몬 실행



AWS X-Ray SDK는 AWS X-Ray에 Trace 데이터를 직접 전송하지 않으므로 전송을 위한 EC2 인스턴스를 생성합니다. 사용자 데이터로 다음을 등록하여 인스턴스를 생성하기 만하면되므로 간단합니다.
#!/bin/bash
curl https://s3.dualstack.us-east-1.amazonaws.com/aws-xray-assets.us-east-1/xray-daemon/aws-xray-daemon-2.x.rpm -o /home/ec2-user/xray.rpm
yum install -y /home/ec2-user/xray.rpm

시스템 로그에 xray 설치 로그가 출력되어 있었기 때문에 OK입니다.
Examining /home/ec2-user/xray.rpm: xray-2.0.0-1.x86_64
Marking /home/ec2-user/xray.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package xray.x86_64 0:2.0.0-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package         Arch              Version               Repository        Size
================================================================================
Installing:
 xray            x86_64            2.0.0-1               /xray            6.6 M

Transaction Summary
================================================================================
Install  1 Package

Total size: 6.6 M
Installed size: 6.6 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : xray-2.0.0-1.x86_64                                          1/1 
xray start/running, process 2576
  Verifying  : xray-2.0.0-1.x86_64                                          1/1 

Installed:
  xray.x86_64 0:2.0.0-1                                                         

Complete!

Lambda 앱 측 준비



이번에 Java 애플리케이션을 실행하는 것입니다만, Lambda 애플리케이션을 X-Ray로 감시하고 싶은 경우는, Lambda 애플리케이션의 「설정」탭에서 아래의 체크 박스를 ON으로 하는 것만으로 좋은 것 같습니다.



참고 : htp // // cs. 아 ws. 아마존. 이 m / 그럼 _ jp / x 등 y / ㅁ st /에서 v 굉장히 / x 등 y-세 r ゔ ぃ 세 s. HTML

또한 X-Ray를 조작할 수 있는 권한을 IAM에서 설정해야 합니다. 이번은 시험적인 운용이었기 때문에 「AWSXrayFullAccess」를 붙여 버렸습니다만, 실제의 운용에 맞추어 이 근처는 신중하게 선택하고 싶네요.

앱을 시작하고 시각화해보기



여기까지 할 수 있으면 보통 Lambda 앱을 움직여보고 X-Ray에서 어떻게 보이는지 확인할 수 있습니다. 이번 Lambda 애플리케이션에는 다음 JSON을 입력으로 제공하도록 했습니다. 이전의 기사에서 샘플로서 Athena의 테이블로부터 데이터를 취득하도록(듯이) 했을 때의 입력치입니다.
{
  "region": "us-east-1",
  "s3Path": "s3://ishida-athena-staging-dir/",
  "sql": "SELECT elbname, requestip,  requestport, backendip, backendport, requestprocessingtime, backendprocessingtime, timestamp FROM sampledb.elb_logs order by timestamp desc limit 10",
  "columnListStr": "elbname, requestip,  requestport, backendip, backendport, requestprocessingtime, backendprocessingtime,  timestamp"
}

실행 후 1분 정도 기다리면 아래와 같은 표시가 X-Ray에서 확인할 수 있었습니다. 무사히 시각화가 생긴 것 같습니다.



X-Ray의 내용을 확인해 본다



표시된 Service Map의 오른쪽에 있는 개체를 클릭하면 아래와 같은 표시가 되었습니다.


각각의 처리에 어느 정도 시간이 걸려 응답으로서 무엇을 돌려주고 있는지를 일람으로 알 수 있습니다.
표시된 ID를 클릭하면 해당 추적의 세부정보를 볼 수 있습니다.



이것을 보는 한, Lambda 앱의 초기화에 230ms 정도, 실제의 Athena 접속 부분에 약 3초 정도 걸리고 있다, 라고 하는 바람에 보면 좋을까요. 이 처리 전체로서는 4.6초 걸리고 있기 때문에, 실제로 Athena에 액세스하기 위해 이외에 1.5초 정도는 시간이 걸리고 있다, 라고 이해하면 좋을까요. 이 근처는 더 공부가 필요하다(^^;

덧붙여서 에러가 나오고 있는 경우는, 그 예외의 내용도 확인할 수 있는 것 같습니다.

요약



각각의 처리가 어느 정도 시간에 걸려 있고, 한층 더 호출 관계까지 이만큼 간단하게 셋업하면서 가시화를 할 수 있는 것은 강력하네요. 앞으로 Microservices등에서 분산해 처리를 시키는 것이 당연하게 되는 것을 생각하면, 필수의 기술이라고 말할 수 있다고 생각합니다. Spring에서 말하면 Zipkin과 Sleuth를 AWS상에서 실현하고 있는 것 같은 느낌이군요.

좋은 웹페이지 즐겨찾기