Heka community:

I’m new to Heka and am having some difficulties setting up delivery of Apache 
log messages from a local running Heka agent to a remote Heka instance via TCP 
Output/Input plugins.   The issue is directly coupled to using the Apache 
Access Log Decoder configured on at the remote Heka instance.  When this is 
configured on my TCPInput there is no message Payload available to the [lua] 
decoder.  I have been able to create a working configuration that does not use 
the Apache Access Log Decoder but would like to request assistance on how to 
troubleshoot this issue further.

What I have done thus far is to modify the function process_message() in the 
file: lua_decoders/apache_access.lua I’ve added a field called tcplog 
containing the Payload to verify there is no message available to parse.  The 
modification I’ve made is described following the configurations below of my 
working configuration and non-working configuration for comparison.  

I must add that I am able to use the Apache Access Log Decoder with the 
LogstreamerInput to process local files.  So, this issue is specifically 
related to the TCPInput/Apache Access Log Decoder combination.

My installation is Heka 0.9.1 on Ubuntu 14.04

# hekad -version
0.9.1

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:        14.04
Codename:       trusty

I didn’t see any outstanding bugs related to my issues.  Any advice would be 
greatly appreciated.

Thanks,

Chris

Local running Heka agent used to ship Apache logs to remote Heka instance:

****************************************************************************************
[test_com]
type = "LogstreamerInput"
log_directory = "/export/test/apache2/test_com"
file_match = '/(?P<Year>)\d+/(?P<Month>\d+)_(?P<Day>\d+)_access\.log'
priority = ["Year", "Month", "Day"]

[aggregator_output]
type = "TcpOutput"
address = "10.10.10.1:5565"
message_matcher = “TRUE”

Remote Heka instance - Working config

****************************************************************************************
[TcpInput]
address = ":5565"

[Influxdb]
type = "SandboxEncoder"
filename = "lua_encoders/schema_influx.lua"

[Influxdb.config]
series = "%{logger}"
skip_fields = "Pid EnvVersion"

[FileOutput]
message_matcher = "TRUE"
path = "/home/giordano/heka/output.log"
perm = "775"
flush_count = 100
flush_operator = "OR"
encoder = "Influxdb"

Remote Heka instance - Configuration not working config

****************************************************************************************
[TcpInput]
address = ":5565"
decoder = "CombinedLogDecoder"

[CombinedLogDecoder]
type = "SandboxDecoder"
filename = "lua_decoders/apache_access.lua"

[CombinedLogDecoder.config]
type = "combinedutrack"
user_agent_transform = false
payload_keep = true

# combinedutrack log format
log_format = "%v %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\" 
\"%{Cookie}i\""

[Influxdb]
type = "SandboxEncoder"
filename = "lua_encoders/schema_influx.lua"

[Influxdb.config]
series = "%{logger}"
skip_fields = "Pid EnvVersion"

[FileOutput]
message_matcher = "TRUE"
path = "/home/giordano/heka/output.log"
perm = "775"
flush_count = 100
flush_operator = "OR"
encoder = “Influxdb"

Additions to the apache access log decoder process_message() function

****************************************************************************************

function process_message ()
    local log = read_message("Payload")
    local fields = grammar:match(log)
— if not fields then return -1 end
    if not fields then fields = {} end
    fields.tcplog = log

    msg.Timestamp = fields.time
    fields.time = nil
    …

Sample output from non working configuration

****************************************************************************************

[{"points":[[1427985263000,"combinedutrack","","","",7,""]],"name":"%{logger}",”columns":["time","Type","Payload","Hostname","Logger","Severity",”tcplog”]}]



_______________________________________________
Heka mailing list
[email protected]
https://mail.mozilla.org/listinfo/heka

Reply via email to