当前位置: 首页 > news >正文

计算机网站建设知识国家信用信息公示系统的官网

计算机网站建设知识,国家信用信息公示系统的官网,长沙网站制作公司怎么做,WordPress 5.0升级前言 业务监控对许许多多的场景都是十分有意义#xff0c;业务监控看板可以让我们比较直观的看到当前业务的实时情况#xff0c;然后运营人员可以根据这些情况及时对业务进行调整操作#xff0c;避免业务出现大问题。老黄曾经遇到过一次比较尴尬的“事故”。其中一条业务线业务监控看板可以让我们比较直观的看到当前业务的实时情况然后运营人员可以根据这些情况及时对业务进行调整操作避免业务出现大问题。老黄曾经遇到过一次比较尴尬的“事故”。其中一条业务线服务着的其中一个商家把大部分流量切到另外一个地方去了而我们的运营人员在当天却是完全不知情第二天看了昨天的统计报表之后才发现这个商家的量少了很多才能跟进协调处理。ps: 当时实时报表比较欠缺都是第二天凌晨生成昨天的数据报表也没有告警机制。后面就弄了个大屏幕做了业务监控的实时看板看一眼就知道有什么风吹草动了。先来看一下最终的效果图。这个图里面主要包含了下面几个内容。总的订单数量退单的数量创建订单的频率不同渠道的订单量不同渠道的退单量下面就介绍一下如何实现这样的业务监控。搭建基础设施 这里涉及的基础设施就有两个一个是prometheus另一个是grafana。先启动prometheus这里直接用docker启动。$base Split-Path -Parent $MyInvocation.MyCommand.Definition $prometheusyml Join-Path $base prometheus.yml $fileconfig Join-Path $base configwrite-host $prometheusyml write-host $fileconfigdocker run --name prom -p 9090:9090 -v ${prometheusyml}:/etc/prometheus/prometheus.yml -v ${fileconfig}:/etc/prometheus/fileconfig prom/prometheus:v2.20.1 下面是prometheus.ymlglobal:scrape_interval:     15s evaluation_interval: 15salerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093rule_files:scrape_configs:- job_name: file_dsfile_sd_configs:- refresh_interval: 10sfiles:- ./fileconfig/*.yml 这里用了基于文件的发现机制没有用静态的。更多其他方式参见  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config这个时候prometheus已经是运行起来了。再来就是grafana了启动这个更加简单。docker run -d --name grafana -p 3000:3000 grafana/grafana:7.1.3 执行完访问 localhost:3000 就可以看到登录界面了。确定业务指标(metrics) 确定指标可以说是整个业务监控中最最最最最为主要的一个环节了只有明确了我们要监控什么我们才可以在业务上去进行埋点拿到想要的数据。这个其实和我们平时面对的需求是一个样的需求明确了做出来的东西才可能是我们想要的需求不明确做出来的东西可能就不会是我们想要的了。为了帮助大家简单的理解相关的内容这里举个监控的例子监控不同渠道的下单和退单量。涉及到量的在一天内基本上是属于只增不减的这个时候我们一般会选用 counter 类型来处理。一个是下单一个是退单所以这里定义两个yyyorder_created_totalyyyorder_canceled_totalcounter类型的一般在命名的时候最好都用_total作为结尾。还有不同渠道呢渠道我们就用 lable 来标识一下。最后展现格式大致如下yyyorder_created_total{appkeymt,opreatorcw} 1 yyyorder_canceled_total{appkeypdd,opreatorcw} 2 这里也要注意一个问题确定指标的时候也要避免定义太多指标出来如果可以考虑用label去进行区分同性质的内容。业务埋点 在明确了业务指标之后就要在对应的业务上去进行埋点操作会对业务代码有一定的侵入性当然如果业务代码写得足够好耦合的东西少或许可以借助AOP来埋点从而降低侵入性。后面就写个简单的例子来模拟业务埋点这一块。创建一个ASP.NET Core的项目并安装prometheus-net.AspNetCore这个nuget包。ItemGroupPackageReference Includeprometheus-net.AspNetCore Version3.6.0 / /ItemGroup 其次是启用 ASP.NET Core exporter middlewarepublic void Configure(IApplicationBuilder app, IWebHostEnvironment env) {if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints {// 这一句。endpoints.MapMetrics();endpoints.MapControllers();}); } 最后就是埋点了。[ApiController] [Route()] public class HomeController : ControllerBase {private static readonly Counter OrderCreatedCount  Metrics.CreateCounter(yyyorder_created_total, Number of created orders., new CounterConfiguration{LabelNames new [] { appkey, opreator }});private static readonly Counter OrderCanceledCount  Metrics.CreateCounter(yyyorder_canceled_total, Number of canceled orders., new CounterConfiguration{LabelNames  new[] { appkey, opreator }});[HttpGet]public string Get(){var appKeys  new[] { ali, pdd, mt };var opreators  new[] { cw, pz };var rd  new Random((int)DateTimeOffset.Now.ToUnixTimeMilliseconds()).Next(0, 2000);var appKeyidx  rd % 3;var opreatoidx  rd % 2;OrderCreatedCount.WithLabels(appKeys[appKeyidx], opreators[opreatoidx]).Inc();var cRd  new Random((int)DateTimeOffset.Now.ToUnixTimeMilliseconds()).NextDouble();if (cRd  0.3d){OrderCanceledCount.WithLabels(appKeys[appKeyidx], opreators[opreatoidx]).Inc();}return ok;} } 上面这个控制器中创建了两个Counter就是上面确定业务指标中定义好的。这里是每访问一次就创建一个订单同时生成一个随机数如果是小于0.3那么就当它是退单的这样就可以把两种指标都模拟出来了。程序刚启动是有部分默认指标的。当我们访问埋点的地址后可以发现我们自定义的业务指标也已经有数据了。到这里数据已经有了我们要怎么呈现呢要想呈现数据我们需要先让prometheus来保存我们的业务指标数据。数据写入 把数据写入prometheus有两种方式一种是pull一种是push。pull是让prometheus主动去拉取我们产生的数据只要我们暴露一个地址出来即可这种也是比较推荐的做法。push方式要借助pushgateway埋点数据要先主动推送到pushgateway后面在由pushgateway把数据写进prometheus。默认情况下当我们用了endpoints.MapControllers();之后就会把数据暴露在 http://ip:port/metrics 这个地址上。知道要用pull的方式后还要做什么呢当然就是要去配置promethues了。前面我们的 scrape_configs 是通过文件去自动发现的所以只要在挂载的路径上面加一个对应的yml文件就可以了。老黄这里加了一个nc-service.yml具体内容如下- labels:service: ncproject: demotargets: - 192.168.1.103:9874- 192.168.1.103:9875 这个时候就可以在Targets里面看到我们这两个地址的信息了。通过prometheus的默认界面也可以发现数据已经正常读取了。后面就是真正的数据查询和展示了。数据展示 通过上面的步骤我们已经保证数据可以正常写入和查询了现在就在grafana中创建一个业务监控看板了。在grafana中先配置我们的数据源。这里填上我们prometheuse的地址保存就可以了可以看到那个绿色的提示告诉我们这个数据源是正常工作的了。先来一个总的订单数。创建一个新的dashboard再创建一个Panel。我们在panel中填写我们的信息还有就是选择要的图形。然后就是写上查询条件就可以看到我们要的结果了。订单总数这个查询如下sum(ceil(increase(yyyorder_created_total[1d]))) 里面用到了 sum、ceil、increase这三个函数。其中 increase 是用来统计一段时间范围内的增量。后面带了 [1d] 这个范围表明这里是查看1天内的增量。ceil是用来把increase的结果进行四舍五入的可能有人会好奇怎么还会要四舍五入呢看看下面这个图大家就会发现非常多的小数点。其实这个和prometheus的统计方法是有关系的这里不展开先这样用着。sum 这个是用来求和的指标中还包含了很多label我们还要把每个label的求和才是真正的结果。所以这里就得到了下面这个结果。退单总数的查询和订单总数一样只是把名字换成退单的即可。sum(ceil(increase(yyyorder_canceled_total[1d]))) 再来看看各渠道的订单统计。既然是看各渠道的统计那么这里就要用到前面定义好的label了。appkey代表的就是渠道那么我们基于它去分一下组就可以了。就得到下面的查询。sum by (appkey) (ceil(increase (yyyorder_created_total[1d]))) 结果如下同理各渠道退单的也是一样的写法sum by (appkey) (ceil(increase (yyyorder_canceled_total[1d]))) ps: 如果想把订单和退单的放在一个图里面可以加多个查询。示例如下现在有了所有渠道的总量各个渠道独立的总量那么我们有办法知道某个时间段的趋势吗这个是肯定有的且听老黄慢慢道来。有上面这个疑问多半是经历过某个时间段量非常多但是有的时间段又几乎为零玩的就是心跳呀。我们可以把这个称之为时间段内的订单增长情况。这里需要用到rate函数这个就是帮助我们统计增长速率的函数。它统计的是每秒的平均增长率这个粒度有点太细所以我们会在这个基础上乘以60放大到一分钟。然后在看它sum的结果最后才四舍五入。ceil(sum(rate(yyyorder_created_total[5m]) * 60)) 结果如下从这个结果可以看出订单大部分时间都没有增长只在中间那个时间段有部分单进来。到这里主要的各个小panel已经完成了剩下的就是在dashboard里面调整位置大小那些了。总结 这样打造出来的监控看板还是挺不错的不过还是要注意下面几个问题的prometheus是把数据存储在本地的总是会达到上限的这里要么是定期删要么是写到远程存储。prometheus自己独立的查询语法可能刚开始会比较不适应查不出自己想要的结果这里多查查资料多实践基本问题也不大。业务埋点这一个块还是要尽可能的减少对现有业务代码的侵入性。业务指标一定要确定好不然埋点痛苦查询也痛苦。这里还没有涉及到告警相关的内容后面有时间再写一个告警相关的。文中示例代码https://github.com/catcherwong-archive/2020/tree/master/08/PromDemo
http://www.huolong8.cn/news/31885/

相关文章:

  • 青岛做网站建设的公司排名常州网站网站建设
  • 网站开发设计心得vs2010 iis 网站开发
  • 申请注册网站域名.商城开发网站的空间分录
  • php mysql网站开发实例教程油边机 东莞网站建设
  • 代做网站地图电子商务网站建设与管理教材评价
  • 成都隆昌网站建设asp网站程序
  • 我要用新浪云做网站网页制作技术有哪些
  • 做网站与做网页的区别wordpress百度联盟
  • 网站做seo多少钱网站备案提示
  • 青岛网站seo技巧物流公司网站模版
  • 网站备案授权码深圳网站建设 龙华信科咨询
  • 建设com网站国外浏览器搜索引擎入口
  • 大学生兼职做网站广州全网推广
  • 网站设计标题php小说采集网站源码
  • 做行业网站如何采集信息二手网站建设方案
  • 做电器的集团网站新型建站技术
  • 五莲网站建设维护推广做3d兼职网站
  • 游民星空是用什么做的网站怎样自己建立一个网站
  • iis配置网站无法访问建工类培训机构
  • 简单网站制作代码免费简历模板下载word可编辑
  • 营销型网站建设教学网站支付页面怎么做的
  • 网站公司上海静态网页设计制作实训报告摘要
  • 合肥网站制作费用企业网站推广
  • php网站广告管理系统wordpress换背景插件
  • 专业的网站建设价格低增城网站公司电话
  • 深圳模板建站多少钱石家庄网站开发哪家好
  • 番禺网站开发公司站开发技术培训
  • 关于网站建设的请示管理咨询岗位做什么
  • 做网站的公司属于什么行业网站建设 的公司
  • 手机百度收录网站吗汉服网站设计目的