设为首页 收藏本站
查看: 2428|回复: 0

[经验分享] ELK日志分析平台的搭建

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-22 10:25:21 | 显示全部楼层 |阅读模式
最近公司领导要求我搭建一个日志收集分析平台,用于给开发同事查看访问和业务日志,花了一段时间终于把日志平台搭建出来了,之前上网找了很多开源软件,发现还是ELK简单点,原来是想用Hadoop的,测试了一段时间,后来觉得有点复杂,其实ELK组合也符合需求了,后来还是使用ELK。这是我测试时用到的安装步骤文档,贴上来分享一下。

ELK平台介绍

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

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

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

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products

·         Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

·         Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

·         Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

画了一个ELK工作的原理图:

QQ截图20160822101747.jpg

如图:Logstash的agent端收集服务器产生的Log,并存放到redisd消息队列中,然后Logstash的indexer端又从redis读取数据放到ES,ES查询数据生成图表,再返回给Browser端kinaba。

ELK平台搭建

系统环境

System: Centos release 7.0

ElasticSearch: 2.3.5

Logstash: 2.3.4

Kibana: 4.5.4

Java: openjdk version  "1.8.0_65"

注:由于Logstash的运行依赖于Java环境, 而Logstash 1.5以上版本不低于java 1.7,因此推荐使用最新版本的Java。因为我们只需要Java的运行环境,所以可以只安装JRE,不过这里我依然使用JDK,请自行搜索安装。

ELK下载:https://www.elastic.co/downloads/

QQ截图20160822101805.jpg



ElasticSearch

配置ElasticSearch:

tar -zxvf elasticsearch-2.3.5.tar.gz

cd elasticsearch-2.3.5

安装Head插件(Optional):

Cd /app/elasticsearch

./bin/plugin install mobz/elasticsearch-head

然后编辑ES的配置文件:

vi config/elasticsearch.yml

修改以下配置项:

cluster.name=server

node.name=node1

path.data=/app/elasticsearch/data

path.logs=/app/elasticsearch/logs

#当前hostname或IP:

network.host=192.168.0.235

network.port=9200

其他的选项保持默认,然后使用后台方式启动ES:

nohup ./bin/elasticsearch &

然后可以打开页面localhost:9200,将会看到以下内容:

QQ截图20160822101812.jpg

返回展示了配置的cluster_name和name,以及安装的ES的版本等信息。

刚刚安装的head插件,它是一个用浏览器跟ES集群交互的插件,可以查看集群状态、集群的doc内容、执行搜索和普通的Rest请求等。现在也可以使用它打开localhost:9200/_plugin/head页面来查看ES集群状态:

QQ截图20160822101818.jpg

Logstash

Logstash的功能如下:

QQ截图20160822101839.jpg

其实它就是一个收集器而已,我们需要为它指定Input和Output(当然Input和Output可以为多个)。配置Logstash:

tar -zxvf logstash-2.3.4.tar.gz

cd logstash-2.3.4

编写配置文件(名字和位置可以随意,这里我放在config目录下,取名为nginx.conf):

mkdir config

vi config/nginx.conf

输入以下内容:

input {

  file {

   path => "/home/logs/*/access/access.log"

   codec => "json"

  }

}

output {

   redis{

   data_type => "list"

   key => "nginx-access-log"

   host => "192.168.0.235"

   port => "6379"

   db => "2"

   password => "redis"

   }

}

记得要先把nginx.conf里面把日志格式设置为json:

QQ截图20160822101856.jpg

配置indexer.conf文件:

input {

     redis{

     data_type => "list"

     key => "nginx-access-log"

     host => "192.168.0.235"

     port => "6379"

     db => "2"

     password => "redis"

   }

}

output {

     elasticsearch {

     hosts=>  ["192.168.0.235:9200"]

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

     }

}

使用agent来启动它(使用-f指定配置文件):

检查语法:

./bin/logstash agent -f config/nginx.conf –t

./bin/logstash agent -f config/indexer.conf –t



启动:

./bin/logstash agent -f config/nginx.conf

./bin/logstash agent -f config/indexer.conf

到这里,我们已经可以使用Logstash来收集日志并保存到ES中了。

用Head插件查看ES状态和内容

查看看ES的head页面:

QQ截图20160822101902.jpg

切换到数据浏览标签:

QQ截图20160822101907.jpg

单击某一个文档(doc),则会展示该文档的所有信息:

QQ截图20160822101914.jpg

Kibana

配置Kibana:

tar -zxvf kibana-4.5.4-linux-x64.tar.gz

cd kibana-4.5.4-linux-x86

vi config/kibana.yml

修改以下几项:

server.port: 5601

server.host: 192.168.0.235

elasticsearch.url: http://192.168.0.235:9200

kibana.index: “.kibana”

启动kibana:

./bin/kibana

QQ截图20160822101920.jpg


用浏览器打开该地址:

QQ截图20160822101925.jpg

为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index。这里我输入之前配置的Index名字222nginx-access-*,Kibana会自动加载该Index下doc的field,并自动选择合适的field用于图标中的时间字段:

QQ截图20160822101930.jpg




点击Create后,可以看到左侧增加了配置的Index名字:

QQ截图20160822101935.jpg

接下来切换到Discover标签上,注意右上角是查询的时间范围,如果没有查找到数据,那么你就可能需要调整这个时间范围了,这里我选择Today:

QQ截图20160822101940.jpg

接下来就能看到ES中的数据了:

QQ截图20160822101946.jpg

执行搜索状态码200看看:

QQ截图20160822101951.jpg


点击右边的保存按钮,保存该查询为status200。接下来去Visualize页面,点击新建一个柱状图(Vertical Bar Chart),然后选择刚刚保存的查询status,之后,Kibana将生成类似于下图的柱状图 :

QQ截图20160822101956.jpg

Kinaba有很多的功能的,详情操作可到官方文档查看:

https://www.elastic.co/guide/en/kibana/current/index.html

到这里,ELK平台部署和基本的测试已完成。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-261284-1-1.html 上篇帖子: elasticsearch导入数据的几种方法 下篇帖子: logstash获取北京时间
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表