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,43 @@
1
+ ---
2
+ title: Command-line flags - logstash
3
+ layout: content_right
4
+ ---
5
+ # Command-line flags
6
+
7
+ ## Agent
8
+
9
+ The logstash agent has the following flags (also try using the '--help' flag)
10
+
11
+ <dl>
12
+ <dt> -f, --config CONFIGFILE </dt>
13
+ <dd> Load the logstash config from a specific file, directory, or a
14
+ wildcard. If given a directory or wildcard, config files will be read
15
+ from the directory in alphabetical order. </dd>
16
+ <dt> -e CONFIGSTRING </dt>
17
+ <dd> Use the given string as the configuration data. Same syntax as the
18
+ config file. If not input is specified, 'stdin { type => stdin }' is
19
+ default. If no output is specified, 'stdout { debug => true }}' is
20
+ default. </dd>
21
+ <dt> -w, --filterworkers COUNT </dt>
22
+ <dd> Run COUNT filter workers (default: 1) </dd>
23
+ <dt> --watchdog-timeout TIMEOUT </dt>
24
+ <dd> Set watchdog timeout value in seconds. Default is 10.</dd>
25
+ <dt> -l, --log FILE </dt>
26
+ <dd> Log to a given path. Default is to log to stdout </dd>
27
+ <dt> -v </dt>
28
+ <dd> Increase verbosity. There are multiple levels of verbosity available with
29
+ '-vv' currently being the highest </dd>
30
+ <dt> --pluginpath PLUGIN_PATH </dt>
31
+ <dd> A colon-delimted path to find other logstash plugins in </dd>
32
+ </dl>
33
+
34
+
35
+ ## Web
36
+
37
+ <dl>
38
+ <dt> -a, --address ADDRESS </dt>
39
+ <dd>Address on which to start webserver. Default is 0.0.0.0.</dd>
40
+ <dt> -p, --port PORT</dt>
41
+ <dd>Port on which to start webserver. Default is 9292.</dd>
42
+ </dl>
43
+
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "erb"
4
+
5
+ if ARGV.size != 1
6
+ $stderr.puts "No path given to search for plugin docs"
7
+ $stderr.puts "Usage: #{$0} plugin_doc_dir"
8
+ exit 1
9
+ end
10
+
11
+ def plugins(glob)
12
+ files = Dir.glob(glob)
13
+ names = files.collect { |f| File.basename(f).gsub(".html", "") }
14
+ return names.sort
15
+ end # def plugins
16
+
17
+ basedir = ARGV[0]
18
+ docs = {
19
+ "inputs" => plugins(File.join(basedir, "inputs/*.html")),
20
+ "codecs" => plugins(File.join(basedir, "codecs/*.html")),
21
+ "filters" => plugins(File.join(basedir, "filters/*.html")),
22
+ "outputs" => plugins(File.join(basedir, "outputs/*.html")),
23
+ }
24
+
25
+ template_path = File.join(File.dirname(__FILE__), "index.html.erb")
26
+ template = File.new(template_path).read
27
+ erb = ERB.new(template, nil, "-")
28
+ puts erb.result(binding)
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: logstash docs index
3
+ layout: content_right
4
+ ---
5
+ <div id="doc_index_container">
6
+
7
+ <h3> for users </h3>
8
+ <ul>
9
+ <li> <a href="https://download.elasticsearch.org/logstash/logstash/logstash-%VERSION%-flatjar.jar"> download logstash %VERSION% </a> </li>
10
+ <li> <a href="repositories">Repositories</a> </li>
11
+ <li> <a href="configuration"> configuration file overview </a> </li>
12
+ <li> <a href="configuration#conditionals">conditionals</a> </li>
13
+ <li> <a href="configuration#fieldreferences">referring to fields [like][this]</a> </li>
14
+ <li> <a href="configuration#sprintf">using the %{fieldname} syntax</a> </li>
15
+
16
+ <li> <a href="life-of-an-event"> the life of an event in logstash </a> </li>
17
+ <li> <a href="flags"> command-line flags </a> </li>
18
+ </ul>
19
+
20
+ <h3> for developers </h3>
21
+ <ul>
22
+ <li> <a href="extending"> writing your own plugins </a> </li>
23
+ </ul>
24
+
25
+ <h3> use cases and tutorials </h3>
26
+
27
+ <ul>
28
+ <li> <a href="tutorials/getting-started-simple"> getting started (standalone) </a> </li>
29
+ <li> <a href="tutorials/getting-started-centralized"> getting started (centralized) </a> </li>
30
+ <li> <a href="tutorials/10-minute-walkthrough"> 10-minute walkthrough</a> - a simple walkthrough to show you how to configure the logstash agent to process events and even old logs. </li>
31
+ <li> <a href="tutorials/metrics-from-logs"> Gathering metrics from logs </a> - take metrics from logs and ship them to graphite, ganglia, and more. </li>
32
+ <li> <a href="tutorials/just-enough-rabbitmq-for-logstash">Just enough RabbitMQ for Logstash </a> - Get a quick primer on RabbitMQ and how to use it in Logstash! </li>
33
+ </ul>
34
+
35
+ <h3> books and articles </h3>
36
+
37
+ <ul>
38
+ <li> <a href="http://www.logstashbook.com">The LogStash Book </a> - An introductory LogStash book. </li>
39
+ </ul>
40
+
41
+ <h3> plugin documentation </h3>
42
+ <% docs.each do |type, paths| -%>
43
+ <div class="doc_index_section">
44
+ <h3><%= type %></h3>
45
+ <ul>
46
+ <% paths.each do |path| -%>
47
+ <% name = File.basename(path).gsub(".html", "") -%>
48
+ <li>
49
+ <a href="<%= "#{type}/#{name}" %>"><%= name %></a>
50
+ </li>
51
+ <% end -%>
52
+ </ul>
53
+ </div>
54
+ <% end -%>
55
+ </div>
56
+ <div class="clear"></div>
@@ -0,0 +1,46 @@
1
+ ---
2
+ title: Learn - logstash
3
+ layout: content_right
4
+ ---
5
+ # What is logstash?
6
+
7
+ logstash is a tool for managing your logs.
8
+
9
+ It helps you take logs and other event data from your systems and move it into
10
+ a central place. logstash is open source and completely free. You can find
11
+ support on the mailing list and on IRC.
12
+
13
+ For an overview of logstash and why you would use it, you should watch the
14
+ presentation I gave at CarolinaCon 2011:
15
+ [video here](http://carolinacon.blip.tv/file/5105901/). This presentation covers
16
+ logstash, how you can use it, some alternatives, logging best practices,
17
+ parsing tools, etc. Video also below:
18
+
19
+ <!--
20
+ <embed src="http://blip.tv/play/gvE9grjcdQI" type="application/x-shockwave-flash" width="480" height="296" allowscriptaccess="always" allowfullscreen="true"></embed>
21
+
22
+ The slides are available online here: [slides](http://goo.gl/68c62). The slides
23
+ include speaker notes (click 'actions' then 'speaker notes').
24
+ -->
25
+ <iframe width="480" height="296" src="http://www.youtube.com/embed/RuUFnog29M4" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
26
+
27
+ The slides are available online here: [slides](http://semicomplete.com/presentations/logstash-puppetconf-2012/).
28
+
29
+ ## Getting Help
30
+
31
+ There's [documentation](.) here on this site. If that isn't sufficient, you can
32
+ email the mailing list (logstash-users@googlegroups.com). Further, there is also
33
+ an IRC channel - #logstash on irc.freenode.org.
34
+
35
+ If you find a bug or have a feature request, file them
36
+ on <http://logstash.jira.com/>. (Honestly though, if you prefer email or irc
37
+ for such things, that works for me, too.)
38
+
39
+ ## Download It
40
+
41
+ [Download logstash-%VERSION%](https://download.elasticsearch.org/logstash/logstash/logstash-%VERSION%-flatjar.jar)
42
+
43
+ ## What's next?
44
+
45
+ Try the [standalone logstash guide](tutorials/getting-started-simple) for a simple
46
+ real-world example getting started using logstash.
@@ -0,0 +1,109 @@
1
+ ---
2
+ title: the life of an event - logstash
3
+ layout: content_right
4
+ ---
5
+ # the life of an event
6
+
7
+ The logstash agent is an event pipeline.
8
+
9
+ ## The Pipeline
10
+
11
+ The logstash agent is a processing pipeline with 3 stages: inputs -> filters ->
12
+ outputs. Inputs generate events, filters modify them, outputs ship them
13
+ elsewhere.
14
+
15
+ Internal to logstash, events are passed from each phase using internal queues.
16
+ It is implemented with a 'SizedQueue' in Ruby. SizedQueue allows a bounded
17
+ maximum of items in the queue such that any writes to the queue will block if
18
+ the queue is full at maximum capacity.
19
+
20
+ Logstash sets each queue size to 20. This means only 20 events can be pending
21
+ into the next phase - this helps reduce any data loss and in general avoids
22
+ logstash trying to act as a data storage system. These internal queues are not
23
+ for storing messages long-term.
24
+
25
+ ## Fault Tolerance
26
+
27
+ Starting at outputs, here's what happens when things break.
28
+
29
+ An output can fail or have problems because of some downstream cause, such as
30
+ full disk, permissions problems, temporary network failures, or service
31
+ outages. Most outputs should keep retrying to ship any events that were
32
+ involved in the failure.
33
+
34
+ If an output is failing, the output thread will wait until this output is
35
+ healthy again and able to successfully send the message. Therefore, the output
36
+ queue will stop being read from by this output and will eventually fill up with
37
+ events and block new events from being written to this queue.
38
+
39
+ A full output queue means filters will block trying to write to the output
40
+ queue. Because filters will be stuck, blocked writing to the output queue, they
41
+ will stop reading from the filter queue which will eventually cause the filter
42
+ queue (input -> filter) to fill up.
43
+
44
+ A full filter queue will cause inputs to block when writing to the filters.
45
+ This will cause each input to block, causing each input to stop processing new
46
+ data from wherever that input is getting new events.
47
+
48
+ In ideal circumstances, this will behave similarly to when the tcp window
49
+ closes to 0, no new data is sent because the receiver hasn't finished
50
+ processing the current queue of data, but as soon as the downstream (output)
51
+ problem is resolved, messages will begin flowing again..
52
+
53
+ ## Thread Model
54
+
55
+ The thread model in logstash is currently:
56
+
57
+ input threads | filter worker threads | output worker
58
+
59
+ Filters are optional, so you will have this model if you have no filters
60
+ defined:
61
+
62
+ input threads | output worker
63
+
64
+ Each input runs in a thread by itself. This allows busier inputs to not be
65
+ blocked by slower ones, etc. It also allows for easier containment of scope
66
+ because each input has a thread.
67
+
68
+ The filter thread model is a 'worker' model where each worker receives an event
69
+ and applies all filters, in order, before emitting that to the output queue.
70
+ This allows scalability across CPUs because many filters are CPU intensive
71
+ (permitting that we have thread safety).
72
+
73
+ The default number of filter workers is 1, but you can increase this number
74
+ with the '-w' flag on the agent.
75
+
76
+ The output worker model is currently a single thread. Outputs will receive
77
+ events in the order they are defined in the config file.
78
+
79
+ Outputs may decide to buffer events temporarily before publishing them,
80
+ possibly in a separate thread. One example of this is the elasticsearch output
81
+ which will buffer events and flush them all at once, in a separate thread. This
82
+ mechanism (buffering many events + writing in a separate thread) can improve
83
+ performance so the logstash pipeline isn't stalled waiting for a response from
84
+ elasticsearch.
85
+
86
+ ## Consequences and Expectations
87
+
88
+ Small queue sizes mean that logstash simply blocks and stalls safely during
89
+ times of load or other temporary pipeline problems. There are two alternatives
90
+ to this - unlimited queue length and dropping messages. Unlimited queues grow
91
+ grow unbounded and eventually exceed memory causing a crash which loses all of
92
+ those messages. Dropping messages is also an undesirable behavior in most cases.
93
+
94
+ At a minimum, logstash will have probably 3 threads (2 if you have no filters).
95
+ One input, one filter worker, and one output thread each.
96
+
97
+ If you see logstash using multiple CPUs, this is likely why. If you want to
98
+ know more about what each thread is doing, you should read this:
99
+ <http://www.semicomplete.com/blog/geekery/debugging-java-performance.html>.
100
+
101
+ Threads in java have names, and you can use jstack and top to figure out who is
102
+ using what resources. The URL above will help you learn how to do this.
103
+
104
+ On Linux platforms, logstash will label all the threads it can with something
105
+ descriptive. Inputs will show up as "<inputname" and filter workers as
106
+ "|worker" and outputs as ">outputworker" (or something similar). Other threads
107
+ may be labeled as well, and are intended to help you identify their purpose
108
+ should you wonder why they are consuming resources!
109
+
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: Logging tools comparisons - logstash
3
+ layout: content_right
4
+ ---
5
+ # Logging tools comparison
6
+
7
+ The information below is provided as "best effort" and is not strictly intended
8
+ as a complete source of truth. If the information below is unclear or incorrect, please
9
+ email the logstash-users list (or send a pull request with the fix) :)
10
+
11
+ Where feasible, this document will also provide information on how you can use
12
+ logstash with these other projects.
13
+
14
+ # logstash
15
+
16
+ Primary goal: Make log/event data and analytics accessible.
17
+
18
+ Overview: Where your logs come from, how you store them, or what you do with
19
+ them is up to you. Logstash exists to help make such actions easier and faster.
20
+
21
+ It provides you a simple event pipeline for taking events and logs from any
22
+ input, manipulating them with filters, and sending them to any output. Inputs
23
+ can be files, network, message brokers, etc. Filters are date and string
24
+ parsers, grep-like, etc. Outputs are data stores (elasticsearch, mongodb, etc),
25
+ message systems (rabbitmq, stomp, etc), network (tcp, syslog), etc.
26
+
27
+ It also provides a web interface for doing search and analytics on your
28
+ logs.
29
+
30
+ # graylog2
31
+
32
+ [http://graylog2.org/](http://graylog2.org)
33
+
34
+ _Overview to be written_
35
+
36
+ You can use graylog2 with logstash by using the 'gelf' output to send logstash
37
+ events to a graylog2 server. This gives you logstash's excellent input and
38
+ filter features while still being able to use the graylog2 web interface.
39
+
40
+ # whoops
41
+
42
+ [whoops site](http://www.whoopsapp.com/)
43
+
44
+ _Overview to be written_
45
+
46
+ A logstash output to whoops is coming soon - <https://logstash.jira.com/browse/LOGSTASH-133>
47
+
48
+ # flume
49
+
50
+ [flume site](https://github.com/cloudera/flume/wiki)
51
+
52
+ Flume is primarily a transport system aimed at reliably copying logs from
53
+ application servers to HDFS.
54
+
55
+ You can use it with logstash by having a syslog sink configured to shoot logs
56
+ at a logstash syslog input.
57
+
58
+ # scribe
59
+
60
+ _Overview to be written_
@@ -0,0 +1,91 @@
1
+ ---
2
+ title: logstash docs for <%= section %>s/<%= name %>
3
+ layout: content_right
4
+ ---
5
+ <h2><%= name %></h2>
6
+ <h3>Milestone: <a href="../plugin-milestones"><%= @milestone %></a></h3>
7
+
8
+ <%= description %>
9
+
10
+ <% if !@flags.empty? -%>
11
+ <!-- Flags are deprecated
12
+ <h3> Flags </h3>
13
+
14
+ This plugin provides the following flags:
15
+
16
+ <dl>
17
+ <% @flags.each do |flag, description| -%>
18
+ <%# Prefix flag with plugin name. %>
19
+ <dt> <%= flag.gsub(/^--/, "--#{name}-") %> </dt>
20
+ <dd> <%= description %> </dd>
21
+ <% end -%>
22
+ </dl>
23
+
24
+ ... flags are deprecated -->
25
+
26
+ <% end -%>
27
+
28
+ <h3> Synopsis </h3>
29
+
30
+ This is what it might look like in your config file:
31
+
32
+ <pre><code><% if section == "codec" -%>
33
+ # with an input plugin:
34
+ # you can also use this codec with an output.
35
+ input {
36
+ file {
37
+ codec =&gt; <%= synopsis.split("\n").map { |l| " #{l}" }.join("\n") %>
38
+ }
39
+ }
40
+ <% else -%>
41
+ <%= section %> {
42
+ <%= synopsis %>
43
+ }
44
+ <% end -%></code></pre>
45
+
46
+ <h3> Details </h3>
47
+
48
+ <% sorted_attributes.each do |name, config| -%>
49
+ <%
50
+ if name.is_a?(Regexp)
51
+ name = "/" + name.to_s.gsub(/^\(\?-mix:/, "").gsub(/\)$/, "") + "/"
52
+ is_regexp = true
53
+ else
54
+ is_regexp = false
55
+ end
56
+ -%>
57
+ <h4>
58
+ <a name="<%= name %>">
59
+ <%= name %><%= " (required setting)" if config[:required] %>
60
+ <%= " <strong>DEPRECATED</strong>" if config[:deprecated] %>
61
+ </a>
62
+ </h4>
63
+
64
+ <ul>
65
+ <% if config[:deprecated] -%>
66
+ <li> DEPRECATED WARNING: This config item is deprecated. It may be removed in a further version. </li>
67
+ <% end -%>
68
+ <% if is_regexp -%>
69
+ <li> The configuration attribute name here is anything that matches the above regular expression. </li>
70
+ <% end -%>
71
+ <% if config[:validate].is_a?(Symbol) -%>
72
+ <li> Value type is <a href="../configuration#<%= config[:validate] %>"><%= config[:validate] %></a> </li>
73
+ <% elsif config[:validate].nil? -%>
74
+ <li> Value type is <a href="../configuration#string">string</a> </li>
75
+ <% elsif config[:validate].is_a?(Array) -%>
76
+ <li> Value can be any of: <%= config[:validate].map(&:inspect).join(", ") %> </li>
77
+ <% end -%>
78
+ <% if config.include?(:default) -%>
79
+ <li> Default value is <%= config[:default].inspect %> </li>
80
+ <% else -%>
81
+ <li> There is no default value for this setting. </li>
82
+ <% end -%>
83
+ </ul>
84
+
85
+ <%= config[:description] %>
86
+
87
+ <% end -%>
88
+
89
+ <hr>
90
+
91
+ This is documentation from <a href="https://github.com/logstash/logstash/blob/v<%= LOGSTASH_VERSION %>/<%= file %>"><%= file %></a>
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: Plugin Milestones - logstash
3
+ layout: content_right
4
+ ---
5
+ # Plugin Milestones
6
+
7
+ Plugins (inputs/outputs/filters/codecs) have a milestone label in logstash.
8
+ This is to provide an indicator to the end-user as to the kinds of changes
9
+ a given plugin could have between logstash releases.
10
+
11
+ The desire here is to allow plugin developers to quickly iterate on possible
12
+ new plugins while conveying to the end-user a set of expectations about that
13
+ plugin.
14
+
15
+ ## Milestone 1
16
+
17
+ Plugins at this milestone need your feedback to improve! Plugins at this
18
+ milestone may change between releases as the community figures out the best way
19
+ for the plugin to behave and be configured.
20
+
21
+ ## Milestone 2
22
+
23
+ Plugins at this milestone are more likely to have backwards-compatibility to
24
+ previous releases than do Milestone 1 plugins. This milestone also indicates
25
+ a greater level of in-the-wild usage by the community than the previous
26
+ milestone.
27
+
28
+ ## Milestone 3
29
+
30
+ Plugins at this milestone have strong promises towards backwards-compatibility.
31
+ This is enforced with automated tests to ensure behavior and configuration are
32
+ consistent across releases.
33
+
34
+ ## Milestone 0
35
+
36
+ This milestone appears at the bottom of the page because it is very
37
+ infrequently used.
38
+
39
+ This milestone marker is used to generally indicate that a plugin has no
40
+ active code maintainer nor does it have support from the community in terms
41
+ of getting help.