├── .dockerignore ├── .drone ├── README.md ├── drone.jsonnet ├── drone.yml ├── pipelines │ ├── check_containers.jsonnet │ ├── crosscompile.jsonnet │ └── test.jsonnet └── util │ ├── build_image.jsonnet │ ├── pipelines.jsonnet │ └── secrets.jsonnet ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yaml │ ├── community_component_proposal.yaml │ ├── config.yml │ ├── docs.yaml │ ├── feature_request.yaml │ └── proposal.yaml ├── actions │ └── homebrew-bump-formula │ │ ├── Formula │ │ ├── test-formula-git-revision.rb │ │ ├── test-formula-pypi-url.rb │ │ └── test-formula-url.rb │ │ ├── LICENSE │ │ ├── README.md │ │ ├── action.yml │ │ ├── bump-formula-pr.rb.patch │ │ └── main.rb ├── depcheck.yml ├── pull_request_template.md ├── renovate.json5 └── workflows │ ├── autolock.yml │ ├── backport.yml │ ├── build.yml │ ├── bump-formula-pr.yml │ ├── check-linux-build-image.yml │ ├── check-linux-container.yml │ ├── check-versioned-files.yml │ ├── check-windows-build-image.yml │ ├── check-windows-container.yml │ ├── check_docs.yml │ ├── create_build_image.yml │ ├── depcheck.yml │ ├── deploy-pr-preview.yml │ ├── docker-images.yml │ ├── fuzz-go-pr.yml │ ├── fuzz-go-scheduled.yml │ ├── fuzz-go.yml │ ├── helm-release.yml │ ├── helm-test.yml │ ├── integration-tests.yml │ ├── lint.yml │ ├── needs-attention.yml │ ├── publish-alloy-devel.yml │ ├── publish-alloy-linux.yml │ ├── publish-alloy-release.yml │ ├── publish-alloy-windows.yml │ ├── publish-documentation-next.yml │ ├── publish-technical-documentation-release.yml │ ├── snyk.yml │ ├── test_full.yml │ ├── test_linux_system_packages.yml │ ├── test_mac.yml │ ├── test_pr.yml │ ├── test_windows.yml │ ├── trivy.yml │ └── update-make-docs.yml ├── .gitignore ├── .golangci.yml ├── CHANGELOG.md ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── Dockerfile ├── Dockerfile.windows ├── GOVERNANCE.md ├── LICENSE ├── LICENSING.md ├── MAINTAINERS.md ├── Makefile ├── README.md ├── SECURITY.md ├── VERSION ├── docs ├── Makefile ├── README.md ├── design │ ├── 1161-standardize-stdlib.md │ ├── 1443-dynamic-pipelines.md │ ├── 908-proposal-process.md │ ├── README.md │ └── template.md ├── developer │ ├── add-otel-component.md │ ├── adding-community-components.md │ ├── breaking-changes.md │ ├── contributing.md │ ├── release │ │ ├── 00-ensure-otel-dep-updated.md │ │ ├── 01-create-release-branch.md │ │ ├── 02-update-version-in-code.md │ │ ├── 03-tag-release.md │ │ ├── 04-publish-release.md │ │ ├── 05-test-release.md │ │ ├── 06-update-helm-charts.md │ │ ├── 07-update-homebrew.md │ │ ├── 08-announce-release.md │ │ ├── README.md │ │ └── concepts │ │ │ └── version.md │ ├── updating-otel │ │ ├── README.md │ │ └── k6-trace-gen │ │ │ └── docker-compose.yaml │ ├── windows │ │ └── certificate_store │ │ │ ├── README.md │ │ │ └── images │ │ │ ├── additional_services.png │ │ │ ├── addroles.png │ │ │ ├── any_purpose.png │ │ │ ├── availability.png │ │ │ ├── certificate_authority_click.png │ │ │ ├── certificate_templates.png │ │ │ ├── certificateservices.png │ │ │ ├── common_name.png │ │ │ ├── config.png │ │ │ ├── configure_certificate_authority.png │ │ │ ├── default_certificate.png │ │ │ ├── default_identity.png │ │ │ ├── default_private_ky.png │ │ │ ├── enterprise_ca.png │ │ │ ├── export_private_key.png │ │ │ ├── exportable_key.png │ │ │ ├── give_control.png │ │ │ ├── initial.png │ │ │ ├── manage.png │ │ │ ├── new_cert.png │ │ │ ├── new_cert_exportable.png │ │ │ ├── object_identifier.png │ │ │ ├── private_key.png │ │ │ ├── root_ca.png │ │ │ ├── template_general.png │ │ │ └── validity.png │ ├── writing-component-documentation.md │ ├── writing-docs.md │ └── writing-exporter-components.md ├── docs.mk ├── make-docs ├── sources │ ├── _index.md │ ├── _index.md.t │ ├── assets │ │ ├── alloy_icon_orange.svg │ │ ├── alloy_screenshot.png │ │ ├── logo_alloy_dark.svg │ │ └── logo_alloy_light.svg │ ├── collect │ │ ├── _index.md │ │ ├── choose-component.md │ │ ├── datadog-traces-metrics.md │ │ ├── ecs-opentelemetry-data.md │ │ ├── logs-in-kubernetes.md │ │ ├── metamonitoring.md │ │ ├── opentelemetry-data.md │ │ ├── opentelemetry-to-lgtm-stack.md │ │ └── prometheus-metrics.md │ ├── configure │ │ ├── _index.md │ │ ├── clustering │ │ │ ├── _index.md │ │ │ └── distribute-prometheus-scrape-load.md │ │ ├── kubernetes.md │ │ ├── linux.md │ │ ├── macos.md │ │ ├── nonroot.md │ │ └── windows.md │ ├── data-collection.md │ ├── get-started │ │ ├── _index.md │ │ ├── clustering.md │ │ ├── community_components.md │ │ ├── component_controller.md │ │ ├── components.md │ │ ├── configuration-syntax │ │ │ ├── _index.md │ │ │ ├── components.md │ │ │ ├── expressions │ │ │ │ ├── _index.md │ │ │ │ ├── function_calls.md │ │ │ │ ├── operators.md │ │ │ │ ├── referencing_exports.md │ │ │ │ └── types_and_values.md │ │ │ ├── files.md │ │ │ └── syntax.md │ │ ├── custom_components.md │ │ └── modules.md │ ├── introduction │ │ ├── _index.md │ │ ├── backward-compatibility.md │ │ ├── estimate-resource-usage.md │ │ ├── release-cadence.md │ │ └── supported-platforms.md │ ├── monitor │ │ ├── _index.md │ │ ├── monitor-docker-containers.md │ │ ├── monitor-kubernetes-logs.md │ │ ├── monitor-linux.md │ │ ├── monitor-logs-from-file.md │ │ ├── monitor-logs-over-tcp.md │ │ ├── monitor-structured-logs.md │ │ ├── monitor-syslog-messages.md │ │ └── monitor-windows.md │ ├── reference │ │ ├── _index.md │ │ ├── cli │ │ │ ├── _index.md │ │ │ ├── convert.md │ │ │ ├── environment-variables.md │ │ │ ├── fmt.md │ │ │ ├── run.md │ │ │ ├── tools.md │ │ │ └── validate.md │ │ ├── compatibility │ │ │ └── _index.md │ │ ├── components │ │ │ ├── _index.md │ │ │ ├── beyla │ │ │ │ ├── _index.md │ │ │ │ └── beyla.ebpf.md │ │ │ ├── database_observability │ │ │ │ ├── _index.md │ │ │ │ └── database_observability.mysql.md │ │ │ ├── discovery │ │ │ │ ├── _index.md │ │ │ │ ├── discovery.azure.md │ │ │ │ ├── discovery.consul.md │ │ │ │ ├── discovery.consulagent.md │ │ │ │ ├── discovery.digitalocean.md │ │ │ │ ├── discovery.dns.md │ │ │ │ ├── discovery.docker.md │ │ │ │ ├── discovery.dockerswarm.md │ │ │ │ ├── discovery.ec2.md │ │ │ │ ├── discovery.eureka.md │ │ │ │ ├── discovery.file.md │ │ │ │ ├── discovery.gce.md │ │ │ │ ├── discovery.hetzner.md │ │ │ │ ├── discovery.http.md │ │ │ │ ├── discovery.ionos.md │ │ │ │ ├── discovery.kubelet.md │ │ │ │ ├── discovery.kubernetes.md │ │ │ │ ├── discovery.kuma.md │ │ │ │ ├── discovery.lightsail.md │ │ │ │ ├── discovery.linode.md │ │ │ │ ├── discovery.marathon.md │ │ │ │ ├── discovery.nerve.md │ │ │ │ ├── discovery.nomad.md │ │ │ │ ├── discovery.openstack.md │ │ │ │ ├── discovery.ovhcloud.md │ │ │ │ ├── discovery.process.md │ │ │ │ ├── discovery.puppetdb.md │ │ │ │ ├── discovery.relabel.md │ │ │ │ ├── discovery.scaleway.md │ │ │ │ ├── discovery.serverset.md │ │ │ │ ├── discovery.triton.md │ │ │ │ └── discovery.uyuni.md │ │ │ ├── faro │ │ │ │ ├── _index.md │ │ │ │ └── faro.receiver.md │ │ │ ├── local │ │ │ │ ├── _index.md │ │ │ │ ├── local.file.md │ │ │ │ └── local.file_match.md │ │ │ ├── loki │ │ │ │ ├── _index.md │ │ │ │ ├── loki.echo.md │ │ │ │ ├── loki.enrich.md │ │ │ │ ├── loki.process.md │ │ │ │ ├── loki.relabel.md │ │ │ │ ├── loki.rules.kubernetes.md │ │ │ │ ├── loki.secretfilter.md │ │ │ │ ├── loki.source.api.md │ │ │ │ ├── loki.source.awsfirehose.md │ │ │ │ ├── loki.source.azure_event_hubs.md │ │ │ │ ├── loki.source.cloudflare.md │ │ │ │ ├── loki.source.docker.md │ │ │ │ ├── loki.source.file.md │ │ │ │ ├── loki.source.gcplog.md │ │ │ │ ├── loki.source.gelf.md │ │ │ │ ├── loki.source.heroku.md │ │ │ │ ├── loki.source.journal.md │ │ │ │ ├── loki.source.kafka.md │ │ │ │ ├── loki.source.kubernetes.md │ │ │ │ ├── loki.source.kubernetes_events.md │ │ │ │ ├── loki.source.podlogs.md │ │ │ │ ├── loki.source.syslog.md │ │ │ │ ├── loki.source.windowsevent.md │ │ │ │ └── loki.write.md │ │ │ ├── mimir │ │ │ │ ├── _index.md │ │ │ │ └── mimir.rules.kubernetes.md │ │ │ ├── otelcol │ │ │ │ ├── _index.md │ │ │ │ ├── otelcol.auth.basic.md │ │ │ │ ├── otelcol.auth.bearer.md │ │ │ │ ├── otelcol.auth.headers.md │ │ │ │ ├── otelcol.auth.oauth2.md │ │ │ │ ├── otelcol.auth.sigv4.md │ │ │ │ ├── otelcol.connector.host_info.md │ │ │ │ ├── otelcol.connector.servicegraph.md │ │ │ │ ├── otelcol.connector.spanlogs.md │ │ │ │ ├── otelcol.connector.spanmetrics.md │ │ │ │ ├── otelcol.exporter.awss3.md │ │ │ │ ├── otelcol.exporter.datadog.md │ │ │ │ ├── otelcol.exporter.debug.md │ │ │ │ ├── otelcol.exporter.googlecloud.md │ │ │ │ ├── otelcol.exporter.kafka.md │ │ │ │ ├── otelcol.exporter.loadbalancing.md │ │ │ │ ├── otelcol.exporter.loki.md │ │ │ │ ├── otelcol.exporter.otlp.md │ │ │ │ ├── otelcol.exporter.otlphttp.md │ │ │ │ ├── otelcol.exporter.prometheus.md │ │ │ │ ├── otelcol.exporter.splunkhec.md │ │ │ │ ├── otelcol.exporter.syslog.md │ │ │ │ ├── otelcol.extension.jaeger_remote_sampling.md │ │ │ │ ├── otelcol.processor.attributes.md │ │ │ │ ├── otelcol.processor.batch.md │ │ │ │ ├── otelcol.processor.cumulativetodelta.md │ │ │ │ ├── otelcol.processor.deltatocumulative.md │ │ │ │ ├── otelcol.processor.discovery.md │ │ │ │ ├── otelcol.processor.filter.md │ │ │ │ ├── otelcol.processor.groupbyattrs.md │ │ │ │ ├── otelcol.processor.interval.md │ │ │ │ ├── otelcol.processor.k8sattributes.md │ │ │ │ ├── otelcol.processor.memory_limiter.md │ │ │ │ ├── otelcol.processor.probabilistic_sampler.md │ │ │ │ ├── otelcol.processor.resourcedetection.md │ │ │ │ ├── otelcol.processor.span.md │ │ │ │ ├── otelcol.processor.tail_sampling.md │ │ │ │ ├── otelcol.processor.transform.md │ │ │ │ ├── otelcol.receiver.awscloudwatch.md │ │ │ │ ├── otelcol.receiver.datadog.md │ │ │ │ ├── otelcol.receiver.file_stats.md │ │ │ │ ├── otelcol.receiver.filelog.md │ │ │ │ ├── otelcol.receiver.influxdb.md │ │ │ │ ├── otelcol.receiver.jaeger.md │ │ │ │ ├── otelcol.receiver.kafka.md │ │ │ │ ├── otelcol.receiver.loki.md │ │ │ │ ├── otelcol.receiver.opencensus.md │ │ │ │ ├── otelcol.receiver.otlp.md │ │ │ │ ├── otelcol.receiver.prometheus.md │ │ │ │ ├── otelcol.receiver.solace.md │ │ │ │ ├── otelcol.receiver.splunkhec.md │ │ │ │ ├── otelcol.receiver.syslog.md │ │ │ │ ├── otelcol.receiver.tcplog.md │ │ │ │ ├── otelcol.receiver.vcenter.md │ │ │ │ ├── otelcol.receiver.zipkin.md │ │ │ │ └── otelcol.storage.file.md │ │ │ ├── prometheus │ │ │ │ ├── _index.md │ │ │ │ ├── prometheus.exporter.apache.md │ │ │ │ ├── prometheus.exporter.azure.md │ │ │ │ ├── prometheus.exporter.blackbox.md │ │ │ │ ├── prometheus.exporter.cadvisor.md │ │ │ │ ├── prometheus.exporter.catchpoint.md │ │ │ │ ├── prometheus.exporter.cloudwatch.md │ │ │ │ ├── prometheus.exporter.consul.md │ │ │ │ ├── prometheus.exporter.dnsmasq.md │ │ │ │ ├── prometheus.exporter.elasticsearch.md │ │ │ │ ├── prometheus.exporter.gcp.md │ │ │ │ ├── prometheus.exporter.github.md │ │ │ │ ├── prometheus.exporter.kafka.md │ │ │ │ ├── prometheus.exporter.memcached.md │ │ │ │ ├── prometheus.exporter.mongodb.md │ │ │ │ ├── prometheus.exporter.mssql.md │ │ │ │ ├── prometheus.exporter.mysql.md │ │ │ │ ├── prometheus.exporter.oracledb.md │ │ │ │ ├── prometheus.exporter.postgres.md │ │ │ │ ├── prometheus.exporter.process.md │ │ │ │ ├── prometheus.exporter.redis.md │ │ │ │ ├── prometheus.exporter.self.md │ │ │ │ ├── prometheus.exporter.snmp.md │ │ │ │ ├── prometheus.exporter.snowflake.md │ │ │ │ ├── prometheus.exporter.squid.md │ │ │ │ ├── prometheus.exporter.statsd.md │ │ │ │ ├── prometheus.exporter.unix.md │ │ │ │ ├── prometheus.exporter.windows.md │ │ │ │ ├── prometheus.operator.podmonitors.md │ │ │ │ ├── prometheus.operator.probes.md │ │ │ │ ├── prometheus.operator.scrapeconfigs.md │ │ │ │ ├── prometheus.operator.servicemonitors.md │ │ │ │ ├── prometheus.receive_http.md │ │ │ │ ├── prometheus.relabel.md │ │ │ │ ├── prometheus.remote_write.md │ │ │ │ ├── prometheus.scrape.md │ │ │ │ └── prometheus.write.queue.md │ │ │ ├── pyroscope │ │ │ │ ├── _index.md │ │ │ │ ├── pyroscope.ebpf.md │ │ │ │ ├── pyroscope.java.md │ │ │ │ ├── pyroscope.receive_http.md │ │ │ │ ├── pyroscope.relabel.md │ │ │ │ ├── pyroscope.scrape.md │ │ │ │ └── pyroscope.write.md │ │ │ └── remote │ │ │ │ ├── _index.md │ │ │ │ ├── remote.http.md │ │ │ │ ├── remote.kubernetes.configmap.md │ │ │ │ ├── remote.kubernetes.secret.md │ │ │ │ ├── remote.s3.md │ │ │ │ └── remote.vault.md │ │ ├── config-blocks │ │ │ ├── _index.md │ │ │ ├── argument.md │ │ │ ├── declare.md │ │ │ ├── export.md │ │ │ ├── foreach.md │ │ │ ├── http.md │ │ │ ├── import.file.md │ │ │ ├── import.git.md │ │ │ ├── import.http.md │ │ │ ├── import.string.md │ │ │ ├── livedebugging.md │ │ │ ├── logging.md │ │ │ ├── remotecfg.md │ │ │ └── tracing.md │ │ ├── http │ │ │ └── _index.md │ │ └── stdlib │ │ │ ├── _index.md │ │ │ ├── array.md │ │ │ ├── coalesce.md │ │ │ ├── constants.md │ │ │ ├── convert.md │ │ │ ├── encoding.md │ │ │ ├── file.md │ │ │ ├── json_path.md │ │ │ ├── string.md │ │ │ └── sys.md │ ├── release-notes.md │ ├── set-up │ │ ├── _index.md │ │ ├── deploy.md │ │ ├── install │ │ │ ├── _index.md │ │ │ ├── ansible.md │ │ │ ├── binary.md │ │ │ ├── chef.md │ │ │ ├── docker.md │ │ │ ├── kubernetes.md │ │ │ ├── linux.md │ │ │ ├── macos.md │ │ │ ├── openshift.md │ │ │ ├── puppet.md │ │ │ └── windows.md │ │ ├── migrate │ │ │ ├── _index.md │ │ │ ├── from-flow.md │ │ │ ├── from-operator.md │ │ │ ├── from-otelcol.md │ │ │ ├── from-prometheus.md │ │ │ ├── from-promtail.md │ │ │ └── from-static.md │ │ └── run │ │ │ ├── _index.md │ │ │ ├── binary.md │ │ │ ├── linux.md │ │ │ ├── macos.md │ │ │ └── windows.md │ ├── shared │ │ ├── agent-deprecation.md │ │ ├── index.md │ │ ├── reference │ │ │ └── components │ │ │ │ ├── authorization-block.md │ │ │ │ ├── azure-managed_identity-block.md │ │ │ │ ├── azure-oauth-block.md │ │ │ │ ├── azuread-block.md │ │ │ │ ├── azuread-sdk.md │ │ │ │ ├── basic-auth-block.md │ │ │ │ ├── exporter-component-exports.md │ │ │ │ ├── extract-field-block.md │ │ │ │ ├── field-filter-block.md │ │ │ │ ├── http-client-config-block.md │ │ │ │ ├── http-client-proxy-config-description.md │ │ │ │ ├── local-file-arguments-text.md │ │ │ │ ├── loki-server-grpc.md │ │ │ │ ├── loki-server-http.md │ │ │ │ ├── match-properties-block.md │ │ │ │ ├── oauth2-block.md │ │ │ │ ├── otelcol-compression-field.md │ │ │ │ ├── otelcol-debug-metrics-block.md │ │ │ │ ├── otelcol-filter-attribute-block.md │ │ │ │ ├── otelcol-filter-library-block.md │ │ │ │ ├── otelcol-filter-log-severity-block.md │ │ │ │ ├── otelcol-filter-regexp-block.md │ │ │ │ ├── otelcol-filter-resource-block.md │ │ │ │ ├── otelcol-grpc-authority.md │ │ │ │ ├── otelcol-grpc-balancer-name.md │ │ │ │ ├── otelcol-kafka-authentication-kerberos.md │ │ │ │ ├── otelcol-kafka-authentication-plaintext.md │ │ │ │ ├── otelcol-kafka-authentication-sasl-aws_msk.md │ │ │ │ ├── otelcol-kafka-authentication-sasl.md │ │ │ │ ├── otelcol-kafka-authentication.md │ │ │ │ ├── otelcol-kafka-metadata-retry.md │ │ │ │ ├── otelcol-kafka-metadata.md │ │ │ │ ├── otelcol-queue-block.md │ │ │ │ ├── otelcol-retry-block.md │ │ │ │ ├── otelcol-tls-client-block.md │ │ │ │ ├── otelcol-tls-server-block.md │ │ │ │ ├── output-block-logs.md │ │ │ │ ├── output-block-metrics.md │ │ │ │ ├── output-block-traces.md │ │ │ │ ├── output-block.md │ │ │ │ ├── prom-operator-scrape.md │ │ │ │ ├── rule-block-logs.md │ │ │ │ ├── rule-block.md │ │ │ │ ├── sigv4-block.md │ │ │ │ ├── tls-config-block.md │ │ │ │ └── write_relabel_config.md │ │ └── stability │ │ │ ├── community.md │ │ │ ├── experimental.md │ │ │ ├── experimental_feature.md │ │ │ └── public_preview.md │ ├── troubleshoot │ │ ├── _index.md │ │ ├── component_metrics.md │ │ ├── controller_metrics.md │ │ ├── debug.md │ │ ├── profile.md │ │ └── support_bundle.md │ └── tutorials │ │ ├── _index.md │ │ ├── first-components-and-stdlib.md │ │ ├── logs-and-relabeling-basics.md │ │ ├── processing-logs.md │ │ ├── send-logs-to-loki.md │ │ └── send-metrics-to-prometheus.md └── variables.mk ├── example-config.alloy ├── example ├── .gitignore ├── README.md ├── compose.yaml ├── config │ ├── alloy │ │ └── config.alloy │ ├── grafana │ │ ├── datasources │ │ │ └── datasource.yml │ │ └── grafana.ini │ ├── mimir │ │ └── mimir.yaml │ └── tempo │ │ └── tempo.yaml ├── databases.yaml ├── grafana.yaml └── images │ ├── grizzly │ └── Dockerfile │ └── jb │ └── Dockerfile ├── fallback_version.go ├── fallback_version_test.go ├── go.mod ├── go.sum ├── internal ├── alloycli │ ├── alloycli.go │ ├── automemlimit_cgroups_unsupported.go │ ├── automemlimit_linux.go │ ├── automemlimit_nonlinux_test.go │ ├── cluster_builder.go │ ├── cluster_builder_test.go │ ├── cmd_convert.go │ ├── cmd_convert_test.go │ ├── cmd_fmt.go │ ├── cmd_run.go │ ├── cmd_run_test.go │ ├── cmd_tools.go │ ├── cmd_validate.go │ └── resources_collector.go ├── alloyseed │ ├── alloyseed.go │ └── alloyseed_test.go ├── boringcrypto │ ├── disabled.go │ └── enabled.go ├── build │ ├── build.go │ └── build_test.go ├── cmd │ ├── alloy-service │ │ ├── config_windows.go │ │ ├── doc.go │ │ ├── logger_windows.go │ │ ├── main_windows.go │ │ ├── service.go │ │ ├── service_test.go │ │ └── testdata │ │ │ └── example_service.go │ ├── alloylint │ │ ├── internal │ │ │ ├── findcomponents │ │ │ │ └── findcomponents.go │ │ │ └── syntaxtags │ │ │ │ └── syntaxtags.go │ │ └── main.go │ ├── integration-tests │ │ ├── README.md │ │ ├── common │ │ │ ├── common.go │ │ │ ├── log.go │ │ │ ├── logs_assert.go │ │ │ ├── metric.go │ │ │ └── metrics_assert.go │ │ ├── configs │ │ │ ├── kafka │ │ │ │ ├── Dockerfile │ │ │ │ └── main.go │ │ │ ├── mimir │ │ │ │ └── mimir.yaml │ │ │ ├── otel-gen │ │ │ │ ├── Dockerfile │ │ │ │ └── main.go │ │ │ ├── prom-gen │ │ │ │ ├── Dockerfile │ │ │ │ └── main.go │ │ │ └── tempo │ │ │ │ └── tempo.yaml │ │ ├── docker-compose.yaml │ │ ├── main.go │ │ ├── tests │ │ │ ├── beyla │ │ │ │ ├── beyla_test.go │ │ │ │ └── config.alloy │ │ │ ├── blackbox │ │ │ │ ├── blackbox_metrics_test.go │ │ │ │ └── config.alloy │ │ │ ├── kafka │ │ │ │ ├── config.alloy │ │ │ │ └── kafka_metrics_test.go │ │ │ ├── loki-enrich │ │ │ │ ├── config.alloy │ │ │ │ ├── devices.json │ │ │ │ └── enrich_test.go │ │ │ ├── otlp-metrics │ │ │ │ ├── config.alloy │ │ │ │ ├── otlp_alloy_integration_metrics_test.go │ │ │ │ ├── otlp_metrics_test.go │ │ │ │ └── otlp_to_prom_metrics_test.go │ │ │ ├── read-log-file │ │ │ │ ├── config.alloy │ │ │ │ ├── logs.txt │ │ │ │ └── read_log_file_test.go │ │ │ ├── redis │ │ │ │ ├── config.alloy │ │ │ │ └── redis_metrics_test.go │ │ │ ├── scrape-prom-metrics │ │ │ │ ├── config.alloy │ │ │ │ ├── scrape_prom_metrics_test.go │ │ │ │ └── scrape_prom_metrics_to_otlp_test.go │ │ │ ├── snmp │ │ │ │ ├── config.alloy │ │ │ │ └── snmp_metrics_test.go │ │ │ └── unix │ │ │ │ ├── config.alloy │ │ │ │ └── unix_metrics_test.go │ │ └── utils.go │ └── listcomponents │ │ └── main.go ├── component │ ├── all │ │ ├── all.go │ │ └── all_test.go │ ├── beyla │ │ └── ebpf │ │ │ ├── args.go │ │ │ ├── beyla_linux.go │ │ │ ├── beyla_linux_test.go │ │ │ └── beyla_placeholder.go │ ├── common │ │ ├── config │ │ │ ├── selectors.go │ │ │ ├── types.go │ │ │ └── types_test.go │ │ ├── kubernetes │ │ │ ├── event.go │ │ │ ├── kubernetes.go │ │ │ ├── kubernetes_test.go │ │ │ ├── mimir_rule_group_diff.go │ │ │ ├── mimir_rule_group_diff_test.go │ │ │ ├── prometheus_rule_group_diff.go │ │ │ ├── prometheus_rule_group_diff_test.go │ │ │ ├── rules.go │ │ │ └── rules_test.go │ │ ├── loki │ │ │ ├── client │ │ │ │ ├── batch.go │ │ │ │ ├── batch_test.go │ │ │ │ ├── client.go │ │ │ │ ├── client_test.go │ │ │ │ ├── config.go │ │ │ │ ├── config_test.go │ │ │ │ ├── fake │ │ │ │ │ └── client.go │ │ │ │ ├── internal │ │ │ │ │ ├── marker_encoding.go │ │ │ │ │ ├── marker_encoding_test.go │ │ │ │ │ ├── marker_file_handler.go │ │ │ │ │ ├── marker_file_handler_test.go │ │ │ │ │ ├── marker_handler.go │ │ │ │ │ ├── marker_handler_test.go │ │ │ │ │ └── metrics.go │ │ │ │ ├── logger.go │ │ │ │ ├── logger_test.go │ │ │ │ ├── manager.go │ │ │ │ ├── manager_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── queue_client.go │ │ │ │ └── queue_client_test.go │ │ │ ├── limit │ │ │ │ └── config.go │ │ │ ├── positions │ │ │ │ ├── positions.go │ │ │ │ ├── positions_test.go │ │ │ │ ├── write_positions_unix.go │ │ │ │ └── write_positions_windows.go │ │ │ ├── types.go │ │ │ ├── utils │ │ │ │ ├── convert.go │ │ │ │ ├── fs_errors.go │ │ │ │ ├── remotewrite_server.go │ │ │ │ └── sync.go │ │ │ └── wal │ │ │ │ ├── config.go │ │ │ │ ├── internal │ │ │ │ └── watcher_state.go │ │ │ │ ├── reader.go │ │ │ │ ├── timer.go │ │ │ │ ├── timer_test.go │ │ │ │ ├── wal.go │ │ │ │ ├── watcher.go │ │ │ │ ├── watcher_metrics.go │ │ │ │ ├── watcher_test.go │ │ │ │ ├── writer.go │ │ │ │ └── writer_test.go │ │ ├── net │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── server.go │ │ │ └── server_test.go │ │ └── relabel │ │ │ ├── label_builder.go │ │ │ ├── relabel.go │ │ │ └── relabel_test.go │ ├── component.go │ ├── component_health.go │ ├── component_health_test.go │ ├── component_provider.go │ ├── database_observability │ │ ├── README.md │ │ ├── database_observability.go │ │ └── mysql │ │ │ ├── collector │ │ │ ├── connection_info.go │ │ │ ├── connection_info_test.go │ │ │ ├── loki_entry.go │ │ │ ├── loki_entry_test.go │ │ │ ├── parser │ │ │ │ ├── mock_parser.go │ │ │ │ ├── parser.go │ │ │ │ ├── parser_tidb.go │ │ │ │ └── parser_tidb_test.go │ │ │ ├── query_sample.go │ │ │ ├── query_sample_test.go │ │ │ ├── query_tables.go │ │ │ ├── query_tables_test.go │ │ │ ├── schema_table.go │ │ │ ├── schema_table_test.go │ │ │ ├── setup_consumers.go │ │ │ └── setup_consumers_test.go │ │ │ ├── component.go │ │ │ └── component_test.go │ ├── discovery │ │ ├── aws │ │ │ ├── ec2.go │ │ │ ├── ec2_test.go │ │ │ └── lightsail.go │ │ ├── azure │ │ │ ├── azure.go │ │ │ └── azure_test.go │ │ ├── consul │ │ │ ├── consul.go │ │ │ └── consul_test.go │ │ ├── consulagent │ │ │ ├── consulagent.go │ │ │ ├── consulagent_metrics.go │ │ │ ├── consulagent_test.go │ │ │ ├── promtail_consulagent.go │ │ │ └── promtail_consulagent_test.go │ │ ├── digitalocean │ │ │ ├── digitalocean.go │ │ │ └── digitalocean_test.go │ │ ├── discovery.go │ │ ├── discovery_metrics.go │ │ ├── discovery_test.go │ │ ├── distributed_targets.go │ │ ├── distributed_targets_test.go │ │ ├── dns │ │ │ ├── dns.go │ │ │ └── dns_test.go │ │ ├── docker │ │ │ ├── docker.go │ │ │ └── docker_test.go │ │ ├── dockerswarm │ │ │ ├── dockerswarm.go │ │ │ └── dockerswarm_test.go │ │ ├── eureka │ │ │ ├── eureka.go │ │ │ └── eureka_test.go │ │ ├── file │ │ │ ├── file.go │ │ │ └── file_test.go │ │ ├── gce │ │ │ ├── gce.go │ │ │ └── gce_test.go │ │ ├── hetzner │ │ │ ├── hetzner.go │ │ │ └── hetzner_test.go │ │ ├── http │ │ │ ├── http.go │ │ │ └── http_test.go │ │ ├── ionos │ │ │ ├── ionos.go │ │ │ └── ionos_test.go │ │ ├── kubelet │ │ │ ├── discoverer_config.go │ │ │ ├── kubelet.go │ │ │ └── kubelet_test.go │ │ ├── kubernetes │ │ │ ├── kubernetes.go │ │ │ └── kubernetes_test.go │ │ ├── kuma │ │ │ ├── kuma.go │ │ │ └── kuma_test.go │ │ ├── linode │ │ │ ├── linode.go │ │ │ └── linode_test.go │ │ ├── marathon │ │ │ ├── marathon.go │ │ │ └── marathon_test.go │ │ ├── nerve │ │ │ ├── nerve.go │ │ │ └── nerve_test.go │ │ ├── nomad │ │ │ ├── nomad.go │ │ │ └── nomad_test.go │ │ ├── openstack │ │ │ ├── openstack.go │ │ │ └── openstack_test.go │ │ ├── ovhcloud │ │ │ ├── ovhcloud.go │ │ │ └── ovhcloud_test.go │ │ ├── process │ │ │ ├── args.go │ │ │ ├── cgroup.go │ │ │ ├── cgroup_test.go │ │ │ ├── container.go │ │ │ ├── container_test.go │ │ │ ├── discover.go │ │ │ ├── join.go │ │ │ ├── join_test.go │ │ │ ├── process.go │ │ │ └── process_stub.go │ │ ├── puppetdb │ │ │ ├── puppetdb.go │ │ │ └── puppetdb_test.go │ │ ├── relabel │ │ │ ├── relabel.go │ │ │ └── relabel_test.go │ │ ├── scaleway │ │ │ ├── scaleway.go │ │ │ └── scaleway_test.go │ │ ├── serverset │ │ │ ├── serverset.go │ │ │ └── serverset_test.go │ │ ├── target.go │ │ ├── target_builder.go │ │ ├── target_builder_test.go │ │ ├── target_test.go │ │ ├── triton │ │ │ ├── triton.go │ │ │ └── triton_test.go │ │ └── uyuni │ │ │ ├── uyuni.go │ │ │ └── uyuni_test.go │ ├── faro │ │ └── receiver │ │ │ ├── arguments.go │ │ │ ├── exporters.go │ │ │ ├── exporters_test.go │ │ │ ├── handler.go │ │ │ ├── handler_test.go │ │ │ ├── internal │ │ │ └── payload │ │ │ │ ├── payload.go │ │ │ │ ├── payload_test.go │ │ │ │ └── utils.go │ │ │ ├── receiver.go │ │ │ ├── receiver_otelcol_test.go │ │ │ ├── receiver_test.go │ │ │ ├── server.go │ │ │ ├── sourcemaps.go │ │ │ ├── sourcemaps_test.go │ │ │ └── testdata │ │ │ ├── foo.js │ │ │ ├── foo.js.map │ │ │ ├── payload.json │ │ │ └── payload_2.json │ ├── local │ │ ├── file │ │ │ ├── file.go │ │ │ └── file_test.go │ │ └── file_match │ │ │ ├── file.go │ │ │ ├── file_test.go │ │ │ └── watch.go │ ├── loki │ │ ├── echo │ │ │ └── echo.go │ │ ├── enrich │ │ │ ├── enrich.go │ │ │ └── enrich_test.go │ │ ├── process │ │ │ ├── metric │ │ │ │ ├── counters.go │ │ │ │ ├── counters_test.go │ │ │ │ ├── gauges.go │ │ │ │ ├── gauges_test.go │ │ │ │ ├── histograms.go │ │ │ │ ├── histograms_test.go │ │ │ │ └── metricvec.go │ │ │ ├── process.go │ │ │ ├── process_test.go │ │ │ └── stages │ │ │ │ ├── decolorize.go │ │ │ │ ├── decolorize_test.go │ │ │ │ ├── drop.go │ │ │ │ ├── drop_test.go │ │ │ │ ├── eventlogmessage.go │ │ │ │ ├── eventlogmessage_test.go │ │ │ │ ├── extensions.go │ │ │ │ ├── extensions_test.go │ │ │ │ ├── geoip.go │ │ │ │ ├── geoip_test.go │ │ │ │ ├── inspector.go │ │ │ │ ├── json.go │ │ │ │ ├── json_test.go │ │ │ │ ├── label_drop.go │ │ │ │ ├── label_drop_test.go │ │ │ │ ├── label_keep.go │ │ │ │ ├── label_keep_test.go │ │ │ │ ├── labels.go │ │ │ │ ├── labels_test.go │ │ │ │ ├── limit.go │ │ │ │ ├── limit_test.go │ │ │ │ ├── logfmt.go │ │ │ │ ├── logfmt_test.go │ │ │ │ ├── luhn.go │ │ │ │ ├── luhn_test.go │ │ │ │ ├── match.go │ │ │ │ ├── match_test.go │ │ │ │ ├── metric.go │ │ │ │ ├── metric_test.go │ │ │ │ ├── multiline.go │ │ │ │ ├── multiline_test.go │ │ │ │ ├── output.go │ │ │ │ ├── output_test.go │ │ │ │ ├── pack.go │ │ │ │ ├── pack_test.go │ │ │ │ ├── pipeline.go │ │ │ │ ├── pipeline_test.go │ │ │ │ ├── regex.go │ │ │ │ ├── regex_test.go │ │ │ │ ├── replace.go │ │ │ │ ├── replace_test.go │ │ │ │ ├── sampling.go │ │ │ │ ├── sampling_test.go │ │ │ │ ├── stage.go │ │ │ │ ├── static_labels.go │ │ │ │ ├── static_labels_test.go │ │ │ │ ├── structured_metadata.go │ │ │ │ ├── structured_metadata_test.go │ │ │ │ ├── template.go │ │ │ │ ├── template_test.go │ │ │ │ ├── tenant.go │ │ │ │ ├── tenant_test.go │ │ │ │ ├── testdata │ │ │ │ ├── geoip_maxmind_asn.mmdb │ │ │ │ ├── geoip_maxmind_city.mmdb │ │ │ │ ├── geoip_maxmind_country.mmdb │ │ │ │ └── geoip_source.json │ │ │ │ ├── timestamp.go │ │ │ │ ├── timestamp_test.go │ │ │ │ ├── util.go │ │ │ │ ├── util_test.go │ │ │ │ ├── windowsevent.go │ │ │ │ └── windowsevent_test.go │ │ ├── relabel │ │ │ ├── metrics.go │ │ │ ├── relabel.go │ │ │ └── relabel_test.go │ │ ├── rules │ │ │ └── kubernetes │ │ │ │ ├── debug.go │ │ │ │ ├── events.go │ │ │ │ ├── events_test.go │ │ │ │ ├── health.go │ │ │ │ ├── rules.go │ │ │ │ ├── rules_test.go │ │ │ │ └── types.go │ │ ├── secretfilter │ │ │ ├── gitleaks.toml │ │ │ ├── secretfilter.go │ │ │ └── secretfilter_test.go │ │ ├── source │ │ │ ├── api │ │ │ │ ├── api.go │ │ │ │ ├── api_test.go │ │ │ │ └── internal │ │ │ │ │ └── lokipush │ │ │ │ │ ├── push_api_server.go │ │ │ │ │ └── push_api_server_test.go │ │ │ ├── aws_firehose │ │ │ │ ├── component.go │ │ │ │ ├── component_test.go │ │ │ │ └── internal │ │ │ │ │ ├── errors.go │ │ │ │ │ ├── handler.go │ │ │ │ │ ├── handler_test.go │ │ │ │ │ ├── metrics.go │ │ │ │ │ ├── model.go │ │ │ │ │ └── testdata │ │ │ │ │ ├── cw_logs_control_and_bad_records.json │ │ │ │ │ ├── cw_logs_mixed.json │ │ │ │ │ ├── cw_logs_with_only_control_messages.json │ │ │ │ │ ├── cw_logs_with_only_data_messages.json │ │ │ │ │ ├── direct_put.json │ │ │ │ │ └── direct_put_with_non_json_message.json │ │ │ ├── azure_event_hubs │ │ │ │ ├── azure_event_hubs.go │ │ │ │ ├── azure_event_hubs_test.go │ │ │ │ └── internal │ │ │ │ │ └── parser │ │ │ │ │ ├── parser.go │ │ │ │ │ ├── parser_test.go │ │ │ │ │ └── testdata │ │ │ │ │ ├── custom_message_and_logic_app_logs.json │ │ │ │ │ ├── custom_payload_json.json │ │ │ │ │ ├── custom_payload_json_with_records_array.json │ │ │ │ │ ├── custom_payload_json_with_records_string.json │ │ │ │ │ ├── custom_payload_text.txt │ │ │ │ │ ├── function_app_logs_message.txt │ │ │ │ │ ├── logic_app_logs_message.json │ │ │ │ │ ├── message_with_invalid_time.json │ │ │ │ │ ├── message_without_time_and_time_stamp.json │ │ │ │ │ └── message_without_time_with_time_stamp.json │ │ │ ├── cloudflare │ │ │ │ ├── cloudflare.go │ │ │ │ └── internal │ │ │ │ │ └── cloudflaretarget │ │ │ │ │ ├── client.go │ │ │ │ │ ├── fields.go │ │ │ │ │ ├── fields_test.go │ │ │ │ │ ├── metrics.go │ │ │ │ │ ├── target.go │ │ │ │ │ ├── target_test.go │ │ │ │ │ └── util_test.go │ │ │ ├── docker │ │ │ │ ├── docker.go │ │ │ │ ├── docker_test.go │ │ │ │ ├── internal │ │ │ │ │ └── dockertarget │ │ │ │ │ │ ├── metrics.go │ │ │ │ │ │ ├── target.go │ │ │ │ │ │ ├── target_test.go │ │ │ │ │ │ └── testdata │ │ │ │ │ │ ├── flog.log │ │ │ │ │ │ └── flog_after_restart.log │ │ │ │ └── runner.go │ │ │ ├── file │ │ │ │ ├── compression_format.go │ │ │ │ ├── decompresser.go │ │ │ │ ├── decompresser_test.go │ │ │ │ ├── file.go │ │ │ │ ├── file_test.go │ │ │ │ ├── legacy_file_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── reader.go │ │ │ │ ├── runner.go │ │ │ │ ├── runner_test.go │ │ │ │ ├── tailer.go │ │ │ │ ├── tailer_test.go │ │ │ │ └── testdata │ │ │ │ │ ├── long-access.gz │ │ │ │ │ ├── long-access.tar.gz │ │ │ │ │ ├── onelinelog.log │ │ │ │ │ ├── onelinelog.log.bz2 │ │ │ │ │ ├── onelinelog.log.gz │ │ │ │ │ ├── onelinelog.tar.gz │ │ │ │ │ ├── short-access.log │ │ │ │ │ └── short-access.tar.gz │ │ │ ├── gcplog │ │ │ │ ├── gcplog.go │ │ │ │ ├── gcplog_test.go │ │ │ │ ├── gcptypes │ │ │ │ │ └── gcptypes.go │ │ │ │ └── internal │ │ │ │ │ └── gcplogtarget │ │ │ │ │ ├── formatter.go │ │ │ │ │ ├── formatter_test.go │ │ │ │ │ ├── metrics.go │ │ │ │ │ ├── pull_target.go │ │ │ │ │ ├── pull_target_test.go │ │ │ │ │ ├── push_target.go │ │ │ │ │ ├── push_target_test.go │ │ │ │ │ ├── push_translation.go │ │ │ │ │ ├── push_translation_test.go │ │ │ │ │ └── types.go │ │ │ ├── gelf │ │ │ │ ├── gelf.go │ │ │ │ ├── gelf_test.go │ │ │ │ └── internal │ │ │ │ │ └── target │ │ │ │ │ ├── gelftarget.go │ │ │ │ │ └── metrics.go │ │ │ ├── heroku │ │ │ │ ├── heroku.go │ │ │ │ ├── heroku_test.go │ │ │ │ └── internal │ │ │ │ │ └── herokutarget │ │ │ │ │ ├── herokutarget.go │ │ │ │ │ ├── metrics.go │ │ │ │ │ └── target_test.go │ │ │ ├── internal │ │ │ │ └── kafkatarget │ │ │ │ │ ├── authentication.go │ │ │ │ │ ├── config.go │ │ │ │ │ ├── consumer.go │ │ │ │ │ ├── consumer_test.go │ │ │ │ │ ├── formatter.go │ │ │ │ │ ├── kafkatarget.go │ │ │ │ │ ├── kafkatarget_test.go │ │ │ │ │ ├── oauth_provider.go │ │ │ │ │ ├── parser.go │ │ │ │ │ ├── target_syncer.go │ │ │ │ │ ├── target_syncer_test.go │ │ │ │ │ ├── testdata │ │ │ │ │ ├── example.com-key.pem │ │ │ │ │ ├── example.com.ca.pem │ │ │ │ │ └── example.com.pem │ │ │ │ │ ├── topics.go │ │ │ │ │ └── topics_test.go │ │ │ ├── journal │ │ │ │ ├── internal │ │ │ │ │ └── target │ │ │ │ │ │ ├── journaltarget.go │ │ │ │ │ │ ├── journaltarget_test.go │ │ │ │ │ │ └── metrics.go │ │ │ │ ├── journal.go │ │ │ │ ├── journal_stub.go │ │ │ │ ├── journal_test.go │ │ │ │ └── types.go │ │ │ ├── kafka │ │ │ │ ├── kafka.go │ │ │ │ └── kafka_test.go │ │ │ ├── kubernetes │ │ │ │ ├── kubernetes.go │ │ │ │ ├── kubernetes_test.go │ │ │ │ └── kubetail │ │ │ │ │ ├── container_utils.go │ │ │ │ │ ├── kubetail.go │ │ │ │ │ ├── tail_utils.go │ │ │ │ │ ├── tail_utils_test.go │ │ │ │ │ ├── tailer.go │ │ │ │ │ ├── tailer_test.go │ │ │ │ │ └── target.go │ │ │ ├── kubernetes_events │ │ │ │ ├── event_controller.go │ │ │ │ └── kubernetes_events.go │ │ │ ├── podlogs │ │ │ │ ├── controller.go │ │ │ │ ├── internal │ │ │ │ │ └── apis │ │ │ │ │ │ └── monitoring │ │ │ │ │ │ └── v1alpha2 │ │ │ │ │ │ ├── doc.go │ │ │ │ │ │ ├── group.go │ │ │ │ │ │ ├── types.go │ │ │ │ │ │ └── zz_generated.deepcopy.go │ │ │ │ ├── podlogs.go │ │ │ │ ├── podlogs_test.go │ │ │ │ ├── reconciler.go │ │ │ │ ├── reconciler_test.go │ │ │ │ └── relabel.go │ │ │ ├── syslog │ │ │ │ ├── config │ │ │ │ │ └── config.go │ │ │ │ ├── internal │ │ │ │ │ └── syslogtarget │ │ │ │ │ │ ├── metrics.go │ │ │ │ │ │ ├── syslogparser │ │ │ │ │ │ ├── syslogparser.go │ │ │ │ │ │ └── syslogparser_test.go │ │ │ │ │ │ ├── syslogtarget.go │ │ │ │ │ │ ├── syslogtarget_test.go │ │ │ │ │ │ └── transport.go │ │ │ │ ├── syslog.go │ │ │ │ ├── syslog_test.go │ │ │ │ ├── types.go │ │ │ │ └── types_test.go │ │ │ └── windowsevent │ │ │ │ ├── arguments.go │ │ │ │ ├── bookmark.go │ │ │ │ ├── component_stub.go │ │ │ │ ├── component_test.go │ │ │ │ ├── component_windows.go │ │ │ │ ├── format.go │ │ │ │ ├── target.go │ │ │ │ └── target_test.go │ │ └── write │ │ │ ├── types.go │ │ │ ├── write.go │ │ │ └── write_test.go │ ├── metadata │ │ ├── metadata.go │ │ └── metadata_test.go │ ├── mimir │ │ └── rules │ │ │ └── kubernetes │ │ │ ├── debug.go │ │ │ ├── events.go │ │ │ ├── events_test.go │ │ │ ├── health.go │ │ │ ├── rules.go │ │ │ ├── rules_test.go │ │ │ ├── types.go │ │ │ └── types_test.go │ ├── otelcol │ │ ├── auth │ │ │ ├── auth.go │ │ │ ├── auth_test.go │ │ │ ├── basic │ │ │ │ ├── basic.go │ │ │ │ └── basic_test.go │ │ │ ├── bearer │ │ │ │ ├── bearer.go │ │ │ │ └── bearer_test.go │ │ │ ├── headers │ │ │ │ ├── headers.go │ │ │ │ └── headers_test.go │ │ │ ├── oauth2 │ │ │ │ ├── oauth2.go │ │ │ │ └── oauth2_test.go │ │ │ └── sigv4 │ │ │ │ ├── sigv4.go │ │ │ │ └── sigv4_test.go │ │ ├── config │ │ │ └── config_debug_metrics.go │ │ ├── config_attraction.go │ │ ├── config_attraction_test.go │ │ ├── config_compression.go │ │ ├── config_controller.go │ │ ├── config_filter.go │ │ ├── config_filter_test.go │ │ ├── config_grpc.go │ │ ├── config_http.go │ │ ├── config_k8s.go │ │ ├── config_kafka.go │ │ ├── config_queue.go │ │ ├── config_retry.go │ │ ├── config_scrape.go │ │ ├── config_stanza_receivers.go │ │ ├── config_timeout.go │ │ ├── config_tls.go │ │ ├── connector │ │ │ ├── connector.go │ │ │ ├── host_info │ │ │ │ ├── config.go │ │ │ │ ├── config_test.go │ │ │ │ ├── connector.go │ │ │ │ ├── connector_test.go │ │ │ │ ├── factory.go │ │ │ │ ├── factory_test.go │ │ │ │ ├── host_info.go │ │ │ │ ├── host_info_test.go │ │ │ │ ├── host_metrics.go │ │ │ │ └── host_metrics_test.go │ │ │ ├── servicegraph │ │ │ │ ├── servicegraph.go │ │ │ │ └── servicegraph_test.go │ │ │ ├── spanlogs │ │ │ │ ├── consumer.go │ │ │ │ ├── spanlogs.go │ │ │ │ └── spanlogs_test.go │ │ │ └── spanmetrics │ │ │ │ ├── spanmetrics.go │ │ │ │ ├── spanmetrics_test.go │ │ │ │ └── types.go │ │ ├── consumer.go │ │ ├── exporter │ │ │ ├── awss3 │ │ │ │ ├── awss3.go │ │ │ │ └── awss3_test.go │ │ │ ├── datadog │ │ │ │ ├── config │ │ │ │ │ ├── config_datadog.go │ │ │ │ │ ├── config_datadog_stub.go │ │ │ │ │ └── config_datadog_test.go │ │ │ │ ├── datadog.go │ │ │ │ ├── datadog_stub.go │ │ │ │ └── datadog_test.go │ │ │ ├── debug │ │ │ │ ├── debug.go │ │ │ │ └── debug_test.go │ │ │ ├── exporter.go │ │ │ ├── exporter_test.go │ │ │ ├── googlecloud │ │ │ │ ├── config │ │ │ │ │ └── config_googlecloud.go │ │ │ │ ├── googlecloud.go │ │ │ │ └── googlecloud_test.go │ │ │ ├── kafka │ │ │ │ ├── kafka.go │ │ │ │ └── kafka_test.go │ │ │ ├── loadbalancing │ │ │ │ ├── loadbalancing.go │ │ │ │ └── loadbalancing_test.go │ │ │ ├── loki │ │ │ │ ├── internal │ │ │ │ │ └── convert │ │ │ │ │ │ ├── convert.go │ │ │ │ │ │ ├── convert_test.go │ │ │ │ │ │ └── metrics.go │ │ │ │ └── loki.go │ │ │ ├── otlp │ │ │ │ ├── otlp.go │ │ │ │ └── otlp_test.go │ │ │ ├── otlphttp │ │ │ │ ├── otlphttp.go │ │ │ │ └── otlphttp_test.go │ │ │ ├── prometheus │ │ │ │ ├── internal │ │ │ │ │ └── convert │ │ │ │ │ │ ├── cache.go │ │ │ │ │ │ ├── convert.go │ │ │ │ │ │ ├── convert_test.go │ │ │ │ │ │ └── histograms.go │ │ │ │ ├── prometheus.go │ │ │ │ └── prometheus_test.go │ │ │ ├── splunkhec │ │ │ │ ├── config │ │ │ │ │ ├── splunkhec.go │ │ │ │ │ └── splunkhec_test.go │ │ │ │ ├── splunkhec.go │ │ │ │ └── splunkhec_test.go │ │ │ └── syslog │ │ │ │ ├── syslog.go │ │ │ │ └── syslog_test.go │ │ ├── extension │ │ │ ├── extension.go │ │ │ ├── extension_test.go │ │ │ └── jaeger_remote_sampling │ │ │ │ ├── internal │ │ │ │ └── jaegerremotesampling │ │ │ │ │ ├── README.md │ │ │ │ │ ├── config.go │ │ │ │ │ ├── config_test.go │ │ │ │ │ ├── extension.go │ │ │ │ │ ├── extension_test.go │ │ │ │ │ ├── factory.go │ │ │ │ │ ├── factory_test.go │ │ │ │ │ ├── internal │ │ │ │ │ ├── metadata │ │ │ │ │ │ └── generated_status.go │ │ │ │ │ ├── mocks │ │ │ │ │ │ └── mock_source.go │ │ │ │ │ ├── package_test.go │ │ │ │ │ ├── server │ │ │ │ │ │ ├── grpc │ │ │ │ │ │ │ ├── grpc.go │ │ │ │ │ │ │ ├── grpc_handler.go │ │ │ │ │ │ │ ├── grpc_handler_test.go │ │ │ │ │ │ │ └── grpc_test.go │ │ │ │ │ │ └── http │ │ │ │ │ │ │ ├── http.go │ │ │ │ │ │ │ └── http_test.go │ │ │ │ │ └── source │ │ │ │ │ │ ├── filesource │ │ │ │ │ │ ├── constants.go │ │ │ │ │ │ ├── filesource.go │ │ │ │ │ │ ├── filesource_test.go │ │ │ │ │ │ ├── fixtures │ │ │ │ │ │ │ ├── TestServiceNoPerOperationStrategiesDeprecatedBehavior_ServiceA.json │ │ │ │ │ │ │ ├── TestServiceNoPerOperationStrategiesDeprecatedBehavior_ServiceB.json │ │ │ │ │ │ │ ├── TestServiceNoPerOperationStrategies_ServiceA.json │ │ │ │ │ │ │ ├── TestServiceNoPerOperationStrategies_ServiceB.json │ │ │ │ │ │ │ ├── bad_strategies.json │ │ │ │ │ │ │ ├── missing-service-types.json │ │ │ │ │ │ │ ├── operation_strategies.json │ │ │ │ │ │ │ ├── service_no_per_operation.json │ │ │ │ │ │ │ └── strategies.json │ │ │ │ │ │ ├── model.go │ │ │ │ │ │ └── options.go │ │ │ │ │ │ ├── interface.go │ │ │ │ │ │ ├── remotesource │ │ │ │ │ │ ├── manager.go │ │ │ │ │ │ ├── manager_test.go │ │ │ │ │ │ ├── remote_strategy_cache.go │ │ │ │ │ │ ├── remote_strategy_cache_test.go │ │ │ │ │ │ └── remote_strategy_store.go │ │ │ │ │ │ └── strategy_store │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── constants.go │ │ │ │ │ │ ├── strategy.go │ │ │ │ │ │ ├── strategy_store.go │ │ │ │ │ │ └── strategy_store_test.go │ │ │ │ │ └── testdata │ │ │ │ │ ├── config.yaml │ │ │ │ │ └── strategy.json │ │ │ │ ├── jaeger_remote_sampling.go │ │ │ │ └── jaeger_remote_sampling_test.go │ │ ├── internal │ │ │ ├── fakeconsumer │ │ │ │ └── fake.go │ │ │ ├── fanoutconsumer │ │ │ │ ├── logs.go │ │ │ │ ├── metrics.go │ │ │ │ └── traces.go │ │ │ ├── interceptconsumer │ │ │ │ ├── logs.go │ │ │ │ ├── metrics.go │ │ │ │ └── traces.go │ │ │ ├── lazycollector │ │ │ │ └── lazycollector.go │ │ │ ├── lazyconsumer │ │ │ │ ├── lazyconsumer.go │ │ │ │ └── lazyconsumer_test.go │ │ │ ├── livedebuggingpublisher │ │ │ │ └── livedebuggingpublisher.go │ │ │ ├── scheduler │ │ │ │ ├── host.go │ │ │ │ ├── scheduler.go │ │ │ │ └── scheduler_test.go │ │ │ ├── textmarshaler │ │ │ │ ├── databuffer.go │ │ │ │ ├── logs.go │ │ │ │ ├── metrics.go │ │ │ │ └── traces.go │ │ │ └── views │ │ │ │ └── views.go │ │ ├── processor │ │ │ ├── attributes │ │ │ │ ├── attributes.go │ │ │ │ └── attributes_test.go │ │ │ ├── batch │ │ │ │ ├── batch.go │ │ │ │ └── batch_test.go │ │ │ ├── cumulativetodelta │ │ │ │ ├── cumulativetodelta.go │ │ │ │ └── cumulativetodelta_test.go │ │ │ ├── deltatocumulative │ │ │ │ └── deltatocumulative.go │ │ │ ├── discovery │ │ │ │ ├── discovery.go │ │ │ │ └── discovery_test.go │ │ │ ├── filter │ │ │ │ ├── filter.go │ │ │ │ ├── filter_test.go │ │ │ │ └── types.go │ │ │ ├── groupbyattrs │ │ │ │ ├── groupbyattrs.go │ │ │ │ └── groupbyattrs_test.go │ │ │ ├── interval │ │ │ │ └── interval.go │ │ │ ├── k8sattributes │ │ │ │ ├── k8sattributes.go │ │ │ │ ├── k8sattributes_test.go │ │ │ │ └── types.go │ │ │ ├── memorylimiter │ │ │ │ ├── memorylimiter.go │ │ │ │ └── memorylimiter_test.go │ │ │ ├── probabilistic_sampler │ │ │ │ ├── probabilistic_sampler.go │ │ │ │ └── probabilistic_sampler_test.go │ │ │ ├── processor.go │ │ │ ├── processor_test.go │ │ │ ├── processortest │ │ │ │ ├── compare_signals.go │ │ │ │ ├── compare_signals_test.go │ │ │ │ └── processortest.go │ │ │ ├── resourcedetection │ │ │ │ ├── internal │ │ │ │ │ ├── aws │ │ │ │ │ │ ├── ec2 │ │ │ │ │ │ │ └── config.go │ │ │ │ │ │ ├── ecs │ │ │ │ │ │ │ └── config.go │ │ │ │ │ │ ├── eks │ │ │ │ │ │ │ └── config.go │ │ │ │ │ │ ├── elasticbeanstalk │ │ │ │ │ │ │ └── config.go │ │ │ │ │ │ └── lambda │ │ │ │ │ │ │ └── config.go │ │ │ │ │ ├── azure │ │ │ │ │ │ ├── aks │ │ │ │ │ │ │ └── config.go │ │ │ │ │ │ └── config.go │ │ │ │ │ ├── consul │ │ │ │ │ │ └── config.go │ │ │ │ │ ├── docker │ │ │ │ │ │ └── config.go │ │ │ │ │ ├── dynatrace │ │ │ │ │ │ └── config.go │ │ │ │ │ ├── gcp │ │ │ │ │ │ └── config.go │ │ │ │ │ ├── heroku │ │ │ │ │ │ └── config.go │ │ │ │ │ ├── k8snode │ │ │ │ │ │ └── config.go │ │ │ │ │ ├── kubeadm │ │ │ │ │ │ └── config.go │ │ │ │ │ ├── openshift │ │ │ │ │ │ └── config.go │ │ │ │ │ ├── resource_attribute_config │ │ │ │ │ │ └── resource_attribute_config.go │ │ │ │ │ └── system │ │ │ │ │ │ └── config.go │ │ │ │ ├── resourcedetection.go │ │ │ │ └── resourcedetection_test.go │ │ │ ├── span │ │ │ │ ├── span.go │ │ │ │ └── span_test.go │ │ │ ├── tail_sampling │ │ │ │ ├── tail_sampling.go │ │ │ │ ├── tail_sampling_test.go │ │ │ │ └── types.go │ │ │ └── transform │ │ │ │ ├── transform.go │ │ │ │ └── transform_test.go │ │ ├── receiver │ │ │ ├── awscloudwatch │ │ │ │ ├── awscloudwatch.go │ │ │ │ ├── awscloudwatch_test.go │ │ │ │ └── config_awscloudwatch.go │ │ │ ├── datadog │ │ │ │ ├── datadog.go │ │ │ │ └── datadog_test.go │ │ │ ├── file_stats │ │ │ │ ├── file_stats.go │ │ │ │ ├── file_stats_shim.go │ │ │ │ ├── file_stats_test.go │ │ │ │ ├── types.go │ │ │ │ └── types_convert.go │ │ │ ├── filelog │ │ │ │ ├── filelog.go │ │ │ │ └── filelog_test.go │ │ │ ├── influxdb │ │ │ │ ├── influxdb.go │ │ │ │ └── influxdb_test.go │ │ │ ├── jaeger │ │ │ │ ├── jaeger.go │ │ │ │ └── jaeger_test.go │ │ │ ├── kafka │ │ │ │ ├── kafka.go │ │ │ │ └── kafka_test.go │ │ │ ├── loki │ │ │ │ ├── loki.go │ │ │ │ └── loki_test.go │ │ │ ├── opencensus │ │ │ │ ├── opencensus.go │ │ │ │ └── opencensus_test.go │ │ │ ├── otlp │ │ │ │ ├── otlp.go │ │ │ │ ├── otlp_test.go │ │ │ │ └── testdata │ │ │ │ │ └── payload.json │ │ │ ├── prometheus │ │ │ │ ├── internal │ │ │ │ │ ├── appendable.go │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── logger.go │ │ │ │ │ ├── logger_test.go │ │ │ │ │ ├── metadata.go │ │ │ │ │ ├── metricfamily.go │ │ │ │ │ ├── metricfamily_test.go │ │ │ │ │ ├── metrics_adjuster.go │ │ │ │ │ ├── metrics_adjuster_test.go │ │ │ │ │ ├── metricsutil_test.go │ │ │ │ │ ├── prom_to_otlp.go │ │ │ │ │ ├── prom_to_otlp_test.go │ │ │ │ │ ├── staleness_end_to_end_test.go │ │ │ │ │ ├── starttimemetricadjuster.go │ │ │ │ │ ├── starttimemetricadjuster_test.go │ │ │ │ │ ├── transaction.go │ │ │ │ │ ├── transaction_test.go │ │ │ │ │ ├── util.go │ │ │ │ │ └── util_test.go │ │ │ │ ├── prometheus.go │ │ │ │ └── prometheus_test.go │ │ │ ├── receiver.go │ │ │ ├── receiver_test.go │ │ │ ├── solace │ │ │ │ ├── config_solace.go │ │ │ │ ├── solace.go │ │ │ │ └── solace_test.go │ │ │ ├── splunkhec │ │ │ │ ├── splunkhec.go │ │ │ │ └── splunkhec_test.go │ │ │ ├── syslog │ │ │ │ ├── syslog.go │ │ │ │ └── syslog_test.go │ │ │ ├── tcplog │ │ │ │ ├── tcplog.go │ │ │ │ └── tcplog_test.go │ │ │ ├── vcenter │ │ │ │ ├── vcenter.go │ │ │ │ └── vcenter_test.go │ │ │ └── zipkin │ │ │ │ ├── zipkin.go │ │ │ │ └── zipkin_test.go │ │ └── storage │ │ │ └── file │ │ │ ├── file.go │ │ │ └── file_test.go │ ├── prometheus │ │ ├── exporter │ │ │ ├── apache │ │ │ │ └── apache.go │ │ │ ├── azure │ │ │ │ └── azure.go │ │ │ ├── blackbox │ │ │ │ ├── blackbox.go │ │ │ │ └── blackbox_test.go │ │ │ ├── cadvisor │ │ │ │ ├── cadvisor.go │ │ │ │ └── cadvisor_test.go │ │ │ ├── catchpoint │ │ │ │ ├── catchpoint.go │ │ │ │ └── catchpoint_test.go │ │ │ ├── cloudwatch │ │ │ │ ├── cloudwatch.go │ │ │ │ ├── config.go │ │ │ │ └── config_test.go │ │ │ ├── consul │ │ │ │ └── consul.go │ │ │ ├── dnsmasq │ │ │ │ ├── dnsmasq.go │ │ │ │ └── dnsmasq_test.go │ │ │ ├── elasticsearch │ │ │ │ ├── elasticsearch.go │ │ │ │ └── elasticsearch_test.go │ │ │ ├── exporter.go │ │ │ ├── gcp │ │ │ │ ├── gcp.go │ │ │ │ └── gcp_test.go │ │ │ ├── github │ │ │ │ ├── github.go │ │ │ │ └── github_test.go │ │ │ ├── kafka │ │ │ │ ├── kafka.go │ │ │ │ └── kafka_test.go │ │ │ ├── memcached │ │ │ │ ├── memcached.go │ │ │ │ └── memcached_test.go │ │ │ ├── mongodb │ │ │ │ ├── mongodb.go │ │ │ │ └── mongodb_test.go │ │ │ ├── mssql │ │ │ │ ├── mssql.go │ │ │ │ └── mssql_test.go │ │ │ ├── mysql │ │ │ │ ├── mysql.go │ │ │ │ └── mysql_test.go │ │ │ ├── oracledb │ │ │ │ ├── oracledb.go │ │ │ │ └── oracledb_test.go │ │ │ ├── postgres │ │ │ │ ├── postgres.go │ │ │ │ └── postgres_test.go │ │ │ ├── process │ │ │ │ ├── process.go │ │ │ │ └── process_test.go │ │ │ ├── redis │ │ │ │ ├── redis.go │ │ │ │ └── redis_test.go │ │ │ ├── self │ │ │ │ └── self.go │ │ │ ├── snmp │ │ │ │ ├── snmp.go │ │ │ │ └── snmp_test.go │ │ │ ├── snowflake │ │ │ │ ├── snowflake.go │ │ │ │ └── snowflake_test.go │ │ │ ├── squid │ │ │ │ ├── squid.go │ │ │ │ └── squid_test.go │ │ │ ├── statsd │ │ │ │ ├── config.go │ │ │ │ ├── statsd.go │ │ │ │ ├── statsd_test.go │ │ │ │ └── testdata │ │ │ │ │ └── mapTest.yaml │ │ │ ├── tests │ │ │ │ └── instance_key_test.go │ │ │ ├── unix │ │ │ │ ├── config.go │ │ │ │ └── unix.go │ │ │ └── windows │ │ │ │ ├── config.go │ │ │ │ ├── config_default_windows_test.go │ │ │ │ ├── config_windows.go │ │ │ │ ├── windows.go │ │ │ │ └── windows_test.go │ │ ├── fanout.go │ │ ├── fanout_test.go │ │ ├── interceptor.go │ │ ├── operator │ │ │ ├── common │ │ │ │ ├── component.go │ │ │ │ ├── component_test.go │ │ │ │ ├── crdmanager.go │ │ │ │ ├── crdmanager_test.go │ │ │ │ └── interfaces.go │ │ │ ├── configgen │ │ │ │ ├── config_gen.go │ │ │ │ ├── config_gen_podmonitor.go │ │ │ │ ├── config_gen_podmonitor_test.go │ │ │ │ ├── config_gen_probe.go │ │ │ │ ├── config_gen_probe_test.go │ │ │ │ ├── config_gen_scrapeconfig.go │ │ │ │ ├── config_gen_scrapeconfig_test.go │ │ │ │ ├── config_gen_servicemonitor.go │ │ │ │ ├── config_gen_servicemonitor_test.go │ │ │ │ ├── config_gen_test.go │ │ │ │ └── secrets.go │ │ │ ├── podmonitors │ │ │ │ └── operator.go │ │ │ ├── probes │ │ │ │ └── probes.go │ │ │ ├── scrapeconfigs │ │ │ │ └── operator.go │ │ │ ├── servicemonitors │ │ │ │ └── servicemonitors.go │ │ │ ├── types.go │ │ │ └── types_test.go │ │ ├── receive_http │ │ │ ├── receive_http.go │ │ │ └── receive_http_test.go │ │ ├── relabel │ │ │ ├── relabel.go │ │ │ └── relabel_test.go │ │ ├── remotewrite │ │ │ ├── cli.go │ │ │ ├── remote_write.go │ │ │ ├── remote_write_test.go │ │ │ ├── types.go │ │ │ └── types_test.go │ │ ├── scrape │ │ │ ├── scrape.go │ │ │ ├── scrape_clustering_test.go │ │ │ └── scrape_test.go │ │ └── write │ │ │ └── queue │ │ │ ├── README.md │ │ │ ├── component.go │ │ │ ├── fanout.go │ │ │ ├── types.go │ │ │ └── types_test.go │ ├── pyroscope │ │ ├── appender.go │ │ ├── appender_test.go │ │ ├── ebpf │ │ │ ├── args.go │ │ │ ├── ebpf_linux.go │ │ │ ├── ebpf_linux_test.go │ │ │ ├── ebpf_placeholder.go │ │ │ └── metrics.go │ │ ├── java │ │ │ ├── args.go │ │ │ ├── asprof │ │ │ │ ├── asprof.go │ │ │ │ ├── asprof_darwin.go │ │ │ │ ├── asprof_linux.go │ │ │ │ ├── asprof_linux_amd64.go │ │ │ │ ├── asprof_linux_arm64.go │ │ │ │ ├── asprof_test.go │ │ │ │ ├── async-profiler-3.0-fa937db-linux-arm64.tar.gz │ │ │ │ ├── async-profiler-3.0-fa937db-linux-x64.tar.gz │ │ │ │ ├── async-profiler-3.0-fa937db-macos.zip │ │ │ │ ├── extract.go │ │ │ │ ├── extract_darwin.go │ │ │ │ └── extract_linux.go │ │ │ ├── java.go │ │ │ ├── java_stub.go │ │ │ ├── loop.go │ │ │ ├── loop_test.go │ │ │ └── target.go │ │ ├── receive_http │ │ │ ├── receive_http.go │ │ │ └── receive_http_test.go │ │ ├── relabel │ │ │ ├── metrics.go │ │ │ ├── relabel.go │ │ │ └── relabel_test.go │ │ ├── scrape │ │ │ ├── delta_profiles.go │ │ │ ├── delta_profiles_test.go │ │ │ ├── internal │ │ │ │ ├── fastdelta │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── delta_map.go │ │ │ │ │ ├── fd.go │ │ │ │ │ ├── fd_test.go │ │ │ │ │ ├── fuzz_test.go │ │ │ │ │ ├── hasher.go │ │ │ │ │ ├── location_index.go │ │ │ │ │ ├── location_index_test.go │ │ │ │ │ ├── set.go │ │ │ │ │ ├── string_table.go │ │ │ │ │ └── testdata │ │ │ │ │ │ ├── big-heap.pprof │ │ │ │ │ │ ├── block.after.pprof │ │ │ │ │ │ ├── block.before.pprof │ │ │ │ │ │ ├── fuzz │ │ │ │ │ │ └── FuzzDelta │ │ │ │ │ │ │ ├── 0f7209b356e13da8388f52dba89dfc4669e45654f23e8446fd5292fa1bb62cf3 │ │ │ │ │ │ │ ├── 6281ce98ad6bb944a23bb21f7597f91ae767be28cf9ebfaaa40e3d1454c12be3 │ │ │ │ │ │ │ ├── 74a0704b407ac210d9de0d409cba6bd17597ba4e67e73fcf7bdffa31438ac64f │ │ │ │ │ │ │ ├── 76b05762f4f652d9c3b8aeaf7c0301e0be9045945811b270c33d4f0a2760eea2 │ │ │ │ │ │ │ ├── aafd8cbacf61de60d2748f9d49fb622c32f7f885b5a651355a7350b2fbd4bad8 │ │ │ │ │ │ │ ├── d4fd55d49c674b8963a355107bfd2fb13eb81289831066a0b9f16190c2592c8a │ │ │ │ │ │ │ ├── eec2ef2090730346d172334a24dee416e17c1511472fb808f3f9b4d68a46e3e5 │ │ │ │ │ │ │ └── f06e6fad1d62671c4b62ece89e9d85da6bd270176ce44ec809c52607cdc58680 │ │ │ │ │ │ ├── heap.after.pprof │ │ │ │ │ │ ├── heap.before.pprof │ │ │ │ │ │ ├── heap.pprof │ │ │ │ │ │ ├── stress-failure.2.after.pprof │ │ │ │ │ │ ├── stress-failure.2.before.pprof │ │ │ │ │ │ ├── stress-failure.3.after.pprof │ │ │ │ │ │ ├── stress-failure.3.before.pprof │ │ │ │ │ │ ├── stress-failure.after.pprof │ │ │ │ │ │ └── stress-failure.before.pprof │ │ │ │ └── pproflite │ │ │ │ │ ├── decoder.go │ │ │ │ │ ├── encoder.go │ │ │ │ │ ├── pproflite.go │ │ │ │ │ ├── pproflite_test.go │ │ │ │ │ └── testdata │ │ │ │ │ └── heap.pprof │ │ │ ├── manager.go │ │ │ ├── manager_test.go │ │ │ ├── scrape.go │ │ │ ├── scrape_loop.go │ │ │ ├── scrape_loop_test.go │ │ │ ├── scrape_test.go │ │ │ ├── target.go │ │ │ └── target_test.go │ │ └── write │ │ │ ├── metrics.go │ │ │ ├── write.go │ │ │ └── write_test.go │ ├── registry.go │ ├── registry_test.go │ └── remote │ │ ├── http │ │ ├── http.go │ │ └── http_test.go │ │ ├── kubernetes │ │ ├── configmap │ │ │ └── configmap.go │ │ ├── kubernetes.go │ │ ├── kubernetes_test.go │ │ └── secret │ │ │ └── secret.go │ │ ├── s3 │ │ ├── s3.go │ │ ├── s3_test.go │ │ ├── types.go │ │ └── watcher.go │ │ └── vault │ │ ├── auth.go │ │ ├── client.go │ │ ├── metrics.go │ │ ├── refresher.go │ │ ├── ticker.go │ │ ├── vault.go │ │ └── vault_test.go ├── converter │ ├── converter.go │ ├── diag │ │ ├── diagnostic.go │ │ ├── diagnostics.go │ │ ├── report.go │ │ ├── report_test.go │ │ └── severity.go │ └── internal │ │ ├── common │ │ ├── alloy_utils.go │ │ ├── alloy_utils_test.go │ │ ├── convert_appendable.go │ │ ├── convert_logs_receiver.go │ │ ├── convert_targets.go │ │ ├── convert_targets_test.go │ │ ├── custom_tokenizer.go │ │ ├── http_client_config.go │ │ ├── validate.go │ │ ├── validate_test.go │ │ └── weaveworks_server.go │ │ ├── otelcolconvert │ │ ├── converter.go │ │ ├── converter_attributesprocessor.go │ │ ├── converter_awscloudwatchreceiver.go │ │ ├── converter_basicauthextension.go │ │ ├── converter_batchprocessor.go │ │ ├── converter_bearertokenauthextension.go │ │ ├── converter_cumulativetodeltaprocessor.go │ │ ├── converter_datadogexporter.go │ │ ├── converter_datadogreceiver.go │ │ ├── converter_debugexporter.go │ │ ├── converter_deltatocumulativeprocessor.go │ │ ├── converter_filelogreceiver.go │ │ ├── converter_filestatsreceiver.go │ │ ├── converter_filestorageextension.go │ │ ├── converter_filterprocessor.go │ │ ├── converter_googlecloudexporter.go │ │ ├── converter_groupbyattrsprocessor.go │ │ ├── converter_headerssetterextension.go │ │ ├── converter_helpers.go │ │ ├── converter_influxdbreceiver.go │ │ ├── converter_intervalprocessor.go │ │ ├── converter_jaegerreceiver.go │ │ ├── converter_jaegerremotesamplingextension.go │ │ ├── converter_k8sattributesprocessor.go │ │ ├── converter_kafkaexporter.go │ │ ├── converter_kafkareceiver.go │ │ ├── converter_loadbalancingexporter.go │ │ ├── converter_memorylimiterprocessor.go │ │ ├── converter_oauth2clientauthextension.go │ │ ├── converter_opencensusreceiver.go │ │ ├── converter_otlpexporter.go │ │ ├── converter_otlphttpexporter.go │ │ ├── converter_otlpreceiver.go │ │ ├── converter_probabilisticsamplerprocessor.go │ │ ├── converter_service_telemetry.go │ │ ├── converter_servicegraphconnector.go │ │ ├── converter_sigv4authextension.go │ │ ├── converter_solacereceiver.go │ │ ├── converter_spanmetricsconnector.go │ │ ├── converter_spanprocessor.go │ │ ├── converter_splunkhecexporter.go │ │ ├── converter_splunkhecreceiver.go │ │ ├── converter_syslogexporter.go │ │ ├── converter_syslogreceiver.go │ │ ├── converter_tailsamplingprocessor.go │ │ ├── converter_tcplogreceiver.go │ │ ├── converter_transformprocessor.go │ │ ├── converter_vcenterreceiver.go │ │ ├── converter_zipkinreceiver.go │ │ ├── envprovider │ │ │ └── provider.go │ │ ├── otelcolconvert.go │ │ ├── otelcolconvert_test.go │ │ ├── pipeline_group.go │ │ ├── testdata │ │ │ ├── attributes.alloy │ │ │ ├── attributes.yaml │ │ │ ├── awscloudwatch.alloy │ │ │ ├── awscloudwatch.yaml │ │ │ ├── basicauth.alloy │ │ │ ├── basicauth.yaml │ │ │ ├── batch.alloy │ │ │ ├── batch.yaml │ │ │ ├── bearertoken.alloy │ │ │ ├── bearertoken.yaml │ │ │ ├── cumulativetodelta.alloy │ │ │ ├── cumulativetodelta.yaml │ │ │ ├── datadog.alloy │ │ │ ├── datadog.yaml │ │ │ ├── debug.alloy │ │ │ ├── debug.yaml │ │ │ ├── deltatocumulative.alloy │ │ │ ├── deltatocumulative.yaml │ │ │ ├── envvars │ │ │ │ ├── default_value_format.alloy │ │ │ │ ├── default_value_format.yaml │ │ │ │ ├── escaped_format.alloy │ │ │ │ ├── escaped_format.yaml │ │ │ │ ├── no_scheme.alloy │ │ │ │ ├── no_scheme.yaml │ │ │ │ ├── normal_format.alloy │ │ │ │ ├── normal_format.yaml │ │ │ │ ├── unknown_scheme.diags │ │ │ │ └── unknown_scheme.yaml │ │ │ ├── filelog.alloy │ │ │ ├── filelog.diags │ │ │ ├── filelog.yaml │ │ │ ├── filestatsreceiver.alloy │ │ │ ├── filestatsreceiver.yaml │ │ │ ├── filter.alloy │ │ │ ├── filter.yaml │ │ │ ├── googlecloud.alloy │ │ │ ├── googlecloud.yaml │ │ │ ├── groupbyattrs.alloy │ │ │ ├── groupbyattrs.yaml │ │ │ ├── headerssetter.alloy │ │ │ ├── headerssetter.yaml │ │ │ ├── inconsistent_processor.alloy │ │ │ ├── inconsistent_processor.yaml │ │ │ ├── influxdb.alloy │ │ │ ├── influxdb.yaml │ │ │ ├── interval.alloy │ │ │ ├── interval.yaml │ │ │ ├── jaeger.alloy │ │ │ ├── jaeger.yaml │ │ │ ├── jaegerremotesampling.alloy │ │ │ ├── jaegerremotesampling.yaml │ │ │ ├── k8sattributes.alloy │ │ │ ├── k8sattributes.yaml │ │ │ ├── kafka.alloy │ │ │ ├── kafka.yaml │ │ │ ├── loadbalancing.alloy │ │ │ ├── loadbalancing.yaml │ │ │ ├── memorylimiter.alloy │ │ │ ├── memorylimiter.yaml │ │ │ ├── oauth2.alloy │ │ │ ├── oauth2.yaml │ │ │ ├── opencensus.alloy │ │ │ ├── opencensus.yaml │ │ │ ├── otelcol_dedup │ │ │ │ ├── samereceiver.alloy │ │ │ │ ├── samereceiver.yaml │ │ │ │ ├── samereceiver2.alloy │ │ │ │ ├── samereceiver2.yaml │ │ │ │ ├── samereceiver3.alloy │ │ │ │ └── samereceiver3.yaml │ │ │ ├── otelcol_errors │ │ │ │ ├── corrupt_config.diags │ │ │ │ ├── corrupt_config.yaml │ │ │ │ ├── invalid_config.diags │ │ │ │ └── invalid_config.yaml │ │ │ ├── otelcol_telemetry │ │ │ │ ├── default.alloy │ │ │ │ ├── default.diags │ │ │ │ ├── default.yaml │ │ │ │ ├── logging_console.alloy │ │ │ │ ├── logging_console.diags │ │ │ │ ├── logging_console.yaml │ │ │ │ ├── logging_default.alloy │ │ │ │ ├── logging_default.diags │ │ │ │ ├── logging_default.yaml │ │ │ │ ├── logging_json.alloy │ │ │ │ ├── logging_json.diags │ │ │ │ └── logging_json.yaml │ │ │ ├── otelcol_without_validation │ │ │ │ ├── sigv4auth.alloy │ │ │ │ └── sigv4auth.yaml │ │ │ ├── otlp.alloy │ │ │ ├── otlp.yaml │ │ │ ├── otlphttp.alloy │ │ │ ├── otlphttp.yaml │ │ │ ├── probabilistic_sampler.alloy │ │ │ ├── probabilistic_sampler.yaml │ │ │ ├── servicegraph.alloy │ │ │ ├── servicegraph.yaml │ │ │ ├── solace.alloy │ │ │ ├── solace.yaml │ │ │ ├── span.alloy │ │ │ ├── span.yaml │ │ │ ├── span_full.alloy │ │ │ ├── span_full.yaml │ │ │ ├── spanmetrics.alloy │ │ │ ├── spanmetrics.yaml │ │ │ ├── splunkhec.alloy │ │ │ ├── splunkhec.yaml │ │ │ ├── syslog.alloy │ │ │ ├── syslog.yaml │ │ │ ├── tail_sampling.alloy │ │ │ ├── tail_sampling.yaml │ │ │ ├── tcplog.alloy │ │ │ ├── tcplog.yaml │ │ │ ├── transform.alloy │ │ │ ├── transform.yaml │ │ │ ├── vcenterreceiver.alloy │ │ │ ├── vcenterreceiver.yaml │ │ │ ├── zipkin.alloy │ │ │ └── zipkin.yaml │ │ └── utils.go │ │ ├── prometheusconvert │ │ ├── build │ │ │ └── prometheus_blocks.go │ │ ├── component │ │ │ ├── azure.go │ │ │ ├── consul.go │ │ │ ├── digitalocean.go │ │ │ ├── dns.go │ │ │ ├── docker.go │ │ │ ├── dockerswarm.go │ │ │ ├── ec2.go │ │ │ ├── file.go │ │ │ ├── gce.go │ │ │ ├── http.go │ │ │ ├── ionos.go │ │ │ ├── kubernetes.go │ │ │ ├── kuma.go │ │ │ ├── lightsail.go │ │ │ ├── linode.go │ │ │ ├── marathon.go │ │ │ ├── nerve.go │ │ │ ├── openstack.go │ │ │ ├── ovhcloud.go │ │ │ ├── relabel.go │ │ │ ├── remote_write.go │ │ │ ├── scaleway.go │ │ │ ├── scrape.go │ │ │ ├── serverset.go │ │ │ ├── service_discovery.go │ │ │ └── triton.go │ │ ├── prometheusconvert.go │ │ ├── prometheusconvert_test.go │ │ ├── testdata │ │ │ ├── azure.alloy │ │ │ ├── azure.yaml │ │ │ ├── bad_config.diags │ │ │ ├── bad_config.yaml │ │ │ ├── broken_yaml.diags │ │ │ ├── broken_yaml.yaml │ │ │ ├── consul.alloy │ │ │ ├── consul.yaml │ │ │ ├── digitalocean.alloy │ │ │ ├── digitalocean.diags │ │ │ ├── digitalocean.yaml │ │ │ ├── discovery.alloy │ │ │ ├── discovery.yaml │ │ │ ├── discovery_relabel.alloy │ │ │ ├── discovery_relabel.yaml │ │ │ ├── dns.alloy │ │ │ ├── dns.yaml │ │ │ ├── docker.alloy │ │ │ ├── docker.yaml │ │ │ ├── dockerswarm.alloy │ │ │ ├── dockerswarm.yaml │ │ │ ├── ec2.alloy │ │ │ ├── ec2.yaml │ │ │ ├── file.alloy │ │ │ ├── file.yaml │ │ │ ├── gce.alloy │ │ │ ├── gce.yaml │ │ │ ├── http.alloy │ │ │ ├── http.yaml │ │ │ ├── ionos.alloy │ │ │ ├── ionos.yaml │ │ │ ├── kubernetes.alloy │ │ │ ├── kubernetes.yaml │ │ │ ├── kuma.alloy │ │ │ ├── kuma.yaml │ │ │ ├── lightsail.alloy │ │ │ ├── lightsail.yaml │ │ │ ├── linode.alloy │ │ │ ├── linode.yaml │ │ │ ├── marathon.alloy │ │ │ ├── marathon.yaml │ │ │ ├── metric_relabel.alloy │ │ │ ├── metric_relabel.yaml │ │ │ ├── nerve.alloy │ │ │ ├── nerve.yaml │ │ │ ├── openstack.alloy │ │ │ ├── openstack.yaml │ │ │ ├── ovhcloud.alloy │ │ │ ├── ovhcloud.yaml │ │ │ ├── scaleway.alloy │ │ │ ├── scaleway.yaml │ │ │ ├── scrape.alloy │ │ │ ├── scrape.diags │ │ │ ├── scrape.yaml │ │ │ ├── serverset.alloy │ │ │ ├── serverset.yaml │ │ │ ├── triton.alloy │ │ │ ├── triton.yaml │ │ │ ├── unsupported.alloy │ │ │ ├── unsupported.diags │ │ │ └── unsupported.yaml │ │ └── validate.go │ │ ├── promtailconvert │ │ ├── internal │ │ │ └── build │ │ │ │ ├── azure_event_hub.go │ │ │ │ ├── cloudflare.go │ │ │ │ ├── consul_agent.go │ │ │ │ ├── docker_sd.go │ │ │ │ ├── gcplog.go │ │ │ │ ├── gelf.go │ │ │ │ ├── global_context.go │ │ │ │ ├── herokudrain.go │ │ │ │ ├── journal.go │ │ │ │ ├── kafka.go │ │ │ │ ├── loki_write.go │ │ │ │ ├── push_api.go │ │ │ │ ├── scrape_builder.go │ │ │ │ ├── service_discovery.go │ │ │ │ ├── stages.go │ │ │ │ ├── syslog.go │ │ │ │ └── windows_events.go │ │ ├── promtailconvert.go │ │ ├── promtailconvert_test.go │ │ ├── promtailconvert_windows_test.go │ │ ├── testdata │ │ │ ├── azure.alloy │ │ │ ├── azure.yaml │ │ │ ├── azure_event_hubs.alloy │ │ │ ├── azure_event_hubs.yaml │ │ │ ├── bad_config.diags │ │ │ ├── bad_config.yaml │ │ │ ├── cloudflare_relabel.alloy │ │ │ ├── cloudflare_relabel.yaml │ │ │ ├── consul.alloy │ │ │ ├── consul.yaml │ │ │ ├── consulagent.alloy │ │ │ ├── consulagent.diags │ │ │ ├── consulagent.yaml │ │ │ ├── digitalocean.alloy │ │ │ ├── digitalocean.yaml │ │ │ ├── docker.alloy │ │ │ ├── docker.yaml │ │ │ ├── docker_relabel.alloy │ │ │ ├── docker_relabel.yaml │ │ │ ├── dockerswarm.alloy │ │ │ ├── dockerswarm.yaml │ │ │ ├── ec2.alloy │ │ │ ├── ec2.yaml │ │ │ ├── file.alloy │ │ │ ├── file.yaml │ │ │ ├── gce.alloy │ │ │ ├── gce.yaml │ │ │ ├── gcplog.alloy │ │ │ ├── gcplog.yaml │ │ │ ├── gelf.alloy │ │ │ ├── gelf.yaml │ │ │ ├── globalpositions.alloy │ │ │ ├── globalpositions.yaml │ │ │ ├── heroku.alloy │ │ │ ├── heroku.yaml │ │ │ ├── journal.alloy │ │ │ ├── journal.yaml │ │ │ ├── journal_relabel.alloy │ │ │ ├── journal_relabel.yaml │ │ │ ├── kafka.alloy │ │ │ ├── kafka.yaml │ │ │ ├── kubernetes.alloy │ │ │ ├── kubernetes.yaml │ │ │ ├── loki_write.alloy │ │ │ ├── loki_write.yaml │ │ │ ├── marathon.alloy │ │ │ ├── marathon.yaml │ │ │ ├── mixed_pipeline.alloy │ │ │ ├── mixed_pipeline.yaml │ │ │ ├── nerve.alloy │ │ │ ├── nerve.yaml │ │ │ ├── openstack.alloy │ │ │ ├── openstack.yaml │ │ │ ├── pipeline_stages_cri_empty.alloy │ │ │ ├── pipeline_stages_cri_empty.yaml │ │ │ ├── pipeline_stages_drop.alloy │ │ │ ├── pipeline_stages_drop.diags │ │ │ ├── pipeline_stages_drop.yaml │ │ │ ├── pipeline_stages_match_nested.alloy │ │ │ ├── pipeline_stages_match_nested.yaml │ │ │ ├── pipeline_stages_part1.alloy │ │ │ ├── pipeline_stages_part1.yaml │ │ │ ├── pipeline_stages_part2.alloy │ │ │ ├── pipeline_stages_part2.yaml │ │ │ ├── pipeline_stages_structured_metadata.alloy │ │ │ ├── pipeline_stages_structured_metadata.yaml │ │ │ ├── push_api.alloy │ │ │ ├── push_api.yaml │ │ │ ├── push_api_unsupported.alloy │ │ │ ├── push_api_unsupported.diags │ │ │ ├── push_api_unsupported.yaml │ │ │ ├── remote_write_basic_auth.alloy │ │ │ ├── remote_write_basic_auth.yaml │ │ │ ├── remote_write_basic_auth2.alloy │ │ │ ├── remote_write_basic_auth2.yaml │ │ │ ├── remote_write_bearer_file.alloy │ │ │ ├── remote_write_bearer_file.yaml │ │ │ ├── remote_write_bearer_token.alloy │ │ │ ├── remote_write_bearer_token.yaml │ │ │ ├── remote_write_oauth.alloy │ │ │ ├── remote_write_oauth.yaml │ │ │ ├── remote_write_oauth2.alloy │ │ │ ├── remote_write_oauth2.yaml │ │ │ ├── sd_pipeline_example.alloy │ │ │ ├── sd_pipeline_example.yaml │ │ │ ├── serverset.alloy │ │ │ ├── serverset.yaml │ │ │ ├── source_pipeline_example.alloy │ │ │ ├── source_pipeline_example.yaml │ │ │ ├── static_pipeline_example.alloy │ │ │ ├── static_pipeline_example.yaml │ │ │ ├── syslog.alloy │ │ │ ├── syslog.yaml │ │ │ ├── syslog_invalid.diags │ │ │ ├── syslog_invalid.yaml │ │ │ ├── triton.alloy │ │ │ ├── triton.yaml │ │ │ ├── unsupported.alloy │ │ │ ├── unsupported.diags │ │ │ └── unsupported.yaml │ │ ├── testdata_windows │ │ │ ├── windowsevents.alloy │ │ │ ├── windowsevents.yaml │ │ │ ├── windowsevents_relabel.alloy │ │ │ └── windowsevents_relabel.yaml │ │ └── validate.go │ │ ├── staticconvert │ │ ├── internal │ │ │ └── build │ │ │ │ ├── apache_exporter.go │ │ │ │ ├── app_agent_receiver.go │ │ │ │ ├── azure_exporter.go │ │ │ │ ├── blackbox_exporter.go │ │ │ │ ├── builder.go │ │ │ │ ├── builder_integrations.go │ │ │ │ ├── builder_logging.go │ │ │ │ ├── builder_server.go │ │ │ │ ├── builder_traces.go │ │ │ │ ├── cadvisor_exporter.go │ │ │ │ ├── cloudwatch_exporter.go │ │ │ │ ├── consul_exporter.go │ │ │ │ ├── converter_discoveryprocessor.go │ │ │ │ ├── converter_remotewriteexporter.go │ │ │ │ ├── dnsmasq_exporter.go │ │ │ │ ├── elasticsearch_exporter.go │ │ │ │ ├── eventhandler.go │ │ │ │ ├── gcp_exporter.go │ │ │ │ ├── github_exporter.go │ │ │ │ ├── global_context.go │ │ │ │ ├── kafka_exporter.go │ │ │ │ ├── memcached_exporter.go │ │ │ │ ├── mongodb_exporter.go │ │ │ │ ├── mssql_exporter.go │ │ │ │ ├── mysqld_exporter.go │ │ │ │ ├── node_exporter.go │ │ │ │ ├── oracledb_exporter.go │ │ │ │ ├── postgres_exporter.go │ │ │ │ ├── process_exporter.go │ │ │ │ ├── redis_exporter.go │ │ │ │ ├── self_exporter.go │ │ │ │ ├── snmp_exporter.go │ │ │ │ ├── snowflake_exporter.go │ │ │ │ ├── squid_exporter.go │ │ │ │ ├── statsd_exporter.go │ │ │ │ ├── windows_exporter.go │ │ │ │ └── windows_exporter_test.go │ │ ├── staticconvert.go │ │ ├── staticconvert_test.go │ │ ├── staticconvert_windows_test.go │ │ ├── testdata-v2 │ │ │ ├── integrations_v2.alloy │ │ │ ├── integrations_v2.diags │ │ │ ├── integrations_v2.yaml │ │ │ ├── missing_metrics_config.diags │ │ │ ├── missing_metrics_config.yaml │ │ │ ├── unsupported.alloy │ │ │ ├── unsupported.diags │ │ │ └── unsupported.yaml │ │ ├── testdata-v2_windows │ │ │ ├── integrations_v2.alloy │ │ │ ├── integrations_v2.diags │ │ │ └── integrations_v2.yaml │ │ ├── testdata │ │ │ ├── dup_labels.diags │ │ │ ├── dup_labels.yaml │ │ │ ├── example-cert.pem │ │ │ ├── example-key.pem │ │ │ ├── integrations.alloy │ │ │ ├── integrations.diags │ │ │ ├── integrations.yaml │ │ │ ├── integrations_no_rw.diags │ │ │ ├── integrations_no_rw.yaml │ │ │ ├── prom_missing_name.diags │ │ │ ├── prom_missing_name.yaml │ │ │ ├── prom_remote_write.alloy │ │ │ ├── prom_remote_write.diags │ │ │ ├── prom_remote_write.yaml │ │ │ ├── prom_scrape.alloy │ │ │ ├── prom_scrape.diags │ │ │ ├── prom_scrape.yaml │ │ │ ├── promtail_scrape.alloy │ │ │ ├── promtail_scrape.diags │ │ │ ├── promtail_scrape.yaml │ │ │ ├── sanitize.alloy │ │ │ ├── sanitize.diags │ │ │ ├── sanitize.yaml │ │ │ ├── traces.alloy │ │ │ ├── traces.diags │ │ │ ├── traces.yaml │ │ │ ├── traces_multi.alloy │ │ │ ├── traces_multi.diags │ │ │ ├── traces_multi.yaml │ │ │ ├── unsupported.diags │ │ │ └── unsupported.yaml │ │ ├── testdata_linux │ │ │ ├── promtail_prom.alloy │ │ │ ├── promtail_prom.diags │ │ │ └── promtail_prom.yaml │ │ ├── testdata_windows │ │ │ ├── integrations.alloy │ │ │ ├── integrations.diags │ │ │ ├── integrations.yaml │ │ │ ├── promtail_prom.alloy │ │ │ ├── promtail_prom.diags │ │ │ └── promtail_prom.yaml │ │ └── validate.go │ │ └── test_common │ │ └── testing.go ├── dag │ ├── dag.go │ ├── ops.go │ ├── ops_test.go │ ├── tarjan.go │ ├── tarjan_test.go │ └── walk.go ├── featuregate │ ├── featuregate.go │ └── featuregate_test.go ├── filedetector │ └── detector.go ├── loki │ └── client │ │ ├── client.go │ │ ├── client_test.go │ │ ├── internal │ │ ├── client.go │ │ └── client_test.go │ │ ├── rules.go │ │ └── rules_test.go ├── mimir │ └── client │ │ ├── client.go │ │ ├── client_test.go │ │ ├── internal │ │ ├── client.go │ │ └── client_test.go │ │ ├── rules.go │ │ ├── rules_test.go │ │ ├── types.go │ │ └── types_test.go ├── nodeconf │ ├── argument │ │ └── argument.go │ ├── export │ │ └── export.go │ ├── foreach │ │ └── foreach.go │ └── importsource │ │ ├── import.go │ │ ├── import_file.go │ │ ├── import_git.go │ │ ├── import_http.go │ │ └── import_string.go ├── runner │ ├── hash_map.go │ ├── hash_map_test.go │ ├── runner.go │ └── runner_test.go ├── runtime │ ├── alloy.go │ ├── alloy_components.go │ ├── alloy_services.go │ ├── alloy_services_test.go │ ├── alloy_test.go │ ├── alloy_updates_test.go │ ├── componenttest │ │ ├── addr.go │ │ ├── componenttest.go │ │ ├── context.go │ │ └── testfailmodule.go │ ├── declare_test.go │ ├── equality │ │ ├── equality.go │ │ └── equality_test.go │ ├── foreach_stringer_test.go │ ├── foreach_test.go │ ├── import_git_test.go │ ├── import_test.go │ ├── internal │ │ ├── controller │ │ │ ├── block_node.go │ │ │ ├── component_node.go │ │ │ ├── component_node_manager.go │ │ │ ├── component_references.go │ │ │ ├── custom_component_registry.go │ │ │ ├── loader.go │ │ │ ├── loader_test.go │ │ │ ├── metrics.go │ │ │ ├── module.go │ │ │ ├── node_builtin_component.go │ │ │ ├── node_builtin_component_test.go │ │ │ ├── node_config.go │ │ │ ├── node_config_argument.go │ │ │ ├── node_config_export.go │ │ │ ├── node_config_foreach.go │ │ │ ├── node_config_foreach_test.go │ │ │ ├── node_config_import.go │ │ │ ├── node_config_logging.go │ │ │ ├── node_config_tracing.go │ │ │ ├── node_custom_component.go │ │ │ ├── node_declare.go │ │ │ ├── node_service.go │ │ │ ├── queue.go │ │ │ ├── queue_test.go │ │ │ ├── scheduler.go │ │ │ ├── scheduler_test.go │ │ │ ├── service_map.go │ │ │ ├── value_cache.go │ │ │ └── value_cache_test.go │ │ ├── testcomponents │ │ │ ├── community.go │ │ │ ├── count.go │ │ │ ├── doc.go │ │ │ ├── experimental.go │ │ │ ├── fake.go │ │ │ ├── module │ │ │ │ ├── file │ │ │ │ │ └── file.go │ │ │ │ ├── git │ │ │ │ │ └── git.go │ │ │ │ ├── http │ │ │ │ │ └── http.go │ │ │ │ ├── module.go │ │ │ │ └── string │ │ │ │ │ └── string.go │ │ │ ├── passthrough.go │ │ │ ├── pulse.go │ │ │ ├── string_receiver.go │ │ │ ├── stringer.go │ │ │ ├── sumation.go │ │ │ ├── summation_receiver.go │ │ │ ├── targets │ │ │ │ └── targets.go │ │ │ └── tick.go │ │ ├── testservices │ │ │ ├── doc.go │ │ │ └── fake.go │ │ └── worker │ │ │ ├── worker_pool.go │ │ │ └── worker_pool_test.go │ ├── logging │ │ ├── deferred_handler.go │ │ ├── deferred_handler_test.go │ │ ├── handler.go │ │ ├── handler_test.go │ │ ├── level │ │ │ └── level.go │ │ ├── logger.go │ │ ├── logger_test.go │ │ ├── options.go │ │ ├── slgk_handler.go │ │ └── slgk_handler_test.go │ ├── module.go │ ├── module_eval_test.go │ ├── module_fail_test.go │ ├── module_registry.go │ ├── module_test.go │ ├── source.go │ ├── source_test.go │ ├── testdata │ │ ├── .gitignore │ │ ├── foreach │ │ │ ├── foreach_1.txtar │ │ │ ├── foreach_10.txtar │ │ │ ├── foreach_11.txtar │ │ │ ├── foreach_12.txtar │ │ │ ├── foreach_2.txtar │ │ │ ├── foreach_3.txtar │ │ │ ├── foreach_4.txtar │ │ │ ├── foreach_5.txtar │ │ │ ├── foreach_6.txtar │ │ │ ├── foreach_7.txtar │ │ │ ├── foreach_8.txtar │ │ │ └── foreach_9.txtar │ │ ├── foreach_metrics │ │ │ ├── foreach_1.txtar │ │ │ ├── foreach_2.txtar │ │ │ ├── foreach_3.txtar │ │ │ ├── foreach_4.txtar │ │ │ ├── foreach_5.txtar │ │ │ ├── foreach_6.txtar │ │ │ └── foreach_7.txtar │ │ ├── foreach_stringer │ │ │ ├── foreach_1.txtar │ │ │ ├── foreach_2.txtar │ │ │ ├── foreach_3.txtar │ │ │ ├── foreach_4.txtar │ │ │ ├── foreach_5.txtar │ │ │ ├── foreach_6.txtar │ │ │ └── foreach_7.txtar │ │ ├── import_error │ │ │ ├── import_error_1.txtar │ │ │ ├── import_error_2.txtar │ │ │ ├── import_error_3.txtar │ │ │ ├── import_error_4.txtar │ │ │ ├── import_error_5.txtar │ │ │ └── import_error_6.txtar │ │ ├── import_file │ │ │ ├── import_file_1.txtar │ │ │ ├── import_file_10.txtar │ │ │ ├── import_file_11.txtar │ │ │ ├── import_file_12.txtar │ │ │ ├── import_file_13.txtar │ │ │ ├── import_file_14.txtar │ │ │ ├── import_file_15.txtar │ │ │ ├── import_file_16.txtar │ │ │ ├── import_file_17.txtar │ │ │ ├── import_file_18.txtar │ │ │ ├── import_file_19.txtar │ │ │ ├── import_file_2.txtar │ │ │ ├── import_file_20.txtar │ │ │ ├── import_file_3.txtar │ │ │ ├── import_file_4.txtar │ │ │ ├── import_file_5.txtar │ │ │ ├── import_file_6.txtar │ │ │ ├── import_file_7.txtar │ │ │ ├── import_file_8.txtar │ │ │ └── import_file_9.txtar │ │ ├── import_file_folder │ │ │ ├── import_file_folder_1.txtar │ │ │ ├── import_file_folder_2.txtar │ │ │ ├── import_file_folder_3.txtar │ │ │ ├── import_file_folder_4.txtar │ │ │ ├── import_file_folder_5.txtar │ │ │ ├── import_file_folder_6.txtar │ │ │ └── import_file_folder_7.txtar │ │ ├── import_git │ │ │ ├── import_git_1.txtar │ │ │ ├── import_git_2.txtar │ │ │ ├── import_git_3.txtar │ │ │ ├── import_git_4.txtar │ │ │ └── import_git_5.txtar │ │ ├── import_http │ │ │ └── import_http_1.txtar │ │ ├── import_string │ │ │ └── import_string_1.txtar │ │ ├── repo.git.tar │ │ └── repo2.git.tar │ └── tracing │ │ ├── internal │ │ └── jaegerremote │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── constants.go │ │ │ ├── doc.go │ │ │ ├── sampler.go │ │ │ ├── sampler_remote.go │ │ │ ├── sampler_remote_options.go │ │ │ └── utils │ │ │ ├── http_json.go │ │ │ └── rate_limiter.go │ │ ├── lazy_sampler.go │ │ ├── otelcol_client.go │ │ ├── tracing.go │ │ └── wrap_tracer.go ├── service │ ├── cluster │ │ ├── cluster.go │ │ ├── cluster_e2e_test.go │ │ ├── cluster_readonly.go │ │ ├── cluster_test.go │ │ ├── discovery │ │ │ ├── go_discovery.go │ │ │ ├── join_peers.go │ │ │ ├── peer_discovery.go │ │ │ └── peer_discovery_test.go │ │ ├── internal │ │ │ └── testcomponent │ │ │ │ ├── cluster_state_tracker.go │ │ │ │ ├── slow_update.go │ │ │ │ └── ticker.go │ │ └── mock.go │ ├── http │ │ ├── auth.go │ │ ├── auth_test.go │ │ ├── handler.go │ │ ├── handler_windows.go │ │ ├── http.go │ │ ├── http_test.go │ │ ├── routes.go │ │ ├── split_path.go │ │ ├── split_path_test.go │ │ ├── supportbundle.go │ │ ├── testdata │ │ │ ├── config.conf │ │ │ ├── test-cert.crt │ │ │ └── test-key.key │ │ ├── tls.go │ │ └── tls_test.go │ ├── labelstore │ │ ├── data.go │ │ ├── service.go │ │ └── service_test.go │ ├── livedebugging │ │ ├── data.go │ │ ├── livedebugging.go │ │ ├── livedebugging_test.go │ │ └── service.go │ ├── otel │ │ └── otel.go │ ├── remotecfg │ │ ├── noop.go │ │ ├── remotecfg.go │ │ └── remotecfg_test.go │ ├── service.go │ └── ui │ │ └── ui.go ├── slogadapter │ ├── gokit.go │ └── gokit_test.go ├── static │ ├── agentctl │ │ └── waltools │ │ │ ├── cardinality.go │ │ │ ├── cardinality_test.go │ │ │ ├── samples.go │ │ │ ├── wal_iterator.go │ │ │ ├── walstats.go │ │ │ └── walstats_test.go │ ├── config │ │ ├── agentmanagement.go │ │ ├── agentmanagement_test.go │ │ ├── config.go │ │ ├── config_test.go │ │ ├── encoder │ │ │ ├── encoder.go │ │ │ ├── test_encoding_unknown.txt │ │ │ ├── test_encoding_utf16be.txt │ │ │ ├── test_encoding_utf16le.txt │ │ │ ├── test_encoding_utf32be.txt │ │ │ ├── test_encoding_utf32le.txt │ │ │ ├── test_encoding_utf8.txt │ │ │ └── test_encoding_utf8bom.txt │ │ ├── features │ │ │ ├── features.go │ │ │ └── features_test.go │ │ ├── instrumentation │ │ │ ├── agent_management_metrics.go │ │ │ ├── config_metrics.go │ │ │ └── remote_config_metrics.go │ │ ├── integrations.go │ │ ├── integrations_test.go │ │ └── testdata │ │ │ └── server_empty.yml │ ├── integrations │ │ ├── agent │ │ │ └── agent.go │ │ ├── apache_http │ │ │ └── apache_http.go │ │ ├── azure_exporter │ │ │ ├── azure_exporter.go │ │ │ ├── config.go │ │ │ └── config_test.go │ │ ├── blackbox_exporter │ │ │ ├── blackbox_exporter.go │ │ │ └── blackbox_exporter_test.go │ │ ├── cadvisor │ │ │ ├── cadvisor.go │ │ │ ├── cadvisor_stub.go │ │ │ ├── cadvisor_test.go │ │ │ └── common.go │ │ ├── catchpoint_exporter │ │ │ ├── catchpoint_exporter.go │ │ │ └── catchpoint_exporter_test.go │ │ ├── cloudwatch_exporter │ │ │ ├── cloudwatch_exporter.go │ │ │ ├── cloudwatch_exporter_decoupled.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ └── docs │ │ │ │ ├── doc.go │ │ │ │ └── template.md │ │ ├── collector_integration.go │ │ ├── config │ │ │ └── config.go │ │ ├── consul_exporter │ │ │ └── consul_exporter.go │ │ ├── dnsmasq_exporter │ │ │ └── dnsmasq_exporter.go │ │ ├── elasticsearch_exporter │ │ │ ├── elasticsearch_exporter.go │ │ │ └── tls.go │ │ ├── gcp_exporter │ │ │ ├── gcp_exporter.go │ │ │ ├── gcp_exporter_test.go │ │ │ ├── self_pruning_store.go │ │ │ └── self_pruning_store_test.go │ │ ├── github_exporter │ │ │ ├── github_exporter.go │ │ │ └── github_test.go │ │ ├── handler_integration.go │ │ ├── install │ │ │ ├── install.go │ │ │ └── install_test.go │ │ ├── integration.go │ │ ├── kafka_exporter │ │ │ ├── kafka_exporter.go │ │ │ └── kafka_test.go │ │ ├── logruskit.go │ │ ├── manager.go │ │ ├── memcached_exporter │ │ │ └── memcached_exporter.go │ │ ├── mongodb_exporter │ │ │ ├── mongodb_exporter.go │ │ │ └── mongodb_test.go │ │ ├── mssql │ │ │ ├── collector.go │ │ │ ├── collector_config.yaml │ │ │ ├── collector_test.go │ │ │ ├── sql_exporter.go │ │ │ └── sql_exporter_test.go │ │ ├── mysqld_exporter │ │ │ ├── mysqld-exporter.go │ │ │ └── mysqld_test.go │ │ ├── node_exporter │ │ │ ├── collectors.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── node_exporter.go │ │ │ ├── node_exporter_linux.go │ │ │ ├── node_exporter_test.go │ │ │ └── node_exporter_windows.go │ │ ├── oracledb_exporter │ │ │ ├── oracledb_exporter.go │ │ │ └── oracledb_exporter_test.go │ │ ├── postgres_exporter │ │ │ ├── postgres_exporter.go │ │ │ ├── postgres_exporter_test.go │ │ │ └── postgres_test.go │ │ ├── process_exporter │ │ │ ├── config.go │ │ │ ├── process-exporter.go │ │ │ └── process-exporter_linux.go │ │ ├── redis_exporter │ │ │ ├── redis_exporter.go │ │ │ ├── redis_exporter_test.go │ │ │ └── testdata │ │ │ │ └── password_map_file.json │ │ ├── register.go │ │ ├── register_test.go │ │ ├── snmp_exporter │ │ │ ├── common │ │ │ │ ├── common.go │ │ │ │ └── snmp.yml.gz │ │ │ ├── snmp.go │ │ │ ├── snmp_exporter.go │ │ │ └── snmp_exporter_test.go │ │ ├── snowflake_exporter │ │ │ ├── snowflake_exporter.go │ │ │ └── snowflake_exporter_test.go │ │ ├── squid_exporter │ │ │ ├── squid_exporter.go │ │ │ └── squid_exporter_test.go │ │ ├── statsd_exporter │ │ │ ├── metrics.go │ │ │ └── statsd_exporter.go │ │ ├── v2 │ │ │ ├── agent │ │ │ │ └── agent.go │ │ │ ├── apache_http │ │ │ │ ├── apache_http.go │ │ │ │ └── apache_http_test.go │ │ │ ├── app_agent_receiver │ │ │ │ ├── app_agent_receiver.go │ │ │ │ ├── config.go │ │ │ │ └── config_test.go │ │ │ ├── autoscrape │ │ │ │ └── autoscrape.go │ │ │ ├── blackbox_exporter │ │ │ │ ├── blackbox.go │ │ │ │ ├── blackbox_exporter.go │ │ │ │ └── blackbox_test.go │ │ │ ├── common │ │ │ │ └── metrics.go │ │ │ ├── eventhandler │ │ │ │ └── integration.go │ │ │ ├── integrations.go │ │ │ ├── metricsutils │ │ │ │ ├── metricshandler_integration.go │ │ │ │ ├── metricshandler_integration_test.go │ │ │ │ └── versionshim.go │ │ │ ├── register.go │ │ │ ├── register_test.go │ │ │ ├── snmp_exporter │ │ │ │ ├── snmp.go │ │ │ │ ├── snmp_exporter.go │ │ │ │ └── snmp_exporter_test.go │ │ │ ├── subsystem.go │ │ │ ├── subsystem_test.go │ │ │ ├── utils.go │ │ │ └── vmware_exporter │ │ │ │ └── vmware_exporter.go │ │ ├── vmware_exporter │ │ │ └── vmware_exporter.go │ │ └── windows_exporter │ │ │ ├── config.go │ │ │ ├── config_windows.go │ │ │ ├── windows_exporter.go │ │ │ └── windows_exporter_windows.go │ ├── logs │ │ ├── config.go │ │ ├── config_test.go │ │ ├── global.go │ │ └── logs.go │ ├── metrics │ │ ├── agent.go │ │ ├── agent_test.go │ │ ├── cluster │ │ │ ├── client │ │ │ │ └── client.go │ │ │ ├── config.go │ │ │ └── config_test.go │ │ ├── instance │ │ │ ├── global.go │ │ │ ├── instance.go │ │ │ ├── instance_test.go │ │ │ ├── marshal.go │ │ │ ├── marshal_test.go │ │ │ └── modal_manager.go │ │ └── wal │ │ │ ├── series.go │ │ │ ├── util.go │ │ │ ├── wal.go │ │ │ └── wal_test.go │ ├── server │ │ ├── config.go │ │ ├── config_test.go │ │ ├── flags.go │ │ ├── server.go │ │ ├── testdata │ │ │ ├── example-cert.pem │ │ │ ├── example-key.pem │ │ │ └── windows │ │ │ │ ├── CLIENT_CA_CERT.cer │ │ │ │ ├── README.md │ │ │ │ ├── agent-config.yml │ │ │ │ ├── client_cert.crt │ │ │ │ ├── client_cert.pfx │ │ │ │ ├── client_key.key │ │ │ │ ├── client_key_unencrypted.key │ │ │ │ └── server_cert.crt │ │ ├── tls.go │ │ ├── tls_certstore_stub.go │ │ ├── tls_certstore_windows.go │ │ └── tls_certstore_windows_test.go │ └── traces │ │ ├── automaticloggingprocessor │ │ ├── automaticloggingprocessor.go │ │ ├── automaticloggingprocessor_test.go │ │ └── factory.go │ │ ├── config.go │ │ ├── config_test.go │ │ ├── contextkeys │ │ └── keys.go │ │ ├── noopreceiver │ │ ├── factory.go │ │ └── receiver.go │ │ ├── promsdprocessor │ │ ├── consumer │ │ │ ├── consumer.go │ │ │ └── consumer_test.go │ │ ├── factory.go │ │ ├── prom_sd_processor.go │ │ └── prom_sd_processor_test.go │ │ ├── pushreceiver │ │ ├── factory.go │ │ └── receiver.go │ │ ├── remotewriteexporter │ │ ├── exporter.go │ │ └── factory.go │ │ ├── servicegraphprocessor │ │ ├── factory.go │ │ ├── processor.go │ │ ├── processor_test.go │ │ ├── store.go │ │ ├── store_test.go │ │ └── testdata │ │ │ ├── trace-sample.json │ │ │ └── unpaired-trace-sample.json │ │ ├── spanmetricsprocessor │ │ ├── config.go │ │ ├── factory.go │ │ ├── internal │ │ │ ├── cache │ │ │ │ ├── cache.go │ │ │ │ ├── cache_test.go │ │ │ │ └── package_test.go │ │ │ └── metadata │ │ │ │ └── generated_status.go │ │ ├── mocks │ │ │ ├── Host.go │ │ │ ├── MetricsConsumer.go │ │ │ └── TracesConsumer.go │ │ └── processor.go │ │ └── traceutils │ │ ├── otel_meter_settings.go │ │ └── traceutils.go ├── tools │ ├── docs_generator │ │ ├── compatible_components_page.go │ │ ├── docs_generator.go │ │ ├── docs_updated_test.go │ │ └── links_to_types.go │ └── packaging_test │ │ ├── alloy_linux_packages_test.go │ │ ├── environment_test.go │ │ └── testdata │ │ ├── centos-systemd.Dockerfile │ │ └── debian-systemd.Dockerfile ├── usagestats │ ├── reporter.go │ ├── reporter_test.go │ └── stats.go ├── useragent │ ├── useragent.go │ └── useragent_test.go ├── util │ ├── assertmetrics │ │ ├── assert_metrics.go │ │ ├── assert_metrics_test.go │ │ └── doc.go │ ├── compare_yaml.go │ ├── compare_yaml_test.go │ ├── defaults.go │ ├── errors.go │ ├── eventually.go │ ├── eventually_test.go │ ├── filepath.go │ ├── jitter │ │ ├── jitter.go │ │ └── jitter_test.go │ ├── log │ │ └── log.go │ ├── metrics.go │ ├── otel_feature_gate.go │ ├── otel_feature_gate_test.go │ ├── otelfeaturegatefix │ │ └── featuregate_override.go │ ├── strings.go │ ├── strings_test.go │ ├── test_logger.go │ ├── testappender │ │ ├── collectingappender.go │ │ ├── compare.go │ │ ├── internal │ │ │ └── dtobuilder │ │ │ │ ├── dtobuilder.go │ │ │ │ └── sort.go │ │ ├── testappender.go │ │ └── testappender_test.go │ ├── testlivedebugging │ │ ├── testlivedebugging.go │ │ └── testlivedebugging_test.go │ ├── testtarget │ │ ├── test_target.go │ │ └── test_target_test.go │ ├── time.go │ ├── trigger.go │ ├── trigger_test.go │ ├── unchecked_collector.go │ ├── unregisterer.go │ ├── unregisterer_test.go │ ├── untab.go │ ├── untar.go │ ├── wildcard │ │ ├── match.go │ │ └── match_test.go │ ├── windowspriority │ │ ├── set_priority_nonwindows.go │ │ ├── set_priority_windows.go │ │ └── set_priority_windows_test.go │ ├── yaml.go │ ├── yaml_test.go │ └── zapadapter │ │ ├── zapadapter.go │ │ └── zapadapter_test.go ├── validator │ ├── component_registry.go │ ├── graph.go │ ├── report.go │ ├── testdata │ │ ├── default │ │ │ ├── duplicates.diags │ │ │ ├── duplicates.txtar │ │ │ ├── invalid_declare.diags │ │ │ ├── invalid_declare.txtar │ │ │ ├── invalid_foreach.diags │ │ │ ├── invalid_foreach.txtar │ │ │ ├── invalid_properties.diags │ │ │ ├── invalid_properties.txtar │ │ │ ├── missing.diags │ │ │ ├── missing.txtar │ │ │ ├── mixed.diags │ │ │ ├── mixed.txtar │ │ │ ├── syntax_errors.diags │ │ │ ├── syntax_errors.txtar │ │ │ ├── valid.diags │ │ │ └── valid.txtar │ │ └── ga │ │ │ ├── non_ga.diags │ │ │ └── non_ga.txtar │ ├── validate.go │ └── validate_test.go ├── vcs │ ├── auth.go │ ├── errors.go │ ├── git.go │ └── git_test.go ├── web │ ├── api │ │ ├── api.go │ │ └── data.go │ └── ui │ │ ├── .env │ │ ├── .env.production │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── README.md │ │ ├── assets_builtin.go │ │ ├── assets_nobuiltin.go │ │ ├── package.json │ │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ │ ├── src │ │ ├── App.module.css │ │ ├── App.tsx │ │ ├── Router.tsx │ │ ├── contexts │ │ │ └── PathPrefixContext.tsx │ │ ├── features │ │ │ ├── alloy-syntax-js │ │ │ │ ├── RiverValue.module.css │ │ │ │ ├── RiverValue.tsx │ │ │ │ ├── stringify.ts │ │ │ │ └── types.ts │ │ │ ├── clustering │ │ │ │ ├── PeerList.module.css │ │ │ │ ├── PeerList.tsx │ │ │ │ ├── Table.module.css │ │ │ │ ├── Table.tsx │ │ │ │ └── types.ts │ │ │ ├── component │ │ │ │ ├── ComponentBody.tsx │ │ │ │ ├── ComponentList.module.css │ │ │ │ ├── ComponentList.tsx │ │ │ │ ├── ComponentView.module.css │ │ │ │ ├── ComponentView.tsx │ │ │ │ ├── ForeachList.module.css │ │ │ │ ├── ForeachList.tsx │ │ │ │ ├── HealthLabel.module.css │ │ │ │ ├── HealthLabel.tsx │ │ │ │ ├── Table.module.css │ │ │ │ ├── Table.tsx │ │ │ │ ├── TableHead.tsx │ │ │ │ ├── style.ts │ │ │ │ └── types.ts │ │ │ ├── graph │ │ │ │ ├── ComponentGraph.tsx │ │ │ │ ├── Legend.module.css │ │ │ │ ├── Legend.tsx │ │ │ │ ├── MultiEdge.tsx │ │ │ │ ├── buildGraph.ts │ │ │ │ └── debugDataType.ts │ │ │ └── layout │ │ │ │ ├── Navbar.module.css │ │ │ │ ├── Navbar.tsx │ │ │ │ ├── Page.module.css │ │ │ │ └── Page.tsx │ │ ├── hooks │ │ │ ├── componentInfo.tsx │ │ │ ├── graph.tsx │ │ │ ├── liveDebugging.tsx │ │ │ └── peerInfo.tsx │ │ ├── images │ │ │ └── logo.svg │ │ ├── index.css │ │ ├── index.tsx │ │ ├── pages │ │ │ ├── Clustering.tsx │ │ │ ├── ComponentDetailPage.tsx │ │ │ ├── Graph.tsx │ │ │ ├── LiveDebugging.module.css │ │ │ ├── LiveDebugging.tsx │ │ │ ├── PageComponentList.tsx │ │ │ ├── PageRemoteComponentList.tsx │ │ │ └── RemoteComponentDetailPage.tsx │ │ ├── react-app-env.d.ts │ │ ├── static │ │ │ ├── fonts.css │ │ │ └── fonts │ │ │ │ ├── fira-code-v21-latin-500.woff2 │ │ │ │ ├── fira-code-v21-latin-regular.woff2 │ │ │ │ ├── roboto-v30-latin-100.woff2 │ │ │ │ ├── roboto-v30-latin-100italic.woff2 │ │ │ │ ├── roboto-v30-latin-300.woff2 │ │ │ │ ├── roboto-v30-latin-300italic.woff2 │ │ │ │ ├── roboto-v30-latin-500.woff2 │ │ │ │ ├── roboto-v30-latin-500italic.woff2 │ │ │ │ ├── roboto-v30-latin-700.woff2 │ │ │ │ ├── roboto-v30-latin-700italic.woff2 │ │ │ │ ├── roboto-v30-latin-900.woff2 │ │ │ │ ├── roboto-v30-latin-900italic.woff2 │ │ │ │ ├── roboto-v30-latin-italic.woff2 │ │ │ │ └── roboto-v30-latin-regular.woff2 │ │ └── utils │ │ │ ├── id.ts │ │ │ └── partition.ts │ │ ├── tsconfig.json │ │ ├── ui.go │ │ └── yarn.lock └── winmanifest │ ├── doc.go │ ├── generate_windows.go │ └── winres │ └── winres.json ├── main.go ├── operations ├── alloy-mixin │ ├── alerts.libsonnet │ ├── alerts │ │ ├── clustering.libsonnet │ │ ├── controller.libsonnet │ │ ├── opentelemetry.libsonnet │ │ └── utils │ │ │ └── alert.jsonnet │ ├── config.libsonnet │ ├── dashboards.libsonnet │ ├── dashboards │ │ ├── alloy-logs.libsonnet │ │ ├── cluster-node.libsonnet │ │ ├── cluster-overview.libsonnet │ │ ├── controller.libsonnet │ │ ├── opentelemetry.libsonnet │ │ ├── prometheus.libsonnet │ │ ├── resources.libsonnet │ │ └── utils │ │ │ ├── dashboard.jsonnet │ │ │ ├── panel.jsonnet │ │ │ └── templates.libsonnet │ ├── grizzly.jsonnet │ ├── grizzly │ │ ├── alerts.jsonnet │ │ └── dashboards.jsonnet │ ├── jsonnetfile.json │ ├── jsonnetfile.lock.json │ └── mixin.libsonnet ├── alloy-syntax-jsonnet │ ├── README.md │ ├── builder.jsonnet │ ├── internal │ │ └── utils.jsonnet │ ├── jsonnetfile.json │ ├── main.libsonnet │ ├── main_test.jsonnet │ └── manifest.jsonnet └── helm │ ├── Makefile │ ├── README.md │ ├── charts │ └── alloy │ │ ├── .helmignore │ │ ├── CHANGELOG.md │ │ ├── Chart.yaml │ │ ├── README.md │ │ ├── README.md.gotmpl │ │ ├── charts │ │ └── crds │ │ │ ├── Chart.yaml │ │ │ └── crds │ │ │ └── monitoring.grafana.com_podlogs.yaml │ │ ├── ci │ │ ├── additional-serviceaccount-label-values.yaml │ │ ├── clustering-values.yaml │ │ ├── controller-deployment-pdb-max-unavailable-values.yaml │ │ ├── controller-deployment-pdb-min-available-values.yaml │ │ ├── controller-statefulset-pdb-max-unavailable-values.yaml │ │ ├── controller-statefulset-pdb-min-available-values.yaml │ │ ├── controller-volumes-extra-values.yaml │ │ ├── create-daemonset-hostnetwork-values.yaml │ │ ├── create-daemonset-values.yaml │ │ ├── create-deployment-autoscaling-values.yaml │ │ ├── create-deployment-values.yaml │ │ ├── create-statefulset-autoscaling-values.yaml │ │ ├── create-statefulset-values.yaml │ │ ├── create-statefulset-vertical-autoscaling-values.yaml │ │ ├── custom-config-values.yaml │ │ ├── default-values-values.yaml │ │ ├── enable-servicemonitor-tls-values.yaml │ │ ├── enable-servicemonitor-values.yaml │ │ ├── envFrom-values.yaml │ │ ├── existing-config-values.yaml │ │ ├── extra-env-values.yaml │ │ ├── extra-manifests-values.yaml │ │ ├── extra-ports-values.yaml │ │ ├── faro-ingress-values.yaml │ │ ├── global-image-pullsecrets-values.yaml │ │ ├── global-image-registry-values.yaml │ │ ├── host-alias-values.yaml │ │ ├── initcontainers-values.yaml │ │ ├── lifecycle-hooks-values.yaml │ │ ├── livinessprobe-values.yaml │ │ ├── local-image-pullsecrets-values.yaml │ │ ├── local-image-registry-values.yaml │ │ ├── nodeselectors-and-tolerations-values.yaml │ │ ├── nonroot-values.yaml │ │ ├── pod_annotations-values.yaml │ │ ├── sidecars-values.yaml │ │ ├── termination-grace-period-values.yaml │ │ ├── topologyspreadconstraints-values.yaml │ │ └── with-digests-values.yaml │ │ ├── config │ │ └── example.alloy │ │ ├── templates │ │ ├── NOTES.txt │ │ ├── _config.tpl │ │ ├── _helpers.tpl │ │ ├── cluster_service.yaml │ │ ├── configmap.yaml │ │ ├── containers │ │ │ ├── _agent.yaml │ │ │ └── _watch.yaml │ │ ├── controllers │ │ │ ├── _pod.yaml │ │ │ ├── daemonset.yaml │ │ │ ├── deployment.yaml │ │ │ └── statefulset.yaml │ │ ├── extra-manifests.yaml │ │ ├── hpa.yaml │ │ ├── ingress.yaml │ │ ├── pdb.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ ├── serviceaccount.yaml │ │ ├── servicemonitor.yaml │ │ └── vpa.yaml │ │ └── values.yaml │ ├── cr.yaml │ ├── ct.yaml │ ├── lintconf.yaml │ ├── scripts │ └── rebuild-tests.sh │ └── tests │ ├── additional-serviceaccount-label │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── clustering │ └── alloy │ │ └── templates │ │ ├── cluster_service.yaml │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── statefulset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── controller-deployment-pdb-max-unavailable │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── deployment.yaml │ │ ├── pdb.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── controller-deployment-pdb-min-available │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── deployment.yaml │ │ ├── pdb.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── controller-statefulset-pdb-max-unavailable │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── statefulset.yaml │ │ ├── pdb.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── controller-statefulset-pdb-min-available │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── statefulset.yaml │ │ ├── pdb.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── controller-volumes-extra │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── create-daemonset-hostnetwork │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── create-daemonset │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── create-deployment-autoscaling │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── deployment.yaml │ │ ├── hpa.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── create-deployment │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── deployment.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── create-statefulset-autoscaling │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── statefulset.yaml │ │ ├── hpa.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── create-statefulset-vertical-autoscaling │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── statefulset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ ├── serviceaccount.yaml │ │ └── vpa.yaml │ ├── create-statefulset │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── statefulset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── custom-config │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── default-values │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── enable-servicemonitor-tls │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ ├── serviceaccount.yaml │ │ └── servicemonitor.yaml │ ├── enable-servicemonitor │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ ├── serviceaccount.yaml │ │ └── servicemonitor.yaml │ ├── envFrom │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── existing-config │ └── alloy │ │ └── templates │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── extra-env │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── extra-manifests │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── extra-manifests.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── extra-ports │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── faro-ingress │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── ingress.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── global-image-pullsecrets │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── global-image-registry │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── host-alias │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── initcontainers │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── lifecycle-hooks │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── deployment.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── livinessprobe │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── local-image-pullsecrets │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── local-image-registry │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── nodeselectors-and-tolerations │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── nonroot │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── pod_annotations │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── sidecars │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── daemonset.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── termination-grace-period │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── deployment.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ ├── topologyspreadconstraints │ └── alloy │ │ └── templates │ │ ├── configmap.yaml │ │ ├── controllers │ │ └── deployment.yaml │ │ ├── rbac.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ └── with-digests │ └── alloy │ └── templates │ ├── configmap.yaml │ ├── controllers │ └── daemonset.yaml │ ├── rbac.yaml │ ├── service.yaml │ └── serviceaccount.yaml ├── packaging ├── config.alloy ├── deb │ ├── alloy.service │ └── control │ │ ├── postinst │ │ └── prerm ├── environment-file ├── rpm │ ├── alloy.service │ └── control │ │ ├── postinst │ │ └── prerm └── windows │ ├── config.alloy │ ├── install_script.nsis │ ├── logo.ico │ └── macros.nsis ├── syntax ├── README.md ├── alloytypes │ ├── optional_secret.go │ ├── optional_secret_test.go │ ├── secret.go │ └── secret_test.go ├── ast │ ├── ast.go │ └── walk.go ├── diag │ ├── diag.go │ ├── printer.go │ └── printer_test.go ├── encoding │ └── alloyjson │ │ ├── alloyjson.go │ │ ├── alloyjson_test.go │ │ └── types.go ├── go.mod ├── go.sum ├── internal │ ├── reflectutil │ │ ├── walk.go │ │ └── walk_test.go │ ├── stdlib │ │ ├── constants.go │ │ └── stdlib.go │ ├── syntaxtags │ │ ├── syntaxtags.go │ │ └── syntaxtags_test.go │ ├── tagcache │ │ └── tagcache.go │ ├── transform │ │ └── value.go │ └── value │ │ ├── capsule.go │ │ ├── decode.go │ │ ├── decode_benchmarks_test.go │ │ ├── decode_test.go │ │ ├── errors.go │ │ ├── number_value.go │ │ ├── raw_function.go │ │ ├── tag_cache.go │ │ ├── type.go │ │ ├── type_test.go │ │ ├── value.go │ │ ├── value_object.go │ │ ├── value_object_test.go │ │ └── value_test.go ├── parser │ ├── error_test.go │ ├── internal.go │ ├── internal_test.go │ ├── parser.go │ ├── parser_test.go │ └── testdata │ │ ├── assign_block_to_attr.alloy │ │ ├── attribute_names.alloy │ │ ├── block_names.alloy │ │ ├── commas.alloy │ │ ├── fuzz │ │ └── FuzzParser │ │ │ ├── 1a39f4e358facc21678b16fad53537b46efdaa76e024a5ef4955d01a68bdac37 │ │ │ ├── 248cf4391f6c48550b7d2cf4c6c80f4ba9099c21ffa2b6869e75e99565dce037 │ │ │ └── b919fa00ebca318001778477c839a06204b55f2636597901d8d7878150d8580a │ │ ├── invalid_exprs.alloy │ │ ├── invalid_object_key.alloy │ │ └── valid │ │ ├── attribute.alloy │ │ ├── blocks.alloy │ │ ├── comments.alloy │ │ ├── empty.alloy │ │ └── expressions.alloy ├── printer │ ├── printer.go │ ├── printer_test.go │ ├── testdata │ │ ├── .gitattributes │ │ ├── array_comments.expect │ │ ├── array_comments.in │ │ ├── block_comments.expect │ │ ├── block_comments.in │ │ ├── example.expect │ │ ├── example.in │ │ ├── func_call.expect │ │ ├── func_call.in │ │ ├── mixed_list.expect │ │ ├── mixed_list.in │ │ ├── mixed_object.expect │ │ ├── mixed_object.in │ │ ├── object_align.expect │ │ ├── object_align.in │ │ ├── oneline_block.expect │ │ ├── oneline_block.in │ │ ├── raw_string.expect │ │ ├── raw_string.in │ │ ├── raw_string_label_error.error │ │ └── raw_string_label_error.in │ ├── trimmer.go │ └── walker.go ├── scanner │ ├── identifier.go │ ├── identifier_test.go │ ├── scanner.go │ └── scanner_test.go ├── syntax.go ├── syntax_test.go ├── token │ ├── builder │ │ ├── builder.go │ │ ├── builder_test.go │ │ ├── nested_defaults_test.go │ │ ├── token.go │ │ └── value_tokens.go │ ├── file.go │ └── token.go ├── typecheck │ ├── typecheck.go │ ├── typecheck_test.go │ ├── unwrap.go │ └── unwrap_test.go ├── types.go └── vm │ ├── error.go │ ├── op_binary.go │ ├── op_binary_test.go │ ├── op_unary.go │ ├── struct_decoder.go │ ├── vm.go │ ├── vm_benchmarks_test.go │ ├── vm_block_test.go │ ├── vm_errors_test.go │ ├── vm_stdlib_test.go │ └── vm_test.go └── tools ├── build-image ├── Dockerfile ├── README.md └── windows │ └── Dockerfile ├── ci ├── docker-containers └── docker-containers-windows ├── gen-crd-docs ├── config.json └── template │ ├── members.tpl │ ├── pkg.tpl │ └── type.tpl ├── gen-versioned-files └── gen-versioned-files.sh ├── image-tag ├── image-tag-docker ├── make ├── build-container.mk └── packaging.mk ├── release ├── release-note.md └── tag-dev /.dockerignore: -------------------------------------------------------------------------------- 1 | build/ 2 | data/ 3 | data-alloy/ 4 | dist/ 5 | internal/web/ui/node_modules/ 6 | internal/web/ui/build/ 7 | packaging/windows/LICENSE 8 | packaging/windows/agent-windows-amd64.exe 9 | cmd/grafana-agent/Dockerfile 10 | -------------------------------------------------------------------------------- /.drone/drone.jsonnet: -------------------------------------------------------------------------------- 1 | local pipelines = import './pipelines.jsonnet'; 2 | 3 | (import 'pipelines/test.jsonnet') + 4 | (import 'pipelines/check_containers.jsonnet') + 5 | (import 'pipelines/crosscompile.jsonnet') + 6 | (import 'util/secrets.jsonnet').asList 7 | -------------------------------------------------------------------------------- /.drone/util/build_image.jsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local version = std.extVar('BUILD_IMAGE_VERSION'), 3 | 4 | linux: 'grafana/alloy-build-image:%s' % version, 5 | windows: 'grafana/alloy-build-image:v0.1.8-windows', 6 | boringcrypto: 'grafana/alloy-build-image:%s-boringcrypto' % version, 7 | } 8 | -------------------------------------------------------------------------------- /.drone/util/pipelines.jsonnet: -------------------------------------------------------------------------------- 1 | { 2 | linux(name):: { 3 | kind: 'pipeline', 4 | type: 'docker', 5 | name: name, 6 | platform: { 7 | os: 'linux', 8 | arch: 'amd64', 9 | }, 10 | }, 11 | 12 | windows(name):: { 13 | kind: 'pipeline', 14 | type: 'docker', 15 | name: name, 16 | platform: { 17 | arch: 'amd64', 18 | os: 'windows', 19 | version: '1809', 20 | }, 21 | }, 22 | 23 | windows_command(command):: '& "C:/Program Files/git/bin/bash.exe" -c \'%s\'' % command, 24 | } 25 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | pkg/operator/crds/*.yaml linguist-generated=true 2 | 3 | *.txtar text eol=lf 4 | Makefile text eol=lf 5 | tools/make/*.mk text eol=lf 6 | tools/image-tag text eol=lf 7 | tools/release text eol=lf 8 | -------------------------------------------------------------------------------- /.github/actions/homebrew-bump-formula/Formula/test-formula-url.rb: -------------------------------------------------------------------------------- 1 | class TestFormulaUrl < Formula 2 | desc "Formula to test Action" 3 | homepage "https://github.com/dawidd6/actions-updater" 4 | url "https://github.com/dawidd6/actions-updater/archive/v0.1.11.tar.gz" 5 | sha256 "b1c83ee9d19289eb403ad0863c235fa9c3b3a980c9b13a43cda9fc9413935df4" 6 | license "MIT" 7 | 8 | def install 9 | (buildpath/"test").write <<~EOS 10 | test 11 | EOS 12 | 13 | share.install "test" 14 | end 15 | 16 | test do 17 | sleep 1 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /.github/actions/homebrew-bump-formula/README.md: -------------------------------------------------------------------------------- 1 | This folder is a fork of another GitHub Action: 2 | https://github.com/dawidd6/action-homebrew-bump-formula 3 | 4 | The fork is needed in order to incorporate this change: 5 | https://github.com/dawidd6/action-homebrew-bump-formula/pull/90 6 | 7 | -------------------------------------------------------------------------------- /.github/workflows/fuzz-go-pr.yml: -------------------------------------------------------------------------------- 1 | name: Run Go fuzz tests (PR) 2 | on: 3 | pull_request: 4 | 5 | permissions: 6 | contents: read 7 | 8 | jobs: 9 | fuzz: 10 | uses: ./.github/workflows/fuzz-go.yml 11 | with: 12 | fuzz-time: 5m 13 | -------------------------------------------------------------------------------- /.github/workflows/fuzz-go-scheduled.yml: -------------------------------------------------------------------------------- 1 | name: Run Go fuzz tests (scheduled) 2 | on: 3 | workflow_dispatch: {} 4 | schedule: 5 | - cron: '0 0 * * *' 6 | 7 | permissions: 8 | contents: read 9 | 10 | jobs: 11 | fuzz: 12 | uses: ./.github/workflows/fuzz-go.yml 13 | with: 14 | fuzz-time: 30m 15 | create-issue: true 16 | -------------------------------------------------------------------------------- /.github/workflows/snyk.yml: -------------------------------------------------------------------------------- 1 | name: Snyk Monitor Scanning 2 | on: 3 | release: 4 | types: [published] 5 | push: 6 | branches: 7 | - main 8 | - master 9 | workflow_dispatch: 10 | 11 | permissions: 12 | contents: read 13 | 14 | jobs: 15 | snyk-scan-ci: 16 | uses: grafana/security-github-actions/.github/workflows/snyk_monitor.yml@44e233d6f3d5dbf666b795e68ef19fbfe6ed9b5c # main 17 | secrets: 18 | SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} 19 | -------------------------------------------------------------------------------- /LICENSING.md: -------------------------------------------------------------------------------- 1 | # Licensing 2 | 3 | License names used in this document are as per [SPDX License List](https://spdx.org/licenses/). 4 | 5 | The default license for this project is [Apache-2.0](LICENSE). 6 | 7 | ## MIT 8 | 9 | The following files are licensed under MIT: 10 | 11 | ``` 12 | internal/component/loki/secretfilter/gitleaks.toml 13 | ``` 14 | -------------------------------------------------------------------------------- /MAINTAINERS.md: -------------------------------------------------------------------------------- 1 | The primary maintainers of the codebase are the list of team members in 2 | [GOVERNANCE](./GOVERNANCE.md). 3 | 4 | Some parts of the codebase have other maintainers based on GitHub groups. Refer 5 | to [CODEOWNERS](./CODEOWNERS) for which groups own which subtrees. 6 | -------------------------------------------------------------------------------- /docs/developer/release/05-test-release.md: -------------------------------------------------------------------------------- 1 | # Test Release 2 | 3 | Validate the new version is working by running it incrementally in all dogfooding clusters. 4 | 5 | ## Steps 6 | 7 | 1. Validate performance metrics are consistent with the prior version. 8 | 9 | 2. Validate components are healthy. -------------------------------------------------------------------------------- /docs/developer/updating-otel/k6-trace-gen/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | 3 | k6-tracing: 4 | image: ghcr.io/grafana/xk6-client-tracing:v0.0.5 5 | environment: 6 | - ENDPOINT=host.docker.internal:4320 7 | restart: always 8 | -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/additional_services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/additional_services.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/addroles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/addroles.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/any_purpose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/any_purpose.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/availability.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/availability.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/certificate_authority_click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/certificate_authority_click.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/certificate_templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/certificate_templates.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/certificateservices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/certificateservices.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/common_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/common_name.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/config.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/configure_certificate_authority.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/configure_certificate_authority.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/default_certificate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/default_certificate.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/default_identity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/default_identity.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/default_private_ky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/default_private_ky.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/enterprise_ca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/enterprise_ca.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/export_private_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/export_private_key.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/exportable_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/exportable_key.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/give_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/give_control.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/initial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/initial.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/manage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/manage.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/new_cert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/new_cert.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/new_cert_exportable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/new_cert_exportable.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/object_identifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/object_identifier.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/private_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/private_key.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/root_ca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/root_ca.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/template_general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/template_general.png -------------------------------------------------------------------------------- /docs/developer/windows/certificate_store/images/validity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/developer/windows/certificate_store/images/validity.png -------------------------------------------------------------------------------- /docs/sources/assets/alloy_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/docs/sources/assets/alloy_screenshot.png -------------------------------------------------------------------------------- /docs/sources/collect/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/collect/ 3 | description: Configure Grafana Alloy to collect and forward data 4 | menuTitle: Collect and forward data 5 | title: Collect and forward data with Grafana Alloy 6 | weight: 100 7 | --- 8 | 9 | # Collect and forward data with {{% param "FULL_PRODUCT_NAME" %}} 10 | 11 | {{< section >}} 12 | -------------------------------------------------------------------------------- /docs/sources/get-started/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/get-started/ 3 | aliases: 4 | - ./concepts/ # /docs/alloy/latest/concepts/ 5 | description: Get started with Grafana Alloy 6 | title: Get started 7 | weight: 40 8 | --- 9 | 10 | # Get started 11 | 12 | This section helps you get started with {{< param "FULL_PRODUCT_NAME" >}}. 13 | 14 | {{< section >}} 15 | -------------------------------------------------------------------------------- /docs/sources/reference/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/ 3 | description: The reference-level documentation for Grafana Alloy 4 | menuTitle: Reference 5 | title: Grafana Alloy Reference 6 | weight: 600 7 | --- 8 | 9 | # {{% param "FULL_PRODUCT_NAME" %}} Reference 10 | 11 | This section provides reference-level documentation for the various parts of {{< param "PRODUCT_NAME" >}}: 12 | 13 | {{< section >}} 14 | -------------------------------------------------------------------------------- /docs/sources/reference/components/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/ 3 | description: Learn about the components in Grafana Alloy 4 | title: Components 5 | weight: 300 6 | --- 7 | 8 | # Components 9 | 10 | This section contains reference documentation for all recognized [components][]. 11 | Refer to [Choose a Grafana Alloy component][choose-component] for an overview of the components ecosystem. 12 | 13 | {{< section >}} 14 | 15 | [components]: ../../get-started/components/ 16 | [choose-component]: ../../collect/choose-component/ 17 | -------------------------------------------------------------------------------- /docs/sources/reference/components/beyla/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/beyla/ 3 | description: Learn about the beyla components in Grafana Alloy 4 | title: beyla 5 | weight: 100 6 | --- 7 | 8 | # `beyla` 9 | 10 | This section contains reference documentation for the `beyla` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/components/database_observability/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/database_observability/ 3 | description: Learn about the database_observability components in Grafana Alloy 4 | title: database_observability 5 | weight: 100 6 | --- 7 | 8 | # `database_observability` 9 | 10 | This section contains reference documentation for the `database_observability` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/components/discovery/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/discovery/ 3 | description: Learn about the discovery components in Grafana Alloy 4 | title: discovery 5 | weight: 100 6 | --- 7 | 8 | # `discovery` 9 | 10 | This section contains reference documentation for the `discovery` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/components/faro/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/faro/ 3 | description: Learn about the faro components in Grafana Alloy 4 | title: faro 5 | weight: 100 6 | --- 7 | 8 | # `faro` 9 | 10 | This section contains reference documentation for the `faro` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/components/local/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/local/ 3 | description: Learn about the local components in Grafana Alloy 4 | title: local 5 | weight: 100 6 | --- 7 | 8 | # `local` 9 | 10 | This section contains reference documentation for the `local` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/components/loki/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/loki/ 3 | description: Learn about the loki components in Grafana Alloy 4 | title: loki 5 | weight: 100 6 | --- 7 | 8 | # `loki` 9 | 10 | This section contains reference documentation for the `loki` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/components/mimir/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/mimir/ 3 | description: Learn about the mimir components in Grafana Alloy 4 | title: mimir 5 | weight: 100 6 | --- 7 | 8 | # `mimir` 9 | 10 | This section contains reference documentation for the `mimir` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/components/otelcol/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/otelcol/ 3 | description: Learn about the otelcol components in Grafana Alloy 4 | title: otelcol 5 | weight: 100 6 | --- 7 | 8 | # `otelcol` 9 | 10 | This section contains reference documentation for the `otelcol` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/components/prometheus/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/prometheus/ 3 | description: Learn about the prometheus components in Grafana Alloy 4 | title: prometheus 5 | weight: 100 6 | --- 7 | 8 | # `prometheus` 9 | 10 | This section contains reference documentation for the `prometheus` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/components/pyroscope/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/pyroscope/ 3 | description: Learn about the pyroscope components in Grafana Alloy 4 | title: pyroscope 5 | weight: 100 6 | --- 7 | 8 | # `pyroscope` 9 | 10 | This section contains reference documentation for the `pyroscope` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/components/remote/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/components/remote/ 3 | description: Learn about the remote components in Grafana Alloy 4 | title: remote 5 | weight: 100 6 | --- 7 | 8 | # `remote` 9 | 10 | This section contains reference documentation for the `remote` components. 11 | 12 | {{< section >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference/config-blocks/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/reference/config-blocks/ 3 | description: Learn about configuration blocks 4 | title: Configuration blocks 5 | weight: 200 6 | --- 7 | 8 | # Configuration blocks 9 | 10 | Configuration blocks are optional top-level blocks that can be used to configure various parts of the {{< param "PRODUCT_NAME" >}} process. 11 | Unlabeled configuration blocks can only be defined once. 12 | 13 | Configuration blocks are _not_ components, so they have no exports. 14 | 15 | {{< section >}} 16 | -------------------------------------------------------------------------------- /docs/sources/set-up/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/set-up/ 3 | aliases: 4 | - ./getting_started/ 5 | - ./get-started/ # /docs/alloy/latest/get-started/ 6 | description: Learn how to set up and use Grafana Alloy 7 | menuTitle: Set up 8 | title: Set up Grafana Alloy 9 | weight: 50 10 | --- 11 | 12 | # Set up {{% param "FULL_PRODUCT_NAME" %}} 13 | 14 | This section helps you install, migrate, run, and deploy {{< param "PRODUCT_NAME" >}}. 15 | 16 | {{< section >}} 17 | -------------------------------------------------------------------------------- /docs/sources/set-up/migrate/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/set-up/migrate/ 3 | aliases: 4 | - ../tasks/migrate/ # /docs/alloy/latest/tasks/migrate/ 5 | description: How to migrate to Grafana Alloy 6 | menuTitle: Migrate 7 | title: Migrate to Grafana Alloy 8 | weight: 200 9 | --- 10 | 11 | # Migrate to {{% param "FULL_PRODUCT_NAME" %}} 12 | 13 | This section details how to migrate to {{< param "PRODUCT_NAME" >}} from other common solutions. 14 | 15 | {{< section >}} 16 | -------------------------------------------------------------------------------- /docs/sources/shared/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/shared/ 3 | description: Shared content 4 | headless: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /docs/sources/shared/reference/components/azuread-block.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/shared/reference/components/azuread-block/ 3 | description: Shared content, azuread block 4 | headless: true 5 | --- 6 | 7 | | Name | Type | Description | Default | Required | 8 | | ------- | -------- | ---------------- | --------------- | -------- | 9 | | `cloud` | `string` | The Azure Cloud. | `"AzurePublic"` | no | 10 | 11 | The supported values for `cloud` are: 12 | 13 | * `"AzurePublic"` 14 | * `"AzureChina"` 15 | * `"AzureGovernment"` 16 | -------------------------------------------------------------------------------- /docs/sources/shared/reference/components/otelcol-kafka-authentication.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Shared content, otelcol Kafka authentication 3 | headless: true 4 | --- 5 | 6 | The `authentication` block holds the definition of different authentication mechanisms to use when connecting to Kafka brokers. 7 | It doesn't support any arguments and is configured fully through inner blocks. 8 | -------------------------------------------------------------------------------- /docs/sources/shared/stability/community.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/shared/stability/community/ 3 | description: Shared content, community contributed 4 | headless: true 5 | --- 6 | 7 | > **Community**: This component is developed, maintained, and supported by the Alloy user community. 8 | > Grafana doesn't offer commercial support for this component. 9 | > To enable and use community components, you must set the `--feature.community-components.enabled` [flag][] to `true`. 10 | 11 | [flag]: https://grafana.com/docs/alloy//reference/cli/run/ 12 | -------------------------------------------------------------------------------- /docs/sources/troubleshoot/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/troubleshoot/ 3 | description: Learn how to troubleshoot problems with Grafana Alloy 4 | menuTitle: Troubleshoot 5 | title: Troubleshoot Grafana Alloy 6 | weight: 300 7 | --- 8 | 9 | # Troubleshoot {{% param "FULL_PRODUCT_NAME" %}} 10 | 11 | This section details how to troubleshoot {{< param "PRODUCT_NAME" >}}. 12 | 13 | {{< section >}} 14 | -------------------------------------------------------------------------------- /docs/sources/tutorials/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | canonical: https://grafana.com/docs/alloy/latest/tutorials/ 3 | description: Learn how to use Grafana Alloy 4 | menuTitle: Tutorials 5 | title: Grafana Alloy tutorials 6 | weight: 200 7 | --- 8 | 9 | # {{% param "FULL_PRODUCT_NAME" %}} tutorials 10 | 11 | This section provides a set of step-by-step tutorials that show how to use {{< param "PRODUCT_NAME" >}}. 12 | 13 | {{< section >}} 14 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | # Add here any additional datasources for testing 2 | config/grafana/datasources/datasource-dev.yml -------------------------------------------------------------------------------- /example/config/grafana/grafana.ini: -------------------------------------------------------------------------------- 1 | [analytics] 2 | reporting_enabled = false 3 | [auth.anonymous] 4 | enabled = true 5 | org_role = Admin 6 | [explore] 7 | enabled = true 8 | [users] 9 | default_theme = dark 10 | -------------------------------------------------------------------------------- /example/config/tempo/tempo.yaml: -------------------------------------------------------------------------------- 1 | distributor: 2 | receivers: 3 | otlp: 4 | protocols: 5 | grpc: 6 | endpoint: "0.0.0.0:4317" 7 | -------------------------------------------------------------------------------- /example/images/grizzly/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.24-alpine 2 | 3 | RUN go install github.com/grafana/grizzly/cmd/grr@v0.7.1 4 | -------------------------------------------------------------------------------- /example/images/jb/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.24-alpine 2 | 3 | RUN go install github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@v0.5.1 4 | -------------------------------------------------------------------------------- /fallback_version_test.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | ) 8 | 9 | func Test_fallbackVersionFromText(t *testing.T) { 10 | in := `# This is a comment 11 | # This is another comment 12 | 13 | v1.2.3 14 | 15 | This line is ignored!` 16 | expect := "v1.2.3-devel" 17 | 18 | actual := fallbackVersionFromText([]byte(in)) 19 | require.Equal(t, expect, actual) 20 | } 21 | -------------------------------------------------------------------------------- /internal/alloycli/automemlimit_linux.go: -------------------------------------------------------------------------------- 1 | //go:build linux 2 | // +build linux 3 | 4 | package alloycli 5 | 6 | import ( 7 | "log/slog" 8 | 9 | "github.com/KimMachineGun/automemlimit/memlimit" 10 | "github.com/grafana/alloy/internal/runtime/logging" 11 | ) 12 | 13 | func applyAutoMemLimit(l *logging.Logger) error { 14 | _, err := memlimit.SetGoMemLimitWithOpts(memlimit.WithLogger(slog.New(l.Handler()))) 15 | return err 16 | } 17 | -------------------------------------------------------------------------------- /internal/boringcrypto/disabled.go: -------------------------------------------------------------------------------- 1 | //go:build !(fips || boringcrypto || cngcrypto) 2 | 3 | // fips https://boringssl.googlesource.com/boringssl/+/master/crypto/fipsmodule/FIPS.md 4 | // fips and boringcrytpo are for enabling via linux experiment using the goexperiment=boringcrytpo flag 5 | // cngcrypto is used for windows builds that use https://github.com/microsoft/go fork, and is passed has a tag and experiment. 6 | 7 | package boringcrypto 8 | 9 | const Enabled = false 10 | -------------------------------------------------------------------------------- /internal/boringcrypto/enabled.go: -------------------------------------------------------------------------------- 1 | //go:build fips || boringcrypto || cngcrypto 2 | 3 | // fips https://boringssl.googlesource.com/boringssl/+/master/crypto/fipsmodule/FIPS.md 4 | // fips and boringcrytpo are for enabling via linux experiment using the goexperiment=boringcrytpo flag 5 | // cngcrypto is used for windows builds that use https://github.com/microsoft/go fork, and is passed has a tag and experiment. 6 | 7 | package boringcrypto 8 | 9 | // Package fipsonly restricts all TLS configuration to boringcrypto settings. 10 | import _ "crypto/tls/fipsonly" 11 | 12 | const Enabled = true 13 | -------------------------------------------------------------------------------- /internal/cmd/alloy-service/doc.go: -------------------------------------------------------------------------------- 1 | // Command alloy-service is a Windows binary which manages Alloy as a Windows 2 | // service. 3 | package main 4 | -------------------------------------------------------------------------------- /internal/cmd/alloylint/main.go: -------------------------------------------------------------------------------- 1 | // Command alloylint provides custom linting utilities for the grafana/alloy 2 | // repo. 3 | package main 4 | 5 | import ( 6 | "github.com/grafana/alloy/internal/cmd/alloylint/internal/findcomponents" 7 | "github.com/grafana/alloy/internal/cmd/alloylint/internal/syntaxtags" 8 | "golang.org/x/tools/go/analysis/multichecker" 9 | ) 10 | 11 | func main() { 12 | multichecker.Main( 13 | findcomponents.Analyzer, 14 | syntaxtags.Analyzer, 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /internal/cmd/integration-tests/configs/kafka/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.24.3 as build 2 | WORKDIR /app/ 3 | COPY go.mod go.sum ./ 4 | COPY syntax/go.mod syntax/go.sum ./syntax/ 5 | RUN go mod download 6 | COPY ./internal/cmd/integration-tests/configs/kafka/ ./ 7 | RUN CGO_ENABLED=0 go build -o main main.go 8 | FROM alpine:3.18 9 | COPY --from=build /app/main /app/main 10 | CMD ["/app/main"] 11 | -------------------------------------------------------------------------------- /internal/cmd/integration-tests/configs/otel-gen/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.24.3 as build 2 | WORKDIR /app/ 3 | COPY go.mod go.sum ./ 4 | COPY syntax/go.mod syntax/go.sum ./syntax/ 5 | RUN go mod download 6 | COPY ./internal/cmd/integration-tests/configs/otel-gen/ ./ 7 | RUN CGO_ENABLED=0 go build -o main main.go 8 | FROM alpine:3.18 9 | COPY --from=build /app/main /app/main 10 | CMD ["/app/main"] 11 | -------------------------------------------------------------------------------- /internal/cmd/integration-tests/configs/prom-gen/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.24.3 as build 2 | WORKDIR /app/ 3 | COPY go.mod go.sum ./ 4 | COPY syntax/go.mod syntax/go.sum ./syntax/ 5 | RUN go mod download 6 | COPY ./internal/cmd/integration-tests/configs/prom-gen/ ./ 7 | RUN CGO_ENABLED=0 go build -o main main.go 8 | FROM alpine:3.18 9 | COPY --from=build /app/main /app/main 10 | CMD ["/app/main"] 11 | -------------------------------------------------------------------------------- /internal/cmd/integration-tests/tests/beyla/beyla_test.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/grafana/alloy/internal/cmd/integration-tests/common" 7 | ) 8 | 9 | func TestBeylaMetrics(t *testing.T) { 10 | var beylaMetrics = []string{ 11 | "beyla_internal_build_info", // check that internal Beyla metrics are reported 12 | "http_server_request_duration_seconds_sum", // check that the target metrics are reported 13 | } 14 | common.MimirMetricsTest(t, beylaMetrics, []string{}, "beyla") 15 | } 16 | -------------------------------------------------------------------------------- /internal/cmd/integration-tests/tests/otlp-metrics/otlp_metrics_test.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/grafana/alloy/internal/cmd/integration-tests/common" 7 | ) 8 | 9 | func TestOTLPMetrics(t *testing.T) { 10 | common.MimirMetricsTest(t, common.OtelDefaultMetrics, common.OtelDefaultHistogramMetrics, "otlp_metrics") 11 | } 12 | -------------------------------------------------------------------------------- /internal/cmd/integration-tests/tests/read-log-file/config.alloy: -------------------------------------------------------------------------------- 1 | loki.source.file "test" { 2 | targets = [ 3 | {__path__ = "/etc/alloy/logs.txt"}, 4 | ] 5 | forward_to = [loki.write.test.receiver] 6 | } 7 | 8 | loki.write "test" { 9 | endpoint { 10 | url = "http://loki:3100/loki/api/v1/push" 11 | } 12 | external_labels = { 13 | test_name = "read_log_file", 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /internal/cmd/integration-tests/tests/scrape-prom-metrics/scrape_prom_metrics_test.go: -------------------------------------------------------------------------------- 1 | //go:build !windows 2 | 3 | package main 4 | 5 | import ( 6 | "testing" 7 | 8 | "github.com/grafana/alloy/internal/cmd/integration-tests/common" 9 | ) 10 | 11 | func TestScrapePromMetrics(t *testing.T) { 12 | common.MimirMetricsTest(t, common.PromDefaultMetrics, common.PromDefaultHistogramMetric, "scrape_prom_metrics") 13 | } 14 | -------------------------------------------------------------------------------- /internal/cmd/integration-tests/tests/scrape-prom-metrics/scrape_prom_metrics_to_otlp_test.go: -------------------------------------------------------------------------------- 1 | //go:build !windows 2 | 3 | package main 4 | 5 | import ( 6 | "testing" 7 | 8 | "github.com/grafana/alloy/internal/cmd/integration-tests/common" 9 | ) 10 | 11 | func TestScrapePromMetricsToOtlp(t *testing.T) { 12 | common.MimirMetricsTest(t, common.PromDefaultMetrics, common.PromDefaultHistogramMetric, "scrape_prom_metrics_to_otlp") 13 | } 14 | -------------------------------------------------------------------------------- /internal/component/common/kubernetes/rules_test.go: -------------------------------------------------------------------------------- 1 | package kubernetes 2 | 3 | import ( 4 | "testing" 5 | 6 | "k8s.io/client-go/util/workqueue" 7 | ) 8 | 9 | func TestEventTypeIsHashable(t *testing.T) { 10 | // This test is here to ensure that the EventType type is hashable according to the workqueue implementation 11 | queue := workqueue.NewTypedRateLimitingQueue(workqueue.DefaultTypedControllerRateLimiter[Event]()) 12 | queue.AddRateLimited(Event{}) 13 | } 14 | -------------------------------------------------------------------------------- /internal/component/common/loki/utils/convert.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import "github.com/prometheus/common/model" 4 | 5 | // ToLabelSet converts a map of strings to a prometheus LabelSet. 6 | func ToLabelSet(in map[string]string) model.LabelSet { 7 | res := make(model.LabelSet, len(in)) 8 | for k, v := range in { 9 | res[model.LabelName(k)] = model.LabelValue(v) 10 | } 11 | return res 12 | } 13 | -------------------------------------------------------------------------------- /internal/component/common/relabel/label_builder.go: -------------------------------------------------------------------------------- 1 | package relabel 2 | 3 | // LabelBuilder is an interface that can be used to change labels with relabel logic. 4 | type LabelBuilder interface { 5 | // Get returns given label value. If label is not present, an empty string is returned. 6 | Get(label string) string 7 | Range(f func(label string, value string)) 8 | // Set will set given label to given value. Setting to empty value is equivalent to deleting this label. 9 | Set(label string, val string) 10 | Del(ns ...string) 11 | } 12 | -------------------------------------------------------------------------------- /internal/component/database_observability/database_observability.go: -------------------------------------------------------------------------------- 1 | package database_observability 2 | 3 | const JobName = "integrations/db-o11y" 4 | -------------------------------------------------------------------------------- /internal/component/loki/process/stages/testdata/geoip_maxmind_asn.mmdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/process/stages/testdata/geoip_maxmind_asn.mmdb -------------------------------------------------------------------------------- /internal/component/loki/process/stages/testdata/geoip_maxmind_city.mmdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/process/stages/testdata/geoip_maxmind_city.mmdb -------------------------------------------------------------------------------- /internal/component/loki/process/stages/testdata/geoip_maxmind_country.mmdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/process/stages/testdata/geoip_maxmind_country.mmdb -------------------------------------------------------------------------------- /internal/component/loki/source/aws_firehose/internal/testdata/cw_logs_with_only_control_messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "requestId": "86208cf6-2bcc-47e6-9010-02ca9f44a025", 3 | "timestamp": 1684424042901, 4 | "records": [ 5 | { 6 | "data": "H4sIAAAAAAAAADWO0QqCMBiFX2XsWsJSwrwLUW8sIYUuQmLpnxvpJttMQnz3Ztrlxzmc8424BaVIDfmnA+zjID3nlzS5n8IsO8YhtrAYOMg5aURfDUSXNBG1MkEj6liKvjPZQpmWQNoFVf9QpWSdZoJHrNEgFfZvxa8XvoHrGUfMqqWumdHQpDVj273nujvn4Nm251h/vVngmqBVD616PgoolC/Ga0SBNJoi8USVWWKczM8oYhKoULDBUzF9AScBUFTsAAAA" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /internal/component/loki/source/aws_firehose/internal/testdata/direct_put_with_non_json_message.json: -------------------------------------------------------------------------------- 1 | { 2 | "requestId": "aa9febd3-d9d0-45a2-9032-294078d926d5", 3 | "timestamp": 1684770308881, 4 | "records": [ 5 | { 6 | "data": "aG9sYSBlc3RvIGVzIHVuYSBwcnVlYmE=" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /internal/component/loki/source/azure_event_hubs/internal/parser/testdata/custom_payload_json.json: -------------------------------------------------------------------------------- 1 | {"json":"I am valid json"} -------------------------------------------------------------------------------- /internal/component/loki/source/azure_event_hubs/internal/parser/testdata/custom_payload_json_with_records_array.json: -------------------------------------------------------------------------------- 1 | {"records": [ 2 | "I am valid json", 3 | "Me too", 4 | { 5 | "MyKey": "MyValue" 6 | } 7 | ]} -------------------------------------------------------------------------------- /internal/component/loki/source/azure_event_hubs/internal/parser/testdata/custom_payload_json_with_records_string.json: -------------------------------------------------------------------------------- 1 | {"records":"I am valid json"} -------------------------------------------------------------------------------- /internal/component/loki/source/azure_event_hubs/internal/parser/testdata/custom_payload_text.txt: -------------------------------------------------------------------------------- 1 | Message with quotes " ` -------------------------------------------------------------------------------- /internal/component/loki/source/azure_event_hubs/internal/parser/testdata/message_with_invalid_time.json: -------------------------------------------------------------------------------- 1 | { 2 | "records": [ 3 | { 4 | "time": "SOME-ERROR-HERE-T08:44:02.8921579Z", 5 | "category": "WorkflowRuntime" 6 | } 7 | ] 8 | } -------------------------------------------------------------------------------- /internal/component/loki/source/azure_event_hubs/internal/parser/testdata/message_without_time_and_time_stamp.json: -------------------------------------------------------------------------------- 1 | { 2 | "records": [ 3 | { 4 | "resourceId": "/RESOURCE_ID", 5 | "operationName": "ApplicationGatewayAccess", 6 | "category": "ApplicationGatewayAccessLog" 7 | } 8 | ] 9 | } -------------------------------------------------------------------------------- /internal/component/loki/source/azure_event_hubs/internal/parser/testdata/message_without_time_with_time_stamp.json: -------------------------------------------------------------------------------- 1 | { 2 | "records": [ 3 | { 4 | "timeStamp": "2024-09-18T00:45:09+00:00", 5 | "resourceId": "/RESOURCE_ID", 6 | "operationName": "ApplicationGatewayAccess", 7 | "category": "ApplicationGatewayAccessLog" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /internal/component/loki/source/docker/internal/dockertarget/testdata/flog.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/source/docker/internal/dockertarget/testdata/flog.log -------------------------------------------------------------------------------- /internal/component/loki/source/docker/internal/dockertarget/testdata/flog_after_restart.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/source/docker/internal/dockertarget/testdata/flog_after_restart.log -------------------------------------------------------------------------------- /internal/component/loki/source/file/testdata/long-access.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/source/file/testdata/long-access.gz -------------------------------------------------------------------------------- /internal/component/loki/source/file/testdata/long-access.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/source/file/testdata/long-access.tar.gz -------------------------------------------------------------------------------- /internal/component/loki/source/file/testdata/onelinelog.log: -------------------------------------------------------------------------------- 1 | 5.202.214.160 - - [26/Jan/2019:19:45:25 +0330] "GET / HTTP/1.1" 200 30975 "https://www.zanbil.ir/" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0" "-" -------------------------------------------------------------------------------- /internal/component/loki/source/file/testdata/onelinelog.log.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/source/file/testdata/onelinelog.log.bz2 -------------------------------------------------------------------------------- /internal/component/loki/source/file/testdata/onelinelog.log.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/source/file/testdata/onelinelog.log.gz -------------------------------------------------------------------------------- /internal/component/loki/source/file/testdata/onelinelog.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/source/file/testdata/onelinelog.tar.gz -------------------------------------------------------------------------------- /internal/component/loki/source/file/testdata/short-access.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/loki/source/file/testdata/short-access.tar.gz -------------------------------------------------------------------------------- /internal/component/loki/source/gcplog/internal/gcplogtarget/types.go: -------------------------------------------------------------------------------- 1 | package gcplogtarget 2 | 3 | // Target is a common interface implemented by both GCPLog targets. 4 | type Target interface { 5 | Details() map[string]string 6 | Stop() error 7 | } 8 | -------------------------------------------------------------------------------- /internal/component/loki/source/podlogs/internal/apis/monitoring/v1alpha2/doc.go: -------------------------------------------------------------------------------- 1 | // +k8s:deepcopy-gen=package 2 | // +groupName=monitoring.grafana.com 3 | 4 | //go:generate controller-gen object paths=. 5 | //go:generate controller-gen crd:crdVersions=v1 paths=. output:crd:dir=../../../../../../../../operations/helm/charts/alloy/crds 6 | 7 | package v1alpha2 8 | -------------------------------------------------------------------------------- /internal/component/otelcol/config_timeout.go: -------------------------------------------------------------------------------- 1 | package otelcol 2 | 3 | import "time" 4 | 5 | // DefaultTimeout holds the default timeout used for components which can time 6 | // out from requests. 7 | var DefaultTimeout = 5 * time.Second 8 | -------------------------------------------------------------------------------- /internal/component/otelcol/connector/host_info/factory_test.go: -------------------------------------------------------------------------------- 1 | package host_info 2 | 3 | import ( 4 | "testing" 5 | "time" 6 | 7 | "go.opentelemetry.io/collector/component/componenttest" 8 | "gotest.tools/assert" 9 | ) 10 | 11 | func TestCreateDefaultConfig(t *testing.T) { 12 | factory := NewFactory() 13 | cfg := factory.CreateDefaultConfig() 14 | 15 | assert.DeepEqual(t, &Config{ 16 | HostIdentifiers: []string{"host.id"}, 17 | MetricsFlushInterval: 60 * time.Second, 18 | }, cfg) 19 | 20 | assert.NilError(t, componenttest.CheckConfigStruct(cfg)) 21 | } 22 | -------------------------------------------------------------------------------- /internal/component/otelcol/exporter/datadog/config/config_datadog_stub.go: -------------------------------------------------------------------------------- 1 | //go:build freebsd 2 | 3 | package datadog_config 4 | -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/README.md: -------------------------------------------------------------------------------- 1 | # jaegerremotesampling 2 | 3 | This package is a fork of 4 | https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/jaegerremotesampling 5 | which supports string-based sampling sources. 6 | -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/internal/metadata/generated_status.go: -------------------------------------------------------------------------------- 1 | // Code generated by mdatagen. DO NOT EDIT. 2 | 3 | package metadata 4 | 5 | import ( 6 | "go.opentelemetry.io/collector/component" 7 | ) 8 | 9 | var ( 10 | Type = component.MustNewType("jaegerremotesampling") 11 | ScopeName = "otelcol/jaegerremotesampling" 12 | ) 13 | 14 | const ( 15 | ExtensionStability = component.StabilityLevelAlpha 16 | ) 17 | -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/internal/package_test.go: -------------------------------------------------------------------------------- 1 | // Copyright The OpenTelemetry Authors 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package internal 5 | 6 | import ( 7 | "testing" 8 | 9 | "go.uber.org/goleak" 10 | ) 11 | 12 | func TestMain(m *testing.M) { 13 | goleak.VerifyTestMain(m) 14 | } 15 | -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/internal/source/filesource/fixtures/TestServiceNoPerOperationStrategiesDeprecatedBehavior_ServiceA.json: -------------------------------------------------------------------------------- 1 | { 2 | "probabilisticSampling": { 3 | "samplingRate": 1 4 | }, 5 | "operationSampling": { 6 | "defaultSamplingProbability": 1, 7 | "perOperationStrategies": [ 8 | { 9 | "operation": "/health", 10 | "probabilisticSampling": { 11 | "samplingRate": 0.1 12 | } 13 | } 14 | ] 15 | } 16 | } -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/internal/source/filesource/fixtures/TestServiceNoPerOperationStrategiesDeprecatedBehavior_ServiceB.json: -------------------------------------------------------------------------------- 1 | { 2 | "strategyType": 1, 3 | "rateLimitingSampling": { 4 | "maxTracesPerSecond": 3 5 | } 6 | } -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/internal/source/filesource/fixtures/TestServiceNoPerOperationStrategies_ServiceA.json: -------------------------------------------------------------------------------- 1 | { 2 | "probabilisticSampling": { 3 | "samplingRate": 1 4 | }, 5 | "operationSampling": { 6 | "defaultSamplingProbability": 1, 7 | "perOperationStrategies": [ 8 | { 9 | "operation": "/health", 10 | "probabilisticSampling": { 11 | "samplingRate": 0.1 12 | } 13 | } 14 | ] 15 | } 16 | } -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/internal/source/filesource/fixtures/TestServiceNoPerOperationStrategies_ServiceB.json: -------------------------------------------------------------------------------- 1 | { 2 | "strategyType": 1, 3 | "rateLimitingSampling": { 4 | "maxTracesPerSecond": 3 5 | }, 6 | "operationSampling": { 7 | "defaultSamplingProbability": 0.2, 8 | "perOperationStrategies": [ 9 | { 10 | "operation": "/health", 11 | "probabilisticSampling": { 12 | "samplingRate": 0.1 13 | } 14 | } 15 | ] 16 | } 17 | } -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/internal/source/filesource/fixtures/bad_strategies.json: -------------------------------------------------------------------------------- 1 | "nonsense" 2 | -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/internal/source/filesource/fixtures/strategies.json: -------------------------------------------------------------------------------- 1 | { 2 | "default_strategy": { 3 | "type": "probabilistic", 4 | "param": 0.5 5 | }, 6 | "service_strategies": [ 7 | { 8 | "service": "foo", 9 | "type": "probabilistic", 10 | "param": 0.8 11 | }, 12 | { 13 | "service": "bar", 14 | "type": "ratelimiting", 15 | "param": 5 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/internal/source/strategy_store/README.md: -------------------------------------------------------------------------------- 1 | # strategy_store 2 | 3 | This package is a fork of 4 | https://github.com/jaegertracing/jaeger/blob/v1.38.1/plugin/sampling/strategystore/static/strategy_store.go 5 | to support a string-based strategy store. 6 | -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/testdata/config.yaml: -------------------------------------------------------------------------------- 1 | jaegerremotesampling: 2 | source: 3 | remote: 4 | endpoint: jaeger-collector:14250 5 | jaegerremotesampling/1: 6 | source: 7 | reload_interval: 1s 8 | file: /etc/otelcol/sampling_strategies.json 9 | -------------------------------------------------------------------------------- /internal/component/otelcol/extension/jaeger_remote_sampling/internal/jaegerremotesampling/testdata/strategy.json: -------------------------------------------------------------------------------- 1 | {"strategyType":"PROBABILISTIC"} -------------------------------------------------------------------------------- /internal/component/otelcol/processor/resourcedetection/internal/resource_attribute_config/resource_attribute_config.go: -------------------------------------------------------------------------------- 1 | package resource_attribute_config 2 | 3 | // Configures whether a resource attribute should be enabled or not. 4 | type ResourceAttributeConfig struct { 5 | Enabled bool `alloy:"enabled,attr"` 6 | } 7 | 8 | func (r ResourceAttributeConfig) Convert() map[string]interface{} { 9 | return map[string]interface{}{ 10 | "enabled": r.Enabled, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /internal/component/pyroscope/java/asprof/asprof_linux_amd64.go: -------------------------------------------------------------------------------- 1 | //go:build linux && amd64 2 | 3 | package asprof 4 | 5 | import ( 6 | _ "embed" 7 | ) 8 | 9 | //go:embed async-profiler-3.0-fa937db-linux-x64.tar.gz 10 | var embeddedArchiveData []byte 11 | 12 | // bin/asprof 13 | // lib/libasyncProfiler.so 14 | -------------------------------------------------------------------------------- /internal/component/pyroscope/java/asprof/asprof_linux_arm64.go: -------------------------------------------------------------------------------- 1 | //go:build linux && arm64 2 | 3 | package asprof 4 | 5 | import ( 6 | _ "embed" 7 | ) 8 | 9 | //go:embed async-profiler-3.0-fa937db-linux-arm64.tar.gz 10 | var embeddedArchiveData []byte 11 | 12 | // bin/asprof 13 | // lib/libasyncProfiler.so 14 | -------------------------------------------------------------------------------- /internal/component/pyroscope/java/asprof/async-profiler-3.0-fa937db-linux-arm64.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/java/asprof/async-profiler-3.0-fa937db-linux-arm64.tar.gz -------------------------------------------------------------------------------- /internal/component/pyroscope/java/asprof/async-profiler-3.0-fa937db-linux-x64.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/java/asprof/async-profiler-3.0-fa937db-linux-x64.tar.gz -------------------------------------------------------------------------------- /internal/component/pyroscope/java/asprof/async-profiler-3.0-fa937db-macos.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/java/asprof/async-profiler-3.0-fa937db-macos.zip -------------------------------------------------------------------------------- /internal/component/pyroscope/java/asprof/extract_darwin.go: -------------------------------------------------------------------------------- 1 | //go:build darwin 2 | 3 | package asprof 4 | 5 | import ( 6 | "os" 7 | ) 8 | 9 | func readlinkFD(f *os.File) (string, error) { 10 | return f.Name(), nil 11 | } 12 | -------------------------------------------------------------------------------- /internal/component/pyroscope/java/asprof/extract_linux.go: -------------------------------------------------------------------------------- 1 | //go:build linux && (amd64 || arm64) 2 | 3 | package asprof 4 | 5 | import ( 6 | "fmt" 7 | "os" 8 | ) 9 | 10 | func readlinkFD(f *os.File) (string, error) { 11 | return os.Readlink(fmt.Sprintf("/proc/self/fd/%d", f.Fd())) 12 | } 13 | -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/big-heap.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/big-heap.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/block.after.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/block.after.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/block.before.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/block.before.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/fuzz/FuzzDelta/0f7209b356e13da8388f52dba89dfc4669e45654f23e8446fd5292fa1bb62cf3: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("8\x0080") 3 | -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/fuzz/FuzzDelta/6281ce98ad6bb944a23bb21f7597f91ae767be28cf9ebfaaa40e3d1454c12be3: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("\x12\n\xed\xef00000\b00") 3 | -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/fuzz/FuzzDelta/74a0704b407ac210d9de0d409cba6bd17597ba4e67e73fcf7bdffa31438ac64f: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("j\x1a00000000\xc9\xc9\xc9\xc9\xc9\xc9\xc9\xc9\xc9000000000") 3 | -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/fuzz/FuzzDelta/76b05762f4f652d9c3b8aeaf7c0301e0be9045945811b270c33d4f0a2760eea2: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("\b0\b0\b0\b0\b0\x100\x100") 3 | -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/fuzz/FuzzDelta/aafd8cbacf61de60d2748f9d49fb622c32f7f885b5a651355a7350b2fbd4bad8: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("\x1200\"00000000\x12\x120000000\xf0\xc90\x06\x06\x06\x06\x06\x060\x90\x9e000000000000000000000") 3 | -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/fuzz/FuzzDelta/d4fd55d49c674b8963a355107bfd2fb13eb81289831066a0b9f16190c2592c8a: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("h0") 3 | -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/fuzz/FuzzDelta/eec2ef2090730346d172334a24dee416e17c1511472fb808f3f9b4d68a46e3e5: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("j\x01\xc2") 3 | -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/fuzz/FuzzDelta/f06e6fad1d62671c4b62ece89e9d85da6bd270176ce44ec809c52607cdc58680: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("8\xa0\x8b0") 3 | -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/heap.after.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/heap.after.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/heap.before.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/heap.before.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/heap.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/heap.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.2.after.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.2.after.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.2.before.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.2.before.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.3.after.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.3.after.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.3.before.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.3.before.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.after.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.after.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.before.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/fastdelta/testdata/stress-failure.before.pprof -------------------------------------------------------------------------------- /internal/component/pyroscope/scrape/internal/pproflite/testdata/heap.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/component/pyroscope/scrape/internal/pproflite/testdata/heap.pprof -------------------------------------------------------------------------------- /internal/converter/internal/common/custom_tokenizer.go: -------------------------------------------------------------------------------- 1 | package common 2 | 3 | import ( 4 | "github.com/grafana/alloy/syntax/token" 5 | "github.com/grafana/alloy/syntax/token/builder" 6 | ) 7 | 8 | type CustomTokenizer struct { 9 | Expr string 10 | } 11 | 12 | var _ builder.Tokenizer = CustomTokenizer{} 13 | 14 | func (f CustomTokenizer) AlloyTokenize() []builder.Token { 15 | return []builder.Token{{ 16 | Tok: token.STRING, 17 | Lit: f.Expr, 18 | }} 19 | } 20 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/awscloudwatch.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.awscloudwatch "default" { 2 | region = "us-west-1" 3 | profile = "my-profile" 4 | 5 | logs { 6 | poll_interval = "5m0s" 7 | 8 | groups { 9 | named { 10 | group_name = "/aws/eks/dev-0/cluster" 11 | names = ["kube-apiserver-ea9c831555adca1815ae04b87661klasdj"] 12 | } 13 | } 14 | } 15 | 16 | output { 17 | logs = [otelcol.exporter.otlp.default.input] 18 | } 19 | } 20 | 21 | otelcol.exporter.otlp "default" { 22 | client { 23 | endpoint = "database:4317" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/awscloudwatch.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | awscloudwatch: 3 | profile: 'my-profile' 4 | region: us-west-1 5 | logs: 6 | poll_interval: 5m 7 | groups: 8 | named: 9 | /aws/eks/dev-0/cluster: 10 | names: [kube-apiserver-ea9c831555adca1815ae04b87661klasdj] 11 | 12 | exporters: 13 | otlp: 14 | endpoint: database:4317 15 | 16 | service: 17 | pipelines: 18 | logs: 19 | receivers: [awscloudwatch] 20 | processors: [] 21 | exporters: [otlp] 22 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/batch.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | http: 6 | 7 | processors: 8 | batch: 9 | 10 | exporters: 11 | otlp: 12 | endpoint: database:4317 13 | 14 | service: 15 | pipelines: 16 | metrics: 17 | receivers: [otlp] 18 | processors: [batch] 19 | exporters: [otlp] 20 | logs: 21 | receivers: [otlp] 22 | processors: [batch] 23 | exporters: [otlp] 24 | traces: 25 | receivers: [otlp] 26 | processors: [batch] 27 | exporters: [otlp] 28 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/deltatocumulative.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.otlp "default" { 2 | grpc { 3 | endpoint = "localhost:4317" 4 | } 5 | 6 | http { 7 | endpoint = "localhost:4318" 8 | } 9 | 10 | output { 11 | metrics = [otelcol.processor.deltatocumulative.default.input] 12 | } 13 | } 14 | 15 | otelcol.processor.deltatocumulative "default" { 16 | output { 17 | metrics = [otelcol.exporter.otlp.default.input] 18 | } 19 | } 20 | 21 | otelcol.exporter.otlp "default" { 22 | client { 23 | endpoint = "database:4317" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/deltatocumulative.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | http: 6 | 7 | processors: 8 | deltatocumulative: 9 | 10 | exporters: 11 | otlp: 12 | endpoint: database:4317 13 | 14 | service: 15 | pipelines: 16 | metrics: 17 | receivers: [otlp] 18 | processors: [deltatocumulative] 19 | exporters: [otlp] 20 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/envvars/default_value_format.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.otlp "default" { 2 | grpc { 3 | endpoint = coalesce(sys.env("NORMAL_FORMAT"), "https://www.example.com/some/file-path?query={using brackets, spaces,+'and'%20\"quotes\"}") 4 | } 5 | 6 | http { 7 | endpoint = "localhost:4318" 8 | } 9 | 10 | output { 11 | metrics = [otelcol.exporter.otlp.default.input] 12 | } 13 | } 14 | 15 | otelcol.exporter.otlp "default" { 16 | client { 17 | endpoint = "database:4317" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/envvars/default_value_format.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | endpoint: ${env:NORMAL_FORMAT:-https://www.example.com/some/file-path?query={using brackets, spaces,+'and'%20"quotes"}} 6 | http: 7 | 8 | exporters: 9 | otlp: 10 | endpoint: database:4317 11 | 12 | service: 13 | pipelines: 14 | metrics: 15 | receivers: [otlp] 16 | processors: [] 17 | exporters: [otlp] 18 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/envvars/escaped_format.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.otlp "default" { 2 | grpc { 3 | endpoint = coalesce(sys.env("ESCAPED_FORMAT"), "") 4 | } 5 | 6 | http { 7 | endpoint = "localhost:4318" 8 | } 9 | 10 | output { 11 | metrics = [otelcol.exporter.otlp.default.input] 12 | } 13 | } 14 | 15 | otelcol.exporter.otlp "default" { 16 | client { 17 | endpoint = "database:4317" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/envvars/escaped_format.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | endpoint: ${env:ESCAPED_FORMAT} 6 | http: 7 | 8 | exporters: 9 | otlp: 10 | endpoint: database:4317 11 | 12 | service: 13 | pipelines: 14 | metrics: 15 | receivers: [otlp] 16 | processors: [] 17 | exporters: [otlp] 18 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/envvars/no_scheme.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.otlp "default" { 2 | grpc { 3 | endpoint = coalesce(sys.env("NO_SCHEME"), "") 4 | } 5 | 6 | http { 7 | endpoint = "localhost:4318" 8 | } 9 | 10 | output { 11 | metrics = [otelcol.exporter.otlp.default.input] 12 | } 13 | } 14 | 15 | otelcol.exporter.otlp "default" { 16 | client { 17 | endpoint = "database:4317" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/envvars/no_scheme.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | endpoint: ${NO_SCHEME} 6 | http: 7 | 8 | exporters: 9 | otlp: 10 | endpoint: database:4317 11 | 12 | service: 13 | pipelines: 14 | metrics: 15 | receivers: [otlp] 16 | processors: [] 17 | exporters: [otlp] 18 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/envvars/normal_format.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.otlp "default" { 2 | grpc { 3 | endpoint = coalesce(sys.env("NORMAL_FORMAT"), "") 4 | } 5 | 6 | http { 7 | endpoint = "localhost:4318" 8 | } 9 | 10 | output { 11 | metrics = [otelcol.exporter.otlp.default.input] 12 | } 13 | } 14 | 15 | otelcol.exporter.otlp "default" { 16 | client { 17 | endpoint = "database:4317" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/envvars/normal_format.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | endpoint: ${env:NORMAL_FORMAT} 6 | http: 7 | 8 | exporters: 9 | otlp: 10 | endpoint: database:4317 11 | 12 | service: 13 | pipelines: 14 | metrics: 15 | receivers: [otlp] 16 | processors: [] 17 | exporters: [otlp] 18 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/envvars/unknown_scheme.diags: -------------------------------------------------------------------------------- 1 | (Critical) failed to get otelcol config: cannot resolve the configuration: scheme "wow" is not supported for uri "wow:NO_SCHEME" 2 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/envvars/unknown_scheme.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | endpoint: ${wow:NO_SCHEME} 6 | http: 7 | 8 | exporters: 9 | otlp: 10 | endpoint: database:4317 11 | 12 | service: 13 | pipelines: 14 | metrics: 15 | receivers: [otlp] 16 | processors: [] 17 | exporters: [otlp] 18 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/filelog.diags: -------------------------------------------------------------------------------- 1 | (Warning) operators cannot currently be translated for receiver/filelog 2 | (Warning) header metadata_operators cannot currently be translated for receiver/filelog 3 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/influxdb.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.influxdb "default" { 2 | output { 3 | metrics = [otelcol.exporter.otlp.default.input] 4 | } 5 | } 6 | 7 | otelcol.exporter.otlp "default" { 8 | client { 9 | endpoint = "database:4317" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/influxdb.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | influxdb: 3 | 4 | exporters: 5 | otlp: 6 | endpoint: database:4317 7 | 8 | service: 9 | pipelines: 10 | metrics: 11 | receivers: [influxdb] 12 | processors: [] 13 | exporters: [otlp] 14 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/interval.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | http: 6 | 7 | processors: 8 | interval: 9 | pass_through: 10 | gauge: true 11 | summary: true 12 | 13 | exporters: 14 | otlp: 15 | endpoint: database:4317 16 | 17 | service: 18 | pipelines: 19 | metrics: 20 | receivers: [otlp] 21 | processors: [interval] 22 | exporters: [otlp] 23 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/jaeger.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | jaeger: 3 | protocols: 4 | grpc: 5 | thrift_binary: 6 | thrift_compact: 7 | thrift_http: 8 | 9 | exporters: 10 | otlp: 11 | endpoint: database:4317 12 | 13 | service: 14 | pipelines: 15 | traces: 16 | receivers: [jaeger] 17 | processors: [] 18 | exporters: [otlp] 19 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/opencensus.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.opencensus "default" { 2 | endpoint = "localhost:55678" 3 | 4 | output { 5 | metrics = [otelcol.exporter.otlp.default.input] 6 | traces = [otelcol.exporter.otlp.default.input] 7 | } 8 | } 9 | 10 | otelcol.exporter.otlp "default" { 11 | client { 12 | endpoint = "database:4317" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/opencensus.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | opencensus: 3 | 4 | exporters: 5 | otlp: 6 | endpoint: database:4317 7 | 8 | service: 9 | pipelines: 10 | metrics: 11 | receivers: [opencensus] 12 | processors: [] 13 | exporters: [otlp] 14 | traces: 15 | receivers: [opencensus] 16 | processors: [] 17 | exporters: [otlp] 18 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_dedup/samereceiver.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | http: 6 | 7 | processors: 8 | batch: 9 | 10 | exporters: 11 | otlp: 12 | endpoint: database:4317 13 | 14 | service: 15 | pipelines: 16 | metrics: # Group 17 | receivers: [otlp] 18 | processors: [] 19 | exporters: [otlp] 20 | traces/2: # Group 2 21 | receivers: [otlp] 22 | processors: [batch] 23 | exporters: [otlp] -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_dedup/samereceiver2.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | http: 6 | 7 | processors: 8 | batch: 9 | 10 | exporters: 11 | otlp: 12 | endpoint: database:4317 13 | 14 | service: 15 | pipelines: 16 | metrics: # Group 17 | receivers: [otlp] 18 | processors: [] 19 | exporters: [otlp] 20 | metrics/2: # Group 2 21 | receivers: [otlp] 22 | processors: [batch] 23 | exporters: [otlp] -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_dedup/samereceiver3.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.otlp "default" { 2 | grpc { 3 | endpoint = "localhost:4317" 4 | } 5 | 6 | http { 7 | endpoint = "localhost:4318" 8 | } 9 | 10 | output { 11 | metrics = [otelcol.exporter.otlp.default.input, otelcol.exporter.otlp._2_default.input] 12 | } 13 | } 14 | 15 | otelcol.exporter.otlp "default" { 16 | client { 17 | endpoint = "database:4317" 18 | } 19 | } 20 | 21 | otelcol.exporter.otlp "_2_default" { 22 | client { 23 | endpoint = "database:4317" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_dedup/samereceiver3.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | http: 6 | 7 | exporters: 8 | otlp: 9 | endpoint: database:4317 10 | 11 | service: 12 | pipelines: 13 | metrics: # Group 14 | receivers: [otlp] 15 | processors: [] 16 | exporters: [otlp] 17 | metrics/2: # Group 2 18 | receivers: [otlp] 19 | processors: [] 20 | exporters: [otlp] -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_errors/corrupt_config.diags: -------------------------------------------------------------------------------- 1 | (Critical) failed to get otelcol config: cannot unmarshal the configuration: decoding failed due to the following error(s): 2 | 3 | '' has invalid keys: bad-key 4 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_errors/corrupt_config.yaml: -------------------------------------------------------------------------------- 1 | bad-key: 2 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_errors/invalid_config.diags: -------------------------------------------------------------------------------- 1 | (Critical) failed to validate config: empty configuration file 2 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_errors/invalid_config.yaml: -------------------------------------------------------------------------------- 1 | # A config is invalid if it doesn't at least have one receiver and 2 | # exporter in every pipeline. 3 | service: 4 | pipelines: 5 | metrics: 6 | receivers: [] 7 | processors: [] 8 | exporters: [] 9 | 10 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_telemetry/default.diags: -------------------------------------------------------------------------------- 1 | (Warning) the service/telemetry/logs/sampling configuration is not supported 2 | (Warning) the service/telemetry/metrics/readers configuration is not supported - to gather Alloy's own telemetry refer to: https://grafana.com/docs/alloy/latest/collect/metamonitoring/ 3 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_telemetry/logging_console.diags: -------------------------------------------------------------------------------- 1 | (Warning) the service/telemetry/logs/sampling configuration is not supported 2 | (Warning) the service/telemetry/metrics/readers configuration is not supported - to gather Alloy's own telemetry refer to: https://grafana.com/docs/alloy/latest/collect/metamonitoring/ 3 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_telemetry/logging_default.diags: -------------------------------------------------------------------------------- 1 | (Warning) the service/telemetry/logs/sampling configuration is not supported 2 | (Warning) the service/telemetry/metrics/readers configuration is not supported - to gather Alloy's own telemetry refer to: https://grafana.com/docs/alloy/latest/collect/metamonitoring/ 3 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otelcol_telemetry/logging_json.diags: -------------------------------------------------------------------------------- 1 | (Warning) the service/telemetry/logs/sampling configuration is not supported 2 | (Warning) the service/telemetry/metrics/readers configuration is not supported - to gather Alloy's own telemetry refer to: https://grafana.com/docs/alloy/latest/collect/metamonitoring/ 3 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/otlp.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.otlp "default" { 2 | grpc { 3 | endpoint = "localhost:4317" 4 | } 5 | 6 | http { 7 | endpoint = "localhost:4318" 8 | compression_algorithms = ["zlib"] 9 | } 10 | 11 | output { 12 | metrics = [otelcol.exporter.otlp.default.input] 13 | logs = [otelcol.exporter.otlp.default.input] 14 | traces = [otelcol.exporter.otlp.default.input] 15 | } 16 | } 17 | 18 | otelcol.exporter.otlp "default" { 19 | client { 20 | endpoint = "database:4317" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/solace.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | solace: 3 | broker: [localhost:5672] 4 | auth: 5 | sasl_plain: 6 | username: otel 7 | password: otel01$ 8 | flow_control: 9 | delayed_retry: 10 | delay: 20ms 11 | tls: 12 | insecure: true 13 | queue: queue://#telemetry-profile123 14 | 15 | exporters: 16 | otlp: 17 | endpoint: database:4317 18 | 19 | service: 20 | pipelines: 21 | traces: 22 | receivers: [solace] 23 | processors: [] 24 | exporters: [otlp] 25 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/span.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | http: 6 | 7 | exporters: 8 | otlp: 9 | endpoint: database:4317 10 | 11 | processors: 12 | span: 13 | 14 | service: 15 | pipelines: 16 | metrics: 17 | receivers: [otlp] 18 | processors: [] 19 | exporters: [otlp] 20 | logs: 21 | receivers: [otlp] 22 | processors: [] 23 | exporters: [otlp] 24 | traces: 25 | receivers: [otlp] 26 | processors: [span] 27 | exporters: [otlp] 28 | 29 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/zipkin.alloy: -------------------------------------------------------------------------------- 1 | otelcol.receiver.zipkin "default" { 2 | endpoint = "localhost:9411" 3 | 4 | output { 5 | traces = [otelcol.exporter.otlp.default.input] 6 | } 7 | } 8 | 9 | otelcol.exporter.otlp "default" { 10 | client { 11 | endpoint = "database:4317" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /internal/converter/internal/otelcolconvert/testdata/zipkin.yaml: -------------------------------------------------------------------------------- 1 | receivers: 2 | zipkin: 3 | 4 | exporters: 5 | otlp: 6 | endpoint: database:4317 7 | 8 | service: 9 | pipelines: 10 | traces: 11 | receivers: [zipkin] 12 | processors: [] 13 | exporters: [otlp] 14 | -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/bad_config.diags: -------------------------------------------------------------------------------- 1 | (Critical) failed to parse Prometheus config: yaml: unmarshal errors: 2 | line 7: field not_a_thing not found in type config.plain 3 | -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/broken_yaml.diags: -------------------------------------------------------------------------------- 1 | (Critical) failed to parse Prometheus config: yaml: line 18: did not find expected key 2 | -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/consul.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: "prometheus1" 3 | static_configs: 4 | - targets: ["localhost:9090"] 5 | consul_sd_configs: 6 | - server: 'localhost:8500' 7 | services: ['myapp'] 8 | - job_name: "prometheus2" 9 | consul_sd_configs: 10 | - server: 'localhost:8500' 11 | services: ['otherapp'] 12 | 13 | remote_write: 14 | - name: "remote1" 15 | url: "http://remote-write-url1" -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/digitalocean.diags: -------------------------------------------------------------------------------- 1 | (Error) The converter does not support converting the provided digitalocean_sd_configs basic_auth config. 2 | -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/dns.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: "prometheus1" 3 | static_configs: 4 | - targets: ["localhost:9090"] 5 | dns_sd_configs: 6 | - names: 7 | - 'myapp.service.consul' 8 | type: 'SRV' 9 | port: 8080 10 | - job_name: "prometheus2" 11 | dns_sd_configs: 12 | - names: 13 | - 'myapp.service.consul' 14 | type: 'AAAA' 15 | port: 8080 16 | 17 | remote_write: 18 | - name: "remote1" 19 | url: "http://remote-write-url1" -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/docker.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: "prometheus1" 3 | static_configs: 4 | - targets: ["localhost:9090"] 5 | docker_sd_configs: 6 | - host: "unix:///var/run/docker.sock" 7 | - job_name: "prometheus2" 8 | docker_sd_configs: 9 | - host: "unix:///var/run/docker.sock" 10 | 11 | remote_write: 12 | - name: "remote1" 13 | url: "http://remote-write-url1" -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/gce.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: "prometheus1" 3 | static_configs: 4 | - targets: ["localhost:9090"] 5 | gce_sd_configs: 6 | - project: 'your-project-id' 7 | zone: 'us-central1-a' 8 | port: 8080 9 | - job_name: "prometheus2" 10 | gce_sd_configs: 11 | - project: 'your-project-id' 12 | zone: 'us-central1-a' 13 | port: 8080 14 | 15 | remote_write: 16 | - name: "remote1" 17 | url: "http://remote-write-url1" -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/kubernetes.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: "prometheus1" 3 | static_configs: 4 | - targets: ["localhost:9090"] 5 | kubernetes_sd_configs: 6 | - role: endpoints 7 | - job_name: "prometheus2" 8 | kubernetes_sd_configs: 9 | - role: endpoints 10 | 11 | remote_write: 12 | - name: "remote1" 13 | url: "http://remote-write-url1" -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/kuma.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: "prometheus1" 3 | static_configs: 4 | - targets: ["localhost:9090"] 5 | kuma_sd_configs: 6 | - server: "http://kuma-control-plane.kuma-system.svc:5677" 7 | refresh_interval: "1m" 8 | - job_name: "prometheus2" 9 | kuma_sd_configs: 10 | - server: "http://kuma-control-plane.kuma-system.svc:5676" 11 | fetch_timeout: "10s" 12 | 13 | remote_write: 14 | - name: "remote1" 15 | url: "http://remote-write-url1" 16 | 17 | -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/linode.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: "prometheus1" 3 | static_configs: 4 | - targets: ["localhost:9090"] 5 | linode_sd_configs: 6 | - refresh_interval: "100s" 7 | port: 8080 8 | - job_name: "prometheus2" 9 | linode_sd_configs: 10 | - {} 11 | 12 | remote_write: 13 | - name: "remote1" 14 | url: "http://remote-write-url1" 15 | 16 | -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/scrape.diags: -------------------------------------------------------------------------------- 1 | (Error) The converter does not support converting the provided scrape_configs track_timestamps_staleness config. 2 | -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/serverset.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: "prometheus1" 3 | serverset_sd_configs: 4 | - servers: [ "zk1", "zk2", "zk3" ] 5 | paths: [ "/path/to/znode1", "/path/to/znode2" ] 6 | timeout: 30s 7 | - job_name: "prometheus2" 8 | serverset_sd_configs: 9 | - servers: [ "zk1" ] 10 | paths: [ "/path/to/znode1" ] 11 | 12 | remote_write: 13 | - name: "remote1" 14 | url: "http://remote-write-url1" -------------------------------------------------------------------------------- /internal/converter/internal/prometheusconvert/testdata/triton.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: "prometheus1" 3 | static_configs: 4 | - targets: ["localhost:9090"] 5 | triton_sd_configs: 6 | - account: "TRITON_ACCOUNT" 7 | dns_suffix: "triton.example" 8 | endpoint: "0.0.0.0:8080" 9 | - job_name: "prometheus2" 10 | triton_sd_configs: 11 | - account: "TRITON_ACCOUNT" 12 | dns_suffix: "triton.example2" 13 | endpoint: "0.0.0.0:8081" 14 | 15 | remote_write: 16 | - name: "remote1" 17 | url: "http://remote-write-url1" -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/internal/build/global_context.go: -------------------------------------------------------------------------------- 1 | package build 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/grafana/alloy/internal/component/common/loki" 7 | ) 8 | 9 | type GlobalContext struct { 10 | WriteReceivers []loki.LogsReceiver 11 | TargetSyncPeriod time.Duration 12 | LabelPrefix string 13 | } 14 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/azure.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: fun 3 | azure_sd_configs: 4 | - subscription_id: "subscription" 5 | tenant_id: "tenant" 6 | client_id: "client" 7 | client_secret: "secret" 8 | tracing: {enabled: false} 9 | server: {register_instrumentation: false} 10 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/bad_config.diags: -------------------------------------------------------------------------------- 1 | (Critical) failed to parse Promtail config: yaml: unmarshal errors: 2 | line 11: field not_a_thing not found in type promtailconvert.Config 3 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/bad_config.yaml: -------------------------------------------------------------------------------- 1 | clients: 2 | - external_labels: 3 | cluster: backyard-pine-treehouse-1 4 | url: http://localhost/loki/api/v1/push 5 | scrape_configs: 6 | - job_name: kubernetes-pods 7 | kubernetes_sd_configs: 8 | - role: pod 9 | pipeline_stages: 10 | - cri: {} 11 | not_a_thing: true 12 | server: 13 | profiling_enabled: true 14 | tracing: 15 | enabled: false 16 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/consulagent.diags: -------------------------------------------------------------------------------- 1 | (Warning) node_meta is not used by discovery.consulagent and will be ignored 2 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/digitalocean.alloy: -------------------------------------------------------------------------------- 1 | discovery.digitalocean "fun" { 2 | refresh_interval = "10m0s" 3 | port = 1234 4 | } 5 | 6 | local.file_match "fun" { 7 | path_targets = discovery.digitalocean.fun.targets 8 | } 9 | 10 | loki.source.file "fun" { 11 | targets = local.file_match.fun.targets 12 | forward_to = [] 13 | legacy_positions_file = "/var/log/positions.yaml" 14 | } 15 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/digitalocean.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: fun 3 | digitalocean_sd_configs: 4 | - refresh_interval: 10m 5 | port: 1234 6 | 7 | tracing: {enabled: false} 8 | server: {register_instrumentation: false} 9 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/ec2.alloy: -------------------------------------------------------------------------------- 1 | discovery.ec2 "fun" { 2 | region = "us-east-1" 3 | access_key = "YOUR_ACCESS_KEY" 4 | secret_key = "YOUR_SECRET_KEY" 5 | port = 8080 6 | } 7 | 8 | local.file_match "fun" { 9 | path_targets = discovery.ec2.fun.targets 10 | } 11 | 12 | loki.source.file "fun" { 13 | targets = local.file_match.fun.targets 14 | forward_to = [] 15 | legacy_positions_file = "/var/log/positions.yaml" 16 | } 17 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/ec2.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: fun 3 | ec2_sd_configs: 4 | - region: 'us-east-1' 5 | access_key: 'YOUR_ACCESS_KEY' 6 | secret_key: 'YOUR_SECRET_KEY' 7 | port: 8080 8 | 9 | tracing: {enabled: false} 10 | server: {register_instrumentation: false} 11 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/file.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: fun 3 | file_sd_configs: 4 | - files: 5 | - /etc/prometheus/targets/*.json 6 | - /etc/prometheus/targets/*.yaml 7 | - /etc/prometheus/targets/*.json 8 | refresh_interval: 5m 9 | - files: 10 | - /etc/agent/targets/*.json 11 | - /etc/agent/targets/*.yaml 12 | - /etc/agent/targets/*.yml 13 | refresh_interval: 30m 14 | tracing: {enabled: false} 15 | server: {register_instrumentation: false} 16 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/gce.alloy: -------------------------------------------------------------------------------- 1 | discovery.gce "fun" { 2 | project = "your-project-id" 3 | zone = "us-central1-a" 4 | port = 8080 5 | } 6 | 7 | local.file_match "fun" { 8 | path_targets = discovery.gce.fun.targets 9 | } 10 | 11 | loki.source.file "fun" { 12 | targets = local.file_match.fun.targets 13 | forward_to = [] 14 | legacy_positions_file = "/var/log/positions.yaml" 15 | } 16 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/gce.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: fun 3 | gce_sd_configs: 4 | - project: 'your-project-id' 5 | zone: 'us-central1-a' 6 | port: 8080 7 | 8 | tracing: {enabled: false} 9 | server: {register_instrumentation: false} 10 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/gelf.yaml: -------------------------------------------------------------------------------- 1 | clients: 2 | - url: http://localhost/loki/api/v1/push 3 | scrape_configs: 4 | - job_name: fun 5 | relabel_configs: 6 | - source_labels: 7 | - __trail__ 8 | target_label: __path__ 9 | gelf: 10 | listen_address: localhost:12201 11 | labels: 12 | job: fun 13 | quality: excellent 14 | use_incoming_timestamp: true 15 | tracing: {enabled: false} 16 | server: {register_instrumentation: false} 17 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/journal.yaml: -------------------------------------------------------------------------------- 1 | clients: 2 | - url: http://localhost/loki/api/v1/push 3 | scrape_configs: 4 | - job_name: fun 5 | journal: 6 | json: true 7 | max_age: 20h 8 | labels: 9 | variety: chardonnay 10 | region: chablis 11 | - job_name: example 12 | journal: 13 | labels: 14 | name: alice 15 | best_friend: bob 16 | tracing: {enabled: false} 17 | server: {register_instrumentation: false} 18 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/journal_relabel.yaml: -------------------------------------------------------------------------------- 1 | clients: 2 | - url: http://localhost/loki/api/v1/push 3 | scrape_configs: 4 | - job_name: fun 5 | journal: 6 | json: true 7 | max_age: 20h 8 | labels: 9 | variety: chardonnay 10 | region: chablis 11 | relabel_configs: 12 | - source_labels: 13 | - __trail__ 14 | target_label: __path__ 15 | tracing: {enabled: false} 16 | server: {register_instrumentation: false} 17 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/marathon.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: fun 3 | marathon_sd_configs: 4 | - servers : ["serv1", "serv2"] 5 | refresh_interval: 5m 6 | basic_auth: 7 | username: "username" 8 | password: "password" 9 | - servers : ["serv3"] 10 | auth_token: "auth_token" 11 | tracing: {enabled: false} 12 | server: {register_instrumentation: false} 13 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/nerve.alloy: -------------------------------------------------------------------------------- 1 | discovery.nerve "fun" { 2 | servers = ["1.2.3.4"] 3 | paths = ["/nerve/services/your_http_service/services", "/nerve/services/your_tcp_service/services"] 4 | timeout = "15s" 5 | } 6 | 7 | local.file_match "fun" { 8 | path_targets = discovery.nerve.fun.targets 9 | } 10 | 11 | loki.source.file "fun" { 12 | targets = local.file_match.fun.targets 13 | forward_to = [] 14 | legacy_positions_file = "/var/log/positions.yaml" 15 | } 16 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/nerve.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: fun 3 | nerve_sd_configs: 4 | - servers: ["1.2.3.4"] 5 | paths: ["/nerve/services/your_http_service/services", "/nerve/services/your_tcp_service/services"] 6 | timeout: "15s" 7 | tracing: {enabled: false} 8 | server: {register_instrumentation: false} 9 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/pipeline_stages_cri_empty.yaml: -------------------------------------------------------------------------------- 1 | clients: 2 | - url: http://localhost/loki/api/v1/push 3 | scrape_configs: 4 | - job_name: example 5 | pipeline_stages: 6 | - cri: { } 7 | kubernetes_sd_configs: 8 | - role: pod 9 | kubeconfig_file: /home/toby/.kube/config 10 | 11 | tracing: { enabled: false } 12 | server: { register_instrumentation: false } -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/pipeline_stages_drop.diags: -------------------------------------------------------------------------------- 1 | (Error) invalid pipeline_stages.drop.longer_than field: strconv.UnmarshalText: parsing "1.21GIGAWATTS": invalid syntax 2 | (Error) invalid pipeline_stages.drop.older_than field: time: invalid duration "lightyear" 3 | (Error) invalid pipeline_stages.drop.source field type 'map[interface {}]interface {}': map[invalid:object] 4 | (Error) invalid pipeline_stages.drop.source[0] field type 'map[interface {}]interface {}': map[invalid:object] 5 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/pipeline_stages_structured_metadata.yaml: -------------------------------------------------------------------------------- 1 | clients: 2 | - url: http://localhost/loki/api/v1/push 3 | scrape_configs: 4 | - job_name: example 5 | pipeline_stages: 6 | - logfmt: 7 | mapping: 8 | app: 9 | - structured_metadata: 10 | app: app 11 | 12 | kubernetes_sd_configs: 13 | - role: pod 14 | kubeconfig_file: /home/toby/.kube/config 15 | 16 | tracing: { enabled: false } 17 | server: { register_instrumentation: false } -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/serverset.alloy: -------------------------------------------------------------------------------- 1 | discovery.serverset "fun" { 2 | servers = ["localhost:8500"] 3 | paths = ["/v1/catalog/services"] 4 | } 5 | 6 | local.file_match "fun" { 7 | path_targets = discovery.serverset.fun.targets 8 | } 9 | 10 | loki.source.file "fun" { 11 | targets = local.file_match.fun.targets 12 | forward_to = [] 13 | legacy_positions_file = "/var/log/positions.yaml" 14 | } 15 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/serverset.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: fun 3 | serverset_sd_configs: 4 | - servers: ['localhost:8500'] 5 | paths: ['/v1/catalog/services'] 6 | 7 | tracing: {enabled: false} 8 | server: {register_instrumentation: false} 9 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/syslog_invalid.diags: -------------------------------------------------------------------------------- 1 | (Critical) unknown syslog format "foobar" 2 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/syslog_invalid.yaml: -------------------------------------------------------------------------------- 1 | clients: 2 | - url: http://localhost/loki/api/v1/push 3 | scrape_configs: 4 | - job_name: test_invalid_syslog_format 5 | syslog: 6 | listen_address: localhost:4000 7 | listen_protocol: udp 8 | idle_timeout: 1m 9 | label_structured_data: true 10 | use_incoming_timestamp: true 11 | syslog_format: foobar 12 | 13 | tracing: {enabled: false} 14 | server: {register_instrumentation: false} 15 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/triton.alloy: -------------------------------------------------------------------------------- 1 | discovery.triton "fun" { 2 | account = "TRITON_ACCOUNT" 3 | dns_suffix = "triton.example" 4 | endpoint = "0.0.0.0:8080" 5 | } 6 | 7 | local.file_match "fun" { 8 | path_targets = discovery.triton.fun.targets 9 | } 10 | 11 | loki.source.file "fun" { 12 | targets = local.file_match.fun.targets 13 | forward_to = [] 14 | legacy_positions_file = "/var/log/positions.yaml" 15 | } 16 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/triton.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: fun 3 | triton_sd_configs: 4 | - account: "TRITON_ACCOUNT" 5 | dns_suffix: "triton.example" 6 | endpoint: "0.0.0.0:8080" 7 | tracing: {enabled: false} 8 | server: {register_instrumentation: false} 9 | -------------------------------------------------------------------------------- /internal/converter/internal/promtailconvert/testdata/unsupported.alloy: -------------------------------------------------------------------------------- 1 | loki.write "default" { 2 | endpoint { 3 | url = "http://localhost/loki/api/v1/push" 4 | retry_on_http_429 = false 5 | } 6 | external_labels = {} 7 | } 8 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata-v2/integrations_v2.diags: -------------------------------------------------------------------------------- 1 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 2 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata-v2/missing_metrics_config.diags: -------------------------------------------------------------------------------- 1 | (Critical) integration agent is looking for an undefined metrics config: not_default 2 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 3 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata-v2/missing_metrics_config.yaml: -------------------------------------------------------------------------------- 1 | metrics: 2 | global: 3 | remote_write: 4 | - url: http://localhost:9009/api/prom/push 5 | configs: 6 | - name: default 7 | 8 | integrations: 9 | agent: 10 | instance: "default" 11 | autoscrape: 12 | metrics_instance: "not_default" -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata-v2_windows/integrations_v2.diags: -------------------------------------------------------------------------------- 1 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 2 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata-v2_windows/integrations_v2.yaml: -------------------------------------------------------------------------------- 1 | metrics: 2 | global: 3 | remote_write: 4 | - url: http://localhost:9009/api/prom/push 5 | configs: 6 | - name: default 7 | 8 | integrations: 9 | windows: 10 | autoscrape: 11 | metrics_instance: "default" -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/integrations.diags: -------------------------------------------------------------------------------- 1 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 2 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/integrations_no_rw.diags: -------------------------------------------------------------------------------- 1 | (Critical) The converter does not support handling integrations which are not connected to a remote_write. 2 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 3 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/integrations_no_rw.yaml: -------------------------------------------------------------------------------- 1 | integrations: 2 | node_exporter: 3 | scrape_integration: true 4 | enabled: true -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/prom_missing_name.diags: -------------------------------------------------------------------------------- 1 | (Critical) failed to parse Static config: error in config file: error validating instance at index 0: missing instance name 2 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/prom_missing_name.yaml: -------------------------------------------------------------------------------- 1 | metrics: 2 | configs: 3 | - remote_write: 4 | - url: http://localhost:9010/api/prom/push 5 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/prom_remote_write.diags: -------------------------------------------------------------------------------- 1 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 2 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/prom_scrape.diags: -------------------------------------------------------------------------------- 1 | (Error) The converter does not support converting the provided global evaluation_interval config. 2 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 3 | (Warning) The converter does not support converting the provided metrics wal_directory config: Use the run command flag --storage.path instead. 4 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/promtail_scrape.diags: -------------------------------------------------------------------------------- 1 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 2 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/sanitize.diags: -------------------------------------------------------------------------------- 1 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 2 | (Warning) The converter does not support converting the provided metrics wal_directory config: Use the run command flag --storage.path instead. 3 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/traces.diags: -------------------------------------------------------------------------------- 1 | (Warning) automatic_logging for traces has no direct Alloy equivalent. A best effort translation has been made to otelcol.exporter.debug but the behavior will differ. 2 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 3 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata/traces_multi.diags: -------------------------------------------------------------------------------- 1 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 2 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata_linux/promtail_prom.diags: -------------------------------------------------------------------------------- 1 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 2 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata_windows/integrations.diags: -------------------------------------------------------------------------------- 1 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 2 | -------------------------------------------------------------------------------- /internal/converter/internal/staticconvert/testdata_windows/promtail_prom.diags: -------------------------------------------------------------------------------- 1 | (Warning) Please review your agent command line flags and ensure they are set in your Alloy config file where necessary. 2 | -------------------------------------------------------------------------------- /internal/nodeconf/argument/argument.go: -------------------------------------------------------------------------------- 1 | package argument 2 | 3 | const BlockName = "argument" 4 | 5 | type Arguments struct { 6 | Optional bool `alloy:"optional,attr,optional"` 7 | Default any `alloy:"default,attr,optional"` 8 | Comment string `alloy:"comment,attr,optional"` 9 | } 10 | -------------------------------------------------------------------------------- /internal/nodeconf/export/export.go: -------------------------------------------------------------------------------- 1 | package export 2 | 3 | const BlockName = "export" 4 | 5 | type Arguments struct { 6 | Value any `alloy:"value,attr"` 7 | } 8 | -------------------------------------------------------------------------------- /internal/runtime/componenttest/addr.go: -------------------------------------------------------------------------------- 1 | package componenttest 2 | 3 | import ( 4 | "fmt" 5 | "testing" 6 | 7 | "github.com/phayes/freeport" 8 | "github.com/stretchr/testify/require" 9 | ) 10 | 11 | func GetFreeAddr(t *testing.T) string { 12 | t.Helper() 13 | 14 | portNumber, err := freeport.GetFreePort() 15 | require.NoError(t, err) 16 | 17 | return fmt.Sprintf("127.0.0.1:%d", portNumber) 18 | } 19 | -------------------------------------------------------------------------------- /internal/runtime/componenttest/context.go: -------------------------------------------------------------------------------- 1 | package componenttest 2 | 3 | import ( 4 | "context" 5 | "testing" 6 | ) 7 | 8 | // TestContext returns a context which cancels itself when t finishes. 9 | func TestContext(t testing.TB) context.Context { 10 | // nolint:usetesting 11 | ctx, cancel := context.WithCancel(context.Background()) 12 | t.Cleanup(cancel) 13 | return ctx 14 | } 15 | -------------------------------------------------------------------------------- /internal/runtime/internal/testcomponents/doc.go: -------------------------------------------------------------------------------- 1 | // Package testcomponents contains components useful for testing. They are not 2 | // intended to be exposed by end users and so this package should only be 3 | // imported in tests. 4 | package testcomponents 5 | -------------------------------------------------------------------------------- /internal/runtime/internal/testservices/doc.go: -------------------------------------------------------------------------------- 1 | // Package testservices contains services useful for testing. They are not 2 | // intended to be exposed by end users and so this package should only be 3 | // imported in tests. 4 | package testservices 5 | -------------------------------------------------------------------------------- /internal/runtime/testdata/.gitignore: -------------------------------------------------------------------------------- 1 | repo.git 2 | repo2.git -------------------------------------------------------------------------------- /internal/runtime/testdata/foreach/foreach_10.txtar: -------------------------------------------------------------------------------- 1 | A collection containing arrays. 2 | 3 | -- main.alloy -- 4 | foreach "testForeach" { 5 | collection = [[10, 4, 100], [20, 6, 200]] 6 | var = "num" 7 | 8 | template { 9 | testcomponents.pulse "pt" { 10 | // Only ingest the 4 and the 6. 11 | max = num[1] 12 | frequency = "10ms" 13 | forward_to = [testcomponents.summation_receiver.sum.receiver] 14 | } 15 | } 16 | } 17 | 18 | // Similar to testcomponents.summation, but with a "receiver" export 19 | testcomponents.summation_receiver "sum" { 20 | } 21 | -------------------------------------------------------------------------------- /internal/runtime/testdata/foreach/foreach_11.txtar: -------------------------------------------------------------------------------- 1 | A collection containing maps which contain maps. 2 | 3 | -- main.alloy -- 4 | foreach "testForeach" { 5 | collection = [{"a" = {"c" = 3}}, {"a" = {"c" = 7}}] 6 | var = "num" 7 | 8 | template { 9 | testcomponents.pulse "pt" { 10 | max = num["a"]["c"] 11 | frequency = "10ms" 12 | forward_to = [testcomponents.summation_receiver.sum.receiver] 13 | } 14 | } 15 | } 16 | 17 | // Similar to testcomponents.summation, but with a "receiver" export 18 | testcomponents.summation_receiver "sum" { 19 | } 20 | -------------------------------------------------------------------------------- /internal/runtime/testdata/foreach/foreach_2.txtar: -------------------------------------------------------------------------------- 1 | Foreach with two items. Both pulse components will send "1" till they both reach 5, adding to 10 in the summation component. 2 | 3 | -- main.alloy -- 4 | foreach "testForeach" { 5 | collection = [5, 5] 6 | var = "num" 7 | 8 | template { 9 | testcomponents.pulse "pt" { 10 | max = num 11 | frequency = "10ms" 12 | forward_to = [testcomponents.summation_receiver.sum.receiver] 13 | } 14 | } 15 | } 16 | 17 | testcomponents.summation_receiver "sum" { 18 | } 19 | -------------------------------------------------------------------------------- /internal/runtime/testdata/foreach/foreach_9.txtar: -------------------------------------------------------------------------------- 1 | A collection containing maps. 2 | 3 | -- main.alloy -- 4 | foreach "testForeach" { 5 | collection = [{"a" = 4}, {"a" = 6}] 6 | var = "num" 7 | 8 | template { 9 | testcomponents.pulse "pt" { 10 | max = num["a"] 11 | frequency = "10ms" 12 | forward_to = [testcomponents.summation_receiver.sum.receiver] 13 | } 14 | } 15 | } 16 | 17 | // Similar to testcomponents.summation, but with a "receiver" export 18 | testcomponents.summation_receiver "sum" { 19 | } 20 | -------------------------------------------------------------------------------- /internal/runtime/testdata/foreach_stringer/foreach_1.txtar: -------------------------------------------------------------------------------- 1 | A collection containing an int. 2 | 3 | -- main.alloy -- 4 | foreach "testForeach" { 5 | collection = [1] 6 | var = "item" 7 | 8 | template { 9 | testcomponents.stringer "st" { 10 | input_int = item 11 | forward_to = [testcomponents.string_receiver.log.receiver] 12 | } 13 | } 14 | } 15 | 16 | // Receive strings and append them to a log, 17 | // separated by a new line. 18 | testcomponents.string_receiver "log" { 19 | } 20 | 21 | -- expected_debug_info.txt -- 22 | 1 23 | -------------------------------------------------------------------------------- /internal/runtime/testdata/foreach_stringer/foreach_4.txtar: -------------------------------------------------------------------------------- 1 | A collection containing a bool. 2 | 3 | -- main.alloy -- 4 | foreach "testForeach" { 5 | collection = [true] 6 | var = "item" 7 | 8 | template { 9 | testcomponents.stringer "st" { 10 | input_bool = item 11 | forward_to = [testcomponents.string_receiver.log.receiver] 12 | } 13 | } 14 | } 15 | 16 | // Receive strings and append them to a log, 17 | // separated by a new line. 18 | testcomponents.string_receiver "log" { 19 | } 20 | 21 | -- expected_debug_info.txt -- 22 | true 23 | -------------------------------------------------------------------------------- /internal/runtime/testdata/foreach_stringer/foreach_5.txtar: -------------------------------------------------------------------------------- 1 | A collection containing a float. 2 | 3 | -- main.alloy -- 4 | foreach "testForeach" { 5 | collection = [3.14] 6 | var = "item" 7 | 8 | template { 9 | testcomponents.stringer "st" { 10 | input_float = item 11 | forward_to = [testcomponents.string_receiver.log.receiver] 12 | } 13 | } 14 | } 15 | 16 | // Receive strings and append them to a log, 17 | // separated by a new line. 18 | testcomponents.string_receiver "log" { 19 | } 20 | 21 | -- expected_debug_info.txt -- 22 | 3.14 23 | -------------------------------------------------------------------------------- /internal/runtime/testdata/foreach_stringer/foreach_6.txtar: -------------------------------------------------------------------------------- 1 | A collection containing a string with a dot. 2 | 3 | -- main.alloy -- 4 | foreach "testForeach" { 5 | collection = ["aaa.bbb"] 6 | var = "item" 7 | 8 | template { 9 | testcomponents.stringer "st" { 10 | input_string = item 11 | forward_to = [testcomponents.string_receiver.log.receiver] 12 | } 13 | } 14 | } 15 | 16 | // Receive strings and append them to a log, 17 | // separated by a new line. 18 | testcomponents.string_receiver "log" { 19 | } 20 | 21 | -- expected_debug_info.txt -- 22 | "aaa.bbb" -------------------------------------------------------------------------------- /internal/runtime/testdata/import_error/import_error_1.txtar: -------------------------------------------------------------------------------- 1 | Imported declare tries to access declare at the root. 2 | 3 | -- main.alloy -- 4 | declare "cantAccessThis" { 5 | export "output" { 6 | value = -1 7 | } 8 | } 9 | 10 | import.string "testImport" { 11 | content = ` declare "a" { 12 | cantAccessThis "default" {} 13 | }` 14 | } 15 | 16 | testImport.a "cc" {} 17 | 18 | -- error -- 19 | cannot find the definition of component name "cantAccessThis" 20 | -------------------------------------------------------------------------------- /internal/runtime/testdata/import_error/import_error_2.txtar: -------------------------------------------------------------------------------- 1 | Root tries to access declare in nested import. 2 | 3 | -- main.alloy -- 4 | import.string "testImport" { 5 | content = `import.string "nestedImport" { 6 | content = 'declare "cantAccessThis" {}' 7 | }` 8 | } 9 | 10 | testImport.cantAccessThis "cc" {} 11 | 12 | -- error -- 13 | Failed to build component: loading custom component controller: custom component config not found in the registry, namespace: "testImport", componentName: "cantAccessThis" 14 | -------------------------------------------------------------------------------- /internal/runtime/testdata/import_error/import_error_3.txtar: -------------------------------------------------------------------------------- 1 | Use of an imported component with too low stability level propagates the error 2 | 3 | -- main.alloy -- 4 | 5 | import.string "testImport" { 6 | content = ` declare "a" { 7 | testcomponents.experimental "unstable" {} 8 | }` 9 | } 10 | 11 | testImport.a "cc" {} 12 | 13 | -- error -- 14 | component "testcomponents.experimental" is at stability level "experimental", which is below the minimum allowed stability level "public-preview" 15 | -------------------------------------------------------------------------------- /internal/runtime/testdata/import_error/import_error_4.txtar: -------------------------------------------------------------------------------- 1 | Use of a nested declare component with too low stability level propagates the error 2 | 3 | -- main.alloy -- 4 | 5 | declare "a" { 6 | 7 | declare "b" { 8 | testcomponents.experimental "unstable" {} 9 | } 10 | 11 | b "cc" {} 12 | 13 | } 14 | 15 | a "cc" {} 16 | 17 | -- error -- 18 | component "testcomponents.experimental" is at stability level "experimental", which is below the minimum allowed stability level "public-preview" 19 | -------------------------------------------------------------------------------- /internal/runtime/testdata/import_error/import_error_5.txtar: -------------------------------------------------------------------------------- 1 | Use of an imported community component without specifying the flag propagates the error 2 | 3 | -- main.alloy -- 4 | 5 | import.string "testImport" { 6 | content = ` declare "a" { 7 | testcomponents.community "com" {} 8 | }` 9 | } 10 | 11 | testImport.a "cc" {} 12 | 13 | -- error -- 14 | the component "testcomponents.community" is a community component. Use the --feature.community-components.enabled command-line flag to enable community components 15 | -------------------------------------------------------------------------------- /internal/runtime/testdata/import_error/import_error_6.txtar: -------------------------------------------------------------------------------- 1 | Use of a nested declare community component without specifying the flag propagates the error 2 | 3 | -- main.alloy -- 4 | 5 | declare "a" { 6 | 7 | declare "b" { 8 | testcomponents.community "com" {} 9 | } 10 | 11 | b "cc" {} 12 | 13 | } 14 | 15 | a "cc" {} 16 | 17 | -- error -- 18 | the component "testcomponents.community" is a community component. Use the --feature.community-components.enabled command-line flag to enable community components 19 | -------------------------------------------------------------------------------- /internal/runtime/testdata/import_git/import_git_1.txtar: -------------------------------------------------------------------------------- 1 | Import passthrough module. 2 | 3 | -- main.alloy -- 4 | testcomponents.count "inc" { 5 | frequency = "10ms" 6 | max = 10 7 | } 8 | 9 | import.git "testImport" { 10 | // Requires repo.git.tar to be extracted 11 | repository = "./testdata/repo.git" 12 | path = "module_passthrough.alloy" 13 | } 14 | 15 | testImport.a "cc" { 16 | input = testcomponents.count.inc.count 17 | } 18 | 19 | testcomponents.summation "sum" { 20 | input = testImport.a.cc.output 21 | } 22 | -------------------------------------------------------------------------------- /internal/runtime/testdata/import_git/import_git_2.txtar: -------------------------------------------------------------------------------- 1 | Import passthrough module from a directory stored in a git repository. 2 | 3 | -- main.alloy -- 4 | testcomponents.count "inc" { 5 | frequency = "10ms" 6 | max = 10 7 | } 8 | 9 | import.git "testImport" { 10 | // Requires repo.git.tar to be extracted 11 | repository = "./testdata/repo.git" 12 | path = "passthrough" 13 | } 14 | 15 | testImport.a "cc" { 16 | input = testcomponents.count.inc.count 17 | } 18 | 19 | testcomponents.summation "sum" { 20 | input = testImport.a.cc.output 21 | } 22 | -------------------------------------------------------------------------------- /internal/runtime/testdata/import_git/import_git_4.txtar: -------------------------------------------------------------------------------- 1 | Import a module that contains an import.file with a relative import path. 2 | 3 | -- main.alloy -- 4 | testcomponents.count "inc" { 5 | frequency = "10ms" 6 | max = 10 7 | } 8 | 9 | import.git "testImport" { 10 | // Requires repo.git.tar to be extracted 11 | repository = "./testdata/repo.git" 12 | path = "module_import_file.alloy" 13 | } 14 | 15 | testImport.a "cc" { 16 | input = testcomponents.count.inc.count 17 | } 18 | 19 | testcomponents.summation "sum" { 20 | input = testImport.a.cc.output 21 | } 22 | -------------------------------------------------------------------------------- /internal/runtime/testdata/import_http/import_http_1.txtar: -------------------------------------------------------------------------------- 1 | Import passthrough module. 2 | 3 | -- main.alloy -- 4 | testcomponents.count "inc" { 5 | frequency = "10ms" 6 | max = 10 7 | } 8 | 9 | import.http "testImport" { 10 | url = "https://raw.githubusercontent.com/wildum/module/master/module_passthrough.river" 11 | } 12 | 13 | testImport.a "cc" { 14 | input = testcomponents.count.inc.count 15 | } 16 | 17 | testcomponents.summation "sum" { 18 | input = testImport.a.cc.output 19 | } 20 | -------------------------------------------------------------------------------- /internal/runtime/testdata/repo.git.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/runtime/testdata/repo.git.tar -------------------------------------------------------------------------------- /internal/runtime/testdata/repo2.git.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/runtime/testdata/repo2.git.tar -------------------------------------------------------------------------------- /internal/runtime/tracing/internal/jaegerremote/README.md: -------------------------------------------------------------------------------- 1 | # jaegerremote 2 | 3 | This package contains a temporary fork of 4 | the `go.opentelemetry.io/contrib/samplers/jaegerremote@v0.5.2` module which is 5 | used to work around an issue where importing the OpenTelemetry Collector Jaeger 6 | receiver and jaegerremote modules causes a run-time panic. 7 | 8 | See [open-telemetry/opentelemetry-go-contrib#2981][upstream-issue] for tracking 9 | the issue that led to the need for this fork. 10 | 11 | [upstream-issue]: (https://github.com/open-telemetry/opentelemetry-go-contrib/issues/2981) 12 | -------------------------------------------------------------------------------- /internal/static/config/encoder/test_encoding_unknown.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/static/config/encoder/test_encoding_unknown.txt -------------------------------------------------------------------------------- /internal/static/config/encoder/test_encoding_utf16be.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/static/config/encoder/test_encoding_utf16be.txt -------------------------------------------------------------------------------- /internal/static/config/encoder/test_encoding_utf16le.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/static/config/encoder/test_encoding_utf16le.txt -------------------------------------------------------------------------------- /internal/static/config/encoder/test_encoding_utf32be.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/static/config/encoder/test_encoding_utf32be.txt -------------------------------------------------------------------------------- /internal/static/config/encoder/test_encoding_utf32le.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/static/config/encoder/test_encoding_utf32le.txt -------------------------------------------------------------------------------- /internal/static/config/encoder/test_encoding_utf8.txt: -------------------------------------------------------------------------------- 1 | server: 2 | log_level: ${TEST} -------------------------------------------------------------------------------- /internal/static/config/encoder/test_encoding_utf8bom.txt: -------------------------------------------------------------------------------- 1 | server: 2 | log_level: ${TEST} -------------------------------------------------------------------------------- /internal/static/config/testdata/server_empty.yml: -------------------------------------------------------------------------------- 1 | server: 2 | -------------------------------------------------------------------------------- /internal/static/integrations/cloudwatch_exporter/docs/template.md: -------------------------------------------------------------------------------- 1 | {{< column-list >}} 2 | 3 | {{SERVICE_LIST}} 4 | 5 | {{< /column-list >}} -------------------------------------------------------------------------------- /internal/static/integrations/github_exporter/github_test.go: -------------------------------------------------------------------------------- 1 | package github_exporter 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/grafana/alloy/internal/static/config" 7 | // register github_exporter 8 | ) 9 | 10 | func TestConfig_SecretGithub(t *testing.T) { 11 | stringCfg := ` 12 | prometheus: 13 | wal_directory: /tmp/agent 14 | integrations: 15 | github_exporter: 16 | enabled: true 17 | api_token: secret_api` 18 | config.CheckSecret(t, stringCfg, "secret_api") 19 | } 20 | -------------------------------------------------------------------------------- /internal/static/integrations/kafka_exporter/kafka_test.go: -------------------------------------------------------------------------------- 1 | package kafka_exporter 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/grafana/alloy/internal/static/config" 7 | ) 8 | 9 | func TestConfig_SecretKafkaPassword(t *testing.T) { 10 | stringCfg := ` 11 | prometheus: 12 | wal_directory: /tmp/agent 13 | integrations: 14 | kafka_exporter: 15 | enabled: true 16 | sasl_password: secret_password 17 | ` 18 | config.CheckSecret(t, stringCfg, "secret_password") 19 | } 20 | -------------------------------------------------------------------------------- /internal/static/integrations/mongodb_exporter/mongodb_test.go: -------------------------------------------------------------------------------- 1 | package mongodb_exporter 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/grafana/alloy/internal/static/config" 7 | ) 8 | 9 | func TestConfig_SecretMongoDB(t *testing.T) { 10 | stringCfg := ` 11 | prometheus: 12 | wal_directory: /tmp/agent 13 | integrations: 14 | mongodb_exporter: 15 | enabled: true 16 | mongodb_uri: secret_password_in_uri 17 | ` 18 | config.CheckSecret(t, stringCfg, "secret_password_in_uri") 19 | } 20 | -------------------------------------------------------------------------------- /internal/static/integrations/mysqld_exporter/mysqld_test.go: -------------------------------------------------------------------------------- 1 | package mysqld_exporter 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/grafana/alloy/internal/static/config" 7 | ) 8 | 9 | func TestConfig_SecretMysqlD(t *testing.T) { 10 | stringCfg := ` 11 | prometheus: 12 | wal_directory: /tmp/agent 13 | integrations: 14 | mysqld_exporter: 15 | enabled: true 16 | data_source_name: root:secret_password@myserver:3306` 17 | config.CheckSecret(t, stringCfg, "secret_password") 18 | } 19 | -------------------------------------------------------------------------------- /internal/static/integrations/node_exporter/node_exporter_linux.go: -------------------------------------------------------------------------------- 1 | package node_exporter 2 | 3 | import ( 4 | "github.com/prometheus/procfs/sysfs" 5 | ) 6 | 7 | func init() { 8 | DefaultConfig.SysFSPath = sysfs.DefaultMountPoint 9 | } 10 | -------------------------------------------------------------------------------- /internal/static/integrations/redis_exporter/testdata/password_map_file.json: -------------------------------------------------------------------------------- 1 | {"redis://localhost:6379": "sample_password"} 2 | -------------------------------------------------------------------------------- /internal/static/integrations/snmp_exporter/common/snmp.yml.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/static/integrations/snmp_exporter/common/snmp.yml.gz -------------------------------------------------------------------------------- /internal/static/server/config_test.go: -------------------------------------------------------------------------------- 1 | package server 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | "gopkg.in/yaml.v2" 8 | ) 9 | 10 | func TestConfig_OmitEmptyFields(t *testing.T) { 11 | var cfg Config 12 | yml, err := yaml.Marshal(&cfg) 13 | require.NoError(t, err) 14 | require.Equal(t, "{}\n", string(yml)) 15 | } 16 | -------------------------------------------------------------------------------- /internal/static/server/server.go: -------------------------------------------------------------------------------- 1 | // Package server implements the HTTP and gRPC server used throughout Grafana 2 | // Agent Static. 3 | // 4 | // It is a grafana/alloy-specific fork of github.com/weaveworks/common/server. 5 | package server 6 | 7 | import ( 8 | "context" 9 | "net" 10 | ) 11 | 12 | // DialContextFunc is a function matching the signature of 13 | // net.Dialer.DialContext. 14 | type DialContextFunc func(ctx context.Context, network string, addr string) (net.Conn, error) 15 | -------------------------------------------------------------------------------- /internal/static/server/testdata/windows/CLIENT_CA_CERT.cer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/static/server/testdata/windows/CLIENT_CA_CERT.cer -------------------------------------------------------------------------------- /internal/static/server/testdata/windows/README.md: -------------------------------------------------------------------------------- 1 | The files here are for usage with windows TLS. They need to be installed to the Users certificate store in the `My` location if using the included agent configuration. 2 | 3 | Running ` .\curl.exe -v -GET --key .\client_key_unencrypted.key --cert .\client_cert.crt --insecure https://localhost:12345/metrics` will let you see the correct metrics. NOTE: You will need to likely download [curl](https://curl.se/windows/dl-7.82.0_2/curl-7.82.0_2-win64-mingw.zip) compiled explicitly with windows crypto support. -------------------------------------------------------------------------------- /internal/static/server/testdata/windows/client_cert.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/static/server/testdata/windows/client_cert.pfx -------------------------------------------------------------------------------- /internal/static/server/tls_certstore_stub.go: -------------------------------------------------------------------------------- 1 | //go:build !windows 2 | 3 | package server 4 | 5 | type WinCertStoreHandler struct { 6 | } 7 | 8 | func (w WinCertStoreHandler) Run() {} 9 | 10 | func (w WinCertStoreHandler) Stop() {} 11 | -------------------------------------------------------------------------------- /internal/static/traces/contextkeys/keys.go: -------------------------------------------------------------------------------- 1 | package contextkeys 2 | 3 | type key int 4 | 5 | const ( 6 | // Logs is used to pass *logs.Logs through the context 7 | Logs key = iota 8 | 9 | // Metrics is used to pass instance.Manager through the context 10 | Metrics 11 | ) 12 | -------------------------------------------------------------------------------- /internal/static/traces/pushreceiver/receiver.go: -------------------------------------------------------------------------------- 1 | package pushreceiver 2 | 3 | import ( 4 | "context" 5 | 6 | "go.opentelemetry.io/collector/component" 7 | otelreceiver "go.opentelemetry.io/collector/receiver" 8 | ) 9 | 10 | type receiver struct{} 11 | 12 | func (r *receiver) Start(_ context.Context, _ component.Host) error { 13 | return nil 14 | } 15 | 16 | func (r *receiver) Shutdown(_ context.Context) error { 17 | return nil 18 | } 19 | 20 | func newPushReceiver() (otelreceiver.Traces, error) { 21 | return &receiver{}, nil 22 | } 23 | -------------------------------------------------------------------------------- /internal/static/traces/spanmetricsprocessor/internal/cache/package_test.go: -------------------------------------------------------------------------------- 1 | // Copyright The OpenTelemetry Authors 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package cache 5 | 6 | import ( 7 | "testing" 8 | 9 | "go.uber.org/goleak" 10 | ) 11 | 12 | func TestMain(m *testing.M) { 13 | goleak.VerifyTestMain(m) 14 | } 15 | -------------------------------------------------------------------------------- /internal/util/assertmetrics/doc.go: -------------------------------------------------------------------------------- 1 | // Package assertmetrics provides utilities for verifying Prometheus metrics in tests given a Registry. See package 2 | // tests for usage examples. 3 | package assertmetrics 4 | -------------------------------------------------------------------------------- /internal/util/errors.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import ( 4 | "errors" 5 | "sync" 6 | ) 7 | 8 | func ErrorsJoinConcurrent(errs *error, err error, mutex *sync.Mutex) { 9 | mutex.Lock() 10 | *errs = errors.Join(*errs, err) 11 | mutex.Unlock() 12 | } 13 | -------------------------------------------------------------------------------- /internal/util/filepath.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import ( 4 | "os" 5 | "path/filepath" 6 | ) 7 | 8 | // ExtractDirPath removes the file part of a path if it exists. 9 | func ExtractDirPath(p string) (string, error) { 10 | info, err := os.Stat(p) 11 | 12 | if err != nil { 13 | return "", err 14 | } 15 | 16 | if !info.IsDir() { 17 | return filepath.Dir(p), nil 18 | } 19 | 20 | return p, nil 21 | } 22 | -------------------------------------------------------------------------------- /internal/util/log/log.go: -------------------------------------------------------------------------------- 1 | // Package log is a fork of 2 | // github.com/cortexproject/cortex@v1.11.0/pkg/util/log/log.go. 3 | // 4 | // See https://github.com/cortexproject/cortex/blob/v1.11.0/LICENSE for 5 | // LICENSE details. 6 | 7 | package log 8 | 9 | import ( 10 | "github.com/go-kit/log" 11 | ) 12 | 13 | var ( 14 | Logger = log.NewNopLogger() 15 | ) 16 | -------------------------------------------------------------------------------- /internal/util/otelfeaturegatefix/featuregate_override.go: -------------------------------------------------------------------------------- 1 | package otelfeaturegatefix 2 | 3 | import "go.opentelemetry.io/collector/featuregate" 4 | 5 | func init() { 6 | // Override the default behavior of the feature gate to not panic when a gate is already registered. 7 | // TODO: Remove this once https://github.com/prometheus/prometheus/issues/13842 is completed and we upgraded Prometheus. 8 | featuregate.GlobalRegistry().SetAlreadyRegisteredErrHandler( 9 | func(g *featuregate.Gate, err error) *featuregate.Gate { 10 | return g 11 | }, 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /internal/util/testlivedebugging/testlivedebugging_test.go: -------------------------------------------------------------------------------- 1 | package testlivedebugging_test 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/grafana/alloy/internal/util/testlivedebugging" 7 | "github.com/stretchr/testify/require" 8 | ) 9 | 10 | func TestLogShallowCopy(t *testing.T) { 11 | log := testlivedebugging.NewLog() 12 | log.Append("test") 13 | 14 | logSlice1 := log.Get() 15 | logSlice1[0] = "asdf" 16 | 17 | logSlice2 := log.Get() 18 | require.Equal(t, []string{"test"}, logSlice2) 19 | } 20 | -------------------------------------------------------------------------------- /internal/util/untab.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import "strings" 4 | 5 | // Untab is a utility function for tests to make it easier 6 | // to write YAML tests, where some editors will insert tabs 7 | // into strings by default. 8 | func Untab(s string) string { 9 | return strings.ReplaceAll(s, "\t", " ") 10 | } 11 | -------------------------------------------------------------------------------- /internal/util/windowspriority/set_priority_nonwindows.go: -------------------------------------------------------------------------------- 1 | //go:build !windows 2 | // +build !windows 3 | 4 | package windowspriority 5 | 6 | import ( 7 | "errors" 8 | "iter" 9 | ) 10 | 11 | // This is the default value in the alloycli package 12 | const PriorityNormal = "normal" 13 | 14 | func PriorityValues() iter.Seq[string] { 15 | return nil 16 | } 17 | 18 | func TranslatePriority(_ string) (uint32, error) { 19 | return 0, errors.New("not supported on non-Windows platforms") 20 | } 21 | 22 | func SetPriority(_ string) error { 23 | return nil 24 | } 25 | -------------------------------------------------------------------------------- /internal/validator/testdata/default/invalid_properties.txtar: -------------------------------------------------------------------------------- 1 | invalid properties 2 | -- main.alloy -- 3 | 4 | remote.http "missing_required" {} 5 | 6 | loki.source.file "invalid_property" { 7 | test = "test" 8 | } 9 | 10 | logging { 11 | test = "test" 12 | } 13 | 14 | http { 15 | test = "test" 16 | } 17 | 18 | import.string "string" {} 19 | 20 | import.file "file" {} 21 | 22 | import.git "git" { 23 | revision = "main" 24 | path = "modules" 25 | } 26 | 27 | import.http "http" { 28 | test = "test" 29 | } 30 | 31 | // missing label 32 | import.http {} 33 | -------------------------------------------------------------------------------- /internal/validator/testdata/default/missing.diags: -------------------------------------------------------------------------------- 1 | Error: main.alloy:1:1: cannot find the definition of component name "local.missing" 2 | 3 | 1 | local.missing "applogs" { 4 | | ^^^^^^^^^^^^^ 5 | 2 | path_targets = [{"__path__" = "/tmp/app-logs/app.log"}] 6 | -------------------------------------------------------------------------------- /internal/validator/testdata/default/missing.txtar: -------------------------------------------------------------------------------- 1 | missing component 2 | -- main.alloy -- 3 | local.missing "applogs" { 4 | path_targets = [{"__path__" = "/tmp/app-logs/app.log"}] 5 | } 6 | -------------------------------------------------------------------------------- /internal/validator/testdata/default/mixed.diags: -------------------------------------------------------------------------------- 1 | Error: missing.alloy:1:1: cannot find the definition of component name "local.missing" 2 | 3 | 1 | local.missing "missing" { 4 | | ^^^^^^^^^^^^^ 5 | 2 | path_targets = [{"__path__" = "/tmp/app-logs/app.log"}] 6 | 7 | Error: missing_label.alloy:1:1: component "local.file" must have a label 8 | 9 | 1 | local.file { 10 | | ^^^^^^^^^^ 11 | 2 | filename = "/tmp/app-logs/app.log" 12 | -------------------------------------------------------------------------------- /internal/validator/testdata/default/syntax_errors.txtar: -------------------------------------------------------------------------------- 1 | syntaxt errors across multiple files 2 | -- main.alloy -- 3 | // Missing string termination. 4 | local.file_match "applogs { 5 | path_targets = [{"__path__" = "/tmp/app-logs/app.log"}] 6 | } 7 | 8 | -- secondary.alloy -- 9 | // Missing right bracket 10 | local.file_match "applogs" { 11 | path_targets = [{"__path__" = "/tmp/app-logs/app.log"} 12 | } 13 | -------------------------------------------------------------------------------- /internal/validator/testdata/default/valid.diags: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/validator/testdata/default/valid.diags -------------------------------------------------------------------------------- /internal/validator/testdata/ga/non_ga.diags: -------------------------------------------------------------------------------- 1 | Error: main.alloy:2:1: foreach block "foreach" is at stability level "experimental", which is below the minimum allowed stability level "generally-available". Use --stability.level command-line flag to enable "experimental" features 2 | 3 | 1 | // Collect metrics for each Redis instance. 4 | 2 | foreach "foreach" { 5 | | ^^^^^^^ 6 | 3 | collection = [] 7 | -------------------------------------------------------------------------------- /internal/validator/testdata/ga/non_ga.txtar: -------------------------------------------------------------------------------- 1 | not generally available 2 | -- main.alloy -- 3 | // Collect metrics for each Redis instance. 4 | foreach "foreach" { 5 | collection = [] 6 | var = "each" 7 | 8 | template {} 9 | } 10 | -------------------------------------------------------------------------------- /internal/web/ui/.env: -------------------------------------------------------------------------------- 1 | REACT_APP_BASE_URL= 2 | GENERATE_SOURCEMAP=false 3 | -------------------------------------------------------------------------------- /internal/web/ui/.env.production: -------------------------------------------------------------------------------- 1 | # The template syntax below is injected into compiled code and then replaced by 2 | # the Go server through text/template to insert the PublicURL at runtime. 3 | REACT_APP_BASE_URL={{! .PublicURL !}} 4 | PUBLIC_URL=./public 5 | -------------------------------------------------------------------------------- /internal/web/ui/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /internal/web/ui/README.md: -------------------------------------------------------------------------------- 1 | # Grafana Alloy UI 2 | 3 | ## Prerequisites 4 | 5 | * Yarn >= v1.22 6 | * Node.js >= v18 7 | -------------------------------------------------------------------------------- /internal/web/ui/assets_builtin.go: -------------------------------------------------------------------------------- 1 | //go:build builtinassets 2 | 3 | package ui 4 | 5 | import ( 6 | "embed" 7 | "io/fs" 8 | "net/http" 9 | ) 10 | 11 | //go:generate yarn 12 | //go:generate yarn run build 13 | 14 | //go:embed build 15 | var builtinAssetsTarball embed.FS 16 | 17 | // Assets contains the UI's assets. 18 | func Assets() http.FileSystem { 19 | inner, err := fs.Sub(builtinAssetsTarball, "build") 20 | if err != nil { 21 | panic(err) 22 | } 23 | return http.FS(inner) 24 | } 25 | -------------------------------------------------------------------------------- /internal/web/ui/assets_nobuiltin.go: -------------------------------------------------------------------------------- 1 | //go:build !builtinassets 2 | 3 | package ui 4 | 5 | import ( 6 | "net/http" 7 | "path/filepath" 8 | ) 9 | 10 | // Assets contains the UI's assets. 11 | func Assets() http.FileSystem { 12 | assetsDir := filepath.Join(".", "internal", "web", "ui", "build") 13 | return http.Dir(assetsDir) 14 | } 15 | -------------------------------------------------------------------------------- /internal/web/ui/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/public/favicon.ico -------------------------------------------------------------------------------- /internal/web/ui/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Grafana Alloy", 3 | "name": "Grafana Alloy", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /internal/web/ui/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /internal/web/ui/src/App.module.css: -------------------------------------------------------------------------------- 1 | .app { 2 | display: flex; 3 | flex-direction: column; 4 | height: 100%; 5 | } 6 | 7 | .app main { 8 | flex-grow: 1; 9 | overflow-y: hidden; 10 | } 11 | -------------------------------------------------------------------------------- /internal/web/ui/src/features/alloy-syntax-js/RiverValue.module.css: -------------------------------------------------------------------------------- 1 | .value { 2 | font-size: 14px; 3 | font-family: 'Fira Code', monospace; 4 | white-space: pre; 5 | tab-size: 4; 6 | margin: 0px; 7 | } 8 | 9 | .value span.literal { 10 | color: blue; 11 | } 12 | 13 | .value span.string { 14 | color: green; 15 | } 16 | 17 | .value span.special { 18 | color: gray; 19 | } 20 | -------------------------------------------------------------------------------- /internal/web/ui/src/features/clustering/types.ts: -------------------------------------------------------------------------------- 1 | export interface PeerInfo { 2 | name: string; 3 | 4 | addr: string; 5 | 6 | state: string; 7 | 8 | isSelf: boolean; 9 | } 10 | -------------------------------------------------------------------------------- /internal/web/ui/src/features/graph/Legend.module.css: -------------------------------------------------------------------------------- 1 | .legend { 2 | display: flex; 3 | justify-content: space-around; 4 | background-color: #f4f4f4; 5 | padding: 10px; 6 | } 7 | 8 | .legendItem { 9 | display: flex; 10 | align-items: center; 11 | font-size: 14px; 12 | margin-right: 15px; 13 | } 14 | 15 | .colorBox { 16 | width: 20px; 17 | height: 20px; 18 | margin-right: 5px; 19 | border-radius: 50%; 20 | } 21 | -------------------------------------------------------------------------------- /internal/web/ui/src/pages/Clustering.tsx: -------------------------------------------------------------------------------- 1 | import { faNetworkWired } from '@fortawesome/free-solid-svg-icons'; 2 | 3 | import PeerList from '../features/clustering/PeerList'; 4 | import Page from '../features/layout/Page'; 5 | import { usePeerInfo } from '../hooks/peerInfo'; 6 | 7 | function PageClusteringPeers() { 8 | const peers = usePeerInfo(); 9 | 10 | return ( 11 | 12 | 13 | 14 | ); 15 | } 16 | 17 | export default PageClusteringPeers; 18 | -------------------------------------------------------------------------------- /internal/web/ui/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/fira-code-v21-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/fira-code-v21-latin-500.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/fira-code-v21-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/fira-code-v21-latin-regular.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-100.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-100.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-100italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-100italic.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-300.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-300italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-300italic.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-500.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-500italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-500italic.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-700.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-700italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-700italic.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-900.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-900italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-900italic.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-italic.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/static/fonts/roboto-v30-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/internal/web/ui/src/static/fonts/roboto-v30-latin-regular.woff2 -------------------------------------------------------------------------------- /internal/web/ui/src/utils/id.ts: -------------------------------------------------------------------------------- 1 | type ID = { 2 | moduleID: string; 3 | localID: string; 4 | }; 5 | 6 | /** 7 | * parseID parses a full component ID into its moduleID and localID halves. 8 | */ 9 | export function parseID(id: string): ID { 10 | const lastSlashIndex = id.lastIndexOf('/'); 11 | if (lastSlashIndex === -1) { 12 | return { moduleID: '', localID: id }; 13 | } 14 | 15 | return { 16 | moduleID: id.slice(0, lastSlashIndex), 17 | localID: id.slice(lastSlashIndex + 1), 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /internal/winmanifest/doc.go: -------------------------------------------------------------------------------- 1 | // Package winmanifest provides a basic manifest. 2 | // 3 | // You import it for its side effects only, as 4 | // 5 | // import _ "github.com/grafana/alloy/internal/winmanifest" 6 | // 7 | // On non-Windows platforms this package does nothing. 8 | 9 | package winmanifest 10 | -------------------------------------------------------------------------------- /internal/winmanifest/generate_windows.go: -------------------------------------------------------------------------------- 1 | package winmanifest 2 | 3 | //go:generate go run github.com/tc-hib/go-winres@v0.3.3 make --product-version=git-tag --file-version=git-tag 4 | -------------------------------------------------------------------------------- /operations/alloy-mixin/alerts/utils/alert.jsonnet: -------------------------------------------------------------------------------- 1 | // alert.jsonnet defines utilities to create alerts. 2 | 3 | { 4 | newGroup(name, rules):: { 5 | name: name, 6 | rules: rules, 7 | }, 8 | 9 | newRule(name='', expr='', message='', description='', forT='', severity='warning'):: std.prune({ 10 | alert: name, 11 | expr: expr, 12 | annotations: { 13 | summary: message, 14 | description: description, 15 | }, 16 | 'for': forT, 17 | labels: { 18 | severity: severity, 19 | }, 20 | }), 21 | } 22 | -------------------------------------------------------------------------------- /operations/alloy-mixin/grizzly/alerts.jsonnet: -------------------------------------------------------------------------------- 1 | local mixin = import '../mixin.libsonnet'; 2 | 3 | { 4 | prometheus_rules: std.map( 5 | function(group) 6 | { 7 | apiVersion: 'grizzly.grafana.com/v1alpha1', 8 | kind: 'PrometheusRuleGroup', 9 | metadata: { 10 | namespace: 'alloy', 11 | name: group.name, 12 | }, 13 | spec: group, 14 | }, 15 | mixin.prometheusAlerts.groups 16 | ), 17 | } 18 | -------------------------------------------------------------------------------- /operations/alloy-mixin/mixin.libsonnet: -------------------------------------------------------------------------------- 1 | { grafanaDashboardFolder: 'Alloy' } + 2 | (import './dashboards.libsonnet') + 3 | (import './alerts.libsonnet') + 4 | (import './config.libsonnet') 5 | -------------------------------------------------------------------------------- /operations/alloy-syntax-jsonnet/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [], 4 | "legacyImports": true 5 | } 6 | -------------------------------------------------------------------------------- /operations/alloy-syntax-jsonnet/main.libsonnet: -------------------------------------------------------------------------------- 1 | (import './builder.jsonnet') + 2 | (import './manifest.jsonnet') 3 | -------------------------------------------------------------------------------- /operations/helm/Makefile: -------------------------------------------------------------------------------- 1 | # Docs generated by https://github.com/norwoodj/helm-docs 2 | docs: 3 | cd charts/alloy && helm-docs 4 | 5 | rebuild-tests: 6 | bash ./scripts/rebuild-tests.sh 7 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: alloy 3 | description: 'Grafana Alloy' 4 | type: application 5 | version: 1.1.0 6 | appVersion: 'v1.9.0' 7 | icon: https://raw.githubusercontent.com/grafana/alloy/main/docs/sources/assets/alloy_icon_orange.svg 8 | 9 | dependencies: 10 | - name: crds 11 | version: "0.0.0" 12 | condition: crds.create 13 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/charts/crds/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: crds 3 | version: 0.0.0 4 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/additional-serviceaccount-label-values.yaml: -------------------------------------------------------------------------------- 1 | serviceAccount: 2 | additionalLabels: 3 | test: "true" 4 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/clustering-values.yaml: -------------------------------------------------------------------------------- 1 | alloy: 2 | clustering: 3 | enabled: true 4 | 5 | controller: 6 | type: 'statefulset' 7 | replicas: 3 8 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/controller-deployment-pdb-max-unavailable-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | type: deployment 3 | podDisruptionBudget: 4 | enabled: true 5 | maxUnavailable: 1 6 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/controller-deployment-pdb-min-available-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | type: deployment 3 | podDisruptionBudget: 4 | enabled: true 5 | minAvailable: 1 6 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/controller-statefulset-pdb-max-unavailable-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | type: statefulset 3 | podDisruptionBudget: 4 | enabled: true 5 | maxUnavailable: 1 6 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/controller-statefulset-pdb-min-available-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | type: statefulset 3 | podDisruptionBudget: 4 | enabled: true 5 | minAvailable: 1 6 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/controller-volumes-extra-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | volumes: 3 | extra: 4 | - name: cache-volume 5 | emptyDir: 6 | sizeLimit: 500Mi 7 | 8 | alloy: 9 | mounts: 10 | extra: 11 | - mountPath: /cache 12 | name: cache-volume 13 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/create-daemonset-hostnetwork-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with the controller explicitly set to DaemonSet. 2 | controller: 3 | type: daemonset 4 | hostNetwork: true 5 | dnsPolicy: ClusterFirstWithHostNet 6 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/create-daemonset-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with the controller explicitly set to DaemonSet. 2 | controller: 3 | type: daemonset 4 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/create-deployment-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with the controller explicitly set to Deployment. 2 | controller: 3 | type: deployment 4 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/create-statefulset-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with the controller explicitly set to StatefulSet. 2 | controller: 3 | type: statefulset 4 | minReadySeconds: 60 5 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/custom-config-values.yaml: -------------------------------------------------------------------------------- 1 | alloy: 2 | configMap: 3 | content: |- 4 | logging { 5 | level = "warn" 6 | format = "logfmt" 7 | } 8 | discovery.kubernetes "custom_pods" { 9 | role = "pod" 10 | } 11 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/default-values-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with everything set to the default values. 2 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/enable-servicemonitor-tls-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with the service monitor enabled 2 | alloy: 3 | listenScheme: HTTPS 4 | service: 5 | enabled: true 6 | serviceMonitor: 7 | enabled: true 8 | tlsConfig: 9 | insecureSkipVerify: true 10 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/enable-servicemonitor-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with the service monitor enabled 2 | service: 3 | enabled: true 4 | serviceMonitor: 5 | enabled: true 6 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/envFrom-values.yaml: -------------------------------------------------------------------------------- 1 | # Specify extra ports for verifying rendering the template works 2 | alloy: 3 | envFrom: 4 | - configMapRef: 5 | name: special-config 6 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/existing-config-values.yaml: -------------------------------------------------------------------------------- 1 | alloy: 2 | configMap: 3 | create: false 4 | name: existing-config 5 | key: my-config.alloy 6 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/extra-env-values.yaml: -------------------------------------------------------------------------------- 1 | # Specify extra ports for verifying rendering the template works 2 | alloy: 3 | extraEnv: 4 | - name: GREETING 5 | value: "Warm greetings to" 6 | - name: HONORIFIC 7 | value: "The Most Honorable" 8 | - name: NAME 9 | value: "Kubernetes" 10 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/extra-manifests-values.yaml: -------------------------------------------------------------------------------- 1 | extraObjects: 2 | - apiVersion: v1 3 | kind: Secret 4 | metadata: 5 | name: grafana-cloud 6 | stringData: 7 | PROMETHEUS_HOST: 'https://prometheus-us-central1.grafana.net/api/prom/push' 8 | PROMETHEUS_USERNAME: '123456' 9 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/extra-ports-values.yaml: -------------------------------------------------------------------------------- 1 | # Specify extra ports for verifying rendering the template works 2 | alloy: 3 | extraPorts: 4 | - name: jaeger-thrift 5 | port: 14268 6 | targetPort: 14268 7 | protocol: TCP 8 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/faro-ingress-values.yaml: -------------------------------------------------------------------------------- 1 | alloy: 2 | extraPorts: 3 | - name: "faro" 4 | port: 12347 5 | targetPort: 12347 6 | protocol: "TCP" 7 | 8 | ingress: 9 | enabled: true 10 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/global-image-pullsecrets-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with the global image pull secret explicitly set. 2 | global: 3 | image: 4 | pullSecrets: 5 | - name: global-cred 6 | 7 | podSecurityContext: 8 | runAsUser: 1000 9 | runAsGroup: 1000 10 | 11 | image: 12 | pullSecrets: 13 | - name: local-cred 14 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/global-image-registry-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with the global image registry explicitly set to another value. 2 | global: 3 | image: 4 | registry: quay.io 5 | 6 | image: 7 | registry: docker.com # Invalid value by default 8 | 9 | configReloader: 10 | image: 11 | registry: docker.com 12 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/host-alias-values.yaml: -------------------------------------------------------------------------------- 1 | alloy: 2 | hostAliases: 3 | - ip: "20.21.22.23" 4 | hostnames: 5 | - "grafana.company.net" 6 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/lifecycle-hooks-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | type: deployment 3 | 4 | alloy: 5 | lifecycle: 6 | preStop: 7 | exec: 8 | command: ["/bin/sh", "-c", "sleep 1"] 9 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/livinessprobe-values.yaml: -------------------------------------------------------------------------------- 1 | alloy: 2 | livenessProbe: 3 | httpGet: 4 | path: /metrics 5 | port: 12345 6 | scheme: HTTP 7 | initialDelaySeconds: 30 8 | timeoutSeconds: 2 9 | periodSeconds: 30 10 | successThreshold: 1 11 | failureThreshold: 3 12 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/local-image-pullsecrets-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with the image pull secret explicitly set. 2 | image: 3 | pullSecrets: 4 | - name: local-cred 5 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/local-image-registry-values.yaml: -------------------------------------------------------------------------------- 1 | # Test rendering of the chart with the individual image registries explicitly set to another value. 2 | image: 3 | registry: quay.io 4 | 5 | configReloader: 6 | image: 7 | registry: quay.io 8 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/nodeselectors-and-tolerations-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | nodeSelector: 3 | key1: "value1" 4 | tolerations: 5 | - key: "key1" 6 | operator: "Equal" 7 | value: "value1" 8 | effect: "NoSchedule" 9 | - key: "key2" 10 | operator: "Exists" 11 | effect: "NoSchedule" 12 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/nonroot-values.yaml: -------------------------------------------------------------------------------- 1 | global: 2 | podSecurityContext: 3 | fsGroup: 473 4 | alloy: 5 | securityContext: 6 | runAsUser: 473 7 | runAsGroup: 473 8 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/pod_annotations-values.yaml: -------------------------------------------------------------------------------- 1 | # Test correct rendering of the pod annotations 2 | controller: 3 | podAnnotations: 4 | testAnnotationKey: testAnnotationValue 5 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/termination-grace-period-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | type: deployment 3 | terminationGracePeriodSeconds: 20 4 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/topologyspreadconstraints-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | type: deployment 3 | topologySpreadConstraints: 4 | - maxSkew: 1 5 | topologyKey: topology.kubernetes.io/zone 6 | whenUnsatisfiable: ScheduleAnyway 7 | labelSelector: 8 | matchLabels: 9 | app.kubernetes.io/name: alloy 10 | app.kubernetes.io/instance: alloy 11 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/ci/with-digests-values.yaml: -------------------------------------------------------------------------------- 1 | image: 2 | registry: "docker.io" 3 | repository: "grafana/agent" 4 | digest: "sha256:82575a7be3e4770e53f620298e58bcc4cdb0fd0338e01c4b206cae9e3ca46ebf" 5 | 6 | configReloader: 7 | image: 8 | registry: "docker.io" 9 | repository: "jimmidyson/configmap-reload" 10 | digest: "sha256:5af9d3041d12a3e63f115125f89b66d2ba981fe82e64302ac370c5496055059c" 11 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/config/example.alloy: -------------------------------------------------------------------------------- 1 | logging { 2 | level = "info" 3 | format = "logfmt" 4 | } 5 | 6 | discovery.kubernetes "pods" { 7 | role = "pod" 8 | } 9 | 10 | discovery.kubernetes "nodes" { 11 | role = "node" 12 | } 13 | 14 | discovery.kubernetes "services" { 15 | role = "service" 16 | } 17 | 18 | discovery.kubernetes "endpoints" { 19 | role = "endpoints" 20 | } 21 | 22 | discovery.kubernetes "endpointslices" { 23 | role = "endpointslice" 24 | } 25 | 26 | discovery.kubernetes "ingresses" { 27 | role = "ingress" 28 | } 29 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | Welcome to Grafana Alloy! 2 | -------------------------------------------------------------------------------- /operations/helm/charts/alloy/templates/extra-manifests.yaml: -------------------------------------------------------------------------------- 1 | {{ range .Values.extraObjects }} 2 | --- 3 | {{ tpl (toYaml .) $ }} 4 | {{ end }} 5 | -------------------------------------------------------------------------------- /operations/helm/cr.yaml: -------------------------------------------------------------------------------- 1 | owner: grafana 2 | git-repo: helm-charts 3 | skip-existing: true 4 | -------------------------------------------------------------------------------- /operations/helm/ct.yaml: -------------------------------------------------------------------------------- 1 | remote: origin 2 | target-branch: main 3 | chart-dirs: 4 | - operations/helm/charts 5 | validate-maintainers: false 6 | check-version-increment: false # Don't require every change to be released 7 | -------------------------------------------------------------------------------- /operations/helm/tests/additional-serviceaccount-label/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | test: "true" 17 | -------------------------------------------------------------------------------- /operations/helm/tests/clustering/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/controller-deployment-pdb-max-unavailable/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/controller-deployment-pdb-min-available/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/controller-statefulset-pdb-max-unavailable/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/controller-statefulset-pdb-min-available/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/controller-volumes-extra/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/create-daemonset-hostnetwork/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/create-daemonset/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/create-deployment-autoscaling/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/create-deployment/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/create-statefulset-autoscaling/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/create-statefulset-vertical-autoscaling/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/create-statefulset/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/custom-config/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/default-values/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/enable-servicemonitor-tls/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/enable-servicemonitor/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/envFrom/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/existing-config/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/extra-env/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/extra-manifests/alloy/templates/extra-manifests.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/extra-manifests.yaml 3 | apiVersion: v1 4 | kind: Secret 5 | metadata: 6 | name: grafana-cloud 7 | stringData: 8 | PROMETHEUS_HOST: https://prometheus-us-central1.grafana.net/api/prom/push 9 | PROMETHEUS_USERNAME: "123456" 10 | -------------------------------------------------------------------------------- /operations/helm/tests/extra-manifests/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/extra-ports/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/faro-ingress/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/global-image-pullsecrets/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/global-image-registry/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/host-alias/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/initcontainers/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/lifecycle-hooks/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/livinessprobe/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/local-image-pullsecrets/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/local-image-registry/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/nodeselectors-and-tolerations/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/nonroot/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/pod_annotations/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/sidecars/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/termination-grace-period/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/topologyspreadconstraints/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /operations/helm/tests/with-digests/alloy/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Source: alloy/templates/serviceaccount.yaml 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | automountServiceAccountToken: true 6 | metadata: 7 | name: alloy 8 | namespace: default 9 | labels: 10 | helm.sh/chart: alloy 11 | app.kubernetes.io/name: alloy 12 | app.kubernetes.io/instance: alloy 13 | app.kubernetes.io/version: "vX.Y.Z" 14 | app.kubernetes.io/managed-by: Helm 15 | app.kubernetes.io/component: rbac 16 | -------------------------------------------------------------------------------- /packaging/deb/control/prerm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | # shellcheck disable=SC1091 6 | [ -f /etc/default/alloy ] && . /etc/default/alloy 7 | 8 | if [ "$1" = "remove" ]; then 9 | if command -v systemctl 2>/dev/null; then 10 | systemctl stop alloy.service > /dev/null 2>&1 || : 11 | fi 12 | fi 13 | -------------------------------------------------------------------------------- /packaging/environment-file: -------------------------------------------------------------------------------- 1 | ## Path: 2 | ## Description: Grafana Alloy settings 3 | ## Type: string 4 | ## Default: "" 5 | ## ServiceRestart: alloy 6 | # 7 | # Command line options for Alloy. 8 | # 9 | # The configuration file holding the Alloy config. 10 | CONFIG_FILE="/etc/alloy/config.alloy" 11 | 12 | # User-defined arguments to pass to the run command. 13 | CUSTOM_ARGS="" 14 | 15 | # Restart on system upgrade. Defaults to true. 16 | RESTART_ON_UPGRADE=true 17 | -------------------------------------------------------------------------------- /packaging/windows/config.alloy: -------------------------------------------------------------------------------- 1 | logging { 2 | level = "info" 3 | } 4 | -------------------------------------------------------------------------------- /packaging/windows/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/packaging/windows/logo.ico -------------------------------------------------------------------------------- /packaging/windows/macros.nsis: -------------------------------------------------------------------------------- 1 | !macro VerifyUserIsAdmin 2 | UserInfo::GetAccountType 3 | Pop $0 4 | ${If} $0 != "admin" # Require admin rights on NT4+ 5 | MessageBox MB_ICONSTOP "Administrator rights required!" 6 | SetErrorLevel 740 # ERROR_ELEVATION_REQUIRED 7 | Quit 8 | ${EndIf} 9 | !macroend 10 | 11 | -------------------------------------------------------------------------------- /syntax/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/grafana/alloy/syntax 2 | 3 | go 1.24.3 4 | 5 | require ( 6 | github.com/blang/semver/v4 v4.0.0 7 | github.com/fatih/color v1.15.0 8 | github.com/ohler55/ojg v1.20.1 9 | github.com/stretchr/testify v1.8.4 10 | gopkg.in/yaml.v3 v3.0.1 11 | ) 12 | 13 | require ( 14 | github.com/davecgh/go-spew v1.1.1 // indirect 15 | github.com/mattn/go-colorable v0.1.13 // indirect 16 | github.com/mattn/go-isatty v0.0.17 // indirect 17 | github.com/pmezard/go-difflib v1.0.0 // indirect 18 | golang.org/x/sys v0.6.0 // indirect 19 | ) 20 | -------------------------------------------------------------------------------- /syntax/internal/value/raw_function.go: -------------------------------------------------------------------------------- 1 | package value 2 | 3 | // RawFunction allows creating function implementations using raw Alloy values. 4 | // This is useful for functions which wish to operate over dynamic types while 5 | // avoiding decoding to interface{} for performance reasons. 6 | // 7 | // The func value itself is provided as an argument so error types can be 8 | // filled. 9 | type RawFunction func(funcValue Value, args ...Value) (Value, error) 10 | -------------------------------------------------------------------------------- /syntax/parser/internal_test.go: -------------------------------------------------------------------------------- 1 | package parser 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/assert" 7 | ) 8 | 9 | func TestObjectFieldName(t *testing.T) { 10 | tt := []string{ 11 | `field_a = 5`, 12 | `"field_a" = 5`, // Quotes should be removed from the field name 13 | } 14 | 15 | for _, tc := range tt { 16 | p := newParser(t.Name(), []byte(tc)) 17 | 18 | res := p.parseField() 19 | 20 | assert.Equal(t, "field_a", res.Name.Name) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /syntax/parser/testdata/attribute_names.alloy: -------------------------------------------------------------------------------- 1 | valid_attr = 15 2 | 3 | // The parser parses block names for both blocks and attributes, and later 4 | // validates that the attribute name is just a single identifier with no label. 5 | 6 | invalid/* ERROR "attribute names may only consist of a single identifier" */.attr = 20 7 | invalid "label" /* ERROR "attribute names may not have labels" */ = 20 8 | -------------------------------------------------------------------------------- /syntax/parser/testdata/block_names.alloy: -------------------------------------------------------------------------------- 1 | valid_block { 2 | 3 | } 4 | 5 | valid_block "labeled" { 6 | 7 | } 8 | 9 | invalid_block bad_label_name /* ERROR "expected block label, got IDENT" */ { 10 | 11 | } 12 | 13 | other_valid_block { 14 | nested_block { 15 | 16 | } 17 | 18 | nested_block "labeled" { 19 | 20 | } 21 | } 22 | 23 | invalid_block "with space" /* ERROR "expected block label to be a valid identifier" */ { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /syntax/parser/testdata/commas.alloy: -------------------------------------------------------------------------------- 1 | // Test that missing trailing commas for multiline expressions get reported. 2 | 3 | field = [ 4 | 0, 5 | 1, 6 | 2/* ERROR HERE "missing ',' in expression list" */ 7 | ] 8 | 9 | obj = { 10 | field_a = 0, 11 | field_b = 1, 12 | field_c = 2/* ERROR HERE "missing ',' in field list" */ 13 | } 14 | -------------------------------------------------------------------------------- /syntax/parser/testdata/fuzz/FuzzParser/1a39f4e358facc21678b16fad53537b46efdaa76e024a5ef4955d01a68bdac37: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("A0000000000000000") 3 | -------------------------------------------------------------------------------- /syntax/parser/testdata/fuzz/FuzzParser/248cf4391f6c48550b7d2cf4c6c80f4ba9099c21ffa2b6869e75e99565dce037: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("A={A!0A\"") 3 | -------------------------------------------------------------------------------- /syntax/parser/testdata/fuzz/FuzzParser/b919fa00ebca318001778477c839a06204b55f2636597901d8d7878150d8580a: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | []byte("A\"") 3 | -------------------------------------------------------------------------------- /syntax/parser/testdata/invalid_exprs.alloy: -------------------------------------------------------------------------------- 1 | attr = 1 + + /* ERROR "expected expression, got +" */ 2 2 | 3 | invalid_func_call = a(() /* ERROR "expected expression, got \)" */) 4 | invalid_access = a.true /* ERROR "expected IDENT, got BOOL" */ 5 | -------------------------------------------------------------------------------- /syntax/parser/testdata/invalid_object_key.alloy: -------------------------------------------------------------------------------- 1 | obj { 2 | map = { 3 | "string_field" = "foo", 4 | identifier_string = "bar", 5 | 1337 /* ERROR "expected field name \(string or identifier\), got NUMBER" */ = "baz", 6 | "another_field" = "qux", 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /syntax/parser/testdata/valid/attribute.alloy: -------------------------------------------------------------------------------- 1 | number_field = 1 2 | -------------------------------------------------------------------------------- /syntax/parser/testdata/valid/comments.alloy: -------------------------------------------------------------------------------- 1 | // Hello, world! 2 | -------------------------------------------------------------------------------- /syntax/parser/testdata/valid/empty.alloy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/alloy/828152419073d7362c5aae8d5460178d53789edb/syntax/parser/testdata/valid/empty.alloy -------------------------------------------------------------------------------- /syntax/printer/testdata/.gitattributes: -------------------------------------------------------------------------------- 1 | * -text eol=lf 2 | -------------------------------------------------------------------------------- /syntax/printer/testdata/array_comments.expect: -------------------------------------------------------------------------------- 1 | // array_comments.in expects that comments in arrays are formatted to 2 | // retain the indentation level of elements within the arrays. 3 | 4 | attr = [ // Inline comment 5 | 0, 1, 2, // Inline comment 6 | 3, 4, 5, // Inline comment 7 | // Trailing comment 8 | ] 9 | 10 | attr = [ 11 | 0, 12 | // Element-level comment 13 | 1, 14 | // Element-level comment 15 | 2, 16 | // Trailing comment 17 | ] 18 | -------------------------------------------------------------------------------- /syntax/printer/testdata/array_comments.in: -------------------------------------------------------------------------------- 1 | // array_comments.in expects that comments in arrays are formatted to 2 | // retain the indentation level of elements within the arrays. 3 | 4 | attr = [ // Inline comment 5 | 0, 1, 2, // Inline comment 6 | 3, 4, 5, // Inline comment 7 | // Trailing comment 8 | ] 9 | 10 | attr = [ 11 | 0, 12 | // Element-level comment 13 | 1, 14 | // Element-level comment 15 | 2, 16 | // Trailing comment 17 | ] 18 | -------------------------------------------------------------------------------- /syntax/printer/testdata/func_call.expect: -------------------------------------------------------------------------------- 1 | one_line = some_func(1, 2, 3, 4) 2 | 3 | multi_line = some_func(1, 4 | 2, 3, 5 | 4) 6 | 7 | multi_line_pretty = some_func( 8 | 1, 9 | 2, 10 | 3, 11 | 4, 12 | ) 13 | 14 | func_with_obj = some_func({ 15 | key1 = "value1", 16 | key2 = "value2", 17 | }) 18 | -------------------------------------------------------------------------------- /syntax/printer/testdata/func_call.in: -------------------------------------------------------------------------------- 1 | one_line = some_func(1, 2, 3, 4) 2 | 3 | multi_line = some_func(1, 4 | 2, 3, 5 | 4) 6 | 7 | multi_line_pretty = some_func( 8 | 1, 9 | 2, 10 | 3, 11 | 4, 12 | ) 13 | 14 | func_with_obj = some_func({ 15 | key1 = "value1", 16 | key2 = "value2", 17 | }) 18 | -------------------------------------------------------------------------------- /syntax/printer/testdata/mixed_list.expect: -------------------------------------------------------------------------------- 1 | mixed_list = [0, true, { 2 | key_1 = true, 3 | key_2 = true, 4 | key_3 = true, 5 | }, "Hello!"] 6 | 7 | mixed_list_2 = [ 8 | 0, 9 | true, 10 | { 11 | key_1 = true, 12 | key_2 = true, 13 | key_3 = true, 14 | }, 15 | "Hello!", 16 | ] 17 | -------------------------------------------------------------------------------- /syntax/printer/testdata/mixed_list.in: -------------------------------------------------------------------------------- 1 | mixed_list = [0, true, { 2 | key_1 = true, 3 | key_2 = true, 4 | key_3 = true, 5 | }, "Hello!"] 6 | 7 | mixed_list_2 = [ 8 | 0, 9 | true, 10 | { 11 | key_1 = true, 12 | key_2 = true, 13 | key_3 = true, 14 | }, 15 | "Hello!", 16 | ] 17 | -------------------------------------------------------------------------------- /syntax/printer/testdata/mixed_object.expect: -------------------------------------------------------------------------------- 1 | mixed_object = { 2 | key_1 = true, 3 | key_2 = [0, true, { 4 | inner_1 = true, 5 | inner_2 = true, 6 | }], 7 | } 8 | 9 | -------------------------------------------------------------------------------- /syntax/printer/testdata/mixed_object.in: -------------------------------------------------------------------------------- 1 | mixed_object = { 2 | key_1 = true, 3 | key_2 = [0, true, { 4 | inner_1 = true, 5 | inner_2 = true, 6 | }], 7 | } 8 | -------------------------------------------------------------------------------- /syntax/printer/testdata/object_align.expect: -------------------------------------------------------------------------------- 1 | block { 2 | some_object = { 3 | key_1 = 5, 4 | long_key = 10, 5 | longer_key = { 6 | inner_key = true, 7 | inner_key_2 = false, 8 | }, 9 | other_key = [0, 1, 2], 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /syntax/printer/testdata/object_align.in: -------------------------------------------------------------------------------- 1 | block { 2 | some_object = { 3 | key_1 = 5, 4 | long_key = 10, 5 | longer_key = { 6 | inner_key = true, 7 | inner_key_2 = false, 8 | }, 9 | other_key = [0, 1, 2], 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /syntax/printer/testdata/oneline_block.expect: -------------------------------------------------------------------------------- 1 | block { } 2 | 3 | block { } 4 | 5 | block { } 6 | 7 | block { } 8 | 9 | block { 10 | // Comments should be kept. 11 | } 12 | -------------------------------------------------------------------------------- /syntax/printer/testdata/oneline_block.in: -------------------------------------------------------------------------------- 1 | block {} 2 | 3 | block { } 4 | 5 | block { 6 | } 7 | 8 | block { 9 | 10 | } 11 | 12 | block { 13 | // Comments should be kept. 14 | } 15 | -------------------------------------------------------------------------------- /syntax/printer/testdata/raw_string.expect: -------------------------------------------------------------------------------- 1 | block "label" { 2 | attr = `'\"attr` 3 | } 4 | 5 | block "multi_line" { 6 | attr = `'\"this 7 | is 8 | a 9 | multi_line 10 | attr'\"` 11 | } 12 | 13 | block "json" { 14 | attr = `{ "key": "value" }` 15 | } -------------------------------------------------------------------------------- /syntax/printer/testdata/raw_string.in: -------------------------------------------------------------------------------- 1 | block "label" { 2 | attr = `'\"attr` 3 | } 4 | 5 | block "multi_line" { 6 | attr = `'\"this 7 | is 8 | a 9 | multi_line 10 | attr'\"` 11 | } 12 | 13 | block "json" { 14 | attr = `{ "key": "value" }` 15 | } -------------------------------------------------------------------------------- /syntax/printer/testdata/raw_string_label_error.error: -------------------------------------------------------------------------------- 1 | expected block label to be a double quoted string, but got "`multi_line`" -------------------------------------------------------------------------------- /syntax/printer/testdata/raw_string_label_error.in: -------------------------------------------------------------------------------- 1 | block "label" { 2 | attr = `'\"attr` 3 | } 4 | 5 | block `multi_line` { 6 | attr = `'\"this 7 | is 8 | a 9 | multi_line 10 | attr'\"` 11 | } 12 | 13 | block `json` { 14 | attr = `{ "key": "value" }` 15 | } -------------------------------------------------------------------------------- /tools/image-tag-docker: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # image-tag-docker runs ./tools/image-tag but sanitizes invalid characters 4 | # for use in Docker image tags. 5 | 6 | TAG=$(/usr/bin/env bash ./tools/image-tag) 7 | echo ${TAG//+/-} 8 | -------------------------------------------------------------------------------- /tools/release-note.md: -------------------------------------------------------------------------------- 1 | This is release `${VERSION}` of Grafana Alloy. 2 | 3 | ### Upgrading 4 | 5 | Read the [release notes] for specific instructions on upgrading from older versions: 6 | 7 | [release notes]: https://grafana.com/docs/alloy/${RELEASE_DOC_TAG}/release-notes/ 8 | 9 | ### Notable changes: 10 | 11 | :warning: **ADD ENTRIES FROM CHANGELOG HERE** :warning: 12 | 13 | ### Installation 14 | 15 | Refer to our [installation guide] for how to install Grafana Alloy. 16 | 17 | [installation guide]: https://grafana.com/docs/alloy/${RELEASE_DOC_TAG}/get-started/install/ 18 | -------------------------------------------------------------------------------- /tools/tag-dev: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ ! -z "${GITHUB_WORKSPACE}" ]; then 4 | git config --global --add safe.directory "$GITHUB_WORKSPACE" 5 | # We are only adding a temporary tag so it does not matter what these are set to 6 | git config user.name "alloy" 7 | git config user.email "alloy@users.noreply.github.com" 8 | fi 9 | 10 | TAG=$(tools/image-tag) 11 | git tag $TAG -m "tag dev" --------------------------------------------------------------------------------