ELK最佳实践

1.ELK最佳实践解析

a.用户通过nginx或haproxy访问ELK日志统计平台,IP地址为keepalived的vip地址;

b.nginx将请求转发到kibana;

c.kibana到es获取数据,es是两台做的集群,数据保存在任意一台es服务器;

d.左边的logstash从redis中取出数据并发送到elasticsearch中;

e.redis服务器做数据的临时存放点,避免web服务器日志量过大,造成的数据收集与保存不一致导致日志丢失,其中redis可以做集群,然后再由logstash服务器从redis中持续取出数据;

f.右边的logstash过滤从filebeat取出的日志信息,并放入redis中进行保存;

g.filebeat进行收集web的日志.

为什么要在redis跟filebeat增加一台logstash呢?因为在大量的日志数据写入时,容易导致数据的丢失和混乱,为了解决这一问题,增加一台logstash可以通过类型进行过滤,降低数据传输的臃肿.

以下操作纯属虚构,如有雷同,那不可能,因为我的笔记本是8G内存,开一个logstash就累够呛,开不动六台虚拟机了,手上也没有物理机让我做虚拟化,所以只能有时间了、有需要了再来做这个实验.

2.IP规划

10.0.0.33:filebeat+web,filebeat收集日志发送到logstash

10.0.0.32:logstash,将日志写入reids(input、output)

10.0.0.31:redis,大量缓存数据

10.0.0.30:logstash,从redis取出数据写入es(input、output)

10.0.0.29:es+kibana,es接收传来的数据写入磁盘,等待kibana来取

a.10.0.0.33:filebeat输出到logstash

1vim /etc/filebeat/filebeat.yml 2filebeat.prospectors: 3- input_type: log 4 paths: 5 - /var/log/*.log 6 - /var/log/messages 7 exclude_lines: ['^DBG',"^$"] 8 document_type: filebeat-systemlog-0033 9output.logstash: 10 hosts: ["10.0.0.32:5044"] 11 enabled: true 12 worker: 2 13 compression_level: 3 14 15systemctl restart filebeat

b.10.0.0.32:logstash将日志写入reids(向redis写数据不需要给key加日期)

1vim beats.conf 2 3input { 4 beats { 5 port => "5044" 6 } 7} 8output { 9 if [type] == "filebeat-systemlog-0033" { 10 redis { 11 data_type => "list" 12 host => "10.0.0.31" 13 db => "3" 14 port => "6379" 15 password => "123456" 16 key => "filebeat-systemlog-0033" 17 } 18 } 19} 20 21systemctl restart logstash

c.10.0.0.31:redis不用做什么操作

d.10.0.0.30:logstash从redis取出数据写入es

1vim redis-es.conf 2input { 3 redis { 4 data_type => "list" 5 host => "10.0.0.31" 6 db => "3" 7 port => "6379" 8 key => "filebeat-systemlog-0033" 9 password => "123456" 10 } 11} 12 13output { 14 if [type] == "filebeat-systemlog-0033" { 15 elasticsearch { 16 hosts => ["10.0.0.29:9200"] 17 index => "redis31-systemlog-%{+YYYY.MM.dd}" 18 } 19 } 20} 21systemctl restart logstash

e.10.0.0.29:es+kibana

es插件页面出现这个日志索引时redis31-systemlog-xxxx.xx.xx,代表整个流程是通的.

ELK架构实用演示:http://blog.51cto.com/jinlong/2056717

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

ELK最佳实践 - HelloWorld