创建自定义 XenServer 警报

有些时候,需要监控 XenServer 某些数据时,怎么通知就变成了问题,好在,XenCenter 有个警报功能可以利用下。

命令运行在 XenServer,XenCenter会收集所有连接的服务器警报,简单监控只需要借助这个就可以,并不需要其他监控什么的 _(:з」∠)_

 

首先呢,查看命令提示:

 

先来试试:

 

然而并不对,明明是可选参数嘛!警报对象就选本机好了:

没有报错,搞定~

mstsc_2016-11-20_14-33-42

 

哈哈哈哈哈,其实就是刷下存在感了啦!

使用 Google 身份验证器作为 WordPress 登录验证

先放首喜欢的音乐:

很久很久没有更新过了,现在自己想进后台看下,结果发现最初的动态密码居然不能用了,无奈,只能去主机后台看下插件。

然后……我特么居然发现,我在不知道什么时候,把插件升级到了2.0,从最初的用户名+当前时间改为了 Google Authenticator ,不知道脑袋怎么长的,这么健忘。

上篇文章还是15年底水的,想想好不容易冒泡,刷下存在感。

记忆中,15年开始独立做 OA 项目,当时起床就是工作,下班就是睡觉,时间过的很快,转眼几个月过去,OA 项目也已经完成,博客就这样荒废了下来……

现在工作辞了,自己一个人在家,每天都是看小说,忽然觉得生活好平淡,每天都是如此,日子一天一天过,拿得出的东西却是一个都没有;不甘心又能怎样,荒废了好久_(:з」∠)_

后来偶尔接一些二开,没事逛逛论坛、写写 PHP ,到头来发现能读懂代码,却要靠搜索引擎写代码,一句一句拼凑,函数会用却记不住完整的函数名……面向搜索引擎编程 QAQ

一直使用 Cloud9 IDE 写PHP,前几天买了台阿里云,自己使用 Docker 实现了 Cloud IDE 工作区,总算摆脱了 Cloud9 那龟一样的速度,一个字:(也不需要再买 Cloud9 的会员了)。

20160905001434

 

然而,接下来的生活却依旧没有任何头绪,一眼望不到头,不知道该做些什么,每天都是如此,平淡而枯燥。

本来想再水一篇,结果不知不觉,写起了生活。。

效果图:

2016-09-04_23-42-11-001

下载:

google-dynamic-password.zip(5.3 KB, 17 次)

C#查询WMI获得系统安装ID、激活ID

其中 ID 为激活ID,OfflineInstallationId为安装ID

贴代码:

参考文档:http://cuzic.net/wmi-yard-0.10/WMI/OfficeSoftwareProtectionProduct.html

 

 

 

克隆LINQ to SQL对象实体

默认情况下,同一Linq查询都会收到对内存中同一对象的引用。

此时不论更改第几次的查询结果,都将映射到对象的引用。

此时,若需要对某个结果进行快照并做其他修改,则需要对此对象进行克隆。

本代码将利用MemoryStream对内存中的对象进行复制。

使用示例:

代码来源:LINQ to SQL tips and tricks #2

XenServer使用基于文件的VHD存储时,IOSTAT命令结果应如何查找对应VM

当XenServer使用基于LVM逻辑卷的VHD时,IOSTAT的结果是酱紫的:

[root@xenserver-PDS330 ~]# iostat
Linux 2.6.32.12-0.7.1.xs5.6.100.323.170596xen (xenserver-PDS330) 05/26/2015

avg-cpu: %user %nice %system %iowait %steal %idle
0.22 0.00 0.19 0.07 1.21 98.30

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 109.82 1238.74 1843.59 650278225 967791980
sda1 0.53 0.99 10.73 519994 5630520
sda2 0.00 0.03 0.00 13392 0
sda3 109.29 1237.73 1832.86 649743951 962161460
dm-2 0.00 0.00 0.00 1864 0
dm-3 0.67 1.20 7.65 632469 4013840
dm-4 0.88 1.58 6.55 831182 3439107
dm-6 0.00 0.01 0.00 4161 40
dm-13 0.00 0.00 0.00 587 0
dm-16 0.22 3.14 1.94 1650654 1018587
dm-17 4.07 30.88 28.87 16207821 15155800
dm-18 0.00 0.00 0.00 818 80
dm-30 5.95 261.22 217.91 137128163 114390995

好的,这个我会查:

dm-11 0.19 1.02 0.98 536930 513501

[root@xenserver-PDS330 ~]# ls -l /dev/mapper | grep ” 11 ”
brw-rw—- 1 root disk 252, 11 May 26 09:28 VG_XenStorage–07d5b8b4–e67b–7503–c840–7b6d628cd516-VHD–dd41aa0d–bc3d–47ea–bbab–7fd67cba8941
[root@xenserver-PDS330 ~]# xe vdi-param-list uuid=dd41aa0d-bc3d-47ea-bbab-7fd67cba8941 | grep “name”
name-label ( RW): Disk3359c
name-description ( RW): Data Disk
sr-name-label ( RO): Local storage

 

 

那么问题来了,使用基于文件的存储,IOSTAT是什么样的呢?

[root@PDS1477 ~]# iostat
Linux 2.6.32.12-0.7.1.xs5.6.100.323.170596xen (PDS1477) 05/25/2015

avg-cpu: %user %nice %system %iowait %steal %idle
0.32 0.00 0.34 0.28 1.29 97.77

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 166.48 1817.85 1920.36 954183939 1007990095
sda1 0.90 2.14 18.96 1121506 9951864
sda2 0.00 0.00 0.00 1080 0
sda3 165.43 1815.71 1901.40 953060881 998038231
dm-0 170.09 1815.71 1901.40 953059960 998038231
tda 3.14 28.01 20.44 14701638 10729678
tdb 0.23 0.45 4.07 238117 2134834
tdc 0.15 2.82 0.98 1481825 516966
tdd 2.94 28.62 19.79 15020023 10387485
tde 0.03 0.03 0.25 13578 133748
tdf 1.02 2.98 9.28 1564990 4873519
tdg 0.12 0.22 1.52 114446 798782
tdh 3.48 35.97 19.98 18878217 10489141
tdi 3.70 30.43 29.88 15973451 15685617
tdj 0.08 0.40 0.80 212496 420764
tdm 2.97 4.11 36.65 2158090 19238363
tdn 2.41 9.27 22.06 4865360 11579195

天书也不过如此……

祭出Google,检索关键字:XenServer IOSTAT VM

嗯……来测试一下:

tdx 1.55 15.34 18.84 8050383 9886542

[root@PDS1477 ~]# cat /sys/block/tdx/dev
253:23
[root@PDS1477 ~]# tap-ctl list -m 23
10296 23 0 vhd /var/run/sr-mount/78704683-9b7f-1c3b-7fbf-8b930ffe9679/3bdb3e3e-709d-4026-bf6e-08340439c48f.vhd
[root@PDS1477 ~]# xe vdi-list uuid=3bdb3e3e-709d-4026-bf6e-08340439c48f
uuid ( RO) : 3bdb3e3e-709d-4026-bf6e-08340439c48f
name-label ( RW): Disk7814s
name-description ( RW): System Disk
sr-uuid ( RO): 78704683-9b7f-1c3b-7fbf-8b930ffe9679
virtual-size ( RO): 10737418240
sharable ( RO): false
read-only ( RO): false

 

Google是依旧让人感到幸福o(* ̄▽ ̄*)o

 

参考资料:Match IOSTAT devices to VHD?

MVC:error CS0433: The type ‘ASP.global_asax’ exists in both ‘c:\xx\App_global.asax.DLL’

修改Global.asax文件中代码后,发布到虚拟空间,结果出现了以下错误:

呃……有点长,短一点描述:

c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b3ffedfa\97fba66f\App_Web_login.cshtml.65793277.9tbdkipd.0.cs(36): error CS0433: The type ‘ASP.global_asax’ exists in both ‘c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b3ffedfa\97fba66f\assembly\dl3\ae2fef48\0529293c_ec8ed001\App_global.asax.DLL’ and ‘c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b3ffedfa\97fba66f\App_global.asax.4klzpbgv.dll’

关于解决方案,网上的大部分都是去删除temp这个临时文件夹内的指定文件,可是没有权限怎么办…嗯,创建一个页面,加入del代码,你会发现,没用,iis在占用这些文件。

以及:清理解决方案,然后重新上传

据说,这是一个Bug……

 

我是如何解决的?

 

刮:魂淡,就这么几行字你好意思发布(╯‵□′)╯︵┻━┻

在Asp.Net Mvc的Application_Error事件中,返回View

为了满足的我恶趣味,Asp.Net自带的错误页面已经满足不了我的需求了,我需要在发生错误时去显示自定义错误页,比如:

ThinkPHP的那个错误页面真是深得我心,就像这样:

20150513114421我把放在了Message下的Error页面,嗯……偷过来的:

20150513115019

然后,错误页面理所当然的变成了酱紫:

20150513115113

Message.Error控制器:

Message.Error视图代码:

 

嗯。。。Application_Error事件内代码:

页面是ThinkPHP的默认错误页

参考资料:Revisiting MVC Custom Error Handling

安装VS2015时 Can’t start SecondaryInstaller again after it failed 解决方案

VS2015支持了Android,IOS的开发,但是。。。

在VS2015中,并不是自带的,而是需要自己安装。

当你安装失败时,你会发现,你根本就找不到这个入口了。

这让我很抓狂,差点重装了VS2015;

庆幸的是,在微软论坛中找到了解决方案:

try..
1. unpack “\packages\SecondaryInstaller\cab1.cab” to any location
2. run “SecondaryInstaller.exe”

 

1.解压packages\SecondaryInstaller\cab1.cab

2.运行SecondaryInstaller.exe

secondary installer

忽然感觉,我就是个渣渣

附SecondaryInstaller包:

SecondaryInstaller.7z(383.1 KB, 69 次)

原文:https://connect.microsoft.com/VisualStudio/feedback/details/1029485/vs2015-cant-start-secondaryinstaller-again-after-it-failed