Commit 8b4fad6c authored by Eteri's avatar Eteri

fluentbit-wendelin: fix errors

parent 315410d1
[SERVICE]
Flush 5
Daemon off
Log_Level debug
[INPUT] [INPUT]
Name cpu Name dummy
Tag cpu Tag dummy
[OUTPUT] [OUTPUT]
Name wendelin_out Name wendelin_out
Match * Match *
Host https://softinst84835.host.vifib.net/erp5/portal_ingestion_policies User zope
URI /fluentbit_test Password dbguylpn
USER zope Uri https://softinst84835.host.vifib.net/erp5/portal_ingestion_policies/fluentbit_test
PASSWORD dbguyl Reference fluentbit_test
\ No newline at end of file
...@@ -8,9 +8,16 @@ import ( ...@@ -8,9 +8,16 @@ import (
"net/http" "net/http"
"strconv" "strconv"
"bytes" "bytes"
"regexp"
) )
// configuration parameters
var user string
var password string
var uri string
var reference string
//export FLBPluginRegister //export FLBPluginRegister
func FLBPluginRegister(ctx unsafe.Pointer) int { func FLBPluginRegister(ctx unsafe.Pointer) int {
return output.FLBPluginRegister(ctx, "wendelin_out", "Wendelin Out GO!") return output.FLBPluginRegister(ctx, "wendelin_out", "Wendelin Out GO!")
...@@ -21,44 +28,79 @@ func FLBPluginRegister(ctx unsafe.Pointer) int { ...@@ -21,44 +28,79 @@ func FLBPluginRegister(ctx unsafe.Pointer) int {
// ctx (context) pointer to fluentbit context (state/ c code) // ctx (context) pointer to fluentbit context (state/ c code)
func FLBPluginInit(ctx unsafe.Pointer) int { func FLBPluginInit(ctx unsafe.Pointer) int {
// Example to retrieve an optional configuration parameter // Example to retrieve an optional configuration parameter
/* param := output.FLBPluginConfigKey(ctx, "param") // param := output.FLBPluginConfigKey(ctx, "param")
user := output.FLBPluginConfigKey(ctx, "user") user = output.FLBPluginConfigKey(ctx, "User")
password := output.FLBPluginConfigKey(ctx, "password") password = output.FLBPluginConfigKey(ctx, "Password")
uri := output.FLBPluginConfigKey(ctx, "uri") uri = output.FLBPluginConfigKey(ctx, "Uri")
reference = output.FLBPluginConfigKey(ctx, "Reference")
//fmt.Printf("[flb-go] plugin parameter = '%s'\n", param) //fmt.Printf("[flb-go] plugin parameter = '%s'\n", param)
fmt.Printf("[flb-go user] plugin parameter = '%s'\n", user) fmt.Printf("[flb-go user] plugin parameter = '%s'\n", user)
fmt.Printf("[flb-go password] plugin parameter = '%s'\n", password) fmt.Printf("[flb-go password] plugin parameter = '%s'\n", password)
fmt.Printf("[flb-go uri] plugin parameter = '%s'\n", uri) fmt.Printf("[flb-go uri] plugin parameter = '%s'\n", uri)
*/ fmt.Printf("[flb-go reference] plugin parameter = '%s'\n", reference)
return output.FLB_OK return output.FLB_OK
} }
//export FLBPluginFlush //export FLBPluginFlush
func FLBPluginFlush(data unsafe.Pointer, length C.int, tag *C.char) int { func FLBPluginFlush(data unsafe.Pointer, length C.int, tag *C.char) int {
request_string := uri + "/ingest?reference=" + reference
var b []byte var b []byte
b = C.GoBytes(data, C.int(length)) b = C.GoBytes(data, C.int(length))
var username string = "zope"
var passwd string = "dbguylpn"
hc := http.Client{} hc := http.Client{}
req, err := http.NewRequest("POST", "https://softinst84835.host.vifib.net/erp5/portal_ingestion_policies/fluentbit_test/ingest?reference=fluentbit_test", bytes.NewBuffer(b)) req, err := http.NewRequest("POST", request_string, bytes.NewBuffer(b))
if err != nil {
return output.FLB_ERROR
}
req.Header.Set("Content-Type", "application/octet-stream") req.Header.Set("Content-Type", "application/octet-stream")
req.SetBasicAuth(username, passwd) req.SetBasicAuth(user, password)
resp, err := hc.Do(req) resp, err := hc.Do(req)
if err != nil {
return output.FLB_ERROR
}
/*
* Only allow the following HTTP status:
*
* - 200: OK
* - 201: Created
* - 202: Accepted
* - 203: no authorative resp
* - 204: No Content
* - 205: Reset content
*/
re := regexp.MustCompile("[0-9]+") // get only the status code
status_code := re.FindAllString(resp.Status, -1)
resp_status, err := strconv.Atoi(status_code[0])
if err != nil {
fmt.Println(err)
return output.FLB_RETRY
}
fmt.Println(resp.Status) fmt.Println(resp.Status)
fmt.Println(err) fmt.Println(err)
if resp_status < 200 && resp_status > 205 {
return output.FLB_RETRY
}
defer resp.Body.Close() defer resp.Body.Close()
// Return options: /*
// * Return options:
// output.FLB_OK = data have been processed. *
// output.FLB_ERROR = unrecoverable error, do not try this again. * - output.FLB_OK = data have been processed.
// output.FLB_RETRY = retry to flush later. * - output.FLB_ERROR = unrecoverable error, do not try this again.
* - output.FLB_RETRY = retry to flush later.
*/
return output.FLB_OK return output.FLB_OK
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment