一、架构如图:

二、工作机制:

在需要收集日志的应用上安装filebeat(需要修改配置文件,配置文件稍后介绍),启动filebeat后,会收集该应用的日志推送给redis,然后logstash从redis中收集日志推送到Elasticsearch。

因Elasticsearch是一个集群,所以只需要在某台Elasticsearc安装一个Kibana提供给用户一个可视化界面即可。

而在学习Elasticsearch的过程中,必不可少需要通过一些工具查看es的运行状态以及数据。如果都是通过rest请求,未免太过麻烦,而且也不够人性化,所以需要安装一个head插件。同上,只需要在某台Elasticsearc安装一个head插件,提供给运维查看数据状态即可。

三、 安装准备

1、 安装包

通过https://www.elastic.co/downloads,可以下载es所有需要的安装包,可自行根据需要下载对应版本。

并且将包都解压到/opt/platform

以下是目前es使用到的安装包:

Elasticsearch5.2.X

安装方法:

修改配置文件:vim /opt/platform/elasticsearch/config/elasticsearch.yml

配置详见文件下文。

启动ela: ./bin/elasticsearch

Filebeat5.2.X

安装方法:

创建目录:mkdir conf

复制配置文件:cp filebeat.yml /conf

修改配置文件:vim /opt/platform/filebeat/conf/filebeat.yml

配置详见文件下文。

启动filebeat: ./filebeat -c conf/filebeat.yml &

Logstash5.2.X

安装方法:

创建目录:mkdir conf

配置文件:vim /opt/platform/filebeat/conf/ filebeat-java-to-es.conf

配置详见文件下文。

启动logstash:/opt/platform/logstash/bin/logstash -f /opt/platform/logstash/conf/filebeat-java-to-es.conf &

Es-head5.2.x

安装方法:

Github下载源码:git clone git://github.com/mobz/elasticsearch-head.git

cd elasticsearch-head

安装node依赖模块:npm install

ln -s /opt/platform/es-head/node_modules/grunt/bin/grunt grunt

启动es head插件的独立服务:nohup grunt server &

或者nohup npm run start &

配置文件:

vim Gruntfile.js

port按需更改,默认9100

Kibana5.2.X

安装方法:

修改配置文件:vim /opt/platform/kibana/config/kibana.yml

配置文件修改内容如下:

server.port: 5601

server.host: "x.x.x.x"

elasticsearch.url: http://x.x.x.x:9200

Redis3.2.8(常规安装,不做介绍了)

Jdk1.8.0_121(常规安装,不做介绍了)

2、 端口开放:

redis+logstash

6379\9600

redis+logstash

6379\9600

redis+logstash

6379\9600

es+kibana

9200\9300\5601

es+head

9100\9200\9300\

Es

9200\9300\

3、依赖包

elsticserch依赖于java1.8以上版本,需要安装JDK1.8+,同样logstash也需要依赖jdk,所以也需要安装。

四、配置文件:

1、Elasticserch

1、elasticserch 启动时需要设置vm.max_map_count和允许打开的最大文件描述符数量

(1)、修改vm.max_map_count

vi /etc/sysctl.conf
                     增加以下内容
                       vm.max_map_count=262144

(2)、修改允许打开的最大文件描述符数量

vim /etc/security/limits.d/10-nproc.conf
* soft nproc 20480
* hard nproc 20480
root soft nproc unlimited
root hard nproc unlimited
* soft nofile 1048576
* hard nofile 1048576
ops soft memlock unlimited
ops hard memlock unlimited

  

(3)、修改elstic的配置文件,以下是比较重要的参数;

PS: 需要在elasticsearch的配置文件中加入以下内容,这样head才能连接到elasticsearch查看集群状态:

thread_pool.search.queue_size: 10000

http.cors.enabled: true

http.cors.allow-origin: "*"

2、Filebeat配置文件

#prospectors config

filebeat.prospectors:

- input_type: log

paths:

- /opt/platform/quarkloan-api-app/logs/convertor/convertorinfo.log

- /opt/platform/quarkloan-api-app/logs/convertor/convertorerror.log

encoding: plain

document_type: loanapi

multiline.pattern: ^[0-9]

multiline.negate: true

multiline.match: after

#global config

filebeat.registry_file: ${path.data}/registry-loanapi

#output.redis config

output.redis:

hosts: ["10.19.64.69:6379", "10.19.64.70:6379", "10.19.64.71:6379"]

key: filebeat-java

datatype: list

loadbalance: true

3、Logstash配置文件

input {

redis {

data_type => "list"  #value type is STRING

key => "filebeat-java"  #value type is STRING

host => "10.19.64.69"  #value type is STRING

port => 6379  #value type is NUMBER,Default value is 6379

}

redis {

data_type => "list"

key => "filebeat-java"

host => "10.19.64.70"

port => 6379

}

redis {

data_type => "list"

key => "filebeat-java"

host => "10.19.64.71"

port => 6379

}

}

filter {

#JAVA日志解析,时间 线程 级别 类 ,日志实际内容不解析

grok {

match => {

"message" => "%{TIMESTAMP_ISO8601:timestamp}\s+%{DATA:thread}\s+%{DATA:level}\s+%{DATA:class}\s+"

}

}

#用日志输出时间替换掉ES的@timestamp

date {

match => ["timestamp", "ISO8601"]

target => "@timestamp"

}

#节流过滤,打节流tag,output.email根据tag判断是否发送ERROR日志邮件

if [type] == "loanapi" and [level] == "ERROR" {

throttle {

period => 600

max_age => 1200

before_count => 4

key => "%{type}%{level}"

add_tag => "throttled"

}

}

}

output {

elasticsearch {

hosts => ["10.19.64.72:9200", "10.19.64.105:9200", "10.19.64.106:9200"]  #value type is ARRAY

index => "%{type}-%{+YYYY.MM.dd}"  #YYYY.MM.dd get from @timestamp field

flush_size => 2000  #value type is NUMBER,Default value is 500

idle_flush_time => 5  #value type is NUMBER,Default value is 1

}

#按type,level,tags判断是否发送ERROR日志邮件(此项为特殊要求,不建议用logstash进行日志发送,避免影响logstash的性能)

if [type] == "loanapi" and [level]== "ERROR" and "throttled" in [tags] {

email {

port => 465

address => "mail.xxx.com"

from => "logerror@xxx.com"

username => "xxxr"

password => "xxx"

authentication => "login"

contenttype => "text/plain; charset=UTF-8"

use_tls => true

subject => "ELK异常邮件:[%{[beat][hostname]}服务器]-[%{type}日志异常]"

to => "sss@qqq.com"

via => "smtp"

body => "%{message}"

}

}

}

五 、启动kibana

当加入了新的日志到ELK中时,可以在management中新建index,如下图

日志格式要求

目前线下java应用的日志输出组件有两个,logback和log4j,格式应满足如下要求,以便于接入生产ELK,方便开发能快速查看生产日志。
日志输出标准有如下建议请参考

1、请尽量使用log4j
2、日志文件编码格式:UTF-8,请不要使用默认
3、日志文件rotate:按天,单文件容量不超过50MB
4、日志输出的时间格式使用ISO8601(如yyyy-MM-dd HH:mm:ss.SSS),%d或%date默认输出格式为ISO8601
5、日志输出的字段分隔符使用tab,替换空格
6、日志输出字段顺序:date thread level class message
7、日志输出Pattern建议如下:
8、Logback组件pattern:%date [%thread] %-5level [%logger] - %msg%n
9、Log4j组件pattern:%d [%t] %-5p [%c] - %m%n
10、日志路径微服务日志路径为/opt/jarapp/logs tomcat日志路径为/opt/tomcat/logs

ELK的搭建以及使用的更多相关文章

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

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

  2. 使用elk+redis搭建nginx日志分析平台

    elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态 ...

  3. linux下利用elk+redis 搭建日志分析平台教程

    linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm   elk 日志分析+redis数据库可以创建一个不错的日志分析平台了 ...

  4. ELK初学搭建(kibana)

    ELK初学搭建(kibana) elasticsearch logstash kibana ELK初学搭建 kibana 1.环境准备 centos6.8_64 mini IP:192.168.10. ...

  5. ELK初学搭建(elasticsearch)

    ELK初学搭建(elasticsearch) elasticsearch logstash kibana ELK初学搭建 elasticsearch 1.环境准备 centos6.8_64 mini ...

  6. ELK初学搭建(logstash)

    ELK初学搭建(logstash) elasticsearch logstash kibana ELK初学搭建 logstash 1.环境准备 centos6.8_64 mini IP:192.168 ...

  7. ELK平台搭建(上)

    一.目的 为指导在Centos6.8系统下搭建标准ELK平台的工作. 二.定义 Elasticsearch Logstash Kibana结合Redis协同工作. 三.适用范围 适用于运营维护组运维工 ...

  8. ELK 环境搭建4-Kafka + zookeeper

    一.安装前准备 1.节点 192.168.30.41 192.168.30.42 192.168.30.43 2.操作系统: Centos7.5 3.安装包 a.java8: jdk-8u181-li ...

  9. ELK 环境搭建3-Logstash

    一.Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件或者中间件. 二.搭建 1.因为要涉及到收 ...

  10. ELK 环境搭建2-Kibana

    一.安装前准备 1.节点 192.168.30.41 2.操作系统: Centos7.5 3.安装包 a.java8: jdk-8u181-linux-x64.tar.gz b.Kibana kiba ...

随机推荐

  1. TCP连接数配置

    一般的设置规则为: 系统最大文件数>可用端口>用户最大文件数 sysctl -a | grep file-max cat /proc/sys/fs/file-max 这表明这台Linux系 ...

  2. JavaWeb_Servlet生命周期

    菜鸟教程 传送门 Servlet生命周期 package com.Gary.servlet; import java.io.IOException; import javax.servlet.Serv ...

  3. char和vachar的字段长度怎么影响数据库的性能的

    1.限制规则 字段的限制在字段定义的时候有以下规则: a)                  存储限制 varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度 ...

  4. ltelliJ IDEA 创建Maven web项目无src目录的解决方案

    https://blog.csdn.net/xiaoke815/article/details/72810976 一.缘由 这几天闲来无事,突然想试试IDEA这个编译器,之前一直都在用Eclipse ...

  5. 对于Java培训出身的同学,接下来该怎么学习技术?

    首先恭喜从培训班出来找到工作的同学,确实挺不容易的,4个月的培训,每天从早上9点到晚上9点,也是996,主要的活动地方就是宿舍和教室, 让我现在也去培训,我估计还熬不下来. 尤其是对于从小白开始的同学 ...

  6. 【编程漫谈】Hello world!

    Hello world!是打开编程世界的第一把钥匙,只要你能运行出Hello world!,基本上就算入了个门了,因为程序正确的运行代表着基本开发环境都有了,包括编辑器,编译器,解释器,运行环境等待, ...

  7. DAY 5模拟赛

    DAY 5 廖俊豪神仙出题 T1 最小差异矩阵(a.cpp, a.in, a.out) [题目描述] 有一个 n*m 的矩阵,矩阵的每个位置上可以放置一个数.对于第 i 行,第 i 行的差异定义为该行 ...

  8. IJCAI 2019 Analysis

    IJCAI 2019 Analysis 检索不到论文的关键词:retrofitting word embedding Getting in Shape: Word Embedding SubSpace ...

  9. vue 钩子函数中获取不到DOM节点

    原文链接:https://jingyan.baidu.com/article/f96699bbfe9c9d894f3c1b4b.html 两种解决方案: 1:官方解决方案: 受到 HTML 本身的一些 ...

  10. 半硬化树脂PP的型号

    1080是PP半固化胶片的型号(perperg),还有7628,2116,2113,2112,1506等等型号,每种型号不一样代表其PP内部的玻纤布不一样,比如7628的玻纤布相对较粗.数值较小则玻纤 ...