AWS X-Ray
- AWS X-Ray helps developers analyze and debug production, distributed applications for e.g. built using a microservices lambda architecture
- provides an end-to-end view of requests as they travel through the application, and shows a map of the application’s underlying components.
- helps to understand how the application and its underlying services are performing to identify and troubleshoot the root cause of performance issues and errors.
- can help analyze applications in development and in production, from simple three-tier applications to complex microservices applications consisting of thousands of services.
- can be used with distributed applications of any size to trace and debug both synchronous requests and asynchronous events.
- can be used to track requests flowing through applications or services across multiple regions. Data is stored locally in the processed region and customers can build a solution over it to combine the data.
- makes the Trace data available for retrieval and filtering within 30 seconds of it being received by the service.
- stores trace data for the last 30 days.
- encrypts traces and related data at rest and supports encryption in transit.
- Integration
- X-Ray integrates with applications running on EC2, ECS, Lambda, and Elastic Beanstalk.
- X-Ray SDK automatically captures metadata for API calls made to AWS services using the AWS SDK
- X-Ray SDK provides add-ons for MySQL and PostgreSQL drivers.
- For Elastic Beanstalk, include the language-specific libraries in the application code.
- Applications running on other AWS services, such as EC2 or ECS, install the X-Ray agent and instrument the application code
X-Ray Core Concepts
- Segment
- A Segment encapsulates all the data points for a single component of the distributed application for e.g. authorization component.
- A segment provides the resource’s name, details about the request, and details about the work done.
- Segments include system-defined and user-defined data in the form of annotations and are composed of one or more sub-segments that represent remote calls made from the service. for e.g. database call and its result within the overall request/response
- Subsegments
- A segment can break down the data about the work done into subsegments.
- Subsegments provide more granular timing information and details about downstream calls that the application made to fulfill the original request.
- A subsegment can contain additional details about a call to an AWS service, an external HTTP API, or an SQL database.
- Arbitrary subsegments can be defined to instrument specific functions or lines of code in the application.
- Trace
- Trace collects all the segments generated by a single request.
- Trace is a set of data points that share the same trace ID.
- Trace helps track the request, which is assigned a unique trace id, while it navigates through services
- Piece of information relayed by each service in the application to X-Ray is a segment, and a trace is a collection of segments.
- Filter Expressions
- Filter expressions can be used to find traces related to specific paths or users.
- Annotations and Metadata
- Annotations are simple key-value pairs that are indexed for use with filter expressions.
- Metadata are key-value pairs with values of any type, including objects and lists, but that is not indexed.
- An Annotation is system-defined or user-defined data
- System-defined annotations include data added to the segment by AWS services
- User-defined annotations are metadata added to a segment by a developer
- Annotations and metadata are aggregated at the trace level and can be added to any segment or subsegment.
- Annotation and metadata are associated with a segment and a segment can contain multiple annotations.
- Errors, Faults, and Exceptions
- X-Ray errors are system annotations associated with a segment for a call that results in an error response.
- Error includes the error message, stack trace, and any additional information for e.g, version to associate the error with a source file.
- Error – Client errors (400 series errors)
- Fault – Server faults (500 series errors)
- Throttle – Throttling errors (429 Too Many Requests)
- Sampling
- X-Ray collects data for a significant number of requests, instead of each request sent to an application, for performant and cost-effectiveness
- X-Ray should not be used as an audit or compliance tool because it does not guarantee data completeness.
- By default, the X-Ray SDK records the first request each second, and five percent of any additional requests.
X-Ray Daemon
- X-Ray daemon is a software application that listens for traffic on UDP port 2000, gathers raw segment data, and relays it to the AWS X-Ray API.
- Daemon works in conjunction with the AWS X-Ray SDKs and must be running so that data sent by the SDKs can reach the X-Ray service.
X-Ray API
- X-Ray API provides access to all X-Ray functionality through the AWS SDK, AWS Command Line Interface, or directly over HTTPS.
X-Ray with VPC Endpoints
- X-Ray can be configured to use an Interface VPC endpoint, that enables you to privately access X-Ray APIs through private IP addresses.
- AWS PrivateLink restricts all network traffic between the VPC and ECR to the Amazon network. You don’t need an internet gateway, a NAT device, or a virtual private gateway.
AWS Certification Exam Practice Questions
- Questions are collected from Internet and the answers are marked as per my knowledge and understanding (which might differ with yours).
- AWS services are updated everyday and both the answers and questions might be outdated soon, so research accordingly.
- AWS exam questions are not updated to keep up the pace with AWS updates, so even if the underlying feature has changed the question might not be updated
- Open to further feedback, discussion and correction.
- A company is facing performance issues with their microservices architecture deployed on AWS. Which service can help them debug and analyze the issue? [CCP]
- AWS Inspector
- CodeDeploy
- X-Ray
- AWS Config