Skip to content

Commit

Permalink
[8.6](backport #33254) [filebeat] Change how we debug tpl values in h…
Browse files Browse the repository at this point in the history
…ttpjson (#34111)

* [filebeat] Change how we debug tpl values in httpjson (#33254)

* Change how we debug tpl values

* Change to use a switch statement

* Add changelog entry

* Update CHANGELOG.next.asciidoc

Co-authored-by: ShourieG <105607378+ShourieG@users.noreply.github.com>
(cherry picked from commit 32ab116)

* Notice

---------

Co-authored-by: Marc Guasch <marc-gr@users.noreply.github.com>
Co-authored-by: Marc Guasch <marc.guasch@elastic.co>
  • Loading branch information
3 people committed Feb 22, 2023
1 parent 882fcd9 commit e69c48f
Show file tree
Hide file tree
Showing 7 changed files with 20 additions and 11 deletions.
2 changes: 1 addition & 1 deletion x-pack/filebeat/input/httpjson/cursor.go
Expand Up @@ -50,7 +50,7 @@ func (c *cursor) update(trCtx *transformContext) {
}

for k, cfg := range c.cfg {
v, _ := cfg.Value.Execute(trCtx, transformable{}, cfg.Default, c.log)
v, _ := cfg.Value.Execute(trCtx, transformable{}, "", cfg.Default, c.log)
if v != "" || !cfg.mustIgnoreEmptyValue() {
_, _ = c.state.Put(k, v)
c.log.Debugf("cursor.%s stored with %s", k, v)
Expand Down
6 changes: 3 additions & 3 deletions x-pack/filebeat/input/httpjson/rate_limiter.go
Expand Up @@ -104,7 +104,7 @@ func (r *rateLimiter) getRateLimit(resp *http.Response) (int64, error) {
ctx := emptyTransformContext()
ctx.updateLastResponse(response{header: resp.Header.Clone()})

remaining, _ := r.remaining.Execute(ctx, tr, nil, r.log)
remaining, _ := r.remaining.Execute(ctx, tr, "", nil, r.log)
if remaining == "" {
return 0, errors.New("remaining value is empty")
}
Expand All @@ -119,7 +119,7 @@ func (r *rateLimiter) getRateLimit(resp *http.Response) (int64, error) {
if r.earlyLimit != nil {
earlyLimit := *r.earlyLimit
if earlyLimit > 0 && earlyLimit < 1 {
limit, _ := r.limit.Execute(ctx, tr, nil, r.log)
limit, _ := r.limit.Execute(ctx, tr, "", nil, r.log)
if limit != "" {
l, err := strconv.ParseInt(limit, 10, 64)
if err == nil {
Expand All @@ -141,7 +141,7 @@ func (r *rateLimiter) getRateLimit(resp *http.Response) (int64, error) {
return 0, nil
}

reset, _ := r.reset.Execute(ctx, tr, nil, r.log)
reset, _ := r.reset.Execute(ctx, tr, "", nil, r.log)
if reset == "" {
return 0, errors.New("reset value is empty")
}
Expand Down
2 changes: 1 addition & 1 deletion x-pack/filebeat/input/httpjson/request_chain_helper.go
Expand Up @@ -88,7 +88,7 @@ func evaluateResponse(expression *valueTpl, data []byte, log *logp.Logger) (bool
lastResponse: &response{body: dataMap},
}

val, err := expression.Execute(paramCtx, tr, nil, log)
val, err := expression.Execute(paramCtx, tr, "", nil, log)
if err != nil {
return false, fmt.Errorf("error while evaluating expression : %w", err)
}
Expand Down
2 changes: 1 addition & 1 deletion x-pack/filebeat/input/httpjson/transform_append.go
Expand Up @@ -118,7 +118,7 @@ func newAppend(cfg *conf.C, log *logp.Logger) (appendt, error) {
}

func (append *appendt) run(ctx *transformContext, tr transformable) (transformable, error) {
value, err := append.value.Execute(ctx, tr, append.defaultValue, append.log)
value, err := append.value.Execute(ctx, tr, append.targetInfo.Name, append.defaultValue, append.log)
if err != nil && append.failOnTemplateError {
return transformable{}, err
}
Expand Down
2 changes: 1 addition & 1 deletion x-pack/filebeat/input/httpjson/transform_set.go
Expand Up @@ -104,7 +104,7 @@ func newSet(cfg *conf.C, log *logp.Logger) (set, error) {
}

func (set *set) run(ctx *transformContext, tr transformable) (transformable, error) {
value, err := set.value.Execute(ctx, tr, set.defaultValue, set.log)
value, err := set.value.Execute(ctx, tr, set.targetInfo.Name, set.defaultValue, set.log)
if err != nil && set.failOnTemplateError {
return transformable{}, err
}
Expand Down
15 changes: 12 additions & 3 deletions x-pack/filebeat/input/httpjson/value_tpl.go
Expand Up @@ -91,11 +91,11 @@ func (t *valueTpl) Unpack(in string) error {
return nil
}

func (t *valueTpl) Execute(trCtx *transformContext, tr transformable, defaultVal *valueTpl, log *logp.Logger) (val string, err error) {
func (t *valueTpl) Execute(trCtx *transformContext, tr transformable, targetName string, defaultVal *valueTpl, log *logp.Logger) (val string, err error) {
fallback := func(err error) (string, error) {
if defaultVal != nil {
log.Debugf("template execution: falling back to default value")
return defaultVal.Execute(emptyTransformContext(), transformable{}, nil, log)
return defaultVal.Execute(emptyTransformContext(), transformable{}, targetName, nil, log)
}
return "", err
}
Expand All @@ -107,7 +107,7 @@ func (t *valueTpl) Execute(trCtx *transformContext, tr transformable, defaultVal
if err != nil {
log.Debugf("template execution failed: %v", err)
}
log.Debugf("template execution: evaluated template %q", val)
tryDebugTemplateValue(targetName, val, log)
}()

buf := new(bytes.Buffer)
Expand Down Expand Up @@ -135,6 +135,15 @@ func (t *valueTpl) Execute(trCtx *transformContext, tr transformable, defaultVal
return val, nil
}

func tryDebugTemplateValue(target, val string, log *logp.Logger) {
switch target {
case "Authorization", "Proxy-Authorization":
// ignore filtered headers
default:
log.Debugf("template execution: evaluated template %q", val)
}
}

const defaultTimeLayout = "RFC3339"

var predefinedLayouts = map[string]string{
Expand Down
2 changes: 1 addition & 1 deletion x-pack/filebeat/input/httpjson/value_tpl_test.go
Expand Up @@ -676,7 +676,7 @@ func TestValueTpl(t *testing.T) {
assert.NoError(t, defTpl.Unpack(tc.paramDefVal))
}

got, err := tpl.Execute(tc.paramCtx, tc.paramTr, defTpl, logp.NewLogger(""))
got, err := tpl.Execute(tc.paramCtx, tc.paramTr, "", defTpl, logp.NewLogger(""))
assert.Equal(t, tc.expectedVal, got)
if tc.expectedError == "" {
assert.NoError(t, err)
Expand Down

0 comments on commit e69c48f

Please sign in to comment.