You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

276 lines
8.6 KiB

  1. NOW = $(shell date +%s )
  2. STEP = 60
  3. SUCCESS = 198754
  4. DANGER = DC3545
  5. INFO = 0DCAF0
  6. DANGER1 = F8D7DA
  7. DANGER2 = F1AEB5
  8. DANGER3 = EA868F
  9. DANGER4 = E35D6A
  10. DANGER5 = DC3545
  11. DANGER6 = B02A37
  12. DANGER7 = 842029
  13. DANGER8 = 58151C
  14. DANGER9 = 2C0B0E
  15. INFO1 = 0AA2C0
  16. INFO2 = 0DCAF0
  17. INFO3 = 3DD5F3
  18. IFACE ?= eth0
  19. FS ?= /
  20. FORMAT = SVG
  21. EXTENSION = .$(shell echo $(FORMAT) |tr '[:upper:]' '[:lower:]')
  22. DAY_IN_SECS = 86400
  23. WEEK_IN_SECS = 604800
  24. MONTH_IN_SECS = 2678400
  25. BUILD_DIR = web
  26. all:
  27. cpu.rrd:
  28. rrdtool create $@ --start $$(( $(NOW) - 1 )) --step $(STEP) --no-overwrite \
  29. DS:user:GAUGE:120:0:100 \
  30. DS:nice:GAUGE:120:0:100 \
  31. DS:sys:GAUGE:120:0:100 \
  32. DS:iowait:GAUGE:120:0:100 \
  33. DS:steal:GAUGE:120:0:100 \
  34. DS:irq:GAUGE:120:0:100 \
  35. DS:soft:GAUGE:120:0:100 \
  36. DS:guest:GAUGE:120:0:100 \
  37. DS:gnice:GAUGE:120:0:100 \
  38. DS:idle:GAUGE:120:0:100 \
  39. RRA:LAST:0.5:1:1440 \
  40. RRA:AVERAGE:0.5:420:1440 \
  41. RRA:AVERAGE:0.5:1860:1440 \
  42. RRA:AVERAGE:0.5:21900:1440
  43. update_cpu: cpu.rrd
  44. rrdtool update $< $(NOW):$(shell LANG=C sar -u ALL 0 -1 |tail -n1 |awk '{print $$3,$$4,$$5,$$6,$$7,$$8,$$9,$$10,$$11,$$12}' |tr ' ' ':' )
  45. load.rrd:
  46. rrdtool create $@ --start $$(( $(NOW) - 1 )) --step $(STEP) --no-overwrite \
  47. DS:ldavg-1:GAUGE:120:0:U \
  48. DS:ldavg-5:GAUGE:120:0:U \
  49. DS:ldavg-15:GAUGE:120:0:U \
  50. RRA:LAST:0.5:1:1440 \
  51. RRA:AVERAGE:0.5:420:1440 \
  52. RRA:AVERAGE:0.5:1860:1440 \
  53. RRA:AVERAGE:0.5:21900:1440
  54. update_load: load.rrd
  55. rrdtool update $< $(NOW):$(shell LANG=C sar -q LOAD 0 -1 |tail -n1 |awk '{print $$4,$$5,$$6}' |tr ' ' ':' )
  56. mem.rrd:
  57. rrdtool create $@ --start $$(( $(NOW) - 1 )) --step $(STEP) --no-overwrite \
  58. DS:kbmemfree:GAUGE:120:0:U \
  59. DS:kbbuffers:GAUGE:120:0:U \
  60. DS:kbcached:GAUGE:120:0:U \
  61. DS:kbslab:GAUGE:120:0:U \
  62. RRA:LAST:0.5:1:1440 \
  63. RRA:AVERAGE:0.5:420:1440 \
  64. RRA:AVERAGE:0.5:1860:1440 \
  65. RRA:AVERAGE:0.5:21900:1440
  66. update_mem: mem.rrd
  67. rrdtool update $< $(NOW):$(shell LANG=C sar -r ALL 0 -1 |tail -n1 |awk '{print $$2,$$6,$$7,$$14}' |tr ' ' ':' )
  68. net.rrd:
  69. rrdtool create $@ --start $$(( $(NOW) - 1 )) --step $(STEP) --no-overwrite \
  70. DS:rbytes:COUNTER:120:0:U \
  71. DS:tbytes:COUNTER:120:0:U \
  72. RRA:LAST:0.5:1:1440 \
  73. RRA:AVERAGE:0.5:420:1440 \
  74. RRA:AVERAGE:0.5:1860:1440 \
  75. RRA:AVERAGE:0.5:21900:1440
  76. update_net: net.rrd
  77. rrdtool update $< $(NOW):$(shell cat /proc/net/dev |grep $(IFACE) |awk '{print $$2,$$10}' |tr ' ' ':' )
  78. disk.rrd:
  79. rrdtool create $@ --start $$(( $(NOW) - 1 )) --step $(STEP) --no-overwrite \
  80. DS:mbfsfree:GAUGE:120:0:U \
  81. DS:mbfsused:GAUGE:120:0:U \
  82. RRA:LAST:0.5:1:1440 \
  83. RRA:AVERAGE:0.5:420:1440 \
  84. RRA:AVERAGE:0.5:1860:1440 \
  85. RRA:AVERAGE:0.5:21900:1440
  86. update_disk: disk.rrd
  87. rrdtool update $< $(NOW):$(shell LANG=C sar -F MOUNT --fs=$(FS) 0 -1 |tail -n 1 |awk '{print $$2,$$3}' |tr ' ' ':' )
  88. update: update_cpu update_load update_mem update_net update_disk
  89. run:
  90. while true; do make update; sleep $(STEP); done
  91. $(BUILD_DIR)/cpu-daily$(EXTENSION): cpu.rrd
  92. rrdtool graph $@ --imgformat $(FORMAT) --end now --start end-$(DAY_IN_SECS) \
  93. --title "Processeur" \
  94. --upper-limit 100 \
  95. DEF:user=$<:user:AVERAGE \
  96. DEF:nice=$<:nice:AVERAGE \
  97. DEF:sys=$<:sys:AVERAGE \
  98. DEF:iowait=$<:iowait:AVERAGE \
  99. DEF:steal=$<:steal:AVERAGE \
  100. DEF:irq=$<:irq:AVERAGE \
  101. DEF:soft=$<:soft:AVERAGE \
  102. DEF:guest=$<:guest:AVERAGE \
  103. DEF:gnice=$<:gnice:AVERAGE \
  104. DEF:idle=$<:idle:AVERAGE \
  105. AREA:user#$(DANGER1):user:STACK \
  106. AREA:nice#$(DANGER2):nice:STACK \
  107. AREA:sys#$(DANGER3):sys:STACK \
  108. AREA:iowait#$(DANGER4):iowait:STACK \
  109. AREA:steal#$(DANGER5):steal:STACK \
  110. AREA:irq#$(DANGER6):irq:STACK \
  111. AREA:soft#$(DANGER7):soft:STACK \
  112. AREA:guest#$(DANGER8):guest:STACK \
  113. AREA:gnice#$(DANGER9):gnice:STACK \
  114. AREA:idle#$(SUCCESS):idle:STACK
  115. $(BUILD_DIR)/load-daily$(EXTENSION): load.rrd
  116. rrdtool graph $@ --imgformat $(FORMAT) --end now --start end-$(DAY_IN_SECS) \
  117. --title "Charge système" \
  118. DEF:ldavg-1=$<:ldavg-1:AVERAGE \
  119. DEF:ldavg-5=$<:ldavg-5:AVERAGE \
  120. DEF:ldavg-15=$<:ldavg-15:AVERAGE \
  121. LINE1:ldavg-1#$(INFO1):"sur 1 minute" \
  122. LINE1:ldavg-5#$(INFO2):"sur 5 minutes" \
  123. LINE1:ldavg-15#$(INFO3):"sur 15 minutes"
  124. $(BUILD_DIR)/mem-daily$(EXTENSION): mem.rrd
  125. rrdtool graph $@ --imgformat $(FORMAT) --end now --start end-$(DAY_IN_SECS) \
  126. --title "Mémoire" \
  127. DEF:kbmemfree=$<:kbmemfree:AVERAGE \
  128. CDEF:memfree=kbmemfree,1024,* \
  129. DEF:kbbuffers=$<:kbbuffers:AVERAGE \
  130. CDEF:buffers=kbbuffers,1024,* \
  131. DEF:kbcached=$<:kbcached:AVERAGE \
  132. CDEF:cached=kbcached,1024,* \
  133. DEF:kbslab=$<:kbslab:AVERAGE \
  134. CDEF:slab=kbslab,1024,* \
  135. AREA:buffers#$(DANGER1):"buffers":STACK \
  136. AREA:cached#$(DANGER2):"cached":STACK \
  137. AREA:slab#$(DANGER3):"slab":STACK \
  138. AREA:memfree#$(SUCCESS):"libre":STACK
  139. $(BUILD_DIR)/net-daily$(EXTENSION): net.rrd
  140. rrdtool graph $@ --imgformat $(FORMAT) --end now --start end-$(DAY_IN_SECS) \
  141. --title "Réseau (jour)" \
  142. DEF:rbytes=$<:rbytes:AVERAGE \
  143. CDEF:rbytesps=rbytes,60,/ \
  144. VDEF:rbytespsmax=rbytesps,MAXIMUM \
  145. DEF:tbytes=$<:tbytes:AVERAGE \
  146. CDEF:tbytesps=tbytes,60,/ \
  147. VDEF:tbytespsmax=tbytesps,MAXIMUM \
  148. CDEF:ntbytes=tbytes,-1,* \
  149. HRULE:0#$(INFO) \
  150. AREA:rbytes#$(DANGER):"reçu" \
  151. COMMENT:"maximum " \
  152. GPRINT:rbytespsmax:"%6.2lf %So/s" \
  153. AREA:ntbytes#$(SUCCESS):"envoyé" \
  154. COMMENT:"maximum " \
  155. GPRINT:tbytespsmax:"%6.2lf %So/s"
  156. $(BUILD_DIR)/net-weekly$(EXTENSION): net.rrd
  157. rrdtool graph $@ --imgformat $(FORMAT) --end now --start end-$(WEEK_IN_SECS) \
  158. --title "Réseau (semaine)" \
  159. DEF:rbytes=$<:rbytes:AVERAGE \
  160. CDEF:rbytesps=rbytes,60,/ \
  161. VDEF:rbytespsmax=rbytesps,MAXIMUM \
  162. DEF:tbytes=$<:tbytes:AVERAGE \
  163. CDEF:tbytesps=tbytes,60,/ \
  164. VDEF:tbytespsmax=tbytesps,MAXIMUM \
  165. CDEF:ntbytes=tbytes,-1,* \
  166. HRULE:0#$(INFO) \
  167. AREA:rbytes#$(DANGER):"reçu" \
  168. COMMENT:"maximum " \
  169. GPRINT:rbytespsmax:"%6.2lf %So/s" \
  170. AREA:ntbytes#$(SUCCESS):"envoyé" \
  171. COMMENT:"maximum " \
  172. GPRINT:tbytespsmax:"%6.2lf %So/s"
  173. $(BUILD_DIR)/net-monthly$(EXTENSION): net.rrd
  174. rrdtool graph $@ --imgformat $(FORMAT) --end now --start end-$(MONTH_IN_SECS) \
  175. --title "Réseau (mois)" \
  176. DEF:rbytes=$<:rbytes:AVERAGE \
  177. CDEF:rbytesps=rbytes,60,/ \
  178. VDEF:rbytespsmax=rbytesps,MAXIMUM \
  179. DEF:tbytes=$<:tbytes:AVERAGE \
  180. CDEF:tbytesps=tbytes,60,/ \
  181. VDEF:tbytespsmax=tbytesps,MAXIMUM \
  182. CDEF:ntbytes=tbytes,-1,* \
  183. HRULE:0#$(INFO) \
  184. AREA:rbytes#$(DANGER):"reçu" \
  185. COMMENT:"maximum " \
  186. GPRINT:rbytespsmax:"%6.2lf %So/s" \
  187. AREA:ntbytes#$(SUCCESS):"envoyé" \
  188. COMMENT:"maximum " \
  189. GPRINT:tbytespsmax:"%6.2lf %So/s"
  190. $(BUILD_DIR)/disk-daily$(EXTENSION): disk.rrd
  191. rrdtool graph $@ --imgformat $(FORMAT) --end now --start end-$(DAY_IN_SECS) \
  192. --title "Disque (jour)" \
  193. --lower-limit 0 \
  194. DEF:mbfsfree=$<:mbfsfree:AVERAGE \
  195. CDEF:bfsfree=mbfsfree,1024,*,1024,* \
  196. VDEF:avgbfsfree=bfsfree,AVERAGE \
  197. DEF:mbfsused=$<:mbfsused:AVERAGE \
  198. CDEF:bfsused=mbfsused,1024,*,1024,* \
  199. CDEF:pfsused1=bfsused,100,*,bfsused,bfsfree,+,/ \
  200. VDEF:pfsused2=pfsused1,AVERAGE \
  201. AREA:bfsused#$(DANGER):"utilisé":STACK \
  202. GPRINT:pfsused2:"%3.2lf %%" \
  203. AREA:bfsfree#$(SUCCESS):"libre":STACK \
  204. GPRINT:avgbfsfree:"%4.0lf %So"
  205. $(BUILD_DIR)/disk-weekly$(EXTENSION): disk.rrd
  206. rrdtool graph $@ --imgformat $(FORMAT) --end now --start end-$(WEEK_IN_SECS) \
  207. --title "Disque (semaine)" \
  208. --lower-limit 0 \
  209. DEF:mbfsfree=$<:mbfsfree:AVERAGE \
  210. CDEF:bfsfree=mbfsfree,1024,*,1024,* \
  211. VDEF:avgbfsfree=bfsfree,AVERAGE \
  212. DEF:mbfsused=$<:mbfsused:AVERAGE \
  213. CDEF:bfsused=mbfsused,1024,*,1024,* \
  214. CDEF:pfsused1=bfsused,100,*,bfsused,bfsfree,+,/ \
  215. VDEF:pfsused2=pfsused1,AVERAGE \
  216. AREA:bfsused#$(DANGER):"utilisé":STACK \
  217. GPRINT:pfsused2:"%3.2lf %%" \
  218. AREA:bfsfree#$(SUCCESS):"libre":STACK \
  219. GPRINT:avgbfsfree:"%4.0lf %So"
  220. $(BUILD_DIR)/disk-monthly$(EXTENSION): disk.rrd
  221. rrdtool graph $@ --imgformat $(FORMAT) --end now --start end-$(MONTH_IN_SECS) \
  222. --title "Disque (mois)" \
  223. --lower-limit 0 \
  224. DEF:mbfsfree=$<:mbfsfree:AVERAGE \
  225. CDEF:bfsfree=mbfsfree,1024,*,1024,* \
  226. VDEF:avgbfsfree=bfsfree,AVERAGE \
  227. DEF:mbfsused=$<:mbfsused:AVERAGE \
  228. CDEF:bfsused=mbfsused,1024,*,1024,* \
  229. CDEF:pfsused1=bfsused,100,*,bfsused,bfsfree,+,/ \
  230. VDEF:pfsused2=pfsused1,AVERAGE \
  231. AREA:bfsused#$(DANGER):"utilisé":STACK \
  232. GPRINT:pfsused2:"%3.2lf %%" \
  233. AREA:bfsfree#$(SUCCESS):"libre":STACK \
  234. GPRINT:avgbfsfree:"%4.0lf %So"
  235. .PHONY: $(BUILD_DIR)/index.html
  236. $(BUILD_DIR)/index.html: index.php
  237. php $< >$@
  238. # $(BUILD_DIR)/%.html: %.php
  239. # php $< >$@
  240. graph: $(BUILD_DIR)/cpu-daily$(EXTENSION) $(BUILD_DIR)/load-daily$(EXTENSION) $(BUILD_DIR)/mem-daily$(EXTENSION) $(BUILD_DIR)/net-daily$(EXTENSION) $(BUILD_DIR)/net-weekly$(EXTENSION) $(BUILD_DIR)/net-monthly$(EXTENSION) $(BUILD_DIR)/disk-daily$(EXTENSION) $(BUILD_DIR)/disk-weekly$(EXTENSION) $(BUILD_DIR)/disk-monthly$(EXTENSION) $(BUILD_DIR)/index.html