使用EFK收集Kubernetes多集群日志
Collecting logs for multi kubernetes clusters with EFK
在有多个集群的情况下,一个集群就搭建一套日志收集分析服务实在太浪费。因此可以尝试只跑一套Elasticsearch和Kibana实例,然后让各个集群中的日志收集器向Elasticsearch发送日志,。
如图所示:
graph TD; Elastic---|analysis the data|Kibana; cluster1-->|send log|Elastic((Elastic server)); cluster2-->|send log|Elastic; cluster3-->|send log|Elastic; cluster(...)-->|send log|Elastic;
Elasticsearch和Kibana可以放在Kubernetes集群中也可以独立部署。这里为了方便就选择独立部署.
部署ElasticSearch和Kibana
Elastic自建了docker镜像仓库,因此到https://www.docker.elastic.co/
拉去最新的Elasticsearch和Kibana 的镜像.
然后编写docker-compose.yaml
文件.
关于详细配置,参考官方文档:
- Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/master/docker.html
- Kibana: https://www.elastic.co/guide/en/kibana/master/docker.html
version: '2' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.4.0 restart: unless-stopped ports: - "9200:9200" - "9300:9300" ulimits: memlock: soft: -1 hard: -1 nofile: soft: -1 hard: -1 environment: bootstrap.memory_lock: "true" discovery.type: "single-node" volumes: - /opt/es_data:/usr/share/elasticsearch/data kibana: image: docker.elastic.co/kibana/kibana:6.4.0 restart: unless-stopped ports: - "5601:5601" environment: server.host: "0.0.0.0" elasticsearch.url: "http://elasticsearch:9200" volumes: # 挂载kibana.yaml,可以在其中编写更详细的配置.这里图方便,用环境变量传进去. # - ./kibana.yml:/usr/share/kibana/config/kibana.yml:ro - /opt/kibana_data:/usr/share/kibana/data
然后启动docker-compose up -d
,查看日志 docker-compose logs -f
可以看到ES和Kibana输出的全部都是INFO
等级的日志,没有ERROR
,并且Kibana已经连接上ES。
curl -X GET 127.0.0.1:9200
{ "name" : "h9sEa61", "cluster_name" : "docker-cluster", "cluster_uuid" : "8MjE8hwVSq2Vvbe2azZggQ", "version" : { "number" : "6.4.0", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "595516e", "build_date" : "2018-08-17T23:18:47.308994Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
curl 127.0.0.1:5601
<script> var hashRoute = '/app/kibana'; var defaultRoute = '/app/kibana'; var hash = window.location.hash; if (hash.length) { window.location = hashRoute + hash; } else { window.location = defaultRoute; } </script>
可以看到ES和Kibana成功返回数据.
部署Fluent
将Fluent以DaemonSet的方式部署在Kuberntes集群中,让Fluent收集每个Node上的日志。
在Gihub上Fluent的官方库下载fluentd-daemonset-elasticsearch-rbac.yaml
只需对yaml文件修改一个地方,就是将env
中FLUENT_ELASTICSEARCH_HOST
的value改成ES的IP地址或网址即可。至于X-Pack的鉴权,ES默认是收费使用的,暂不用理会,或装第三方的HTTP Basic Auth
实现鉴权。
同时有的人会遇到一个错误,如果K8s集群是用root权限运行的,则fluentd在收集日志的时候会遇到权限问题。
因为fluentd镜像在构建的时候用的是fluent用户权限运行,所以会发生权限不足的情况。
解决方法就是可以去拉取fluent代码自行构建并在Dockfile中指定用户;或使用最简单的方法,在env
中指定fluent用户的UID为0,如下所示:
... env: - name: FLUENT_UID value: "0" ...
查看es日志,发现类似如下的日志
xxx update_mapping [fluentd]
说明fluent已经连接.
用浏览器打开Kibana,点击Discover
栏可以看到类似logstash-xxxx.xx.xx
的条目,说明Kibana成功获取到了日志。接下来就是根据自己的日志格式编写过滤语句了。
本文转自开源中国-使用EFK收集Kubernetes多集群日志
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
kubernetes+docker监控之简介
kubernetes+docker监控 Docker的监控原则:根据docker官方声明,一个容器不建议跑多个进程,所以不建议在容器中使用agent进行监控(zabbix等),agent应该运行在宿主机,通过cgroup或是docker api获取监控数据。 1、监控分类介绍: ①、自行开发: 通过调用docker的api接口,获取数据、处理、展示,这里不做介绍。 例如: 1)、爱奇艺参照cadvisor开发的dadvisor,数据写入graphite,等同于cadvisor+influxdb,爱奇艺的dadvisor并没有开源 ②、Docker——cadvisor: Google的 cAdvisor 是另一个知名的开源容器监控工具。 只需在宿主机上部署cAdvisor容器,用户就可通过Web界面或REST服务访问当前节点和容器的性能数据(CPU、内存、网络、磁盘、文件系统等等),非常详细。 默认cAdvisor是将数据缓存在内存中,数据展示能力有限;它也提供不同的持久化存储后端支持,可以将监控数据保存、汇总到Google BigQuery、InfluxDB或者Redis之上。 新的K...
- 下一篇
Kubernetes的离线部署(Ubuntu)方法试验
为了在内网上使用Kubernetes,有时候因为网络原因,需要离线进行部署。 裸机安装 我这里使用Ubuntu进行试验,需要解决几个问题: Ubuntu的离线安装。下载,安装时选择不联网可以正常完成,没有问题。 Ubuntu的包更新,应用系统包必须更新到较新版本,否则有的软件安装不上。 这个可以通过建立本地内网的Archive镜像来实现。 这个其实嘛,最好是全部抓源码自己编译,搞个分发版。不过难度和资源都比较大,还是吃现成的吧。 先镜像下来整个最新的软件包。参考: 创建Ubuntu安装包服务镜像的脚本,https://my.oschina.net/u/2306127/blog/1622218 建立Ubuntu apt的本地Mirror,https://my.oschina.net/u/2306127/blog/541895 使用容器技术搭建apt镜像站,https://my.oschina.net/u/2306127/blog/1626991 使用IPFS搭建Ubuntu apt镜像站点,https://my.oschina.net/u/2306127/blog/1626254 再把a...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6