ApplicationInsights迁移国内躺的坑
由于之前有段时间访问国际版的Application Insights实在是慢,而且又不是每个人都有梯子,然后国内版大概在去年(2019)六七月左右已经上线,想着也有一段时日了,要么就迁了吧。
然后实际证明,我们可能是第一批成规模的去躺坑的用户。
先说说可以按照官方的套路找到迁移的法子。
首先由于众所周知的问题国际版Azure是微软自己运营的,而国内版因为相关法律法规所以是国内的合作伙伴世纪互联运行的。
原则上是微软提供技术支持给世纪互联,由世纪互联来做实施。
两者数据上并不互通,各种服务之间虽然技术底层基本一致但是却不能互通,而很多SDK默认都是针对国际版进行开发的,所以如果要用国内版一般都要重新配置。
最典型的配置就是修改SDK里默认的终结点,因为一般SDK里的终结点默认都是国际版的。
终结点配置
AppInsights的终结点修改方法可以参考官方文档 https://docs.microsoft.com/zh-cn/azure/azure-monitor/app/custom-endpoints?tabs=net
但是新版本的SDK有个更简便的方法,现在你打开一个AppInsights的资源,可以发下它有一个连接字符串这么个东西,用国际版的可能不会在意这是什么,因为都是那个Key
国际版的连接字符串
但是你看国内版的时候,发现连接字符串里就已经包含了终结点信息,所以只要用连接字符串来进行SDK的初始化就无需在额外配置终结点了
国内版的连接字符串,和国际版相比多了EndpointSuffix
对于我自己来说,使用国际版的时候由于常规都是使用InstrumentationKey检测密钥即可,只有用到国内版的时候才会连接字符串。
而连接字符串有个规则,就是开头永远是InstrumentationKey,于是乎我代码里这么处理,便于处理从国际版迁移到国内版
这样子如果我想迁移到国内版的话,从现有读取AppInsights的key的地方换成国内版连接字符串即可。
(注:连接字符串本质是个Key-Value集合,只是AppInsights那里显示的永远是InstrumentationKey作为开头,但是你把EndpointSuffix和InstrumentationKey换个位置也是能工作的)
但是这里有一个隐藏的坑。
如果你的项目是NetCore的话,恭喜你,直接用连接字符串之后all well done
但是如果你是Net Framework的话,你配置连接字符串后常规的AppInsights服务是可以的,但是实时指标流是无法工作的,如果要用实时指标流,还是老老实实参考上面贴的官方那个文档,更换实时指标流对应的终结点信息
发布标记 Release Annotation
我们是使用TFS来进行CI/CD的,然后使用了 Release Annotation 在每次发布后会在AppInsights里打个发布标记,便于知道什么时候发布了(发布前发布后的监控对比看起来就直观了)
然后迁移到国内后就boom了,默认这个插件打标只能打国际版上,你用了国内版的ApiKey和ApplicationId它会吐你一脸的404
然后心想,TFS的插件不就是js或者powershell什么的么,哥改还不成么,从build agent里拉下它的task任务来扒,惊讶发现其实它是支持Azure China的(但是它插件说明里却并没有说)
然后参照这里,在TFS发布定义里添加了对应变量
后面发觉,好了,能成功把标记打上去了
Grafana监控
我感觉grafana是个神奇的东西,首先它有2个模式可以看AppInsights的信息
基于Azure Monitor Details的模式也能看AppInsights而且可以配置一次数据源看所有的AppInsights资源,但是能看的信息比较粗,适合总览性查看
基于Application Insights Details的模式一个AppInsights资源就要加一个数据源,但是能看较为明细的数据
Azure Monitor Details写着是能支持Azure China,实际上看看就好,你直接用它是对接不上Azure China的,永远验证不通过
而另外的Application Insights Details则更不用说,你用国内版的信息填写进去永远404,因为它默认也是链接到国际版去的。
上文Release Annotation我都敢去查源码了,一言不合查源码
我们定位到Grafana的Azure Monitor的配置文件所在目录
先说基于Azure Monitor Details的Azure China问题,其实它默认Azure Monitor配置是可以的,但是重点在于它登录的终结点是用了国外版
也就是说它实际去查AppInsights的配置是的,但是你要用AppInsights你要登陆做身份验证是吧,这里身份验证跑国外去了,国内国外数据不同,国际版不认识你,自然就boom了。
解决方法很简单,把登录终结点改为国内的
找到loganalyticsazure的path
把下面的url改为 https://login.chinacloudapi.cn/{{.JsonData.logAnalyticsTenantId}}/oauth2/token
再说Application Insights Details的,同样在那个文件里
找到path为appinsights的
把下面的url改为 https://api.applicationinsights.azure.cn
目前仍有的问题
使用国际版的时候,我们弄了AppInsights的动态阈值报警,然后触发规则的时候通知到logic app,然后logic app处理一下数据后通知到我们的企业微信群
以前参照国际版相关文档,使用了 启用常见警报架构
目前反馈上去后得到的信息是暂时不支持这个,导致目前这个机制瘫痪中,再让小伙伴为 不启用常见警报架构 然后重新对接下
but,还是觉得挺坑的。
ApplicationInsights迁移国内躺的坑的更多相关文章
- 海豚调度5月Meetup:6个月重构大数据平台,帮你避开调度升级改造/集群迁移踩过的坑
当今许多企业都有着技术架构的DataOps程度不够.二次开发成本高.迁移成本高.集群部署混乱等情况,团队在技术选型之后发现并不适合自己的需求,但是迁移成本和难度又比较大,甚至前团队还留下了不少坑,企业 ...
- Metabase 从 H2 迁移到 MySQL 踩坑指南
写在前面的话 首先如果你看到了这篇文章,可能你就已经指定 Metabase 是啥了,我这里还是简单的做个说明: Metabase is the easy, open source way for ev ...
- flask--数据库迁移之连环踩坑记
flask数据库迁移命令: python manage.py db init python manage.py db migrate python manage.py db upgrade 1.报错: ...
- [.Net]使用ABP 数据库迁移migration遇到的坑及解决方案
问题:在使用Update-Database时,突然出现"数据库中已存在名为 'XXX' 的对象". 检查发现__EFMigrationsHistory表中的MigrationI ...
- 【时空大数据】Access 到 Postgres 数据迁移遇到的ODBC坑----驱动程序和应用程序之间的体系结构不匹配
1.安装Postgres10 2.安装Postgis插件 3.创建数据库 4.执行postgis脚本插件:参考https://www.cnblogs.com/defineconst/p/1064853 ...
- 记将一个大型客户端应用项目迁移到 dotnet 6 的经验和决策
在经过了两年的准备,以及迁移了几个应用项目积累了让我有信心的经验之后,我最近在开始将团队里面最大的一个项目,从 .NET Framework 4.5 迁移到 .NET 6 上.这是一个从 2016 时 ...
- log4j到log4j2升级迁移方案
序:这段时间因为维护的项目存在大量日志打印,严重拖慢整体响应时间,在做性能优化的工作中对这块内容进行了升级换代,由以前的log4j升级为log4j2,以实现日志异步打印.接下来记录一下这个费时半个月的 ...
- .NetCore&Linux&Docker&Portainer踩坑历险记
最近有一个云服务器和数据库的迁移任务,踩坑爬坑无数次,觉得必须要记录一下.大家瓜子花生准备好,听我慢慢讲故事#手动笑哭#. 故事背景 公司是做电商业务的,在天猫有几家旗舰店数据量也很大.阿里有一个称为 ...
- Redis上踩过的一些坑
来自: http://blog.csdn.net//chenleixing/article/details/50530419 上上周和同事(龙哥)参加了360组织的互联网技术训练营第三期,美团网的DB ...
随机推荐
- stand up meeting 12-11
今天因组员时间问题,并没有集中在一起开会,但士杰当面和天赋同学进行了沟通,在lync与国庆进行了沟通. 天赋与重阳再次进行了了沟通,确定了“单词挑战”与“背单词”这两个模块集成的难度,决定先不进行集成 ...
- stand up meeting 11/30/2015
part 组员 今日工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云 完善了UI的各项功能,弹窗的显示格式等方面的规范:解决logic部分调用该dll的问题:解决鼠标事件的捕捉中~ ...
- [转载]绕过CDN查找真实IP方法总结
前言 类似备忘录形式记录一下,这里结合了几篇绕过CDN寻找真实IP的文章,总结一下绕过CDN查找真实的IP的方法 介绍 CDN的全称是Content Delivery Network,即内容分发网络. ...
- 【题解】P2024 [NOI2001]食物链 - 数据结构 - 并查集
P2024 [NOI2001]食物链 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 动物王国中有三类动物 \(A,B ...
- Python软件定时器APScheduler使用【软件定时器,非操作系统定时器,软件可控的定时器】【用途:定时同步数据库和缓存等】【刘新宇】
APScheduler使用 APScheduler (advanceded python scheduler)是一款Python开发的定时任务工具. 文档地址 https://apscheduler. ...
- JDBC处理CLOB 和 BLOB大对象
在数据库中: clob用于存储大量的文本数据 可以使用字符流操作 clob用于存储大量的二进制数据 可以使用字节流操作 以mysql为例 先准备一张表: CREATE TABLE `t_user2` ...
- Install go1.5 for CentOS7
https://golang.org/doc/install 下载好后,通过FTPS,传递到Linux里去,放哪里随便你自己,因为被墙了,所以在Windows通过旋风下载了这个玩意儿. 你也可以: w ...
- [Abp vNext 入坑分享] - 4.JWT授权的接入
一.感想 在写这一系列文章之前,本来以为写这个之前已经搭建好的框架描述会比较简单,但是慢慢写下来才发现.写这个真的不简单额,本来以为图文一起,一个晚上应该能输出一篇吧...结果:现实真的骨感,一个星期 ...
- 解释BOM头和去掉方法
http://www.thinkphp.cn/topic/2592.html 以上是叫你去掉bom头的,因为有些文件加载不出来就是window会以记事本的形式打开,然后默认给我们加了了bom头,有些文 ...
- Python(10)
如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a.b.c可能的组合? # 注意是三重循环 for a in range(0, 1001): for b i ...