diff --git a/.github/workflows/component_onhost_e2e.yaml b/.github/workflows/component_onhost_e2e.yaml index 4eea020056..e3d31d6149 100644 --- a/.github/workflows/component_onhost_e2e.yaml +++ b/.github/workflows/component_onhost_e2e.yaml @@ -30,6 +30,7 @@ permissions: env: HOST_E2E_INFRA_AGENT_VERSION: "1.77.1" HOST_E2E_NRDOT_VERSION: "1.17.0" + HOST_E2E_EBPF_AGENT_VERSION: "1.4.3" jobs: build-packages: @@ -81,7 +82,8 @@ jobs: --agent-control-version "0.900.${{ github.run_id }}" \ --recipes-repo-branch "main" \ --infra-agent-version "${{ env.HOST_E2E_INFRA_AGENT_VERSION }}" \ - --nrdot-version "${{ env.HOST_E2E_NRDOT_VERSION }}" + --nrdot-version "${{ env.HOST_E2E_NRDOT_VERSION }}" \ + --ebpf-agent-version "${{ env.HOST_E2E_EBPF_AGENT_VERSION }}" - name: Report test result to New Relic if: always() diff --git a/.github/workflows/on_demand_staging_e2e.yml b/.github/workflows/on_demand_staging_e2e.yml index ad560fb331..0704cf7a54 100644 --- a/.github/workflows/on_demand_staging_e2e.yml +++ b/.github/workflows/on_demand_staging_e2e.yml @@ -13,6 +13,7 @@ permissions: env: HOST_E2E_INFRA_AGENT_VERSION: "1.72.4" HOST_E2E_NRDOT_VERSION: "1.8.0" + HOST_E2E_EBPF_AGENT_VERSION: "1.4.3" jobs: build-packages: @@ -64,7 +65,8 @@ jobs: --agent-control-version "0.600.${{ github.run_id }}" \ --recipes-repo-branch "main" \ --infra-agent-version "${{ env.HOST_E2E_INFRA_AGENT_VERSION }}" \ - --nrdot-version "${{ env.HOST_E2E_NRDOT_VERSION }}" + --nrdot-version "${{ env.HOST_E2E_NRDOT_VERSION }}" \ + --ebpf-agent-version "${{ env.HOST_E2E_EBPF_AGENT_VERSION }}" - name: Report test result to New Relic if: always() diff --git a/agent-control/agent-type-registry/newrelic/host-linux-com.newrelic.ebpf-0.1.0.yaml b/agent-control/agent-type-registry/newrelic/host-linux-com.newrelic.ebpf-0.1.0.yaml index 8cdb47ce9d..0107558c3a 100644 --- a/agent-control/agent-type-registry/newrelic/host-linux-com.newrelic.ebpf-0.1.0.yaml +++ b/agent-control/agent-type-registry/newrelic/host-linux-com.newrelic.ebpf-0.1.0.yaml @@ -11,10 +11,10 @@ variables: type: string required: true OTLP_ENDPOINT: - description: "Endpoint to export data to Newrelic." + description: "Endpoint to export data to New Relic. US: otlp.nr-data.net:443, EU: otlp.eu01.nr-data.net:443, Staging: staging-otlp.nr-data.net:443." type: string required: false - default: otlp.nr-data.net:4317 + default: otlp.nr-data.net:443 LOG_LEVEL: description: "To configure the log level in increasing order of verboseness." type: string @@ -195,6 +195,36 @@ variables: type: string required: false default: "" + PROXY_URL: + description: "Full proxy URL for exporting data to New Relic (format '://:@:'). Empty = no proxy. Maps to NEW_RELIC_PROXY_URL." + type: string + required: false + default: "" + LABELS: + description: "Custom labels applied to all entities. Format 'key1:value1;key2:value2'. Maps to NEW_RELIC_LABELS." + type: string + required: false + default: "" + REPORT_APM_DATA: + description: "eBPF APM data reporting: 'true' (always), 'false' (never), or 'auto' (only if no APM/OTel agent detected)." + type: string + required: false + default: "true" + REPORT_NETWORK_METRICS: + description: "Network metrics reporting: 'true', 'false', or 'auto'." + type: string + required: false + default: "true" + JVM_METRICS_REPORTING: + description: "Enable/disable JVM metrics collection and reporting." + type: string + required: false + default: "true" + REPORT_AI_METRICS: + description: "AI monitoring: 'true' (always), 'false' (never), or 'auto' (only if no APM/OTel agent detected)." + type: string + required: false + default: "false" backoff_delay: description: "seconds until next retry if agent fails to start" type: string @@ -205,55 +235,33 @@ variables: type: bool required: false default: false + oci: + repository: + description: "Package repository name" + type: string + required: false + default: newrelic/ebpf-agent-artifacts + variants: + ac_config_field: "oci_repository_urls" + values: [ "newrelic/ebpf-agent-artifacts" ] + version: + description: "Agent version" + type: string + required: true deployment: enable_file_logging: ${nr-var:enable_file_logging} + packages: + ebpf-agent: + download: + oci: + repository: ${nr-var:oci.repository} + version: ${nr-var:version} + public_key_url: https://publickeys.newrelic.com/g/agent-control-oci/global/nrebpfagent/jwks.json + post_download_hook: + path: /bin/bash + args: + - post_download.sh executables: - - id: nr-ebpf-agent-client - path: /usr/bin/nr-ebpf-agent-client - env: - NEW_RELIC_LICENSE_KEY: "${nr-env:NEW_RELIC_LICENSE_KEY}" - DEPLOYMENT_NAME: "${nr-var:config_agent.DEPLOYMENT_NAME}" - OTLP_ENDPOINT: "${nr-var:config_agent.OTLP_ENDPOINT}" - NEW_RELIC_LOG_LEVEL: "${nr-var:config_agent.LOG_LEVEL}" - NEW_RELIC_LOG_FILE_PATH: "${nr-var:config_agent.LOG_FILE_PATH}" - DROP_DATA_FOR_ENTITY: "${nr-var:config_agent.DROP_DATA_FOR_ENTITY}" - TLS_ENABLED: "${nr-var:config_agent.TLS_ENABLED}" - TLS_AUTOGENERATE_CERT_ENABLED: "${nr-var:config_agent.TLS_AUTOGENERATE_CERT_ENABLED}" - TLS_CERT_PATH: "${nr-var:config_agent.TLS_CERT_PATH}" - TLS_CERT_FILE: "${nr-var:config_agent.TLS_CERT_FILE}" - TLS_KEY_FILE: "${nr-var:config_agent.TLS_KEY_FILE}" - TLS_CA_FILE: "${nr-var:config_agent.TLS_CA_FILE}" - TABLE_STORE_DATA_LIMIT_MB: "${nr-var:config_agent.TABLE_STORE_DATA_LIMIT_MB}" - PROTOCOLS_HTTP_ENABLED: "${nr-var:config_agent.PROTOCOLS_HTTP_ENABLED}" - PROTOCOLS_HTTP_SPANS_ENABLED: "${nr-var:config_agent.PROTOCOLS_HTTP_SPANS_ENABLED}" - PROTOCOLS_HTTP_SPANS_SAMPLING_LATENCY: "${nr-var:config_agent.PROTOCOLS_HTTP_SPANS_SAMPLING_LATENCY}" - PROTOCOLS_HTTP_SPANS_SAMPLING_ERROR_RATE: "${nr-var:config_agent.PROTOCOLS_HTTP_SPANS_SAMPLING_ERROR_RATE}" - PROTOCOLS_MYSQL_ENABLED: "${nr-var:config_agent.PROTOCOLS_MYSQL_ENABLED}" - PROTOCOLS_MYSQL_SPANS_ENABLED: "${nr-var:config_agent.PROTOCOLS_MYSQL_SPANS_ENABLED}" - PROTOCOLS_MYSQL_SPANS_SAMPLING_LATENCY: "${nr-var:config_agent.PROTOCOLS_MYSQL_SPANS_SAMPLING_LATENCY}" - PROTOCOLS_PGSQL_ENABLED: "${nr-var:config_agent.PROTOCOLS_PGSQL_ENABLED}" - PROTOCOLS_PGSQL_SPANS_ENABLED: "${nr-var:config_agent.PROTOCOLS_PGSQL_SPANS_ENABLED}" - PROTOCOLS_PGSQL_SPANS_SAMPLING_LATENCY: "${nr-var:config_agent.PROTOCOLS_PGSQL_SPANS_SAMPLING_LATENCY}" - PROTOCOLS_CASS_ENABLED: "${nr-var:config_agent.PROTOCOLS_CASS_ENABLED}" - PROTOCOLS_CASS_SPANS_ENABLED: "${nr-var:config_agent.PROTOCOLS_CASS_SPANS_ENABLED}" - PROTOCOLS_CASS_SPANS_SAMPLING_LATENCY: "${nr-var:config_agent.PROTOCOLS_CASS_SPANS_SAMPLING_LATENCY}" - PROTOCOLS_REDIS_ENABLED: "${nr-var:config_agent.PROTOCOLS_REDIS_ENABLED}" - PROTOCOLS_REDIS_SPANS_ENABLED: "${nr-var:config_agent.PROTOCOLS_REDIS_SPANS_ENABLED}" - PROTOCOLS_REDIS_SPANS_SAMPLING_LATENCY: "${nr-var:config_agent.PROTOCOLS_REDIS_SPANS_SAMPLING_LATENCY}" - PROTOCOLS_MONGODB_ENABLED: "${nr-var:config_agent.PROTOCOLS_MONGODB_ENABLED}" - PROTOCOLS_MONGODB_SPANS_ENABLED: "${nr-var:config_agent.PROTOCOLS_MONGODB_SPANS_ENABLED}" - PROTOCOLS_MONGODB_SPANS_SAMPLING_LATENCY: "${nr-var:config_agent.PROTOCOLS_MONGODB_SPANS_SAMPLING_LATENCY}" - PROTOCOLS_KAFKA_SPANS_ENABLED: "${nr-var:config_agent.PROTOCOLS_KAFKA_SPANS_ENABLED}" - PROTOCOLS_KAFKA_SPANS_SAMPLING_LATENCY: "${nr-var:config_agent.PROTOCOLS_KAFKA_SPANS_SAMPLING_LATENCY}" - PROTOCOLS_AMQP_SPANS_ENABLED: "${nr-var:config_agent.PROTOCOLS_AMQP_SPANS_ENABLED}" - PROTOCOLS_AMQP_SPANS_SAMPLING_LATENCY: "${nr-var:config_agent.PROTOCOLS_AMQP_SPANS_SAMPLING_LATENCY}" - PROTOCOLS_DNS_ENABLED: "${nr-var:config_agent.PROTOCOLS_DNS_ENABLED}" - PROTOCOLS_DNS_SPANS_ENABLED: "${nr-var:config_agent.PROTOCOLS_DNS_SPANS_ENABLED}" - PROTOCOLS_DNS_SPANS_SAMPLING_LATENCY: "${nr-var:config_agent.PROTOCOLS_DNS_SPANS_SAMPLING_LATENCY}" - restart_policy: - backoff_strategy: - type: fixed - backoff_delay: ${nr-var:backoff_delay} - id: nr-ebpf-agent path: /usr/bin/nr-ebpf-agent env: @@ -296,6 +304,12 @@ deployment: PROTOCOLS_DNS_ENABLED: "${nr-var:config_agent.PROTOCOLS_DNS_ENABLED}" PROTOCOLS_DNS_SPANS_ENABLED: "${nr-var:config_agent.PROTOCOLS_DNS_SPANS_ENABLED}" PROTOCOLS_DNS_SPANS_SAMPLING_LATENCY: "${nr-var:config_agent.PROTOCOLS_DNS_SPANS_SAMPLING_LATENCY}" + NEW_RELIC_PROXY_URL: "${nr-var:config_agent.PROXY_URL}" + NEW_RELIC_LABELS: "${nr-var:config_agent.LABELS}" + REPORT_APM_DATA: "${nr-var:config_agent.REPORT_APM_DATA}" + REPORT_NETWORK_METRICS: "${nr-var:config_agent.REPORT_NETWORK_METRICS}" + JVM_METRICS_REPORTING: "${nr-var:config_agent.JVM_METRICS_REPORTING}" + REPORT_AI_METRICS: "${nr-var:config_agent.REPORT_AI_METRICS}" restart_policy: backoff_strategy: type: fixed diff --git a/test/e2e-runner/src/common.rs b/test/e2e-runner/src/common.rs index acc5739012..e7c3d3c99e 100644 --- a/test/e2e-runner/src/common.rs +++ b/test/e2e-runner/src/common.rs @@ -89,6 +89,10 @@ pub struct InstallationArgs { /// Version of the NRDot OCI image to use in tests #[arg(long)] pub nrdot_version: Option, + + /// Version of the eBPF agent OCI image to use in tests + #[arg(long)] + pub ebpf_agent_version: Option, } /// Arguments for Fleet Control scenarios that also install Agent Control diff --git a/test/e2e-runner/src/linux/scenarios/ebpf_agent.rs b/test/e2e-runner/src/linux/scenarios/ebpf_agent.rs index 0d0f369a24..c94cb12400 100644 --- a/test/e2e-runner/src/linux/scenarios/ebpf_agent.rs +++ b/test/e2e-runner/src/linux/scenarios/ebpf_agent.rs @@ -21,6 +21,11 @@ pub fn test_ebpf_agent(args: InstallationArgs) { .clone() .expect("--infra-agent-version is required for this scenario"); + let ebpf_version = args + .ebpf_agent_version + .clone() + .expect("--ebpf-agent-version is required for this scenario"); + let staging = args.nr_region == Region::Staging; let recipe_data = RecipeData { @@ -59,6 +64,7 @@ agents: config_agent: DEPLOYMENT_NAME: {test_id} OTLP_ENDPOINT: staging-otlp.nr-data.net:443 +version: {ebpf_version} "# ) } else { @@ -66,6 +72,7 @@ config_agent: r#" config_agent: DEPLOYMENT_NAME: {test_id} +version: {ebpf_version} "# ) };