百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

logstash+ES+kibana搭建日志收集分析系统

mhr18 2024-12-06 16:10 14 浏览 0 评论

日志监控和分析在保障业务稳定运行时,起到了很重要的作用,不过一般情况下日志都分散在各个生产服务器,且开发人员无法登陆生产服务器,这时候就需要一个集中式的日志收集装置,对日志中的关键字进行监控,触发异常时进行报警,并且开发人员能够查看相关日志。logstash+elasticsearch+kibana3就是实现这样功能的一套系统,并且功能更强大。

logstash:是一个管理日志和事件的工具,你可以收集它们,解析它们,并存储它们以供以后使用(例如日志搜索),logstash有一个内置的web界面,用来搜索你的所有日志。logstash在部署时有两种运行模式:standalone和centralized:

* standalone:standalone的意思是所有的事情都在一台服务器上运行,包括日志收集、日志索引、前端WEB界面都部署在一台机器上。

* centralized:就是多服务器模式,从很多服务器运输(ship)日志到一台总的日志(collector)服务器上用来索引和查找。

需要注意的是logstash本身并没有什么shipper和indexer这种说法,因为不论是运输日志的进程还是汇集总的日志的进程运行的都是同一个程序,只是使用的配置文件不同而已。

elasticsearch:

基于lucene的开源搜索引擎,是一个分布式的搜索分析系统,主要特点有:real time data、real time analytics、distributed、high availability、multi-tenancy、full text search、document oriented、conflict management、schema free、restful api等等。

kibana3:

可视化日志和数据系统,作为WEB前端可以很容易地和elasticsearch系统结合。kibana有版本2和版本3的区分,版本2采用ruby编写,部署起来很麻烦,需要安装很多ruby依赖包(目前网上多是这个版本的部署),版本3采用纯html+css编写,因此部署起来很方便,解压即用,目前已经是kibana4了,建议大家使用最新版。

出于性能及扩展性考虑,实际应用中logstash我们必然采用centralized模式,最基本的结构图如下:

1、安装redis,安装过程简单,这里不做详细说明。

2、安装ElasticSearch(目前版本1.4)

<span style="font-size:14px;">wget 'https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.tar.gz'
tar zxvf elasticsearch-0.90.7.tar.gz
cd elasticsearch-0.90.7/bin
#可以在logstash agent启动后再启动
./elasticsearch -f</span>

3、启动logstash shipper,定义配置文件logstash.conf,根据实际情况定义,以下主要定义了input源为文件,output到redis,启动logstash shipper,例如:


<span style="font-family: 'Microsoft YaHei';"><span style="font-size:14px;">input {
        file {
                type => "api_log"
                path => "/home/jws/app/nginxserver/logs/apiaccess.log"
                debug => true
        }
        file {
                type => "cas_log"
                path => "/home/jws/app/nginxserver/logs/casaccess.log"
                debug => true
        }
        file {
                type => "id_log"
                path => "/home/jws/app/nginxserver/logs/idaccess.log"
                debug => true
        }
        file {
                type => "login_log"
                path => "/home/jws/app/nginxserver/logs/loginaccess.log"
                debug => true
        }
        file {
                type => "proxy_log"
                path => "/home/jws/app/nginxserver/logs/proxyaccess.log"
                debug => true
        }
}
output {
        redis {
                host => "10.20.164.121"
                data_type => "list"
                key => "logstash:redis"
        }
        redis {
                host => "10.20.164.122"
                data_type => "list"
                key => "logstash:uop_file"
        }
}</span></span>

启动shipper:

java -jar /home/jws/htdocs/logstash/lib/logstash.jar agent -f /home/jws/htdocs/logstash/conf/logstash.conf -l /home/jws/htdocs/logstash/logs/logstash.log

4、启动logstash indexer

logstash的配置文件相当简单,主要有三部分:inputs、filters、outputs。事件在配置文件中的出现是有顺序的。在inputs、output、filter中,允许你设置配置插件,配置插件由一个插件名称和紧跟在后面的插件配置代码块构成。插件中的值可以是布尔值、字符串、数字、哈希、数组等,并且支持条件判断(if...else)。

例如以下indexer中的配置,并启动indexer:

<span style="font-size:14px;">input {
    file {
        path => "/home/rsyslog/asaserver/*/*/*/proxy.log.*"
        exclude => "*.bz2"
        type => "proxy"
    }
}

filter {
    grok {
             match => [ "message", "%{APIPROXY}" ]
             patterns_dir => ["/home/jws/app/logstash/patterns"]
         }
    if [request_uripath_orig]{
        grok {
                match => [ "request_uripath_orig", "%{NSSS}" ]
                patterns_dir => ["/home/jws/app/logstash/patterns"]
        }
    }
}

output {
    #stdout { codec =>"rubydebug"}
    elasticsearch_http {
        host => "10.20.161.36"
        flush_size => 500
        idle_flush_time => 3
        index => "logstash_pf_proxy-%{+YYYY.MM.dd.HH}"
        template => "/home/jws/app/logstash/template/t.json"
        template_overwrite => true
    }
}</span>


5、安装并启动kibana3,安装过程与普通软件安装无异,可以配合nginx安装,这里不做描述,需要注意的是需要在kibana config.js中配置elasticSearch的地址与端口。


注意红框中的内容,这只是kibana3的默认界面,需要我们用logstash.json代替default.json界面,具体目录源码目录下app/dashboards中。

例如项目中的一个例子,根据需求制作图表(类似饼图,柱状图,折线图等),在笔者实际项目中,从日志中分析数据,实现系统稳定性、响应时间、请求量、业务响应码、HTTP状态码等等以kibana展现;


并且,elasticsearch的用途远不如此,可以用来做搜索数据源,ES提供了编程接口,可以使用编程的方式获取ES中的数据自定义开发监控程序,灵活且功能强大。

相关推荐

使用 Docker 部署 Java 项目(通俗易懂)

前言:搜索镜像的网站(推荐):DockerDocs1、下载与配置Docker1.1docker下载(这里使用的是Ubuntu,Centos命令可能有不同)以下命令,默认不是root用户操作,...

Spring Boot 3.3.5 + CRaC:从冷启动到秒级响应的架构实践与踩坑实录

去年,我们团队负责的电商订单系统因扩容需求需在10分钟内启动200个Pod实例。当运维组按下扩容按钮时,传统SpringBoot应用的冷启动耗时(平均8.7秒)直接导致流量洪峰期出现30%的请求超时...

《github精选系列》——SpringBoot 全家桶

1简单总结1SpringBoot全家桶简介2项目简介3子项目列表4环境5运行6后续计划7问题反馈gitee地址:https://gitee.com/yidao620/springbo...

Nacos简介—1.Nacos使用简介

大纲1.Nacos的在服务注册中心+配置中心中的应用2.Nacos2.x最新版本下载与目录结构3.Nacos2.x的数据库存储与日志存储4.Nacos2.x服务端的startup.sh启动脚...

spring-ai ollama小试牛刀

序本文主要展示下spring-aiollama的使用示例pom.xml<dependency><groupId>org.springframework.ai<...

SpringCloud系列——10Spring Cloud Gateway网关

学习目标Gateway是什么?它有什么作用?Gateway中的断言使用Gateway中的过滤器使用Gateway中的路由使用第1章网关1.1网关的概念简单来说,网关就是一个网络连接到另外一个网络的...

Spring Boot 自动装配原理剖析

前言在这瞬息万变的技术领域,比了解技术的使用方法更重要的是了解其原理及应用背景。以往我们使用SpringMVC来构建一个项目需要很多基础操作:添加很多jar,配置web.xml,配置Spr...

疯了!Spring 再官宣惊天大漏洞

Spring官宣高危漏洞大家好,我是栈长。前几天爆出来的Spring漏洞,刚修复完又来?今天愚人节来了,这是和大家开玩笑吗?不是的,我也是猝不及防!这个玩笑也开的太大了!!你之前看到的这个漏洞已...

「架构师必备」基于SpringCloud的SaaS型微服务脚手架

简介基于SpringCloud(Hoxton.SR1)+SpringBoot(2.2.4.RELEASE)的SaaS型微服务脚手架,具备用户管理、资源权限管理、网关统一鉴权、Xss防跨站攻击、...

SpringCloud分布式框架&amp;分布式事务&amp;分布式锁

总结本文承接上一篇SpringCloud分布式框架实践之后,进一步实践分布式事务与分布式锁,其中分布式事务主要是基于Seata的AT模式进行强一致性,基于RocketMQ事务消息进行最终一致性,分布式...

SpringBoot全家桶:23篇博客加23个可运行项目让你对它了如指掌

SpringBoot现在已经成为Java开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通...

开发好物推荐12之分布式锁redisson-sb

前言springboot开发现在基本都是分布式环境,分布式环境下分布式锁的使用必不可少,主流分布式锁主要包括数据库锁,redis锁,还有zookepper实现的分布式锁,其中最实用的还是Redis分...

拥抱Kubernetes,再见了Spring Cloud

相信很多开发者在熟悉微服务工作后,才发现:以为用SpringCloud已经成功打造了微服务架构帝国,殊不知引入了k8s后,却和CloudNative的生态发展脱轨。从2013年的...

Zabbix/J监控框架和Spring框架的整合方法

Zabbix/J是一个Java版本的系统监控框架,它可以完美地兼容于Zabbix监控系统,使得开发、运维等技术人员能够对整个业务系统的基础设施、应用软件/中间件和业务逻辑进行全方位的分层监控。Spri...

SpringBoot+JWT+Shiro+Mybatis实现Restful快速开发后端脚手架

作者:lywJee来源:cnblogs.com/lywJ/p/11252064.html一、背景前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置...

取消回复欢迎 发表评论: