Merge pull request #10597 from a-robinson/fluentd

Run fluentd on the master to collect the core master logs
This commit is contained in:
Zach Loafman 2015-07-04 21:12:47 -07:00
commit a2250d1caf
9 changed files with 103 additions and 31 deletions

View File

@ -1,7 +1,7 @@
.PHONY: build push .PHONY: build push
IMAGE = fluentd-elasticsearch IMAGE = fluentd-elasticsearch
TAG = 1.5 TAG = 1.6
build: build:
docker build -t gcr.io/google_containers/$(IMAGE):$(TAG) . docker build -t gcr.io/google_containers/$(IMAGE):$(TAG) .

View File

@ -78,19 +78,21 @@
tag kubernetes.${tag_suffix[3].split('-')[0..-2].join('-')} tag kubernetes.${tag_suffix[3].split('-')[0..-2].join('-')}
</match> </match>
<match kubernetes.**> <source>
type elasticsearch type tail
log_level info format none
include_tag_key true path /varlog/startupscript.log
host elasticsearch-logging.default pos_file /varlog/es-startupscript.log.pos
port 9200 tag startupscript
logstash_format true </source>
flush_interval 5s
# Never wait longer than 5 minutes between retries. <source>
max_retry_wait 300 type tail
# Disable the limit on the number of retries (retry forever). format none
disable_retry_limit path /varlog/docker.log
</match> pos_file /varlog/es-docker.log.pos
tag docker
</source>
<source> <source>
type tail type tail
@ -100,13 +102,41 @@
tag kubelet tag kubelet
</source> </source>
<match kubelet> <source>
type tail
format none
path /varlog/kube-apiserver.log
pos_file /varlog/es-kube-apiserver.log.pos
tag kube-apiserver
</source>
<source>
type tail
format none
path /varlog/kube-controller-manager.log
pos_file /varlog/es-kube-controller-manager.log.pos
tag kube-controller-manager
</source>
<source>
type tail
format none
path /varlog/kube-scheduler.log
pos_file /varlog/es-kube-scheduler.log.pos
tag kube-scheduler
</source>
<match **>
type elasticsearch type elasticsearch
log_level info log_level info
include_tag_key true include_tag_key true
host elasticsearch-logging.default host elasticsearch-logging
port 9200 port 9200
logstash_format true logstash_format true
# Set the chunk limit the same as for fluentd-gcp.
buffer_chunk_limit 512K
# Cap buffer memory usage to 512KB/chunk * 128 chunks = 65 MB
buffer_queue_limit 128
flush_interval 5s flush_interval 5s
# Never wait longer than 5 minutes between retries. # Never wait longer than 5 minutes between retries.
max_retry_wait 300 max_retry_wait 300

View File

@ -15,7 +15,7 @@
.PHONY: kbuild kpush .PHONY: kbuild kpush
TAG = 1.7 TAG = 1.8
# Rules for building the test image for deployment to Dockerhub with user kubernetes. # Rules for building the test image for deployment to Dockerhub with user kubernetes.

View File

@ -63,26 +63,61 @@
tag kubernetes.${tag_suffix[3].split('-')[0..-2].join('-')} tag kubernetes.${tag_suffix[3].split('-')[0..-2].join('-')}
</match> </match>
<match kubernetes.**> <source>
type google_cloud type tail
flush_interval 5s format none
# Never wait longer than 5 minutes between retries. path /varlog/startupscript.log
max_retry_wait 300 pos_file /varlog/gcp-startupscript.log.pos
# Disable the limit on the number of retries (retry forever). tag startupscript
disable_retry_limit </source>
</match>
<source>
type tail
format none
path /varlog/docker.log
pos_file /varlog/gcp-docker.log.pos
tag docker
</source>
<source> <source>
type tail type tail
format none format none
time_key time
path /varlog/kubelet.log path /varlog/kubelet.log
pos_file /varlog/gcp-kubelet.log.pos pos_file /varlog/gcp-kubelet.log.pos
tag kubelet tag kubelet
</source> </source>
<match kubelet> <source>
type tail
format none
path /varlog/kube-apiserver.log
pos_file /varlog/gcp-kube-apiserver.log.pos
tag kube-apiserver
</source>
<source>
type tail
format none
path /varlog/kube-controller-manager.log
pos_file /varlog/gcp-kube-controller-manager.log.pos
tag kube-controller-manager
</source>
<source>
type tail
format none
path /varlog/kube-scheduler.log
pos_file /varlog/gcp-kube-scheduler.log.pos
tag kube-scheduler
</source>
<match **>
type google_cloud type google_cloud
# Set the chunk limit conservatively to avoid exceeding the GCL limit
# of 2MB per write request.
buffer_chunk_limit 512K
# Cap buffer memory usage to 512KB/chunk * 128 chunks = 65 MB
buffer_queue_limit 128
flush_interval 5s flush_interval 5s
# Never wait longer than 5 minutes between retries. # Never wait longer than 5 minutes between retries.
max_retry_wait 300 max_retry_wait 300

View File

@ -123,7 +123,7 @@ function create-master-instance {
--image "${MASTER_IMAGE}" \ --image "${MASTER_IMAGE}" \
--tags "${MASTER_TAG}" \ --tags "${MASTER_TAG}" \
--network "${NETWORK}" \ --network "${NETWORK}" \
--scopes "storage-ro,compute-rw" \ --scopes "storage-ro,compute-rw,logging-write" \
--can-ip-forward \ --can-ip-forward \
--metadata-from-file \ --metadata-from-file \
"startup-script=${KUBE_ROOT}/cluster/gce/configure-vm.sh,kube-env=${KUBE_TEMP}/master-kube-env.yaml" \ "startup-script=${KUBE_ROOT}/cluster/gce/configure-vm.sh,kube-env=${KUBE_TEMP}/master-kube-env.yaml" \

View File

@ -105,7 +105,7 @@ function create-master-instance {
--image "${MASTER_IMAGE}" \ --image "${MASTER_IMAGE}" \
--tags "${MASTER_TAG}" \ --tags "${MASTER_TAG}" \
--network "${NETWORK}" \ --network "${NETWORK}" \
--scopes "storage-ro,compute-rw" \ --scopes "storage-ro,compute-rw,logging-write" \
--can-ip-forward \ --can-ip-forward \
--metadata-from-file \ --metadata-from-file \
"startup-script=${KUBE_ROOT}/cluster/gce/configure-vm.sh,kube-env=${KUBE_TEMP}/master-kube-env.yaml" \ "startup-script=${KUBE_ROOT}/cluster/gce/configure-vm.sh,kube-env=${KUBE_TEMP}/master-kube-env.yaml" \

View File

@ -5,7 +5,7 @@ metadata:
spec: spec:
containers: containers:
- name: fluentd-elasticsearch - name: fluentd-elasticsearch
image: gcr.io/google_containers/fluentd-elasticsearch:1.5 image: gcr.io/google_containers/fluentd-elasticsearch:1.6
resources: resources:
limits: limits:
cpu: 100m cpu: 100m

View File

@ -5,7 +5,7 @@ metadata:
spec: spec:
containers: containers:
- name: fluentd-cloud-logging - name: fluentd-cloud-logging
image: gcr.io/google_containers/fluentd-gcp:1.7 image: gcr.io/google_containers/fluentd-gcp:1.8
resources: resources:
limits: limits:
cpu: 100m cpu: 100m

View File

@ -38,6 +38,13 @@ base:
- kube-client-tools - kube-client-tools
- kube-master-addons - kube-master-addons
- kube-admission-controls - kube-admission-controls
{% if pillar.get('enable_node_logging', '').lower() == 'true' and pillar['logging_destination'] is defined %}
{% if pillar['logging_destination'] == 'elasticsearch' %}
- fluentd-es
{% elif pillar['logging_destination'] == 'gcp' %}
- fluentd-gcp
{% endif %}
{% endif %}
{% if grains['cloud'] is defined and grains['cloud'] != 'vagrant' %} {% if grains['cloud'] is defined and grains['cloud'] != 'vagrant' %}
- logrotate - logrotate
{% endif %} {% endif %}