礼县住房和城乡建设局网站,php网站程序怎么安装,公司网页免费制作,广州做网站的网络公司排名作者#xff1a;justmine头条号#xff1a;大数据与云原生微信公众号#xff1a;大数据与云原生创作不易#xff0c;在满足创作共用版权协议的基础上可以转载#xff0c;但请以超链接形式注明出处。为了方便阅读#xff0c;微信公众号已按分类排版#xff0c;后续的文章… 作者justmine头条号大数据与云原生微信公众号大数据与云原生创作不易在满足创作共用版权协议的基础上可以转载但请以超链接形式注明出处。为了方便阅读微信公众号已按分类排版后续的文章将在移动端首发想学习云原生相关知识请关注我。写在前面从上一篇博客高并发、低延迟之C#玩转CPU高速缓存附示例到现在又有几个月没写博客了啥也不说变得越来越懒了懒惰产生了拖延后遗症。最近一周升级了微服务项目使用的分布式日志组件Exceptionless到最新的版本随着项目的不断迭代上线我们总是想要第一时间知晓线上程序是否正常运行特别是采用微服务架构的项目不然心里总感觉有一块石头不知道啥时候落地。前期都是人工时不时地查看其中有一次异常都报了几个小时了但是由于当时我正在专注地做另外的事情直到线上出现服务不可用时才发现于是决定暂时放下手头所有的事情接入Exceptionless的事件通知机制当抛出异常、或者发生错误的日志时发送消息了钉钉办公群做到实时感知运维报警提醒所以需要接入Exceptionless的Webhook通知类型。话外音Exceptionless的webhook通知类型不支持实时Error、Log级别的Error故需要扩展来满足自身需求。什么是webhookWebHook是一种HTTP交互的增强模式是用户定义的http回调这些回调由第三方的用户、开发人员自己定义、维护、管理就好像允许别人挂载一条带钩的线到你的Web网站或者应用程序的上然后通过这条线实时地给你推送信息这条带钩的线就叫web钩子。也可以将webhook看作是一种简洁的Sub/pub模式只不过此时事件的载体是一个Http Post请求。一言以蔽之web钩子就是一种http回调由于一般都采用post的方式来推送信息更直接、简单地说web钩子就是一种http post回调。正是由于它的简洁性很多主流的Saas系统都暴露有自己的Webhook其中包括Dropbox, GitHub, GitLab, Instagram, MailChimp, PayPal, Slack, Trello等等例如我们可以为github代码提交定义一个web钩子为Paypal的支付状态定义一个Web钩子这样就能够实时地收到来自应用的推送信息而不必要不断地轮训来请求信息。一图胜千言有了上面的铺垫那么与Exceptionless的集成就如下图所示定义Exceptionless的web钩子从上图可以看到web钩子就是一个能够处理http post请求的web server后端决定采用aspnet core来实现首先调研了微软的项目WebHooks它并没有对接Exceptionless而且还是采用MVC开发最终找到了另外一个开源项目采用中间件拦截我在其基础上进行了如下扩展添加容器化部署脚本支持docker、kubernetes迎合云原生。扩展事件模型添加环境、来源等信息方便追溯。升级项目为netcoreapp2.1。优化httpclient使用方式。本地化事件时间、容器时间、序列化时间。并添加详细的部署、配置说明。有兴趣同学欢迎查看我的项目exceptionless-webhooks 。最终的钉钉群消息今日正题完成了上面的准备工作现在开始进入正题扩展Exceptionless的通知类型。浅析Exception工作机制Exceptionless逻辑上采用完全异步化的设计当收到日志事件时首先写到缓存队列redis然后再启动各种job来消费消息最终写到elasticsearch数据库所以说Exceptionless是一个准实时的分布式日志组件事件的处理管道如图所示首先对事件进行守卫检查、分配到Stack分类聚合事件、打标记比如关键错误等然后保存事件更新统计信息最后发送各种通知大致流程就是这样子。那么自然而然与通知包括Email、Slack即时通讯、Web钩子等相关的处理逻辑就在都在步骤070中。扩展新的事件通知类型Error未知的异常LogError错误的日志信息1. 添加新的事件类型元数据。2. 添加新的事件类型扩展方法。3. 修改步骤070中的逻辑。到目前为止Exceptionless的后端修改工作圆满完成接下来修改它的Argular前端具体的修改代码就不贴了最终的界面如下到这里所有的工作都已经完成了通过选择配置项控制Webhook的事件通知类型达到了预期目的。总结本篇我们先以白话文的方式讲解了什么是webhook为后面与Exceptionless的集成做好铺垫然后编写了web钩子程序最后通过为Exceptionless扩展新的事件通知类型来满足我们的需求希望把从分析到最后完工的整个过程分享给大家。最新的代码后端https://github.com/justmine66/Exceptionless。前端https://github.com/justmine66/Exceptionless.UI。写在最后如果有什么疑问和见解欢迎评论区交流。如果你觉得本篇文章对您有帮助的话感谢您的【推荐】。如果你也对Exceptionless感兴趣的话可以关注我我会定期的在博客分享我的学习心得。