开源日志分析系统ELK平台搭建部署
2017-06-20 16:37
1211 查看
开源日志分析系统ELK平台搭建部署
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。kibana 也是一个开源和免费的工具,他Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
192.168.2.61(安装Elasticsearch,kibana,Logstash)
192.168.2.83(收集umember日志)
192.168.2.93(收集Nginx日志,安装Logstash)
操作系统:Centos 6.5 x64
下载安装包
Elasticsearch:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz
Logstash:
https://artifacts.elastic.co/downloads/logstash/logstash-5.3.0.tar.gz
kibana:
https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-linux-x86_64.tar.gz
安装第三方epel源
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安装JDK环境(所有机器)
http://120.52.72.24/download.oracle.com/c3pr90ntc0td/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
查看是否生效
![](https://s2.51cto.com/wyfs02/M01/99/7D/wKioL1lI246g6tglAAAS6w8SXrU383.png-wh_500x0-wm_3-wmp_4-s_659792325.png)
修改ulimit限制
vi /etc/security/limits.d/90-nproc.conf
解压ElasticSearch安装包
安装Head插件
通过http://192.168.2.61:9100/ 登录
![](https://s4.51cto.com/wyfs02/M02/99/7D/wKioL1lI26OwINtLAABuQjvk-Xg700.png-wh_500x0-wm_3-wmp_4-s_3578212556.png)
然后编辑ES的配置文件:
其他的选项保持默认,然后启动ES:
![](https://s3.51cto.com/wyfs02/M00/99/7D/wKiom1lI27rAZ-SmAADWZJ_P3_M244.png-wh_500x0-wm_3-wmp_4-s_3311868780.png)
可以看到,它跟其他的节点的传输端口为9300,接受HTTP请求的端口为9200。
然后,通过网页打开http://192.168.2.61:9200/ ,可以看到以下内容
![](https://s4.51cto.com/wyfs02/M01/99/7D/wKioL1lI28vjj_FhAAAmskCfW7I809.png-wh_500x0-wm_3-wmp_4-s_2610608564.png)
返回展示了配置的cluster_name和name,以及安装的ES的版本等信息。
![](https://s4.51cto.com/wyfs02/M00/99/7D/wKiom1lI3AmCo-4TAACy-1Auoa8925.png-wh_500x0-wm_3-wmp_4-s_3097403011.png)
它就是一个收集器而已,我们需要为它指定Input和Output(当然Input和Output可以为多个)。由于我们需要把Java项目中Log4j的日志输出到ElasticSearch中,因此这里的Input就是Log4j,而Output就是ElasticSearch。
编写配置文件
启动Logstash
修改Java项目的log4j.properties,将Log4j的日志输出到SocketAppender
用Head插件查看ES状态和内容
![](https://s3.51cto.com/wyfs02/M01/99/7D/wKiom1lI3CbhSavPAACtAr2tpvU654.png-wh_500x0-wm_3-wmp_4-s_1398362635.png)
![](https://s1.51cto.com/wyfs02/M01/99/7D/wKioL1lI3CnidojOAADyZmiv_6o855.png-wh_500x0-wm_3-wmp_4-s_1066935802.png)
上面使用了ES的Head插件观察了ES集群的状态和数据,但这只是个简单的用于跟ES交互的页面而已,并不能生成报表或者图表什么的,接下来使用Kibana来执行搜索并生成图表。
配置kibana
修改以下内容
一、前言
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/productsElasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。kibana 也是一个开源和免费的工具,他Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
二、准备工作
准备3台机器:192.168.2.61(安装Elasticsearch,kibana,Logstash)
192.168.2.83(收集umember日志)
192.168.2.93(收集Nginx日志,安装Logstash)
操作系统:Centos 6.5 x64
下载安装包
Elasticsearch:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz
Logstash:
https://artifacts.elastic.co/downloads/logstash/logstash-5.3.0.tar.gz
kibana:
https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-linux-x86_64.tar.gz
安装第三方epel源
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安装JDK环境(所有机器)
http://120.52.72.24/download.oracle.com/c3pr90ntc0td/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
cd /usr/local tar -zxf jdk-8u131-linux-x64.tar.gz ln -sv jdk1.8.0_131/ jdk
vi /etc/profile.d/jdk.sh添加以下内容
export JAVA_HOME=/usr/local/jdk export PATH=$PATH:/usr/local/jdk/bin~
chmod 755 /etc/profile.d/jdk.sh . /etc/profile.d/jdk.sh
查看是否生效
java –version
![](https://s2.51cto.com/wyfs02/M01/99/7D/wKioL1lI246g6tglAAAS6w8SXrU383.png-wh_500x0-wm_3-wmp_4-s_659792325.png)
修改ulimit限制
vi /etc/security/limits.d/90-nproc.conf
* soft nproc 10240 * hard nproc 10240 * soft nofile 65536 * hard nofile 65536
vi /etc/sysctl.conf添加下面内容
vm.max_map_count = 262144然后执行以下命令
sysctl -p
三、ElasticSearch安装配置
创建一个ELK目录,把安装包都放这个目录下。[unilife@cdh3 ~]$ mkdir elk [unilife@cdh3 ~]$ cd elk/
解压ElasticSearch安装包
[unilife@cdh3 elk]$ tar -zxfelasticsearch-5.3.0.tar.gz
安装Head插件
yum install npm git #安装node.js git clonegit://github.com/mobz/elasticsearch-head.git cd elasticsearch-head npm install npm run start & 或者 grunt server 启动
通过http://192.168.2.61:9100/ 登录
![](https://s4.51cto.com/wyfs02/M02/99/7D/wKioL1lI26OwINtLAABuQjvk-Xg700.png-wh_500x0-wm_3-wmp_4-s_3578212556.png)
然后编辑ES的配置文件:
vi config/elasticsearch.yml修改以下配置项:
cluster.name: my-application node.name: node-1 path.data: /tmp/elasticsearch/data path.logs: /tmp/elasticsearch/logs network.host=0.0.0.0 network.port=9200 http.cors.enabled: true http.cors.allow-origin: "*"
其他的选项保持默认,然后启动ES:
[unilife@cdh3 elk]$ /home/unilife/elk/elasticsearch-5.3.0/bin/elasticsearch &
![](https://s3.51cto.com/wyfs02/M00/99/7D/wKiom1lI27rAZ-SmAADWZJ_P3_M244.png-wh_500x0-wm_3-wmp_4-s_3311868780.png)
可以看到,它跟其他的节点的传输端口为9300,接受HTTP请求的端口为9200。
然后,通过网页打开http://192.168.2.61:9200/ ,可以看到以下内容
![](https://s4.51cto.com/wyfs02/M01/99/7D/wKioL1lI28vjj_FhAAAmskCfW7I809.png-wh_500x0-wm_3-wmp_4-s_2610608564.png)
返回展示了配置的cluster_name和name,以及安装的ES的版本等信息。
四、Logstash安装
Logstash功能如下:![](https://s4.51cto.com/wyfs02/M00/99/7D/wKiom1lI3AmCo-4TAACy-1Auoa8925.png-wh_500x0-wm_3-wmp_4-s_3097403011.png)
它就是一个收集器而已,我们需要为它指定Input和Output(当然Input和Output可以为多个)。由于我们需要把Java项目中Log4j的日志输出到ElasticSearch中,因此这里的Input就是Log4j,而Output就是ElasticSearch。
tar -zxf logstash-5.3.0.tar.gz cd logstash-5.3.0
编写配置文件
vi config/log4j_to_es.conf
# For detail structure of this file # Set:https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html input { #For detail config for log4j as input, #See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html log4j { mode => "server" host => "192.168.2.61" port => 4567 } } filter { #Only matched data are send to output. } output { #For detail config for elasticsearch as output, #See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html elasticsearch { action => "index" #The operation on ES hosts =>"192.168.2.61:9200" #ElasticSearch host, can be array. index =>"dubbo" #Theindex to write data to, can be any string. }
启动Logstash
[unilife@cdh3 logstash-5.3.0]$./bin/logstash -f config/log4j_to_es.conf &用 -f 选项指定配置文件
修改Java项目的log4j.properties,将Log4j的日志输出到SocketAppender
log4j.rootCategory=debug, stdout, R, E, socket # appender socket log4j.appender.socket=org.apache.log4j.net.SocketAppender log4j.appender.socket.Port=4567 log4j.appender.socket.RemoteHost=192.168.2.61 log4j.appender.socket.layout=org.apache.log4j.PatternLayout log4j.appender.socket.layout.ConversionPattern=%d[%-5p] [%l] %m%n log4j.appender.socket.ReconnectionDelay=10000最后重新启动Java服务
用Head插件查看ES状态和内容
![](https://s3.51cto.com/wyfs02/M01/99/7D/wKiom1lI3CbhSavPAACtAr2tpvU654.png-wh_500x0-wm_3-wmp_4-s_1398362635.png)
![](https://s1.51cto.com/wyfs02/M01/99/7D/wKioL1lI3CnidojOAADyZmiv_6o855.png-wh_500x0-wm_3-wmp_4-s_1066935802.png)
上面使用了ES的Head插件观察了ES集群的状态和数据,但这只是个简单的用于跟ES交互的页面而已,并不能生成报表或者图表什么的,接下来使用Kibana来执行搜索并生成图表。
五、Kiabana安装
解压安装包tar -zxf kibana-5.3.0.tar.gz cd kibana-5.3.0
配置kibana
[unilife@cdh3 kibana-5.3.0]$ viconfig/kibana.yml
修改以下内容
server.host: "0.0.0.0" elasticsearch.url: http://192.168.2.61:9200[/code]
启动Kiabana[unilife@cdh3 kibana-5.3.0]$ ./bin/kibana &
通过http://192.168.2.61:5601/ 访问Kibana
为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index。这里我输入之前配置的Index名字dubbo,Kibana会自动加载该Index下doc的field,并自动选择合适的field用于图标中的时间字段:
接下来切换到Discover标签上,就能看到ES中的数据了:六、Logstash收集日志
6.1、Logstash收集Nginx日志
192.168.2.93上操作mkdir /home/unilife/elk cd /home/unilife/elk解压文件tar -zxf logstash-5.3.0.tar.gz cd logstash-5.3.0
编写配置文件[unilife@localhost bin]$ vi/home/unilife/elk/logstash-5.3.0/config/nginx_to_es.conf
添加以下内容input { file { type => "nginx_access" path => ["/usr/local/nginx/logs/access.log"] } } filter { #Only matched data are send to output. } output { #For detail config for elasticsearch as output, #See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html elasticsearch { action => "index" #The operation on ES hosts =>"192.168.2.61:9200" #ElasticSearch host, can be array. index =>"nginx" #Theindex to write data to, can be any string. } }
启动Logstash[unilife@localhost bin]$ ./bin/logstash -fconfig/nginx_to_es.conf &
用ElasticSearch的Head插件查看ES状态和内容,
可以看到nginx日志已经存储到ES
然后通过Kibana为nginx创建一个index
Kibana上能看到nginx数据了。6.2、Logstash通过kafka收集日志信息
编辑配置文件[unilife@localhost bin]$ vi/home/unilife/elk/logstash-5.3.0/config/kafka_to_elasticsearch.conf
添加以下内容input { kafka { topics => "unilife_nginx_production" group_id => "flume_unilife_nginx_production" bootstrap_servers =>"192.168.2.240:9092,192.168.2.241:9093,192.168.2.242:9094,192.168.2.243:9095,192.168.2.244:9096" } } output { elasticsearch { action => "index" hosts =>["192.168.2.240:9200","192.168.2.241:9200","192.168.2.242:9200","192.168.2.243:9200","192.168.2.244:9200"] index => "nginx" } }
启动Logstash[unilife@localhost bin]$ ./bin/logstash -fconfig/kafka_to_elasticsearch.conf &
相关文章推荐
- ELK服务搭建(开源实时日志分析ELK平台部署)(低版本—简单部署)
- elk实时日志分析平台部署搭建详细实现过程
- centos7搭建ELK开源实时日志分析系统
- 开源实时日志分析ELK平台部署
- 开源实时日志分析ELK平台部署
- Linux搭建开源实时日志分析ELK平台
- 开源实时日志分析ELK平台部署
- centos7搭建ELK开源实时日志分析系统 推荐
- 在Windows系统下搭建ELK日志分析平台
- elk实时日志分析平台部署搭建详细实现过程
- 开源实时日志分析ELK平台部署
- 开源实时日志分析ELK平台部署
- 开源实时日志分析ELK平台部署
- 开源实时日志分析ELK平台部署
- elk实时日志分析平台部署搭建详细实现过程
- elk实时日志分析平台部署搭建详细实现过程:加上个人实践意见,及如何避坑
- 开源实时日志分析ELK平台部署
- 开源实时日志分析ELK平台部署
- ELK 开源实时日志分析平台部署安装
- 开源实时日志分析ELK平台部署