• 欢迎访问蜷缩的蜗牛博客 蜷缩的蜗牛
  • 微信搜索: 蜷缩的蜗牛 | 联系站长 kbsonlong@qq.com
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Elk实时日志分析平台搭建

ELK 蜷缩的蜗牛 1年前 (2017-07-07) 105次浏览 已收录 0个评论

一、   关于 ELK 实时日志分析平台

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

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

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

Filebeat、topbeat、packetbeat 用于收集各应用、服务器等日志信息:

A.     Filebeat:自定义需要收集的日志信息;

B.     Topbeat:主要收集主机 CPU、Mem、Disk、Process、Load 等信息, 周期性的发送指标到 elasticsearch。可以通过 kibana 创建自定义仪表盘如系统负载、服务器概述、内存或 cpu 使用情况、top 进程、每个进程占用 cpu 或内存比例、磁盘使用情况等等。

C.     Packetbeat:是分布式的,实时的嗅探每个事务的请求与响应,并将相关数据插入到 elasticsearch 中。packetbeat 被动的嗅探网络流量,因此不会干扰应用程序。

二、   ELK 安装

1、   下载软件文件

可以到官网(https://www.elastic.co/downloads)下载最新版本 rpm 包安装

[root@operationelk]# ll

total155472

-rw-r--r--1 root root 27255779 Oct 13 09:11 elasticsearch-2.4.1.rpm

-rw-r--r--1 root root  4210383 Oct  7 05:04 filebeat-1.3.1-x86_64.rpm

-rw-r--r--1 root root 34652108 Sep  6 23:35kibana-4.6.1-x86_64.rpm

-rw-r--r--1 root root 84745974 Oct 13 09:08 logstash-2.4.0.noarch.rpm

-rw-r--r--1 root root  4665910 Oct  7 05:05 packetbeat-1.3.1-x86_64.rpm

-rw-r--r--1 root root  3661571 Oct  7 05:05 topbeat-1.3.1-x86_64.rpm

[root@operationelk]#
2、   安装

离线安装 plugins

sudo bin/elasticsearch-plugin install file:///path/to/plugin.zip

yuminstall elasticsearch-2.4.1.rpm filebeat-1.3.1-x86_64.rpmlogstash-2.4.0.noarch.rpm kibana-4.6.1-x86_64.rpm topbeat-1.3.1-x86_64.rpm  -y

可以通过如下命令查看安装信息,由于内容较多,摘取主要信息

rpm -qlelasticsearch

rpm -qllogstash

rpm -qlkibana

rpm -qlfilebeat

rpm -ql topbeat

配置文件

# tree /etc/{elasticsearch,logstash,filebeat,topbeat}

/etc/elasticsearch

|--elasticsearch.yml              ##elasticsearch 主配置文件

|--logging.yml                   ##elasticsearch 日志配置文件

`--scripts

/etc/logstash

`--conf.d                                                            ##logstash 配置目录

    `-- filebeat-nginx.conf                           ##logstash 会加载 conf.d 目录下所有.conf 配置文件,默认没有需要自己编写配置规则

/etc/filebeat

|--filebeat.default               ##filebeat 默认配置

|-- filebeat.template.json         ##topbeat 索引模板,导入到 elasticsearch

`--filebeat.yml                                        ##filebeat 配置文件

/etc/topbeat/

|--topbeat.template.json          ##topbeat 索引模板,导入到 elasticsearch

`--topbeat.yml                   ##topbeat 配置文件

安装主路径

# ls -ld/opt/{logstash,kibana}  /usr/share/elasticsearch/

drwxr-xr-x10 root     root     4096 10 月 13 15:50/opt/kibana

drwxr-xr-x  5 logstash logstash 4096 10 月 13 15:50/opt/logstash

drwxr-xr-x  6 root    root     4096 10 月 13 15:50/usr/share/elasticsearch/

三、   ELK 配置

1、   Logstash 配置

grok 部分可以通过 http://grokdebug.herokuapp.com/网站进行匹配成功再往下配置,否则后面没有数据展示;grok 正则匹配部分较为严谨,多个或少个空格都匹配不成功。

# cat/etc/logstash/conf.d/filebeat-nginx.conf

input {

  beats {

    port => 5044

  }

}

filter {

    grok {     

            match => {

                message =>"%{IPORHOST:remote_addr} ,

,%{IPORHOST:http_host} , \"%{WORD:http_verb}(?:%{PATH:baseurl}\?%{NOTSPACE:params}|%{DATA:raw_http_request})\" ,%{NUMBER:http_status_code} , %{NUMBER:bytes_read} , %{QS:referrer} ,%{QS:agent} , \"%{IPORHOST:client_ip}, %{IPORHOST:proxy_server}\" , -, - , - , %{IPORHOST:server_ip} , %{BASE10NUM:request_duration}" 

            }

    }

}

output {

 elasticsearch {

   hosts =>["192.168.xxx.157:9200"]

   index => "pcgames_access-%{+YYYY.MM.dd}"

   document_type => "nginx2"

 }

 #stdout { codec => rubydebug }

}

Nginx 自定义日志格式:

log_format  beats  '$remote_addr, [$time_local] , $host , "$request" , '

             '$status , $body_bytes_sent ,"$http_referer" , '

             '"$http_user_agent" ,"$http_x_forwarded_for" , '

             '$upstream_addr , $upstream_status, $upstream_response_time , '

             '$server_addr , $request_time';

Nginx 日志内容:

192.168.xxx.21, [27/Oct/2016:00:00:01 +0800] , img0.pcgames.com.cn , “GEThttp://img0.pcgames.com.cn/pcgames/1610/19/3602544_DotaPITS5.jpg HTTP/1.1”, 304 , 0 , “http://fight.pcgames.com.cn/dota2/?type=checked” ,”Mozilla/5.0 (Linux; Android 5.1.1; vivo X7Plus Build/LMY47V)AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.0.0 MobileSafari/537.36″ , “125.114.76.241, 192.168.xxx.35” , – , – , – ,192.168.xxx.23 , 0.000

2、   Elasticsearch 集群配置
#  cat /etc/elasticsearch/elasticsearch.yml|grep -v '#'

cluster.name:pcgames

node.name:node-1

path.data: /data1/elastic/      ##elasticsearch 数据存放路径

path.logs: /data1/elastic/logs   ##elasticsearch 日志存放路径

network.host:0.0.0.0

http.port:9200

discovery.zen.ping.unicast.hosts:["192.168.xxx.157:9300", "192.168.xxx.202:9300"]   #es 集群

node.master: true           ##将此节点配置为主节点

node.data:true

注:其他节点配置一样,如果只有两台主机集群,为防止脑裂,node.master 一个配置为 true 做为主节点,一个配置 false 做为从节点

3、   Kibana 配置

kibana 最主要配置好 elasticsearch 主机信息,其他保持默认即可!

elasticsearch.url: http://localhost:9200

导入 kibana 报表模板
# wget http://download.elastic.co/beats/dashboards/beats-dashboards-1.0.0.tar.gz

# tarxzvf beats-dashboards-1.0.0.tar.gz

# cdbeats-dashboards-1.0.0/

./load.sh -url http://192.168.xxx.157:9200
4、   Topbeat
A、配置
cat/etc/topbeat/topbeat.yml |grep -v '#'

input:

  period: 10

  procs: [".*"]

  stats:

    system: true

    process: true

    filesystem: true

    cpu_per_core: false

output:

  elasticsearch:

    hosts: ["192.168.xxx.157:9200"]

shipper:

logging:

  files:

         topbeat 配置 elasticsearch 地址,其他保持默认即可

B、导入 elasticsearch 索引模板

# curl-XPUT ‘http://localhost:9200/_template/topbeat’-d@/etc/topbeat/topbeat.template.json

{“acknowledged”:true}

5、   Filebeat
A、配置
# cat/etc/filebeat/filebeat.yml

filebeat:

  prospectors:

    -

      paths:

        - /var/log/nginx.log          ##需要收集的日志

      input_type: log  

  registry_file: /var/lib/filebeat/registry

output:

  logstash:

    hosts: ["192.168.xxx.157:5044"]     ##这里主机和端口注意要 logstash 所配置的端口

shipper: 

logging:

  files:

四、   ELK 启动和关闭

1、   ELK 启动

ELK 启动没有严格意义上的先后顺序,但是 Filebeat 收集信息上报 logstash;logstash 需要写入数据到 elasticsearch,Topbeat 数据写入 elasticsearch;kibana 需要读取 elasticsearch 数据实现最终展示。所以一般按如下启动:

# /etc/init.d/elasticsearchstart

# /etc/init.d/logstashstart

# /etc/init.d/filebeatstart

# /etc/init.d/topbeatstart

# /etc/init.d/kibanastart

2、   ELK 关闭
#/etc/init.d/kibana stop

#/etc/init.d/filebeat stop

#/etc/init.d/topbeat stop

#/etc/init.d/logstash stop

#/etc/init.d/elasticsearch stop

五、   Kibana 使用和展示

启动 kibana 后,访问http://192.168.xxx.157:5601/出现如下界面,提示创建索引

1、   创建索引 Index

2、   定制可视化图形(visualization)

在这里可以创建新的可视化图形或者打开保存的可视化图形:

当我们需要定制自己定义的数据源时,我们需要选择创建新的图形,现在我们来创建一个饼状图形。

选择我们刚刚创建的 index 数据源

3、   创建仪表盘

附上 百度云盘共享安装包:http://pan.baidu.com/s/1hs2q4tQ

ELK 中文指南   http://kibana.logstash.es/content/index.html

grok debug :http://grokdebug.herokuapp.com/

运维生存时间:http://www.ttlsa.com/log-system/elk/


蜷缩的蜗牛 , 版权所有丨如未注明 , 均为原创丨 转载请注明Elk 实时日志分析平台搭建
喜欢 (0)
[]
分享 (0)

您必须 登录 才能发表评论!