Skip to content

Commit a05d082

Browse files
committed
Add new Logging driver "fluentd"
Signed-off-by: TAGOMORI Satoshi <[email protected]>
1 parent b7950b7 commit a05d082

56 files changed

Lines changed: 42959 additions & 3 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

daemon/container.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/Sirupsen/logrus"
2222
"github.com/docker/docker/daemon/execdriver"
2323
"github.com/docker/docker/daemon/logger"
24+
"github.com/docker/docker/daemon/logger/fluentd"
2425
"github.com/docker/docker/daemon/logger/jsonfilelog"
2526
"github.com/docker/docker/daemon/logger/syslog"
2627
"github.com/docker/docker/daemon/network"
@@ -1419,6 +1420,12 @@ func (container *Container) startLogging() error {
14191420
return err
14201421
}
14211422
l = dl
1423+
case "fluentd":
1424+
dl, err := fluentd.New(container.ID[:12])
1425+
if err != nil {
1426+
return err
1427+
}
1428+
l = dl
14221429
case "none":
14231430
return nil
14241431
default:

daemon/logger/fluentd/fluentd.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package fluentd
2+
3+
import (
4+
"github.com/docker/docker/daemon/logger"
5+
"github.com/t-k/fluent-logger-golang/fluent"
6+
)
7+
8+
type Fluentd struct {
9+
containerid string
10+
writer *fluent.Fluent
11+
}
12+
13+
func New(tag string) (logger.Logger, error) {
14+
log, err := fluent.New(fluent.Config{FluentPort: 24224, FluentHost: "localhost"})
15+
if err != nil {
16+
return nil, err
17+
}
18+
return &Fluentd{
19+
containerid: tag,
20+
writer: log,
21+
}, nil
22+
}
23+
24+
func (f *Fluentd) Log(msg *logger.Message) error {
25+
tag := "docker." + f.containerid + "." + msg.Source
26+
var data = map[string]string{
27+
"source": msg.Source,
28+
"log": string(msg.Line),
29+
}
30+
f.writer.PostWithTime(tag, msg.Timestamp, data)
31+
return nil
32+
}
33+
34+
func (f *Fluentd) Close() error {
35+
return f.writer.Close()
36+
}
37+
38+
func (f *Fluentd) Name() string {
39+
return "Fluentd"
40+
}

docs/man/docker-create.1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ two memory nodes.
129129
**--lxc-conf**=[]
130130
(lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"
131131

132-
**--log-driver**="|*json-file*|*syslog*|*none*"
132+
**--log-driver**="|*json-file*|*syslog*|*fluentd*|*none*"
133133
Logging driver for container. Default is defined by daemon `--log-driver` flag.
134134
**Warning**: `docker logs` command works only for `json-file` logging driver.
135135

docs/man/docker-run.1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ which interface and port to use.
230230
**--lxc-conf**=[]
231231
(lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"
232232

233-
**--log-driver**="|*json-file*|*syslog*|*none*"
233+
**--log-driver**="|*json-file*|*syslog*|*fluentd*|*none*"
234234
Logging driver for container. Default is defined by daemon `--log-driver` flag.
235235
**Warning**: `docker logs` command works only for `json-file` logging driver.
236236

docs/man/docker.1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ unix://[/path/to/socket] to use.
8989
**--label**="[]"
9090
Set key=value labels to the daemon (displayed in `docker info`)
9191

92-
**--log-driver**="*json-file*|*syslog*|*none*"
92+
**--log-driver**="*json-file*|*syslog*|*fluentd*|*none*"
9393
Default driver for container logs. Default is `json-file`.
9494
**Warning**: `docker logs` command works only for `json-file` logging driver.
9595

docs/sources/reference/run.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -778,6 +778,11 @@ command is available only for this logging driver
778778
Syslog logging driver for Docker. Writes log messages to syslog. `docker logs`
779779
command is not available for this logging driver
780780

781+
#### Logging driver: fluentd
782+
783+
Fluentd logging driver for Docker. Writes log messages to fluentd (forward input). `docker logs`
784+
command is not available for this logging driver
785+
781786
## Overriding Dockerfile image defaults
782787

783788
When a developer builds an image from a [*Dockerfile*](/reference/builder)

hack/vendor.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ clone git github.com/Sirupsen/logrus v0.7.2
5757

5858
clone git github.com/go-fsnotify/fsnotify v1.0.4
5959

60+
clone git github.com/ugorji/go 141348dbea35
61+
62+
clone git github.com/t-k/fluent-logger-golang v0.5.1
63+
6064
# get Go tip's archive/tar, for xattr support and improved performance
6165
# TODO after Go 1.4 drops, bump our minimum supported version and drop this vendored dep
6266
if [ "$1" = '--go' ]; then
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.DS_Store
2+
*~
3+
.project
4+
.settings
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
language: go
2+
go:
3+
- 1.0
4+
- 1.1
5+
- 1.2
6+
- 1.3
7+
- 1.4
8+
- tip
9+
install:
10+
- go get github.com/bmizerany/assert
11+
- go get github.com/ugorji/go/codec
12+
matrix:
13+
allow_failures:
14+
- go: 1.0
15+
- go: 1.1
16+
- go: tip
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# CHANGELOG
2+
3+
## 0.5.1
4+
* Lock when writing pending buffers (Thanks @eagletmt)
5+
6+
## 0.5.0
7+
* Add TagPrefix in Config (Thanks @hotchpotch)
8+
9+
## 0.4.4
10+
* Fixes runtime error of close function.(Thanks @y-matsuwitter)
11+
12+
## 0.4.3
13+
* Added method PostWithTime(Thanks [@choplin])
14+
15+
## 0.4.2
16+
* Use sync.Mutex
17+
* Fix BufferLimit comparison
18+
* Export toMsgpack function to utils.go
19+
20+
## 0.4.1
21+
* Remove unused fmt.Println
22+
23+
## 0.4.0
24+
* Update msgpack library ("github.com/ugorji/go-msgpack" -> "github.com/ugorji/go/codec")

0 commit comments

Comments
 (0)