ELKStack

利用ELK+redis搭建一套nginx日志分析平台。

使用Elasticsearch + Logstash + Kibana+redis来搭建nginx日志监控分析。

nginx的每个请求状态等都有日志文件来记录,可以通过读取日志文件来分析;

logstash有agent(Shipper)和server(Indexer)端,agent端负责监控本地日志文件的变化,

及时把日志文件的最新内容收集起来,输出到Redis暂存;

redis的list结构正好可以作为队列使用,用来存储logstash传输的日志数据;

server端:日志存储,负责从Redis接收日志;

分析之后存储到elasticsearch进行搜索分析再由统一的kibana进行日志web界面的展示.

实现所需架构图:

部署3台服务器:

1.192.168.0.156:安装nginx+logstash+redis:负责监控本地日志文件的变化,

及时把日志文件的最新内容收集起来,输出到Redis暂存

2.192.168.0.155:安装logstash,作为server端,日志存储者,负责从Redis接收日志

3.192.168.0.188:安装elasticsearch+kibana,搜索分析再由统一的kibana进行日志web界面的展示

实现步骤:

  1. 首先在192.168.0.156安装nginx+logstash+redis:(提前下载好logstash1.5.4)

[[email protected] ~]# yum install nginx -y

[[email protected] ~]# systemctl startnginx.service                      ###启动nginx

[[email protected] ~]# yum install redis -y

[[email protected] ~]# vim /etc/redis.conf

bind 0.0.0.0                                                       ###监听本机所有地址

[[email protected] ~]# systemctl start redis.service                      ###启动redis

[[email protected] ~]# yum install java-1.8.0-openjdk    java-1.8.0-openjdk-devel –y

###安装jdk

[[email protected] dylan]# yum localinstalllogstash-1.5.4-1.noarch.rpm –y

###安装logstash1.5.4

[[email protected] dylan]# vim/etc/profile.d/logstash.sh

export PATH=/opt/logstash/bin:$PATH

[[email protected] dylan]# ./etc/profile.d/logstash.sh

[[email protected] dylan]# cd/etc/logstash/conf.d/

[[email protected] conf.d]# vim/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core

-0.3.0/patterns/grok-patterns                     ###ngigx_log的匹配方式,添加以下日志格式

#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}

[[email protected] conf.d]# vimnglogredissample.conf          ###配置logstash收集nginx日志

input {

file {

path    =>["/var/log/nginx/access.log"]

type    => "nginxlog"

start_position => "beginning"

}

}

filter {

grok {

match => { "message" => "%{NGINXACCESS}"}           }

}

output {

redis {                                                ###日志发往redis暂存

port    => "6379"

host    =>["127.0.0.1"]

data_type      =>"list"

key     =>"logstash-%{type}"

}

}

[[email protected] conf.d]# logstash -f./nglogredissample.conf –configtest      ###测试配置文件

Configuration OK

[[email protected] conf.d]# logstash -f./nglogredissample.conf                   ###启用配置文件

Logstash startup completed

[[email protected] /]# redis-cli                                                  ###连接至redis

127.0.0.1:6379> LINDEX logstash-nginxlog1                               ###可通过redis查看

  1. 在192.168.0.155安装logstash,作为server端,日志存储者,负责从Redis接收日志

[[email protected] ~]# yum install java-1.8.0-openjdk    java-1.8.0-openjdk-devel –y

###安装jdk

[[email protected] dylan]# yum localinstalllogstash-1.5.4-1.noarch.rpm –y

###安装logstash1.5.4

[[email protected] dylan] vim/etc/profile.d/logstash.sh

export PATH=/opt/logstash/bin:$PATH

[[email protected] dylan]# ./etc/profile.d/logstash.sh

[[email protected] dylan]# cd/etc/logstash/conf.d/

[[email protected] conf.d]# vim server.conf                   ###配置logstash server端

input {

redis {                                         ###从redis获取数据

port => "6379"                          ###redis端口

host =>"192.168.0.156"                  ###redis主机

data_type =>"list"

key     => "logstash-nginxlog"

}

}

output {

elasticsearch{                                    ###输出至elasticsearch

cluster =>"logstash"                     ###elasticsearch中的cluster

index   => "logstash-%{+YYYY.MM.dd}"      ###索引格式

}

}

[[email protected] conf.d]# logstash -f./server.conf –configtest   ###测试语法

[[email protected] conf.d]# logstash -f./server.conf                ###运行server配置

  1. 在192.168.0.188:安装elasticsearch+kibana, 搜索分析再由统一的kibana进行日志web界面的展示。

提前下载准备好:

elasticsearch-1.7.2.noarch.rpm

bigdesk-latest.zip  (一个ES插件扩展,可查看es集群的各种状态)

kibana-4.1.2-linux-x64.tar.gz

[[email protected] ~]# yum install java-1.8.0-openjdkjava-1.8.0-openjdk-devel –y

###安装jdk

[[email protected] dylan]# yun installelasticsearch-1.7.2.noarch.rpm –y                        ###安装es1.7.2

[[email protected] elasticsearch]# vim/etc/elasticsearch/elasticsearch.yml

cluster.name: logstash                                             ###配置cluster

node.name: "node1.xiao.com"

[[email protected] elasticsearch]# systemctldaemon-reload

[[email protected] elasticsearch]# systemctl startelasticsearch.service      ###启动es

es节点之间交互的tcp端口,默认是9300

对外服务的http端口,默认为9200

[[email protected] ~]#/usr/share/elasticsearch/bin/plugin -i bigdesk -ufile:///dylan/plugins/bigdesk-latest.zip ###安装bigdesk插件

http://192.168.0.188:9200/_plugin/bigdesk                    ###网页端访问可查看

[[email protected] dylan]# tar xfkibana-4.1.2-linux-x64.tar.gz -C /usr/local      ###解压kibana

[[email protected] dylan]# cd /usr/local/

[[email protected] local]# ln -svkibana-4.1.2-linux-x64 kibana                     ###创建链接

"kibana" ->"kibana-4.1.2-linux-x64"

[[email protected] local]# cd kibana/config/

[[email protected] config]# vim kibana.yml                               ###编辑配置文件

elasticsearch_url:"http://localhost:9200"                                                   ###同属同一台服务器

[[email protected] config]# cd ..

[[email protected] kibana]# bin/kibana                                    ###启动kibana

网页端输入:http://192.168.0.188:5601  查看

测试:在网页端刷新nginx,产生日志,即可通过kibana查看。

时间: 2024-10-16 03:45:57

ELKStack的相关文章

二、ELKStack集群架构设计

一.ELKStack介绍与入门实践 二.Elasticsearch 集群架构图 服务器配置:Centos6.6 x86_64 CPU:1核心 MEM:2G (做实验,配置比较低一些) 注:这里配置elasticsearch集群用了3台服务器,可以根据自己的实际情况进行调整. 三.开始安装配置nginx和logstash 注:这里使用yum安装,如果需要较高版本的,可以使用编译安装. 在10.0.18.144上操作,10.0.18.145配置方式和144是一样的. 1.安装nginx 配置yum源

日志平台之ELKStack实践

在运维系统中,经常遇到如下情况: ①开发人员不能登录线上服务器查看详细日志 ②各个系统都有日志,日志数据分散难以查找 ③日志数据量大,查询速度慢,或者数据不够实时 ④一个调用会涉及多个系统,难以在这些系统的日志中快速定位数据 我们可以采用目前比较流行的ELKStack来满足以上需求. ELK Stack组成部分: 原理流程图如下: 实战操作: ①下载安装包: [[email protected] tools]# ll total 289196 -rw-r--r-- 1 root root  28

利用ELKStack日志平台分析短信攻击

话说互联网的江湖一点都不风平浪静,这不刚处理完 http://fengwan.blog.51cto.com/508652/1757465 短信攻击,敌人又卷土重来,而且方法更先进. 从上面可以看到敌人通过模拟Referer对我方阵地实施打击,不断耗费我方短信资源. 通过对敌人进行画像: 分析IP 分析X-FORWARD-IP 分析设备 分析浏览器 分析浏览器版本 眼前已经一目了然,敌人虽然来自四面八方(不同的IP),但是所使用的武器是一台Samsung GT-I9505的Android 4.2.

ELKStack 实战之 Elasticsearch [一]

ELKStack 实战之 Elasticsearch [一] 标签(空格分隔): ELKStack ELKStack简介 ELK Stack 是 Elasticsearch.Logstash.Kibana 三个开源软件的组合.在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称. ELK Stack 在最近两年迅速崛起,成为机器数据分析,或者说实时日志处理领域,开源界的第一选择.和传统的日志处理方案相比,ELK Stack 具有如下几个优点:

ELKStack篇(1)——ElasticSearch篇

1.没有日志分析系统 1.1运维痛点 1.运维要不停的查看各种日志. 2.故障已经发生了才看日志(时间问题.) 3.节点多,日志分散,收集日志成了问题. 4.运行日志,错误等日志等,没有规范目录,收集困难. 1.2环境痛点 1.开发人员不能登陆线上服务器查看详细日志. 2.各个系统都有日志,日志数据分散难以查找. 3.日志数据量大,查询速度慢,数据不够实时. 1.3解决痛点 1.收集(Logstash) 2.存储(Elasticsearch.Redis.Kafka) 3.搜索+统计+展示(Kib

企业级日志收集系统——ELKstack

ELKstack简介: ELKstack是Elasticsearch.Logstash.Kibana三个开源软件的组合而成,形成一款强大的实时日志收集展示系统. 各组件作用如下: Logstash:日志收集工具,可以从本地磁盘,网络服务(自己监听端口,接受用户日志),消息队列中收集各种各样的日志,然后进行过滤分析,并将日志输出到Elasticsearch中. Elasticsearch:日志分布式存储/搜索工具,原生支持集群功能,可以将指定时间的日志生成一个索引,加快日志查询和访问. Kiban

ELKStack的基础入门和中文指南

一.ELKStack的中文指南 一.Elasticsearch Elasticsearch 5.4 中文文档:http://cwiki.apachecn.org/pages/viewpage.action?pageId=4260364 Elasticsearch 权威指南:https://fuxiaopang.gitbooks.io/learnelasticsearch/ 二.Logstash 最佳实践 Logstash 最佳实践:https://doc.yonyoucloud.com/doc/

ELKStack部署和使用

一.ELKStack简介 1.ELK介绍 中文指南:https://www.gitbook.com/book/chenryn/elk-stack-guide-cn/details ELK Stack包含:ElasticSearch.Logstash.Kibana ElasticSearch是一个搜索引擎,用来搜索.分析.存储日志.它是分布式的,也就是说可以横向扩容,可以自动发现,索引自动分片,总之很强大.文档https://www.elastic.co/guide/cn/elasticsearc

ELKStack生产案例

需求分析: 访问日志:apache访问日志,nginx访问日志,tomcat file 错误日志: error log,java日志 直接收 java异常需要处理 系统日志:/var/log/*    syslog  rsyslog 运行日志:程序编写的  file  json 网络日志:防火墙,交换机,录取日志 syslog 标准化:日志放哪里( /data/logs),格式是什么(JSON) 命名规则(access_log error_log runtime_log)日志怎么切割access