# ブートとログオン時間（クラシック）

デバイスの起動時間は従業員の生産性とエクスペリエンスに直接影響を与えます。 ユーザーがデバイスで行う最初の操作は通常、電源を入れてログオンすることなので、起動に時間がかかるデバイスに対してユーザーは非常にネガティブな印象を持つことが一般的です。 実際、起動やログオンのプロセスが長いことは、ディスクの故障、ネットワークの問題、メモリ不足、または一般的な陳腐化といったデバイスの他の根本的な問題の症状であることが多いです。 Nexthinkはデバイスの起動とログオンの期間を以下のように測定します。

**起動時間**\
デバイスを電源オンしてからサインイン画面が表示されるまでの時間。

**ログオン時間**\
ユーザー認証からデスクトップが表示されるまでの時間。

**拡張ログオン時間**\
ユーザー認証からデバイスが使用可能になるまでの時間。

起動とログオン時間の測定に使用される技術のため、これらの値はWindowsデバイスにのみ適用されます。

{% hint style="info" %}
対象プラットフォーム | Windows |
{% endhint %}

### 起動時間の測定 <a href="#bootandlogonduration-classic-measurementofthebootduration" id="bootandlogonduration-classic-measurementofthebootduration"></a>

起動時間は、ユーザーがデバイスの電源ボタンを押してからデバイスにサインイン画面が表示されるまでの経過時間を測定します。

Nexthinkは、デバイスがフルブートシーケンスまたは高速スタートアップを行う場合にのみ起動イベントを記録します。高速スタートアップは、カーネル状態をディスクに保持することで起動時間を短縮する手法です。 Nexthinkは、スタンバイ（スリープ）またはハイバネーション状態からデバイスを再起動することを起動とは見なしません。

| 起動時間      | 起動時間       |
| --------- | ---------- |
| スタート      | ストップ       |
| デバイスが電源オン | サインイン画面が表示 |

#### Finder（クラシック）とNXQLを通じた起動時間の検査 <a href="#bootandlogonduration-classic-inspectingbootdurationthroughfinder-classic-andnxql" id="bootandlogonduration-classic-inspectingbootdurationthroughfinder-classic-andnxql"></a>

**システムの起動**は、Nexthinkで起動時間情報を含むアクティビティです。 Finderでシステムの起動を調べるには、新しいインベスティゲーションを作成してください。

1. **スタート**ページの下部で、**新しいインベスティゲーション**をクリックします。
2. **アクティビティ**タブの下にある**システムの起動**を選択します。
3. 条件や期間を希望に応じて入力します。
4. **表示**セクションの**列**には、システムの起動の**期間**を含めてください。
5. （オプション）システムの起動がどちらであったかを知るために、列**ブートタイプ**を含めます。
   * **フルブート**、完全なブートシーケンス。
   * **高速スタートアップ**、短縮されたブートシーケンス（Windows 8以降で利用可能）。
6. **実行**をクリックします。

NXQLでは、システムの起動はより一般的な**デバイスアクティビティ**イベントの一種です。 例えば、全ての起動イベントを取得するには、NXQLエディタを開いて次のように入力します。

```
(select * (from device_activity (where device_activity (eq type (enum boot)))))
```

\
Finderで特定のデバイスの起動時間情報を取得するには、デバイスに関するインベスティゲーションを作成し、表示する列を以下のように設定します。

**最後の起動時間**\
デバイスで測定された最後の起動の期間。

**フルブート時間のベースライン**\
Engineデータベースに保存されたデバイスのすべてのフルブートの期間に対する指数加重移動平均です。 \_n\_番目のログオンで測定された起動時間\_B(n)\_に対して、重み付き平均\_S(n)\_は次の式で再帰的に計算されます。

*S(n) = B(1)*, *n* = 1の場合

*S(n) = α ⋅ B(n) + (1 - α) ⋅ S(n - 1)*, *n* > 1の場合

係数α = 0.1であり、システムは古い起動イベントの履歴がデータベースから削除されると、その寄与を期間から削除します。

このフィールドはデータベース内の全ての起動イベントから事前に計算されるため、その値はインベスティゲーションの期間に依存しないことに注意してください。

**高速スタートアップ時間のベースライン**: Engineデータベースに保存されたデバイスの全ての高速スタートアップの期間の指数加重移動平均です。 これも**フルブート時間のベースライン**と同様に計算されますが、高速スタートアップタイプの起動イベントの期間のみをカウントします。

このフィールドはデータベース内のすべての高速スタートアップイベントから事前に計算されるため、その値はインベスティゲーションの期間に依存しないことに注意してください。

NXQLでは、**最後の起動時間**、**フルブート時間のベースライン**、**高速スタートアップ時間のベースライン**に相当するフィールドはそれぞれ**last\_boot\_duration**、**average\_boot\_duration**および**average\_fast\_startup\_duration**と呼ばれます。 例えば、すべてのデバイスに対する最後の起動時間、フルブートベースライン、高速スタートアップ時間を取得するには、次のクエリを入力します。

```
(select (last_boot_duration
         average_boot_duration
         average_fast_startup_duration)
  (from device))
```

\
システムがデバイスに対する**フルブート時間のベースライン**と**高速スタートアップ時間のベースライン**を事前計算し、それらが期間に依存しないことを確認しました。 デバイスの平均起動時間を期間内で実際に計算するには、**平均起動時間**集計を表示列に追加します。 システムは、期間内の全ての起動イベントの合計時間（フルブートと高速スタートアップ）を起動イベントの数で割って平均を計算します。

NXQLでは、**平均起動時間**は**average\_boot\_duration**集計と同等です。 これは、**フルブート時間のベースライン**と同じ名前ですが、集計には高速スタートアップも含まれることに注意してください。 必要な際は条件を通じてフルブートまたは高速スタートアップをフィルタリングします。 任意の集計と同様にNXQLクエリ内に**compute**節を含めることで、混乱が生じないようにします。 例えば、フルブート時間のベースラインと平均（直近1日間）を単一のNXQLクエリで問い合わせるには、次のように入力します。

```
(select average_boot_duration
  (from device
     (with device_activity (compute average_boot_duration)
     (between now-1d now))))
```

### ログオンおよび拡張ログオン時間の測定 <a href="#bootandlogonduration-classic-measurementofthelogonandextendedlogondurations" id="bootandlogonduration-classic-measurementofthelogonandextendedlogondurations"></a>

ユーザーが認証のために資格情報を入力するなどの手段で認証を完了した瞬間をログオンプロセスの開始としてマークします。 Collectorにはログオンプロセスの開始を検出する2つの方法があります:

* セキュリティログ内の監査ログオンイベントを確認します。
* セッションの作成イベントを待機します。

ユーザーログオンを検出するためのCollectorの推奨方法は、Windowsのセキュリティログ内の監査ログオンイベントを確認することです。 セキュリティログにログオン情報を含めるには、システム管理者は対応する[監査ポリシーオプション](https://github.com/nexthink/documentation.online-product-documentation/blob/develop/ja_docs/references/configuring_nexthink/bringing-data-into-your-nexthink-instance/deploying-nexthink-in-non-vdi-environment/installing-collector/windows-collector-references/auditing-logon-events.md)を有効にしなければなりません。 その後、Collectorによって検出されたログオン時間はWindowsによって記録された時間と一致します。

しかし、デバイス上の監査ポリシーがログオンイベントの監査を含まない場合、Collectorはデフォルトでセッション作成イベントをリッスンしてユーザーログオンを検出します。 セッションの作成の瞬間を捉えることは通常、ユーザーログオンの時間を決定する精密な方法です。 しかし、ローミングユーザープロファイルを使用するセットアップでは、この方法を使用することで、ユーザーが実際に経験するログオン時間よりもはるかに短いログオン時間が得られる可能性があります。 不正確な情報を送信しないためには、ログオンイベントの監査が有効化されていない場合、Collectorはローミングプロファイルを持つユーザーのログオン時間を報告しません。 ローミングユーザープロファイルに関する詳細情報は次のセクションを参照してください。

ログオンと拡張ログオン時間の両方はログオンプロセスの開始を測定の起点としますが、測定の終点が異なります。

* デスクトップの表示がログオン時間の終了を示します。
* デスクトップが表示された後、デバイスが使用可能状態であることが拡張ログオン時間の終了を示します。 システムは、オペレーティングシステムが十分なリソースを解放し、デバイスが再びユーザーのコマンドに応答するようになった時点を\_使用可能状態\_と見なします。 デバイスの種類によって、システムがデバイスを使用可能と考えるために必要なリソース消費は以下の通りです:
  * デスクトップとラップトップ: CPU使用率が15％未満に、ディスク使用率が80％未満に低下。
  * サーバー: ログオンしたユーザーに属するすべてのプロセスのCPU使用率が15％未満に低下。

ユーザー認証後にデバイスのリソース消費がまだ必要以上に高い場合、Collectorは待機を停止し、ログオン時間を25分と報告します。

| ログオン時間                   | ログオン時間                      |                               |
| ------------------------ | --------------------------- | ----------------------------- |
| スタート                     | ストップ                        |                               |
| <ul><li>ユーザー認証</li></ul> | <ul><li>デスクトップが表示</li></ul> | <ul><li>デバイスが使用可能状態</li></ul> |
| スタート                     | 継続                          | ストップ                          |
| **拡張ログオン時間**             |                             |                               |

#### ローミングユーザープロファイルを持つデバイスのログオン時間 <a href="#bootandlogonduration-classic-logondurationindeviceswithroaminguserprofiles" id="bootandlogonduration-classic-logondurationindeviceswithroaminguserprofiles"></a>

ローミングユーザープロファイルは、Windowsにおける概念で、ネットワーク内の異なるコンピュータ上で一貫したデスクトップエクスペリエンスをユーザーに提供します。 使用するコンピュータと関係なく、ユーザーは個人のドキュメントにアクセスでき、アプリケーションは設定を記憶し、デスクトップの外観は同じままです。 このセクションでは、ローミングユーザープロファイルがログオン時間の測定に及ぼす影響について学びます。

ローミングユーザーがデバイスにログオンすると、そのプロファイルのロードがログオン時間においてかなりの時間を占めることがあります。 しかし、プロファイルが完全にロードされてから新しいセッションが開始されます。 Collectorがセッション作成イベントの待機のみを行ってログオン時間を計算すると、ユーザープロファイルをロードする時間をログオン時間の一部として無視することになります。 この省略により、Collectorはローミングユーザーの実際のログオン時間よりもはるかに短いログオン時間を報告することになります。 そのため、Collectorはローミングユーザーのログオン時間を計算する際にこの方法を使用することはありません。

代替案として、Windowsのセキュリティログからログオン情報を取得します。 セキュリティログ内のログオンイベントは、常に正確なログオン時間を報告します。 この理由から、ログオンイベントの監査は、すべての種類のユーザーに対するCollectorのログオン時間計算方法として推奨されており、ローミングユーザーに対しては必須です。 ローミングユーザープロファイルを持つデバイスについては、必ず[ログオンイベントの監査](https://github.com/nexthink/documentation.online-product-documentation/blob/develop/ja_docs/references/configuring_nexthink/bringing-data-into-your-nexthink-instance/deploying-nexthink-in-non-vdi-environment/installing-collector/windows-collector-references/auditing-logon-events.md)を有効にすることを忘れないようにしてください。 これを怠ると、Collectorはローミングプロファイルを持つユーザーのログオン時間を報告しません。

#### Finder（クラシック）とNXQLを使用したログオン時間の検査 <a href="#bootandlogonduration-classic-inspectinglogondurationthroughfinder-classic-andnxql" id="bootandlogonduration-classic-inspectinglogondurationthroughfinder-classic-andnxql"></a>

**ユーザーログオン**は、Nexthinkでログオン時間情報を含むアクティビティです。 Finderでユーザーログオンを調べるには、新しいインベスティゲーションを作成してください。

1. **スタート**ページの下部で、**新しいインベスティゲーション**をクリックします。
2. **アクティビティ**タブの下にある**ユーザーログオン**を選択します。
3. 条件や期間を希望に応じて入力します。
4. **表示**セクションの**列**には、ユーザーログオンの**期間**と**拡張期間**を含めてください。
5. **実行**をクリックします。

NXQLでは、ユーザーログオンはより一般的な**ユーザーアクティビティ**イベントの一種です。 例えば、全てのログオンイベントを取得するには、NXQLエディタを開いて次のように入力します。

```
(select * (from user_activity
  (where user_activity (eq type (enum logon)))))
```

NXQLでは拡張ログオン期間は**real\_duration**と呼ばれます。

Finderにおいて特定のデバイスのログオン時間情報を取得するには、デバイスに関するインベスティゲーションを作成し、以下の列を表示します。 各フィールドには通常と拡張期間のバージョンがあることに注意してください。

* **最後の\[拡張]ログオン期間**: デバイスで測定された最後のユーザーログオンの（拡張）期間。
* **\[拡張]ログオン期間のベースライン**: Engineデータベースに保存されたデバイスのすべてのユーザーログオンの（拡張）期間に対する指数加重移動平均です。 n番目のログオンで測定されたログオン期間L(n)に対して、重み付き平均S(n)は次の式で再帰的に計算されます。

  * S(n) = L(1)、n = 1の場合
  * S(n) = α ⋅ L(n) + (1 - α) ⋅ S(n - 1)、n > 1の場合

  係数α = 0.1であり、システムは古いログオンイベントの履歴がデータベースから削除されると、その寄与を期間から削除します。

{% hint style="info" %}
このフィールドはデータベース内のすべてのユーザーログオンから事前に計算されるため、その値はインベスティゲーションの期間に依存しません。
{% endhint %}

NXQLでは、同等のフィールドは以下の通りです。

| Finder              | NXQL                                    |
| ------------------- | --------------------------------------- |
| **最後のログオン時間**       | **last\_logon\_duration**               |
| **ログオン時間のベースライン**   | **average\_logon\_duration**            |
| **最後の拡張ログオン時間**     | **last\_extended\_logon\_duration**     |
| **拡張ログオン時間のベースライン** | **extended\_logon\_duration\_baseline** |

全てのデバイスの様々な種類のログオン時間を取得するためのクエリを次に入力します。

```
(select (last_logon_duration average_logon_duration
  last_extended_logon_duration extended_logon_duration_baseline)
  (from device))
```

\
システムがデバイスに対するログオン期間のベースライン（通常と拡張）を事前計算し、それらが期間に依存しないことを確認しました。 デバイスにおけるユーザーの期間内平均ログオン時間を実際に計算するには、**平均\[拡張]ログオン期間**集計を表示列に追加します。 システムは、期間内のログオンイベントの合計時間をログオンイベントの数で割って平均を計算します。

NXQLでは、**平均ログオン時間**は**average\_logon\_duration**集計と同等です。 これには通常のログオン期間のベースラインと同じ名前が付けられていますが、混乱が生じないようにNXQLクエリ内の**compute**式内に配置する必要があります。

| Finder         | NXQL                                   |
| -------------- | -------------------------------------- |
| **平均ログオン時間**   | **average\_logon\_duration**           |
| **平均拡張ログオン時間** | **average\_extended\_logon\_duration** |

例えば、通常のログオン期間および拡張ログオン期間のベースラインと平均（過去1日間）をNXQLクエリで照会するには、次のように入力します。

```
(select (average_logon_duration extended_logon_duration_baseline)
  (from device (with user_activity
     (compute average_logon_duration average_extended_logon_duration)
  (between now-1d now))))
```
