ELK系列一:ELK安装配置及nginx日志分析

本文分三个部分介绍了elk、elk安装配置及基于filebeat分析nginx日志的配置。

第一部分:elk介绍

一、什么是elk

ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用。

二、Elasticsearch

1.Elasticsearch介绍

Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。目前,最新的版本是 2.3.4。

2.Elasticsearch特点

(1)实时分析

(2)分布式实时文件存储,并将每一个字段都编入索引

(3)文档导向,所有的对象全部是文档

(4)高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards和 Replicas)

(5)接口友好,支持 JSON

三、Logstash

1.Logstash介绍

Logstash 是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写。目前最新的版本是 2.3.4。

2.Logstash特点

(1)几乎可以访问任何数据

(2)可以和多种外部应用结合

(3)支持弹性扩展

3.Logstash它组件

(1)Shipper-发送日志数据

(2)Broker-收集数据,缺省内置 Redis

(3)Indexer-数据写入

四、Kibana

1.Kibana介绍

Kibana 是一款基于 Apache 开源协议,使用JavaScript 语言编写,为 Elasticsearch 提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度的表图。目前最新的版本是 4.5,简称Kibana 4。

第二部分:elk安装

从官网下载最新版rpm包安装,系统需要安装jdk1.7以上。

软件包:

elasticsearch-2.3.4.rpm

kibana-4.5.3-1.x86_64.rpm

logstash-2.3.4-1.noarch.rpm

实验环境:

elasticsearch:192.168.115.11

kibana:192.168.115.12

logstash:192.168.115.11

filebeat:192.168.115.13

以上操作系统均为centos7

一、elasticsearch安装

1.软件安装

#rpm -ivh elasticsearch-2.3.4.rpm

安装完主要生成以下文件

/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/logging.yml
/etc/elasticsearch/scripts
/etc/init.d/elasticsearch
/etc/sysconfig/elasticsearch
/usr/share/elasticsearch

2.修改配置服务启动脚本

# cat /etc/sysconfig/elasticsearch
添加JAVA_HOM,否则服务无法正常启动
JAVA_HOME=/usr/local/java

3.修改elasticsearch配置文件

# cat /etc/elasticsearch/elasticsearch.yml
index.number_of_replicas: 0           # 默认副本数为1,由于是单机安装默认1个副本造成集群健康状态为yellow,影响后期使用
path.data: /data/elasticsearch/data  # 由于采用rpm包安装,需要定义数据保存位置,默认保存在/usr/share/elasticsearch/data下
path.logs: /data/elasticsearch/logs  # 修改日志保存位置
network.host: 192.168.115.11    #  修改监听地址,默认将监听在127.0.0.1上

4.安装head插件

#cd /usr/share/elasticsearch/
#./plugin install mobz/elasticsearch-head

5.启动服务

systemctl daemon-reload
systemctl enable elasticsearch.service
service elasticsearch start

在浏览器输入以下地址即可看相关页面

二、kibana安装

1.软件安装

#rpm -ivh kibana-4.5.3-1.x86_64.rpm

安装完主要生成以下文件

/etc/default/kibana
/etc/init.d/kibana
/lib/systemd/system/kibana.service

2.修改配置文件

修改连接elasticsearch

#cat /opt/kibana/config/kibana.yml
elasticsearch.url:"http://192.168.115.11:9200"

3.启动服务

service kibana start

三、logstash安装

#rpm -ivh logstash-2.3.4-1.noarch.rpm
安装完主要生成以下文件
/etc/init.d/logstash
/etc/logrotate.d/logstash
/etc/logstash/conf.d
/etc/sysconfig/logstash

2.修改服务启动脚本

PATH中要加入java位置否则服务无法启动
# cat /etc/init.d/logstash
PATH=/usr/local/java/bin:/sbin:/usr/sbin:/bin:/usr/bin
LS_HOME=/data/logstash
#cat /etc/sysconfig/logstash
JAVA_HOME=/usr/local/java/bin
JAVACMD=/usr/local/java/bin/java
LS_HOME=/data/logstash

第三部分:基于filebeat分析nginx日志

nginx日志定义格式

log_format         access_log

‘$remote_addr - $remote_user [$time_local]
$request ‘

‘"$status" $body_bytes_sent
"$http_referer" ‘

‘"$http_user_agent"  "$request_time"‘
‘"$upstream_addr"‘ ‘"$upstream_response_time"‘;

nginx日志内容

124.237.34.129 - -
[27/Jul/2016:15:11:09 +0800] GET
/gateway/web/home/pastQuestions/getQuestionCount?_q_=1469603400403 HTTP/1.1
"200" 60 "http://med.ihbedu.com/front/" "Mozilla/5.0
(Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/48.0.2564.116 UBrowser/5.6.14087.9 Safari/537.36" 
"0.361""172.17.54.22:8080""0.361"

一、filebeat介绍

1.Filebeat是一个开源的文件收集器,主要用于获取日志文件,并把它们发送到logstash或elasticsearch。与libbeat lumberjack一起替代logstash-forwarder。

2.Filebeat最初是基于logstash-forwarder源码的日志数据shipper。Filebeat安装在服务器上作为代理来监视日志目录或特定的日志文件,要么将日志转发到Logstash进行解析,要么直接发送到Elasticsearch进行索引。

二、filebeat安装

1.软件安装

#rpm -ivh filebeat-1.2.3-x86_64.rpm

2.修改filebeat配置

#cat /etc/filebeat/filebeat.yml
filebeat:
  prospectors:
    -
      paths:
        - "/data/nginx_log/*.log"
      document_type: nginx_access
  registry_file: /var/lib/filebeat/registry
 
output:
  logstash:
    hosts: ["192.168.115.11:5044"]

三、logstash配置

1.创建分析nginx日志配置文件

#cd /etc/logstash/conf.d
#vi logstash_server_nginx.conf
input {
 beats {
 host => "192.168.115.11"
 port => 5044
 type => "logs"
 }
}
filter {
  if [type] == "nginx_test" {
    grok {
       match => { "message" => "%{NGINXACCESS}" }
    }
  }
  if [type] == "nginx_access" {
    grok {
       match => { "message" => "%{NGINXACCESS_PRO}" }
     }
  date {
      match => [ "timestamp","dd/MMM/yyyy:HH:mm:ss Z" ]
      remove_field => [ "timestamp" ]
    }
 
  geoip {
      source => "remote_addr"
      add_tag => [ "geoip" ]
               
    }
  useragent {
        source => "http_user_agent"
        target => "browser"  
   }
  }
}
output {
  if "_grokparsefailure" in [tags] {
 file { path => "/var/log/logstash/grokparsefailure-%{[type]}-%{+YYYY.MM.dd}.log" }
  }
 
  elasticsearch {
      hosts => ["192.168.115.11:9200"]
      sniffing => true
      manage_template => false
      index => "%{[@metadata][beat]}-nginx-%{+YYYY.MM.dd}"
      document_type => "%{[@metadata][type]}"
      template_overwrite => true
  }
}

配置文件说明:

#
geoip IP地址库,可以根据客户端ip,解析对应的地域信息,包括国别、省市、经纬度,用于可视化地图、区域信息统计(公网ip)

# useragent根据http_user_agent信息解析出客户端浏览器类型、操作系统类型、客户端设备(browser.name、browser.os、browser.device)

#
date 将日志中产生的时间转换为@timestamp时间,而后删除该字段,在导入旧数据时非常有用,可以按旧数据的时间段产生数据便于按日志中的时间进行图表分析,同时解决数据流程中进过缓冲区,最终处理时间与事件产生的时间偏差问题

例如:nginx的日志时间 01/Aug/2016:17:28:17
+0800 可以写成 "dd/MMM/yyyy:HH:mm:ss
Z"

mongodb的日志时间 2016-08-02T20:39:50.405+0800 可以写成 "ISO8601"

2.定义nginx日志匹配规则

cat/opt/logstash/patterns/nginx

NGUSERNAME
[a-zA-Z\.\@\-\+_%]+

NGUSER %{NGUSERNAME}

NGINXACCESS
%{IPORHOST:http_host} %{IPORHOST:clientip} \[%{DATA:timestamp}\]
\"(?:%{WORD:verb} %{NOTSPACE:request}(?:
HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response}
(?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NUMBER:request_time:float}

NGINXACCESS_PRO
%{IPORHOST:remote_addr} - - \[%{HTTPDATE:timestamp}\] %{WORD:method}
%{NOTSPACE:request} HTTP/%{NUMBER:httpversion} \"%{NUMBER:status}\"
(?:%{NUMBER:body_bytes_sent}|-) %{QS:http_referer} %{QS:http_user_agent} 
\"%{NUMBER:request_time:float}\"\"(%{URIHOST:upstream_addr}|-)\"\"(%{NUMBER:upstream_response_time:float}|-)\"

注意:匹配规则字段顺序跟日志内容按顺序一一对应,严格区分空格,双引号需要转译

通过grok在线调式地址,测试所写的规则能否解析日志

https://grokdebug.herokuapp.com/

出现红框中的内容说明能够正常解析

3.导入索引模板文件

不导入将只有以下几个字段

模板文件内容

{

"mappings": {

"_default_": {

"_all": {

"enabled": true,

"norms": {

"enabled": false

}

},

"dynamic_templates": [

{

"template1": {

"mapping": {

"doc_values": true,

"ignore_above": 1024,

"index":
"not_analyzed",

"type":
"{dynamic_type}"

},

"match": "*"

}

}

],

"properties": {

"@timestamp": {

"type": "date"

},

"message": {

"type": "string",

"index":
"analyzed"

},

"offset": {

"type": "long",

"doc_values":
"true"

},

"geoip"  : {

"type" :
"object",

"dynamic": true,

"properties" : {

"location" : {
"type" : "geo_point" }

}

}

}

}

},

"settings": {

"index.refresh_interval":
"5s"

},

"template": "filebeat-*"

}

4.导入方式有两种:

(1)通过curl命令导入

curl -XPUT ‘http://192.168.115.11:9200/_template/filebeat?pretty
[email protected]/etc/filebeat/filebeat.template.json

(2)在elasticsearch界面导入

5.启动服务

启动logstash服务

启动filebeat服务

时间: 2024-08-04 19:30:05

ELK系列一:ELK安装配置及nginx日志分析的相关文章

ELK系列二:kibana操作及nginx日志分析图表创建

本文主要介绍kibana4的基本操作,nginx日志分析饼形图.柱形图.客户端地理位置分布图等相关图表创建. 一.kibana基本操作 1.面板介绍 Settings:创建索引 Discover:查询数据,选择左上角的下拉按钮,可以选择相应的索引查找数据 Visualize:统计图表 Dashboard:显示面板,添加相应的图表在面板中 2.创建索引 索引创建时,按照不同的类型建,Time-field要选择@timestamp不选的话在discover面板中不出现时间过滤控件 二.饼形图创建(分

ELK安装配置及nginx日志分析

一.ELK简介1.组成ELK是Elasticsearch.Logstash.Kibana三个开源软件的组合.在实时数据检索和分析场合,三者通常是配合使用,而且又都先后归于 Elastic.co 公司名下,故有此简称.Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等.Logstash是一个完全开源的工具,它可以对你的日志进行收集.分析,并将其存储供以后使用.kibana 是一个开源和

ELK 7.4.1 安装配置手册之前期环境搭建

ELK 7.4.1 安装配置手册之前期环境搭建 一. openjdk安装 1.说明 因为elasticsearch 7.4.1 需要依赖于java 11或以上的版本才可以运行,所以此处选择直接使用openjdk-13.0.1 的版本进行安装 . 本章主要介绍openjdk 的环境搭建 jdk下载链接: https://pan.baidu.com/s/1ZRPFSSTvsk2n4s8KzrLF8A 提取码:ll43 2.安装 解压openjdk[[email protected] ~]# tar

Lync Server 2010 安装部署系列四:安装&配置证书服务器

1.打开"服务器管理器" 2.添加角色 3.单击下一步按钮 4.勾选"Active Directory证书服务" 5.单击"下一步"按钮: 6.勾选"证书颁发机构"和"证书颁发机构Web注册",单击"下一步"按钮: 7.勾选"企业",单击"下一步"按钮: 8.勾选"根CA",单击"下一步"按钮: 9.勾选&q

实战:ADFS3.0单点登录系列-ADFS3.0安装配置

本文为系列第三章,主要讲下ADFS3.0的安装和配置.本文和前面的文章是一个系列,因此有些地方是有前后关联,比如本文中使用的通配符证书就是第二篇讲解的,因此需要连贯的进行阅读. 全文目录如下: 实战:ADFS3.0单点登录系列-总览 实战:ADFS3.0单点登录系列-前置准备 实战:ADFS3.0单点登录系列-ADFS3.0安装配置 实战:ADFS3.0单点登录系列-集成SharePoint 实战:ADFS3.0单点登录系列-集成MVC 实战:ADFS3.0单点登录系列-集成Exchange 实

ELKR分布式搭建nginx日志分析系统

ELKR分布式搭建nginx日志分析系统 一.名词介绍 1.什么是elk ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana.这三款软件都是开源软件,通常是配合使用. 2.Elasticsearch 2.1.Elasticsearch介绍 Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引

nginx日志分析利器GoAccess(转)

面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了. 对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快.满足这三点的goaccess确实是居家必备良药. 话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的.你也可以用它来分析apa

nginx日志分析利器GoAccess

面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了. 对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快.满足这三点的goaccess确实是居家必备良药. 话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的.你也可以用它来分析apa

Nginx日志分析

日志服务支持通过数据接入向导配置采集Nginx日志,并自动创建索引和Nginx日志仪表盘,达到快速采集并分析Nginx日志. 很多个人站长选取Nginx作为服务器搭建网站,在对网站访问情况进行分析时,需要对Nginx访问日志统计分析,从中获得网站的访问量,访问时段等访问情况,传统模式下利用CNZZ模式,在前端页面插入js,用户访问的时候触发js,但只能记录页面的访问请求,像ajax之类的请求是无法记录的,还有爬虫信息也不会记录.或者利用流计算.离线统计分析Nginx访问日志,从日志中挖掘有用信息