日志分析(1)– EFK框架搭建

EFK指的是Elasticsearch、Fluentd、Kibana,主要用来收集、检索和可视化展示日志数据。
日志的收集工作由Fluentd完成;日志的索引及查询工作由Elasticsearch完成;日志的展示工作由Kibana完成。

1、Elasticsearch安装
目前的版本是2.3.3,官方地址为:https://www.elastic.co/products/elasticsearch
1)检查是否安装JDK
Elasticsearch是基于JDK的,如果没有安装JDK,请确保先安装JDK。 

# 检测JDK是否安装
java version "1.7.0_67"
# 出现以下信息表示已经安装
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

2)在线安装Elasticsearch

# 在线下载Elasticsearch压缩包
$ curl -O https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-2.3.3.tar.gz 
# 解压Elasticsearch
$ tar zxvf elasticsearch-2.3.3.tar.gz 
# 进入Elasticsearch目录
$ cd elasticsearch-2.3.3/

3)启动Elasticsearch
Elasticsearch默认是不能使用root用户进行启动的,如果用root用户进行启动,则提示如下错误:

Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
     at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93) 
     at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144) 
     at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285) 
     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)

需要创建新用户并赋予权限

#创建用户 
useradd efk 
#设置密码 
passwd efk 
#赋予权限 
chown -R efk.efk elasticsearch-2.3.3 
#切换用户 
su efk 

以后台进程的方式启动Elasticsearch

./elasticsearch -d

检查是否启动(Elasticsearch的默认端口号为9200)

#检查Elasticsearch是否启动 
curl -XGxt http://127.0.0.1:9200/ 
#出现以下信息表示启动成功
{
    "name": "Crimson Dynamo V", 
    "cluster_name": "elasticsearch", 
    "version": {
        "number": "2.3.3", 
        "build_hash": "218bdf10790eef486ff2c41a3df5cfa32dadcfde", 
        "build_timestamp": "2016-05-17T15:40:04Z", 
        "build_snapshot": false, 
        "lucene_version": "5.5.0"
    }, 
    "tagline": "You Know, for Search"
}

4)注意事项

如果将多台Fluented收集的信息放到一台Elasticsearch上,需要修改
%ELASTICSEARCH_HOME%/config/elasticsearch.yml文件

# Set the bind address to a specific IP (IPv4 or IPv6):

# Elasticsearch安装服务器的IP地址

network.host: 10.129.56.180

#

# Set a custom port for HTTP:

# Elasticsearch的端口号,默认为9200

http.port: 9200

2、Kibana安装

Kibana目前的版本是4.5.1,官方地址:https://www.elastic.co/products/kibana

1)安装

$ curl -O https://download.elastic.co/kibana/kibana/kibana-4.5.1-darwin-x64.tar.gz

$ tar zxvf kibana-4.1.1-darwin-x64.tar.gz -C kibana

$ cd kibana/

2)启动Kibana

Kibana目前官方没有提供以后台的方式运行,需要自己编写脚本实现,具体内容参见附件,可参考https://github.com/rlwmmw/kibana-4.2-init

#下载Kibana启动脚本

cd /tmp

wget https://raw.githubusercontent.com/rlwmmw/kibana-4.2-init/master/etc/init.d/kibana

sudo chmod +x kibana && sudo mv kibana /etc/init.d

#启动Kibana

service kibana {start|stop|restart|status|reload}

通过访问http://localhost:5601来查看Kibana是否安装成功

3)修改Kibana端口号

Kibana默认端口号为5601,可以通过修改%KIBANA_HOME%/config/kibana.yml来指定端口号,如80

# Kibana is served by a back end server. This controls which port to use.

server.port: 80

3、Fluentd安装

Fluentd目前的稳定版本是td-agent V2,官方地址:http://docs.fluentd.org/articles/quickstart

1)安装Fluentd稳定版

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

2)启动Fluentd

/etc/init.d/td-agent start

4、安装Fluentd、Elasticsearch插件
fluentd-plugin-elasticsearch的官方地址为https://github.com/uken/fluent-plugin-elasticsearch
1)安装

# td-agent v2(V2版本,使用这个)
sudo /usr/sbin/td-agent-gem install fluent-plugin-elasticsearch

# td-agent v1
sudo /usr/lib/fluent/ruby/bin/fluent-gem install fluent-plugin-elasticsearch

2)注意事项

如果在安装的过程中如果出现如下错误

ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://api.rubygems.org/quick/Marshal.4.8/fluent-plugin-elasticsearch-1.5.0.gemspec.rz)

则需要修改RubyGems镜像。(原因是国内网络原因,导致rubygems.org存放在Amazon S3上面的资源文件间歇性连接失败)。具体参考:https://ruby.taobao.org/

# 进入到gem目录下

cd /opt/td-agent/embedded/bin

# 查看镜像目录

./gem sources -l

# 默认显示信息如下

*** CURRENT SOURCES ***

 

https://rubygems.org/

# 修改镜像目录

./gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/

# # 查看镜像目录

./gem sources -l

# 显示信息如下,请确保只有 ruby.taobao.org

*** CURRENT SOURCES ***

 

https://ruby.taobao.org

至此,EFK框架搭建完成(此框架基于CentOS系统)

1 评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注