Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[filebeat] Introduce otel mode #41849

Merged
merged 56 commits into from
Jan 1, 2025
Merged
Show file tree
Hide file tree
Changes from 54 commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
133a5e8
first draft
khushijain21 Dec 2, 2024
e0cff62
first draft
khushijain21 Dec 2, 2024
00d6c0c
end to end otel collector work
khushijain21 Dec 2, 2024
d08f18d
throw error when any other o/p is configure and its related tests
khushijain21 Dec 2, 2024
faf0466
use converters for config translation
khushijain21 Dec 3, 2024
9583762
chore
khushijain21 Dec 3, 2024
e33a4c8
add tests for converters
khushijain21 Dec 3, 2024
c462732
Update libbeat/otelcommon/converters/beatconverter.go
khushijain21 Dec 3, 2024
fc96363
Merge branch 'main' into fosb1
khushijain21 Dec 3, 2024
ff1f4e6
Update x-pack/filebeat/cmd/otel.go
khushijain21 Dec 4, 2024
387fb2d
Update x-pack/filebeat/cmd/otel.go
khushijain21 Dec 4, 2024
d0c394b
abstract converter logic
khushijain21 Dec 4, 2024
5b5ea8b
throw error for unsupported config
khushijain21 Dec 4, 2024
d5fed21
linter issues and documentation
khushijain21 Dec 4, 2024
1855805
Merge branch 'main' into fosb1
khushijain21 Dec 4, 2024
5eb387a
throw error for unsupported ES SSL config and added tests for it
khushijain21 Dec 5, 2024
1e69b19
linting issues
khushijain21 Dec 5, 2024
6c2fe25
linting issue fixed
khushijain21 Dec 5, 2024
1947305
Merge branch 'main' into fosb1
khushijain21 Dec 5, 2024
e5a7b1c
add type safety check
khushijain21 Dec 6, 2024
e416b77
make update
khushijain21 Dec 6, 2024
a3a27bd
add tests for tls and es config
khushijain21 Dec 9, 2024
c890087
Merge remote-tracking branch 'upstream/main' into fosb1
khushijain21 Dec 9, 2024
9fbdad3
update tests
khushijain21 Dec 9, 2024
f0717cd
add notice
khushijain21 Dec 9, 2024
fc6d6f5
lintint
khushijain21 Dec 9, 2024
1c54a32
fix tls test
khushijain21 Dec 9, 2024
136747c
tls logic refactoring
khushijain21 Dec 9, 2024
fc8b67b
linting errors
khushijain21 Dec 9, 2024
b8070e0
otel binary test
khushijain21 Dec 11, 2024
34d05c9
Merge remote-tracking branch 'upstream/main' into fosb1
khushijain21 Dec 11, 2024
15ff78a
notice
khushijain21 Dec 11, 2024
bc9cda6
es test fix
khushijain21 Dec 11, 2024
276afe9
changed otelcommon to otelbeat
khushijain21 Dec 12, 2024
67c9308
move otel.go to x-pack/libbeat
khushijain21 Dec 12, 2024
7dc0537
uncomment logs_index
khushijain21 Dec 12, 2024
b09c5d3
build errors
khushijain21 Dec 12, 2024
8f31a23
refactoring
khushijain21 Dec 12, 2024
6c47665
commented batcher functionality as it is experimental
khushijain21 Dec 16, 2024
21654a6
Merge remote-tracking branch 'upstream/main' into fosb1
khushijain21 Dec 16, 2024
8f24b22
moved filebeat-yml out of cmd subdirectory
khushijain21 Dec 17, 2024
4eb3605
nit
khushijain21 Dec 17, 2024
57a5b93
Update libbeat/outputs/elasticsearch/config_otel.go
khushijain21 Dec 17, 2024
54c48c8
refactoring es config translation
khushijain21 Dec 18, 2024
3ffc4df
addressing review comments
khushijain21 Dec 18, 2024
f1db388
Merge remote-tracking branch 'upstream/main' into fosb1
khushijain21 Dec 18, 2024
f000986
correct the test
khushijain21 Dec 18, 2024
8f7f2fb
add failure if multiple o/p are configured
khushijain21 Dec 18, 2024
cd679ad
embedd test files
khushijain21 Dec 18, 2024
a399fef
remove redundant test case
khushijain21 Dec 18, 2024
b8b5917
default filebeat-otel.yml change
khushijain21 Dec 18, 2024
af5ee52
add support for cloud-id
khushijain21 Dec 19, 2024
2870c08
remove debug statements
khushijain21 Dec 19, 2024
7f98ce0
Merge branch 'main' into fosb1
khushijain21 Dec 19, 2024
225f9d7
Merge remote-tracking branch 'refs/remotes/upstream/main' into fosb1
khushijain21 Dec 31, 2024
941ca15
update
khushijain21 Dec 31, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30,125 changes: 21,497 additions & 8,628 deletions NOTICE.txt

Large diffs are not rendered by default.

144 changes: 108 additions & 36 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ require (
github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2
github.com/digitalocean/go-libvirt v0.0.0-20240709142323-d8406205c752
github.com/docker/docker v27.3.1+incompatible
github.com/docker/go-connections v0.4.0
github.com/docker/go-connections v0.5.0
github.com/docker/go-plugins-helpers v0.0.0-20181025120712-1e6269c305b8
github.com/docker/go-units v0.5.0
github.com/dolmen-go/contextio v0.0.0-20200217195037-68fc5150bcd5
Expand All @@ -66,14 +66,14 @@ require (
github.com/elastic/go-lumber v0.1.2-0.20220819171948-335fde24ea0f
github.com/elastic/go-perf v0.0.0-20241029065020-30bec95324b8
github.com/elastic/go-seccomp-bpf v1.5.0
github.com/elastic/go-structform v0.0.10
github.com/elastic/go-structform v0.0.12
github.com/elastic/go-sysinfo v1.15.0
github.com/elastic/go-ucfg v0.8.8
github.com/elastic/gosigar v0.14.3
github.com/fatih/color v1.16.0
github.com/fearful-symmetry/gorapl v0.0.4
github.com/fsnotify/fsevents v0.1.1
github.com/fsnotify/fsnotify v1.7.0
github.com/fsnotify/fsnotify v1.8.0
github.com/go-sourcemap/sourcemap v2.1.2+incompatible // indirect
github.com/go-sql-driver/mysql v1.6.0
github.com/gocarina/gocsv v0.0.0-20170324095351-ffef3ffc77be
Expand Down Expand Up @@ -110,7 +110,7 @@ require (
github.com/pkg/errors v0.9.1
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_model v0.6.1
github.com/prometheus/common v0.57.0
github.com/prometheus/common v0.60.1
github.com/prometheus/procfs v0.15.1
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475
github.com/samuel/go-parser v0.0.0-20130731160455-ca8abbf65d0e // indirect
Expand All @@ -127,19 +127,19 @@ require (
go.etcd.io/bbolt v1.3.10
go.uber.org/multierr v1.11.0
go.uber.org/zap v1.27.0
golang.org/x/crypto v0.31.0
golang.org/x/crypto v0.29.0
golang.org/x/mod v0.21.0
golang.org/x/net v0.30.0
golang.org/x/oauth2 v0.22.0
golang.org/x/sync v0.10.0
golang.org/x/sys v0.28.0
golang.org/x/text v0.21.0
golang.org/x/net v0.31.0
golang.org/x/oauth2 v0.23.0
golang.org/x/sync v0.9.0
golang.org/x/sys v0.27.0
golang.org/x/text v0.20.0
golang.org/x/time v0.6.0
golang.org/x/tools v0.25.0
google.golang.org/api v0.191.0
google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf // indirect
google.golang.org/grpc v1.66.0
google.golang.org/protobuf v1.34.2
google.golang.org/grpc v1.67.1
google.golang.org/protobuf v1.35.1
gopkg.in/inf.v0 v0.9.1
gopkg.in/yaml.v2 v2.4.0
gotest.tools/gotestsum v1.7.0
Expand Down Expand Up @@ -202,25 +202,32 @@ require (
github.com/klauspost/compress v1.17.11
github.com/meraki/dashboard-api-go/v3 v3.0.9
github.com/microsoft/go-mssqldb v1.7.2
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter v0.114.0
github.com/otiai10/copy v1.12.0
github.com/pierrec/lz4/v4 v4.1.21
github.com/pkg/xattr v0.4.9
github.com/prometheus/prometheus v0.54.1
github.com/shirou/gopsutil/v4 v4.24.7
github.com/shirou/gopsutil/v4 v4.24.10
github.com/tklauser/go-sysconf v0.3.12
github.com/xdg-go/scram v1.1.2
github.com/zyedidia/generic v1.2.1
go.elastic.co/apm/module/apmelasticsearch/v2 v2.6.0
go.elastic.co/apm/module/apmhttp/v2 v2.6.0
go.elastic.co/apm/v2 v2.6.0
go.mongodb.org/mongo-driver v1.14.0
go.opentelemetry.io/collector/component v0.109.0
go.opentelemetry.io/collector/consumer v0.109.0
go.opentelemetry.io/collector/pdata v1.15.0
go.opentelemetry.io/collector/receiver v0.109.0
go.opentelemetry.io/collector/component v0.114.0
go.opentelemetry.io/collector/config/configtls v1.20.0
go.opentelemetry.io/collector/confmap v1.20.0
go.opentelemetry.io/collector/consumer v0.114.0
go.opentelemetry.io/collector/consumer/consumererror v0.114.0
go.opentelemetry.io/collector/exporter v0.114.0
go.opentelemetry.io/collector/exporter/debugexporter v0.114.0
go.opentelemetry.io/collector/otelcol v0.114.0
go.opentelemetry.io/collector/pdata v1.20.0
go.opentelemetry.io/collector/receiver v0.114.0
go.uber.org/mock v0.5.0
golang.org/x/term v0.27.0
google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f
golang.org/x/term v0.26.0
google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28
gopkg.in/natefinch/lumberjack.v2 v2.2.1
)

Expand All @@ -232,7 +239,6 @@ require (
cloud.google.com/go/iam v1.1.12 // indirect
cloud.google.com/go/longrunning v0.5.11 // indirect
code.cloudfoundry.org/gofileutils v0.0.0-20170111115228-4d0c80011a0f // indirect
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
github.com/Azure/azure-amqp-common-go/v4 v4.2.0 // indirect
github.com/Azure/azure-pipeline-go v0.2.3 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
Expand Down Expand Up @@ -264,6 +270,7 @@ require (
github.com/benbjohnson/clock v1.3.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bluekeyes/go-gitdiff v0.7.1 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/cilium/ebpf v0.13.2 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 // indirect
Expand All @@ -275,7 +282,10 @@ require (
github.com/docker/go-metrics v0.0.1 // indirect
github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 // indirect
github.com/eapache/queue v1.1.0 // indirect
github.com/ebitengine/purego v0.8.1 // indirect
github.com/elastic/elastic-transport-go/v8 v8.6.0 // indirect
github.com/elastic/go-docappender/v2 v2.3.0 // indirect
github.com/elastic/go-elasticsearch/v7 v7.17.10 // indirect
github.com/elastic/go-windows v1.0.2 // indirect
github.com/elastic/pkcs8 v1.0.0 // indirect
github.com/elazarl/goproxy v0.0.0-20240909085733-6741dbfc16a1 // indirect
Expand All @@ -293,6 +303,7 @@ require (
github.com/go-openapi/jsonreference v0.20.4 // indirect
github.com/go-openapi/swag v0.22.9 // indirect
github.com/go-resty/resty/v2 v2.13.1 // indirect
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
github.com/goccy/go-json v0.10.3 // indirect
github.com/godror/knownpb v0.1.0 // indirect
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
Expand All @@ -307,13 +318,14 @@ require (
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect
github.com/hashicorp/cronexpr v1.1.2 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-rootcerts v1.0.2 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/go-version v1.2.0 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
github.com/imdario/mergo v0.3.16 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jcmturner/aescts/v2 v2.0.0 // indirect
Expand All @@ -327,8 +339,12 @@ require (
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
github.com/klauspost/asmfmt v1.3.2 // indirect
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
github.com/knadh/koanf/maps v0.1.1 // indirect
github.com/knadh/koanf/providers/confmap v0.1.0 // indirect
github.com/knadh/koanf/v2 v2.1.2 // indirect
github.com/kortschak/utter v1.5.0 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/lestrrat-go/strftime v1.1.0 // indirect
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-ieproxy v0.0.1 // indirect
Expand All @@ -337,8 +353,10 @@ require (
github.com/mileusna/useragent v1.3.4 // indirect
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/iochan v1.0.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/moby/spdystream v0.2.0 // indirect
github.com/moby/sys/userns v0.1.0 // indirect
Expand All @@ -348,16 +366,16 @@ require (
github.com/morikuni/aec v1.0.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
github.com/onsi/ginkgo/v2 v2.17.1 // indirect
github.com/onsi/gomega v1.33.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.114.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.114.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
github.com/prometheus/client_golang v1.20.2 // indirect
github.com/rogpeppe/go-internal v1.12.0 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/rogpeppe/go-internal v1.13.1 // indirect
github.com/rs/cors v1.11.1 // indirect
github.com/sergi/go-diff v1.3.1 // indirect
github.com/shoenig/go-m1cpu v0.1.6 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/stoewer/go-strcase v1.2.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
Expand All @@ -367,20 +385,74 @@ require (
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
github.com/zeebo/xxh3 v1.0.2 // indirect
go.elastic.co/fastjson v1.1.0 // indirect
go.elastic.co/apm/module/apmzap/v2 v2.6.0 // indirect
go.elastic.co/fastjson v1.3.0 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/collector/config/configtelemetry v0.109.0 // indirect
go.opentelemetry.io/collector/consumer/consumerprofiles v0.109.0 // indirect
go.opentelemetry.io/collector/pdata/pprofile v0.109.0 // indirect
go.opentelemetry.io/collector/client v1.20.0 // indirect
go.opentelemetry.io/collector/component/componentstatus v0.114.0 // indirect
go.opentelemetry.io/collector/component/componenttest v0.114.0 // indirect
go.opentelemetry.io/collector/config/configauth v0.114.0 // indirect
go.opentelemetry.io/collector/config/configcompression v1.20.0 // indirect
go.opentelemetry.io/collector/config/confighttp v0.114.0 // indirect
go.opentelemetry.io/collector/config/configopaque v1.20.0 // indirect
go.opentelemetry.io/collector/config/configretry v1.20.0 // indirect
go.opentelemetry.io/collector/config/configtelemetry v0.114.0 // indirect
go.opentelemetry.io/collector/config/internal v0.114.0 // indirect
go.opentelemetry.io/collector/connector v0.114.0 // indirect
go.opentelemetry.io/collector/connector/connectorprofiles v0.114.0 // indirect
go.opentelemetry.io/collector/connector/connectortest v0.114.0 // indirect
go.opentelemetry.io/collector/consumer/consumererror/consumererrorprofiles v0.114.0 // indirect
go.opentelemetry.io/collector/consumer/consumerprofiles v0.114.0 // indirect
go.opentelemetry.io/collector/consumer/consumertest v0.114.0 // indirect
go.opentelemetry.io/collector/exporter/exporterhelper/exporterhelperprofiles v0.114.0 // indirect
go.opentelemetry.io/collector/exporter/exporterprofiles v0.114.0 // indirect
go.opentelemetry.io/collector/exporter/exportertest v0.114.0 // indirect
go.opentelemetry.io/collector/extension v0.114.0 // indirect
go.opentelemetry.io/collector/extension/auth v0.114.0 // indirect
go.opentelemetry.io/collector/extension/experimental/storage v0.114.0 // indirect
go.opentelemetry.io/collector/extension/extensioncapabilities v0.114.0 // indirect
go.opentelemetry.io/collector/extension/extensiontest v0.114.0 // indirect
go.opentelemetry.io/collector/featuregate v1.20.0 // indirect
go.opentelemetry.io/collector/internal/fanoutconsumer v0.114.0 // indirect
go.opentelemetry.io/collector/pdata/pprofile v0.114.0 // indirect
go.opentelemetry.io/collector/pdata/testdata v0.114.0 // indirect
go.opentelemetry.io/collector/pipeline v0.114.0 // indirect
go.opentelemetry.io/collector/pipeline/pipelineprofiles v0.114.0 // indirect
go.opentelemetry.io/collector/processor v0.114.0 // indirect
go.opentelemetry.io/collector/processor/processorprofiles v0.114.0 // indirect
go.opentelemetry.io/collector/processor/processortest v0.114.0 // indirect
go.opentelemetry.io/collector/receiver/receiverprofiles v0.114.0 // indirect
go.opentelemetry.io/collector/receiver/receivertest v0.114.0 // indirect
go.opentelemetry.io/collector/semconv v0.114.0 // indirect
go.opentelemetry.io/collector/service v0.114.0 // indirect
go.opentelemetry.io/contrib/bridges/otelzap v0.6.0 // indirect
go.opentelemetry.io/contrib/config v0.10.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
go.opentelemetry.io/otel v1.29.0 // indirect
go.opentelemetry.io/otel/metric v1.29.0 // indirect
go.opentelemetry.io/otel/trace v1.29.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect
go.opentelemetry.io/contrib/propagators/b3 v1.31.0 // indirect
go.opentelemetry.io/otel v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.7.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/prometheus v0.54.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.7.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.31.0 // indirect
go.opentelemetry.io/otel/log v0.8.0 // indirect
go.opentelemetry.io/otel/metric v1.32.0 // indirect
go.opentelemetry.io/otel/sdk v1.32.0 // indirect
go.opentelemetry.io/otel/sdk/log v0.7.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect
go.opentelemetry.io/otel/trace v1.32.0 // indirect
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
go.uber.org/ratelimit v0.3.1 // indirect
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd // indirect
gonum.org/v1/gonum v0.15.1 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
Expand Down
Loading
Loading