CentOS7 上部署Elasticsearch,Fluentd and Kibana
来源:互联网 发布:js抛物线添加到购物车 编辑:程序博客网 时间:2024/06/05 10:23
Elasticsearch,Fluentd和Kibana(EFK)组合允许收集,索引,搜索和可视化日志数据(visualize log data)。是目前比较主流的日志中心化,可视化并提供索引,搜索,分析的开软软件组合。免费使用,只有当data volumes增加时可能需要一个收费license。
Elasticsearch是一个数据搜索引擎和分布式NoSQL数据库的组合,提过日志的存储和搜索功能。Fluentd是一个消息采集,转化,转发工具,目的是提供中心化的日志服务。Kibana是一个带有强大数据整理,分析的web前端,将数据以可视化的方式呈现给用户。
另一个流行的组合为Elasticsearch,Logstash和Kibana(ELK)。两种组合架构完全相同,Logstash和Fluentd的功能也大同小异,目标都是解决日志中心化的问题。但是两者的设计出发点稍有不同,造成在解决问题的优先级,重心上可能稍有不同。Logstash强调灵活性和互操作性,而Fluentd更倾向于简单和鲁棒性(Logstash emphasizes flexibility and interoperability whereas Fluentd prioritizes simplicity and robustness.)。两者的具体差异,以及Elasticsearch和Kibana改天另写一篇具体分析。本文主要介绍如何在CentOS7上搭建EFK。
数据流入下图所示:
1. 安装和配置Elasticsearch
1.1 安装java
Elasticsearch需要java支持,所以需要首先安装java。
sudo yum updatesudo yum install java
验证是否成功安装
[xingwangc@docker-reg ~]$ java -versionopenjdk version "1.8.0_65"OpenJDK Runtime Environment (build 1.8.0_65-b17)OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
1.2 安装Elasticsearch
wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.1.1/elasticsearch-2.1.1.rpmrpm -ivh elasticsearch-2.1.1.rpm
1.3 Securing Elasticsearch
从版本1.2开始,Elasticsearch默认使能了动态脚本能力,由于我们使用Kibana Dashboard供外网访问,所以在/etc/elasticsearch/elasticsearch.yml中增加如下行禁能动态脚本。
script.disable_dynamic: true
1.4 启动Elasticsearch
sudo service elasticsearch start
1.5 设置iptables规则
Elasticsearch默认监听9200端口,如果想要外部ip也可以访问到Elasticsearch,则需要设置iptables规则开发9200端口。
sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 9200:9400 -j ACCEPT
1.6 设置开机自动启动Elasticsearch
sudo systemctl enable elasticsearch
2. 安装和配置Kibana
2.1 安装Kibana
curl -L https://download.elastic.co/kibana/kibana/kabana-4.3.1-linux-x64.tar.gz | tar xzf -sudo cp -r kibana-4.3.1 /usr/share/
2.2 设置iptables规则
Kibana默认监听5601端口,如果想要外部ip直接访问Kibana,则需要开放5601端口。
sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 5601 -j ACCEPT
由于我使用的nginx作为代理服务器,所以可以此处可以不用开放5601端口。
2.3 配置Kibana
有两处需要配置,一是需要Kibana读取Elasticsearch的数据,所以需要配置告诉Kibana Elasticsearch的链接地址。二是我使用了nginx作为代理服务器,所以只希望本地的端口转发到达,或在本机直接访问,而不希望其他机器直接访问Kibana,所以将配置文件中“server.host”项设置为localhost。本例中,配置文件为/usr/share/kibana-4.3.1/config/kibana.yml。实际安装中,根据拷贝的的路径,版本区别路径可能有不同。修改后的文件截图为:
2.4 启动Kibana
$ sudo nohup /usr/share/kibana-4.3.1/bin/kibana &
3. 安装和配置Nginx
Nginx作为代理服务器允许外网访问Dashboard,并提供登陆验证,以及SSL验证机制。本实例并未详细说明登陆验证,以及SSL验证机制,具体方法可以参考上一篇《CentOS7上搭建私有的Docker Registry》中相应部分。
3.1 安装Nginx
首先在/etc/yum.repos.d/目录下创建Nginx源文件,并复制粘贴以下内容:
[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=0enabled=1
安装Nginx
sudo yum updatesudo yum install nginx
3.2 配置Nginx为Kibana提供代理
检查nginx配置文件/etc/nginx/nginx.conf,是否include /etc/nginx/conf.d/目录下的所有配置文件。
include /etc/nginx/conf.d/*.conf;}
在/etc/nginx/conf.d/目录下创建kibana.conf文件,或者修改default.conf文件为如下内容:
server { listen 80; server_name example.com; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }}
重启nginx service
$ sudo service nginx restart
3.3 Disable selinux
保证Nginx监听的80端口能成功代理到Kibana监听的5601端口,需要disable selinux。
/etc/sysconfig/selinux
否则需要执行下面命令保证Kibana可以正常被访问到:
sudo setsebool -P httpd_can_network_connect 1
3.4 开启80端口
<span style="font-family:Helvetica Neue;">sudo iptables -A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT</span>
为确保外部IP能够访问到Nginx,必须设定iptables规则,对80端口上的traffic放行。到此即已经可以通过外网IP通过Nginx代理访问到Kibana了。
4. 安装和配置fluentd
4.1 安装fluentd,使用td-agent版本
<span style="font-size:14px;">curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh</span>
如果安装没反应,可能是在执行rpm --import key的时候造成的无法import key,直接下载“install-redhat-td-agent2.sh”到本地,并在脚本中找到key的链接,有浏览器打开key,在local创建key文件,并复制粘贴key的内容,修改脚本文件,直接从local import key
4.2 安装插件
(1)out_elasticsearch:为fluentd序列号数据提供给Elasticsearch
(2)outrecordreformer:将数据处理成更有用的格式
sudo apt-get install make libcurlsudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-map(没有这一步,后面两个好像无法安装,报“ Could not find a valid gem”)sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearchsudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-record-reformer
4.3 配置fluentd监听syslog消息并转发Elasticsearch
<source> type syslog port 5140 tag system</source><match system.*.*> type record_reformer tag elasticsearch facility ${tag_parts[1]} severity ${tag_parts[2]}</match><match elasticsearch> type copy <store> type stdout </store> <store> type elasticsearch logstash_format true flush_interval 5s #debug </store></match>
4.4 启动fluentd
sudo service td-agent start
5. 转发rsyslog到fluentd
*.* @127.0.0.1:5140
sudo service rsyslog restart
参考链接:
Digitalocean:How To Install Elasticsearch, Logstash, and Kibana(ELK Stack) on CentOS 7)
Digitalocean:Elasticsearch, Fluentd, and Kibana: Open Source Log Search and Visualization
- CentOS7 上部署Elasticsearch,Fluentd and Kibana
- kubernetes上部署Fluentd+Elasticsearch+kibana日志收集系统
- 部署 Kubernetes 集群日志插件 Fluentd、Elasticsearch、Kibana
- Fluentd+ElasticSearch+Kibana 搭建日誌類文件分析器 安裝篇
- fluentd结合kibana、elasticsearch实时搜索分析hadoop集群日志
- Fluentd+ElasticSearch+Kibana 搭建日誌類文件分析器 配置篇
- fluentd结合kibana、elasticsearch实时搜索分析hadoop集群日志
- fluentd结合kibana、elasticsearch实时搜索分析hadoop集群日志
- Elasticsearch+Fluentd+Kibana的日志收集分析系统
- fluentd结合kibana、elasticsearch实时搜索分析hadoop集群日志
- 基于Elasticsearch+Fluentd+Kibana的日志收集分析系统搭建与应用
- Elasticsearch、Fluentd与Kibana:开源的日志搜索与可视化方案
- 微服务架构日志集中化 安装 EFK (Fluentd ElasticSearch Kibana) 采集nginx日志
- ELKF(Elasticsearch+Logstash+ Kibana+ Filebeat) 部署
- Elasticsearch、logstash、Kibana的部署文档
- Centos6.5 单机部署配置elasticSearch+kibana
- Elasticsearch、Logstash和Kibana简介与部署
- centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解
- 《Spring实战》学习笔记-第二章:装配Bean
- 155Min Stack
- error: symbol(s) not found for architecture x86_64
- nginx 1.9 支持http2 协议
- MySQL5.6.12 Waiting for commit lock导致从库hang住的问题剖析
- CentOS7 上部署Elasticsearch,Fluentd and Kibana
- 提高篇 第9节-函数的嵌套使用
- 数据库表空间
- 实例10:带选择头像的用户注册页面
- 前端开发工具sumlime
- 1010. 一元多项式求导 (25)
- 学习写Android.mk
- Qt设计界面的初学笔记
- weblogic开发模式与生产模式