mirror of
https://github.com/ClusterCockpit/cc-metric-collector.git
synced 2024-12-27 07:39:05 +01:00
Add basic authentication support
This commit is contained in:
parent
94d5822426
commit
a401e4cdd1
@ -24,6 +24,11 @@ type HttpSinkConfig struct {
|
|||||||
// JSON web tokens for authentication (Using the *Bearer* scheme)
|
// JSON web tokens for authentication (Using the *Bearer* scheme)
|
||||||
JWT string `json:"jwt,omitempty"`
|
JWT string `json:"jwt,omitempty"`
|
||||||
|
|
||||||
|
// Basic authentication
|
||||||
|
Username string `json:"username"`
|
||||||
|
Password string `json:"password"`
|
||||||
|
useBasicAuth bool
|
||||||
|
|
||||||
// time limit for requests made by the http client
|
// time limit for requests made by the http client
|
||||||
Timeout string `json:"timeout,omitempty"`
|
Timeout string `json:"timeout,omitempty"`
|
||||||
timeout time.Duration
|
timeout time.Duration
|
||||||
@ -198,6 +203,11 @@ func (s *HttpSink) Flush() error {
|
|||||||
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", s.config.JWT))
|
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", s.config.JWT))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set basic authentication
|
||||||
|
if s.config.useBasicAuth {
|
||||||
|
req.SetBasicAuth(s.config.Username, s.config.Password)
|
||||||
|
}
|
||||||
|
|
||||||
// Do request
|
// Do request
|
||||||
res, err = s.client.Do(req)
|
res, err = s.client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -254,6 +264,18 @@ func NewHttpSink(name string, config json.RawMessage) (Sink, error) {
|
|||||||
if len(s.config.URL) == 0 {
|
if len(s.config.URL) == 0 {
|
||||||
return nil, errors.New("`url` config option is required for HTTP sink")
|
return nil, errors.New("`url` config option is required for HTTP sink")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check basic authentication config
|
||||||
|
if len(s.config.Username) > 0 || len(s.config.Password) > 0 {
|
||||||
|
s.config.useBasicAuth = true
|
||||||
|
}
|
||||||
|
if s.config.useBasicAuth && len(s.config.Username) == 0 {
|
||||||
|
return nil, errors.New("basic authentication requires username")
|
||||||
|
}
|
||||||
|
if s.config.useBasicAuth && len(s.config.Password) == 0 {
|
||||||
|
return nil, errors.New("basic authentication requires password")
|
||||||
|
}
|
||||||
|
|
||||||
if len(s.config.IdleConnTimeout) > 0 {
|
if len(s.config.IdleConnTimeout) > 0 {
|
||||||
t, err := time.ParseDuration(s.config.IdleConnTimeout)
|
t, err := time.ParseDuration(s.config.IdleConnTimeout)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
@ -13,6 +13,8 @@ The `http` sink uses POST requests to a HTTP server to submit the metrics in the
|
|||||||
],
|
],
|
||||||
"url" : "https://my-monitoring.example.com:1234/api/write",
|
"url" : "https://my-monitoring.example.com:1234/api/write",
|
||||||
"jwt" : "blabla.blabla.blabla",
|
"jwt" : "blabla.blabla.blabla",
|
||||||
|
"username": "myUser",
|
||||||
|
"password": "myPW",
|
||||||
"timeout": "5s",
|
"timeout": "5s",
|
||||||
"idle_connection_timeout" : "5s",
|
"idle_connection_timeout" : "5s",
|
||||||
"flush_delay": "2s",
|
"flush_delay": "2s",
|
||||||
@ -24,6 +26,8 @@ The `http` sink uses POST requests to a HTTP server to submit the metrics in the
|
|||||||
- `meta_as_tags`: Move specific meta information to the tags in the output (optional)
|
- `meta_as_tags`: Move specific meta information to the tags in the output (optional)
|
||||||
- `url`: The full URL of the endpoint
|
- `url`: The full URL of the endpoint
|
||||||
- `jwt`: JSON web tokens for authentication (Using the *Bearer* scheme)
|
- `jwt`: JSON web tokens for authentication (Using the *Bearer* scheme)
|
||||||
|
- `username`: username for basic authentication
|
||||||
|
- `password`: password for basic authentication
|
||||||
- `timeout`: General timeout for the HTTP client (default '5s')
|
- `timeout`: General timeout for the HTTP client (default '5s')
|
||||||
- `max_retries`: Maximum number of retries to connect to the http server
|
- `max_retries`: Maximum number of retries to connect to the http server
|
||||||
- `idle_connection_timeout`: Timeout for idle connections (default '120s'). Should be larger than the measurement interval to keep the connection open
|
- `idle_connection_timeout`: Timeout for idle connections (default '120s'). Should be larger than the measurement interval to keep the connection open
|
||||||
|
Loading…
Reference in New Issue
Block a user