metrics.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package main
  2. import (
  3. "log"
  4. "metrics"
  5. // "os"
  6. "syslog"
  7. "time"
  8. )
  9. const fanout = 10
  10. func main() {
  11. r := metrics.NewRegistry()
  12. c := metrics.NewCounter()
  13. r.RegisterCounter("foo", c)
  14. for i := 0; i < fanout; i++ {
  15. go func() {
  16. for {
  17. c.Dec(19)
  18. time.Sleep(300e6)
  19. }
  20. }()
  21. go func() {
  22. for {
  23. c.Inc(47)
  24. time.Sleep(400e6)
  25. }
  26. }()
  27. }
  28. g := metrics.NewGauge()
  29. r.RegisterGauge("bar", g)
  30. for i := 0; i < fanout; i++ {
  31. go func() {
  32. for {
  33. g.Update(19)
  34. time.Sleep(300e6)
  35. }
  36. }()
  37. go func() {
  38. for {
  39. g.Update(47)
  40. time.Sleep(400e6)
  41. }
  42. }()
  43. }
  44. s := metrics.NewExpDecaySample(1028, 0.015)
  45. // s := metrics.NewUniformSample(1028)
  46. h := metrics.NewHistogram(s)
  47. r.RegisterHistogram("baz", h)
  48. for i := 0; i < fanout; i++ {
  49. go func() {
  50. for {
  51. h.Update(19)
  52. time.Sleep(300e6)
  53. }
  54. }()
  55. go func() {
  56. for {
  57. h.Update(47)
  58. time.Sleep(400e6)
  59. }
  60. }()
  61. }
  62. m := metrics.NewMeter()
  63. r.RegisterMeter("bang", m)
  64. for i := 0; i < fanout; i++ {
  65. go func() {
  66. for {
  67. m.Mark(19)
  68. time.Sleep(300e6)
  69. }
  70. }()
  71. go func() {
  72. for {
  73. m.Mark(47)
  74. time.Sleep(400e6)
  75. }
  76. }()
  77. }
  78. // metrics.Log(r, 60, log.New(os.Stderr, "metrics: ", log.Lmicroseconds))
  79. /*
  80. w, err := syslog.Dial("unixgram", "/dev/log", syslog.LOG_INFO, "metrics")
  81. if nil != err { log.Fatalln(err) }
  82. metrics.Syslog(r, 60, w)
  83. */
  84. }