Guest User

Untitled

a guest
Jul 22nd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.78 KB | None | 0 0
  1. POST _xpack/watcher/watch/_execute
  2. {
  3. "watch": {
  4. "metadata": {
  5. "window_period": "10m",
  6. "index_pattern": "packetbeat-*"
  7. },
  8. "trigger": {
  9. "schedule": {
  10. "interval": "10m"
  11. }
  12. },
  13. "input": {
  14. "chain": {
  15. "inputs": [
  16. {
  17. "dhcpv4_clients": {
  18. "search": {
  19. "request": {
  20. "indices": [
  21. "packetbeat-*"
  22. ],
  23. "body": {
  24. "query": {
  25. "bool": {
  26. "must": [
  27. {
  28. "range": {
  29. "@timestamp": {
  30. "gte": "now-{{ctx.metadata.window_period}}"
  31. }
  32. }
  33. },
  34. {
  35. "term": {
  36. "type": {
  37. "value": "dhcpv4"
  38. }
  39. }
  40. }
  41. ]
  42. }
  43. },
  44. "aggs": {
  45. "client_macs": {
  46. "terms": {
  47. "field": "dhcpv4.client_mac",
  48. "size": 1000
  49. },
  50. "aggs": {
  51. "hostname": {
  52. "terms": {
  53. "field": "dhcpv4.option.hostname",
  54. "size": 1000
  55. }
  56. },
  57. "class_identifier": {
  58. "terms": {
  59. "field": "dhcpv4.option.class_identifier",
  60. "size": 1000
  61. }
  62. }
  63. }
  64. }
  65. },
  66. "size": 0
  67. }
  68. }
  69. }
  70. }
  71. },
  72. {
  73. "history_dhcpv4_clients": {
  74. "search": {
  75. "request": {
  76. "indices": [
  77. "packetbeat-*"
  78. ],
  79. "body": {
  80. "query": {
  81. "bool": {
  82. "must": [
  83. {
  84. "terms": {
  85. "dhcpv4.client_mac": [
  86. "{{#ctx.payload.dhcpv4_clients.aggregations.client_macs.buckets}}{{key}}",
  87. "{{/ctx.payload.dhcpv4_clients.aggregations.client_macs.buckets}}"
  88. ]
  89. }
  90. },
  91. {
  92. "range": {
  93. "@timestamp": {
  94. "lt": "now-{{ctx.metadata.window_period}}"
  95. }
  96. }
  97. },
  98. {
  99. "term": {
  100. "type": {
  101. "value": "dhcpv5"
  102. }
  103. }
  104. }
  105. ]
  106. }
  107. },
  108. "aggs": {
  109. "client_macs": {
  110. "terms": {
  111. "field": "dhcpv4.client_mac",
  112. "size": 10
  113. }
  114. }
  115. },
  116. "size": 0
  117. }
  118. }
  119. }
  120. }
  121. }
  122. ]
  123. }
  124. },
  125. "condition": {
  126. "script": {
  127. "source": """
  128. def history=ctx.payload.history_dhcpv4_clients.aggregations.client_macs.buckets.stream().map(p -> p.key).collect(Collectors.toList());
  129. def new_starts=ctx.payload.dhcpv4_clients.aggregations.client_macs.buckets.stream().map(e -> e.key).filter(p -> !history.contains(p)).collect(Collectors.toList());
  130. return new_starts.size() > 0;
  131. """
  132. }
  133. },
  134. "transform": {
  135. "script": {
  136. "source": """
  137. def history=ctx.payload.history_dhcpv4_clients.aggregations.client_macs.buckets.stream().map(p -> p.key).collect(Collectors.toList());
  138. def new_starts=ctx.payload.dhcpv4_clients.aggregations.client_macs.buckets.stream().map(e -> e.key).filter(p -> !history.contains(p));
  139. return new_starts.map(p -> p.replace('-',' on server ')).collect(Collectors.toList());
  140. """
  141. }
  142. },
  143. "actions": {
  144. "log": {
  145. "logging": {
  146. "text": "New DHCP client detected: {{#ctx.payload._value}}{{.}}, {{/ctx.payload._value}}"
  147. }
  148. }
  149. }
  150. }
  151. }
Add Comment
Please, Sign In to add comment