Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
6b838d9
[integration_test] Add `RunForEachImageAndFeatureFlag` and improve Ot…
franciscovalentecastro Oct 23, 2025
9fd6365
[confgenerator] Replace `IsMatch` with `IsMatchRubyRegex` in Otel Log…
franciscovalentecastro Oct 27, 2025
00331e6
surface errors via GetStatus (#2095)
XuechunHou Oct 29, 2025
51d71bd
feat: Update kokoro install/exercise for latest mysql-apt-config (#2109)
antonblock Oct 29, 2025
40e46c4
Add Kokoro build configs for new distro trixie_x86_64 (#2113)
LujieDuan Oct 29, 2025
c419684
Add Kokoro build configs for new distro trixie_aarch64 (#2114)
LujieDuan Oct 30, 2025
08ebce5
Bump github.com/docker/docker from 27.1.1+incompatible to 28.0.0+inco…
dependabot[bot] Oct 30, 2025
cf60595
Refactoring assertPrometheus metrics to use metadata ExpectedMetric (…
rafaelwestphal Oct 31, 2025
7e8a923
Turn off WASM support in Fluent Bit (#2108)
braydonk Oct 31, 2025
e97f988
[Testing] Replace sql-std-2019-win-2019 with 2019 on 2022 + 2022 on 2…
LujieDuan Oct 31, 2025
c5ddf5e
Update VERSION to 2.62.0 (#2118)
LujieDuan Nov 3, 2025
f0659dc
feat: Ubuntu 25.04 3p testing (#2099)
antonblock Nov 3, 2025
6d72fa7
Autogenerated support for plucky x86 64 (#2117)
franciscovalentecastro Nov 4, 2025
d790bfb
Improving OTLP receiver tests (#2086)
rafaelwestphal Nov 5, 2025
0faddf8
Add Kokoro build configs for new distro plucky_aarch64 (#2121)
franciscovalentecastro Nov 5, 2025
4f9f61d
[confgenerator] Set `OmitEmptyValues: true` in Otel Logging to match …
franciscovalentecastro Nov 11, 2025
0bf1948
Update minimum_supported_agent_version in metadata.yaml. (#2119)
stackdriver-instrumentation-release Nov 12, 2025
0ea7fe3
[tests] Create `parse_regex_optional_groups` transformation test. (#2…
franciscovalentecastro Nov 13, 2025
ccfedc9
[Dockerfile] Add Ubuntu 25.10 "Questing" build support. (#2124)
franciscovalentecastro Nov 13, 2025
206f8d7
feat: Ubuntu 25.10 3p testing (#2127)
Caleb-Hurshman Nov 17, 2025
bd1699d
[integration_test] Add missing `t.Parallel()` in `TestGoogleSecretMan…
franciscovalentecastro Nov 17, 2025
50df3a1
Adding otlphttp exporter to the third party apps (#2089)
rafaelwestphal Nov 19, 2025
2b6fe87
[third_party_tests] Set `postgresql-17` to be used with Ubuntu 25.10.…
franciscovalentecastro Nov 19, 2025
6dd3cd1
Removing rhel- from distro detector regex. (#2133)
rafaelwestphal Nov 19, 2025
11a0bfb
[confgenerator] Generate `TypeStatements()` in order to always get sa…
franciscovalentecastro Nov 21, 2025
10f77fd
[confgenerator] Support `LoggingProcessorParseMultilineRegex` in Otel…
franciscovalentecastro Nov 21, 2025
6742077
feat: Update Vault Audit parser to use `LoggingReceiverMacro` (#2052)
dyl10s Nov 24, 2025
6f871c1
feat: Update OracleDB to use `LoggingProcessorMacro` (#2053)
Caleb-Hurshman Nov 24, 2025
85476e0
Add Kokoro build configs for new distro questing_x86_64 (#2140)
franciscovalentecastro Nov 25, 2025
c8c7e01
[confgenerator] Support `YesNoBoolean` in Otel Logging. (#2139)
franciscovalentecastro Nov 25, 2025
5b3cabe
Add Kokoro build configs for new distro questing_aarch64 (#2141)
franciscovalentecastro Nov 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
105 changes: 103 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,7 @@ ARG OPENJDK_MAJOR_VERSION
RUN set -x; apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install git systemd \
autoconf libtool libcurl4-openssl-dev libltdl-dev libssl-dev libyajl-dev \
build-essential cmake bison flex file systemd-dev \
build-essential cmake bison flex file systemd-dev libsystemd-dev \
devscripts cdbs pkg-config zip
COPY --from=openjdk-install /usr/local/java-${OPENJDK_MAJOR_VERSION}-openjdk/ /usr/local/java-${OPENJDK_MAJOR_VERSION}-openjdk
ENV JAVA_HOME /usr/local/java-${OPENJDK_MAJOR_VERSION}-openjdk/
Expand Down Expand Up @@ -1221,6 +1221,106 @@ COPY --from=plucky-build /tmp/google-cloud-ops-agent.tgz /google-cloud-ops-agent
COPY --from=plucky-build /google-cloud-ops-agent*.deb /
COPY --from=plucky-build /google-cloud-ops-agent-plugin*.tar.gz /

# ======================================
# Build Ops Agent for ubuntu-questing
# ======================================

FROM ubuntu:questing AS questing-build-base
ARG OPENJDK_MAJOR_VERSION

RUN set -x; apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install git systemd \
autoconf libtool libcurl4-openssl-dev libltdl-dev libssl-dev libyajl-dev \
build-essential cmake bison flex file systemd-dev debhelper libsystemd-dev tzdata \
devscripts cdbs pkg-config openjdk-${OPENJDK_MAJOR_VERSION}-jdk zip

SHELL ["/bin/bash", "-c"]

# Install golang
ARG TARGETARCH
ARG GO_VERSION
ADD https://go.dev/dl/go${GO_VERSION}.linux-${TARGETARCH}.tar.gz /tmp/go${GO_VERSION}.tar.gz
RUN set -xe; \
tar -xf /tmp/go${GO_VERSION}.tar.gz -C /usr/local
ENV PATH="${PATH}:/usr/local/go/bin"


FROM questing-build-base AS questing-build-otel
WORKDIR /work
# Download golang deps
COPY ./submodules/opentelemetry-operations-collector/go.mod ./submodules/opentelemetry-operations-collector/go.sum submodules/opentelemetry-operations-collector/
RUN cd submodules/opentelemetry-operations-collector && go mod download

COPY ./submodules/opentelemetry-java-contrib submodules/opentelemetry-java-contrib
# Install gradle. The first invocation of gradlew does this
RUN cd submodules/opentelemetry-java-contrib && ./gradlew --no-daemon -Djdk.lang.Process.launchMechanism=vfork tasks
COPY ./submodules/opentelemetry-operations-collector submodules/opentelemetry-operations-collector
COPY ./builds/otel.sh .
RUN \
unset OTEL_TRACES_EXPORTER && \
unset OTEL_EXPORTER_OTLP_TRACES_ENDPOINT && \
unset OTEL_EXPORTER_OTLP_TRACES_PROTOCOL && \
./otel.sh /work/cache/

FROM questing-build-base AS questing-build-fluent-bit
WORKDIR /work
COPY ./submodules/fluent-bit submodules/fluent-bit
COPY ./builds/fluent_bit.sh .
RUN ./fluent_bit.sh /work/cache/


FROM questing-build-base AS questing-build-systemd
WORKDIR /work
COPY ./systemd systemd
COPY ./builds/systemd.sh .
RUN ./systemd.sh /work/cache/


FROM questing-build-base AS questing-build-golang-base
WORKDIR /work
COPY go.mod go.sum ./
# Fetch dependencies
RUN go mod download
COPY confgenerator confgenerator
COPY apps apps
COPY internal internal


FROM questing-build-golang-base AS questing-build-wrapper
WORKDIR /work
COPY cmd/agent_wrapper cmd/agent_wrapper
COPY ./builds/agent_wrapper.sh .
RUN ./agent_wrapper.sh /work/cache/


FROM questing-build-golang-base AS questing-build
WORKDIR /work
COPY . /work

# Run the build script once to build the ops agent engine to a cache
RUN mkdir -p /tmp/cache_run/golang && cp -r . /tmp/cache_run/golang
WORKDIR /tmp/cache_run/golang
RUN ./pkg/deb/build.sh &> /dev/null || true
WORKDIR /work

COPY ./confgenerator/default-config.yaml /work/cache/etc/google-cloud-ops-agent/config.yaml
COPY --from=questing-build-otel /work/cache /work/cache
COPY --from=questing-build-fluent-bit /work/cache /work/cache
COPY --from=questing-build-systemd /work/cache /work/cache
COPY --from=questing-build-wrapper /work/cache /work/cache
RUN ./pkg/deb/build.sh

COPY cmd/ops_agent_uap_plugin cmd/ops_agent_uap_plugin
COPY ./builds/ops_agent_plugin.sh .
RUN ./ops_agent_plugin.sh /work/cache/
RUN ./pkg/plugin/build.sh /work/cache questing


FROM scratch AS questing
COPY --from=questing-build /tmp/google-cloud-ops-agent.tgz /google-cloud-ops-agent-ubuntu-questing.tgz
COPY --from=questing-build /google-cloud-ops-agent*.deb /
COPY --from=questing-build /google-cloud-ops-agent-plugin*.tar.gz /

FROM scratch
COPY --from=centos8 /* /
COPY --from=rockylinux9 /* /
Expand All @@ -1232,4 +1332,5 @@ COPY --from=sles12 /* /
COPY --from=sles15 /* /
COPY --from=jammy /* /
COPY --from=noble /* /
COPY --from=plucky /* /
COPY --from=plucky /* /
COPY --from=questing /* /
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
PKG_VERSION="2.61.0"
PKG_VERSION="2.62.0"
6 changes: 3 additions & 3 deletions apps/active_directory_ds.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ func (r MetricsReceiverActiveDirectoryDS) Type() string {
return "active_directory_ds"
}

func (r MetricsReceiverActiveDirectoryDS) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
return []otel.ReceiverPipeline{{
func (r MetricsReceiverActiveDirectoryDS) Pipelines(ctx context.Context) ([]otel.ReceiverPipeline, error) {
return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "active_directory_ds",
Config: map[string]interface{}{
Expand All @@ -51,7 +51,7 @@ func (r MetricsReceiverActiveDirectoryDS) Pipelines(_ context.Context) ([]otel.R
),
otel.MetricsRemoveServiceAttributes(),
}},
}}, nil
}, ctx)}, nil
}

func init() {
Expand Down
6 changes: 3 additions & 3 deletions apps/aerospike.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ var (
)

// Pipelines is the OTEL pipelines created from MetricsReceiverAerospike
func (r MetricsReceiverAerospike) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
func (r MetricsReceiverAerospike) Pipelines(ctx context.Context) ([]otel.ReceiverPipeline, error) {
if r.Endpoint == "" {
r.Endpoint = defaultAerospikeEndpoint
}
Expand All @@ -76,7 +76,7 @@ func (r MetricsReceiverAerospike) Pipelines(_ context.Context) ([]otel.ReceiverP
endpoint = r.Endpoint
}

return []otel.ReceiverPipeline{{
return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "aerospike",
Config: map[string]interface{}{
Expand All @@ -101,7 +101,7 @@ func (r MetricsReceiverAerospike) Pipelines(_ context.Context) ([]otel.ReceiverP
),
otel.MetricsRemoveServiceAttributes(),
}},
}}, nil
}, ctx)}, nil
}

func init() {
Expand Down
7 changes: 4 additions & 3 deletions apps/apache.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,12 @@ func (r MetricsReceiverApache) Type() string {
return "apache"
}

func (r MetricsReceiverApache) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
func (r MetricsReceiverApache) Pipelines(ctx context.Context) ([]otel.ReceiverPipeline, error) {
if r.ServerStatusURL == "" {
r.ServerStatusURL = defaultServerStatusURL
}
return []otel.ReceiverPipeline{{

return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "apache",
Config: map[string]interface{}{
Expand All @@ -64,7 +65,7 @@ func (r MetricsReceiverApache) Pipelines(_ context.Context) ([]otel.ReceiverPipe
),
otel.MetricsRemoveServiceAttributes(),
}},
}}, nil
}, ctx)}, nil
}

func init() {
Expand Down
7 changes: 4 additions & 3 deletions apps/couchbase.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func (r MetricsReceiverCouchbase) Type() string {
}

// Pipelines will construct the prometheus receiver configuration
func (r MetricsReceiverCouchbase) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
func (r MetricsReceiverCouchbase) Pipelines(ctx context.Context) ([]otel.ReceiverPipeline, error) {
targets := []string{r.Endpoint}
if r.Endpoint == "" {
targets = []string{defaultCouchbaseEndpoint}
Expand Down Expand Up @@ -75,7 +75,8 @@ func (r MetricsReceiverCouchbase) Pipelines(_ context.Context) ([]otel.ReceiverP
},
},
}
return []otel.ReceiverPipeline{{

return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "prometheus",
Config: config,
Expand Down Expand Up @@ -169,7 +170,7 @@ func (r MetricsReceiverCouchbase) Pipelines(_ context.Context) ([]otel.ReceiverP
),
otel.MetricsRemoveServiceAttributes(),
}},
}}, nil
}, ctx)}, nil
}

type couchbaseMetric struct {
Expand Down
7 changes: 4 additions & 3 deletions apps/couchdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,12 @@ func (MetricsReceiverCouchdb) Type() string {
return "couchdb"
}

func (r MetricsReceiverCouchdb) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
func (r MetricsReceiverCouchdb) Pipelines(ctx context.Context) ([]otel.ReceiverPipeline, error) {
if r.Endpoint == "" {
r.Endpoint = defaultCouchdbEndpoint
}
return []otel.ReceiverPipeline{{

return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "couchdb",
Config: map[string]interface{}{
Expand All @@ -64,7 +65,7 @@ func (r MetricsReceiverCouchdb) Pipelines(_ context.Context) ([]otel.ReceiverPip
),
otel.MetricsRemoveServiceAttributes(),
}},
}}, nil
}, ctx)}, nil
}

func init() {
Expand Down
9 changes: 5 additions & 4 deletions apps/dcgm.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func (r MetricsReceiverDcgm) Type() string {
return "dcgm"
}

func (r MetricsReceiverDcgm) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
func (r MetricsReceiverDcgm) Pipelines(ctx context.Context) ([]otel.ReceiverPipeline, error) {
if r.Endpoint == "" {
r.Endpoint = defaultDcgmEndpoint
}
Expand Down Expand Up @@ -128,7 +128,7 @@ func (r MetricsReceiverDcgm) Pipelines(_ context.Context) ([]otel.ReceiverPipeli
}
}

return []otel.ReceiverPipeline{{
return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "dcgm",
Config: map[string]interface{}{
Expand Down Expand Up @@ -203,8 +203,9 @@ func (r MetricsReceiverDcgm) Pipelines(_ context.Context) ([]otel.ReceiverPipeli
otel.SetScopeName("agent.googleapis.com/"+r.Type()),
otel.SetScopeVersion("1.0"),
),
}},
}}, nil
},
},
}, ctx)}, nil
}

func init() {
Expand Down
6 changes: 3 additions & 3 deletions apps/elasticsearch.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (r MetricsReceiverElasticsearch) Type() string {
return "elasticsearch"
}

func (r MetricsReceiverElasticsearch) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
func (r MetricsReceiverElasticsearch) Pipelines(ctx context.Context) ([]otel.ReceiverPipeline, error) {
if r.Endpoint == "" {
r.Endpoint = defaultElasticsearchEndpoint
}
Expand Down Expand Up @@ -72,7 +72,7 @@ func (r MetricsReceiverElasticsearch) Pipelines(_ context.Context) ([]otel.Recei
"metrics": metricsConfig,
}

return []otel.ReceiverPipeline{{
return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "elasticsearch",
Config: cfg,
Expand All @@ -94,7 +94,7 @@ func (r MetricsReceiverElasticsearch) Pipelines(_ context.Context) ([]otel.Recei
),
otel.MetricsRemoveServiceAttributes(),
}},
}}, nil
}, ctx)}, nil
}

func (r MetricsReceiverElasticsearch) skipJVMMetricsConfig(metricsConfig map[string]interface{}) {
Expand Down
7 changes: 4 additions & 3 deletions apps/flink.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,12 @@ func (MetricsReceiverFlink) Type() string {

const defaultFlinkEndpoint = "http://localhost:8081"

func (r MetricsReceiverFlink) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
func (r MetricsReceiverFlink) Pipelines(ctx context.Context) ([]otel.ReceiverPipeline, error) {
if r.Endpoint == "" {
r.Endpoint = defaultFlinkEndpoint
}
return []otel.ReceiverPipeline{{

return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "flinkmetrics",
Config: map[string]interface{}{
Expand Down Expand Up @@ -66,7 +67,7 @@ func (r MetricsReceiverFlink) Pipelines(_ context.Context) ([]otel.ReceiverPipel
),
otel.MetricsRemoveServiceAttributes(),
}},
}}, nil
}, ctx)}, nil
}

func init() {
Expand Down
10 changes: 5 additions & 5 deletions apps/iis.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ func (r MetricsReceiverIis) Type() string {
return "iis"
}

func (r MetricsReceiverIis) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
func (r MetricsReceiverIis) Pipelines(ctx context.Context) ([]otel.ReceiverPipeline, error) {
if r.ReceiverVersion == "2" {
return []otel.ReceiverPipeline{{
return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "iis",
Config: map[string]interface{}{
Expand Down Expand Up @@ -72,11 +72,11 @@ func (r MetricsReceiverIis) Pipelines(_ context.Context) ([]otel.ReceiverPipelin
),
otel.NormalizeSums(),
}},
}}, nil
}, ctx)}, nil
}

// Return version 1 if version is anything other than 2
return []otel.ReceiverPipeline{{
return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "windowsperfcounters",
Config: map[string]interface{}{
Expand Down Expand Up @@ -144,7 +144,7 @@ func (r MetricsReceiverIis) Pipelines(_ context.Context) ([]otel.ReceiverPipelin
otel.SetScopeVersion("1.0"),
),
}},
}}, nil
}, ctx)}, nil
}

func init() {
Expand Down
6 changes: 3 additions & 3 deletions apps/memcached.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,12 @@ func (r MetricsReceiverMemcached) Type() string {
return "memcached"
}

func (r MetricsReceiverMemcached) Pipelines(_ context.Context) ([]otel.ReceiverPipeline, error) {
func (r MetricsReceiverMemcached) Pipelines(ctx context.Context) ([]otel.ReceiverPipeline, error) {
if r.Endpoint == "" {
r.Endpoint = defaultMemcachedTCPEndpoint
}

return []otel.ReceiverPipeline{{
return []otel.ReceiverPipeline{confgenerator.ConvertToOtlpExporter(otel.ReceiverPipeline{
Receiver: otel.Component{
Type: "memcached",
Config: map[string]interface{}{
Expand All @@ -65,7 +65,7 @@ func (r MetricsReceiverMemcached) Pipelines(_ context.Context) ([]otel.ReceiverP
),
otel.MetricsRemoveServiceAttributes(),
}},
}}, nil
}, ctx)}, nil
}

func init() {
Expand Down
Loading