feat(outputs.elasticsearch): Allow settings extra headers for elasticsearch output (#15477)
This commit is contained in:
parent
94a5ab60b8
commit
fe092f6d08
|
|
@ -323,6 +323,11 @@ to use them.
|
||||||
## no pipeline is used for the metric.
|
## no pipeline is used for the metric.
|
||||||
# use_pipeline = "{{es_pipeline}}"
|
# use_pipeline = "{{es_pipeline}}"
|
||||||
# default_pipeline = "my_pipeline"
|
# default_pipeline = "my_pipeline"
|
||||||
|
#
|
||||||
|
# Custom HTTP headers
|
||||||
|
# To pass custom HTTP headers please define it in a given below section
|
||||||
|
# [outputs.elasticsearch.headers]
|
||||||
|
# "X-Custom-Header" = "custom-value"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Permissions
|
### Permissions
|
||||||
|
|
@ -389,6 +394,8 @@ the `default_tag_value` will be used instead.
|
||||||
instead.
|
instead.
|
||||||
* `default_pipeline`: If dynamic pipeline names the tag does not exist in a
|
* `default_pipeline`: If dynamic pipeline names the tag does not exist in a
|
||||||
particular metric, this value will be used instead.
|
particular metric, this value will be used instead.
|
||||||
|
* `headers`: Custom HTTP headers, which are passed to Elasticsearch header
|
||||||
|
before each request.
|
||||||
|
|
||||||
## Known issues
|
## Known issues
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,26 +28,27 @@ import (
|
||||||
var sampleConfig string
|
var sampleConfig string
|
||||||
|
|
||||||
type Elasticsearch struct {
|
type Elasticsearch struct {
|
||||||
AuthBearerToken config.Secret `toml:"auth_bearer_token"`
|
AuthBearerToken config.Secret `toml:"auth_bearer_token"`
|
||||||
DefaultPipeline string `toml:"default_pipeline"`
|
DefaultPipeline string `toml:"default_pipeline"`
|
||||||
DefaultTagValue string `toml:"default_tag_value"`
|
DefaultTagValue string `toml:"default_tag_value"`
|
||||||
EnableGzip bool `toml:"enable_gzip"`
|
EnableGzip bool `toml:"enable_gzip"`
|
||||||
EnableSniffer bool `toml:"enable_sniffer"`
|
EnableSniffer bool `toml:"enable_sniffer"`
|
||||||
FloatHandling string `toml:"float_handling"`
|
FloatHandling string `toml:"float_handling"`
|
||||||
FloatReplacement float64 `toml:"float_replacement_value"`
|
FloatReplacement float64 `toml:"float_replacement_value"`
|
||||||
ForceDocumentID bool `toml:"force_document_id"`
|
ForceDocumentID bool `toml:"force_document_id"`
|
||||||
HealthCheckInterval config.Duration `toml:"health_check_interval"`
|
HealthCheckInterval config.Duration `toml:"health_check_interval"`
|
||||||
HealthCheckTimeout config.Duration `toml:"health_check_timeout"`
|
HealthCheckTimeout config.Duration `toml:"health_check_timeout"`
|
||||||
IndexName string `toml:"index_name"`
|
IndexName string `toml:"index_name"`
|
||||||
ManageTemplate bool `toml:"manage_template"`
|
ManageTemplate bool `toml:"manage_template"`
|
||||||
OverwriteTemplate bool `toml:"overwrite_template"`
|
OverwriteTemplate bool `toml:"overwrite_template"`
|
||||||
Username config.Secret `toml:"username"`
|
Username config.Secret `toml:"username"`
|
||||||
Password config.Secret `toml:"password"`
|
Password config.Secret `toml:"password"`
|
||||||
TemplateName string `toml:"template_name"`
|
TemplateName string `toml:"template_name"`
|
||||||
Timeout config.Duration `toml:"timeout"`
|
Timeout config.Duration `toml:"timeout"`
|
||||||
URLs []string `toml:"urls"`
|
URLs []string `toml:"urls"`
|
||||||
UsePipeline string `toml:"use_pipeline"`
|
UsePipeline string `toml:"use_pipeline"`
|
||||||
Log telegraf.Logger `toml:"-"`
|
Headers map[string]string `toml:"headers"`
|
||||||
|
Log telegraf.Logger `toml:"-"`
|
||||||
majorReleaseNumber int
|
majorReleaseNumber int
|
||||||
pipelineName string
|
pipelineName string
|
||||||
pipelineTagKeys []string
|
pipelineTagKeys []string
|
||||||
|
|
@ -183,6 +184,16 @@ func (a *Elasticsearch) Connect() error {
|
||||||
elastic.SetGzip(a.EnableGzip),
|
elastic.SetGzip(a.EnableGzip),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if len(a.Headers) > 0 {
|
||||||
|
headers := http.Header{}
|
||||||
|
for k, vals := range a.Headers {
|
||||||
|
for _, v := range strings.Split(vals, ",") {
|
||||||
|
headers.Add(k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
clientOptions = append(clientOptions, elastic.SetHeaders(headers))
|
||||||
|
}
|
||||||
|
|
||||||
authOptions, err := a.getAuthOptions()
|
authOptions, err := a.getAuthOptions()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
||||||
|
|
@ -77,3 +77,8 @@
|
||||||
## no pipeline is used for the metric.
|
## no pipeline is used for the metric.
|
||||||
# use_pipeline = "{{es_pipeline}}"
|
# use_pipeline = "{{es_pipeline}}"
|
||||||
# default_pipeline = "my_pipeline"
|
# default_pipeline = "my_pipeline"
|
||||||
|
#
|
||||||
|
# Custom HTTP headers
|
||||||
|
# To pass custom HTTP headers please define it in a given below section
|
||||||
|
# [outputs.elasticsearch.headers]
|
||||||
|
# "X-Custom-Header" = "custom-value"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue