https://github.com/fluent/fluent-plugin-sd-dns
DNS based service discovery plugin for Fluentd
https://github.com/fluent/fluent-plugin-sd-dns
Last synced: 8 months ago
JSON representation
DNS based service discovery plugin for Fluentd
- Host: GitHub
- URL: https://github.com/fluent/fluent-plugin-sd-dns
- Owner: fluent
- License: apache-2.0
- Created: 2020-09-16T00:47:28.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-02-12T04:27:36.000Z (about 1 year ago)
- Last Synced: 2025-06-08T16:08:24.052Z (9 months ago)
- Language: Ruby
- Size: 26.4 KB
- Stars: 3
- Watchers: 17
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog
- License: LICENSE
Awesome Lists containing this project
README
# DNS based service discovery plugin for [Fluentd](https://fluentd.org)
The `dns` service discovery plugin updates target services by DNS list.
This plugin uses `Socket.getaddrinfo` internally.
## Requirements
- Fluentd v1.8 or later
## Installation
Use RubyGems:
fluent-gem install fluent-plugin-sd-dns --no-document
## Configuration
Use `@type dns` in ``.
```
@type forward
@type dns
host host1.domain
port 24224
host host2.domain
port 24225
```
If `host1.domain` returns 3 addresses and `host2.domain` returns 2 addresses, `sd_dns` generates 5 address entries with given port.
e.g.
- `host1.domain` returns `1.2.3.4`, `1.2.3.5` and `1.2.3.6`
- `host2.domain` returns `2.2.3.4` and `2.2.3.5`
`sd_dns` generates `1.2.3.4:24224`, `1.2.3.5:24224`, `1.2.3.6:24224`, `2.2.3.4:24225` and `2.2.3.5:24225`.
### section
Specify host and additional information. Each entry has the following parameters:
- host
- port
- address_family
- shared_key
- username
- password
- weight
#### host
- Type: string
Hostname for service lookup. This is *required* parameter
#### port
- Type: integer
Port of service. This is *required* parameter
#### address_family
- Type: string (`ipv4` or `ipv6`)
- Default: nil (both)
Specify the desired address family. By default, `sd_dns` gets IPv4 and IPv6 addresses. If you want to get only IPv4 or IPv6, set it.
```
host host1.domain
port 24224
address_family ipv4
```
#### shared_key
- Type: string
- Default: nil
The shared_key per entry
#### username
- Type: string
- Default: empty string
The username for authentication.
#### password
- Type: string
- Default: empty string
The password for authentication
#### weight
- Type: Integer
- Default: 60
The load balancing weight
`shared_key`, `username`, `password` and `weight` are mainly for `out_forward`.
```
@type forward
@type dns
host host1.domain
port 24224
username user1
password pass1
shared_key key1
weight 80
host host2.domain
port 24225
username user2
password pass2
shared_key key2
weight 20
```
### interval
- Type: time
- Default: nil (no update)
Interval for updating the service list. By default, `sd_dns` keeps to use first service list. If you want to update the service list periodically, set `interval` parameter.
```
@type forward
@type dns
interval 60s
host host.domain
port 80
```
### ignore_dns_error
- Type: bool
- Default: false
Ignore DNS related error or not. This parameter is for multiple `` case. By default, `sd_dns` will stop the update process when raises an error in DNS resolution.
If you want to contine the update process, set `ignore_dns_error true`
```
@type forward
@type dns
interval 60
ignore_dns_error true
host host1.domain
port 24224
host host2.domain
port 24225
```
When error happens, `sd_dns` generates following warning message:
```
failed to get service list from host1.domain
```
## More information
- Copyright: 2020- Fluentd Authors
- License: Apache License, Version 2.0