Closed rcdailey closed 1 year ago
Ok I think I may see at least one problem. Your example shows that AWS_REGION
environment variable must be defined. I assumed it would read the region = us-east-1
value from the config
file. The .NET libraries and tooling have done this so far, so I find this unusual.
Another (unrelated) point of confusion is that apparently I can't send logs to cloudwatch from the ADOT collector. Maybe I'm misunderstanding some fundamentals, but I thought one of the main things CloudWatch provided was the ability to aggregate/read logs. At least, I'm able to go there and see logs from ECS containers.
Normally AWS SDK fetch region from a chain (similar to credential, config, env, EC2 IMDS) but for ADOT, it is using its own 'chain' to combine the region value, ideally it should make the value from ADOT config part of the chain resolvers so the behavior is consistent ... https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/2ce89452c0dad914ef412575e06636c6a4cb402c/internal/aws/awsutil/conn.go#L129-L152
As for log. I haven't worked on ADOT for a while, l remember log in opentelemetry is not GA. ADOT actually does have the ability to write to CloudWatch Logs, but that is only used in awsemfexporter
which is sending metrics in the Embed Metrics Format as log. I am not sure about the current work in ADOT, but if you do need agent to send log to cloudwatch log, you can use https://github.com/aws/amazon-cloudwatch-agent The ECS log are sent to CloudWatch should be using the cloudwatch log driver from docker engine https://docs.docker.com/config/containers/logging/awslogs/
Thank you for the support. That helps move me along. I was able to get the region working by setting the AWS_REGION
environment variable in docker-compose.yml
. Also, your advice about AWS EMF was extremely helpful as well.
I followed the instructions to set up the AWS otel collector in a docker container. I do not use the auth environment variables, so I instead mounted my
.aws
directory. I'm using Docker Compose on Windows 10. See the compose YAML below.I have another service in this compose stack that houses my actual microservice (C# webapi project). It shares the same bridge network. That particular project uses the AWS .NET SDKs, and we also mount the
.aws
directory there and it works.I did also try adding the AWS environment variables but that didn't seem to change the outcome. I'm not sure what the error is trying to tell me.
Here is the contents of my
.aws
directory:config
:credentials
:In my Windows environment, I have the
AWS_PROFILE
environment variable set toMyProfile
.Here is my collector config:
The logs I get when I do
docker compose up
are below. What do these errors mean and what is causing them?