Skip to content

filename with name Variable instead of host variable in graphite #199

@stonby

Description

@stonby

Does anyone know how to get the Name of a Device instead of the IP passed as Filename to graphite?
I would like to use the name Filed instead of the Host Field, as the Tree would be better readable.

Config:

probes:
  - name: blub
    type: std_fping
    output:
      - graphite_loss

    groups:
      - name: Group1
        hosts:
          - host: 10.11.12.13
            name: Device1

plugins:
  - name: graphite_loss
    type: graphite

    filename: "{source}-{host}-{field}"
    graphite_host: "127.0.0.1"
    protocol: "http"
    prefix: vaping
    field: loss

When Changing the Line of filename to name

    filename: "{source}-{name}-{field}"

Vaping crashes with this Stacktrace:

vaping.daemon stopping graphite_loss daemon.py:256
vaping.daemon stopping blub daemon.py:256
Traceback (most recent call last):
  File "/opt/vaping/./bin/vaping", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/click/decorators.py", line 92, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/vaping/cli.py", line 77, in start
    daemon.run()
  File "/opt/vaping/lib/python3.12/site-packages/vaping/daemon.py", line 246, in run
    return self._main()
           ^^^^^^^^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/vaping/daemon.py", line 212, in _main
    vaping.io.join_plugins(self.joins)
  File "/opt/vaping/lib/python3.12/site-packages/vaping/io.py", line 32, in join_plugins
    asyncio_run(run_plugins())
  File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/vaping/io.py", line 30, in run_plugins
    await asyncio.gather(*tasks)
  File "/opt/vaping/lib/python3.12/site-packages/vaping/plugins/__init__.py", line 280, in _run
    await self.emit_all()
  File "/opt/vaping/lib/python3.12/site-packages/vaping/plugins/__init__.py", line 251, in emit_all
    await self.send_emission()
  File "/opt/vaping/lib/python3.12/site-packages/vaping/plugins/__init__.py", line 244, in send_emission
    await emit()
  File "/opt/vaping/lib/python3.12/site-packages/vaping/plugins/__init__.py", line 228, in emit
    emitter.emit(msg)
  File "/opt/vaping/lib/python3.12/site-packages/vaping/plugins/__init__.py", line 585, in emit
    filename = self.format_filename(message, row)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/vaping/lib/python3.12/site-packages/vaping/plugins/__init__.py", line 563, in format_filename
    return self.filename.format(**self.filename_formatters(data, row))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'name'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions