Fluentd并非是专用于日志文件收集的,而是一个通用的信息收集、整理、转发的流式数据处理工具,日志收集只是它十分典型的一个运用场景。重要的是,Fluentd的日志收集功能对容器支持十分完备,远远胜于Logstash等传统日志收集工具。一方面得益于Fluentd社区开发了几种专用于Docker日志文件的收集插件,这些插件能够在Fluentd收集完Docker日志以后自动为它加上容器相关的信息,比较推荐其中的fluent-plugin-docker-metadata-filter这一款插件,它提供的信息颇为齐全。Logstash对于这方面依然比较空缺,GitHub上唯一能够找到的一款社区插件也已经在一年前就停止开发。另一方面,当前Docker官方支持的日志驱动除了默认的使用本地目录,还可以直接发送到远程的日志存储或日志采集服务,而其中日志采集服务目前仅仅支持Splunk和Fluentd,同样没有Logstash等老一辈开源日志工具的踪影。

安装elasticsearch

安装JDK或者openJDK(这里以openJDK为例)

[root@elk elk]# yum install java-1.8.0-openjdk -y

安装elasticsearch

[root@elk elk]# wget -c https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.3/elasticsearch-2.3.3.rpm
[root@elk elk]# yum localinstall elasticsearch-2.3.3.rpm -y
.....Installing : elasticsearch-2.3.3-1.noarch                                                                                             1/1
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemdsudo systemctl daemon-reloadsudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executingsudo systemctl start elasticsearch.serviceVerifying  : elasticsearch-2.3.3-1.noarch                                                                                             1/1Installed:elasticsearch.noarch 0:2.3.3-1
[root@elk elk]# systemctl daemon-reload
[root@elk elk]# systemctl enable elasticsearch
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[root@elk elk]# systemctl start elasticsearch

修改防火墙,开放9200和9300端口

[root@elk elk]# firewall-cmd --permanent --add-port={9200/tcp,9300/tcp}
success
[root@elk elk]# firewall-cmd --reload
success
[root@elk elk]# firewall-cmd  --list-all
public (default, active)interfaces: eno16777984 eno33557248sources:services: dhcpv6-client sshports: 9200/tcp 9300/tcpmasquerade: noforward-ports:icmp-blocks:rich rules:

安装kibana

安装kibana的rpm包

[root@elk elk]# wget https://download.elastic.co/kibana/kibana/kibana-4.5.1-1.x86_64.rpm
[root@elk elk]# yum localinstall kibana-4.5.1-1.x86_64.rpm –y
[root@elk elk]# systemctl enable kibana
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /usr/lib/systemd/system/kibana.service.
[root@elk elk]# systemctl start kibana

修改防火墙,对外开放tcp/5601

[root@elk elk]# firewall-cmd --permanent --add-port=5601/tcp
Success
[root@elk elk]# firewall-cmd --reload
success
[root@elk elk]# firewall-cmd --list-all
public (default, active)interfaces: eno16777984 eno33557248sources:services: dhcpv6-client sshports: 9200/tcp 9300/tcp 5601/tcpmasquerade: noforward-ports:icmp-blocks:rich rules:

打开浏览器测试访问kibana的首页http://192.168.10.143:5601/

安装fluent

安装前步奏

查看当前最大打开文件数:

$ ulimit -n
1024

如果查看到的是1024,那么这个数值是不足的,则需要修改配置文件提高数值

vi /etc/security/limits.conf

设置值如下

root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536

修改network参数

vi /etc/sysctl.conf

设置值如下

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240    65535

然后重启系统

安装fluentd

执行如下命令(命令将会自动安装td-agent,td-agent即为fluentd)

$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

启动td-agent

$ /etc/init.d/td-agent start
Starting td-agent: [  OK  ]
$ /etc/init.d/td-agent status
td-agent (pid  21678) is running...

或者

$ systemctl start td-agent
$ systemctl status td-agent

简单demo测试HTTP logs

$ curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test

安装必要的插件

$ /usr/sbin/td-agent-gem install fluent-plugin-elasticsearch
$ /usr/sbin/td-agent-gem install fluent-plugin-typecast
$ /usr/sbin/td-agent-gem install fluent-plugin-secure-forward$ systemctl restart td-agent

配置td-agent,使docker生成的日志输出到elasticsearch

修改td-agent的配置

$ vi /etc/td-agent/td-agent.conf

修改内容为如下(这里我没有填写端口,默认使用9200端口)

<source>@type forwardport 24224bind 0.0.0.0
</source><match alpine**>@type elasticsearchlogstash_format trueflush_interval 10s # for testinghost 127.0.0.1
</match>

重启td-agent

$ systemctl restart td-agent

启动docker镜像,这里我使用alpine做测试

$ docker run --log-driver=fluentd --log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}" alpine:3.3 echo "helloWorld"

检查fluentd是否正常转发数据

检查td-agent日志,如果最后出现如下一行,则表明正常连接elasticsearch

2016-09-02 12:01:10 +0800 [info]: Connection opened to Elasticsearch cluster => {:host=>"127.0.0.1", :port=>9200, :scheme=>"http"}

检查elasticsearch存储,使用如下命令

$ curl localhost:9200/_search?pretty
{"took" : 472,"timed_out" : false,"_shards" : {"total" : 6,"successful" : 6,"failed" : 0},"hits" : {"total" : 3,"max_score" : 1.0,"hits" : [ {"_index" : ".kibana","_type" : "config","_id" : "4.5.4","_score" : 1.0,"_source" : {"buildNum" : 10000}}, {"_index" : "logstash-2016.09.02","_type" : "fluentd","_id" : "AVbpDs1fOf1yFl8aApNq","_score" : 1.0,"_source" : {"log" : "helloWorld","container_id" : "8c58cf5be57e9905215ea8f8cd677e48594a384c30a2842facb6563c3f32097c","container_name" : "/sleepy_elion","source" : "stdout","@timestamp" : "2016-09-02T12:00:59+08:00"}}, {"_index" : "logstash-2016.09.02","_type" : "fluentd","_id" : "AVbpDskPOf1yFl8aApNp","_score" : 1.0,"_source" : {"log" : "helloWorld","container_id" : "8c58cf5be57e9905215ea8f8cd677e48594a384c30a2842facb6563c3f32097c","container_name" : "/sleepy_elion","source" : "stdout","@timestamp" : "2016-09-02T12:00:59+08:00"}} ]}
}

查看到刚刚插入的数据,则表明数据已经写入到elasticsearch了

进入kibana创建索引

访问页面:http://192.168.10.143:5601/

点击“create”,即可看到如下设置

修改查询条件,则可查看到写入的数据

至此,EFK的安装与测试则已经完成

CentOS7 安装EFK(elasticsearch、fluent、kibana)进行Docker下日志搜集相关推荐

  1. Elasticsearch系列之:Centos7安装部署Elasticsearch详细步骤

    Elasticsearch系列之:Centos7安装部署Elasticsearch详细步骤 一.下载ElasticSearch安装包 二.创建ES数据存储目录 三.创建ES所属用户 四.配置用户的打开 ...

  2. 使用.NET Standard 2的Elasticsearch,Kibana和Docker

    目录 介绍 背景 设置基础结构 设置解决方案 控制台文件 packages.config appsettings.json Program.cs中 LogProducer文件 BasicLogProd ...

  3. EFK(Elasticsearch+Filebeat+Kibana)日志收集系统

    EFK简介 Elasticsearch 是一个实时的.分布式的可扩展的搜索引擎,允许进行全文.结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档. Beats 是数据采集的得 ...

  4. mac pro M1(ARM)安装:elasticsearch、kibana、logstash ELK(二)

    0. 引言 上一期介绍了mac pro M1(ARM)安装:VMWare Fusion及linux(centos7/ubantu),这一期我们来看如何在m1上如何安装elasticsearch,kib ...

  5. elasticsearch:7.9.3 docker 开启日志

    ElasticSearch 默认使用的console输出, 在docker logs 里面, 不记录日志文件的, logs 下面只有 gc.log 查看docker logs docker logs ...

  6. 【Linux】Centos7安装之后,双系统的情况下,怎么能在CentOS7下访问Windows的磁盘...

    想要在CentOS7下访问Windows的NTFS格式的磁盘,需要在Linux下下载ntfs-3g步骤1: 进入root用户下,使用yum命令下载ntfs-3g.[前提是已经添加了常用源:http:/ ...

  7. centos7安装在两块硬盘上_win10下利用Hyper-V安装centos7

    一直想安装一台linux用于学习,但是笔记本己经装了win10,好多软件都是在win10下安装好了,不想再换系统.于是就打起了hyper-v的主意. 安装hyper-v 首先需要win10支持hype ...

  8. centos7安装php5.2yum源操作_CentOS 7下Yum安装PHP7.2步骤

    1.安装源 安装php72w,是需要配置额外的yum源地址的,否则会报错不能找到相关软件包. php高版本的yum源地址,有两部分,其中一部分是epel-release,另外一部分来自webtatic ...

  9. centos7安装telnet后/etc/xinetd.d/telnet下没有telnet

    centos7的telnet配置文件是:/etc/xinetd.conf.centos7以前的是/etc/xinetd.d/telnet 因为装好telnet服务之后,默认是不开启服务的,下面我们需要 ...

最新文章

  1. mysql数据库实验报告jdbc_Jdbc连接数据库实验报告(2)
  2. tclsh 遍历列表_Tcl / Tk 大全
  3. 【Matlab 图像】灰度二值化处理
  4. Linux的内存理解
  5. 澳大利亚人一周发一次工资 经常月光不存钱
  6. publiccms按照指定显示的日期格式,格式化日期的写法
  7. Gstreamer插件编译安装的Makefile
  8. atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表
  9. android 盒子远程调试,家+TV机顶盒怎么开启ADB/USB远程调试模式,安装软件?
  10. java网上订餐系统开题报告_基于WEB的网上订餐系统-开题报告.doc
  11. 博客披着个人外衣的集体游戏
  12. 2022软件测试自学路线分享,附完整资料,自学也能拿高薪哟
  13. 国内cn域名过期失效日期计算方式
  14. 小布老师讲座笔记(五)
  15. node解决安装包后xx-v命令无效
  16. ccdc 剑桥数据库
  17. 阳光小小美女--我们都需要一个阳光积极的人生
  18. CAD三维设计绘图软件AutoCAD 2017 for Mac破解教程
  19. python图像灰度化_python实现图片二值化及灰度处理方式
  20. java 爬取京东商品详细信息 价格

热门文章

  1. linux下mysql5.7初始密码查看及忘记密码重置
  2. 如何提高效率 Aaron Swartz
  3. php 判断是否是域名,用PHP判断顶级域名
  4. python基础学习(十六)——超详细!pickle模块的使用(pickle.dump()和pickle.load())
  5. IOS 页面跳转问题:点击按钮页面不跳转
  6. 【CJY学习笔记】Redis容器的配置
  7. 一场夜雨的误会?^_^
  8. 【疑难解决】RTMP视频推流功能组件EasyRTMP-HIK DEMO版本运行报错0xc000007b排查分析
  9. 【中文】Joomla1.7扩展介绍之Ozio Gallery
  10. python视频教程推荐it教程网_2019年最新Python黑马头条推荐系统项目开发视频教程完整版...