APP下载

基于ELK的日志分析系统

2017-04-08魏山林

电脑知识与技术 2017年5期
关键词:集中化配置文件开源

魏山林

摘要:日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

关键词:日志;系统运维

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)05-0069-02

1 Elk日志分析平台介绍

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog ,将所有服务器上的日志收集汇总。

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用 grep 、 awk 和 wc 等Linux 命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

2 开源实时日志分析ELK平台部署流程

1)安装Logstash 依赖包 JDK

Logstash 的运行依赖于Java 运行环境, Logstash 1.5 以上版本不低于 java 7 推荐使用最新版本的Java 。

下载RPM包安装jdk

#rpm -ivh jdk-8u91-linux-x64.rpm

设置 JDK 的环境变量,如下:

# tail -5 /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_91

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

在 Shell 提示符中执行java version 命令,显示如下结果,说明安装成功:

# java -version

java version "1.8.0_91"

2)安装 Logstash

下载并安装Logstash ,下载allplugins的版本,安装logstash 只需将它解压的对应目录即可,例如: /usr/local 下:

# tar zxf logstash-all-plugins-2.3.1.tar.gz -C /usr/local/

#cd /usr/local

#mv logstash-2.3.1 logstash

安裝完成后运行如下命令:

# /usr/local/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'

Settings: Default pipeline workers: 8

Pipeline main started

ysten

2016-05-20T01:53:36.857Z localhost ysten

使用-e参数在命令行中指定配置是很常用的方式,不过如果需要配置更多设置则需要很长的内容。这种情况,我们首先创建一个简单的配置文件,并且指定logstash使用这个配置文件。例如:在logstash 安装目录下创建一个“基本配置”测试文件 logstash-test.conf,文件内容如下:

# cat logstash-simple.conf

input { stdin { } }

output {

stdout { codec=> rubydebug }

}

Logstash 使用 input 和 output 定义收集日志时的输入和输出的相关配置,本例中 input 定义了一个叫"stdin"的 input , output 定义一个叫"stdout"的 output 。无论我们输入什么字符,Logstash 都会按照某种格式来返回我们输入的字符,其中 output 被定义为"stdout"并使用了 codec 参数来指定logstash 输出格式。

使用logstash的-f参数来读取配置文件,执行如下开始进行测试:

# echo "`date` hello World"

Fri May 20 09:58:13 CST 2016 hello World

# /usr/local/logstash/bin/logstash agent -f logstash-simple.conf

Settings: Default pipeline workers: 8

Pipeline main started

Fri May 20 09:58:13 CST 2016 hello World

{

"message" =>"Fri May 20 09:58:13 CST 2016 hello World",

"@version" =>"1",

"@timestamp" =>"2016-05-20T01:58:23.138Z",

"host" =>"localhost"

}

3)安装 Elasticsearch

下载 Elasticsearch 的最新版RPM包并安装。

#rpm -ivh elasticsearch-2.3.2.rpm

修改 Elasticsearch配置

#vim /etc/elasticsearch/elasticsearch.yml

启动elasticsearch服务

# /etc/init.d/elasticsearch start

确认 elasticsearch 的 9200 端口已监听,说明 elasticsearch 已成功运行

# netstat -anp |grep :9200

tcp 0 0 ::ffff:192.168.1.111:9200 :::* LISTEN 12440/java

访问http://192.168.1.111:9200/

Elasticsearch 安装完成。

4)安装 Kibana

下载 kibana 的最新版RPM包并安装。

# rpm -ivhkibana-4.5.0-1.x86_64.rpm

修改 kibana配置

# vim /opt/kibana/config/kibana.yml

启动kibana服务

# /etc/init.d/kibana start

使用 http://192.168.1.111:5601访问 Kibana,全绿就说明安装成功。

5)安装Redis

下载最新版Redis

# tar -zxvf redis-3.2.0.tar.gz -C /usr/local

# cd /usr/local

# mv redis-3.2.0 redis

安装redis

# cd /usr/local/redis

# make

# make install

使用redis自带的脚本配置redis

启动redis

# /usr/local/bin/redis-server

6)集成測试-搜集分析nginx日志

Logstash

创建input output配置文件

#cat sp.conf #采集传输nginx日志到redis

input {

file {

type =>"nginx_access"

path => ["/nginxlogs/tvlivemedia.log"]

}

}

output {

redis {

host =>“localhost"#若不是本地redis则改成redis服务器ip

data_type =>"list"

key =>"logstash:redis"

}

}

#cat index.conf#从redis发送日志到Elasticsearch

input {

redis {

host =>"localhost"

data_type =>"list"

key =>"logstash:redis"

type =>"redis-input"

}

}

output {

elasticsearch {

hosts =>"192.168.1.111"

index =>"access-%{+YYYY.MM.dd}"

}

}

启动采集进程

#/usr/local/logstash/bin/logstash agent -f sp.conf &

Settings: Default pipeline workers: 8

Pipeline main started

Elasticsearch

访问http://192.168.1.111:9200/_search?pretty=true来查看index-pattern

已经可以看到nginx日志进入了Elasticsearch并建立索引access-2016.05.19

Kibana

打开Kibana

http://192.168.1.111:5601/app/kibana#/settings

猜你喜欢

集中化配置文件开源
五毛钱能买多少头牛
忘记ESXi主机root密码怎么办
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
打印机设置
开源计算机辅助翻译工具研究
管理抉择要问的三个问题