Skip to content

Commit

Permalink
major improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
boristane committed Sep 14, 2023
1 parent a69d82a commit c24a62a
Show file tree
Hide file tree
Showing 32 changed files with 220 additions and 26 deletions.
116 changes: 116 additions & 0 deletions analysing-data/home.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
---
label: Service Home
order: 3
---

# Service Home

---

Every service in Baselime has a service home. The service home is where you get both a high-level overview of your service as well as the ability to drill down and investigate issues quickly.

---

## Requests

The requests view displays a summary of your requests and the list of the requests within the selected timeframe in chronological order.

![](../assets/images/illustrations/analyzing-data/home/requests.png)

### Summary

The summary includes three charts:
- **Number of events**: the total number of events your service emitted
- **Errors**: the total number of errors in your telemetry data
- **Request latencies** the 90th percentile latencies of requests and traces

![](../assets/images/illustrations/analyzing-data/home/summary.png)

You can drill down on any of these charts by clicking on the chart. It opens the Baselime query builder where you can slice and dice your data further.

### List of requests

Below the summary charts, there is a search bar, a filter button and the list of requests.

You can search for any string or regular expression using the search bar. Baselime will search through all the events (logs, spans, span events and wide events) from your service and display the requests where at least one event matches the search criteria.

You can filter by any high-dimensionality field in your data using the filter button. Baselime fill filter through all the events (logs, spans, span events and wide events) from your service and display the requests where at least one event matches the applied filters.

If you add simultaneously a search criteria and filters, Baselime will find events that matches all searches and filters and displat the corresponding requests.

![](../assets/images/illustrations/analyzing-data/home/requests-filters.png)

You can expand each request and view the logs and the trace of the request. Also, to facilitace filtering, it's possible to filter directly from the logs or the trace of a request. Use the option menu at the end of each line in the events JSON.

![](../assets/images/illustrations/analyzing-data/home/request-logs.png)

!!!
The menu inside the JSON event is available across Baselime, wherever an event is displayed. This enables you to quickly go from an event to investigating further, without loosing the context of the event.
!!!

---

## Events

The events view displays all the events your service emitted during the selected timeframe. The events comprise all logs, spans, span events, wide-events and metrics sent to Baselime.

You can search for events and filter events from this view. You can zoom in on the bar chart of the event volume.

![](../assets/images/illustrations/analyzing-data/home/events.png)

---

## Traces

The traces view displays the traces found in your service within the selected timeframe. It includes a trace scatter plot, where the y-axis is the duration of the traces and the x-axis is the timestamp. In addition to the scatter plot, the trace view displays a list of traces from your service in chronological order.

You can search and filter traces using the search bar and the filter button.

The scatter plot is color-coded:

- Red: traces with at least one span with an error
- Green: succesful traces
- Blue: Traces where there is a cold-start (for serverless functions)

You can click on any of the dots in the scatter plot to display the trace.

You can also click on any of the traces in the list to display the complete trace.

Once you're viewing a trace, you can click on any of the spans to view the the span the logs of the traces, the span events, and the span details.

![](../assets/images/illustrations/analyzing-data/home/traces.png)
![](../assets/images/illustrations/analyzing-data/home/trace.png)
![](../assets/images/illustrations/analyzing-data/home/trace-timeline.png)
![](../assets/images/illustrations/analyzing-data/home/trace-logs.png)

---

## Errors

The error view displays a list of all errors that have occured in your service, alongside metadata about the error.

You can search for, or filter errors that match a set of criteria.

Once you've identified an error you want to investigate further, click on the "Investigate" button to quickly get the context around the error, for example the requests or traces the error occured in, or more metadata around the error.

!!!
Baselime automatically detects errors from your telemetry data.
!!!

![](../assets/images/illustrations/analyzing-data/home/errors.png)

---

## Inventory

The inventory view displays a set of lists of cloud-resources available in your service. Currently, the available resources are:

- AWS Lambda Functions
- Amazon ECS Services
- Amazon DynamoDB Tables

We're continiously adding more cloud services to the inventory view.

![](../assets/images/illustrations/analyzing-data/home/inventory.png)

From the inventory view, you can navigate to any individual cloud resource.
74 changes: 74 additions & 0 deletions analysing-data/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
label: Troubleshooting
order: 4
---

# Troubleshooting in Baselime

---

Baselime enables you to troubleshoot your systems and find issues faster. You can search, slice and dice your data against any dimension to get answers to your questions.

## Search

Once you've created an environment in Baselime and sent data (logs, metrics, traces or wide events), you can search for any string or regular expression in your data.

- Click on your environment
- Click on one of the discovered services (or the `default` service)
- Enter your search expression

Baselime will surface all the requests where the search expression is found. This search is performed on logs, spans, span events and wide events.

![Search in Baselime](../assets/images/illustrations/analyzing-data/overview/search.png)

Expand each request to view the logs and the trace of the specific request.

---

## Filter

From any screen on Baselime with telemetry data, you can filter the data by any of the fields persent in the data.

Baselime supports high cardinality and high dimensionality. This means you can send data with as many nested fields as you want, and those fields can have as many possible values as you want. For example, in your logs or traces, you can send a `requestId` to Baselime, which can have millions of unique values; and you will be able to filter by any of these values.

![Filter in Baselime](../assets/images/illustrations/analyzing-data/overview/filter.png)

---

## View requests and traces

Once you've searched an/or applied filters to your telemetry data, you can drill down into a single request or trace, view all the logs, spans and span events related to the request.

![Request logs in Baselime](../assets/images/illustrations/analyzing-data/overview/logs.png)
![Trace map in Baselime](../assets/images/illustrations/analyzing-data/overview/trace.png)
![Trace timeline in Baselime](../assets/images/illustrations/analyzing-data/overview/trace-timeline.png)

---

## Compute aggregates

Sometimes you want to troubleshoot an issue that impacts more than one user. For example, you might want to count the number of requests that returned an error status code and group them by route, or you might want to compute the latency of your requests.

This is where the Baselime query builder shines.

Baselime has an internal tab system. Start a new tab by clicking on the `+` at the top of the screen, select `Start new query` and `Start from scratch`.

- Add a visualisation `COUNT`
- Add a filter `$baselime.error` `EXISTS`
- Add a group by `@message` or `@message.message`
- Add a order by
- Click `Run query`

![Baselime query builder](../assets/images/illustrations/analyzing-data/overview/query.png)

You'll see a count of all the events where there was an error, grouped by the error message. You can zoom:

- zoom in on the chart
- view the requests and traces associated with these events
- view the raw data (the list of events) that match the filters
- add more visualisations, filters, and group bys
- add a search expression

!!!
The Baselime query builder is the most powerful way to explore your data in Baselime. It gives your the tools to keep drilling down and surface insights from your telemetry data.
!!!
4 changes: 2 additions & 2 deletions analysing-data/service-discovery.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
label: Automatic Service Discovery
order: 3
label: Service Discovery
order: 2
---

# Automatic Service Discovery
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion quick-start.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Congratulations! Your first event should be available to query in Baselime. You
## Guides

- [Sending Data](./sending-data/): Learn how to ingest telemetry data from your cloud-native applications
- [Analyzing Data](./analysing-data/service-discovery.md): Discover how to use the various interfaces provided by Baselime to analyze and understand your data
- [Analyzing Data](./analysing-data/overview.md): Discover how to use the various interfaces provided by Baselime to analyze and understand your data
- [Integrations](./): Find out how to connect Baselime with your favorite tools


Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This documentation highlights what Baselime is, how to get it working with your

[!ref Quick Start](./quick-start.md)
[!ref](./sending-data/index.md)
[!ref Analyzing Data in Baselime](./analysing-data/service-discovery.md)
[!ref Analyzing Data in Baselime](./analysing-data/overview.md)
[!ref Baselime CLI](./cli/install.md)
[!ref Observability as Code](./oac/cdk/quick-start.md)
[!ref Data Security](./security/overview.md)
Expand Down
7 changes: 3 additions & 4 deletions retype.manifest
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"version": "3.1.0",
"created": "2023-09-11T16:52:45Z",
"version": "3.0.3",
"created": "2023-09-14T11:15:56Z",
"files": [
{
"path": ".nojekyll"
Expand Down Expand Up @@ -99,8 +99,7 @@
"path": "assets/images/illustrations/quickstart/api-key.png"
},
{
"path": "assets/images/illustrations/quickstart/connect.png",
"old": true
"path": "assets/images/illustrations/quickstart/connect.png"
},
{
"path": "assets/images/illustrations/quickstart/lambda.png"
Expand Down
2 changes: 1 addition & 1 deletion sending-data/aws/cloudwatch-metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ There is no need to manually configure or set up anything to start ingesting cus

## Querying Amazon CloudWatch Metrics

Once your AWS account is connected to Baselime, you can use any of the our clients to visualize and query your Amazon CloudWatch Metrics. You'll have access to all the metrics available in your AWS account, and you can use the [Observability Reference Language (ORL)](../oac/observability-reference-language/overview.md) to filter and aggregate the data in near real-time.
Once your AWS account is connected to Baselime, you can use any of the our clients to visualize and query your Amazon CloudWatch Metrics. You'll have access to all the metrics available in your AWS account, and you can filter and aggregate the data in near real-time.

---

Expand Down
2 changes: 1 addition & 1 deletion sending-data/aws/lambda-logs.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ exports.handler = async (event, context) => {
});
```
To facilitate this in Node.js runtimes, we maintain a custom logger well suited for AWS Lambda.
To facilitate this in Node.js runtimes, we maintain a [custom logger well suited for AWS Lambda](https://github.com/baselime/lambda-logger).
```bash
npm i @baselime/lambda-logger
Expand Down
2 changes: 1 addition & 1 deletion sending-data/events-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ The HTTP API validates the provided events and returns a `400 Bad Request` statu
### High-level requirements
- Baselime accepts up to `6MB` of uncompressed data per request
- Each event must be a properly formatted JSON
- Each event must be smaller than `128kb` of uncompressed JSON
- Each event must be smaller than `256kb` of uncompressed JSON

---

Expand Down
8 changes: 0 additions & 8 deletions sending-data/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,6 @@

Baselime supports a variety of data sources, including logs, metrics, traces, and wide events. You can start sending your data to Baselime and gain valuable insights into the performance and reliability of your microservices with a few steps.

Once received, all telemetry data is securely stored in hot storage for querying and in cold storage within your own AWS environment, in an **Amazon S3 bucket in your AWS account**. This ensures that you have complete long-term control over your data and its storage location.

![Sending Telemetry data to Baselime](../assets/images/illustrations/sending-data/s3.png)

!!!
The retention period of your telemetry data on Baselime is independent of the retention periods in AWS. You can safely reduce the retention period of your CloudWatch log groups.
!!!

---

## Data Sources
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
---
order: -3
label: Node.js
---

# OpenTelemetry for Node.js on AWS Lambda

The [Baselime Node.js OpenTelemetry tracer for AWS Lambda](https://github.com/Baselime/lambda-node-opentelemetry) (Star us ⭐) instruments your Node.js AWS Lambda functions with OpenTelemetry and automatically sends the OpenTelemetry compatible trace data to Baselime. This is the most powerful and flexible way to instrument your Node.js AWS Lambda functions.
The [Baselime Node.js OpenTelemetry tracer for AWS Lambda](https://github.com/Baselime/lambda-node-opentelemetry) instruments your Node.js AWS Lambda functions with OpenTelemetry and automatically sends OpenTelemetry traces to Baselime. This is the most powerful and flexible way to instrument your Node.js AWS Lambda functions.


---
Expand Down Expand Up @@ -53,9 +54,10 @@ Globals:
Tags:
"baselime:tracing": "true"
```
+++
That's all you are all set with OpenTelemetry on Node.js AWS Lambda functions.
!!!
OpenTelemetry automatic instrumentation is available only once you have connected your AWS Account to Baselime. Adding the tag to AWS Lambda functions in an AWS Account not connected to Baselime will not have any effect.
!!!
Expand All @@ -67,6 +69,8 @@ To remove the OpenTelemetry instrumentation from your AWS Lambda functions, remo

### How it works

This section outlines how the automatic instrumentation works.

The automatic instrumentation makes changes to your AWS Lambda functions once they are deployed:

- Add the Baselime Node.js OpenTelemetry AWS Lambda Layer to your AWS Lambda function: `arn:aws:lambda:${region}:097948374213:layer:baselime-node:${version}` - This layer is a slimmed down version of the [OpenTelemetry JavaScript Client](https://github.com/open-telemetry/opentelemetry-js) that will have minimal impact on the cold starts of your AWS Lambda functions
Expand Down Expand Up @@ -136,7 +140,7 @@ export async function handler(event) {

## Manual Instrumentation

If you prefer to send the OpenTelemetry traces to Baselime manually, you can use the [Baselime Node.js OpenTelemetry tracer for AWS Lambda](https://github.com/Baselime/lambda-node-opentelemetry) (Star us ⭐) independently from connecting your AWS Account to Baselime.
To manually instrument your Node.js AWS Lambda functions, you can use the [Baselime Node.js OpenTelemetry tracer for AWS Lambda](https://github.com/Baselime/lambda-node-opentelemetry) independently from connecting your AWS Account to Baselime.

### Step 1: Install the SDK

Expand Down
4 changes: 2 additions & 2 deletions sending-data/opentelemetry/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ You can get your Baselime API key in the [Baselime console](https://console.base
baselime iam
```

If you have not instrumented your codebase with OpenTelemetry yet, do not worry. We are building OpenTelemetry SDKs to facilitate instrumenting your code.
If you have not instrumented your codebase with OpenTelemetry yet, we are building OpenTelemetry SDKs to facilitate instrumenting your code.

---

## OpenTelemetry SDKs

[!ref icon="../../assets/images/logos/node.svg"](./node.js.md)
[!ref icon="../../assets/images/logos/node.svg"](./aws-lambda/node.js/index.md)
[!ref icon="../../assets/images/logos/node.svg"](./aws-lambda/node.js.md)

3 changes: 2 additions & 1 deletion sending-data/opentelemetry/node.js.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
---
order: 0
label: Node.js
---

# OpenTelemetry for Node.js

The [Baselime Node.js OpenTelemetry SDK](https://github.com/baselime/node-opentelemetry) (Star us ⭐) enables you to instrument your Node.js services with OpenTelemetry without the boilerplate of using the OpenTelemetry SDK directly.
The [Baselime Node.js OpenTelemetry SDK](https://github.com/baselime/node-opentelemetry) enables you to instrument your Node.js services with OpenTelemetry without the boilerplate of using the OpenTelemetry SDK directly.

This SDK uses [OpenTelemetry for JavaScript](https://opentelemetry.io/docs/instrumentation/js/) and provides a layer that facilitates instrumenting your Node.js applications.

Expand Down
8 changes: 8 additions & 0 deletions sending-data/s3-rehydration.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ order: -8

This page describes how you can rehydrate your telemetry data from Amazon S3 into Baselime.

Once received, all telemetry data from your AWS Accounts is securely stored in hot storage for querying and in cold storage within your own AWS environment, in an **Amazon S3 bucket in your AWS account**. This ensures that you have complete long-term control over your data and its storage location.

![Sending Telemetry data to Baselime](../assets/images/illustrations/sending-data/s3.png)

!!!
The retention period of your telemetry data on Baselime is independent of the retention periods in AWS. You can safely reduce the retention period of your CloudWatch log groups.
!!!

---

## How it works
Expand Down
2 changes: 1 addition & 1 deletion sending-data/validation/index.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Data Validation in Baselime
# Data Validation

Baselime has a size limit for events of `256kb`. This size limit helps ensure that the ingestion process is efficient and that the data stored in Baselime is manageable and fast to query. If an event exceeds this `256kb` size limit, it will not be ingested into Baselime.

Expand Down

0 comments on commit c24a62a

Please sign in to comment.