open-telemetry / opentelemetry-collector-contrib

Contrib repository for the OpenTelemetry Collector
https://opentelemetry.io
Apache License 2.0
3.09k stars 2.38k forks source link

add directory attribute in file.count metric (filestats receiver) #36274

Open josepcorrea opened 1 week ago

josepcorrea commented 1 week ago

Component(s)

receiver/filestats

Is your feature request related to a problem? Please describe.

when you want to count the files in a directory, the metric does not show the directory name, so you cannot distinguish different receivers.

 filestats/1:
   include: /tmp/test1/test*
   metrics:
     file.count:
       enabled: true
   resource_attributes:
     file.path:
       enabled: true

 filestats/2:
   include: /tmp/test2/*
   metrics:
     file.count:
       enabled: true
   resource_attributes:
     file.path:
       enabled: true

Only one metric is generated, so you cannot distinguish between the two:

file_count{host_name="localhost", os_type="linux"}

Describe the solution you'd like

Add the directory attribute to be able to distinguish the different file_count metrics:

file_count{directory="/tmp/test1", host_name="localhost", os_type="linux"}
file_count{directory="/tmp/test2", host_name="localhost", os_type="linux"}

In this way the metrics of both directories can be distinguished.

Describe alternatives you've considered

No response

Additional context

No response

github-actions[bot] commented 1 week ago

Pinging code owners:

atoulme commented 5 days ago

The file path should be present as a resource attribute. The filestatsreceiver doesn't set the host_name and os_type attributes.

Please see this file for what the receiver generates: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/filestatsreceiver/testdata/integration/expected.yaml

josepcorrea commented 4 days ago

Thanks @atoulme :

Is there a way to display the path directory?

The attributes host_name and os_type are added with processing resourcedetection component like this:

resourcedetection/system: detectors: ["system"] system: hostname_sources: ["os"] resource_attributes: host.name: enabled: true