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

[经验分享] ELK安装配置及nginx日志分析

[复制链接]

尚未签到

发表于 2017-12-23 09:36:40 | 显示全部楼层 |阅读模式
  一、ELK简介
  1、组成
  ELK是Elasticsearch、Logstash、Kibana三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合使用,而且又都先后归于 Elastic.co 公司名下,故有此简称。
  Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用。
  kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
  2、工作流程
  在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。
  二、ELK安装及配置
  1、系统及软件版本介绍:
  系统:CentOS6.5_64
  elasticsearch:elasticsearch-2.3.5.tar.gz
  logstash:logstash-2.3.4.tar.gz
  kibana:kibana-4.5.4-linux-x64.tar.gz
  redis:redis-2.8.17.tar.gz
  JDK:jdk-8u73-linux-x64.tar.gz
  2、服务器规划
  在两台服务器安装ELK组件
  A(需要分析的nginx日志服务器):安装logstash(logstash agent)
  B(ELK服务端):安装elasticsearch、logstash(logstash index)、kibana、redis
  软件包安装目录:/data/elk
  3、创建用户
  

# groupadd app  
# useradd
-g app -d /data/elk elk  

  4、安装及配置JDK
  logstash及elasticsearch需要JDK支持
  

# su - elk  
$
tar zxf jdk-8u73-linux-x64.tar.gz  
$ vim .bash_profile (添加及修改如下内容)
  

  
JAVA_HOME
=/data/elk/jdk1.8.0_73  
PATH
=${JAVA_HOME}/bin:$PATH:$HOME/bin  

  
export PATH JAVA_HOME
  

  
$ . .bash_profile
  

  执行java -version命令查看到如下内容表示JDK配置OK。
  

java version "1.8.0_73"  
Java(TM) SE Runtime Environment (build
1.8.0_73-b02)  
Java HotSpot(TM)
64-Bit Server VM (build 25.73-b02, mixed mode)  

  注:以上3-4步在A、B服务器都需要进行操作。
  5、A服务器安装及配置logstash(logstash agent)
  

$ tar zxf logstash-2.3.4.tar.gz  
$
mv logstash-2.3.4 logstash  
$
mkdir logstash/conf  
$ vim logstash
/conf/logstash_agent.conf #手动创建logstash配置文件,添加如下内容  
input {
file {  type
=> "nginx access log"  path
=> ["/app/nginx/logs/access.log"]  #nginx日志路径  }
  
}
  
output {
  redis {
  host
=> "123.56.xx.xx" #redis server IP  port
=> "6079" #redis server port  data_type
=> "list" #redis作为队列服务器,key的类型为list  key
=> "logstash:redis" #key的名称,可以自定义  }
  
}
  

  语法检查:
  

$ ./logstash -t -f ../conf/logstash_agent.conf  
Configuration OK
  

  启动logstash(最好是在B服务器安装好redis后再进行启动):
  

$ cd logstash/bin  
$ nohup .
/logstash -f ../conf/logstash_agent.conf &  
$
tail -f nohup.out  #查看日志,输出以下内容,表示logstash正常启动  
{:timestamp
=>"2016-12-05T11:06:35.407000+0800", :message=>"Pipeline main started"}  

  注:以下安装及配置内容全部在B服务器上进行
  6、安装及配置redis
  这个比较简单(过程略,端口使用6079)
  启动redis
  

/data/elk/redis/bin/redis-server /data/elk/redis/conf/redis.conf  

  7、安装及配置elasticsearch
  

$ tar zxf elasticsearch-2.3.5.tar.gz  
$
mv elasticsearch-2.3.5 elasticsearch  
$
mkdir elasticsearch/{logs,data}  #创建日志及数据存放目录  
$ vim elasticsearch
/config/elasticsearch.yml  #修改如下内容  
cluster.name: server
  
node.name: node
-1  
path.data:
/data/elk/elasticsearch/data  
path.logs:
/data/elk/elasticsearch/logs  
network.host:
123.56.xx.xx  
http.port:
9200  

  启动elasticsearch
  

$ cd elasticsearch/  
$ nohup .
/bin/elasticsearch &  

  通过浏览器访问:
  http://123.56.xx.xx:9200/
DSC0000.jpg

  安装elasticsearch-head插件:
  

$ cd elasticsearch/bin/  
$ .
/plugin install mobz/elasticsearch-head  

  访问http://123.56.xx.xx:9200/_plugin/head/,可以查看集群状态,集群的内容,执行搜索和普通的rest请求等:
DSC0001.jpg

  8、安装及配置logstash(logstash index)
  

$ tar zxf logstash-2.3.4.tar.gz  
$
mv logstash-2.3.4 logstash  
$
mkdir logstash/conf  
$ vim logstash
/conf/logstash_indexer.conf #手动创建logstash配置文件,添加如下内容  
input {
  redis {
  host
=> "123.56.xx.xx"  port
=> "6079"  data_type
=> "list"  key
=> "logstash:redis"  type
=> "redis-input"  }
  
}
  
filter {
  grok {
  match
=> { "message" => "%{NGINXACCESS}" }  }
  geoip {
  source
=> "clientip"  add_tag
=> [ "geoip" ]  database
=> "/data/elk/logstash/GeoLiteCity.dat"  add_field
=> [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]  add_field
=> [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]  }
  mutate {
  convert
=> [ "[geoip][coordinates]", "float"]  }
date {  match
=> [ "timestamp","dd/MMM/yyyy:HH:mm:ss Z" ]  remove_field
=> [ "timestamp" ]  }
  useragent {
  source
=> "http_user_agent"  target
=> "browser"  }
  
}
  

  
output {
  elasticsearch {
  hosts
=> ["123.56.xx.xx:9200"]  }
  stdout {codec
=> rubydebug}  
}
  

  配置Logstash以使用GeoIP,下载最新的GeoLite城市数据库
  

$ cd /data/elk/logstash  
$ curl
-O "http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz"  
$
gzip -d GeoLiteCity.dat.gz  

  添加geo_point映射
  

curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json  
curl -XPUT 'http://123.56.xx.xx:9200/_template/filebeat?pretty' -d@filebeat-index-template.json
  

  定义nginx日志匹配规则
  

$ mkdir logstash/patterns  
$ vim nginx  #添加内容如下:
  
NGUSERNAME [a
-zA-Z\.\@\-\+_%]+  
NGUSER
%{NGUSERNAME}  
NGINXACCESS
%{IPORHOST:clientip} - %{NOTSPACE:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NOTSPACE:http_x_forwarded_for}  

  检查配置并启动logstash
  

$ ./logstash -t -f ../conf/logstash_indexer.conf  
Configuration OK
  
nohup .
/logstash -f ../conf/logstash_indexer.conf &  

  9、安装及配置kibana
  

$ tar zxf kibana-4.5.4-linux-x64.tar.gz  
$
mv kibana-4.5.4 kibana  
$
vi kibana/config/kibana.yml #修改内容如下  
elasticsearch.url:
"http://123.56.xx.xx:9200"  

  启动kibana
  

$ cd kibana/bin  
$ nohup .
/kibana &  

  访问kibana
  浏览器打开http://123.56.xx.xx:5601/
DSC0002.jpg

  创建索引
  使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。
DSC0003.jpg

运维网声明 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.iyunv.com/thread-427087-1-1.html 上篇帖子: 让thinkphp 5 支持pathinfo 的 nginx ,去掉index.php 下篇帖子: CentOS7部署Nginx
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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