Skip to content

Instantly share code, notes, and snippets.

@burdandrei
Last active August 20, 2021 10:01
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save burdandrei/692a23698e355b7fdac6342b4342b171 to your computer and use it in GitHub Desktop.
Save burdandrei/692a23698e355b7fdac6342b4342b171 to your computer and use it in GitHub Desktop.
Receive consul and nomad telemetry in influx in usable form
# Templates are updated to be compatible with nomad > 0.7.1
[agent]
interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "0s"
flush_interval = "10s"
flush_jitter = "3s"
precision = ""
debug = false
quiet = false
hostname = ""
omit_hostname = true
[[outputs.influxdb]]
urls = ["http://influxdb.service.consul:8086"] # required
database = "statsd" # required
retention_policy = ""
timeout = "5s"
# Statistics of number of events received and processing time
[[inputs.internal]]
[inputs.internal.tags]
host = "telegraf-statsd-receiver"
[[inputs.statsd]]
service_address = ":8125"
delete_gauges = false
delete_counters = false
delete_sets = false
delete_timings = true
percentiles = [90]
metric_separator = "_"
templates = [
"consul.consul.* measurement.field*",
"consul.dns.* measurement.measurement.field*",
"consul.memberlist.* measurement.measurement.field*",
"consul.raft.* measurement.measurement.field*",
"consul.runtime.* measurement.measurement.field*",
"consul.serf.queue.* measurement.measurement..queue.field*",
"consul.serf.* measurement.measurement.field*",
"consul.*.runtime.* measurement.host.measurement.field*",
"consul.*.memberlist.* measurement.host.measurement.field",
"consul.* measurement.field*",
"nomad.client.allocated.network.* measurement.measurement.field.field.node-id.datacenter.interface.hostname",
"nomad.client.allocated.* measurement.measurement.field.field.node-id.datacenter.hostname",
"nomad.client.allocations.* measurement.measurement.field.field.node-id.datacenter.hostname",
"nomad.client.allocs.complete.* measurement.measurement.measurement.field.job.task-group.alloc-id.task.hostname",
"nomad.client.allocs.destroy.* measurement.measurement.measurement.field.job.task-group.alloc-id.task.hostname",
"nomad.client.allocs.restart.* measurement.measurement.measurement.field.job.task-group.alloc-id.task.hostname",
"nomad.client.allocs.running.* measurement.measurement.measurement.field.job.task-group.alloc-id.task.hostname",
"nomad.client.allocs.start.* measurement.measurement.measurement.field.job.task-group.alloc-id.task.hostname",
"nomad.client.allocs.* measurement.measurement.measurement.field.field.job.task-group.alloc-id.task.hostname",
"nomad.client.consul.checks.* measurement.measurement.field.hostname",
"nomad.client.consul.services.* measurement.measurement.field.hostname",
"nomad.client.consul.* measurement.measurement.field.field.hostname",
"nomad.client.host.cpu.* measurement.measurement.measurement.field.field.node-id.datacenter.cpu-core.hostname",
"nomad.client.host.disk.* measurement.measurement.measurement.field.field.node-id.datacenter.device-name.hostname",
"nomad.client.host.memory.* measurement.measurement.measurement.field.field.node-id.datacenter.hostname",
"nomad.client.unallocated.* measurement.measurement.field.field.node-id.datacenter.hostname",
"nomad.uptime.* measurement.field.hostname",
"nomad.memberlist.tcp.* measurement.measurement.field.field.hostname",
"nomad.memberlist.udp.* measurement.measurement.field.field.hostname",
"nomad.memberlist.* measurement.measurement.field*",
"nomad.nomad.job_summary.* measurement.nomad.field.field.job.task-group.hostname",
"nomad.nomad.* measurement.nomad.field.field.hostname",
"nomad.raft.replication.*.*.*.*.*.* measurement.field.field.field.ip.ip.ip.ip.hostname",
"nomad.raft.replication.*.*.*.*.*.*.* measurement.field.field.field.field.ip.ip.ip.ip.hostname",
"nomad.raft.*.* measurement.field.fieldhostname",
"nomad.raft.*.*.* measurement.field.field.field.hostname",
"nomad.runtime.* measurement.field.field.hostname",
"nomad.serf.* measurement.field.field.hostname"
]
parse_data_dog_tags = false
allowed_pending_messages = 10000
percentile_limit = 1000
@sundarsrst
Copy link

hii, how does the output look like for this code? when i run this code, it shows null result.

@burdandrei
Copy link
Author

burdandrei commented Jun 23, 2019

@sundarsrst this config gives you the ability to use your telegraf as statsD listener, and parse the statsD messages to Influx Line protocol, ready to be sent to InfluxDB

@nferch
Copy link

nferch commented Jul 18, 2019

Tweaked the template just a bit, to correct a typo and fix the uptime mapping. Using nomad 0.8.7

    "nomad.client.allocated.* measurement.measurement.field.field.node-id.datacenter.hostname",
    "nomad.client.allocations.* measurement.measurement.field.field.node-id.datacenter.hostname",
    "nomad.client.allocs.complete.* measurement.measurement.measurement.field.job.task-group.alloc-id.task.hostname",
    "nomad.client.allocs.destroy.* measurement.measurement.measurement.field.job.task-group.alloc-id.task.hostname",
    "nomad.client.allocs.restart.* measurement.measurement.measurement.field.job.task-group.alloc-id.task.hostname",
    "nomad.client.allocs.running.* measurement.measurement.measurement.field.job.task-group.alloc-id.task.hostname",
    "nomad.client.allocs.start.* measurement.measurement.measurement.field.job.task-group.alloc-id.task.hostname",
    "nomad.client.allocs.* measurement.measurement.measurement.field.field.job.task-group.alloc-id.task.hostname",
    "nomad.client.consul.checks.* measurement.measurement.field.hostname",
    "nomad.client.consul.services.* measurement.measurement.field.hostname",
    "nomad.client.consul.* measurement.measurement.field.field.hostname",
    "nomad.client.host.cpu.* measurement.measurement.measurement.field.field.node-id.datacenter.cpu-core.hostname",
    "nomad.client.host.disk.* measurement.measurement.measurement.field.field.node-id.datacenter.device-name.hostname",
    "nomad.client.host.memory.* measurement.measurement.measurement.field.field.node-id.datacenter.hostname",
    "nomad.client.unallocated.* measurement.measurement.field.field.node-id.datacenter.hostname",
    "nomad.client.uptime.* measurement.measurement.field.node-id.datacenter.hostname",
    "nomad.memberlist.tcp.* measurement.measurement.field.field.hostname",
    "nomad.memberlist.udp.* measurement.measurement.field.field.hostname",
    "nomad.memberlist.* measurement.measurement.field*",
    "nomad.nomad.job_summary.* measurement.nomad.field.field.job.task-group.hostname",
    "nomad.nomad.*.*.* measurement.nomad.field.field.hostname",
    "nomad.nomad.*.*.*.* measurement.nomad.field.field.field.hostname",
    "nomad.raft.replication.*.*.*.*.*.* measurement.field.field.field.ip.ip.ip.ip.hostname",
    "nomad.raft.replication.*.*.*.*.*.*.* measurement.field.field.field.field.ip.ip.ip.ip.hostname",
    "nomad.raft.*.* measurement.field.field.hostname",
    "nomad.raft.*.*.* measurement.field.field.field.hostname",
    "nomad.raft.*.*.*.* measurement.field.field.field.field.hostname",
    "nomad.runtime.* measurement.field.field.hostname",
    "nomad.serf.* measurement.field.field.field.hostname"```

@76creates
Copy link

this made my day, ty ⚡

@76creates
Copy link

if you have issues with allocations showing after being deleted:

delete_gauges = true

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment