しばたテックブログ

気分で書いている技術ブログです。

Windows Management Framework (WMF) 5.1のプレビュー版がリリースされました

【2017/01/22追記】

つい先日WMF 5.1の正式版がリリースされました。
詳細はこちらのエントリをご覧ください。

stknohg.hatenablog.jp

【追記ここまで】


公式ブログより。

blogs.msdn.microsoft.com

ブログの日付が7/16日ですが、本日のリリースです。

WMF 5.1のリリースノートおよび新機能

WMF 5.1 リリース ノート | Microsoft Docs

でリリースノートおよび新機能やバグフィックスの内容を見ることができます。

インストール要件

インストール要件についてはこちらを参照してください。

WMF 5.1 のインストールと構成 | Microsoft Docs

まだプレビュー版なので更新パッケージのリンク先は正しくありません。*1
なので、こちらから直接ダウンロードする必要があります。

雑にまとめると、

  • Windows 7 SP1/Windows Server 2008 R2以降のOS
  • 要 WMF 4.0
  • 要 .NET Framework 4.6以降

といったところでしょうか。

なお、プレビュー版なので英語版のみとなります。
OSに英語の言語パックがインストールされている必要があります。

フィードバック

バグ報告などのフィードバックはUser Voiceまで。

試してみた

早速Windows Server 2012 R2で試してみました。

基本設定

Windows Server 2012 R2は標準でWMF 4.0がインストール済みですので、.NET Framework 4.6(.n)を追加でインストールします。

.NET Framework 4.6(.n)はWindows Updateをすればそのうちインストールされますので頑張ってください。

.NET Framework のインストール

から個別にインストールをしても構いません。

言語パックの追加

コントロールパネルの言語の追加から英語を追加するだけでOKです。
一応スクショを撮ったので記載しておきます。


f:id:stknohg:20160728180813p:plain


言語の追加をクリック。

f:id:stknohg:20160728180831p:plain


とりあえず英語(米国)としましたが他の国の英語でも大丈夫な気がします。

f:id:stknohg:20160728180847p:plain


言語の追加後に、オプションを開いて言語パックをインストールします。

f:id:stknohg:20160728180954p:plain


言語パックをダウンロードしてインストールしますをクリックするとインストールが開始されます。

f:id:stknohg:20160728181022p:plain


インストールには結構時間がかかります。

f:id:stknohg:20160728181034p:plain


インストールされればOKです。
再起動などは必要ありません。

f:id:stknohg:20160728181046p:plain

更新パッケージの適用

こちらはMSUを実行するだけです。
EULAの表記がWMF 5.0のままでしたがちゃんとWMF 5.1がインストールされますので安心してください。
インストール後は再起動が必要です。

ちなみに、サイレントインストールする場合は、

 [当該OSのパッケージ].msu /quiet

でOKです。

試してみる

再起動後に$PSVersionTableを確認するとこんな感じです。
ちゃんとPowerShell 5.1になっていることが確認できます。

f:id:stknohg:20160728181444p:plain

最後に

とりあえずこんな感じです。
WMF5.1の新機能については近いうちにブログを書いていきたいですね。

*1:WMF5.0を指しています。

Go言語でNagios Pluginを書いてみた

これまでNagiosのプラグインはPythonで書くことが多かったのですが、クロスプラットフォームのバイナリを比較的容易に作れるGo言語で書くのも良いかなぁと思い、勉強がてら簡単なものを作ってみました。

はじめに

Nagios Pluginの仕様については説明を省きます。
Nagios Core Plugin API · Nagios Core Documentation を参照してください。

作ったプラグイン

作ったプラグインはGitHubに上げています。

github.com

main.go

main_linux.go

main_windows.go

check_memory_usedという名前でOSのメモリ使用率(%)をチェックするプラグインにしました。
対象プラットフォームはWindowsとLinuxにしています。

この程度であれば公式プラグインのcheck_memoryで十分なのですが、まあ、練習に丁度よかったのでそこはご容赦ください。

ちなみに開発環境はWindows 10上のVisual Studio Codeになります。

パッケージ olorin/nagiosplugin

ゼロからゴリゴリソースを書くのもアレですし、誰かがパッケージ位作っているだろうと調べたところ、

github.com

が良さげだったのでこれを採用しました。

GitHubの"Usage example"に基本的な使い方が書いていますが、nagiosplugin.NewCheckメソッドでcheckstructを作り、このstructにチェックした結果を設定する形になります。
Fihishメソッドで終了処理を行います。

// main.goより
// 初期化処理と終了処理
check := nagiosplugin.NewCheck()
defer check.Finish()

チェックした結果はAddResultまたはAddResultfメソッドで設定します。
細かい説明はしませんが、見て直感的にわかるかと思います。

// main.goより
// チェック結果の設定(AddResultfメソッド)

// Critical
check.AddResultf(nagiosplugin.CRITICAL, "Memory used %d%%", used)
// Warning
check.AddResultf(nagiosplugin.WARNING, "Memory used %d%%", used)
// OK
check.AddResultf(nagiosplugin.OK, "Memory used %d%%", used)

なお、AddResultまたはAddResultfメソッドを呼び忘れた場合はnagiosplugin.UNKNOWNが返されます。

そしてパフォーマンスデータを設定する場合はAddPerfDatumメソッドを使います。

// main.goより
// パフォーマンスデータの設定

// ラベル, 単位(ルールあり), 設定値, Warning, Critical, min, max
err = check.AddPerfDatum(opts.Label, opts.Unit, float64(used), float64(opts.Min), float64(opts.Max), float64(opts.Warning), float64(opts.Critical))

引数は順にラベル単位設定値Warningの閾値Criticalの閾値最小値最大値となります。
単位についてはNagiosで有効な単位に制限されていますので注意してください。
数値についてはすべてfloat64型なのでキャストがちょっと面倒ですが仕方ない感じです。

その他パッケージ

nagiospluginの他に以下のパッケージを使いました。

実行結果

プラグインの実行結果はこんな感じです。

f:id:stknohg:20160727122558p:plain

Windows、Linux両方で良い感じに動いてくれています。

最後に

パッケージの使い勝手が良かったのでサクッとプラグインを書くことができました。

いまさらNagiosなのかという感じも若干ありますが、Nagios Pluginの仕様に互換のあるSensu Pluginにも使えるかもしれません。

Vagrant 1.8.5でLinux boxをvagrant upするとエラーが出る件について

ちょっとハマったのでメモ。

環境

今回の環境は以下。

  • ホスト: Windows 10 Pro(64bit)
  • Virtualbox 5.1.0
  • Vagrant 1.8.5
  • ゲスト: bento/centos-7.1 のBox

起きたこと

Vagrantfileを書いてvagrant upをした際に、

default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...

(以下リトライが続く...)

といった感じのメッセージが出て、VMは立ち上がるもののVagrantからの設定が上手くいかない現象に遭遇しました。

原因

原因はVagrant 1.8.5のバグでした。

github.com

にissueが上がっており既に修正済みで次のバージョン(1.8.6)で対処されるとの事です。

対処方法

この問題を修正したcommit

github.com

にある様に、[インストール先]\embedded\gems\gems\vagrant-1.8.5\plugins\guests\linux\cap\public_key.rbの56行目に

chmod 0600 ~/.ssh/authorized_keys

を追加してからVMを再作成してやれば直ります。

私は試していないのですが、修正内容を見るにauthorized_keysのアクセス権設定なので、VMにログインして直接設定を変更しても対処できる気がします。

また、

github.com

で41行目の

Tempfile.open("vagrant-bsd-remove-public-key") do |f|

の部分も修正されているのですが、こちらはそのままでもこの問題は解決する様です。

最後に

Vagrant 1.8.6がリリースされれば解決する問題ですが、リリースまでもうちょっとかかりそうなのでこのエントリを残しておきます。