This commit implements Phase 2 of the CHORUS Task Execution Engine development plan, providing a comprehensive execution environment abstraction layer with Docker container sandboxing support. ## New Features ### Core Sandbox Interface - Comprehensive ExecutionSandbox interface with isolated task execution - Support for command execution, file I/O, environment management - Resource usage monitoring and sandbox lifecycle management - Standardized error handling with SandboxError types and categories ### Docker Container Sandbox Implementation - Full Docker API integration with secure container creation - Transparent repository mounting with configurable read/write access - Advanced security policies with capability dropping and privilege controls - Comprehensive resource limits (CPU, memory, disk, processes, file handles) - Support for tmpfs mounts, masked paths, and read-only bind mounts - Container lifecycle management with proper cleanup and health monitoring ### Security & Resource Management - Configurable security policies with SELinux, AppArmor, and Seccomp support - Fine-grained capability management with secure defaults - Network isolation options with configurable DNS and proxy settings - Resource monitoring with real-time CPU, memory, and network usage tracking - Comprehensive ulimits configuration for process and file handle limits ### Repository Integration - Seamless repository mounting from local paths to container workspaces - Git configuration support with user credentials and global settings - File inclusion/exclusion patterns for selective repository access - Configurable permissions and ownership for mounted repositories ### Testing Infrastructure - Comprehensive test suite with 60+ test cases covering all functionality - Docker integration tests with Alpine Linux containers (skipped in short mode) - Mock sandbox implementation for unit testing without Docker dependencies - Security policy validation tests with read-only filesystem enforcement - Resource usage monitoring and cleanup verification tests ## Technical Details ### Dependencies Added - github.com/docker/docker v28.4.0+incompatible - Docker API client - github.com/docker/go-connections v0.6.0 - Docker connection utilities - github.com/docker/go-units v0.5.0 - Docker units and formatting - Associated Docker API dependencies for complete container management ### Architecture - Interface-driven design enabling multiple sandbox implementations - Comprehensive configuration structures for all sandbox aspects - Resource usage tracking with detailed metrics collection - Error handling with retryable error classification - Proper cleanup and resource management throughout sandbox lifecycle ### Compatibility - Maintains backward compatibility with existing CHORUS architecture - Designed for future integration with Phase 3 Core Task Execution Engine - Extensible design supporting additional sandbox implementations (VM, process) This Phase 2 implementation provides the foundation for secure, isolated task execution that will be integrated with the AI model providers from Phase 1 in the upcoming Phase 3 development. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
123 lines
6.2 KiB
Markdown
123 lines
6.2 KiB
Markdown
# OpenTelemetry-Go
|
|
|
|
[](https://github.com/open-telemetry/opentelemetry-go/actions/workflows/ci.yml)
|
|
[](https://app.codecov.io/gh/open-telemetry/opentelemetry-go?branch=main)
|
|
[](https://pkg.go.dev/go.opentelemetry.io/otel)
|
|
[](https://goreportcard.com/report/go.opentelemetry.io/otel)
|
|
[](https://scorecard.dev/viewer/?uri=github.com/open-telemetry/opentelemetry-go)
|
|
[](https://www.bestpractices.dev/projects/9996)
|
|
[](https://issues.oss-fuzz.com/issues?q=project:opentelemetry-go)
|
|
[](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-go?ref=badge_shield&issueType=license)
|
|
[](https://cloud-native.slack.com/archives/C01NPAXACKT)
|
|
|
|
OpenTelemetry-Go is the [Go](https://golang.org/) implementation of [OpenTelemetry](https://opentelemetry.io/).
|
|
It provides a set of APIs to directly measure performance and behavior of your software and send this data to observability platforms.
|
|
|
|
## Project Status
|
|
|
|
| Signal | Status |
|
|
|---------|--------------------|
|
|
| Traces | Stable |
|
|
| Metrics | Stable |
|
|
| Logs | Beta[^1] |
|
|
|
|
Progress and status specific to this repository is tracked in our
|
|
[project boards](https://github.com/open-telemetry/opentelemetry-go/projects)
|
|
and
|
|
[milestones](https://github.com/open-telemetry/opentelemetry-go/milestones).
|
|
|
|
Project versioning information and stability guarantees can be found in the
|
|
[versioning documentation](VERSIONING.md).
|
|
|
|
[^1]: https://github.com/orgs/open-telemetry/projects/43
|
|
|
|
### Compatibility
|
|
|
|
OpenTelemetry-Go ensures compatibility with the current supported versions of
|
|
the [Go language](https://golang.org/doc/devel/release#policy):
|
|
|
|
> Each major Go release is supported until there are two newer major releases.
|
|
> For example, Go 1.5 was supported until the Go 1.7 release, and Go 1.6 was supported until the Go 1.8 release.
|
|
|
|
For versions of Go that are no longer supported upstream, opentelemetry-go will
|
|
stop ensuring compatibility with these versions in the following manner:
|
|
|
|
- A minor release of opentelemetry-go will be made to add support for the new
|
|
supported release of Go.
|
|
- The following minor release of opentelemetry-go will remove compatibility
|
|
testing for the oldest (now archived upstream) version of Go. This, and
|
|
future, releases of opentelemetry-go may include features only supported by
|
|
the currently supported versions of Go.
|
|
|
|
Currently, this project supports the following environments.
|
|
|
|
| OS | Go Version | Architecture |
|
|
|----------|------------|--------------|
|
|
| Ubuntu | 1.25 | amd64 |
|
|
| Ubuntu | 1.24 | amd64 |
|
|
| Ubuntu | 1.23 | amd64 |
|
|
| Ubuntu | 1.25 | 386 |
|
|
| Ubuntu | 1.24 | 386 |
|
|
| Ubuntu | 1.23 | 386 |
|
|
| Ubuntu | 1.25 | arm64 |
|
|
| Ubuntu | 1.24 | arm64 |
|
|
| Ubuntu | 1.23 | arm64 |
|
|
| macOS 13 | 1.25 | amd64 |
|
|
| macOS 13 | 1.24 | amd64 |
|
|
| macOS 13 | 1.23 | amd64 |
|
|
| macOS | 1.25 | arm64 |
|
|
| macOS | 1.24 | arm64 |
|
|
| macOS | 1.23 | arm64 |
|
|
| Windows | 1.25 | amd64 |
|
|
| Windows | 1.24 | amd64 |
|
|
| Windows | 1.23 | amd64 |
|
|
| Windows | 1.25 | 386 |
|
|
| Windows | 1.24 | 386 |
|
|
| Windows | 1.23 | 386 |
|
|
|
|
While this project should work for other systems, no compatibility guarantees
|
|
are made for those systems currently.
|
|
|
|
## Getting Started
|
|
|
|
You can find a getting started guide on [opentelemetry.io](https://opentelemetry.io/docs/languages/go/getting-started/).
|
|
|
|
OpenTelemetry's goal is to provide a single set of APIs to capture distributed
|
|
traces and metrics from your application and send them to an observability
|
|
platform. This project allows you to do just that for applications written in
|
|
Go. There are two steps to this process: instrument your application, and
|
|
configure an exporter.
|
|
|
|
### Instrumentation
|
|
|
|
To start capturing distributed traces and metric events from your application
|
|
it first needs to be instrumented. The easiest way to do this is by using an
|
|
instrumentation library for your code. Be sure to check out [the officially
|
|
supported instrumentation
|
|
libraries](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/instrumentation).
|
|
|
|
If you need to extend the telemetry an instrumentation library provides or want
|
|
to build your own instrumentation for your application directly you will need
|
|
to use the
|
|
[Go otel](https://pkg.go.dev/go.opentelemetry.io/otel)
|
|
package. The [examples](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/examples)
|
|
are a good way to see some practical uses of this process.
|
|
|
|
### Export
|
|
|
|
Now that your application is instrumented to collect telemetry, it needs an
|
|
export pipeline to send that telemetry to an observability platform.
|
|
|
|
All officially supported exporters for the OpenTelemetry project are contained in the [exporters directory](./exporters).
|
|
|
|
| Exporter | Logs | Metrics | Traces |
|
|
|---------------------------------------|:----:|:-------:|:------:|
|
|
| [OTLP](./exporters/otlp/) | ✓ | ✓ | ✓ |
|
|
| [Prometheus](./exporters/prometheus/) | | ✓ | |
|
|
| [stdout](./exporters/stdout/) | ✓ | ✓ | ✓ |
|
|
| [Zipkin](./exporters/zipkin/) | | | ✓ |
|
|
|
|
## Contributing
|
|
|
|
See the [contributing documentation](CONTRIBUTING.md).
|