业务系统日志数据采集
业务系统的定义
业务系统是指在一个专业/行业方面,比如人事系统、财务系统、物资系统等,从某一个方面从上到下的组织架构及所有的业务工作。
拿企业业务系统来说,此系统解决的是公司外部的问题,即将一个公司生产的产品卖给他人。
业务系统解决的问题
- 让业务流程变的更加规范
- 数据实时展示,并给出领导层决策
- 历史数据长久保留并随时可查
业务系统—ERP
ERP是企业资源计划的简称,由不同的功能模块组成的软件系统,建立在信息技术基础上。是一个信息高度集成的管理系统。核心业务包括:财务统计,会计管理,销售管理,采购管理,客户关系管理,供应商管理,物流管理,生产计划,质量管理
业务系统—CRM
CRM是指利用计算机网络实现以客户为中心的系统。主要用途是实现企业效益最大化,作用:服务、挖掘客户,维护客户与销售之间的关系、提高客户的满意度、提高服务质量。
应用:
- 客户档案有序管理
- 合同管理
- 销售报表
- 预测销售业绩
业务系统的数据价值
数据库数据的价值
记录了业务产生数据,可以用来分析企业业务趋势等。
日志数据的价值
日志中记录了业务系统的几乎所有行为。通过日志信息可以为企业应用系统纠错,跟踪系统的运行,优化系统性能,可以反映系统错误操作和被恶意攻击情况。
在高可靠性的系统中,日志能够准确、及时反映系统的状况,从而保障了系统运行的连续性。
日志数据
由于日志是分散存储才不同设备、服务器中的,所以大多数公司使用集中化管理日志,如syslog,将所有服务器上的日志收集汇总。
日志的作用
- 信息查找:检索日志可以找到系统bug,并针对性的修复bug
- 服务诊断:对日志信息进行统计分析,根据服务的符合、运行状态,进行相应的优化
- 数据分析:如果是格式化的日志,如log,可以进一步分析、统计、聚合出更有意义的信息
ELK
ElasticSearch、Logstash和Kibana三个开源工具组成
ElasticSearch是一个开源分布式搜索服务器。特点是,零配置、分布式、索引自动分片、自动发现、索引副本即止、自动搜索负载
Logstash主要功能,日志进行收集、过滤并将其存储。用于收集集群日志
Kibana浏览器页面的Elasticsearch前端展示工具,主要是为ElasticSearch和Logstash提供web互动界面。
开发语言与技术框架
.Net
.Net平台是微软搭建的技术平台,技术人员在此平台上进行应用的搭建与开发。
程序的运行需要很多所必需的环境。这就是.Net平台 。
.Net的 日志框架
- 记录器:日志的对象,可以同时连接一个或多个不同的监视器,记录各种不同的消息和信息
- 监视器:用于存储和显示日志消息的媒介(文本文件、数据库、网络、控制台、邮箱)
- 包装器:用于制定日志记录的方式
- 过滤器:根据消息的严重性级别来过滤和忽略某类消息,只记录特定级别的日志信息
- 布局:用于格式化输出(定义输出内容和输出格式)
- 严重性级别:给不同类别的消息给予不同的严重程度。
Java
Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。
Java分为三个体系:
JavaSE(J2SE)(Java2 Platform Standard Edition,基础)
JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,企业)
JavaME(J2ME)(Java 2 Platform Micro Edition,嵌入式设备)。
常用的日志框架:Log4j、Slf4j 、Logback 。
Java的日志框架
Java3以前Java的日志不能定制化,且日志粒度(粒度就是同一维度下,数据统计的粗细程度)不够细。
之后阿帕奇发布了Log4j,解决了上述问题。
现在流行的日志框架Log4j2是性能最好的
Java的日志输出方式
- 使用IDEA创建一个Maven项目
- 在pom.xml中添加log4j依赖,重载pom.xml,等待依赖添加成功。
- 创建Log对象(静态类),并输出若干日志。
- 配置每一个日志的配置文件,并分别配置同步和异步两种方式(现用现查)
Java的语言特点
- 跨平台性:Java编译后的字节码具有一次编译到处运行的特点,运行在JVM中。
- 简单性:Java是面向对象的程序设计语言,没有那些难以理解的指针、结构等
- 面向对象:面向对象的程序设计语言,属性或方法必须声明到一个具体的对象中,才能使用。
- 安全性:Java在编译时有严格的语言和语义检查,保证了每个变量对应一个值
JavaEE下的框架*
- Struts2
- Spring
- Hibernate
- MyBatis/iTatis
- Security
- Velovity/Framemark/Thmeleaf
微服务框架
概述
微服务架构是围绕着分模块和分布式思想构建的一系列结果的简称,是一种在传统软件应用框架的基础上,按照功能拆分为粒度更细的服务,拆分出的每个服务都是一个独立的应用。
服务*
- 微服务实例的开发–SpringBoot
- 服务的注册与发现–Spring Cloud Eureka
- 负载均衡–Spring Cloud Ribbon
- 服务容错–Spring Cloud Hystrix
- API网关–Spring Cloud Zuul/Gateway
- 分布式配置中心–Spring Cloud Config
SpringBoot
集成了原有Spring框架的优秀基因,省去了Spring繁琐的配置,很容易创建一个独立运行的、准生产级别的基于Spring框架的项目。
作用*:
- 独立运行的Spring项目,以jar的形式独立运行
- 内嵌servlet容器,可以内嵌tomact等
- 自动配置Spring
- 完整的项目监控,保证生产健康
- 无代码生成和xml配置,通过条件注解来实现
Spring Cloud
提供了快速构建分布式系统中一些常见模式的工具,开发人员使用SpringCloud可以快速地支持实现这些模式的服务和应用程序。他们能在任何分布式环境中运行良好
业务系统日志数据采集
日志级别
- all: 最低等级用于打开所有日志记录
- trace:很低的级别,追踪,程序往下执行时,可以用trace输出
- debug:调试,默认的最低等级,all和trace一般不用;主要用于开发过程中打印一些的信息
- info:消息在粗粒度级别上突出强调应用程序的运行过程,用于打印一些重要的信息 常用
- warn:警告,可能会出现潜在的错误,需要给开发人员予以提示
- error:错误信息,发生了错误事件,道理上不影响整个程序的运行,常用
- fatal:致命错误,会导致程序完全停止,整个程序本身存在问题需要重写
- off:最高等级,用于关闭所有日志记录
log4j日志显示形式
SimpleLayout:一种简单的形式显示
HTMLLayout:一种HTML表格形式显示
PatternLayout:一种用户自定义的形式显示
log4j的日志格式
%t–线程名称
%p–日志级别
%c–日志消息所在的类名
%m–消息内容
%M–输出执行方法
%d–发生时间
%x–输出和当前线程相关的NDC,多用于java servlets这样的多客户多线程的应用中。
%L–代码中的行数
%n:换行
采集业务系统日志
收集tomcat日志到mysql
- Tomact启动:运行Tomcat业务系统
- 生成日志:Tomcat中运行java web系统
- 日志配置:配置log4j.xml
- 设置采集工具FileBeat:配置FileBeat的配置文件,启动FileBeat
- 配置LogStash:修改或创建配置文件
- Logstash输出配置:安装logstash-output-jdbc插件,将mysql-5.1的驱动程序放到vendor/jar/jdbc目录下,创建logstash.conf配置文件
收集spark、log4j日志到kafka
logstash+kafka
flume+kafka