Azure AutomationとLog Analyticsを使って、Azure VMにインストールされたソフトウェア情報などの構成管理ができそうなので試してみました。
設定
Log Analyticsワークスペース作成
新たに作成するか、既存のものがあれがそれでよいです。手順は割愛します。
Automationアカウント設定
ここでとまどったんですが、インベントリ収集したい仮想マシンが選べません。
これはリソースグループの選択箇所で、3つしか選べない謎仕様によるものです。1つチェックを外して、対象のリソースグループを選択すれば仮想マシンが表示されます。
取得できるインベントリ(Linux)
デーモン
- ここでいうデーモンとは、Linux OSのsystemctlコマンドの実行結果と同一のようです。
systemctl list-unit-files
ConfigurationData
| where (Computer == "zabbix-agent") and (ConfigDataType == "Daemons")
- Log Analyticsクエリで、特定のデーモンを取得する(この例ではhttpdデーモン)
ConfigurationData
| where (Computer == "zabbix-agent") and (ConfigDataType == "Daemons")
| where SvcName == "httpd"
- Log Analyticsクエリで、httpdがインストールされたコンピュータ名を表示する
ConfigurationData
| where ConfigDataType == "Daemons"
| where SvcName == "httpd"
| project Computer
ソフトウェア
- ここでいうソフトウェアとは、Linux OSのrpmコマンドの実行結果と同一のようです。
rpm -qa
ConfigurationData
| where (Computer == "zabbix-agent") and (ConfigDataType == "Software")
- Log Analyticsクエリで、特定のソフトウェアを取得する(この例ではbash)
ConfigurationData
| where (Computer == "zabbix-agent") and (ConfigDataType == "Software")
| where SoftwareName == "bash"
- Log Analyticsクエリで、特定のソフトウェアの変更履歴を確認する(この例ではyum)
ConfigurationChange
| where Computer == "zabbix-agent"
| where SoftwareName == "yum"
| order by TimeGenerated desc
取得できるインベントリ(Windows)
Windowsサービス
- ここでいうWindowsサービスとは、sc queryコマンドの実行結果と同一のようです。
sc query state= all
ConfigurationData
| where Computer == "zabbix-agt-win" and ConfigDataType == "WindowsServices"
ソフトウェア
- ここでいうソフトウェアは、reg queryコマンドの実行結果は含まれていました。
reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall" /s | find "DisplayName"
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /s | find "DisplayName"
※それ以外にもWindows DefenderのKB情報などもAzureポータルからは確認することができました。
Azure以外のサーバー
AWS EC2で試しましたが、Log Analyticsワークスペースにインターネット経由もしくはExpressRoute PublicPeering経由で接続できれば問題ないはずです。
今回はLinuxで試します。Linuxの場合、対象サーバーで以下のコマンドを実行します。
wget https://raw.githubusercontent.com/Microsoft/OMS-Agent-for-Linux/master/installer/scripts/onboard_agent.sh \
&& sh onboard_agent.sh -w [ワークスペースID] -s [主キー]