10 分钟内快速构建可以承载海量数据的 nginx 日志分析与报警平台

nginx 是现代 Web 服务栈中最重要的组件之一,绝大部分互联网公司都会经过分析监控 nginx 日志来定位业务性能瓶颈和故障诊断等。nginx

一般,若是想构建一套具备实时数据监控、日志搜索和分析功能的大数据平台:首先须要选择数据收集工具,如目前比较流行的 logstash(filebeat)、fluntd、flume 等;而后依托 Prometheus 或 InfluxDB 实现数据的实时监控,并结合可视化工具(如 Grafana )实现数据的可视化展现;与此同时,为了达到高效日志搜索的目的,还须要运用 Elasticsearch 技术搭建搜索和分析引擎,并结合 Kibana 进行页面展现。而实现以上功能不只须要有资深大数据背景的技术团队和漫长的开发周期,上线后还要投入精力持续维护迭代。当数据量持续上升时,还须要考虑横向扩展能力,不然就不得不面对众多开源组件崩盘的风险。git

七牛大数据平台 Pandora 是一套面向海量数据,可以让基础技术人员轻松管理大数据传输、计算、存储和分析的大数据 PaaS 平台,核心服务及功能包括大数据工做流引擎、时序数据库、日志检索服务、Spark 服务、报表工做室。github

基于七牛大数据平台 Pandora,不到 10 分钟就能够彻底实现一套可承载海量数据的 nginx 日志分析与报警平台,无需考虑部署运维难题,更有海量离线数据分析等众多大数据分析工具支持。数据库

如下是操做详情json

系统功能要求

  • 海量数据支撑
  • 快速接入,无侵入式配置,快速部署使用
  • 多种类型分析、分词、加工、变换
  • 实时监控,数据可视化( Grafana 用户无障碍迁移)
  • 离线分析,发现数据更大价值
  • 计算结果导出到用户自身,快速回流

监控内容

nginx 的访问日志( access.log )七牛云存储

快速开始

一、数据接入

根据您机器的操做系统版本下载 logkit( logkit 是七牛云推出的一款开源数据收集工具)bash

下载地址:github.com/qiniu/logki…服务器

解压后您能够看到:运维

logkit
logkit.conf
confs/default.conf复制代码

其中 logkit.conf 为主配置文件,用于配置监听的子配置文件夹,修改主配置文件须要重启 logkit。工具

您须要将其中的 confs_path 地址设置要监听的子配置文件夹路径。confs 文 件夹就是一个示例的子配置文件夹,子配置文件的更新无需重启 logkit,会被 logkit 实时监听,咱们在子配置文件中设置实际要收集的各类配置文件。

下面咱们将为您介绍如何配置子配置文件以收集 nginx 的日志。

明确本机的 nginx 配置文件 log_format 位置如图 1

图 1
图 1

假设该配置文件路径为: /opt/nginx_logs/logs/access.log

明确服务使用的 nginx 日志样式,如图 2

图 2
图 2

假设咱们使用的 nginx 日志样式为 main

根据咱们明确的 nginx 配置文件,填写 nginx 日志收集的 logkit 配置文件,如图 3,填写内容覆盖到 confs/default.conf 便可

图 3
图 3

{
  "name":"nginx_runner",
  "reader":{
   "mode":"file",
    "meta_path":"meta",
    "log_path":"/opt/nginx_logs/logs/access.log"
  },
  "parser":{
    "name":"nginx_parser",
    "type":"nginx",
    "nginx_log_format_path":"/opt/nginx/conf/nginx.conf",
    "nginx_log_format_name":"main",
    "nginx_schema":"time_local date,bytes_sent long,request_timefloat,body_bytes_sent long",
    "labels":"machine {machineNumber},team {opTeam}"
},
  "senders":[{
    "name":"pandora_sender",
    "sender_type":"pandora",
    "pandora_ak":"your_ak",
    "pandora_sk":"your_sk",
    "pandora_host":"https://pipeline.qiniu.com",
    "pandora_repo_name":"my_nginx_log",
    "pandora_region":"nb",
    "pandora_schema_free":"true",
    "pandora_gzip": "true",
    "pandora_enable_logdb":"true",
    "fault_tolerant":"true",
    "ft_save_log_path":"./ft_log",
    "ft_strategy":"always_save",
    "ft_procs":"2"
}]
}复制代码

除了 nginx 日志,logkit 还支持收集其余日志,更多 logkit 的高级用法,参见 logkit wiki文档

运行 logkit

nohup ./logkit -f logkit.conf > logkit.log 2>&1

二、数据加工

登陆七牛官方网站,在大数据工做流引擎中便可看到已经建立的数据传输通道,如图 4

图 4
图 4

在日志检索界面查询数据,如图 5-1 所示

图 5-1
图 5-1

至此,您已经能够经过搜索玩转您本地的数据啦。

除了默认导出一份到日志检索以外,您也能够回到大数据工做流引擎,根据您的须要任意建立针对实时数据流的自定义计算并导出,如图 5-2 所示。

图 5-2
图 5-2

通过多种实时计算变换的数据,除了导出到 Pandora 已有的日志检索、时序数据库以及对象存储之外,还能够根据须要,导出到您本地假设的 http 服务器上,即在 Pandora 进行数据计算后将结果回流到您的平台落地,如图 5-3 所示。

图 5-3
图 5-3

固然,导出到对象存储的数据,还能够在工做流引擎中建立离线计算工做流,再次进行数据加工聚合计算并导出,如图 5-4 所示。

图 5-4
图 5-4

在离线计算的工做流引擎,你能够根据须要周期性的运行您的计算任务,如定时分析一天的数据、一周的数据,出一份日报、周报等。

####三、实时数据展现与监控

咱们提供建立并配置 Grafana 进行监控。
建立 Grafana App,如图 6 所示

图 6
图 6

配置 Grafana LogDB 数据源,如图 7 所示,点击 logdb 使用指南,能够按照使用指南的指导在 Grafana 配置数据源。


图 7
图 7

注意事项

  • Default Query Settings中, Group by interval 填写时间 10s,注意单位为 s, m 等,不能漏掉,必须小写。

  • Time Field Name 处填写您的 logdb 时间字段, 填您 nginx 配置的命名,在上述的截图示例中,是 time_local , 没有默认的 $ 符号

  • Index name中,模式固定为 Daily , 串固定为 [reponame-]YYYY.MM.DD , 将reponame 字符串改成您的数据源名称便可。

  • Version 固定为 2.x

载入现成的 Grafana 配置

下载 json op26gaeek.bkt.clouddn.com/logdbgrafan… Grafana 界面导入 json,并选择数据源。最终您将看到的效果,如图 8-1 所示

图 8-1
图 8-1

仅仅以 nginx 日志为例,您能够看到哪些十分有价值的数据呢?实时总用户访问量(请求数统计),如图 8-2 所示

图 8-2
图 8-2

机器请求数随时间变化趋势,如图 8-3 所示

图 8-3
图 8-3

实时请求状态码占比,如图 8-4 所示

图 8-4
图 8-4

实时请求 TOP 排名,如图 8-5 所示

图 8-5
图 8-5

实时请求来源 IP TOP 排名,如图 8-6 所示

图 8-6
图 8-6

响应时间随时间变化趋势图,如图 8-7 所示

图 8-7
图 8-7

实时用户请求的客户端 TOP 排名,如图 8-8 所示

图 8-8
图 8-8

实时根据不一样状况进行具体数据的查询,包括状态码、响应时间范围进行筛选等,如图 8-9 所示

图 8-9
图 8-9

其余更多自定义配置...自定义的 Grafana DashBoard 配置示例,如图 9 所示

图 9
图 9

在此,您能够经过 Grafana,经过您的 nginx 日志完整而详尽地了解您业务的流量入口的各种状况。

报警
除此以外,咱们还为您建立的 Grafana 提供了完善多样的报警功能。
首先设置下 Grafana 报警的 Channel,如图 10 所示。

图 10
图 10

点击 New Channel 按钮,您能够在 Type 那边选择包括 Slack, Email 邮箱,Webhook 等十来种报警方式。

设置好报警的 Channel 之后,回到 Dashboard 界面,您就能够愉快的设置报警啦。好比说如图 11,咱们设置了一个响应时间大于 1000ms 的报警

图 11
图 11

LogDB 采用的是基于 Elasticsearch 协议的报警,这个 Grafana 的功能是七牛独家哦!
那么您能够看到报警形式是怎么样的呢?

图 12
图 12

看到图 12 Slack 上的报警了吗?除了基本的文字,还会带上酷炫的报警图片!图片都会被存储到您七牛云存储的 bucket( grafana-alert-images ) 里面!

图 13
图 13

邮件报警内容也同样酷炫!

离线分析

除了实时的分析外,您还能够建立离线的XSpark,分析更多更久的海量数据,详见 [XSpark使用入门]

相关文章
相关标签/搜索