Skip to content

Commit 5bd60c0

Browse files
committed
chore(dogfood): Update dogfood to add cgroup CPU and RAM usage
This currently does not work on US Pittsburgh because of being on Ubuntu Focal and Kernel 5.4.
1 parent 8778449 commit 5bd60c0

File tree

1 file changed

+49
-22
lines changed

1 file changed

+49
-22
lines changed

dogfood/main.tf

Lines changed: 49 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -95,48 +95,75 @@ resource "coder_agent" "dev" {
9595

9696
metadata {
9797
display_name = "CPU Usage"
98-
key = "cpu"
99-
script = <<EOT
100-
vmstat | awk 'FNR==3 {printf "%2.0f%%", $13+$14+$16}'
101-
EOT
102-
interval = 1
98+
interval = 10
10399
timeout = 1
100+
key = "0_cpu_usage"
101+
script = <<EOT
102+
#!/bin/bash
103+
# interval in microseconds should be metadata.interval * 1000000
104+
interval=10000000
105+
ncores=$(nproc)
106+
cusage_p=$(cat /tmp/cusage || echo 0)
107+
cusage=$(cat /sys/fs/cgroup/cpu.stat | head -n 1 | awk '{ print $2 }') && echo "$cusage $cusage_p $interval $ncores" | awk '{ printf "%2.0f%%\n", (($1 - $2)/$3/$4)*100 }'
108+
echo $cusage > /tmp/cusage
109+
EOT
104110
}
105111

106112
metadata {
107-
display_name = "Load Average"
108-
key = "load"
109-
script = "awk '{print $1}' /proc/loadavg"
110-
interval = 1
113+
display_name = "RAM Usage"
114+
interval = 10
111115
timeout = 1
116+
key = "1_ram_usage"
117+
script = <<EOT
118+
#!/bin/bash
119+
echo "`cat /sys/fs/cgroup/memory.current` `cat /sys/fs/cgroup/memory.max`" | awk '{ used=$1/1024/1024/1024; total=$2/1024/1024/1024; printf "%0.2f / %0.2f GB\n", used, total }'
120+
EOT
112121
}
113122

123+
114124
metadata {
115-
display_name = "Disk Usage"
116-
key = "disk"
117-
script = "df -h | awk '$6 ~ /^\\/$/ { print $5 }'"
118-
interval = 1
125+
display_name = "CPU Usage (Host)"
126+
key = "2_cpu_host"
127+
script = <<EOT
128+
vmstat | awk 'FNR==3 {printf "%2.0f%%", $13+$14+$16}'
129+
EOT
130+
interval = 10
119131
timeout = 1
120132
}
121133

122134
metadata {
123-
display_name = "Memory Usage"
124-
key = "mem"
135+
display_name = "Memory Usage (Host)"
136+
key = "3_mem_host"
125137
script = <<EOT
126-
free | awk '/^Mem/ { printf("%.0f%%", $4/$2 * 100.0) }'
127-
EOT
128-
interval = 1
138+
free | awk '/^Mem/ { printf("%.0f%%", $4/$2 * 100.0) }'
139+
EOT
140+
interval = 10
141+
timeout = 1
142+
}
143+
144+
metadata {
145+
display_name = "Load Average (Host)"
146+
key = "4_load_host"
147+
script = "awk '{print $1}' /proc/loadavg"
148+
interval = 10
129149
timeout = 1
130150
}
131151

152+
metadata {
153+
display_name = "Disk Usage (Host)"
154+
key = "5_disk_host"
155+
script = "df -h | awk '$6 ~ /^\\/$/ { print $5 }'"
156+
interval = 600
157+
timeout = 10 #getting disk usage can take a while
158+
}
132159

133160
metadata {
134161
display_name = "Word of the Day"
135-
key = "word"
162+
key = "6_word"
136163
script = <<EOT
137-
curl -o - --silent https://www.merriam-webster.com/word-of-the-day 2>&1 | awk ' $0 ~ "Word of the Day: [A-z]+" { print $5; exit }'
138-
EOT
139-
interval = 60
164+
curl -o - --silent https://www.merriam-webster.com/word-of-the-day 2>&1 | awk ' $0 ~ "Word of the Day: [A-z]+" { print $5; exit }'
165+
EOT
166+
interval = 86400
140167
timeout = 5
141168
}
142169

0 commit comments

Comments
 (0)