From c705704f69f3c58c40c89d9ea93a9cd5ca97e395 Mon Sep 17 00:00:00 2001
From: Kerri Wait <kerri.wait@monash.edu>
Date: Tue, 21 Sep 2021 02:11:51 +0000
Subject: [PATCH] Update telegraf config to parse /proc/net/softnet_stat
 details

---
 roles/telegraf/files/telegraf_softnet_stats.awk |  3 +++
 roles/telegraf/tasks/main.yml                   | 10 +++++++++-
 roles/telegraf/templates/telegraf.conf.j2       |  8 ++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)
 create mode 100644 roles/telegraf/files/telegraf_softnet_stats.awk

diff --git a/roles/telegraf/files/telegraf_softnet_stats.awk b/roles/telegraf/files/telegraf_softnet_stats.awk
new file mode 100644
index 00000000..b24ef34a
--- /dev/null
+++ b/roles/telegraf/files/telegraf_softnet_stats.awk
@@ -0,0 +1,3 @@
+#! /usr/bin/awk -f
+
+{ printf("softnet,cpu=%d sd_processed=%di,sd_dropped=%di,sd_time_squeeze=%di\n", NR-1, strtonum("0x"$1), strtonum("0x"$2), strtonum("0x"$3)) }
\ No newline at end of file
diff --git a/roles/telegraf/tasks/main.yml b/roles/telegraf/tasks/main.yml
index af25f19b..a3afc7ba 100644
--- a/roles/telegraf/tasks/main.yml
+++ b/roles/telegraf/tasks/main.yml
@@ -64,7 +64,15 @@
     dest: '/opt/telegraf/bin/telegraf_slurmstats.py'
   become: true
   become_user: root
-#
+
+- name: copy softnet_stat script
+  copy:
+    mode: 'u=rw,g=r,o=r'
+    src: telegraf_softnet_stats.awk
+    dest: '/opt/telegraf/bin/telegraf_softnet_stats.awk'
+  become: true
+  become_user: root
+
 - name: Install Telegraf config
   template:
     src: telegraf.conf.j2
diff --git a/roles/telegraf/templates/telegraf.conf.j2 b/roles/telegraf/templates/telegraf.conf.j2
index 30a743cb..e50589dc 100644
--- a/roles/telegraf/templates/telegraf.conf.j2
+++ b/roles/telegraf/templates/telegraf.conf.j2
@@ -157,6 +157,14 @@
   timeout="4s"
   interval="300s"
 
+[[inputs.exec]]
+  commands = [
+  "awk -v -f /opt/telegraf/bin/telegraf_softnet_stats.awk /proc/net/softnet_stat"
+  ]
+  data_format = "influx"
+  timeout="4s"
+  interval="600s"
+
 # Both Slurm ManagementNodes will log sdiag stats, but no Compute or Login nodes will
 {% if 'ManagementNodes' in group_names %}
 [[inputs.exec]]
-- 
GitLab