Question about community.general.opentelemetry callback

Hi group, good day, how are you?

I have a question about using community.general.opentelemetry to send data to APM.

I have set my ansible.cfg like this.

[defaults]

callbacks_enabled = community.general.opentelemetry

[callback_opentelemetry]

enable_from_environment = ANSIBLE_OPENTELEMETRY_ENABLED

And then environment variables like this.

OTEL_EXPORTER_OTLP_ENDPOINT=http://elk-server:8200

OTEL_EXPORTER_OTLP_HEADERS=“authorization=Bearer xxxxxx”

OTEL_SERVICE_NAME=ansible

I have also installed the telemetry python packages

pip list | grep opentele
opentelemetry-api 1.13.0
opentelemetry-exporter-otlp 1.13.0
opentelemetry-exporter-otlp-proto-grpc 1.13.0
opentelemetry-exporter-otlp-proto-http 1.13.0
opentelemetry-instrumentation 0.34b0
opentelemetry-proto 1.13.0
opentelemetry-sdk 1.13.0
opentelemetry-semantic-conventions 0.34b0

But still getting this error, does anyone have some ideas?

Appreciate it

[WARNING]: Skipping callback ‘community.general.opentelemetry’, unable to load due to: The opentelemetry-api,
opentelemetry-exporter-otlp or opentelemetry-sdk must be installed to use this plugin

What does ‘ansible --version’ say?
And ‘pip --version’

Hi man, thanks for the time.

Please see the information as requested

ansible --version
ansible [core 2.13.2]

pip --version
pip 22.3 from /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages/pip (python 3.9)

python --version
Python 3.9.13

Hi man, thanks for the time.

Please see the information as requested

ansible --version
ansible [core 2.13.2]

This is not the entire output. It should like this like this:

ansible [core 2.11.7]
config file = /Users/dick.visser/git/github.com/dnmvisser/tienhuis_ansible/ansible.cfg
configured module search path = [‘/Users/dick.visser/.ansible/plugins/modules’, ‘/usr/share/ansible/plugins/modules’]
ansible python module location = /Users/dick.visser/git/github.com/dnmvisser/tienhuis_ansible/venv/lib/python3.9/site-packages/ansible
ansible collection location = /Users/dick.visser/.ansible/collections:/usr/share/ansible/collections
executable location = /Users/dick.visser/git/github.com/dnmvisser/tienhuis_ansible/venv/bin/ansible
python version = 3.9.9 (main, Jan 25 2022, 23:02:06) [Clang 13.0.0 (clang-1300.0.29.30)]
jinja version = 3.0.3
libyaml = True

Hi man.

This is the entire output

ansible --version
ansible [core 2.13.2]
config file = None
configured module search path = [‘/home/daniel/.ansible/plugins/modules’, ‘/usr/share/ansible/plugins/modules’]
ansible python module location = /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages/ansible
ansible collection location = /home/daniel/.ansible/collections:/usr/share/ansible/collections
executable location = /home/daniel/py_venvs/ansible_2.13/bin/ansible
python version = 3.9.13 (main, May 23 2022, 22:02:02) [GCC 7.5.0]
jinja version = 3.1.2
libyaml = True

That seems right.
I don’t know what it could be then.

Maybe also take a look at pip list -v to see the paths of where those python libraries are installed. And make sure they are in /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages/

Yes, it’s strange.

They are installed in that path
pip list -v | grep opent
opentelemetry-api 1.13.0 /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages pip
opentelemetry-exporter-otlp 1.13.0 /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages pip
opentelemetry-exporter-otlp-proto-grpc 1.13.0 /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages pip
opentelemetry-exporter-otlp-proto-http 1.13.0 /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages pip
opentelemetry-instrumentation 0.34b0 /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages pip
opentelemetry-proto 1.13.0 /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages pip
opentelemetry-sdk 1.13.0 /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages pip
opentelemetry-semantic-conventions 0.34b0 /home/daniel/py_venvs/ansible_2.13/lib/python3.9/site-packages pip

But I was able to make it work using a container on AWX. I’ll try to reinstall my venv and packages to work locally.

Thanks for your tips!!

Hi,

unfortunately you did not mention which version of community.general
you are using. For opentelemetry-api 1.13.0 you need community.general
5.8.0, since that contains a bugfix which allows the opentelemetry
callback to work with that version. (It removed some helper function
that the plugin was using, see
https://github.com/ansible-collections/community.general/blob/stable-5/CHANGELOG.rst#bugfixes.)

Cheers,
Felix

Hi Felix.

You are completely right.
I’ve tried with the community.general:5.7.0 and it didn’t work out.
After changing to version 6.0.0 it started to work perfectly.

Thank you all for sharing your knowledge.

Br,