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,53 @@
1
+ # encoding: utf-8
2
+ require "logstash/outputs/base"
3
+ require "logstash/namespace"
4
+
5
+ class LogStash::Outputs::Stdout < LogStash::Outputs::Base
6
+ begin
7
+ require "ap"
8
+ rescue LoadError
9
+ end
10
+
11
+ config_name "stdout"
12
+ milestone 3
13
+
14
+ default :codec, "line"
15
+
16
+ # Enable debugging. Tries to pretty-print the entire event object.
17
+ config :debug, :validate => :boolean, :default => false
18
+
19
+ # Debug output format: ruby (default), json
20
+ config :debug_format, :default => "ruby", :validate => ["ruby", "dots", "json"], :deprecated => true
21
+
22
+ # The message to emit to stdout.
23
+ config :message, :validate => :string, :deprecated => "You can use the 'line' codec instead. For example: output { stdout { codec => line { format => \"%{somefield} your message\" } } }"
24
+
25
+ public
26
+ def register
27
+ if @debug
28
+ require "logstash/codecs/rubydebug"
29
+ require "logstash/codecs/dots"
30
+ require "logstash/codecs/json"
31
+ case @debug_format
32
+ when "ruby"; @codec = LogStash::Codecs::RubyDebug.new
33
+ when "json"; @codec = LogStash::Codecs::JSON.new
34
+ when "dots"; @codec = LogStash::Codecs::Dots.new
35
+ end
36
+ elsif @message
37
+ @codec = LogStash::Codecs::Line.new("format" => @message)
38
+ end
39
+ @codec.on_event do |event|
40
+ $stdout.write(event)
41
+ end
42
+ end
43
+
44
+ def receive(event)
45
+ return unless output?(event)
46
+ if event == LogStash::SHUTDOWN
47
+ finished
48
+ return
49
+ end
50
+ @codec.encode(event)
51
+ end
52
+
53
+ end # class LogStash::Outputs::Stdout
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+ require "logstash/outputs/base"
3
+ require "logstash/namespace"
4
+
5
+ class LogStash::Outputs::Stomp < LogStash::Outputs::Base
6
+ config_name "stomp"
7
+ milestone 2
8
+
9
+ # The address of the STOMP server.
10
+ config :host, :validate => :string, :required => true
11
+
12
+ # The port to connect to on your STOMP server.
13
+ config :port, :validate => :number, :default => 61613
14
+
15
+ # The username to authenticate with.
16
+ config :user, :validate => :string, :default => ""
17
+
18
+ # The password to authenticate with.
19
+ config :password, :validate => :password, :default => ""
20
+
21
+ # The destination to read events from. Supports string expansion, meaning
22
+ # %{foo} values will expand to the field value.
23
+ #
24
+ # Example: "/topic/logstash"
25
+ config :destination, :validate => :string, :required => true
26
+
27
+ # The vhost to use
28
+ config :vhost, :validate => :string, :default => nil
29
+
30
+ # Enable debugging output?
31
+ config :debug, :validate => :boolean, :default => false
32
+
33
+ private
34
+ def connect
35
+ begin
36
+ @client.connect
37
+ @logger.debug("Connected to stomp server") if @client.connected?
38
+ rescue => e
39
+ @logger.debug("Failed to connect to stomp server, will retry",
40
+ :exception => e, :backtrace => e.backtrace)
41
+ sleep 2
42
+ retry
43
+ end
44
+ end
45
+
46
+
47
+ public
48
+ def register
49
+ require "onstomp"
50
+ @client = OnStomp::Client.new("stomp://#{@host}:#{@port}", :login => @user, :passcode => @password.value)
51
+ @client.host = @vhost if @vhost
52
+
53
+ # Handle disconnects
54
+ @client.on_connection_closed {
55
+ connect
56
+ }
57
+
58
+ connect
59
+ end # def register
60
+
61
+ def receive(event)
62
+ return unless output?(event)
63
+
64
+ @logger.debug(["stomp sending event", { :host => @host, :event => event }])
65
+ @client.send(event.sprintf(@destination), event.to_json)
66
+ end # def receive
67
+ end # class LogStash::Outputs::Stomp
@@ -0,0 +1,145 @@
1
+ # encoding: utf-8
2
+ require "logstash/outputs/base"
3
+ require "logstash/namespace"
4
+ require "date"
5
+
6
+ # Send events to a syslog server.
7
+ #
8
+ # You can send messages compliant with RFC3164 or RFC5424
9
+ # UDP or TCP syslog transport is supported
10
+ class LogStash::Outputs::Syslog < LogStash::Outputs::Base
11
+ config_name "syslog"
12
+ milestone 1
13
+
14
+ FACILITY_LABELS = [
15
+ "kernel",
16
+ "user-level",
17
+ "mail",
18
+ "daemon",
19
+ "security/authorization",
20
+ "syslogd",
21
+ "line printer",
22
+ "network news",
23
+ "uucp",
24
+ "clock",
25
+ "security/authorization",
26
+ "ftp",
27
+ "ntp",
28
+ "log audit",
29
+ "log alert",
30
+ "clock",
31
+ "local0",
32
+ "local1",
33
+ "local2",
34
+ "local3",
35
+ "local4",
36
+ "local5",
37
+ "local6",
38
+ "local7",
39
+ ]
40
+
41
+ SEVERITY_LABELS = [
42
+ "emergency",
43
+ "alert",
44
+ "critical",
45
+ "error",
46
+ "warning",
47
+ "notice",
48
+ "informational",
49
+ "debug",
50
+ ]
51
+
52
+ # syslog server address to connect to
53
+ config :host, :validate => :string, :required => true
54
+
55
+ # syslog server port to connect to
56
+ config :port, :validate => :number, :required => true
57
+
58
+ # syslog server protocol. you can choose between udp and tcp
59
+ config :protocol, :validate => ["tcp", "udp"], :default => "udp"
60
+
61
+ # facility label for syslog message
62
+ config :facility, :validate => FACILITY_LABELS, :required => true
63
+
64
+ # severity label for syslog message
65
+ config :severity, :validate => SEVERITY_LABELS, :required => true
66
+
67
+ # source host for syslog message
68
+ config :sourcehost, :validate => :string, :default => "%{host}"
69
+
70
+ # timestamp for syslog message
71
+ config :timestamp, :validate => :string, :default => "%{@timestamp}", :deprecated => "This setting is no longer necessary. The RFC setting will determine what time format is used."
72
+
73
+ # application name for syslog message
74
+ config :appname, :validate => :string, :default => "LOGSTASH"
75
+
76
+ # process id for syslog message
77
+ config :procid, :validate => :string, :default => "-"
78
+
79
+ # message id for syslog message
80
+ config :msgid, :validate => :string, :default => "-"
81
+
82
+ # syslog message format: you can choose between rfc3164 or rfc5424
83
+ config :rfc, :validate => ["rfc3164", "rfc5424"], :default => "rfc3164"
84
+
85
+
86
+ public
87
+ def register
88
+ @client_socket = nil
89
+ end
90
+
91
+ private
92
+ def udp?
93
+ @protocol == "udp"
94
+ end
95
+
96
+ private
97
+ def rfc3164?
98
+ @rfc == "rfc3164"
99
+ end
100
+
101
+ private
102
+ def connect
103
+ if udp?
104
+ @client_socket = UDPSocket.new
105
+ @client_socket.connect(@host, @port)
106
+ else
107
+ @client_socket = TCPSocket.new(@host, @port)
108
+ end
109
+ end
110
+
111
+ public
112
+ def receive(event)
113
+ return unless output?(event)
114
+
115
+ appname = event.sprintf(@appname)
116
+ procid = event.sprintf(@procid)
117
+ sourcehost = event.sprintf(@sourcehost)
118
+
119
+ facility_code = FACILITY_LABELS.index(@facility)
120
+
121
+ severity_code = SEVERITY_LABELS.index(@severity)
122
+
123
+ priority = (facility_code * 8) + severity_code
124
+
125
+ if rfc3164?
126
+ timestamp = event.sprintf("%{+MMM dd HH:mm:ss}")
127
+ syslog_msg = "<"+priority.to_s()+">"+timestamp+" "+sourcehost+" "+appname+"["+procid+"]: "+event["message"]
128
+ else
129
+ msgid = event.sprintf(@msgid)
130
+ timestamp = event.sprintf("%{+YYYY-MM-dd'T'HH:mm:ss.SSSZ}")
131
+ syslog_msg = "<"+priority.to_s()+">1 "+timestamp+" "+sourcehost+" "+appname+" "+procid+" "+msgid+" - "+event["message"]
132
+ end
133
+
134
+ begin
135
+ connect unless @client_socket
136
+ @client_socket.write(syslog_msg + "\n")
137
+ rescue => e
138
+ @logger.warn(@protocol+" output exception", :host => @host, :port => @port,
139
+ :exception => e, :backtrace => e.backtrace)
140
+ @client_socket.close rescue nil
141
+ @client_socket = nil
142
+ end
143
+ end
144
+ end
145
+
@@ -0,0 +1,145 @@
1
+ # encoding: utf-8
2
+ require "logstash/outputs/base"
3
+ require "logstash/namespace"
4
+ require "thread"
5
+
6
+ # Write events over a TCP socket.
7
+ #
8
+ # Each event json is separated by a newline.
9
+ #
10
+ # Can either accept connections from clients or connect to a server,
11
+ # depending on `mode`.
12
+ class LogStash::Outputs::Tcp < LogStash::Outputs::Base
13
+
14
+ config_name "tcp"
15
+ milestone 2
16
+
17
+ default :codec, "json"
18
+
19
+ # When mode is `server`, the address to listen on.
20
+ # When mode is `client`, the address to connect to.
21
+ config :host, :validate => :string, :required => true
22
+
23
+ # When mode is `server`, the port to listen on.
24
+ # When mode is `client`, the port to connect to.
25
+ config :port, :validate => :number, :required => true
26
+
27
+ # When connect failed,retry interval in sec.
28
+ config :reconnect_interval, :validate => :number, :default => 10
29
+
30
+ # Mode to operate in. `server` listens for client connections,
31
+ # `client` connects to a server.
32
+ config :mode, :validate => ["server", "client"], :default => "client"
33
+
34
+ # The format to use when writing events to the file. This value
35
+ # supports any string and can include %{name} and other dynamic
36
+ # strings.
37
+ #
38
+ # If this setting is omitted, the full json representation of the
39
+ # event will be written as a single line.
40
+ config :message_format, :validate => :string, :deprecated => true
41
+
42
+ class Client
43
+ public
44
+ def initialize(socket, logger)
45
+ @socket = socket
46
+ @logger = logger
47
+ @queue = Queue.new
48
+ end
49
+
50
+ public
51
+ def run
52
+ loop do
53
+ begin
54
+ @socket.write(@queue.pop)
55
+ rescue => e
56
+ @logger.warn("tcp output exception", :socket => @socket,
57
+ :exception => e)
58
+ break
59
+ end
60
+ end
61
+ end # def run
62
+
63
+ public
64
+ def write(msg)
65
+ @queue.push(msg)
66
+ end # def write
67
+ end # class Client
68
+
69
+ public
70
+ def register
71
+ require "stud/try"
72
+ if server?
73
+ workers_not_supported
74
+
75
+ @logger.info("Starting tcp output listener", :address => "#{@host}:#{@port}")
76
+ @server_socket = TCPServer.new(@host, @port)
77
+ @client_threads = []
78
+
79
+ @accept_thread = Thread.new(@server_socket) do |server_socket|
80
+ loop do
81
+ client_thread = Thread.start(server_socket.accept) do |client_socket|
82
+ client = Client.new(client_socket, @logger)
83
+ Thread.current[:client] = client
84
+ client.run
85
+ end
86
+ @client_threads << client_thread
87
+ end
88
+ end
89
+
90
+ @codec.on_event do |payload|
91
+ @client_threads.each do |client_thread|
92
+ client_thread[:client].write(payload)
93
+ end
94
+ @client_threads.reject! {|t| !t.alive? }
95
+ end
96
+ else
97
+ client_socket = nil
98
+ @codec.on_event do |payload|
99
+ begin
100
+ client_socket = connect unless client_socket
101
+ r,w,e = IO.select([client_socket], [client_socket], [client_socket], nil)
102
+ # don't expect any reads, but a readable socket might
103
+ # mean the remote end closed, so read it and throw it away.
104
+ # we'll get an EOFError if it happens.
105
+ client_socket.sysread(16384) if r.any?
106
+
107
+ # Now send the payload
108
+ client_socket.syswrite(payload) if w.any?
109
+ rescue => e
110
+ @logger.warn("tcp output exception", :host => @host, :port => @port,
111
+ :exception => e, :backtrace => e.backtrace)
112
+ client_socket.close rescue nil
113
+ client_socket = nil
114
+ sleep @reconnect_interval
115
+ retry
116
+ end
117
+ end
118
+ end
119
+ end # def register
120
+
121
+ private
122
+ def connect
123
+ Stud::try do
124
+ return TCPSocket.new(@host, @port)
125
+ end
126
+ end # def connect
127
+
128
+ private
129
+ def server?
130
+ @mode == "server"
131
+ end # def server?
132
+
133
+ public
134
+ def receive(event)
135
+ return unless output?(event)
136
+
137
+ #if @message_format
138
+ #output = event.sprintf(@message_format) + "\n"
139
+ #else
140
+ #output = event.to_hash.to_json + "\n"
141
+ #end
142
+
143
+ @codec.encode(event)
144
+ end # def receive
145
+ end # class LogStash::Outputs::Tcp
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+ require "logstash/outputs/base"
3
+ require "logstash/namespace"
4
+ require "socket"
5
+
6
+ # Send events over UDP
7
+ #
8
+ # Keep in mind that UDP will lose messages.
9
+ class LogStash::Outputs::UDP < LogStash::Outputs::Base
10
+ config_name "udp"
11
+ milestone 1
12
+
13
+ default :codec, "json"
14
+
15
+ # The address to send messages to
16
+ config :host, :validate => :string, :required => true
17
+
18
+ # The port to send messages on
19
+ config :port, :validate => :number, :required => true
20
+
21
+ public
22
+ def register
23
+ @socket = UDPSocket.new
24
+ @codec.on_event do |payload|
25
+ @socket.send(payload, 0, @host, @port)
26
+ end
27
+ end
28
+
29
+ def receive(event)
30
+ return unless output?(event)
31
+ if event == LogStash::SHUTDOWN
32
+ finished
33
+ return
34
+ end
35
+ @codec.encode(event)
36
+ end
37
+
38
+ end # class LogStash::Outputs::Stdout