0.1. Hindsight Main Configuration
0.1.1. Configuration Variables
- output_path - base path where the Heka protobuf streams, checkpoints,
state files, and statistics are stored
- input (directory) - stores the Heka protobuf stream generated by all input plugins
- analysis (directory) - stores the Heka protobuf stream generated by all analysis plugins
- hindsight.cp - checkpoint file for all input, analysis and output threads
- plugins.tsv - performance metrics for all running plugins
- utilization.tsv - performance metrics for each thread
- output_size - size at which the output files are rolled (bytes, default 64MiB)
- sandbox_load_path - base path that Hindsight scans for new cfgs and Lua
(string, default "" (dynamic loading disabled)). If the string is not empty
the following directory structure must exist under the base path and be
writable by Hindsight:
- input (directory) - input plugin queue
- analysis (directory) - analysis plugin queue
- output (directory) - output plugin queue
- sandbox_run_path - base path containing the running cfgs and dynamically
loaded lua. The following directory structure must exist under the base
path and be writable by Hindsight when dynamic loading is configured:
- input (directory) - input plugins
- analysis (directory) - analysis plugins
- output (directory) - output plugins
- sandbox_install_path - base path to the install location of the sandbox
packages default:
/usr/share/luasandbox/sandboxes/heka
. This path should contain the input, analysis, and output subdirectory structure. - analysis_threads - number of analysis threads to run (count, max 64)
- analysis_utilization_limit - percent utilization where dynamic loading is blocked (0-100 default 95 (0 to disable))
- analysis_lua_path - path used by the analysis plugins to look for Lua modules
- analysis_lua_cpath - path used by the analysis plugins to look for Lua C modules
- io_lua_path - path used by the input and output plugins to look for Lua modules
- io_lua_cpath - path used by the input and output plugins to look for Lua C modules
- max_message_size - maximum size of a valid message (bytes, default 64KiB)
- backpressure - delta between the writer queue file and the slowest reader,
when exceeded backpressure is applied (message injection will be slowed)
until the writer and reader are both on the same file (count, default 0 (no
backpressure)) e.g.
backpressure = 10 -- [writer = 100.log, slowest reader = 89.log, delta = 11]
- backpressure_disk_free - Number of output file units (
N * <output_size>
). Backpressure is applied (message injection will be slowed) until the free space rises above this threshold (count, default 4 (0 to disable)) e.g.backpressure_disk_free = 4 -- [256MiB when using the defaults]
- hostname - hostname used in logging/messages (default gethostname())
output_path = "output"
output_size = 64 * 1024 * 1024
sandbox_load_path = "load"
sandbox_run_path = "run"
sandbox_install_path = "/usr/share/luasandbox/sandboxes/heka"
analysis_threads = 1
analysis_lua_path = "/usr/lib/luasandbox/modules/?.lua"
analysis_lua_cpath = "/usr/lib/luasandbox/modules/?.so"
io_lua_path = analysis_lua_path .. ";/usr/lib/luasandbox/io_modules/?.lua"
io_lua_cpath = analysis_lua_cpath .. ";/usr/lib/luasandbox/io_modules/?.so"
max_message_size = 64 * 1024
backpressure = 0
backpressure_disk_free = 4
-- hostname = "hindsight.example.com"
input_defaults = {
-- see: Default Sandbox Configuration Variables
-- output_limit = 64 * 1024
-- memory_limit = 8 * 1024 * 1024
-- instruction_limit = 1e6
-- preserve_data = false
-- restricted_headers = false
-- ticker_interval = 0
-- shutdown_on_terminate = false
}
analysis_defaults = {
-- see: Default Sandbox Configuration Variables
}
output_defaults = {
-- see: Default Sandbox Configuration Variables
-- remove_checkpoints_on_terminate = false
-- read_queue = "both"
}
0.2. Hindsight Sandbox Configuration
0.2.1. Default Sandbox Configuration Variables
- output_limit - the largest message an input or analysis plugin can inject into Hindsight (bytes, default 64KiB)
- memory_limit - the maximum amount of memory a plugin can use before being terminated (bytes, default 8MiB)
- instruction_limit - the maximum number of Lua instructions a plugin can
execute in a single
process_message
ortimer_event
function call (count, default 1MM) - preserve_data - flag indicating if all global data should be saved on shutdown (bool, default false)
- restricted_headers - flag indicating that the following header fields are
not user modifiable
Hostname
andLogger
(bool, default true (analysis), false (input/output)) - ticker_interval (seconds, default 0)
- For input plugins it is the poll interval when
process_message
is called see: polling input plugins - For analysis and output plugins it is the amount of time between
timer_event
function calls
- For input plugins it is the poll interval when
- shutdown_on_terminate - cleanly shuts down Hindsight if this plugin is terminated (bool, default false)
0.2.2. Default Analysis Sandbox Configuration Variables
process_message_inject_limit - the maximum number of messages the
process_message
function can inject in a single invocation (count, default 0 (none)).timer_event_inject_limit - the maximum number of messages the
timer_event
function can inject in a single invocation (count, default 10).
0.2.3. Default Output Sandbox Configuration Variables
- remove_checkpoints_on_terminate - removes the checkpoint entries when the plugin is terminated (bool, default false). This prevents the data from being pruned until the plugin can be fixed but it can also cause the system to back pressure as it will start filling the disk.
- read_queue - specifies which queue the output plugin consumes (both|input|analysis) defaults to both.
0.2.4. Common Plugin Configuration Variables
- filename - plugin source file (must have no path component and a
.lua
extension). Search order: sandbox_run_path, sandbox_install_path
Reserved (Hindsight populates the following variables in the configuration)
- Logger - configuration filename without the
.cfg
extension prefixed with the sandbox type e.g.,analysis.myplugin
- Pid - process ID
- Hostname - configuration hostname.
- path - Lua module search path (corresponding to the type of plugin)
- cpath - Lua C module search path (corresponding to the type of plugin)
- log_level - Integer specifying the syslog severity level, when set to debug (7) the sandbox print function will be wired into the Hindsight logger
For input/output plugins these additional Hindsight configuration options are available from read_config()
- output_path
- output_size
- max_message_size
- sandbox_load_path
- sandbox_run_path
- sandbox_install_path
User Defined
- key (string | number) - user defined variable with a (string | number | boolean | table) value
User Defined Private Variable
- _*key* (string) - user defined variable beginning with an underscore (allows filtering in UI displays)
0.2.5. Input Plugin Configuration Variables
0.2.6. Analysis Plugin Configuration Variables
- Default Configuration Variables
- Common Plugin Configuration Variables
- message_matcher - filter to select which messages this plugin receives see: Message Matcher
- thread - analysis thread the plugin will be run on (
thread % analysis_threads
)
0.2.7. Output Plugin Configuration Variables
- Default Configuration Variables
- Common Plugin Configuration Variables
- message_matcher - filter to select which messages this plugin receives see: Message Matcher
- async_buffer_size - when using asynchronous output this controls the number of message checkpoints to hold in memory. i.e., if the output can have 1000 messages in flight the async_buffer_size should be set to 1000