Skip to content

Commit b8d0d4b

Browse files
committed
Merge remote-tracking branch 'origin/main' into otelbot/semconv-integration-v1.40.0-dev
2 parents 4c1fd3a + a425c4c commit b8d0d4b

File tree

32 files changed

+1735
-399
lines changed

32 files changed

+1735
-399
lines changed

.cspell.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ words:
8989
- Crossplane
9090
- crosspost
9191
- desaturate
92-
- Docsy
92+
- docsy
9393
- errorf
9494
- excerpter
9595
- favicons

.cspell/en-words.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ autoloaded
1616
autoloader
1717
autoloading
1818
backoff
19+
blockquotes
1920
caml
2021
cartservice
2122
cassandra

.markdownlint-cli2.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
customRules:
2+
- ./scripts/_md-rules/prefer-blockquote-vs-docsy-alerts/index.mjs
23
- ./scripts/_md-rules/alert-type-not-translated.mjs
34
- ./scripts/_md-rules/unindent-code-blocks.js
45
- ./scripts/_md-rules/trim-code-blank-lines.js

.markdownlint.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ table-column-style: false # Causes problems in ja and zh pages
4141

4242
gh-url-hash: false
4343

44+
# Prefer blockquote alerts in English docs; enabled under content/en only. See
45+
# content/en/.markdownlint.yaml.
46+
prefer-blockquote-vs-docsy-alerts: false
47+
4448
# Custom rules registered in .markdownlint-cli2.yaml are enabled by default
4549
# (via `default: true` above). Only list custom rules here to disable them or
4650
# to provide configuration. Rules that need no config can be omitted.

content/en/.markdownlint.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
extends: ../../.markdownlint.yaml
2+
3+
prefer-blockquote-vs-docsy-alerts: true
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
---
2+
title: OpenTelemetry Accepted Elastic's PHP Distro Donation
3+
linkTitle: Elastic PHP Distro Donation
4+
date: 2026-04-16
5+
author: >-
6+
[Pawel Filipczak](https://github.com/intuibase) (Elastic)
7+
draft: true
8+
issue: https://github.com/open-telemetry/opentelemetry.io/issues/9434
9+
sig: OpenTelemetry PHP
10+
cSpell:ignore: Filipczak Pawel
11+
---
12+
13+
The OpenTelemetry community accepted the donation of the OpenTelemetry PHP
14+
Distro project. This post summarizes what the donation enables, how it relates
15+
to existing PHP instrumentation paths, and where contributors can help next.
16+
17+
## Why this donation matters
18+
19+
OpenTelemetry provides a common observability standard, but OpenTelemetry PHP
20+
adoption can still be difficult in environments where installing or compiling
21+
native extensions is restricted. Common blockers include:
22+
23+
- Restricted or hardened systems where native extensions cannot be built during
24+
deployment.
25+
- Runtime images that are not rebuilt frequently.
26+
- Operational workflows that rely on OS package managers.
27+
28+
The PHP Distro addresses these constraints by focusing on an operations-first
29+
installation model.
30+
31+
## What the PHP Distro provides
32+
33+
The project combines native and PHP runtime components into a single deployment
34+
model for production environments. Current capabilities include:
35+
36+
- Prebuilt native extension and loader artifacts.
37+
- Runtime/bootstrap logic for auto-instrumentation.
38+
- Packaging support for `deb`, `rpm`, and `apk`.
39+
- OTLP protobuf serialization without requiring `ext-protobuf`.
40+
- Inferred spans and URL grouping features for better visibility.
41+
- OpAMP integration support.
42+
43+
For teams running PHP `8.1` through `8.4`, this can reduce adoption overhead
44+
compared with custom build pipelines.
45+
46+
## Relationship to existing PHP instrumentation
47+
48+
The distro builds on the same OpenTelemetry PHP APIs and SDK, so it does not
49+
fork or replace core components. Teams can choose either installation path on a
50+
per-service basis:
51+
52+
- Distro path: package-managed, operations-first rollout with minimal code
53+
changes.
54+
- Composer-based path: manual control and portability where application-level
55+
packaging is preferred.
56+
57+
Choosing between them depends on your deployment model, security constraints,
58+
and ownership of runtime packaging.
59+
60+
## Practical rollout checklist
61+
62+
Before broad production rollout, validate the following:
63+
64+
- Runtime compatibility across PHP versions and SAPIs (`php-fpm`, `mod_php`,
65+
CLI).
66+
- Package format and architecture support in your Linux distributions.
67+
- Telemetry quality (span completeness, naming, exporter behavior).
68+
- Operational safety (restart and rollback procedures, version pinning).
69+
70+
A lightweight validation matrix across representative services can help avoid
71+
rework later.
72+
73+
## Current status and next topics
74+
75+
The project has reached a major milestone and is moving toward a first beta
76+
release. Active follow-up topics include:
77+
78+
- Class and namespace shadowing to reduce dependency collisions.
79+
- Declarative configuration support.
80+
- PHP `8.5` compatibility.
81+
- Central configuration capabilities aligned with OpenTelemetry policy work.
82+
- Ongoing alignment between upstream OpenTelemetry distro work and vendor
83+
distributions built on top of it.
84+
85+
## How to contribute
86+
87+
If you want to help:
88+
89+
- Test the distro in real environments and share compatibility findings.
90+
- Report installation and runtime issues in
91+
[`opentelemetry-php-distro` repository](https://github.com/open-telemetry/opentelemetry-php-distro).
92+
- Propose documentation improvements for deployment, migration, and
93+
troubleshooting.
94+
- Join OpenTelemetry PHP and relevant SIG discussions to align roadmap and user
95+
guidance.
96+
97+
You can also review the donation context and discussion in
98+
[open-telemetry/community issue #2846](https://github.com/open-telemetry/community/issues/2846).

content/en/docs/collector/quick-start.md

Lines changed: 65 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,108 @@
11
---
22
title: Quick start
3-
description: Setup and collect telemetry in minutes!
3+
description: Set up and collect telemetry in minutes!
44
aliases: [getting-started]
55
weight: 1
66
cSpell:ignore: docker dokey gobin okey telemetrygen
77
---
88

99
<!-- markdownlint-disable ol-prefix blanks-around-fences -->
1010

11-
The OpenTelemetry Collector receives [traces](/docs/concepts/signals/traces/),
11+
The OpenTelemetry Collector receives telemetry such as
12+
[traces](/docs/concepts/signals/traces/),
1213
[metrics](/docs/concepts/signals/metrics/), and
13-
[logs](/docs/concepts/signals/logs/), processes the telemetry, and exports it to
14-
a wide variety of observability backends using its components. For a conceptual
15-
overview of the Collector, see [Collector](/docs/collector).
14+
[logs](/docs/concepts/signals/logs/), processes it, and forwards it to one or
15+
more observability backends through its component pipeline.
1616

17-
You are going to learn to do the following in less than five minutes:
17+
> [!NOTE]
18+
>
19+
> This quick start demo creates a basic local setup. The goal is to show you how
20+
> the Collector works, not to set up a production-ready environment.
1821
19-
- Set up and run the OpenTelemetry Collector.
20-
- Send telemetry and see it processed by the Collector.
22+
In this guide, you will:
23+
24+
- Start a local instance of the OpenTelemetry Collector
25+
- Generate trace data and send it to the Collector
26+
- Check that the Collector receives and processes the data
27+
28+
By the end, you will have a simple pipeline running on your machine and a
29+
clearer idea of how the Collector fits into an observability stack. If you want
30+
more context before getting started, see the [Collector](/docs/collector)
31+
overview.
2132

2233
## Prerequisites
2334

24-
Make sure that your developer environment has the following. This page assumes
25-
that you're using `bash`. Adapt configuration and commands as necessary for your
26-
preferred shell.
35+
Before you begin, make sure your environment has the following tools installed:
36+
37+
- [Docker](https://www.docker.com/) or any compatible container runtime — used
38+
to run the Collector
39+
- [Go](https://go.dev/), one of the latest two minor versions — used to install
40+
the telemetry generator
41+
- [`GOBIN` environment variable][gobin] set — ensures installed Go binaries are
42+
available in your PATH[^1]
2743

28-
- [Docker](https://www.docker.com/) or any compatible containers' runtime.
29-
- [Go](https://go.dev/) 1.20 or higher
30-
- [`GOBIN` environment variable][gobin] is set; if unset, initialize it
31-
appropriately, for example[^1]:
32-
```sh
33-
export GOBIN=${GOBIN:-$(go env GOPATH)/bin}
34-
```
44+
If `GOBIN` isn't set, run:
45+
46+
```sh
47+
export GOBIN=${GOBIN:-$(go env GOPATH)/bin}
48+
```
49+
50+
This guide uses `bash` commands. If you're using a different shell, you might
51+
need to adjust the command syntax.
3552

3653
[^1]:
3754
For more information, see
3855
[Your first program](https://go.dev/doc/code#Command).
3956

4057
## Set up the environment
4158

42-
1. Pull in the OpenTelemetry Collector core Docker image:
59+
1. Pull the Docker image of the OpenTelemetry Collector core
60+
[distribution](/docs/collector/distributions/):
4361

4462
```sh
4563
docker pull otel/opentelemetry-collector:{{% param vers %}}
4664
```
4765

48-
2. Install the [telemetrygen][] utility:
66+
2. Install [telemetrygen][], which we'll use to simulate a client that generates
67+
telemetry:
4968

5069
```sh
5170
go install github.com/open-telemetry/opentelemetry-collector-contrib/cmd/telemetrygen@latest
5271
```
5372

54-
This utility can simulate a client generating [traces][], [metrics][], and
55-
[logs][].
56-
5773
## Generate and collect telemetry
5874

59-
3. Launch the Collector, listening on ports 4317 (for OTLP gRPC), 4318 (for OTLP
60-
HTTP) and 55679 (for ZPages):
75+
3. Start the Collector:
6176

6277
```sh
6378
docker run \
6479
-p 127.0.0.1:4317:4317 \
6580
-p 127.0.0.1:4318:4318 \
6681
-p 127.0.0.1:55679:55679 \
6782
otel/opentelemetry-collector:{{% param vers %}} \
68-
2>&1 | tee collector-output.txt # Optionally tee output for easier search later
83+
2>&1 | tee collector-output.txt
6984
```
7085

71-
4. In a separate terminal window, generate a few sample traces:
86+
The previous command runs the Collector locally and opens three ports:
87+
- `4317` — OTLP over gRPC, the default for most SDKs
88+
- `4318` — OTLP over HTTP, for clients that don't support gRPC
89+
- `55679` — ZPages, a built-in debug UI you can open in the browser
90+
91+
4. In a separate terminal, generate some traces:
7292

7393
```sh
7494
$GOBIN/telemetrygen traces --otlp-insecure --traces 3
7595
```
7696

77-
Among the output generated by the utility, you should see a confirmation that
78-
traces were generated:
97+
You see output confirming the traces were sent:
7998

8099
```text
81100
2024-01-16T14:33:15.692-0500 INFO traces/worker.go:99 traces generated {"worker": 0, "traces": 3}
82101
2024-01-16T14:33:15.692-0500 INFO traces/traces.go:58 stop the batch span processor
83102
```
84103

85-
For an easier time seeing relevant output you can filter it:
86-
87-
```sh
88-
$GOBIN/telemetrygen traces --otlp-insecure \
89-
--traces 3 2>&1 | grep -E 'start|traces|stop'
90-
```
91-
92-
5. In the terminal window running the Collector container, you should see trace
93-
ingest activity similar to what is shown in the following example:
104+
5. Back in the Collector terminal, you should see trace ingest activity similar
105+
to the following:
94106

95107
```console
96108
$ grep -E '^Span|(ID|Name|Kind|time|Status \w+)\s+:' ./collector-output.txt
@@ -117,30 +129,27 @@ preferred shell.
117129
...
118130
```
119131

120-
6. Open <http://localhost:55679/debug/tracez> and select one of the samples in
121-
the table to see the traces you've just generated.
132+
6. To explore the traces visually, open <http://localhost:55679/debug/tracez> in
133+
your browser and select one of the traces from the table.
122134

123-
7. After you are done, shutdown the Collector container, for example, using
124-
<kbd>Control-C</kbd>.
135+
7. Press <kbd>Control-C</kbd> to stop the Collector.
125136

126137
## Next steps
127138

128-
In this tutorial you've started the OpenTelemetry Collector and sent telemetry
129-
to it. As next steps, consider doing the following:
139+
At this point, you've run the Collector locally and seen how it handles
140+
telemetry end to end. From here, you can start learning how it's used in real
141+
setups:
130142

131-
- Explore different ways to [install the Collector](/docs/collector/install/).
132-
- Learn about the different modes of the Collector in
133-
[Deployment Methods](/docs/collector/deploy/).
134-
- Familiarize yourself with the Collector
135-
[configuration](/docs/collector/configuration) files and structure.
136-
- Explore available components in the
137-
[registry](/ecosystem/registry/?language=collector).
138-
- Learn how to
139-
[build a custom Collector with the OpenTelemetry Collector Builder (OCB)](/docs/collector/extend/ocb/).
143+
- [Configuration](/docs/collector/configuration): Learn how the Collector's
144+
config file works and how to connect it to a real backend like Jaeger or
145+
Prometheus.
146+
- [Deployment patterns](/docs/collector/deploy/): Understand the difference
147+
between running the Collector as an agent versus a gateway.
148+
- [Install the Collector](/docs/collector/install/): Explore installation
149+
options beyond Docker, including binaries and Kubernetes.
150+
- [Component registry](/ecosystem/registry/?language=collector): Browse
151+
available receivers, processors, and exporters to extend your pipeline.
140152

141153
[gobin]: https://pkg.go.dev/cmd/go#hdr-Environment_variables
142-
[logs]: /docs/concepts/signals/logs/
143-
[metrics]: /docs/concepts/signals/metrics/
144154
[telemetrygen]:
145155
https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/telemetrygen
146-
[traces]: /docs/concepts/signals/traces/

content/en/docs/contributing/sig-practices.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description:
55
Learn how approvers and maintainers manage issues and contributions.
66
weight: 999
77
# prettier-ignore
8-
cSpell:ignore: Comms contribfest docsy hotfixes inactivitiy onboarded triager triagers
8+
cSpell:ignore: Comms contribfest hotfixes inactivitiy onboarded triager triagers
99
---
1010

1111
This pages includes guidelines and some common practices used by approvers and

content/en/docs/contributing/style-guide.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ To enforce standards and consistency for Markdown files, all files should follow
130130
certain rules, enforced by [markdownlint][]. For a full list, check the
131131
[.markdownlint.yaml][] and [.markdownlint-cli2.yaml][] files.
132132

133+
When legitimate exceptions to a rule exists, use `markdownlint-disable`
134+
directive to suppress the rule warnings. For details, see the
135+
[markdownlint documentation](https://github.com/DavidAnson/markdownlint#configuration).
136+
133137
We also enforce Markdown [file format](#file-format) and strip files of trailing
134138
whitespace. This precludes the [line break syntax][] of 2+ spaces; use `<br>`
135139
instead or reformat your text.

0 commit comments

Comments
 (0)