一、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/binexport 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 IPport => "6079" #redis server portdata_type => "list" #redis作为队列服务器,key的类型为listkey => "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/

安装elasticsearch-head插件:

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

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

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/

创建索引

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

转载于:https://www.cnblogs.com/Eivll0m/p/6134426.html

ELK安装配置及nginx日志分析相关推荐

  1. 使用elk+redis搭建nginx日志分析平台(引)

    http://www.cnblogs.com/yjf512/p/4199105.html elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎 ...

  2. ELK+redis搭建nginx日志分析平台

    ELK+redis搭建nginx日志分析平台 发表于 2015-08-19   |   分类于 Linux/Unix   |   ELK简介 ELKStack即Elasticsearch + Logs ...

  3. 大数据主题分享第三期 | 基于ELK的亿级实时日志分析平台实践

    猫友会希望建立更多高质量垂直细分社群,本次是"大数据学习交流付费群"的第三期分享. "大数据学习交流付费群"由猫友会联合,斗鱼数据平台总监吴瑞诚,卷皮BI技术总 ...

  4. nginx日志分析脚本

    #!/usr/bin/env bashecho "" echo " =================================================== ...

  5. Nginx日志分析系统——Elastic Stack的系列产品的使用

    目录 1.Nginx日志分析系统 1.1.项目需求 2.部署安装Nginx 3.Beats 简介 4.Filebeat 4.1.架构 4.2.部署与运行 4.3.读取文件 4.4.自定义字段 4.5. ...

  6. python nginx日志分析_Nginx日志分析及脚本编写

    在我们日常的运维中,当Nginx服务器正常运行后,我们会经常密切关注Nginx访问日志的相关情况,发现有异常的日志信息需要进行及时处理. 那今天我将跟大家一起来研究和分析Nginx日志,nginx默认 ...

  7. SRE从踩坑到牛逼(二)利用Python进行Arcgis站点分析+Nginx日志分析

    前面是日记,或者是牢骚吧 就感觉挺可惜的,一月份的时候因为分析日志的需求,写过一个几十行的代码,能够做到Arcgis站点分析,并且录入到Excel,根据Arcgis站点信息进行日志分析的部分还没写,这 ...

  8. php 监控nginx日志文件,Nginx 日志分析及实时监控

    本文档以 Nginx 日志为例,介绍如何使用日志分析服务来分析 Nginx 日志中的各种指标. 许多个人站长选取了 Nginx 作为服务器搭建网站,在对网站访问情况进行分析时,需要对 Nginx 访问 ...

  9. Nginx日志分析工具

    Nginx日志分析工具 1. 介绍三个关于分析nginx日志信息的工具. 2. nginx_log_analysis 这个工具是由一位叫LEO的网友提供的,它的博客是http://linux5588. ...

最新文章

  1. App_Offline.htm 一个静态页面实现整站维护时统一页面
  2. 注重网站用户体验优化就要避开前方弯道
  3. 第二章 数据结构 【完结】
  4. Application.mk
  5. 构建Squid代理服务器-传统代理、透明代理、反向代理
  6. mysql 5.6加用户_Mysql 5.6添加修改用户名和密码的方法
  7. PHP安装imagemagick扩展imagick
  8. LeetCode 116. 填充每个节点的下一个右侧节点指针
  9. 数组和集合的区别及定义方式
  10. 1.1 认识Word 2010操作界面
  11. 使用代理访问百度网站 ProxyHandler python 爬虫 入门
  12. 862772-11-0,c(RGDfC),cyclo(RGDfC),cyclo(RGD-DPhe-C),cyclo (Arg-Gly-Asp-D-Phe-Cys)
  13. 骁龙AR2平台解析:分布式架构开启轻量化AR眼镜新时代
  14. app小窗口悬浮工具_悬浮窗大师下载-悬浮窗大师 v6.6_手机乐园
  15. 微信小程序商城如何打印快递单
  16. 分享124个PHP源码,总有一款适合您
  17. Java源码阅读(类图自动生成工具)
  18. 使用PicGo配置七牛云图床(图文步骤详细)
  19. Linux将正在运行的前台程序放到后台执行
  20. 信息安全系统设计基础实验二—20135215黄伟业20135222胡御风

热门文章

  1. oracle json入参调用ws服务返回请求失败_Spring 5.2.2技术集成 —Spring HTTP调用程序和JAXWS...
  2. 操作系统原理_读懂操作系统之缓存原理(cache)(三)
  3. WPF自定义命令(转)
  4. input的type为number
  5. 【TensorFlow】:解决TensorFlow的ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败...
  6. 静态方法里面不能调用非静态属性
  7. 自定义水晶报表的显示
  8. Asprise OCR SDK 15.3试用版破解
  9. 在OpenCV中将cv::Mat绘制到MFC的视图中
  10. Android 在布局容器中动态添加控件