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.
- data/.gitignore +24 -0
- data/.tailor +8 -0
- data/.travis.yml +12 -0
- data/CHANGELOG +1185 -0
- data/CONTRIBUTING.md +61 -0
- data/CONTRIBUTORS +79 -0
- data/LICENSE +14 -0
- data/Makefile +460 -0
- data/README.md +120 -0
- data/STYLE.md +96 -0
- data/bin/logstash +37 -0
- data/bin/logstash-test +4 -0
- data/bin/logstash-web +4 -0
- data/bin/logstash.lib.sh +78 -0
- data/bot/check_pull_changelog.rb +89 -0
- data/docs/configuration.md +260 -0
- data/docs/docgen.rb +242 -0
- data/docs/extending/example-add-a-new-filter.md +121 -0
- data/docs/extending/index.md +91 -0
- data/docs/flags.md +43 -0
- data/docs/generate_index.rb +28 -0
- data/docs/index.html.erb +56 -0
- data/docs/learn.md +46 -0
- data/docs/life-of-an-event.md +109 -0
- data/docs/logging-tool-comparisons.md +60 -0
- data/docs/plugin-doc.html.erb +91 -0
- data/docs/plugin-milestones.md +41 -0
- data/docs/plugin-synopsis.html.erb +24 -0
- data/docs/release-engineering.md +46 -0
- data/docs/release-test-results.md +14 -0
- data/docs/repositories.md +35 -0
- data/docs/tutorials/10-minute-walkthrough/apache-elasticsearch.conf +35 -0
- data/docs/tutorials/10-minute-walkthrough/apache-parse.conf +33 -0
- data/docs/tutorials/10-minute-walkthrough/apache_log.1 +1 -0
- data/docs/tutorials/10-minute-walkthrough/apache_log.2.bz2 +0 -0
- data/docs/tutorials/10-minute-walkthrough/hello-search.conf +25 -0
- data/docs/tutorials/10-minute-walkthrough/hello.conf +16 -0
- data/docs/tutorials/10-minute-walkthrough/index.md +124 -0
- data/docs/tutorials/10-minute-walkthrough/step-5-output.txt +17 -0
- data/docs/tutorials/getting-started-centralized-overview-diagram.png +0 -0
- data/docs/tutorials/getting-started-centralized-overview-diagram.xml +1 -0
- data/docs/tutorials/getting-started-centralized.md +217 -0
- data/docs/tutorials/getting-started-simple.md +200 -0
- data/docs/tutorials/just-enough-rabbitmq-for-logstash.md +201 -0
- data/docs/tutorials/media/frontend-response-codes.png +0 -0
- data/docs/tutorials/metrics-from-logs.md +84 -0
- data/docs/tutorials/zeromq.md +118 -0
- data/extract_services.rb +29 -0
- data/gembag.rb +64 -0
- data/lib/logstash-event.rb +2 -0
- data/lib/logstash.rb +4 -0
- data/lib/logstash/JRUBY-6970-openssl.rb +22 -0
- data/lib/logstash/JRUBY-6970.rb +102 -0
- data/lib/logstash/agent.rb +305 -0
- data/lib/logstash/certs/cacert.pem +3895 -0
- data/lib/logstash/codecs/base.rb +49 -0
- data/lib/logstash/codecs/compress_spooler.rb +50 -0
- data/lib/logstash/codecs/dots.rb +18 -0
- data/lib/logstash/codecs/edn.rb +28 -0
- data/lib/logstash/codecs/edn_lines.rb +36 -0
- data/lib/logstash/codecs/fluent.rb +55 -0
- data/lib/logstash/codecs/graphite.rb +114 -0
- data/lib/logstash/codecs/json.rb +41 -0
- data/lib/logstash/codecs/json_lines.rb +52 -0
- data/lib/logstash/codecs/json_spooler.rb +22 -0
- data/lib/logstash/codecs/line.rb +58 -0
- data/lib/logstash/codecs/msgpack.rb +43 -0
- data/lib/logstash/codecs/multiline.rb +189 -0
- data/lib/logstash/codecs/netflow.rb +342 -0
- data/lib/logstash/codecs/netflow/util.rb +212 -0
- data/lib/logstash/codecs/noop.rb +19 -0
- data/lib/logstash/codecs/oldlogstashjson.rb +56 -0
- data/lib/logstash/codecs/plain.rb +48 -0
- data/lib/logstash/codecs/rubydebug.rb +22 -0
- data/lib/logstash/codecs/spool.rb +38 -0
- data/lib/logstash/config/Makefile +4 -0
- data/lib/logstash/config/config_ast.rb +380 -0
- data/lib/logstash/config/file.rb +39 -0
- data/lib/logstash/config/grammar.rb +3504 -0
- data/lib/logstash/config/grammar.treetop +241 -0
- data/lib/logstash/config/mixin.rb +464 -0
- data/lib/logstash/config/registry.rb +13 -0
- data/lib/logstash/config/test.conf +18 -0
- data/lib/logstash/errors.rb +10 -0
- data/lib/logstash/event.rb +262 -0
- data/lib/logstash/filters/advisor.rb +178 -0
- data/lib/logstash/filters/alter.rb +173 -0
- data/lib/logstash/filters/anonymize.rb +93 -0
- data/lib/logstash/filters/base.rb +190 -0
- data/lib/logstash/filters/checksum.rb +50 -0
- data/lib/logstash/filters/cidr.rb +76 -0
- data/lib/logstash/filters/cipher.rb +145 -0
- data/lib/logstash/filters/clone.rb +35 -0
- data/lib/logstash/filters/collate.rb +114 -0
- data/lib/logstash/filters/csv.rb +94 -0
- data/lib/logstash/filters/date.rb +244 -0
- data/lib/logstash/filters/dns.rb +201 -0
- data/lib/logstash/filters/drop.rb +32 -0
- data/lib/logstash/filters/elapsed.rb +256 -0
- data/lib/logstash/filters/elasticsearch.rb +73 -0
- data/lib/logstash/filters/environment.rb +27 -0
- data/lib/logstash/filters/extractnumbers.rb +84 -0
- data/lib/logstash/filters/gelfify.rb +52 -0
- data/lib/logstash/filters/geoip.rb +145 -0
- data/lib/logstash/filters/grep.rb +153 -0
- data/lib/logstash/filters/grok.rb +425 -0
- data/lib/logstash/filters/grokdiscovery.rb +75 -0
- data/lib/logstash/filters/i18n.rb +51 -0
- data/lib/logstash/filters/json.rb +90 -0
- data/lib/logstash/filters/json_encode.rb +52 -0
- data/lib/logstash/filters/kv.rb +232 -0
- data/lib/logstash/filters/metaevent.rb +68 -0
- data/lib/logstash/filters/metrics.rb +237 -0
- data/lib/logstash/filters/multiline.rb +241 -0
- data/lib/logstash/filters/mutate.rb +399 -0
- data/lib/logstash/filters/noop.rb +21 -0
- data/lib/logstash/filters/prune.rb +149 -0
- data/lib/logstash/filters/punct.rb +32 -0
- data/lib/logstash/filters/railsparallelrequest.rb +86 -0
- data/lib/logstash/filters/range.rb +142 -0
- data/lib/logstash/filters/ruby.rb +42 -0
- data/lib/logstash/filters/sleep.rb +111 -0
- data/lib/logstash/filters/split.rb +64 -0
- data/lib/logstash/filters/sumnumbers.rb +73 -0
- data/lib/logstash/filters/syslog_pri.rb +107 -0
- data/lib/logstash/filters/translate.rb +121 -0
- data/lib/logstash/filters/unique.rb +29 -0
- data/lib/logstash/filters/urldecode.rb +57 -0
- data/lib/logstash/filters/useragent.rb +112 -0
- data/lib/logstash/filters/uuid.rb +58 -0
- data/lib/logstash/filters/xml.rb +139 -0
- data/lib/logstash/filters/zeromq.rb +123 -0
- data/lib/logstash/filterworker.rb +122 -0
- data/lib/logstash/inputs/base.rb +125 -0
- data/lib/logstash/inputs/collectd.rb +306 -0
- data/lib/logstash/inputs/drupal_dblog.rb +323 -0
- data/lib/logstash/inputs/drupal_dblog/jdbcconnection.rb +66 -0
- data/lib/logstash/inputs/elasticsearch.rb +140 -0
- data/lib/logstash/inputs/eventlog.rb +129 -0
- data/lib/logstash/inputs/eventlog/racob_fix.rb +44 -0
- data/lib/logstash/inputs/exec.rb +69 -0
- data/lib/logstash/inputs/file.rb +146 -0
- data/lib/logstash/inputs/ganglia.rb +127 -0
- data/lib/logstash/inputs/ganglia/gmondpacket.rb +146 -0
- data/lib/logstash/inputs/ganglia/xdr.rb +327 -0
- data/lib/logstash/inputs/gelf.rb +138 -0
- data/lib/logstash/inputs/gemfire.rb +222 -0
- data/lib/logstash/inputs/generator.rb +97 -0
- data/lib/logstash/inputs/graphite.rb +41 -0
- data/lib/logstash/inputs/heroku.rb +51 -0
- data/lib/logstash/inputs/imap.rb +136 -0
- data/lib/logstash/inputs/irc.rb +84 -0
- data/lib/logstash/inputs/log4j.rb +136 -0
- data/lib/logstash/inputs/lumberjack.rb +53 -0
- data/lib/logstash/inputs/pipe.rb +57 -0
- data/lib/logstash/inputs/rabbitmq.rb +126 -0
- data/lib/logstash/inputs/rabbitmq/bunny.rb +118 -0
- data/lib/logstash/inputs/rabbitmq/hot_bunnies.rb +1 -0
- data/lib/logstash/inputs/rabbitmq/march_hare.rb +129 -0
- data/lib/logstash/inputs/redis.rb +263 -0
- data/lib/logstash/inputs/relp.rb +106 -0
- data/lib/logstash/inputs/s3.rb +279 -0
- data/lib/logstash/inputs/snmptrap.rb +87 -0
- data/lib/logstash/inputs/sqlite.rb +185 -0
- data/lib/logstash/inputs/sqs.rb +172 -0
- data/lib/logstash/inputs/stdin.rb +46 -0
- data/lib/logstash/inputs/stomp.rb +84 -0
- data/lib/logstash/inputs/syslog.rb +237 -0
- data/lib/logstash/inputs/tcp.rb +231 -0
- data/lib/logstash/inputs/threadable.rb +18 -0
- data/lib/logstash/inputs/twitter.rb +82 -0
- data/lib/logstash/inputs/udp.rb +81 -0
- data/lib/logstash/inputs/unix.rb +163 -0
- data/lib/logstash/inputs/varnishlog.rb +48 -0
- data/lib/logstash/inputs/websocket.rb +50 -0
- data/lib/logstash/inputs/wmi.rb +72 -0
- data/lib/logstash/inputs/xmpp.rb +81 -0
- data/lib/logstash/inputs/zenoss.rb +143 -0
- data/lib/logstash/inputs/zeromq.rb +165 -0
- data/lib/logstash/kibana.rb +113 -0
- data/lib/logstash/loadlibs.rb +9 -0
- data/lib/logstash/logging.rb +89 -0
- data/lib/logstash/monkeypatches-for-bugs.rb +2 -0
- data/lib/logstash/monkeypatches-for-debugging.rb +47 -0
- data/lib/logstash/monkeypatches-for-performance.rb +66 -0
- data/lib/logstash/multiqueue.rb +53 -0
- data/lib/logstash/namespace.rb +16 -0
- data/lib/logstash/outputs/base.rb +120 -0
- data/lib/logstash/outputs/boundary.rb +116 -0
- data/lib/logstash/outputs/circonus.rb +78 -0
- data/lib/logstash/outputs/cloudwatch.rb +351 -0
- data/lib/logstash/outputs/csv.rb +55 -0
- data/lib/logstash/outputs/datadog.rb +93 -0
- data/lib/logstash/outputs/datadog_metrics.rb +123 -0
- data/lib/logstash/outputs/elasticsearch.rb +332 -0
- data/lib/logstash/outputs/elasticsearch/elasticsearch-template.json +44 -0
- data/lib/logstash/outputs/elasticsearch_http.rb +256 -0
- data/lib/logstash/outputs/elasticsearch_river.rb +214 -0
- data/lib/logstash/outputs/email.rb +299 -0
- data/lib/logstash/outputs/exec.rb +40 -0
- data/lib/logstash/outputs/file.rb +180 -0
- data/lib/logstash/outputs/ganglia.rb +75 -0
- data/lib/logstash/outputs/gelf.rb +208 -0
- data/lib/logstash/outputs/gemfire.rb +103 -0
- data/lib/logstash/outputs/google_bigquery.rb +570 -0
- data/lib/logstash/outputs/google_cloud_storage.rb +431 -0
- data/lib/logstash/outputs/graphite.rb +143 -0
- data/lib/logstash/outputs/graphtastic.rb +185 -0
- data/lib/logstash/outputs/hipchat.rb +80 -0
- data/lib/logstash/outputs/http.rb +142 -0
- data/lib/logstash/outputs/irc.rb +80 -0
- data/lib/logstash/outputs/jira.rb +109 -0
- data/lib/logstash/outputs/juggernaut.rb +105 -0
- data/lib/logstash/outputs/librato.rb +146 -0
- data/lib/logstash/outputs/loggly.rb +93 -0
- data/lib/logstash/outputs/lumberjack.rb +51 -0
- data/lib/logstash/outputs/metriccatcher.rb +103 -0
- data/lib/logstash/outputs/mongodb.rb +81 -0
- data/lib/logstash/outputs/nagios.rb +119 -0
- data/lib/logstash/outputs/nagios_nsca.rb +123 -0
- data/lib/logstash/outputs/null.rb +18 -0
- data/lib/logstash/outputs/opentsdb.rb +101 -0
- data/lib/logstash/outputs/pagerduty.rb +79 -0
- data/lib/logstash/outputs/pipe.rb +132 -0
- data/lib/logstash/outputs/rabbitmq.rb +96 -0
- data/lib/logstash/outputs/rabbitmq/bunny.rb +135 -0
- data/lib/logstash/outputs/rabbitmq/hot_bunnies.rb +1 -0
- data/lib/logstash/outputs/rabbitmq/march_hare.rb +143 -0
- data/lib/logstash/outputs/redis.rb +245 -0
- data/lib/logstash/outputs/riak.rb +152 -0
- data/lib/logstash/outputs/riemann.rb +109 -0
- data/lib/logstash/outputs/s3.rb +356 -0
- data/lib/logstash/outputs/sns.rb +124 -0
- data/lib/logstash/outputs/solr_http.rb +78 -0
- data/lib/logstash/outputs/sqs.rb +141 -0
- data/lib/logstash/outputs/statsd.rb +116 -0
- data/lib/logstash/outputs/stdout.rb +53 -0
- data/lib/logstash/outputs/stomp.rb +67 -0
- data/lib/logstash/outputs/syslog.rb +145 -0
- data/lib/logstash/outputs/tcp.rb +145 -0
- data/lib/logstash/outputs/udp.rb +38 -0
- data/lib/logstash/outputs/websocket.rb +46 -0
- data/lib/logstash/outputs/websocket/app.rb +29 -0
- data/lib/logstash/outputs/websocket/pubsub.rb +45 -0
- data/lib/logstash/outputs/xmpp.rb +78 -0
- data/lib/logstash/outputs/zabbix.rb +108 -0
- data/lib/logstash/outputs/zeromq.rb +125 -0
- data/lib/logstash/pipeline.rb +286 -0
- data/lib/logstash/plugin.rb +150 -0
- data/lib/logstash/plugin_mixins/aws_config.rb +93 -0
- data/lib/logstash/program.rb +15 -0
- data/lib/logstash/runner.rb +238 -0
- data/lib/logstash/sized_queue.rb +8 -0
- data/lib/logstash/test.rb +183 -0
- data/lib/logstash/threadwatchdog.rb +37 -0
- data/lib/logstash/time_addon.rb +33 -0
- data/lib/logstash/util.rb +106 -0
- data/lib/logstash/util/buftok.rb +139 -0
- data/lib/logstash/util/charset.rb +39 -0
- data/lib/logstash/util/fieldreference.rb +50 -0
- data/lib/logstash/util/password.rb +25 -0
- data/lib/logstash/util/prctl.rb +11 -0
- data/lib/logstash/util/relp.rb +326 -0
- data/lib/logstash/util/require-helper.rb +18 -0
- data/lib/logstash/util/socket_peer.rb +7 -0
- data/lib/logstash/util/zenoss.rb +566 -0
- data/lib/logstash/util/zeromq.rb +47 -0
- data/lib/logstash/version.rb +6 -0
- data/locales/en.yml +170 -0
- data/logstash-event.gemspec +29 -0
- data/logstash.gemspec +128 -0
- data/patterns/firewalls +60 -0
- data/patterns/grok-patterns +91 -0
- data/patterns/haproxy +37 -0
- data/patterns/java +3 -0
- data/patterns/linux-syslog +14 -0
- data/patterns/mcollective +1 -0
- data/patterns/mcollective-patterns +4 -0
- data/patterns/nagios +108 -0
- data/patterns/postgresql +3 -0
- data/patterns/redis +3 -0
- data/patterns/ruby +2 -0
- data/pkg/build.sh +135 -0
- data/pkg/centos/after-install.sh +1 -0
- data/pkg/centos/before-install.sh +10 -0
- data/pkg/centos/before-remove.sh +11 -0
- data/pkg/centos/sysconfig +15 -0
- data/pkg/debian/after-install.sh +5 -0
- data/pkg/debian/before-install.sh +13 -0
- data/pkg/debian/before-remove.sh +13 -0
- data/pkg/debian/build.sh +34 -0
- data/pkg/debian/debian/README +6 -0
- data/pkg/debian/debian/changelog +17 -0
- data/pkg/debian/debian/compat +1 -0
- data/pkg/debian/debian/control +16 -0
- data/pkg/debian/debian/copyright +27 -0
- data/pkg/debian/debian/dirs +19 -0
- data/pkg/debian/debian/docs +0 -0
- data/pkg/debian/debian/logstash.default +39 -0
- data/pkg/debian/debian/logstash.init +201 -0
- data/pkg/debian/debian/logstash.install +1 -0
- data/pkg/debian/debian/logstash.logrotate +9 -0
- data/pkg/debian/debian/logstash.postinst +68 -0
- data/pkg/debian/debian/logstash.postrm +23 -0
- data/pkg/debian/debian/manpage.1.ex +59 -0
- data/pkg/debian/debian/preinst.ex +37 -0
- data/pkg/debian/debian/prerm.ex +40 -0
- data/pkg/debian/debian/release.conf +5 -0
- data/pkg/debian/debian/rules +80 -0
- data/pkg/debian/debian/watch.ex +22 -0
- data/pkg/logrotate.conf +8 -0
- data/pkg/logstash-web.default +41 -0
- data/pkg/logstash-web.sysv.debian +201 -0
- data/pkg/logstash-web.upstart.ubuntu +18 -0
- data/pkg/logstash.default +45 -0
- data/pkg/logstash.sysv.debian +202 -0
- data/pkg/logstash.sysv.redhat +158 -0
- data/pkg/logstash.upstart.ubuntu +20 -0
- data/pkg/rpm/SOURCES/logstash.conf +26 -0
- data/pkg/rpm/SOURCES/logstash.init +80 -0
- data/pkg/rpm/SOURCES/logstash.logrotate +8 -0
- data/pkg/rpm/SOURCES/logstash.sysconfig +3 -0
- data/pkg/rpm/SOURCES/logstash.wrapper +105 -0
- data/pkg/rpm/SPECS/logstash.spec +180 -0
- data/pkg/rpm/readme.md +4 -0
- data/pkg/ubuntu/after-install.sh +7 -0
- data/pkg/ubuntu/before-install.sh +12 -0
- data/pkg/ubuntu/before-remove.sh +13 -0
- data/pull_release_note.rb +25 -0
- data/require-analyze.rb +22 -0
- data/spec/README.md +14 -0
- data/spec/codecs/edn.rb +40 -0
- data/spec/codecs/edn_lines.rb +53 -0
- data/spec/codecs/graphite.rb +96 -0
- data/spec/codecs/json.rb +57 -0
- data/spec/codecs/json_lines.rb +51 -0
- data/spec/codecs/json_spooler.rb +43 -0
- data/spec/codecs/msgpack.rb +39 -0
- data/spec/codecs/multiline.rb +60 -0
- data/spec/codecs/oldlogstashjson.rb +55 -0
- data/spec/codecs/plain.rb +35 -0
- data/spec/codecs/spool.rb +35 -0
- data/spec/conditionals/test.rb +323 -0
- data/spec/config.rb +31 -0
- data/spec/event.rb +165 -0
- data/spec/examples/fail2ban.rb +28 -0
- data/spec/examples/graphite-input.rb +41 -0
- data/spec/examples/mysql-slow-query.rb +70 -0
- data/spec/examples/parse-apache-logs.rb +66 -0
- data/spec/examples/parse-haproxy-logs.rb +115 -0
- data/spec/examples/syslog.rb +48 -0
- data/spec/filters/alter.rb +96 -0
- data/spec/filters/anonymize.rb +189 -0
- data/spec/filters/checksum.rb +41 -0
- data/spec/filters/clone.rb +67 -0
- data/spec/filters/collate.rb +122 -0
- data/spec/filters/csv.rb +174 -0
- data/spec/filters/date.rb +285 -0
- data/spec/filters/date_performance.rb +31 -0
- data/spec/filters/dns.rb +159 -0
- data/spec/filters/drop.rb +19 -0
- data/spec/filters/elapsed.rb +294 -0
- data/spec/filters/environment.rb +43 -0
- data/spec/filters/geoip.rb +62 -0
- data/spec/filters/grep.rb +342 -0
- data/spec/filters/grok.rb +473 -0
- data/spec/filters/grok/timeout2.rb +56 -0
- data/spec/filters/grok/timeouts.rb +39 -0
- data/spec/filters/i18n.rb +25 -0
- data/spec/filters/json.rb +72 -0
- data/spec/filters/json_encode.rb +37 -0
- data/spec/filters/kv.rb +403 -0
- data/spec/filters/metrics.rb +212 -0
- data/spec/filters/multiline.rb +119 -0
- data/spec/filters/mutate.rb +180 -0
- data/spec/filters/noop.rb +221 -0
- data/spec/filters/prune.rb +441 -0
- data/spec/filters/punct.rb +18 -0
- data/spec/filters/railsparallelrequest.rb +112 -0
- data/spec/filters/range.rb +169 -0
- data/spec/filters/split.rb +58 -0
- data/spec/filters/translate.rb +70 -0
- data/spec/filters/unique.rb +25 -0
- data/spec/filters/useragent.rb +42 -0
- data/spec/filters/xml.rb +157 -0
- data/spec/inputs/file.rb +107 -0
- data/spec/inputs/gelf.rb +52 -0
- data/spec/inputs/generator.rb +30 -0
- data/spec/inputs/imap.rb +60 -0
- data/spec/inputs/redis.rb +63 -0
- data/spec/inputs/relp.rb +70 -0
- data/spec/inputs/tcp.rb +101 -0
- data/spec/jar.rb +21 -0
- data/spec/outputs/csv.rb +266 -0
- data/spec/outputs/elasticsearch.rb +161 -0
- data/spec/outputs/elasticsearch_http.rb +240 -0
- data/spec/outputs/email.rb +173 -0
- data/spec/outputs/file.rb +82 -0
- data/spec/outputs/graphite.rb +236 -0
- data/spec/outputs/redis.rb +127 -0
- data/spec/speed.rb +20 -0
- data/spec/sqlite-test.rb +81 -0
- data/spec/support/LOGSTASH-733.rb +21 -0
- data/spec/support/LOGSTASH-820.rb +25 -0
- data/spec/support/akamai-grok.rb +26 -0
- data/spec/support/date-http.rb +17 -0
- data/spec/support/postwait1.rb +26 -0
- data/spec/support/pull375.rb +21 -0
- data/spec/test_utils.rb +125 -0
- data/spec/util/fieldeval_spec.rb +44 -0
- data/test/jenkins/config.xml.erb +74 -0
- data/test/jenkins/create-jobs.rb +23 -0
- data/test/jenkins/generatorjob.config.xml +66 -0
- data/tools/Gemfile +14 -0
- data/tools/Gemfile.jruby-1.9.lock +322 -0
- data/tools/Gemfile.rbx-2.1.lock +516 -0
- data/tools/Gemfile.ruby-1.9.1.lock +310 -0
- data/tools/Gemfile.ruby-2.0.0.lock +310 -0
- metadata +629 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
class LogStash::Outputs::Lumberjack < LogStash::Outputs::Base
|
|
3
|
+
|
|
4
|
+
config_name "lumberjack"
|
|
5
|
+
milestone 1
|
|
6
|
+
|
|
7
|
+
# list of addresses lumberjack can send to
|
|
8
|
+
config :hosts, :validate => :array, :required => true
|
|
9
|
+
|
|
10
|
+
# the port to connect to
|
|
11
|
+
config :port, :validate => :number, :required => true
|
|
12
|
+
|
|
13
|
+
# ssl certificate to use
|
|
14
|
+
config :ssl_certificate, :validate => :path, :required => true
|
|
15
|
+
|
|
16
|
+
# window size
|
|
17
|
+
config :window_size, :validate => :number, :default => 5000
|
|
18
|
+
|
|
19
|
+
public
|
|
20
|
+
def register
|
|
21
|
+
require 'lumberjack/client'
|
|
22
|
+
connect
|
|
23
|
+
end # def register
|
|
24
|
+
|
|
25
|
+
public
|
|
26
|
+
def receive(event)
|
|
27
|
+
return unless output?(event)
|
|
28
|
+
begin
|
|
29
|
+
@client.write(event.to_hash)
|
|
30
|
+
rescue Exception => e
|
|
31
|
+
@logger.error("Client write error", :e => e, :backtrace => e.backtrace)
|
|
32
|
+
connect
|
|
33
|
+
retry
|
|
34
|
+
end
|
|
35
|
+
end # def receive
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
def connect
|
|
39
|
+
@logger.info("Connecting to lumberjack server.", :addresses => @hosts, :port => @port,
|
|
40
|
+
:ssl_certificate => @ssl_certificate, :window_size => @window_size)
|
|
41
|
+
begin
|
|
42
|
+
@client = Lumberjack::Client.new(:addresses => @hosts, :port => @port,
|
|
43
|
+
:ssl_certificate => @ssl_certificate, :window_size => @window_size)
|
|
44
|
+
rescue Exception => e
|
|
45
|
+
@logger.error("All hosts unavailable, sleeping", :hosts => @hosts, :e => e,
|
|
46
|
+
:backtrace => e.backtrace)
|
|
47
|
+
sleep(10)
|
|
48
|
+
retry
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require "logstash/outputs/base"
|
|
3
|
+
require "logstash/namespace"
|
|
4
|
+
require "json"
|
|
5
|
+
|
|
6
|
+
# This output ships metrics to MetricCatcher, allowing you to
|
|
7
|
+
# utilize Coda Hale's Metrics.
|
|
8
|
+
#
|
|
9
|
+
# More info on MetricCatcher: https://github.com/clearspring/MetricCatcher
|
|
10
|
+
#
|
|
11
|
+
# At Clearspring, we use it to count the response codes from Apache logs:
|
|
12
|
+
# metriccatcher {
|
|
13
|
+
# host => "localhost"
|
|
14
|
+
# port => "1420"
|
|
15
|
+
# type => "apache-access"
|
|
16
|
+
# fields => [ "response" ]
|
|
17
|
+
# meter => [ "%{host}.apache.response.%{response}", "1" ]
|
|
18
|
+
# }
|
|
19
|
+
class LogStash::Outputs::MetricCatcher < LogStash::Outputs::Base
|
|
20
|
+
config_name "metriccatcher"
|
|
21
|
+
milestone 2
|
|
22
|
+
|
|
23
|
+
# The address of the MetricCatcher
|
|
24
|
+
config :host, :validate => :string, :default => "localhost"
|
|
25
|
+
# The port to connect on your MetricCatcher
|
|
26
|
+
config :port, :validate => :number, :default => 1420
|
|
27
|
+
|
|
28
|
+
# The metrics to send. 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.
|
|
31
|
+
#
|
|
32
|
+
# The value will be coerced to a floating point value. Values which cannot be
|
|
33
|
+
# coerced will zero (0)
|
|
34
|
+
config :gauge, :validate => :hash
|
|
35
|
+
|
|
36
|
+
# The metrics to send. This supports dynamic strings like %{host}
|
|
37
|
+
# for metric names and also for values. This is a hash field with key
|
|
38
|
+
# of the metric name, value of the metric value. Example:
|
|
39
|
+
#
|
|
40
|
+
# counter => [ "%{host}.apache.hits.%{response}, "1" ]
|
|
41
|
+
#
|
|
42
|
+
# The value will be coerced to a floating point value. Values which cannot be
|
|
43
|
+
# coerced will zero (0)
|
|
44
|
+
config :counter, :validate => :hash
|
|
45
|
+
|
|
46
|
+
# The metrics to send. This supports dynamic strings like %{host}
|
|
47
|
+
# for metric names and also for values. This is a hash field with key
|
|
48
|
+
# of the metric name, value of the metric value.
|
|
49
|
+
#
|
|
50
|
+
# The value will be coerced to a floating point value. Values which cannot be
|
|
51
|
+
# coerced will zero (0)
|
|
52
|
+
config :meter, :validate => :hash
|
|
53
|
+
|
|
54
|
+
# The metrics to send. This supports dynamic strings like %{host}
|
|
55
|
+
# for metric names and also for values. This is a hash field with key
|
|
56
|
+
# of the metric name, value of the metric value.
|
|
57
|
+
#
|
|
58
|
+
# The value will be coerced to a floating point value. Values which cannot be
|
|
59
|
+
# coerced will zero (0)
|
|
60
|
+
config :biased, :validate => :hash
|
|
61
|
+
|
|
62
|
+
# The metrics to send. This supports dynamic strings like %{host}
|
|
63
|
+
# for metric names and also for values. This is a hash field with key
|
|
64
|
+
# of the metric name, value of the metric value.
|
|
65
|
+
#
|
|
66
|
+
# The value will be coerced to a floating point value. Values which cannot be
|
|
67
|
+
# coerced will zero (0)
|
|
68
|
+
config :uniform, :validate => :hash
|
|
69
|
+
|
|
70
|
+
# The metrics to send. This supports dynamic strings like %{host}
|
|
71
|
+
# for metric names and also for values. This is a hash field with key
|
|
72
|
+
# of the metric name, value of the metric value. Example:
|
|
73
|
+
#
|
|
74
|
+
# timer => [ "%{host}.apache.response_time, "%{response_time}" ]
|
|
75
|
+
#
|
|
76
|
+
# The value will be coerced to a floating point value. Values which cannot be
|
|
77
|
+
# coerced will zero (0)
|
|
78
|
+
config :timer, :validate => :hash
|
|
79
|
+
|
|
80
|
+
def register
|
|
81
|
+
@socket = UDPSocket.new
|
|
82
|
+
end # def register
|
|
83
|
+
|
|
84
|
+
public
|
|
85
|
+
def receive(event)
|
|
86
|
+
return unless output?(event)
|
|
87
|
+
|
|
88
|
+
@@metric_types.each do |metric_type|
|
|
89
|
+
if instance_variable_defined?("@#{metric_type}")
|
|
90
|
+
instance_variable_get("@#{metric_type}").each do |metric_name, metric_value|
|
|
91
|
+
message = [{
|
|
92
|
+
"name" => event.sprintf(metric_name),
|
|
93
|
+
"type" => event.sprintf(metric_type),
|
|
94
|
+
"value" => event.sprintf(metric_value).to_f,
|
|
95
|
+
"timestamp" => event.sprintf("%{+%s}.") + Time.now.usec.to_s
|
|
96
|
+
}]
|
|
97
|
+
|
|
98
|
+
@socket.send(message.to_json, 0, @host, @port)
|
|
99
|
+
end # instance_variable_get("@#{metric_type}").each_slice
|
|
100
|
+
end # if
|
|
101
|
+
end # @metric_types.each
|
|
102
|
+
end # def receive
|
|
103
|
+
end # class LogStash::Outputs::MetricCatcher
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require "logstash/outputs/base"
|
|
3
|
+
require "logstash/namespace"
|
|
4
|
+
|
|
5
|
+
class LogStash::Outputs::Mongodb < LogStash::Outputs::Base
|
|
6
|
+
|
|
7
|
+
config_name "mongodb"
|
|
8
|
+
milestone 2
|
|
9
|
+
|
|
10
|
+
# a MongoDB URI to connect to
|
|
11
|
+
# See http://docs.mongodb.org/manual/reference/connection-string/
|
|
12
|
+
config :uri, :validate => :string, :required => true
|
|
13
|
+
|
|
14
|
+
# The database to use
|
|
15
|
+
config :database, :validate => :string, :required => true
|
|
16
|
+
|
|
17
|
+
# The collection to use. This value can use %{foo} values to dynamically
|
|
18
|
+
# select a collection based on data in the event.
|
|
19
|
+
config :collection, :validate => :string, :required => true
|
|
20
|
+
|
|
21
|
+
# If true, store the @timestamp field in mongodb as an ISODate type instead
|
|
22
|
+
# of an ISO8601 string. For more information about this, see
|
|
23
|
+
# http://www.mongodb.org/display/DOCS/Dates
|
|
24
|
+
config :isodate, :validate => :boolean, :default => false
|
|
25
|
+
|
|
26
|
+
# Number of seconds to wait after failure before retrying
|
|
27
|
+
config :retry_delay, :validate => :number, :default => 3, :required => false
|
|
28
|
+
|
|
29
|
+
# If true, a _id field will be added to the document before insertion.
|
|
30
|
+
# The _id field will use the timestamp of the event and overwrite an existing
|
|
31
|
+
# _id field in the event.
|
|
32
|
+
config :generateId, :validate => :boolean, :default => false
|
|
33
|
+
|
|
34
|
+
public
|
|
35
|
+
def register
|
|
36
|
+
require "mongo"
|
|
37
|
+
uriParsed=Mongo::URIParser.new(@uri)
|
|
38
|
+
conn = uriParsed.connection({})
|
|
39
|
+
if uriParsed.auths.length > 0
|
|
40
|
+
uriParsed.auths.each do |auth|
|
|
41
|
+
if !auth['db_name'].nil?
|
|
42
|
+
conn.add_auth(auth['db_name'], auth['username'], auth['password'], nil)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
conn.apply_saved_authentication()
|
|
46
|
+
end
|
|
47
|
+
@db = conn.db(@database)
|
|
48
|
+
end # def register
|
|
49
|
+
|
|
50
|
+
public
|
|
51
|
+
def receive(event)
|
|
52
|
+
return unless output?(event)
|
|
53
|
+
|
|
54
|
+
begin
|
|
55
|
+
if @isodate
|
|
56
|
+
# the mongodb driver wants time values as a ruby Time object.
|
|
57
|
+
# set the @timestamp value of the document to a ruby Time object, then.
|
|
58
|
+
document = event.to_hash
|
|
59
|
+
else
|
|
60
|
+
document = event.to_hash.merge("@timestamp" => event["@timestamp"].to_json)
|
|
61
|
+
end
|
|
62
|
+
if @generateId
|
|
63
|
+
document['_id'] = BSON::ObjectId.new(nil, event["@timestamp"])
|
|
64
|
+
end
|
|
65
|
+
@db.collection(event.sprintf(@collection)).insert(document)
|
|
66
|
+
rescue => e
|
|
67
|
+
@logger.warn("Failed to send event to MongoDB", :event => event, :exception => e,
|
|
68
|
+
:backtrace => e.backtrace)
|
|
69
|
+
if e.error_code == 11000
|
|
70
|
+
# On a duplicate key error, skip the insert.
|
|
71
|
+
# We could check if the duplicate key err is the _id key
|
|
72
|
+
# and generate a new primary key.
|
|
73
|
+
# If the duplicate key error is on another field, we have no way
|
|
74
|
+
# to fix the issue.
|
|
75
|
+
else
|
|
76
|
+
sleep @retry_delay
|
|
77
|
+
retry
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end # def receive
|
|
81
|
+
end # class LogStash::Outputs::Mongodb
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require "logstash/namespace"
|
|
3
|
+
require "logstash/outputs/base"
|
|
4
|
+
|
|
5
|
+
# The nagios output is used for sending passive check results to nagios via the
|
|
6
|
+
# nagios command file.
|
|
7
|
+
#
|
|
8
|
+
# For this output to work, your event must have the following fields:
|
|
9
|
+
#
|
|
10
|
+
# * "nagios_host"
|
|
11
|
+
# * "nagios_service"
|
|
12
|
+
#
|
|
13
|
+
# These fields are supported, but optional:
|
|
14
|
+
#
|
|
15
|
+
# * "nagios_annotation"
|
|
16
|
+
# * "nagios_level"
|
|
17
|
+
#
|
|
18
|
+
# There are two configuration options:
|
|
19
|
+
#
|
|
20
|
+
# * commandfile - The location of the Nagios external command file
|
|
21
|
+
# * nagios_level - Specifies the level of the check to be sent. Defaults to
|
|
22
|
+
# CRITICAL and can be overriden by setting the "nagios_level" field to one
|
|
23
|
+
# of "OK", "WARNING", "CRITICAL", or "UNKNOWN"
|
|
24
|
+
#
|
|
25
|
+
# match => [ "message", "(error|ERROR|CRITICAL)" ]
|
|
26
|
+
#
|
|
27
|
+
# output{
|
|
28
|
+
# if [message] =~ /(error|ERROR|CRITICAL)/ {
|
|
29
|
+
# nagios {
|
|
30
|
+
# # your config here
|
|
31
|
+
# }
|
|
32
|
+
# }
|
|
33
|
+
# }
|
|
34
|
+
class LogStash::Outputs::Nagios < LogStash::Outputs::Base
|
|
35
|
+
|
|
36
|
+
config_name "nagios"
|
|
37
|
+
milestone 2
|
|
38
|
+
|
|
39
|
+
# The path to your nagios command file
|
|
40
|
+
config :commandfile, :validate => :path, :default => "/var/lib/nagios3/rw/nagios.cmd"
|
|
41
|
+
|
|
42
|
+
# The Nagios check level. Should be one of 0=OK, 1=WARNING, 2=CRITICAL,
|
|
43
|
+
# 3=UNKNOWN. Defaults to 2 - CRITICAL.
|
|
44
|
+
config :nagios_level, :validate => [ "0", "1", "2", "3" ], :default => "2"
|
|
45
|
+
|
|
46
|
+
public
|
|
47
|
+
def register
|
|
48
|
+
# nothing to do
|
|
49
|
+
end # def register
|
|
50
|
+
|
|
51
|
+
public
|
|
52
|
+
def receive(event)
|
|
53
|
+
return unless output?(event)
|
|
54
|
+
|
|
55
|
+
if !File.exists?(@commandfile)
|
|
56
|
+
@logger.warn("Skipping nagios output; command file is missing",
|
|
57
|
+
:commandfile => @commandfile, :missed_event => event)
|
|
58
|
+
return
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# TODO(petef): if nagios_host/nagios_service both have more than one
|
|
62
|
+
# value, send multiple alerts. They will have to match up together by
|
|
63
|
+
# array indexes (host/service combos) and the arrays must be the same
|
|
64
|
+
# length.
|
|
65
|
+
|
|
66
|
+
host = event["nagios_host"]
|
|
67
|
+
if !host
|
|
68
|
+
@logger.warn("Skipping nagios output; nagios_host field is missing",
|
|
69
|
+
:missed_event => event)
|
|
70
|
+
return
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
service = event["nagios_service"]
|
|
74
|
+
if !service
|
|
75
|
+
@logger.warn("Skipping nagios output; nagios_service field is missing",
|
|
76
|
+
"missed_event" => event)
|
|
77
|
+
return
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
annotation = event["nagios_annotation"]
|
|
81
|
+
level = @nagios_level
|
|
82
|
+
|
|
83
|
+
if event["nagios_level"]
|
|
84
|
+
event_level = [*event["nagios_level"]]
|
|
85
|
+
case event_level[0].downcase
|
|
86
|
+
when "ok"
|
|
87
|
+
level = "0"
|
|
88
|
+
when "warning"
|
|
89
|
+
level = "1"
|
|
90
|
+
when "critical"
|
|
91
|
+
level = "2"
|
|
92
|
+
when "unknown"
|
|
93
|
+
level = "3"
|
|
94
|
+
else
|
|
95
|
+
@logger.warn("Invalid Nagios level. Defaulting to CRITICAL", :data => event_level)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
cmd = "[#{Time.now.to_i}] PROCESS_SERVICE_CHECK_RESULT;#{host};#{service};#{level};"
|
|
100
|
+
if annotation
|
|
101
|
+
cmd += "#{annotation}: "
|
|
102
|
+
end
|
|
103
|
+
# In the multi-line case, escape the newlines for the nagios command file
|
|
104
|
+
cmd += (event["message"] || "<no message>").gsub("\n", "\\n")
|
|
105
|
+
|
|
106
|
+
@logger.debug("Opening nagios command file", :commandfile => @commandfile,
|
|
107
|
+
:nagios_command => cmd)
|
|
108
|
+
begin
|
|
109
|
+
File.open(@commandfile, "r+") do |f|
|
|
110
|
+
f.puts(cmd)
|
|
111
|
+
f.flush # TODO(sissel): probably don't need this.
|
|
112
|
+
end
|
|
113
|
+
rescue => e
|
|
114
|
+
@logger.warn("Skipping nagios output; error writing to command file",
|
|
115
|
+
:commandfile => @commandfile, :missed_event => event,
|
|
116
|
+
:exception => e, :backtrace => e.backtrace)
|
|
117
|
+
end
|
|
118
|
+
end # def receive
|
|
119
|
+
end # class LogStash::Outputs::Nagios
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require "logstash/outputs/base"
|
|
3
|
+
require "logstash/namespace"
|
|
4
|
+
|
|
5
|
+
# The nagios_nsca output is used for sending passive check results to Nagios
|
|
6
|
+
# through the NSCA protocol.
|
|
7
|
+
#
|
|
8
|
+
# This is useful if your Nagios server is not the same as the source host from
|
|
9
|
+
# where you want to send logs or alerts. If you only have one server, this
|
|
10
|
+
# output is probably overkill # for you, take a look at the 'nagios' output
|
|
11
|
+
# instead.
|
|
12
|
+
#
|
|
13
|
+
# Here is a sample config using the nagios_nsca output:
|
|
14
|
+
# output {
|
|
15
|
+
# nagios_nsca {
|
|
16
|
+
# # specify the hostname or ip of your nagios server
|
|
17
|
+
# host => "nagios.example.com"
|
|
18
|
+
#
|
|
19
|
+
# # specify the port to connect to
|
|
20
|
+
# port => 5667
|
|
21
|
+
# }
|
|
22
|
+
# }
|
|
23
|
+
|
|
24
|
+
class LogStash::Outputs::NagiosNsca < LogStash::Outputs::Base
|
|
25
|
+
|
|
26
|
+
config_name "nagios_nsca"
|
|
27
|
+
milestone 1
|
|
28
|
+
|
|
29
|
+
# The status to send to nagios. Should be 0 = OK, 1 = WARNING, 2 = CRITICAL, 3 = UNKNOWN
|
|
30
|
+
config :nagios_status, :validate => :string, :required => true
|
|
31
|
+
|
|
32
|
+
# The nagios host or IP to send logs to. It should have a NSCA daemon running.
|
|
33
|
+
config :host, :validate => :string, :default => "localhost"
|
|
34
|
+
|
|
35
|
+
# The port where the NSCA daemon on the nagios host listens.
|
|
36
|
+
config :port, :validate => :number, :default => 5667
|
|
37
|
+
|
|
38
|
+
# The path to the 'send_nsca' binary on the local host.
|
|
39
|
+
config :send_nsca_bin, :validate => :path, :default => "/usr/sbin/send_nsca"
|
|
40
|
+
|
|
41
|
+
# The path to the send_nsca config file on the local host.
|
|
42
|
+
# Leave blank if you don't want to provide a config file.
|
|
43
|
+
config :send_nsca_config, :validate => :path
|
|
44
|
+
|
|
45
|
+
# The nagios 'host' you want to submit a passive check result to. This
|
|
46
|
+
# parameter accepts interpolation, e.g. you can use @source_host or other
|
|
47
|
+
# logstash internal variables.
|
|
48
|
+
config :nagios_host, :validate => :string, :default => "%{host}"
|
|
49
|
+
|
|
50
|
+
# The nagios 'service' you want to submit a passive check result to. This
|
|
51
|
+
# parameter accepts interpolation, e.g. you can use @source_host or other
|
|
52
|
+
# logstash internal variables.
|
|
53
|
+
config :nagios_service, :validate => :string, :default => "LOGSTASH"
|
|
54
|
+
|
|
55
|
+
# The format to use when writing events to nagios. This value
|
|
56
|
+
# supports any string and can include %{name} and other dynamic
|
|
57
|
+
# strings.
|
|
58
|
+
config :message_format, :validate => :string, :default => "%{@timestamp} %{host}: %{message}"
|
|
59
|
+
|
|
60
|
+
public
|
|
61
|
+
def register
|
|
62
|
+
#nothing for now
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
public
|
|
66
|
+
def receive(event)
|
|
67
|
+
# exit if type or tags don't match
|
|
68
|
+
return unless output?(event)
|
|
69
|
+
|
|
70
|
+
# catch logstash shutdown
|
|
71
|
+
if event == LogStash::SHUTDOWN
|
|
72
|
+
finished
|
|
73
|
+
return
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# skip if 'send_nsca' binary doesn't exist
|
|
77
|
+
if !File.exists?(@send_nsca_bin)
|
|
78
|
+
@logger.warn("Skipping nagios_nsca output; send_nsca_bin file is missing",
|
|
79
|
+
"send_nsca_bin" => @send_nsca_bin, "missed_event" => event)
|
|
80
|
+
return
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# interpolate params
|
|
84
|
+
nagios_host = event.sprintf(@nagios_host)
|
|
85
|
+
nagios_service = event.sprintf(@nagios_service)
|
|
86
|
+
|
|
87
|
+
# escape basic things in the log message
|
|
88
|
+
# TODO: find a way to escape the message correctly
|
|
89
|
+
msg = event.sprintf(@message_format)
|
|
90
|
+
msg.gsub!("\n", "<br/>")
|
|
91
|
+
msg.gsub!("'", "’")
|
|
92
|
+
|
|
93
|
+
status = event.sprintf(@nagios_status)
|
|
94
|
+
if status.to_i.to_s != status # Check it round-trips to int correctly
|
|
95
|
+
msg = "status '#{status}' is not numeric"
|
|
96
|
+
status = 2
|
|
97
|
+
else
|
|
98
|
+
status = status.to_i
|
|
99
|
+
if status > 3 || status < 0
|
|
100
|
+
msg "status must be > 0 and <= 3, not #{status}"
|
|
101
|
+
status = 2
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# build the command
|
|
106
|
+
# syntax: echo '<server>!<nagios_service>!<status>!<text>' | \
|
|
107
|
+
# /usr/sbin/send_nsca -H <nagios_host> -d '!' -c <nsca_config>"
|
|
108
|
+
cmd = %(echo '#{nagios_host}~#{nagios_service}~#{status}~#{msg}' |)
|
|
109
|
+
cmd << %( #{@send_nsca_bin} -H #{@host} -p #{@port} -d '~')
|
|
110
|
+
cmd << %( -c #{@send_nsca_config}) if @send_nsca_config
|
|
111
|
+
cmd << %( 2>/dev/null >/dev/null)
|
|
112
|
+
@logger.debug("Running send_nsca command", "nagios_nsca_command" => cmd)
|
|
113
|
+
|
|
114
|
+
begin
|
|
115
|
+
system cmd
|
|
116
|
+
rescue => e
|
|
117
|
+
@logger.warn("Skipping nagios_nsca output; error calling send_nsca",
|
|
118
|
+
"error" => $!, "nagios_nsca_command" => cmd,
|
|
119
|
+
"missed_event" => event)
|
|
120
|
+
@logger.debug("Backtrace", e.backtrace)
|
|
121
|
+
end
|
|
122
|
+
end # def receive
|
|
123
|
+
end # class LogStash::Outputs::NagiosNsca
|