diff --git a/ shard.yml b/ shard.yml new file mode 100644 index 0000000..73024ae --- /dev/null +++ b/ shard.yml @@ -0,0 +1,3 @@ +name: telegraf-pressure-stall +version: 0.1.0 +license: MIT diff --git a/shard.lock b/shard.lock new file mode 100644 index 0000000..4f3e149 --- /dev/null +++ b/shard.lock @@ -0,0 +1,2 @@ +version: 2.0 +shards: {} diff --git a/telegraf_pressure_stall.cr b/telegraf_pressure_stall.cr new file mode 100644 index 0000000..42eb148 --- /dev/null +++ b/telegraf_pressure_stall.cr @@ -0,0 +1,16 @@ +dir = ENV.fetch("PSI_DIR", "/proc/pressure") +time = Time.local.to_s("%s%9N") + +Dir.entries(dir).each do |ressource| + next if File.directory? ressource + + File.read_lines("#{dir}/#{ressource}").each do |line| + parts = line.split + type = parts[0] + metrics = parts[1..-1].map{ |part| part.split('=')}.to_h + + puts %(pressure_stall_avg,ressource="#{ressource}",type=#{type} avg10=#{metrics["avg10"]},avg60=#{metrics["avg60"]},avg300=#{metrics["avg300"]} #{time}) + puts %(pressure_stall_total,ressource="#{ressource}",type=#{type} total=#{metrics["total"]} #{time}) + end +end +