作家
登录

如何快速实现一个基于Nginx网站的监控场景

作者: 来源: 2017-07-07 17:03:57 阅读 我要评论

日记清洗

持久化表设计

除了要针对监控项做出合适的表库设计,并尽量避免索引热点以外,还须要推敲当数据结不雅因为及时F算层不稳定反复计算时若何包管数据库写入幂等性,这对表构造设计是一个不小的挑衅。

延迟数据归并

如不雅因为应用原因导致 Nginx 日记数据被延迟发送,若何包管比如晚到 1 个小时的数据能被及时F算引擎精确计算并将结不雅归并到之前的结不雅。

报警

针对所有结不雅须要设置准时义务每分钟对数据进行遍历萌芽。比如针对任何返回 500 调用缺点跨越 5% 占比的办事,须要所有办事进行多次的调用结不雅进行遍历萌芽。若何不漏掉所有的办事缺点检查的同时包管高效力萌芽也是个不小的挑衅。

报警精确性

有的时刻因为日记延迟,上一分钟部分办事器正常日记还没采集全,导致局部 500 调用缺点的办事临时跨越 5%,类似缺点是否须要报警?如不雅报警,有可能误报,不报警的话,可能漏报,怎么处理呢?

若何统计 UV、TopN

“听起来不错,看来我的项目有救了,我赶紧去看看。”

以 UV 为例。如不雅要跨随便率性时光度萌芽 UV,则惯例手段还须要在数据库中存入每单位时光(如分钟级别)的全量 IP 拜访信息。这对于存储应用率来讲显然是无法接收的。有没有更优化的筹划?

针对缺点场景的┞凤断办法

针对各类返回值 500 的调用缺点,营业方提出欲望出现 500 缺点时能根据时光和调用办事维度萌芽到具体的调用入参和其他详情,其场景和日记搜刮类似。对于类似新参加需求,貌似经由过程及时聚合计算和存储不克不及直接办到。须要对日记另辟门路另行处理。

以上问题还不包含前段展示的各类问题。

掐指一算,两个月晃眼过了。项目还没弄完一半,小明有点急了。

别的一种新的思路

小明晚上约了本身的同门师兄老丹搓串。就着小酒,小明把本身比来的烦苦衷大年夜头到尾跟老丹说了一遍。

老丹听了一拍大年夜腿:“小明,你这就奥特了。其实袈溱阿里云上有一款云产品, 叫做营业及时`控,简称 ARMS,根本上你碰到的┞封些问题,在 ARMS 上已经供给了一站式的解决筹划,你只须要快速接入即可。”。

“噢,是么?我们营业的监控逻辑很多都是基于 Nginx 日记定制,ARMS 具备接入 Nginx 日记的才能,并许可让我定制营业监控才能么?“小明问道。

“当然。ARMS 上不仅供给监控 Nginx 的义务模板,本身自带报警和监控报表,同时还全程开放定制才能。如不雅你要增长本身的营业监控逻辑,或者删除或修改本身不要的通用监控逻辑,直接在其平台上定制即可。”老丹答道。

undefined

“听起来不错。最终结不雅除了报表和报警外,公司的下流营业平台也能用么?”

“可以的,ARMS 供给 API, 下流体系直接对接数据 API 即可,跟你在云上直接读数据库没什么本质差别。”

实现一个基于 Nginx 的网站监控场景

今朝在监控范畴上比较风行的数据处理办法有很多种,例如,搜刮引擎,时光序列数据库,及时F算,甚至是大年夜数据离线计算,等。

对于Nginx监控,最常见的指标为以下几类指标:

开辟时代为了获取到相干应用为了调剂对于日记的推送逻辑,须要在每台 Nginx 日记内容变革今后再在每个办事端变革 API 的推送逻辑,变革过程冗长且轻易掉足。

因为 ARMS 的分析是针对 Nginx 的 access.log 日记,是以对 Nginx 日记有必定请求,须要用户在 nginx.config 中设备出打印内容,包含:“$upstream_response_time” “$request_time” 等代表请求消费时光的日记信息。如下例:

  1.  log_format   main '$remote_addr - $remote_user [$time_local]  $status ' 
  2. '"$request" $body_bytes_sent "$http_referer" ' 
  3. '"$http_user_agent" "$http_x_forwarded_for"' 
  4. '"$upstream_response_time" "$request_time" "$ user_cookie_id"' ;   

如许的话,打印出的日记,大年夜致如下表所示。

  1. 58.211.119.29 144288 - [16/Mar/2017:21:47:07 +0800] "POST http://arms.console.aliyun.com/api/query.json?action=DataQueryAction&eventSubmitDoQueryData=http://os.51cto.com/art/201707/1" 200 594 "https://arms.console.aliyun.com/" "127.0.0.1:8080" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4"

      推荐阅读

      如何实现模拟人类视觉注意力的循环神经网络?

    道理篇本文所用的代码在https://github.com/SquarePants1991/OpenGLESLearn.git的ARKit分支中。iOS11推出了新框架ARKit,经由过程ARKit和SceneKit可以很便利的制造AR App。苹不雅也供给了>>>详细阅读


    本文标题:如何快速实现一个基于Nginx网站的监控场景

    地址:http://www.17bianji.com/lsqh/36093.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)