Skip to content

Instantly share code, notes, and snippets.

View yaauie's full-sized avatar

Ry Biesemeyer yaauie

View GitHub Profile
###############################################################################
# replace-subset.logstash-filter-ruby.rb
# ---------------------------------
# A script for a Logstash Ruby Filter to replace an event's contents with a
# subset that exists as an object in a field.
###############################################################################
#
# Copyright 2020 Ry Biesemeyer
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
@yaauie
yaauie / delete-emtpy-nodes.logstash-filter-ruby.rb
Last active July 19, 2021 09:46
A script for a Logstash Ruby Filter to delete empty nodes from an event; by default, crawls the entire event recursively, but it can be configured to limit the scope.
###############################################################################
# delete-emtpy-nodes.logstash-filter-ruby.rb
# ---------------------------------
# A script for a Logstash Ruby Filter to delete empty nodes from an event; by
# default, crawls the entire event recursively, but it can be configured to
# limit the scope.
###############################################################################
#
# Copyright 2018 Ry Biesemeyer
#
@yaauie
yaauie / back_pressure_provider.rb
Created April 29, 2019 21:15
proof-of-concept generic back-pressure provider, enables blocking back-pressure to be controlled outside the code that is performing the actions.
# The BackPressureProvider allows back-pressure to be applied to non-blocking APIs when those APIs also
# provide hooks for identifying when they _should_ block.
class BackPressureProvider
def initialize(desc, logger)
@desc = desc
@logger = logger
@mutex = Mutex.new
@cond = ConditionVariable.new
@back_pressure_engaged = false
@yaauie
yaauie / cdlp
Last active March 4, 2019 23:02
Bash/Zsh-compliant utility function that allows you to cd into a local checkout of a Logstash Plugin's source code, whether or not you have previously cloned the repository
#!/usr/bin/env bash
#
# Utility that allows you to cd into a local checkout of a Logstash Plugin's
# source code, whether or not you have previously cloned the repository.
#
# Usage:
# cdlp <type> <qualifier>
#
# Example:
# cdlp output elasticsearch
filter {
ruby {
path => "${PWD}/processor-hostname.logstash-filter-ruby.rb"
script_params => {
"target" => "@processed-by"
}
}
}
@yaauie
yaauie / pipeline.conf
Last active May 6, 2019 13:47
A script for a Logstash Ruby Filter to transpose an array of two-element objects representing key/value tuples into a single hash/map
filter {
# to convert an array of key/value objects into a single unordered
# key/value map, use the included `transpose` script:
ruby {
path => "${PWD}/transpose.logstash-filter-ruby.rb"
script_params => {
source => "[proplist]"
}
}
@yaauie
yaauie / jdbc-informix-windowing.diff
Created September 18, 2018 17:44
Logstash JDBC Input Plugin: Informix DB Windowing Support Proof-of-Concept
diff --git a/lib/logstash/plugin_mixins/jdbc.rb b/lib/logstash/plugin_mixins/jdbc.rb
index c9bc547..934a4f1 100644
--- a/lib/logstash/plugin_mixins/jdbc.rb
+++ b/lib/logstash/plugin_mixins/jdbc.rb
@@ -162,6 +162,7 @@ module LogStash::PluginMixins::Jdbc
raise LogStash::ConfigurationError, "#{e}. #{message}"
end
@database = jdbc_connect()
+ @database.extension(:informix_windowing)
@database.extension(:pagination)
@yaauie
yaauie / lucene-list-fields-from-elasticsearch-index-mappings.rb
Created September 11, 2018 18:02
A quick and very dirty script to list the effective lucene field list from an elasticsearch index mapping
#!/usr/bin/env ruby
# A quick and very dirty script to list the effective lucene schema from an elasticsearch index mapping
#
# USAGE:
# cat index_mappings.json | lucene-list-fields-from-elasticsearch-index-mappings.rb
# cat cluster_mappings.json | jq '.["index_name"].mappings' | lucene-list-fields-from-elasticsearch-index-mappings.rb
#
#
# Copyright 2018 Ry Biesemeyer (@yaauie)
@yaauie
yaauie / years-elapsed.rb
Last active September 10, 2018 23:32
A Ruby function for determining the number of whole years elapsed between two `Time` objects. No dependencies. MIT License.
##
# Determine the number of whole years elapsed between two [Time] objects.
# It is assumed that the provided [Time] objects are in the same time-zone
# and part of a single continuous chronology.
#
# @param time1 [Time]
# @param time2 [Time]
#
# @return [Integer]
#

Keybase proof

I hereby claim:

  • I am yaauie on github.
  • I am yaauie (https://keybase.io/yaauie) on keybase.
  • I have a public key whose fingerprint is 0FA5 1969 4D7F 08F0 083F A1B6 CF2C 1D14 E392 052D

To claim this, I am signing this object: