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. 域名”A记录,MX记录,CNAME记录,TTL值,URL转发”解释
  2. leetcode409.Longest Palindrome
  3. Shell学习笔记 - 环境变量配置文件(转)
  4. 10个 IDEA 插件来解放你的双手
  5. python通过get方法获取key对应的值
  6. 使用iView构建Vue项目步骤
  7. 泰山游记:道阻且长,活着走出
  8. scatter python_Python数据可视化之scatter( )函数
  9. 数学分析教程(科大)——2.4笔记+习题
  10. 浅析“npm run dev”作用
  11. 英语学习——长难句01
  12. Altium Designer——原理图中元件属性description、designator和comment的意义
  13. 数字IC常考题(单选、多选、编程)
  14. Shiro的认证原理(Subject#login的背后故事)
  15. List去重 排序 多list 穿插筛选 (java 8)
  16. VMware Workstation 安装 CentOS-7 (1804) 教程
  17. PHP在线ps照片图片处理网站源码 photoshop网页版
  18. MIT博士99 行代码就能实现《冰雪奇缘》的特效引擎入门-用Taichi画太极
  19. linux定时重启服务
  20. Java基础——夯实基础

热门文章

  1. openstack研究意义_OpenStack如何推动CERN的研究
  2. 安卓大作业,Android Studio做的记事本
  3. alipay 证书 java_支付宝转账-提取根证书失败 AlipayRootCert Is Invalid
  4. Python 十六进制,十进制转换
  5. 前端笔记5 JQuery 语法及应用
  6. Linux技巧之磁盘格式化命令
  7. iOS点击空白处和和return键,回收键盘,隐藏键盘
  8. NSTextField 处于编辑状态时,点击return键 结束编辑,NSButton的return快捷方法不响应
  9. 2021计算机/软工保研夏令营
  10. windows上bug崩溃定位分析(Qt或者VS)