收集kubernetes控制台日志及元数据(fluent-bit+es+kibana搭建)
Posted 容器时代
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了收集kubernetes控制台日志及元数据(fluent-bit+es+kibana搭建)相关的知识,希望对你有一定的参考价值。
Fluent-bit是一款开源的日志转发器,有着小而精巧,功能强大的特点。支持多目的地发送;支持获取k8s的元数据(例如:namespace,hostip,podname等);支持messagepack,json等多种序列化方式;友好支持数据二次加工等系列优点。是一款日志收集利器,你值得拥有。
基本信息
> kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.3", GitCommit:"d2835416544f298c919e2ead3be3d0864b52323b", GitTreeState:"clean", BuildDate:"2018-02-07T12:22:21Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.3", GitCommit:"d2835416544f298c919e2ead3be3d0864b52323b", GitTreeState:"clean", BuildDate:"2018-02-07T11:55:20Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
> 下载相关代码(主要是yaml文件)
《elasticsearch、kibana》 https://github.com/kubernetes/kubernetes.git
《fluent-bit》 https://github.com/fluent/fluent-bit-kubernetes-logging.git
部署elasticsearch
yaml目录:cluster/addons/fluentd-elasticsearch
> 部署statefulset
kubectl create -f es-statefulset.yaml
注意:我部署的时候镜像版本是:k8s.gcr.io/elasticsearch:v6.2.4
初始化镜像: alpine:3.6
> 部署configmap
kubectl create -f fluentd-es-configmap.yaml
> 部署Service
kubectl create -f es-service.yaml
> 查看service的信息并记下来,下面要用
[root@cicd-node01 es]# kubectl get svc -o wide -n logging
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
elasticsearch-logging NodePort 172.29.233.30 <none> 9200:30565/TCP 9h k8s-app=elasticsearch-logging
部署fluent-bit
yaml文件目录:fluent/fluent-bit-kubernetes-logging
> 创建相关资源
kubectl create -f fluent-bit-role-binding.yaml
kubectl create -f fluent-bit-service-account.yaml
kubectl create -f fluent-bit-role.yaml
> 创建DaemonSet
进入output/elasticsearch目录
kubectl create -f cluent-bit-configmap.yaml
> 修改fluent-bit-ds.yaml文件的这部分配置
- name: FLUENT_ELASTICSEARCH_HOST
value: "10.151.33.87"
- name: FLUENT_ELASTICSEARCH_PORT
value: "30565"
这个地方修改elasticsearch的Host和Port的值(就是上面提到的)
kubectl create -f fluent-bit-ds.yaml
注意:我在使用的时候镜像版本是:fluent/fluent-bit:0.13.5
部署Kibana
yaml目录:kubernetes/tree/master/cluster/addons/fluentd-elasticsearch
> 修改kibana-deployment.yaml的配置信息
env:
- name: ELASTICSEARCH_URL
value: http://10.151.33.87:30565
# - name: SERVER_BASEPATH
#value: /api/v1/namespaces/logging/services/kibana-logging/proxy
ELASTICSEARCH_URL是elasticsearch的地址.
> 创建deployment
kubectl create -f kibana-deployment.yaml
> 创建kibana-service
kubectl create -f kibana-service.yaml
我在创建的时候镜像版本是:docker.elastic.co/kibana/kibana-oss:6.2.4
> 获取访问信息
[root@cicd-node01 es]# kubectl get svc -n logging
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kibana-logging NodePort 172.29.16.48 <none> 5601:31295/TCP 7h
然后以nodeIP+nodePort就能访问。
我们可以看到一些元数据:pod_name,name_space,hostip等,这有利于我们对问题定位、分析,提高效率。
fluent-bit相关的Tips
fluent-bit采集的数据可以输出到http接口,但是默认使用了message的格式,不方便阅读和二次开发,我们可以修改output的格式,文件:fluent-bit-configmap.yaml,修改方式如下:
output-http.conf: |
[OUTPUT]
Name http
Match *
Host ${FLUENT_ELASTICSEARCH_HOST}
Port ${FLUENT_ELASTICSEARCH_PORT}
URI /
Format json
上述修改完毕后,还需要注册这个conf,如下:
data:
# Configuration files: server, input, filters and output
# ======================================================
fluent-bit.conf: |
[SERVICE]
Flush 1
Log_Level info
Daemon off
Parsers_File parsers.conf
HTTP_Server On
HTTP_Listen 0.0.0.0
HTTP_Port 2020
@INCLUDE input-kubernetes.conf
@INCLUDE filter-kubernetes.conf
#@INCLUDE output-elasticsearch.conf
@INCLUDE output-http.conf
结束
安装顺序,按照这篇文章来可以避免一些额外的问题,安装完成后,你可以体验了,同时,因为我们知道数据转发的接口,所以,我们可以二次加工数据,进一步提高定位问题的效率,相信你会喜欢的~~~
以上是关于收集kubernetes控制台日志及元数据(fluent-bit+es+kibana搭建)的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes业务log-pilot日志收集实战配置-elkf