
はじめに
皆様こんにちは!Taniumの技術担当をしている宇都宮です。
突然ですが。。。
「今度アップデート配信するけどシステムドライブギリギリのPCどのくらいあるだろうか。。。?」
「あのソフトウェアのバージョンが古い端末はどのくらいあるだろうか。。。?」
企業のIT管理者様にとって、こんな疑問は日常茶飯事ですよね。
そして「すぐに調べたいっ!」と、思ってはみたものの。。。
数十台ならまだしも、100台、1000台、10000台、、、
増えていく端末の調査を考えると気が重たくなってしまいます。。。
そんな多台数の端末を一瞬でチェックできたらどうでしょう???
Taniumを使えば、ネットワーク全体のエンドポイントからリアルタイムに情報を収集し、必要なデータをすぐに取得できます。
そして本記事では、Taniumの根幹となる「Questionとは何か?」「Sensorとは何か?」を分かりやすく解説し、活用する方法をお伝えします。
「知りたいことを、知りたいときに、一瞬で知る」そんなTaniumプラットフォームをのぞいてみませんか?
Questionについて
それでは、早速解説していきます!
Taniumのリアルタイム情報取得の根本にあるQuestion、直訳すると"質問"です。
Taniumでは、ネットワーク内の端末(PCやサーバー)に対して「状態を尋ねる」ことを Question(クエスチョン)と呼びます。
このQuestionを実行することで必要な情報を管理している端末からすぐに収集してきてくれる、という流れですね。
まずは【例】としまして、実際に質問してみましょう!
収集したい情報:
コンピュータ名、システムディスクの空き容量、OS名
Question文:
Get Computer Name and System Disk Free Space and Operating System from all machines
Questionを投げてみると、このように見やすいリスト形式で表示してくれています。
CSVでエクスポートすることもできますし、こういったシステムディスクの空き容量など「変化する値でも」すぐに収集できるのはとても便利ですよね!
でもここで疑問が、、、聞いたら「なんでも」答えてくれるの。。。?
そうなんです。。。
やっぱりTaniumも「なんでも」は知りません、「知っていること」だけもとい『調べるられること』だけ答えてくれています。
そして、その『調べるられること』を定義しているのがSensor(センサー)というものです。
Sensorについて
さて、先ほど出てきたSensor(センサー)ですが、エンドポイントから情報を収集する、まさしく「センサー」の役割を果たします。
先ほどのQuestion文をもう一度見てみましょう、強調した部分がandで連なっているのが分かります。
Get Computer Name and System Disk Free Space and Operating System from all machines
- Computer Name
→コンピュータ名を調べる - System Disk Free Space
→システムディスクとその空き容量を調べる - Operating System
→OS情報を調べる
これら1つ1つがSensorと呼ばれており、このSensorを組み合わせてQuestionを作成しています。
ところで、このSensorの「中身」気になりませんか?、、、なりますよね!
こちらはTaniumコンソールの左ペインの歯車マーク「管理:Administration」→コンテンツ配下「センサー:Sensor」ページから詳細を確認可能です。
右上のフィルタで目的のSensorを絞り込むことが可能です!
名前だけではなく各列に含まれている文字列すべてで検索できるのは便利ですね。
属性ごとに細かいフィルタをすることもできますので、詳細に検索したい場合はご活用ください!
今回は「IPv4 Address」というセンサーを見てみましょう。
ページ下部を見てみると、このようにSensorは各OSから情報を取得するために書かれた各種スクリプトで出来ています。
プラットフォームごとに同じ情報取得を達成するためのスクリプトをまとめているということですね。
-
あれ?これなら自分でスクリプトを書けば文字通り「なんでも」答えてくれるようにアレンジできるのでは。。。?
そうなんです!!
必要に応じてちょっとした開発が必要にはなりますが、Taniumはこの拡張性も提供しています。
ここでは長くなりすぎるので、また別の記事でカスタムセンサーについて解説しています。
こちらの記事にも寄り道していただければ幸いです!
Question文のフィルタとドリルダウン
ここまで見ていただいた方はQuestionはSensorから構成されていて、Sensorはスクリプトの集合であることをご理解いただけたのではないでしょうか?
ここではさらにQuestionのちょっとしたテクニックのようなものを解説致します。
Questionではセンサーで取得してくる情報を絞る(フィルタする)ことが可能です。
例としてこちらのQuestion文「Get Installed Applications contains Office from all machines」
先ほどのSensorの解説から「Installed Applications」はインストールされたアプリケーションを取得できるSensor名であることがなんとなく想像いただけるかと思いますが、次に続く「contains Office」この部分。これは「"Office"という文字が含まれている」という意味になります。
全部の意味は「全ての端末から"Office"という文字が含まれているインストールされたアプリケーションを取得」になりますので、曖昧にフィルタして特定のアプリケーションが全体でどのくらいインストールされているかを調べるとき便利ですね。
思ったものと違うものも併せて表示された場合さらに詳細にフィルタして。。。と
何度も聞き直してもすぐに回答が返ってくるのでストレスフリー!
数値判定も可能で「このバージョン以下」や「空き容量が~~GB以上」なんかでフィルタも容易です。
この「以下」や「以上」などのフィルタ条件の詳細は後ほどの「Question Builderの使い方」で表にまとめて解説してますのでご参考ください!
実際にさきほどのQuestionを投げてみるとOffice製品の名前(Name)とバージョン(Version)、インストールされている台数(Count)が表示されています。
ここでもちょっとした疑問が、
「でもこのアプリケーションがインストールされているPC台数は分かるけど、PC名は分からないの?」
もちろん可能です!
出てきた情報からさらに深堀したい!そんなときは結果にチェックを入れて「ドリルダウン」をクリックしてください。
この「ドリルダウン」を使うことでQuestionの「結果」に対してさらにQuestionを適用してと深堀していくことができます。
よく使う「保存済みQuestion」から選択も可能ですし、自身でQuestionを書く「Questionを作成」「Questionを構築(Question Builder)」も選択可能です。
今回は「保存済みQuestion」からComputer Nameを使ってみましょう。
そうすると、このようにPC名が表示されました。
さらに黄色背景の文字列にはこの結果を出力する詳細なQuestion文が表示されています。
Questionで目的の情報をフィルタで抽出し、ドリルダウンで深堀する流れをイメージしていただけたでしょうか?
補足として
最初のフィルタしたQuestion結果で気になった方もいらっしゃると思いますが。。。
結果に「no results」と表示されています。
これは何かというと、「質問されたけど該当する答えを持っていない」場合に返答されるのが「no results」となります。
連続的な調査や深堀では特に気にすることは無いのですが、
「環境内のOffice製品の種類(名前)とバージョンをリストとしてエクスポートしたい」といったときには、この「no results」はちょっとお邪魔ですよね。
この場合「Office製品がインストールされていない端末」にもフィルタを使ったQuestionをなげているのが原因です。
じゃぁどうすれば。。。。?
そうなんです。「Office製品がインストールされている端末」だけにQuestionを投げることができれば問題ないわけです!
Questionでは状態を問い合わせる母数自体もフィルタすることができ、以下のように書くことができます。
「Get Installed Applications contains Office from all machines with Installed Applications contains Office 」
あれ。。。?from all machinesのあとにwithで続けて全く同じセンサーと条件を書いています。。。
なんだか狐につままれたような気分になってしまいますよね。。。
でもこの通り目的の結果が得られています!
英語が堪能な方は既にお気づきかと思いますが、英語の文法そのままの意味になっているのです。
「Get Installed Applications contains Office from all machines with Installed Applications contains Office 」
なので↑のQuestion文は
「"Office"という文字が含まれているアプリケーションがインストールされた全ての端末から
"Office"という文字が含まれているインストールされたアプリケーションを取得」
という解釈となります。
チョットややこしいですが、すぐ慣れます!笑
Question文の構造
さぁここまでを踏まえてQuestion文の構造をまとめてみたいと思います。
それがコチラ
文を区切ると少し理解がしやすくなったかと思います。
Questionの使い方に少し迷ったらこの画像を思い出していただければ幸いです!
最後のand以降については表示自体されないので特に気にしていただく必要はございませんが、厳密には問い合わせるアカウントの権限について記載している文が隠れています。
これは端末のグルーピングの記事でも少し触れていますが、
特定の端末グループのみアクセス権があるユーザーがQuestionを投げる際に、アクセス権ベースで投げることができる端末の母数をここでもフィルタしている構造となっています。
Question Builderの使い方
結構長くなってきましたが、ここまでお付き合いいただきありがとうございます。
もう少しだけ。。。続けさせてください。。。
ところで今更ですが、
詳細にこのQuestion文を書こうとすると平文で手打ちは大変だなぁと思われた方が多数かと思います。
ご安心ください。
詳細に吟味しながらQuestionを作成する際にはQuestion Builderというものがあります!
コンソールのホームから「Questionを作成」ボタンをクリックします。
このようにQuestionビルダで行を追加する要領で情報を取得したいセンサーを選んでいくと右側の枠にどんどんQuestion文が構築されていきます。
もちろんfrom all machines with以降のセンサーも同様に指定とフィルタが可能です。
フィルタに使用する条件については以下の通りとなります。
比較表現(日本語) | 比較表現(英語) | 演算子 |
指定文字列を含む | contains | contains |
指定文字列を含まない | does not contain | does not contain |
指定文字列で始まる | starts with | starts with |
指定文字列で始まらない | does not start with | does not start with |
指定文字列で終わる | ends with | ends with |
指定文字列で終わらない | does not end with | does not end with |
指定文字列と一致する | matches | matches |
指定文字列と一致しない | does not match | does not match |
指定文字列と等しい | is equal to | = |
指定文字列と等しくない | is not equal to | != |
指定値より小さい | is less than | < |
指定値以下である | is less than or equal to | <= |
指定値より大きい | is greater than | > |
指定値以上である | is greater than or equal to | >= |
コンピュータグループで母数をフィルタすることも可能です。
コンピュータグループグループについてはコチラの記事をご参照ください!
作成が終了したら「Questionを実行」をクリックします。
このように結果が表示後に、思った通りの結果が得られなかった場合や更にアレンジを加えたい場合は
「Question ビルダにコピー」を押すことで先ほどの状態のまま再度Questionビルダに遷移できます。
まとめ
感動を伝えたいがあまり長くなってしまいましたが、最後まで読んでいただきありがとうございました!
まだまだたくさんの機能がありますが、根幹となっているQuestionとTaniumの魅力をすこしでも皆様と共有できれば幸いです。
これを踏まえたActionの話もお楽しみに。
Taniumにご興味の方は、ぜひとも弊社までお問い合わせください。
他のおすすめ記事はこちら
著者紹介

SB C&S株式会社
技術統括部 第2技術部 2課
宇都宮 修平