0x00 概述

F5 BIGIP从应用角度位于网络结构的关键咽喉位置,可获取所有应用的流量,针对流量执行L7层处理,即便是TLS加密的流量也可以通过F5进行SSL offload。通过F5可以统一获取所有应用的请求元数据,而不用关心应用是部署在何种系统架构中,这可以大大简化针对不同应用系统进行应用性能分析、日志采集工作。BIGIP TMOS系统提供了多种方法帮助实现统一信息收集,包括:

  • HTTP Request logging profile
  • DNS logging profile
  • Avr
  • iRule HSL
  • System logging HSL

支持高速信息输出而无需过分担心性能下降。

ELK是一个功能强大的集数据收集、存储、分析、索引、可视化的开源套件,支持多种数据结构输入输出。

本文是系列文章的第一篇,描述如何利用F5 LTM HTTP request logging 功能与ELK进行整合,进行HTTP 应用性能透视与分析。通过数据分析,可以进行诸如:

  • HTTP请求类型分布
  • URL访问排名
  • 同一资源池中各个服务器的http响应延迟
  • 单URL的响应延迟
  • 访问总请求数
  • URL或服务器延迟趋势
  • URL或服务器最大最小延迟
  • 响应大小分布
  • HTTP协议版本分布
  • 访问者地理位置跟踪
  • HTTP 响应代码分布及趋势
  • HTTP响应错误率统计
  • L4连接数
  • API请求调用延迟
  • 重API分布
  • API失败率分析
  • 请求线路分布
  • 。。。。

通过持续获取应性能信息数据,建立应用性能基线。当应用流量突增时,可直观发现突发流量来自于哪里,分布在哪些链路,哪些请求属于热点请求,应用响应延迟变化,趋势,URL/API拥堵情况,服务器性能状态。以及快速增长的URL之间是否存在业务上的前后逻辑,进而可以帮助判别是否为自动化的L7 DDOS等。

0x01 架构原理

F5 LTM通过配置 request logging profile模板输出HTTP请求与响应有关的数据,数据通过F5的High speed logging(HSL)功能直接输出到logstash监听的TCP端口上,Logstash通过使用Grok filter对原始数据进行规则过滤,格式化后的数据输出到elasticsearch服务器,通过kibana程序进行数据整理、可视化输出,下图描述了各功能组件间关系。

0x02 ELK搭建

https://www.myf5.net/post/2489.htm

0x03 LogStash配置文件

https://github.com/myf5/f5-elk-demo/blob/master/loggprofile-logstash-xff_pre-stage.md

0x04 F5侧配置

1. 配置一个pool,用于被logging profile调用,该pool的成员是logstash的服务器地址,端口为上述步骤中logstash启动的端口

2. 配置request logging profile, 只需设置resposne setting部分,request部分不用设定。模板详细内容请参考 https://github.com/myf5/f5-elk-demo/blob/master/loggprofile-logstash-xff_pre-stage.md

3. 配置vs,并应用上述logging profile

4. 访问vs业务,此时所有响应消息将被发送至logstash并被输入到elasticsearch中

0x05 Elastic search集群状态

所有以f5-request开头的类型都是相关request请求数据,数据被分为5个shards,并有一个备份。

0x06 Kibana数据分析

创建一个以f5-request-*为索引条件的pattern

选择正确的搜索时间,可以在discover界面中看到原始数据的输出:

可视化模块的定义

最后组装dashboard进行统一展示:

以上是部分可视化分析样例,通过对原始数据的充分精细加工,可以找到更贴合实际需求的可视化输出。下一篇文章将描述如何利用DNS logging profile建立DNS性能数据透视

更详细信息请访问https://github.com/myf5/f5-elk-demo/

参考

ELK学习笔记之F5利用ELK进行应用数据挖掘系列(1)-HTTP的更多相关文章

  1. ELK学习笔记之F5利用EELK进行应用数据挖掘系列(2)-DNS

    0x00 概述 很多客户使用GTM/DNS为企业业务提供动态智能解析,解决应用就近性访问.优选问题.对于已经实施多数据中心双活的客户,则会使用GSLB提供双活流量调度.DNS作为企业业务访问的指路者, ...

  2. ELK学习笔记之F5 DNS可视化让DNS运维更安全更高效-F5 ELK可视化方案系列(3)

    0x00 概述 此文力求比较详细的解释DNS可视化所能带来的场景意义,无论是运维.还是DNS安全.建议仔细看完下图之后的大篇文字段落,希望能引发您的一些思考. 在“F5利用Elastic stack( ...

  3. ELK学习笔记之CentOS 7下ELK(6.2.4)++LogStash+Filebeat+Log4j日志集成环境搭建

    0x00 简介 现在的公司由于绝大部分项目都采用分布式架构,很早就采用ELK了,只不过最近因为额外的工作需要,仔细的研究了分布式系统中,怎么样的日志规范和架构才是合理和能够有效提高问题排查效率的. 经 ...

  4. Android(java)学习笔记206:利用开源SmartImageView优化网易新闻RSS客户端

    1.我们自己编写的SmartImageView会有很多漏洞,但是我们幸运的可以在网上利用开源项目的,开源项目中有很多成熟的代码,比如SmartImageView都编写的很成熟的 国内我们经常用到htt ...

  5. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

  6. Android(java)学习笔记149:利用开源SmartImageView优化网易新闻RSS客户端

    1.我们自己编写的SmartImageView会有很多漏洞,但是我们幸运的可以在网上利用开源项目的,开源项目中有很多成熟的代码,比如SmartImageView都编写的很成熟的 国内我们经常用到htt ...

  7. ELK学习笔记(一)安装Elasticsearch、Kibana、Logstash和X-Pack

    最近在学习ELK的时候踩了不少的坑,特此写个笔记记录下学习过程. 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因 ...

  8. ELK学习笔记之基于kakfa (confluent)搭建ELK

    0x00 概述 测试搭建一个使用kafka作为消息队列的ELK环境,数据采集转换实现结构如下: F5 HSL–>logstash(流处理)–> kafka –>elasticsear ...

  9. ELK学习笔记之Logstash详解

    0x00 Logstash概述 官方介绍:Logstash is an open source data collection engine with real-time pipelining cap ...

随机推荐

  1. iot-hub物管理bug

    物管理中,物绑定证书,如果证书被删除,将会出错 初始化用到 证书编码,证书为null时,null.code报错

  2. 浅谈Python web框架

    一.Python web框架 Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全 ...

  3. Linux:系统文件目录

    目录结构 bin:命令类目录 命令 系统操作 清屏:clear.ctrl+L 进程: # $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程 #kill -u ...

  4. 深入理解Java虚拟机2-chap3-斗之气9段

    一.GC需要完成三件事 哪些内存需要回收:找出不需要使用的对象 什么时候回收:JVM空闲/堆内存紧张 如何回收:回收垃圾的策略 二.寻找已死对象:第一件事 判断对象是否存活算法 1.引用计数算法 原理 ...

  5. Reveal使用

    本人手机是7.1的,reveal2.0以后不支持8.0以下,没办法,这里只能使用reveal1.6. 这里提醒一下,reveal2.0以后libReavel.lib改名了,. https://reve ...

  6. Linux基础(六) Vim之vundle插件

    背景 Vim缺乏默认的插件管理器,所有插件的文件都散布在~/.vim下的几个文件夹中,插件的安装与更新与删除都需要自己手动来,既麻烦费事,又可能出现错误. Vundle简介 Vundle 是 Vim ...

  7. 使用sqlite3解决IDEA中SVN更新提示cleanup却无法cleanup的问题

    用idea开发项目,更新svn有时莫名其妙的出现 Error:Error performing cleanup for 'D:\SourceProject\XXXX': svn: E155004: T ...

  8. 04-树6 Complete Binary Search Tree(30 分)

    title: 04-树6 Complete Binary Search Tree(30 分) date: 2017-11-12 14:20:46 tags: - 完全二叉树 - 二叉搜索树 categ ...

  9. Day6 模块及Python常用模块

    模块概述 定义:模块,用一砣代码实现了某类功能的代码集合. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,提供了代码的重用性.在Python中,一个.py文件就称之为一个模块(Mod ...

  10. jQuery事件--blur()和focus()

       blur([[data],fn]) 概述 当元素失去焦点时触发 blur 事件. 这个函数会调用执行绑定到blur事件的所有函数,包括浏览器的默认行为.可以通过返回false来防止触发浏览器的默 ...