logstash-lib 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. data/.gitignore +24 -0
  2. data/.tailor +8 -0
  3. data/.travis.yml +12 -0
  4. data/CHANGELOG +1185 -0
  5. data/CONTRIBUTING.md +61 -0
  6. data/CONTRIBUTORS +79 -0
  7. data/LICENSE +14 -0
  8. data/Makefile +460 -0
  9. data/README.md +120 -0
  10. data/STYLE.md +96 -0
  11. data/bin/logstash +37 -0
  12. data/bin/logstash-test +4 -0
  13. data/bin/logstash-web +4 -0
  14. data/bin/logstash.lib.sh +78 -0
  15. data/bot/check_pull_changelog.rb +89 -0
  16. data/docs/configuration.md +260 -0
  17. data/docs/docgen.rb +242 -0
  18. data/docs/extending/example-add-a-new-filter.md +121 -0
  19. data/docs/extending/index.md +91 -0
  20. data/docs/flags.md +43 -0
  21. data/docs/generate_index.rb +28 -0
  22. data/docs/index.html.erb +56 -0
  23. data/docs/learn.md +46 -0
  24. data/docs/life-of-an-event.md +109 -0
  25. data/docs/logging-tool-comparisons.md +60 -0
  26. data/docs/plugin-doc.html.erb +91 -0
  27. data/docs/plugin-milestones.md +41 -0
  28. data/docs/plugin-synopsis.html.erb +24 -0
  29. data/docs/release-engineering.md +46 -0
  30. data/docs/release-test-results.md +14 -0
  31. data/docs/repositories.md +35 -0
  32. data/docs/tutorials/10-minute-walkthrough/apache-elasticsearch.conf +35 -0
  33. data/docs/tutorials/10-minute-walkthrough/apache-parse.conf +33 -0
  34. data/docs/tutorials/10-minute-walkthrough/apache_log.1 +1 -0
  35. data/docs/tutorials/10-minute-walkthrough/apache_log.2.bz2 +0 -0
  36. data/docs/tutorials/10-minute-walkthrough/hello-search.conf +25 -0
  37. data/docs/tutorials/10-minute-walkthrough/hello.conf +16 -0
  38. data/docs/tutorials/10-minute-walkthrough/index.md +124 -0
  39. data/docs/tutorials/10-minute-walkthrough/step-5-output.txt +17 -0
  40. data/docs/tutorials/getting-started-centralized-overview-diagram.png +0 -0
  41. data/docs/tutorials/getting-started-centralized-overview-diagram.xml +1 -0
  42. data/docs/tutorials/getting-started-centralized.md +217 -0
  43. data/docs/tutorials/getting-started-simple.md +200 -0
  44. data/docs/tutorials/just-enough-rabbitmq-for-logstash.md +201 -0
  45. data/docs/tutorials/media/frontend-response-codes.png +0 -0
  46. data/docs/tutorials/metrics-from-logs.md +84 -0
  47. data/docs/tutorials/zeromq.md +118 -0
  48. data/extract_services.rb +29 -0
  49. data/gembag.rb +64 -0
  50. data/lib/logstash-event.rb +2 -0
  51. data/lib/logstash.rb +4 -0
  52. data/lib/logstash/JRUBY-6970-openssl.rb +22 -0
  53. data/lib/logstash/JRUBY-6970.rb +102 -0
  54. data/lib/logstash/agent.rb +305 -0
  55. data/lib/logstash/certs/cacert.pem +3895 -0
  56. data/lib/logstash/codecs/base.rb +49 -0
  57. data/lib/logstash/codecs/compress_spooler.rb +50 -0
  58. data/lib/logstash/codecs/dots.rb +18 -0
  59. data/lib/logstash/codecs/edn.rb +28 -0
  60. data/lib/logstash/codecs/edn_lines.rb +36 -0
  61. data/lib/logstash/codecs/fluent.rb +55 -0
  62. data/lib/logstash/codecs/graphite.rb +114 -0
  63. data/lib/logstash/codecs/json.rb +41 -0
  64. data/lib/logstash/codecs/json_lines.rb +52 -0
  65. data/lib/logstash/codecs/json_spooler.rb +22 -0
  66. data/lib/logstash/codecs/line.rb +58 -0
  67. data/lib/logstash/codecs/msgpack.rb +43 -0
  68. data/lib/logstash/codecs/multiline.rb +189 -0
  69. data/lib/logstash/codecs/netflow.rb +342 -0
  70. data/lib/logstash/codecs/netflow/util.rb +212 -0
  71. data/lib/logstash/codecs/noop.rb +19 -0
  72. data/lib/logstash/codecs/oldlogstashjson.rb +56 -0
  73. data/lib/logstash/codecs/plain.rb +48 -0
  74. data/lib/logstash/codecs/rubydebug.rb +22 -0
  75. data/lib/logstash/codecs/spool.rb +38 -0
  76. data/lib/logstash/config/Makefile +4 -0
  77. data/lib/logstash/config/config_ast.rb +380 -0
  78. data/lib/logstash/config/file.rb +39 -0
  79. data/lib/logstash/config/grammar.rb +3504 -0
  80. data/lib/logstash/config/grammar.treetop +241 -0
  81. data/lib/logstash/config/mixin.rb +464 -0
  82. data/lib/logstash/config/registry.rb +13 -0
  83. data/lib/logstash/config/test.conf +18 -0
  84. data/lib/logstash/errors.rb +10 -0
  85. data/lib/logstash/event.rb +262 -0
  86. data/lib/logstash/filters/advisor.rb +178 -0
  87. data/lib/logstash/filters/alter.rb +173 -0
  88. data/lib/logstash/filters/anonymize.rb +93 -0
  89. data/lib/logstash/filters/base.rb +190 -0
  90. data/lib/logstash/filters/checksum.rb +50 -0
  91. data/lib/logstash/filters/cidr.rb +76 -0
  92. data/lib/logstash/filters/cipher.rb +145 -0
  93. data/lib/logstash/filters/clone.rb +35 -0
  94. data/lib/logstash/filters/collate.rb +114 -0
  95. data/lib/logstash/filters/csv.rb +94 -0
  96. data/lib/logstash/filters/date.rb +244 -0
  97. data/lib/logstash/filters/dns.rb +201 -0
  98. data/lib/logstash/filters/drop.rb +32 -0
  99. data/lib/logstash/filters/elapsed.rb +256 -0
  100. data/lib/logstash/filters/elasticsearch.rb +73 -0
  101. data/lib/logstash/filters/environment.rb +27 -0
  102. data/lib/logstash/filters/extractnumbers.rb +84 -0
  103. data/lib/logstash/filters/gelfify.rb +52 -0
  104. data/lib/logstash/filters/geoip.rb +145 -0
  105. data/lib/logstash/filters/grep.rb +153 -0
  106. data/lib/logstash/filters/grok.rb +425 -0
  107. data/lib/logstash/filters/grokdiscovery.rb +75 -0
  108. data/lib/logstash/filters/i18n.rb +51 -0
  109. data/lib/logstash/filters/json.rb +90 -0
  110. data/lib/logstash/filters/json_encode.rb +52 -0
  111. data/lib/logstash/filters/kv.rb +232 -0
  112. data/lib/logstash/filters/metaevent.rb +68 -0
  113. data/lib/logstash/filters/metrics.rb +237 -0
  114. data/lib/logstash/filters/multiline.rb +241 -0
  115. data/lib/logstash/filters/mutate.rb +399 -0
  116. data/lib/logstash/filters/noop.rb +21 -0
  117. data/lib/logstash/filters/prune.rb +149 -0
  118. data/lib/logstash/filters/punct.rb +32 -0
  119. data/lib/logstash/filters/railsparallelrequest.rb +86 -0
  120. data/lib/logstash/filters/range.rb +142 -0
  121. data/lib/logstash/filters/ruby.rb +42 -0
  122. data/lib/logstash/filters/sleep.rb +111 -0
  123. data/lib/logstash/filters/split.rb +64 -0
  124. data/lib/logstash/filters/sumnumbers.rb +73 -0
  125. data/lib/logstash/filters/syslog_pri.rb +107 -0
  126. data/lib/logstash/filters/translate.rb +121 -0
  127. data/lib/logstash/filters/unique.rb +29 -0
  128. data/lib/logstash/filters/urldecode.rb +57 -0
  129. data/lib/logstash/filters/useragent.rb +112 -0
  130. data/lib/logstash/filters/uuid.rb +58 -0
  131. data/lib/logstash/filters/xml.rb +139 -0
  132. data/lib/logstash/filters/zeromq.rb +123 -0
  133. data/lib/logstash/filterworker.rb +122 -0
  134. data/lib/logstash/inputs/base.rb +125 -0
  135. data/lib/logstash/inputs/collectd.rb +306 -0
  136. data/lib/logstash/inputs/drupal_dblog.rb +323 -0
  137. data/lib/logstash/inputs/drupal_dblog/jdbcconnection.rb +66 -0
  138. data/lib/logstash/inputs/elasticsearch.rb +140 -0
  139. data/lib/logstash/inputs/eventlog.rb +129 -0
  140. data/lib/logstash/inputs/eventlog/racob_fix.rb +44 -0
  141. data/lib/logstash/inputs/exec.rb +69 -0
  142. data/lib/logstash/inputs/file.rb +146 -0
  143. data/lib/logstash/inputs/ganglia.rb +127 -0
  144. data/lib/logstash/inputs/ganglia/gmondpacket.rb +146 -0
  145. data/lib/logstash/inputs/ganglia/xdr.rb +327 -0
  146. data/lib/logstash/inputs/gelf.rb +138 -0
  147. data/lib/logstash/inputs/gemfire.rb +222 -0
  148. data/lib/logstash/inputs/generator.rb +97 -0
  149. data/lib/logstash/inputs/graphite.rb +41 -0
  150. data/lib/logstash/inputs/heroku.rb +51 -0
  151. data/lib/logstash/inputs/imap.rb +136 -0
  152. data/lib/logstash/inputs/irc.rb +84 -0
  153. data/lib/logstash/inputs/log4j.rb +136 -0
  154. data/lib/logstash/inputs/lumberjack.rb +53 -0
  155. data/lib/logstash/inputs/pipe.rb +57 -0
  156. data/lib/logstash/inputs/rabbitmq.rb +126 -0
  157. data/lib/logstash/inputs/rabbitmq/bunny.rb +118 -0
  158. data/lib/logstash/inputs/rabbitmq/hot_bunnies.rb +1 -0
  159. data/lib/logstash/inputs/rabbitmq/march_hare.rb +129 -0
  160. data/lib/logstash/inputs/redis.rb +263 -0
  161. data/lib/logstash/inputs/relp.rb +106 -0
  162. data/lib/logstash/inputs/s3.rb +279 -0
  163. data/lib/logstash/inputs/snmptrap.rb +87 -0
  164. data/lib/logstash/inputs/sqlite.rb +185 -0
  165. data/lib/logstash/inputs/sqs.rb +172 -0
  166. data/lib/logstash/inputs/stdin.rb +46 -0
  167. data/lib/logstash/inputs/stomp.rb +84 -0
  168. data/lib/logstash/inputs/syslog.rb +237 -0
  169. data/lib/logstash/inputs/tcp.rb +231 -0
  170. data/lib/logstash/inputs/threadable.rb +18 -0
  171. data/lib/logstash/inputs/twitter.rb +82 -0
  172. data/lib/logstash/inputs/udp.rb +81 -0
  173. data/lib/logstash/inputs/unix.rb +163 -0
  174. data/lib/logstash/inputs/varnishlog.rb +48 -0
  175. data/lib/logstash/inputs/websocket.rb +50 -0
  176. data/lib/logstash/inputs/wmi.rb +72 -0
  177. data/lib/logstash/inputs/xmpp.rb +81 -0
  178. data/lib/logstash/inputs/zenoss.rb +143 -0
  179. data/lib/logstash/inputs/zeromq.rb +165 -0
  180. data/lib/logstash/kibana.rb +113 -0
  181. data/lib/logstash/loadlibs.rb +9 -0
  182. data/lib/logstash/logging.rb +89 -0
  183. data/lib/logstash/monkeypatches-for-bugs.rb +2 -0
  184. data/lib/logstash/monkeypatches-for-debugging.rb +47 -0
  185. data/lib/logstash/monkeypatches-for-performance.rb +66 -0
  186. data/lib/logstash/multiqueue.rb +53 -0
  187. data/lib/logstash/namespace.rb +16 -0
  188. data/lib/logstash/outputs/base.rb +120 -0
  189. data/lib/logstash/outputs/boundary.rb +116 -0
  190. data/lib/logstash/outputs/circonus.rb +78 -0
  191. data/lib/logstash/outputs/cloudwatch.rb +351 -0
  192. data/lib/logstash/outputs/csv.rb +55 -0
  193. data/lib/logstash/outputs/datadog.rb +93 -0
  194. data/lib/logstash/outputs/datadog_metrics.rb +123 -0
  195. data/lib/logstash/outputs/elasticsearch.rb +332 -0
  196. data/lib/logstash/outputs/elasticsearch/elasticsearch-template.json +44 -0
  197. data/lib/logstash/outputs/elasticsearch_http.rb +256 -0
  198. data/lib/logstash/outputs/elasticsearch_river.rb +214 -0
  199. data/lib/logstash/outputs/email.rb +299 -0
  200. data/lib/logstash/outputs/exec.rb +40 -0
  201. data/lib/logstash/outputs/file.rb +180 -0
  202. data/lib/logstash/outputs/ganglia.rb +75 -0
  203. data/lib/logstash/outputs/gelf.rb +208 -0
  204. data/lib/logstash/outputs/gemfire.rb +103 -0
  205. data/lib/logstash/outputs/google_bigquery.rb +570 -0
  206. data/lib/logstash/outputs/google_cloud_storage.rb +431 -0
  207. data/lib/logstash/outputs/graphite.rb +143 -0
  208. data/lib/logstash/outputs/graphtastic.rb +185 -0
  209. data/lib/logstash/outputs/hipchat.rb +80 -0
  210. data/lib/logstash/outputs/http.rb +142 -0
  211. data/lib/logstash/outputs/irc.rb +80 -0
  212. data/lib/logstash/outputs/jira.rb +109 -0
  213. data/lib/logstash/outputs/juggernaut.rb +105 -0
  214. data/lib/logstash/outputs/librato.rb +146 -0
  215. data/lib/logstash/outputs/loggly.rb +93 -0
  216. data/lib/logstash/outputs/lumberjack.rb +51 -0
  217. data/lib/logstash/outputs/metriccatcher.rb +103 -0
  218. data/lib/logstash/outputs/mongodb.rb +81 -0
  219. data/lib/logstash/outputs/nagios.rb +119 -0
  220. data/lib/logstash/outputs/nagios_nsca.rb +123 -0
  221. data/lib/logstash/outputs/null.rb +18 -0
  222. data/lib/logstash/outputs/opentsdb.rb +101 -0
  223. data/lib/logstash/outputs/pagerduty.rb +79 -0
  224. data/lib/logstash/outputs/pipe.rb +132 -0
  225. data/lib/logstash/outputs/rabbitmq.rb +96 -0
  226. data/lib/logstash/outputs/rabbitmq/bunny.rb +135 -0
  227. data/lib/logstash/outputs/rabbitmq/hot_bunnies.rb +1 -0
  228. data/lib/logstash/outputs/rabbitmq/march_hare.rb +143 -0
  229. data/lib/logstash/outputs/redis.rb +245 -0
  230. data/lib/logstash/outputs/riak.rb +152 -0
  231. data/lib/logstash/outputs/riemann.rb +109 -0
  232. data/lib/logstash/outputs/s3.rb +356 -0
  233. data/lib/logstash/outputs/sns.rb +124 -0
  234. data/lib/logstash/outputs/solr_http.rb +78 -0
  235. data/lib/logstash/outputs/sqs.rb +141 -0
  236. data/lib/logstash/outputs/statsd.rb +116 -0
  237. data/lib/logstash/outputs/stdout.rb +53 -0
  238. data/lib/logstash/outputs/stomp.rb +67 -0
  239. data/lib/logstash/outputs/syslog.rb +145 -0
  240. data/lib/logstash/outputs/tcp.rb +145 -0
  241. data/lib/logstash/outputs/udp.rb +38 -0
  242. data/lib/logstash/outputs/websocket.rb +46 -0
  243. data/lib/logstash/outputs/websocket/app.rb +29 -0
  244. data/lib/logstash/outputs/websocket/pubsub.rb +45 -0
  245. data/lib/logstash/outputs/xmpp.rb +78 -0
  246. data/lib/logstash/outputs/zabbix.rb +108 -0
  247. data/lib/logstash/outputs/zeromq.rb +125 -0
  248. data/lib/logstash/pipeline.rb +286 -0
  249. data/lib/logstash/plugin.rb +150 -0
  250. data/lib/logstash/plugin_mixins/aws_config.rb +93 -0
  251. data/lib/logstash/program.rb +15 -0
  252. data/lib/logstash/runner.rb +238 -0
  253. data/lib/logstash/sized_queue.rb +8 -0
  254. data/lib/logstash/test.rb +183 -0
  255. data/lib/logstash/threadwatchdog.rb +37 -0
  256. data/lib/logstash/time_addon.rb +33 -0
  257. data/lib/logstash/util.rb +106 -0
  258. data/lib/logstash/util/buftok.rb +139 -0
  259. data/lib/logstash/util/charset.rb +39 -0
  260. data/lib/logstash/util/fieldreference.rb +50 -0
  261. data/lib/logstash/util/password.rb +25 -0
  262. data/lib/logstash/util/prctl.rb +11 -0
  263. data/lib/logstash/util/relp.rb +326 -0
  264. data/lib/logstash/util/require-helper.rb +18 -0
  265. data/lib/logstash/util/socket_peer.rb +7 -0
  266. data/lib/logstash/util/zenoss.rb +566 -0
  267. data/lib/logstash/util/zeromq.rb +47 -0
  268. data/lib/logstash/version.rb +6 -0
  269. data/locales/en.yml +170 -0
  270. data/logstash-event.gemspec +29 -0
  271. data/logstash.gemspec +128 -0
  272. data/patterns/firewalls +60 -0
  273. data/patterns/grok-patterns +91 -0
  274. data/patterns/haproxy +37 -0
  275. data/patterns/java +3 -0
  276. data/patterns/linux-syslog +14 -0
  277. data/patterns/mcollective +1 -0
  278. data/patterns/mcollective-patterns +4 -0
  279. data/patterns/nagios +108 -0
  280. data/patterns/postgresql +3 -0
  281. data/patterns/redis +3 -0
  282. data/patterns/ruby +2 -0
  283. data/pkg/build.sh +135 -0
  284. data/pkg/centos/after-install.sh +1 -0
  285. data/pkg/centos/before-install.sh +10 -0
  286. data/pkg/centos/before-remove.sh +11 -0
  287. data/pkg/centos/sysconfig +15 -0
  288. data/pkg/debian/after-install.sh +5 -0
  289. data/pkg/debian/before-install.sh +13 -0
  290. data/pkg/debian/before-remove.sh +13 -0
  291. data/pkg/debian/build.sh +34 -0
  292. data/pkg/debian/debian/README +6 -0
  293. data/pkg/debian/debian/changelog +17 -0
  294. data/pkg/debian/debian/compat +1 -0
  295. data/pkg/debian/debian/control +16 -0
  296. data/pkg/debian/debian/copyright +27 -0
  297. data/pkg/debian/debian/dirs +19 -0
  298. data/pkg/debian/debian/docs +0 -0
  299. data/pkg/debian/debian/logstash.default +39 -0
  300. data/pkg/debian/debian/logstash.init +201 -0
  301. data/pkg/debian/debian/logstash.install +1 -0
  302. data/pkg/debian/debian/logstash.logrotate +9 -0
  303. data/pkg/debian/debian/logstash.postinst +68 -0
  304. data/pkg/debian/debian/logstash.postrm +23 -0
  305. data/pkg/debian/debian/manpage.1.ex +59 -0
  306. data/pkg/debian/debian/preinst.ex +37 -0
  307. data/pkg/debian/debian/prerm.ex +40 -0
  308. data/pkg/debian/debian/release.conf +5 -0
  309. data/pkg/debian/debian/rules +80 -0
  310. data/pkg/debian/debian/watch.ex +22 -0
  311. data/pkg/logrotate.conf +8 -0
  312. data/pkg/logstash-web.default +41 -0
  313. data/pkg/logstash-web.sysv.debian +201 -0
  314. data/pkg/logstash-web.upstart.ubuntu +18 -0
  315. data/pkg/logstash.default +45 -0
  316. data/pkg/logstash.sysv.debian +202 -0
  317. data/pkg/logstash.sysv.redhat +158 -0
  318. data/pkg/logstash.upstart.ubuntu +20 -0
  319. data/pkg/rpm/SOURCES/logstash.conf +26 -0
  320. data/pkg/rpm/SOURCES/logstash.init +80 -0
  321. data/pkg/rpm/SOURCES/logstash.logrotate +8 -0
  322. data/pkg/rpm/SOURCES/logstash.sysconfig +3 -0
  323. data/pkg/rpm/SOURCES/logstash.wrapper +105 -0
  324. data/pkg/rpm/SPECS/logstash.spec +180 -0
  325. data/pkg/rpm/readme.md +4 -0
  326. data/pkg/ubuntu/after-install.sh +7 -0
  327. data/pkg/ubuntu/before-install.sh +12 -0
  328. data/pkg/ubuntu/before-remove.sh +13 -0
  329. data/pull_release_note.rb +25 -0
  330. data/require-analyze.rb +22 -0
  331. data/spec/README.md +14 -0
  332. data/spec/codecs/edn.rb +40 -0
  333. data/spec/codecs/edn_lines.rb +53 -0
  334. data/spec/codecs/graphite.rb +96 -0
  335. data/spec/codecs/json.rb +57 -0
  336. data/spec/codecs/json_lines.rb +51 -0
  337. data/spec/codecs/json_spooler.rb +43 -0
  338. data/spec/codecs/msgpack.rb +39 -0
  339. data/spec/codecs/multiline.rb +60 -0
  340. data/spec/codecs/oldlogstashjson.rb +55 -0
  341. data/spec/codecs/plain.rb +35 -0
  342. data/spec/codecs/spool.rb +35 -0
  343. data/spec/conditionals/test.rb +323 -0
  344. data/spec/config.rb +31 -0
  345. data/spec/event.rb +165 -0
  346. data/spec/examples/fail2ban.rb +28 -0
  347. data/spec/examples/graphite-input.rb +41 -0
  348. data/spec/examples/mysql-slow-query.rb +70 -0
  349. data/spec/examples/parse-apache-logs.rb +66 -0
  350. data/spec/examples/parse-haproxy-logs.rb +115 -0
  351. data/spec/examples/syslog.rb +48 -0
  352. data/spec/filters/alter.rb +96 -0
  353. data/spec/filters/anonymize.rb +189 -0
  354. data/spec/filters/checksum.rb +41 -0
  355. data/spec/filters/clone.rb +67 -0
  356. data/spec/filters/collate.rb +122 -0
  357. data/spec/filters/csv.rb +174 -0
  358. data/spec/filters/date.rb +285 -0
  359. data/spec/filters/date_performance.rb +31 -0
  360. data/spec/filters/dns.rb +159 -0
  361. data/spec/filters/drop.rb +19 -0
  362. data/spec/filters/elapsed.rb +294 -0
  363. data/spec/filters/environment.rb +43 -0
  364. data/spec/filters/geoip.rb +62 -0
  365. data/spec/filters/grep.rb +342 -0
  366. data/spec/filters/grok.rb +473 -0
  367. data/spec/filters/grok/timeout2.rb +56 -0
  368. data/spec/filters/grok/timeouts.rb +39 -0
  369. data/spec/filters/i18n.rb +25 -0
  370. data/spec/filters/json.rb +72 -0
  371. data/spec/filters/json_encode.rb +37 -0
  372. data/spec/filters/kv.rb +403 -0
  373. data/spec/filters/metrics.rb +212 -0
  374. data/spec/filters/multiline.rb +119 -0
  375. data/spec/filters/mutate.rb +180 -0
  376. data/spec/filters/noop.rb +221 -0
  377. data/spec/filters/prune.rb +441 -0
  378. data/spec/filters/punct.rb +18 -0
  379. data/spec/filters/railsparallelrequest.rb +112 -0
  380. data/spec/filters/range.rb +169 -0
  381. data/spec/filters/split.rb +58 -0
  382. data/spec/filters/translate.rb +70 -0
  383. data/spec/filters/unique.rb +25 -0
  384. data/spec/filters/useragent.rb +42 -0
  385. data/spec/filters/xml.rb +157 -0
  386. data/spec/inputs/file.rb +107 -0
  387. data/spec/inputs/gelf.rb +52 -0
  388. data/spec/inputs/generator.rb +30 -0
  389. data/spec/inputs/imap.rb +60 -0
  390. data/spec/inputs/redis.rb +63 -0
  391. data/spec/inputs/relp.rb +70 -0
  392. data/spec/inputs/tcp.rb +101 -0
  393. data/spec/jar.rb +21 -0
  394. data/spec/outputs/csv.rb +266 -0
  395. data/spec/outputs/elasticsearch.rb +161 -0
  396. data/spec/outputs/elasticsearch_http.rb +240 -0
  397. data/spec/outputs/email.rb +173 -0
  398. data/spec/outputs/file.rb +82 -0
  399. data/spec/outputs/graphite.rb +236 -0
  400. data/spec/outputs/redis.rb +127 -0
  401. data/spec/speed.rb +20 -0
  402. data/spec/sqlite-test.rb +81 -0
  403. data/spec/support/LOGSTASH-733.rb +21 -0
  404. data/spec/support/LOGSTASH-820.rb +25 -0
  405. data/spec/support/akamai-grok.rb +26 -0
  406. data/spec/support/date-http.rb +17 -0
  407. data/spec/support/postwait1.rb +26 -0
  408. data/spec/support/pull375.rb +21 -0
  409. data/spec/test_utils.rb +125 -0
  410. data/spec/util/fieldeval_spec.rb +44 -0
  411. data/test/jenkins/config.xml.erb +74 -0
  412. data/test/jenkins/create-jobs.rb +23 -0
  413. data/test/jenkins/generatorjob.config.xml +66 -0
  414. data/tools/Gemfile +14 -0
  415. data/tools/Gemfile.jruby-1.9.lock +322 -0
  416. data/tools/Gemfile.rbx-2.1.lock +516 -0
  417. data/tools/Gemfile.ruby-1.9.1.lock +310 -0
  418. data/tools/Gemfile.ruby-2.0.0.lock +310 -0
  419. metadata +629 -0
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+ require "logstash/namespace"
3
+ require "logstash/event"
4
+ require "logstash/plugin"
5
+ require "logstash/logging"
6
+
7
+ # This is the base class for logstash codecs.
8
+ module LogStash::Codecs; class Base < LogStash::Plugin
9
+ include LogStash::Config::Mixin
10
+ config_name "codec"
11
+
12
+ def initialize(params={})
13
+ super
14
+ config_init(params)
15
+ register if respond_to?(:register)
16
+ end
17
+
18
+ public
19
+ def decode(data)
20
+ raise "#{self.class}#decode must be overidden"
21
+ end # def decode
22
+
23
+ alias_method :<<, :decode
24
+
25
+ public
26
+ def encode(data)
27
+ raise "#{self.class}#encode must be overidden"
28
+ end # def encode
29
+
30
+ public
31
+ def teardown; end;
32
+
33
+ public
34
+ def on_event(&block)
35
+ @on_event = block
36
+ end
37
+
38
+ public
39
+ def flush(&block)
40
+ # does nothing by default.
41
+ # if your codec needs a flush method (like you are spooling things)
42
+ # you must implement this.
43
+ end
44
+
45
+ public
46
+ def clone
47
+ return self.class.new(params)
48
+ end
49
+ end; end # class LogStash::Codecs::Base
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+ require "logstash/codecs/base"
3
+
4
+ class LogStash::Codecs::CompressSpooler < LogStash::Codecs::Base
5
+ config_name 'compress_spooler'
6
+ milestone 1
7
+ config :spool_size, :validate => :number, :default => 50
8
+ config :compress_level, :validate => :number, :default => 6
9
+
10
+ public
11
+ def register
12
+ require "msgpack"
13
+ require "zlib"
14
+ @buffer = []
15
+ end
16
+
17
+ public
18
+ def decode(data)
19
+ z = Zlib::Inflate.new
20
+ data = MessagePack.unpack(z.inflate(data))
21
+ z.finish
22
+ z.close
23
+ data.each do |event|
24
+ event = LogStash::Event.new(event)
25
+ event["@timestamp"] = Time.at(event["@timestamp"]).utc if event["@timestamp"].is_a? Float
26
+ yield event
27
+ end
28
+ end # def decode
29
+
30
+ public
31
+ def encode(data)
32
+ if @buffer.length >= @spool_size
33
+ z = Zlib::Deflate.new(@compress_level)
34
+ @on_event.call z.deflate(MessagePack.pack(@buffer), Zlib::FINISH)
35
+ z.close
36
+ @buffer.clear
37
+ else
38
+ data["@timestamp"] = data["@timestamp"].to_f
39
+ @buffer << data.to_hash
40
+ end
41
+ end # def encode
42
+
43
+ public
44
+ def teardown
45
+ if !@buffer.nil? and @buffer.length > 0
46
+ @on_event.call @buffer
47
+ end
48
+ @buffer.clear
49
+ end
50
+ end # class LogStash::Codecs::CompressSpooler
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ require "logstash/codecs/base"
3
+
4
+ class LogStash::Codecs::Dots < LogStash::Codecs::Base
5
+ config_name "dots"
6
+ milestone 1
7
+
8
+ public
9
+ def decode(data)
10
+ raise "Not implemented"
11
+ end # def decode
12
+
13
+ public
14
+ def encode(data)
15
+ @on_event.call(".")
16
+ end # def encode
17
+
18
+ end # class LogStash::Codecs::Dots
@@ -0,0 +1,28 @@
1
+ require "logstash/codecs/base"
2
+ require "logstash/codecs/line"
3
+
4
+ class LogStash::Codecs::EDN < LogStash::Codecs::Base
5
+ config_name "edn"
6
+
7
+ milestone 1
8
+
9
+ def register
10
+ require "edn"
11
+ end
12
+
13
+ public
14
+ def decode(data)
15
+ begin
16
+ yield LogStash::Event.new(EDN.read(data))
17
+ rescue
18
+ @logger.info("EDN parse failure. Falling back to plain-text", :error => e, :data => data)
19
+ yield LogStash::Event.new("message" => data)
20
+ end
21
+ end
22
+
23
+ public
24
+ def encode(data)
25
+ @on_event.call(data.to_hash.to_edn)
26
+ end
27
+
28
+ end
@@ -0,0 +1,36 @@
1
+ require "logstash/codecs/base"
2
+ require "logstash/codecs/line"
3
+
4
+ class LogStash::Codecs::EDNLines < LogStash::Codecs::Base
5
+ config_name "edn_lines"
6
+
7
+ milestone 1
8
+
9
+ def register
10
+ require "edn"
11
+ end
12
+
13
+ public
14
+ def initialize(params={})
15
+ super(params)
16
+ @lines = LogStash::Codecs::Line.new
17
+ end
18
+
19
+ public
20
+ def decode(data)
21
+ @lines.decode(data) do |event|
22
+ begin
23
+ yield LogStash::Event.new(EDN.read(event["message"]))
24
+ rescue => e
25
+ @logger.info("EDN parse failure. Falling back to plain-text", :error => e, :data => data)
26
+ yield LogStash::Event.new("message" => data)
27
+ end
28
+ end
29
+ end
30
+
31
+ public
32
+ def encode(data)
33
+ @on_event.call(data.to_hash.to_edn + "\n")
34
+ end
35
+
36
+ end
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+ require "logstash/codecs/base"
3
+ require "logstash/util/charset"
4
+
5
+ # This codec handles fluentd's msgpack schema.
6
+ #
7
+ # For example, you can receive logs from fluent-logger-ruby with:
8
+ #
9
+ # input {
10
+ # tcp {
11
+ # codec => fluent
12
+ # port => 4000
13
+ # }
14
+ # }
15
+ #
16
+ # And from your ruby code in your own application:
17
+ #
18
+ # logger = Fluent::Logger::FluentLogger.new(nil, :host => "example.log", :port => 4000)
19
+ # logger.post("some_tag", { "your" => "data", "here" => "yay!" })
20
+ #
21
+ # Notes:
22
+ #
23
+ # * the fluent uses a second-precision time for events, so you will never see
24
+ # subsecond precision on events processed by this codec.
25
+ #
26
+ class LogStash::Codecs::Fluent < LogStash::Codecs::Base
27
+ config_name "fluent"
28
+ milestone 1
29
+
30
+ public
31
+ def register
32
+ require "msgpack"
33
+ @decoder = MessagePack::Unpacker.new
34
+ end
35
+
36
+ public
37
+ def decode(data)
38
+ @decoder.feed(data)
39
+ @decoder.each do |tag, epochtime, map|
40
+ event = LogStash::Event.new(map.merge(
41
+ "@timestamp" => Time.at(epochtime),
42
+ "tags" => tag
43
+ ))
44
+ yield event
45
+ end
46
+ end # def decode
47
+
48
+ public
49
+ def encode(event)
50
+ tag = event["tags"] || "log"
51
+ epochtime = event["@timestamp"].to_i
52
+ @on_event.call(MessagePack.pack([ tag, epochtime, event.to_hash ]))
53
+ end # def encode
54
+
55
+ end # class LogStash::Codecs::Fluent
@@ -0,0 +1,114 @@
1
+ # encoding: utf-8
2
+ require "logstash/codecs/base"
3
+ require "logstash/codecs/line"
4
+ require "json"
5
+
6
+ # This codec will encode and decode Graphite formated lines.
7
+ class LogStash::Codecs::Graphite < LogStash::Codecs::Base
8
+ config_name "graphite"
9
+
10
+ milestone 2
11
+
12
+ # The character encoding used in this codec. Examples include "UTF-8" and
13
+ # "CP1252"
14
+ #
15
+ # JSON requires valid UTF-8 strings, but in some cases, software that
16
+ # emits JSON does so in another encoding (nxlog, for example). In
17
+ # weird cases like this, you can set the charset setting to the
18
+ # actual encoding of the text and logstash will convert it for you.
19
+ #
20
+ # For nxlog users, you'll want to set this to "CP1252"
21
+ config :charset, :validate => ::Encoding.name_list, :default => "UTF-8"
22
+
23
+ EXCLUDE_ALWAYS = [ "@timestamp", "@version" ]
24
+
25
+ DEFAULT_METRICS_FORMAT = "*"
26
+ METRIC_PLACEHOLDER = "*"
27
+
28
+ # The metric(s) to use. This supports dynamic strings like %{host}
29
+ # for metric names and also for values. This is a hash field with key
30
+ # of the metric name, value of the metric value. Example:
31
+ #
32
+ # [ "%{host}/uptime", "%{uptime_1m}" ]
33
+ #
34
+ # The value will be coerced to a floating point value. Values which cannot be
35
+ # coerced will zero (0)
36
+ config :metrics, :validate => :hash, :default => {}
37
+
38
+ # Indicate that the event @fields should be treated as metrics and will be sent as is to graphite
39
+ config :fields_are_metrics, :validate => :boolean, :default => false
40
+
41
+ # Include only regex matched metric names
42
+ config :include_metrics, :validate => :array, :default => [ ".*" ]
43
+
44
+ # Exclude regex matched metric names, by default exclude unresolved %{field} strings
45
+ config :exclude_metrics, :validate => :array, :default => [ "%\{[^}]+\}" ]
46
+
47
+ # Defines format of the metric string. The placeholder '*' will be
48
+ # replaced with the name of the actual metric.
49
+ #
50
+ # metrics_format => "foo.bar.*.sum"
51
+ #
52
+ # NOTE: If no metrics_format is defined the name of the metric will be used as fallback.
53
+ config :metrics_format, :validate => :string, :default => DEFAULT_METRICS_FORMAT
54
+
55
+
56
+ public
57
+ def initialize(params={})
58
+ super(params)
59
+ @lines = LogStash::Codecs::Line.new
60
+ end
61
+
62
+ public
63
+ def decode(data)
64
+ @lines.decode(data) do |event|
65
+ name, value, time = event["message"].split(" ")
66
+ yield LogStash::Event.new(name => value.to_f, "@timestamp" => Time.at(time.to_i).gmtime)
67
+ end # @lines.decode
68
+ end # def decode
69
+
70
+ private
71
+ def construct_metric_name(metric)
72
+ if @metrics_format
73
+ return @metrics_format.gsub(METRIC_PLACEHOLDER, metric)
74
+ end
75
+
76
+ return metric
77
+ end
78
+
79
+ public
80
+ def encode(event)
81
+ # Graphite message format: metric value timestamp\n
82
+
83
+ messages = []
84
+ timestamp = event.sprintf("%{+%s}")
85
+
86
+ if @fields_are_metrics
87
+ @logger.debug("got metrics event", :metrics => event.to_hash)
88
+ event.to_hash.each do |metric,value|
89
+ next if EXCLUDE_ALWAYS.include?(metric)
90
+ next unless @include_metrics.empty? || @include_metrics.any? { |regexp| metric.match(regexp) }
91
+ next if @exclude_metrics.any? {|regexp| metric.match(regexp)}
92
+ messages << "#{construct_metric_name(metric)} #{event.sprintf(value.to_s).to_f} #{timestamp}"
93
+ end # data.to_hash.each
94
+ else
95
+ @metrics.each do |metric, value|
96
+ @logger.debug("processing", :metric => metric, :value => value)
97
+ metric = event.sprintf(metric)
98
+ next unless @include_metrics.any? {|regexp| metric.match(regexp)}
99
+ next if @exclude_metrics.any? {|regexp| metric.match(regexp)}
100
+ messages << "#{construct_metric_name(event.sprintf(metric))} #{event.sprintf(value).to_f} #{timestamp}"
101
+ end # @metrics.each
102
+ end # if @fields_are_metrics
103
+
104
+ if messages.empty?
105
+ @logger.debug("Message is empty, not emiting anything.", :messages => messages)
106
+ else
107
+ message = messages.join("\n") + "\n"
108
+ @logger.debug("Emiting carbon messages", :messages => messages)
109
+
110
+ @on_event.call(message)
111
+ end # if messages.empty?
112
+ end # def encode
113
+
114
+ end # class LogStash::Codecs::JSON
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+ require "logstash/codecs/base"
3
+ require "logstash/codecs/line"
4
+ require "json"
5
+
6
+ # The codec should be used to decode full json messages.
7
+ # If you are streaming JSON messages delimited by '\n' then
8
+ # see the json_lines codec.
9
+ # Encoding will result in a single json string.
10
+ class LogStash::Codecs::JSON < LogStash::Codecs::Base
11
+ config_name "json"
12
+
13
+ milestone 3
14
+
15
+ # The character encoding used in this codec. Examples include "UTF-8" and
16
+ # "CP1252"
17
+ #
18
+ # JSON requires valid UTF-8 strings, but in some cases, software that
19
+ # emits JSON does so in another encoding (nxlog, for example). In
20
+ # weird cases like this, you can set the charset setting to the
21
+ # actual encoding of the text and logstash will convert it for you.
22
+ #
23
+ # For nxlog users, you'll want to set this to "CP1252"
24
+ config :charset, :validate => ::Encoding.name_list, :default => "UTF-8"
25
+
26
+ public
27
+ def decode(data)
28
+ begin
29
+ yield LogStash::Event.new(JSON.parse(data))
30
+ rescue JSON::ParserError => e
31
+ @logger.info("JSON parse failure. Falling back to plain-text", :error => e, :data => data)
32
+ yield LogStash::Event.new("message" => data)
33
+ end
34
+ end # def decode
35
+
36
+ public
37
+ def encode(data)
38
+ @on_event.call(data.to_json)
39
+ end # def encode
40
+
41
+ end # class LogStash::Codecs::JSON
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+ require "logstash/codecs/base"
3
+ require "logstash/codecs/line"
4
+ require "json"
5
+
6
+ # This codec will decode streamed JSON that is newline delimited.
7
+ # For decoding JSON payload in the redis input for example, use the json codec instead.
8
+ # Encoding will emit a single JSON string ending in a '\n'
9
+ class LogStash::Codecs::JSONLines < LogStash::Codecs::Base
10
+ config_name "json_lines"
11
+
12
+ milestone 3
13
+
14
+ # The character encoding used in this codec. Examples include "UTF-8" and
15
+ # "CP1252"
16
+ #
17
+ # JSON requires valid UTF-8 strings, but in some cases, software that
18
+ # emits JSON does so in another encoding (nxlog, for example). In
19
+ # weird cases like this, you can set the charset setting to the
20
+ # actual encoding of the text and logstash will convert it for you.
21
+ #
22
+ # For nxlog users, you'll want to set this to "CP1252"
23
+ config :charset, :validate => ::Encoding.name_list, :default => "UTF-8"
24
+
25
+ public
26
+ def initialize(params={})
27
+ super(params)
28
+ @lines = LogStash::Codecs::Line.new
29
+ @lines.charset = @charset
30
+ end
31
+
32
+ public
33
+ def decode(data)
34
+
35
+ @lines.decode(data) do |event|
36
+ begin
37
+ yield LogStash::Event.new(JSON.parse(event["message"]))
38
+ rescue JSON::ParserError => e
39
+ @logger.info("JSON parse failure. Falling back to plain-text", :error => e, :data => data)
40
+ yield LogStash::Event.new("message" => data)
41
+ end
42
+ end
43
+ end # def decode
44
+
45
+ public
46
+ def encode(data)
47
+ # Tack on a \n for now because previously most of logstash's JSON
48
+ # outputs emitted one per line, and whitespace is OK in json.
49
+ @on_event.call(data.to_json + "\n")
50
+ end # def encode
51
+
52
+ end # class LogStash::Codecs::JSON