Skip to content

Commit 2294b02

Browse files
authored
Merge branch 'main' into blog/kubecon-eu-2025
2 parents 12e67d1 + ae41734 commit 2294b02

File tree

33 files changed

+348
-212
lines changed

33 files changed

+348
-212
lines changed

.textlintrc.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ filters:
1919
# src attribute in figure Hugo template:
2020
- /src=".*?"/
2121
# Other:
22-
- /<https?://.*?>/ # Raw URLs
22+
- /<https?:\/\/.*?>/ # Raw URLs
2323
rules:
2424
terminology:
2525
defaultTerms: false

content/en/blog/2023/otterize-otel/index.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ with each other. You can then use that information for operational or security
4747
needs, such as determining the blast radius of a downtime or security incident.
4848
You can use the service graph to figure out where to start rolling out
4949
OpenTelemetry tracing, as that deployment tends to be more involved and requires
50-
the integration of the OpenTelemetry SDK into your source code.
50+
the integration of the OpenTelemetry SDK into your source code.
5151

5252
While it was easy to use the OTel SDK for the network mapper, we can see why
5353
there's a bit of a chicken-and-egg problem here when you're looking into

content/en/docs/collector/building/receiver.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -1137,14 +1137,14 @@ of now:
11371137
├── go.work.sum
11381138
├── ocb
11391139
├── otelcol-dev
1140-
   ├── components.go
1141-
   ├── components_test.go
1142-
   ├── go.mod
1143-
   ├── go.sum
1144-
   ├── main.go
1145-
   ├── main_others.go
1146-
   ├── main_windows.go
1147-
   └── otelcol-dev
1140+
├── components.go
1141+
├── components_test.go
1142+
├── go.mod
1143+
├── go.sum
1144+
├── main.go
1145+
├── main_others.go
1146+
├── main_windows.go
1147+
└── otelcol-dev
11481148
└── tailtracer
11491149
├── config.go
11501150
├── factory.go

content/en/docs/contributing/localization.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,11 @@ least two potential contributors**, ideally three. Include the following task
246246
list in your issue as well:
247247

248248
```markdown
249-
- [ ] Contributors for the new language: @GITHUB_HANDLE1, @GITHUB_HANDLE2, ...
250-
- [ ] Localize site homepage to YOUR_LANGUAGE_NAME
251-
- [ ] Create an issue label for `lang:LANG_ID`
252-
- [ ] Create org-level group for `LANG_ID` approvers
253-
- [ ] Update components owners for `content/LANG_ID`
249+
- [ ] Contributors for the new language: @GITHUB_HANDLE1, @GITHUB_HANDLE2, ...
250+
- [ ] Localize site homepage to YOUR_LANGUAGE_NAME
251+
- [ ] Create an issue label for `lang:LANG_ID`
252+
- [ ] Create org-level group for `LANG_ID` approvers
253+
- [ ] Update components owners for `content/LANG_ID`
254254
- [ ] Set up spell checking, if a cSpell dictionary is available
255255
```
256256

content/en/docs/demo/architecture.md

+46-46
Original file line numberDiff line numberDiff line change
@@ -12,70 +12,70 @@ generator which uses [Locust](https://locust.io/) to fake user traffic.
1212
```mermaid
1313
graph TD
1414
subgraph Service Diagram
15-
accountingservice(Accounting Service):::dotnet
16-
adservice(Ad Service):::java
15+
accounting(Accounting):::dotnet
16+
ad(Ad):::java
1717
cache[(Cache<br/>&#40Valkey&#41)]
18-
cartservice(Cart Service):::dotnet
19-
checkoutservice(Checkout Service):::golang
20-
currencyservice(Currency Service):::cpp
21-
emailservice(Email Service):::ruby
18+
cart(Cart):::dotnet
19+
checkout(Checkout):::golang
20+
currency(Currency):::cpp
21+
email(Email):::ruby
2222
flagd(Flagd):::golang
23-
flagdui(Flagd-ui):::typescript
24-
frauddetectionservice(Fraud Detection Service):::kotlin
23+
flagd-ui(Flagd-ui):::typescript
24+
fraud-detection(Fraud Detection):::kotlin
2525
frontend(Frontend):::typescript
26-
frontendproxy(Frontend Proxy <br/>&#40Envoy&#41):::cpp
27-
imageprovider(Image Provider <br/>&#40nginx&#41):::cpp
28-
loadgenerator([Load Generator]):::python
29-
paymentservice(Payment Service):::javascript
30-
productcatalogservice(Product Catalog Service):::golang
31-
quoteservice(Quote Service):::php
32-
recommendationservice(Recommendation Service):::python
33-
shippingservice(Shipping Service):::rust
26+
frontend-proxy(Frontend Proxy <br/>&#40Envoy&#41):::cpp
27+
image-provider(Image Provider <br/>&#40nginx&#41):::cpp
28+
load-generator([Load Generator]):::python
29+
payment(Payment):::javascript
30+
product-catalog(Product Catalog):::golang
31+
quote(Quote):::php
32+
recommendation(Recommendation):::python
33+
shipping(Shipping):::rust
3434
queue[(queue<br/>&#40Kafka&#41)]:::java
3535
react-native-app(React Native App):::typescript
3636
37-
adservice ---->|gRPC| flagd
37+
ad ---->|gRPC| flagd
3838
39-
checkoutservice -->|gRPC| cartservice
40-
checkoutservice --->|TCP| queue
41-
cartservice --> cache
42-
cartservice -->|gRPC| flagd
39+
checkout -->|gRPC| cart
40+
checkout --->|TCP| queue
41+
cart --> cache
42+
cart -->|gRPC| flagd
4343
44-
checkoutservice -->|gRPC| shippingservice
45-
checkoutservice -->|gRPC| paymentservice
46-
checkoutservice --->|HTTP| emailservice
47-
checkoutservice -->|gRPC| currencyservice
48-
checkoutservice -->|gRPC| productcatalogservice
44+
checkout -->|gRPC| shipping
45+
checkout -->|gRPC| payment
46+
checkout --->|HTTP| email
47+
checkout -->|gRPC| currency
48+
checkout -->|gRPC| product-catalog
4949
50-
frauddetectionservice -->|gRPC| flagd
50+
fraud-detection -->|gRPC| flagd
5151
52-
frontend -->|gRPC| adservice
53-
frontend -->|gRPC| cartservice
54-
frontend -->|gRPC| checkoutservice
55-
frontend ---->|gRPC| currencyservice
56-
frontend ---->|gRPC| recommendationservice
57-
frontend -->|gRPC| productcatalogservice
52+
frontend -->|gRPC| ad
53+
frontend -->|gRPC| cart
54+
frontend -->|gRPC| checkout
55+
frontend ---->|gRPC| currency
56+
frontend ---->|gRPC| recommendation
57+
frontend -->|gRPC| product-catalog
5858
59-
frontendproxy -->|gRPC| flagd
60-
frontendproxy -->|HTTP| frontend
61-
frontendproxy -->|HTTP| flagdui
62-
frontendproxy -->|HTTP| imageprovider
59+
frontend-proxy -->|gRPC| flagd
60+
frontend-proxy -->|HTTP| frontend
61+
frontend-proxy -->|HTTP| flagd-ui
62+
frontend-proxy -->|HTTP| image-provider
6363
64-
Internet -->|HTTP| frontendproxy
64+
Internet -->|HTTP| frontend-proxy
6565
66-
loadgenerator -->|HTTP| frontendproxy
66+
load-generator -->|HTTP| frontend-proxy
6767
68-
paymentservice -->|gRPC| flagd
68+
payment -->|gRPC| flagd
6969
70-
queue -->|TCP| accountingservice
71-
queue -->|TCP| frauddetectionservice
70+
queue -->|TCP| accounting
71+
queue -->|TCP| fraud-detection
7272
73-
recommendationservice -->|gRPC| productcatalogservice
74-
recommendationservice -->|gRPC| flagd
73+
recommendation -->|gRPC| product-catalog
74+
recommendation -->|gRPC| flagd
7575
76-
shippingservice -->|HTTP| quoteservice
76+
shipping -->|HTTP| quote
7777
78-
react-native-app -->|HTTP| frontendproxy
78+
react-native-app -->|HTTP| frontend-proxy
7979
end
8080
8181
classDef dotnet fill:#178600,color:white;

content/en/docs/demo/feature-flags.md

+14-14
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ aliases:
44
- feature_flags
55
- services/feature-flag
66
- services/featureflagservice
7-
cSpell:ignore: loadgenerator OLJCESPC7Z
7+
cSpell:ignore: OLJCESPC7Z
88
---
99

1010
The demo provides several feature flags that you can use to simulate different
@@ -31,19 +31,19 @@ user interface:
3131

3232
## Implemented feature flags
3333

34-
| Feature Flag | Service(s) | Description |
35-
| ----------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------- |
36-
| `adServiceFailure` | Ad Service | Generate an error for `GetAds` 1/10th of the time |
37-
| `adServiceManualGc` | Ad Service | Trigger full manual garbage collections in the ad service |
38-
| `adServiceHighCpu` | Ad Service | Trigger high cpu load in the ad service. If you want to demo cpu throttling, set cpu resource limits |
39-
| `cartServiceFailure` | Cart Service | Generate an error whenever `EmptyCart` is called |
40-
| `productCatalogFailure` | Product Catalog | Generate an error for `GetProduct` requests with product ID: `OLJCESPC7Z` |
41-
| `recommendationServiceCacheFailure` | Recommendation | Create a memory leak due to an exponentially growing cache. 1.4x growth, 50% of requests trigger growth. |
42-
| `paymentServiceFailure` | Payment Service | Generate an error when calling the `charge` method. |
43-
| `paymentServiceUnreachable` | Checkout Service | Use a bad address when calling the PaymentService to make it seem like the PaymentService is unavailable. |
44-
| `loadgeneratorFloodHomepage` | Loadgenerator | Start flooding the homepage with a huge amount of requests, configurable by changing flagd JSON on state. |
45-
| `kafkaQueueProblems` | Kafka | Overloads Kafka queue while simultaneously introducing a consumer side delay leading to a lag spike. |
46-
| `imageSlowLoad` | Frontend | Utilizes envoy fault injection, produces a delay in loading of product images in the frontend. |
34+
| Feature Flag | Service(s) | Description |
35+
| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------------------- |
36+
| `adServiceFailure` | Ad | Generate an error for `GetAds` 1/10th of the time |
37+
| `adServiceManualGc` | Ad | Trigger full manual garbage collections in the ad service |
38+
| `adServiceHighCpu` | Ad | Trigger high cpu load in the ad service. If you want to demo cpu throttling, set cpu resource limits |
39+
| `cartServiceFailure` | Cart | Generate an error whenever `EmptyCart` is called |
40+
| `productCatalogFailure` | Product Catalog | Generate an error for `GetProduct` requests with product ID: `OLJCESPC7Z` |
41+
| `recommendationServiceCacheFailure` | Recommendation | Create a memory leak due to an exponentially growing cache. 1.4x growth, 50% of requests trigger growth. |
42+
| `paymentServiceFailure` | Payment | Generate an error when calling the `charge` method. |
43+
| `paymentServiceUnreachable` | Checkout | Use a bad address when calling the PaymentService to make it seem like the PaymentService is unavailable. |
44+
| `loadgeneratorFloodHomepage` | Load Generator | Start flooding the homepage with a huge amount of requests, configurable by changing flagd JSON on state. |
45+
| `kafkaQueueProblems` | Kafka | Overloads Kafka queue while simultaneously introducing a consumer side delay leading to a lag spike. |
46+
| `imageSlowLoad` | Frontend | Utilizes envoy fault injection, produces a delay in loading of product images in the frontend. |
4747

4848
## Feature Flag Architecture
4949

content/en/docs/demo/kubernetes-deployment.md

+10-10
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,11 @@ LoadBalancer) with optionally deployed ingress resources.
8181

8282
### Expose services using kubectl port-forward
8383

84-
To expose the frontendproxy service use the following command (replace
84+
To expose the frontend-proxy service use the following command (replace
8585
`my-otel-demo` with your Helm chart release name accordingly):
8686

8787
```shell
88-
kubectl port-forward svc/my-otel-demo-frontendproxy 8080:8080
88+
kubectl port-forward svc/my-otel-demo-frontend-proxy 8080:8080
8989
```
9090

9191
{{% alert title="Note" color="info" %}}
@@ -97,7 +97,7 @@ done.
9797

9898
{{% /alert %}}
9999

100-
With the frontendproxy port-forward set up, you can access:
100+
With the frontend-proxy port-forward set up, you can access:
101101

102102
- Web store: <http://localhost:8080/>
103103
- Grafana: <http://localhost:8080/grafana/>
@@ -121,16 +121,16 @@ the proper support before using these configuration options.
121121

122122
{{% /alert %}}
123123

124-
Each demo component (ie: frontendproxy) offers a way to have its Kubernetes
124+
Each demo component (ie: frontend-proxy) offers a way to have its Kubernetes
125125
service type configured. By default, these will not be created, but you can
126126
enable and configure them through the `ingress` property of each component.
127127

128-
To configure the frontendproxy component to use an ingress resource you would
128+
To configure the frontend-proxy component to use an ingress resource you would
129129
specify the following in your values file:
130130

131131
```yaml
132132
components:
133-
frontendProxy:
133+
frontend-proxy:
134134
ingress:
135135
enabled: true
136136
annotations: {}
@@ -147,16 +147,16 @@ the documentation from your ingress controller for more information.
147147
148148
#### Configure service types
149149
150-
Each demo component (ie: frontendproxy) offers a way to have its Kubernetes
150+
Each demo component (ie: frontend-proxy) offers a way to have its Kubernetes
151151
service type configured. By default, these will be `ClusterIP` but you can
152152
change each one using the `service.type` property of each component.
153153

154-
To configure the frontendproxy component to use a LoadBalancer service type you
154+
To configure the frontend-proxy component to use a LoadBalancer service type you
155155
would specify the following in your values file:
156156

157157
```yaml
158158
components:
159-
frontendProxy:
159+
frontend-proxy:
160160
service:
161161
type: LoadBalancer
162162
```
@@ -165,7 +165,7 @@ components:
165165

166166
In order for spans from the browser to be properly collected, you will also need
167167
to specify the location where the OpenTelemetry Collector is exposed. The
168-
frontendproxy defines a route for the collector with a path prefix of
168+
frontend-proxy defines a route for the collector with a path prefix of
169169
`/otlp-http`. You can configure the collector endpoint by setting the following
170170
environment variable on the frontend component:
171171

content/en/docs/demo/requirements/architecture.md

+8-24
Original file line numberDiff line numberDiff line change
@@ -45,26 +45,11 @@ logs (as applicable/available).
4545

4646
Each service should be interchangeable with a service that performs the same
4747
business logic, implementing the same gRPC endpoints, but written in a different
48-
language/implementation. For the initial implementation of the demo, we should
49-
focus on adding as many missing languages as possible by swapping out existing
50-
services with implementations in un-represented languages. For future versions
51-
we will look to add more distinct language options per service.
48+
language/implementation.
5249

53-
Each service should communicate with a feature flag service in order to
54-
enable/disable 'faults' that can be used to illustrate how telemetry helps solve
55-
problems in distributed applications.
56-
57-
A PHP service should be added to the main application as an 'admin service'. A
58-
Database should be added to enable CRUD functionality on the Product Catalog.
59-
60-
The 'shippingservice' should be reimplemented in Rust.
61-
62-
The 'currencyservice' should be reimplemented in C++.
63-
64-
The 'emailservice' should be reimplemented in Ruby.
65-
66-
For future iterations, the 'frontend' service can be extended with a mobile
67-
application written in Swift.
50+
Each service should be able to communicate with a feature flag service in order
51+
to enable/disable faults that can be used to illustrate how telemetry helps
52+
solve problems in distributed applications.
6853

6954
## Feature Flag Component
7055

@@ -75,11 +60,10 @@ Feature flags can be set through the flagd configurator user interface.
7560

7661
## Orchestration and Deployment
7762

78-
All services should run on Kubernetes. The OpenTelemetry Collector should be
79-
deployed via the OpenTelemetry Operator, and run in a sidecar + gateway mode.
80-
Telemetry from each pod should be routed from agents to a gateway, and the
81-
gateway should export telemetry by default to an open source trace + metrics
82-
visualizer.
63+
All services run on Kubernetes. The OpenTelemetry Collector should be deployed
64+
via the OpenTelemetry Operator, and run in a sidecar + gateway mode. Telemetry
65+
from each pod should be routed from agents to a gateway, and the gateway should
66+
export telemetry by default to an open source trace + metrics visualizer.
8367

8468
For local/non-Kubernetes deployment, the Collector should be deployed via
8569
compose file and monitor not only traces/metrics from applications, but also the

content/en/docs/demo/scenarios/recommendation-cache/index.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@ work, and viewing the details allows us to get a better idea of what's going on.
6868
## Confirming the Diagnosis
6969

7070
We can see in our waterfall view that the `app.cache_hit` attribute is set to
71-
`false`, and that the `app.products.count` value is extremely high.
71+
false, and that the `app.products.count` value is extremely high.
7272

73-
Returning to the search UI, filter to `recommendationservice` in the Service
74-
dropdown, and search for `app.cache_hit=true` in the Tags box. Notice that
75-
requests tend to be faster when the cache is hit. Now search for
76-
`app.cache_hit=false` and compare the latency. You should notice some changes in
77-
the visualization at the top of the trace list.
73+
Returning to the search UI, select `recommendation` in the Service dropdown, and
74+
search for `app.cache_hit=true` in the Tags box. Notice that requests tend to be
75+
faster when the cache is hit. Now search for `app.cache_hit=false` and compare
76+
the latency. You should notice some changes in the visualization at the top of
77+
the trace list.
7878

7979
Now, since this is a contrived scenario, we know where to find the underlying
8080
bug in our code. However, in a real-world scenario, we may need to perform

0 commit comments

Comments
 (0)