您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

轻松利用日志动态分析平台玩转Nginx运维管理

时间:2023-10-24 16:02:02  来源:微信公众号  作者:DataFunTalk

一、分享背景

1、关于此次分享

(1) 关于炎凰数据

轻松利用日志动态分析平台玩转Nginx运维管理

炎凰数据是一家专注于打造自主知识产权的大数据处理平台的公司

(2) 关于鸿鹄

轻松利用日志动态分析平台玩转Nginx运维管理

鸿鹄是炎凰数据为广大开发者(研发人员、数据分析师、数据科学家等)提供的免费社区版一站式异构数据分析平台,包含了异构数据的采集、导入、存储、计算分析、可视化和告警等一系列服务。平台采用云原生架构和特有的读时建模引擎,支持标准的SOL语言,让用户可以灵活地管理海量多源异构数据,快速地分析数据特征,助力用户轻松实现数据驱动业务,诚邀大家一起参与,免费体验,共同助力新产品的功能优化、新技术的发现探索。

(3) 分享目的

Nginx是个常用的系统,其运维管理是普遍的需求。本文从实际案例出发,介绍如何利用日志动态分析平台(炎凰 数据的鸿鹄产品)完成Nginx运维管理的场景落地,涵盖从数据导入、数据解析、数据建模,到数据可视化的全过程,以及告警及第三方系统集成等等。通过实际案例分享,展示一个新型的日志动态分析平台如何通过一站式的方案解决日志运维管理中的挑战,帮助用户敏捷且高效地完成运维管理工作。

(4) 期望收获

  • 端到端快速高效搭建简单Nginx运维管理的实操案例
  • 使用一体化日志分析工具平台的最佳实践
  • 手把手的异构数据解析和关联分析的实战经验

2、实践场景:Nginx运维管理

(1) 数据源

来自Nginx的access log (包含所有客户端请求信息),属于日志类型数据。

  • 时序文本型。
  • 具备一定格式而非结构化。
  • 格式非固定,具有predefined combined format,也具有各种extended format,依赖于具体配置而变化。

来自Prometheus的CPU监控数据,属于监控类型数据。

  • 时序型(按时间采样)。
  • 结构化数据 (关系型数据库表结构,包含明确字段定义)。

来自CMDB的映射数据,属于静态数据。

  • 非时序型
  • 结构化数据 (IT资产与业务资产的关系数据,包含:FQDN,IP,Service等的相关映射关系)

(2) 场景特点

  •  对log这类动态非结构化数据的解析。
  •  多源异构数据的关联分析:Nginx + Prometheus + CMDB。
  •  运维管理场景下,需求灵活多变且会持续迭代。

二、实践案例

1、场景实现准备

应用

应用是平台提供的一种实现不同场景的方式,让用户将创作的仪表板、告警等资源有序地组织起来,打造完整的解决方案。

如下图所示,利用鸿鹄平台,创建了一个名叫“Nginx运营管理”的应用,之后所有的操作,以及所有分析资源本身都会包含在所创建的这个应用当中。

轻松利用日志动态分析平台玩转Nginx运维管理

因此,实现某一通用场景的最佳实践就是创建“应用”,进而通过打包等方式实现“共享”。

数据源

数据集是一个一组事件的集合,用来存储事件的容器。每一个查询,都需要描述清楚从哪个数据集开始进行查询。导入数据的时候,都需要明确指出事件存储在哪个数据集中。

如下图所示,完成应用的创建后,下一步需要新建数据集。

轻松利用日志动态分析平台玩转Nginx运维管理

数据源类型

数据源类型用于对具有统一类型属性的数据进行集合处理。平台中的数据源类型包含一系列的属性,定义了对数据的各类解析处理规则,例如数据索引阶段的抽取模式、查询阶段的抽取模式、字段分隔符等。平台内置了多种开箱即用的数据源类型,包含ncinx accesslog,Apache access log,syslog等。数据源类型对应字段_datatype,是一个字符串,用来标记事件原始数据的格式等元信息。

在实际使用的过程中,推荐用户优先定义数据源类型,用来限定该数据的适用范围;必要时还需自定义一些字段加工规则,用来和数据源类型进行一一对应。

轻松利用日志动态分析平台玩转Nginx运维管理

2、数据处理流程

(1) 数据导入

鸿鹄系统支持各类数据源的自动化导入操作,通过数据采集器或数据连接器,将数据从不同的数据源拉取并汇总到鸿鹄系统中。同时数据的格式也是多种多样的,包括文件类型、数据库类型、Kafka类型等。

  • 日志数据导入

注:此演示为手动导入过程,实际生产中多为自动化导入,关于自动化导入的实现,请参考使用手册中的“数据导入”章节设定数据源类型。

轻松利用日志动态分析平台玩转Nginx运维管理

完成数据上传后,在预览界面选择自定义的数据源类型。利用鸿鹄系统实现对时间字段的自动化提取,并通过预览数据的方式确认时间字段提取的正确性。

  • 设定目标数据集

轻松利用日志动态分析平台玩转Nginx运维管理

将数据存放在目标数据集中,如上图所示,支持通过数据源主机来区分不同的数据来源,以达到数据源区分的目的,避免混乱。

  • 数据导入验证

轻松利用日志动态分析平台玩转Nginx运维管理

  • CPU监控数据
  •  设定数据源类型

轻松利用日志动态分析平台玩转Nginx运维管理

由于CPU数据为csv文件,因此采用内置的csv数据源类型就可以进行导入(平台支持csv类型文件的时间字段自动识别功能)。

  • 设定目标数据集

轻松利用日志动态分析平台玩转Nginx运维管理

同样地,通过数据源主机以及数据源的方式,对数据来源进行区分。

  • 资产关系映射数据

资产映射数据是相对“静态”、不带时间属性的数据,表达从A到B的映射关系。对于这类数据,鸿鹄系统支持用户通过构建“查找表”来记录这种映射关系,实现资产映射的管理。

  • 构建“查找表”

轻松利用日志动态分析平台玩转Nginx运维管理

上图中,构建了fqdn、ip、service这3个查找表。新建查找表的具体界面如下图所示。

  • FQDN <-> 系统 映射表

轻松利用日志动态分析平台玩转Nginx运维管理

  • IP <-> 系统 映射表

轻松利用日志动态分析平台玩转Nginx运维管理

  • URL节点<-> Web服务模块 映射表

轻松利用日志动态分析平台玩转Nginx运维管理

(2) 数据解析

完成了数据的导入,下一步是解析数据,提取数据字段,为建模做准备。对于本例中的数据格式,由于其是非结构化数据,故采用正则表达式的方式来提取字段。在鸿鹄系统中,正则解析方式有两种实现方式:互动划词,和手动编辑。

  • 方式1:互动划词 (“数据管理” -> “字段加工” -> “新建规则应用”)
    轻松利用日志动态分析平台玩转Nginx运维管理

上图可以看出,蓝色方框内彩色部分是手动划分的词;完成划词后,会提示输入字段名称(右下角红色圆圈);确定字段名称后,鸿鹄系统将自动生成正则并提取字段,并提供预览界面,实现可视化互动。

  • 方式2:手动编辑

如果遇到较为复杂的正则表达,样例数据不能满足已有的正则匹配,则可以进行一些手动的编辑。一般首先利用互动划词生成自动化正则表达式,然后使用手动编辑的方式进行调整。

轻松利用日志动态分析平台玩转Nginx运维管理

(3) 数据建模

完成字段的解析,下一步就是对数据进行建模,根据Nginx运营管理场景的需求来实现逻辑,包括两种方式:

  • 利用视图构建虚拟模型
    轻松利用日志动态分析平台玩转Nginx运维管理

视图,是由SQL语句组成的查询定义的虚拟表,是一个逻辑上抽象的虚拟表,用来存储查询逻辑。实际应用中,可以利用视图进行过滤、分桶等操作。

  • 利用物化视图构建物理模型

轻松利用日志动态分析平台玩转Nginx运维管理

物化视图是一种特殊的物理表,"物化"(Materialized)了查询的结果。和普通视图仅保存SQL定义不同,物化视图会存储SQL预计算结果的数据集,适用于数据聚合加速等场景。

在实际应用中,建议通过视图来构建物化视图,这样会让概念逻辑更加清晰,具有结构化的意义,修改或者调整的成本更低。

此外,建议用户为各资源定义合理的命名规范(如vw,mat等),以区分视图和物化视图。

(4) 数据可视化

完成了模型的构建,下一步即可创建图表,以实现可视化。在鸿鹄系统中,可以通过仪表板构建多个图表。以HTTP网络流量统计为例,实现过程如下:

  • 图表构建

第1步:数据探索 -> 生成期望的分析结果数据。

轻松利用日志动态分析平台玩转Nginx运维管理

首先基于实现的场景来进行数据探索,如上图所示,通过SQL实现该场景下的一些计算逻辑,生成分析结果数据;进而将其添加到可视化的UI板中,生成可视化图表。

第2步:根据分析结果数据直接创建可视化图表,按需更改钻取交互的配置图表构建。

轻松利用日志动态分析平台玩转Nginx运维管理

第3步:调整可视化图表的属性,达到预期展现效果。

轻松利用日志动态分析平台玩转Nginx运维管理

完成图表创建后,通过调整可视化的仪表板的各类属性,即可达到用户预期的展现效果;该模块支持用户自定义,以及eCharts等更高级的功能。

轻松利用日志动态分析平台玩转Nginx运维管理

  • 仪表板构建——Nginx运营管理

类似上述的过程,创建多个图表,最终构建成一个仪表板。以“Nginx运营管理”这一实际使用场景为例:

轻松利用日志动态分析平台玩转Nginx运维管理

其中,所有图表均由“日期”下拉框决定时间范围和“系统名称”,下拉框决定观察对象。具体图表包括:

  • HTTP网络流量统计 (MB)
  • 页面访问量PV
  • 页面访问量PV vs. CPU使⽤率
  • HTTP请求方法分布
  • HTTP请求状态码分布 (图表4中钻取的时间段)
  • 访问来源分布
  • 访问来源客户端类型分布
  • Top10访问来源模块统计
  • Top10热门页面访问统计
  • 页面访问失败统计
  • 异常操作记录

以上这11种图表涵盖了大多数通用的应用场景。其中,图表④和图表⑤之间形成联动。

轻松利用日志动态分析平台玩转Nginx运维管理

(5) 扩展话题

完成了仪表板的构建,下面分享一些扩展话题。

  • 告警开发

基于查询字段以及建模的视图物化视图,可以进行告警开发。例如前文所述,可基于仪表板中的异常操作记录进行告警开发,以确保异常记录的时效性。

  • 创建“告警”

轻松利用日志动态分析平台玩转Nginx运维管理

如上图所示,利用自定义触发条件设定阈值,进而形成告警记录;再通过邮件、webhook等方式将告警结果通知给相关人员。

  • “告警”执行历史

轻松利用日志动态分析平台玩转Nginx运维管理

通过告警记录查询,达到良好的管理目的。

  • 第三方集成

前文所述,是鸿鹄自研的仪表板上完成的开发。此外,鸿鹄系统还可以集成到第三方可视化组件(例如Grafana等)中。

  • 可视化部分 -> Grafana

鸿鹄系统集成Grafana,其核心思想是将复杂的计算逻辑放到鸿鹄系统来处理,将Grafana作为可视化工具来呈现结果。这里简单分享一个在Grafana中集成鸿鹄系统的操作步骤,更详细的操作流程可以参照相关操作文档。

 在Grafana中添加鸿鹄插件。

轻松利用日志动态分析平台玩转Nginx运维管理

配置鸿鹄链接信息。

轻松利用日志动态分析平台玩转Nginx运维管理

构建 SQL 查询。

轻松利用日志动态分析平台玩转Nginx运维管理

生成可视化展现。

轻松利用日志动态分析平台玩转Nginx运维管理

  • 第三方集成(封装数据接口)

鸿鹄系统还可以实现数据接口的封装功能,将复杂的SQL语句封装成查询工具。

创建“SQL表函数”。

轻松利用日志动态分析平台玩转Nginx运维管理

在鸿鹄系统中,将复杂的查询计算逻辑“包装”成“SQL表函数”,如上图所示,该“SQL表函数”包括函数参数及参数类型,函数的输入和输出都是数据表格;用户自定义函数逻辑将表格A转化为表格B。

调用“SQL表函数”。

应用过程中可以直接调用包装好的“SQL表函数”,因此对于下游用户接口的使用非常便捷。这样,可以将复杂逻辑甚至是Grafana不支持的逻辑,借助接口工具得以实现;详见下图举例,优化前文中Grafana集成的步骤3(构建SQL查询):Grafana通过调用“SQL表函数”接口直接实现可视化操作,从而实现数据计算和数据可视化之间的解耦。

轻松利用日志动态分析平台玩转Nginx运维管理

三、总结和回顾

1、实践产出

通过数据导入、数据解析、数据建模和数据可视化等操作,最终实现了Nginx运维的一个完整的场景应用,实现了该场景下的数据监控和分析。这就是一个典型的实践产出。

  • 一个完整场景应用

完成Nginx运营管理场景分析和监控需求。

充分满足场景特点:

  • 实现简单化的非结构化数据动态解析,无需编程语言开发,只需字段加工配置调整;
  • 实现非结构化数据和结构化数据关联分析,无需显式类型转换便可以直接快速关联;
  • 实现灵活应对多变的运维管理需求,无需端到端代码重构,仅需数据模型迭代

可共享,易迁移。

轻松利用日志动态分析平台玩转Nginx运维管理

下图是该场景下的界面展示示例:

轻松利用日志动态分析平台玩转Nginx运维管理

2、总结回顾

Nginx运营管理是个通用的、普遍的需求,不同团队会使用不同的工具去实现这个需求。炎凰数据使用鸿鹄平台完成了基础版的Nginx运营管理实现,使用到了鸿鹄的诸多基本功能,包括应用、数据集、数据源类型、查找表、字段加工、视图、物化视图、仪表板、告警、SQL表函数等。鸿鹄系统的更多功能也等待用户的挖掘。

此外,我们帮助大家总结了一些最佳实践,避免大家在使用的过程中“绕弯路”。

  • 创建“应用”
  • 自定义“数据源类型”
  • 确认时间字段的抽取正确性
  • 通过“数据源主机”和“数据源”区分数据来源
  • 使用“查找表”
  • 有效结合“互动划词”与“手动编辑”
  • 利用视图:行过滤 and/or 列过滤 and/or 时间分桶
  • 利用物化视图:聚合加速
  • 基于视图构建物化视图
  • 为各资源定义合理的命名规范,如:vw,mat等
  • 参考生成各图表所需的数据样例文档章节,合理分配维度和度量
  • 自定义图表
  • 灵活利用自定义触发条件设定阈值
  • 利用Webhook对接外部网关,例如即时通讯工具等
  • 利用“SQL表函数”封装逻辑,构建数据接口

该平台旨在让用户从繁琐的事情中解放出来,提高工作的效率。

本次分享只是开始,更多更丰富的场景等您来挖掘!

四、Q&A

Q1:数据解析规则和数据源类型是一一对应的关系吗?

A1:在鸿鹄系统中,这样的绑定关系并不是一对一的关系,而是多对多的关系。同一套规则可以应用于不同的数据源,实现数据间规则的共享;同样,同一数据源也可绑定不同的规则,形成规则“pineline”。

Q2:告警配置中的限制秒是什么?

A2:限制秒是告警配置中的一个必填项。假设监控CPU使用率,当CPU使用率达到80%将会设定一级报警,而运维人员的处理则往往会需要一定的时间延迟;这样在运维人员处理之前就会重复报警,生成冗余报警信息,甚至曹诚告警风暴;因此,通过限制秒的方式,在限制秒的时间内避免重复报警;如果时间超过了限制秒,而报警仍未得到处理,则会再次报警。

Q3:默认告警有自带的短信等配置方式吗?

A3:自带方式是没有的,一般最佳实践是通过webhook的方式将告警信息post出去,和外部系统实现对接;如果采用短信方式,则需要进行短信网关等的设置,需要进行针对性的开发和对接,目前没有预定义的方式。

Q4:是不是将所有来源的数据都导入到同一数据集才能实现数据关联?

A4:本文所演示的案例中,是将3个数据源导入到同一数据集;但这样的操作不是必须的,鸿鹄系统支持对多源异构数据进行直接关联,并没有数据集的限制,用户可以根据实际的应用场景去构建数据集的分布,更好地实现数据管理的目的。

Q5:使用鸿鹄需要先掌握什么技能?上手会比较困难吗?

A5:鸿鹄系统主要需要SQL技能,使用基本的SQL语法就可以实现基于鸿鹄系统的开发;而对于一些高阶的场景,鸿鹄本身已经包装好了部分函数(包括Python/ target=_blank class=infotextkey>Python函数、JAVA函数、C++函数等)供用户使用,大大降低了用户的开发门槛。



Tags:Nginx   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
为什么Nginx被称为“反向”代理呢?
Nginx(发音为"engine-x")是一款高性能、轻量级的开源Web服务器软件,也可用作反向代理服务器、负载均衡器和HTTP缓存。Nginx之所以有被称为“反向”代理,是因为它充当客户端设备...【详细内容】
2024-02-01  Search: Nginx  点击:(59)  评论:(0)  加入收藏
如何在Java环境中安装Nginx?
1. 下载Nginx:首先,前往Nginx官方网站(https://nginx.org/en/download.html)下载新版本的Nginx。选择适合您操作系统的版本,通常有Windows、Linux和Mac等不同操作系统的版本可供...【详细内容】
2024-01-22  Search: Nginx  点击:(59)  评论:(0)  加入收藏
一文教你学会使用Nginx
前段时间,了不起给大家说过如果使用 Docker 发布自己的后端项目,也就不再使用 Jar 包进行项目的发版操作,但是这其中就又涉及到了前端如何发版,为什么这么说,因为资深前端开发,可...【详细内容】
2023-12-27  Search: Nginx  点击:(87)  评论:(0)  加入收藏
Nginx 反向代理为什么叫做“反向”?
今天我们来聊聊正向代理和反向代理。01 正向代理(Forward Proxy)正向代理是位于用户设备和互联网之间的服务器。它代理的是客户端,是站在用户一方的。其真实客户端对于服务器不...【详细内容】
2023-12-06  Search: Nginx  点击:(90)  评论:(0)  加入收藏
Nginx的负载均衡实现,你学会了吗?
环境 主机 ip 用途 软件 web1 192.168.50.60 nginx-1 httpd web2 192.168.50.61 nginx-2 httpd proxy 192.168.50.62 负载...【详细内容】
2023-12-06  Search: Nginx  点击:(145)  评论:(0)  加入收藏
Nginx如何开启GZIP文件压缩,你学会了吗?
简介GZip 是一种改进web应用程序性能的技术,文件压缩后再传输可以减少传输数据,提升传输速度。在Nginx服务器上开启Gzip压缩可以有效减少网络传输流量,提升网站的访问速度和性...【详细内容】
2023-11-30  Search: Nginx  点击:(121)  评论:(0)  加入收藏
Nginx配置文件中的关键字是什么?
Nginx 是一款高性能的 Web 服务器软件,同时也是一款反向代理服务器软件。Nginx 的配置文件通常是 /etc/nginx/nginx.conf,以下是一个典型的配置文件,并对其中的关键字进行详细...【详细内容】
2023-11-22  Search: Nginx  点击:(147)  评论:(0)  加入收藏
Nginx 大揭秘:读写分离助力您轻松征服高并发
引言在构建高性能、高可用的 Web 应用时,如何有效地处理数据库的读写负担已成为一个十分重要的考虑因素。Nginx 作为一款强大的反向代理服务器,提供了简单而灵活的负载均衡配...【详细内容】
2023-11-14  Search: Nginx  点击:(51)  评论:(0)  加入收藏
Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?
k8s发布应用的两种方式: kubernetes-dashboard kubectl命令行一、Dashboard方式配置部署:包含应用名称、容器镒、pod数量、Service非常的方便,不想设置配置yaml的可以很方便的...【详细内容】
2023-11-06  Search: Nginx  点击:(368)  评论:(0)  加入收藏
掌握Nginx的高级用法,构建高性能Web应用
Nginx是一款高性能的Web服务器和反向代理服务器,它广泛用于构建高性能、可靠和安全的Web应用程序。除了基本的用法外,Nginx还提供了一些高级功能和配置选项,可以进一步优化性能...【详细内容】
2023-10-26  Search: Nginx  点击:(218)  评论:(0)  加入收藏
▌简易百科推荐
为什么Nginx被称为“反向”代理呢?
Nginx(发音为"engine-x")是一款高性能、轻量级的开源Web服务器软件,也可用作反向代理服务器、负载均衡器和HTTP缓存。Nginx之所以有被称为“反向”代理,是因为它充当客户端设备...【详细内容】
2024-02-01  coderidea  微信公众号  Tags:Nginx   点击:(59)  评论:(0)  加入收藏
哪种服务器操作系统更好呢?
在当今的IT世界中,服务器操作系统扮演着至关重要的角色。它们是确保服务器能够高效、安全地运行的关键因素。然而,对于许多人来说,服务器操作系统的种类和特点可能是一个复杂的...【详细内容】
2024-01-30    简易百科  Tags:操作系统   点击:(75)  评论:(0)  加入收藏
什么是VPS服务器
VPS服务器是一种虚拟化技术,它将一台物理服务器划分为多个虚拟的独立服务器,每个虚拟服务器都可以拥有自己的操作系统、运行环境、应用程序等。这种技术使得每个虚拟服务器可...【详细内容】
2024-01-30    简易百科  Tags:VPS服务器   点击:(67)  评论:(0)  加入收藏
VPS服务器下载速度慢?这五招帮你提速
VPS服务器下载速度慢可能会让用户感到沮丧,尤其是对于需要大量下载和上传数据的用户。幸运的是,有一些方法可以帮助您提高VPS服务器的下载速度,使您的在线体验更加顺畅。在本文...【详细内容】
2024-01-30  IDC行业观察者    Tags:VPS服务器   点击:(57)  评论:(0)  加入收藏
美国VPS和英国VPS:地理位置对服务器性能的影响
在今天的数字时代,VPS已成为在线业务和网站托管的关键组成部分。然而,选择合适的VPS主机服务时,地理位置通常被忽视,尽管它对服务器性能有着重要的影响。本文将探讨美国VPS和英...【详细内容】
2024-01-26  IDC行业观察者    Tags:服务器   点击:(52)  评论:(0)  加入收藏
如何判断服务器所需带宽:基于业务需求和流量模式的关键考量
在选择服务器时,带宽是一个重要的考虑因素。带宽的大小直接影响到网站的加载速度和用户的访问体验。那么,如何判断服务器需要多大的带宽呢?本文将为你揭示这一关键问题的答案...【详细内容】
2024-01-26  源库科技    Tags:服务器   点击:(74)  评论:(0)  加入收藏
服务器内存空间及IO操作原理解析
服务器的内存空间分为内核空间和用户空间,而我们编写的程序通常在用户空间中运行。在进行读写操作时,我们直接操作的是用户缓冲区,而用户缓冲区的内容来自于内核缓冲区。这种内...【详细内容】
2024-01-23  王建立    Tags:服务器   点击:(42)  评论:(0)  加入收藏
如何在Java环境中安装Nginx?
1. 下载Nginx:首先,前往Nginx官方网站(https://nginx.org/en/download.html)下载新版本的Nginx。选择适合您操作系统的版本,通常有Windows、Linux和Mac等不同操作系统的版本可供...【详细内容】
2024-01-22  敲代码的小动    Tags:Nginx   点击:(59)  评论:(0)  加入收藏
服务器证书和SSL证书有啥区别?
在互联网经济时代,随着越来越多的信息以及合作都是从企业官网开始的,因此绝大多数企业都会为自己的网站配置SSL证书,以提高安全性。在接触SSL证书时,也有很多人称之为服务器证书...【详细内容】
2024-01-10  安信SSL证书    Tags:服务器证书   点击:(65)  评论:(0)  加入收藏
宝塔面板怎样部署java项目?
宝塔面板怎样部署java项目?在使用宝塔面板部署Java项目之前,需要确保已经安装了Java Development Kit (JDK)。接下来,将介绍如何使用宝塔面板来部署Java项目的步骤。步骤一:安装...【详细内容】
2024-01-09  西部数码    Tags:宝塔面板   点击:(105)  评论:(0)  加入收藏
站内最新
站内热门
站内头条