Thanks you both Rob and David very much!

Not sure where I need to define "base_dir"?

I'm going to write a Heka plugin to pass our metrics data into Heka.

For now, I have a hard time to see the data I send in through
TCP programmatically through TcpInput in the output.log file.
I don't see any output.  The configs are:

tcp_input.toml
============

[hekad]

maxprocs = 1

share_dir = "/Users/egu/heka/share/heka"


[tcp_in:3242]

type = "TcpInput"

splitter = "HekaFramingSplitter"

decoder = "ProtobufDecoder"

address = ":3242"


tcp_output.toml

==============

[hekad]

maxprocs = 1

share_dir = "/Users/egu/heka/share/heka"


[tcp_out:3242]

type = "TcpOutput"

message_matcher = "TRUE"

address = "127.0.0.1:3242"


[tcp_heka_output_log]

type = "FileOutput"

message_matcher = "TRUE"

path = "/tmp/output.log"

perm = "664"

encoder = "tcp_heka_output_encoder"


[tcp_heka_output_encoder]

type = "PayloadEncoder"

append_newlines = false


The client:

package main


import (

    "fmt"

    "github.com/mozilla-services/heka/client"

)



func main() {

    message_bytes := []byte {100}


    sender, err := client.NewNetworkSender("tcp", "127.0.0.1:3242")

    if err != nil {

        fmt.Println("Could not connect to", "127.0.0.1:3242")

        return

    }

    fmt.Println("Connected")



    var i int

    for i = 0; i < 10; i++ {

    fmt.Println("message byte:", string(message_bytes))

        err = sender.SendMessage(message_bytes)

        if err != nil {

            break

        }

    }

    fmt.Println("sent", i, "messages")

}


Please let me know what else I need to change.

Thanks,

Emily






On Thu, Jan 7, 2016 at 3:28 PM, David Birdsong <[email protected]>
wrote:

>
>
> On Thu, Jan 7, 2016 at 3:22 PM, Rob Miller <[email protected]> wrote:
>
>> On 01/07/2016 03:09 PM, Emily Gu wrote:
>>
>>> Thanks David for all the help! I'll give it a try.
>>>
>>> Please bear with me as some parts I still not understand.
>>>
>>> 1. Why do I have to run two Heka instances where one for input and
>>> another for output?
>>>
>>
>> Because if you send the output from a Heka instance back into itself,
>> then you're likely setting up an infinite loop of traffic that will spin
>> out of control.
>>
>> 2. Did you mean I need to specify different share_dirs in input and
>>> output Toml configs?
>>>
>>
>> If you're running multiple Heka instances on a single machine, it
>> *should* be fine for them to use the same share_dir, which is read-only.
>> It's very important that each specifies a unique base_dir, however, since
>> that's used by Heka for internal bookkeeping data. Two Heka's using the
>> same base_dir is asking for trouble.
>>
>> 3. Do I need both TcpOutput and FileOutput in order for me to see
>>> messages inside an output file? What if I didn't specify TcpOutput?
>>>
>>
>> Um, TcpOutput sends output data over a TCP connection. It expects that
>> there is a listener on the other side which will accept that TCP
>> connection, and will know how to correctly handle the data that Heka is
>> sending over the TCP connection.
>>
>> FileOutput sends data to a file on the local file system.
>>
>> It's of course fine to specify a FileOutput without specifying a
>> TcpOutput.
>>
>> -r
>>
>
> whoops, yes I meant base_dir for where heka writes various internal state
> information to.
>
> Emily,
>
> Maybe you could share what data you're trying to read into heka and what
> you would like to do with it and we could help get you going.
>
> Heka intended to a uni-directional pipeline. It can read data in from many
> places into various formats, aggregate into interesting new formats, and
> finally emit data somewhere else.
>
>
_______________________________________________
Heka mailing list
[email protected]
https://mail.mozilla.org/listinfo/heka

Reply via email to