PowerNSX で、NSX の Syslog 転送先のサーバを設定してみます。
PowerNSX では、Syslog サーバ設定そのもののコマンドは用意されていないので、
Invoke-NsxWebRequest で NSX API から設定します。
今回の環境は、vCenter 6.7a / NSX-v 6.4.1 / PowerCLI 10.1 / PowerNSX 3.0 です。
NSX Manager の Syslog Server 設定。
API リファレンスは下記です。
Working With the Appliance Manager
VMware NSX for vSphere API documentation
XML ファイルを用意します。
今回は Syslog サーバとして 192.168.1.223 を指定しています。
syslog-nsx-manager.xml
<syslogserver>
<syslogServer>192.168.1.223</syslogServer>
<port>514</port>
<protocol>UDP</protocol>
</syslogserver>
XML ファイルを読み込んで、Invoke-NsxWebRequest を使用して NSX API で設定します。
PowerNSX> [String]$xml_text = Get-Content .\syslog-nsx-manager.xml
PowerNSX> Invoke-NsxWebRequest -method PUT -URI "/api/1.0/appliance-management/system/syslogserver" -body $xml_text
Syslog サーバのアドレスが設定されたことを確認します。
PowerNSX> $data = Invoke-NsxWebRequest -method GET -URI "/api/1.0/appliance-management/system/syslogserver"
PowerNSX> [xml]$data.Content | select -ExpandProperty syslogserver
syslogServer port protocol
------------ ---- --------
192.168.1.223 514 UDP
NSX Controller の Syslog Server 設定。
NSX Controller は、Object ID を指定して仮想アプライアンスそれぞれで設定をします。
API リファレンスは下記です。
Working With NSX Controllers
VMware NSX for vSphere API documentation
まず NSX Controller の Object ID を確認しておきます。
NSX では 3台の NSX Controller を配置しますが、私のラボではリソースの都合で 1台だけです。
PowerNSX> Get-NsxController | select name,id
name id
---- --
infra-nsxctl-01 controller-1
XML ファイルを用意しておきます。
syslog-nsx-controller.xml
<controllerSyslogServer>
<syslogServer>192.168.1.223</syslogServer>
<port>514</port>
<protocol>UDP</protocol>
<level>INFO</level>
</controllerSyslogServer>
Manager と同様、Invoke-NsxWebRequest で設定します。
PowerNSX> [String]$xml_text = Get-Content .\syslog-nsx-controller.xml
PowerNSX> Invoke-NsxWebRequest -method POST -URI "/api/2.0/vdn/controller/controller-1/syslog" -body $xml_text
転送先の Syslog サーバが設定されました。
PowerNSX> $data = Invoke-NsxWebRequest -method GET -URI "/api/2.0/vdn/controller/controller-1/syslog"
PowerNSX> [xml]$data.Content | select -ExpandProperty controllerSyslogServer
syslogServer port protocol level
------------ ---- -------- -----
192.168.1.223 514 UDP INFO
NSX Edge の Syslog Server 設定。
NSX Edge の ESG / DLR Control VM の Syslog 転送先を設定してみます。
これらの Syslog 転送をするには、仮想アプライアンスから Syslog サーバに
通信できる(ルーティングがされている)必要があります。
API リファレンスは下記です。
Working With NSX Edge
VMware NSX for vSphere API documentation
下記のような XML ファイルを用意しておきます。
syslog-nsx-edge.xml
<syslog>
<protocol>udp</protocol>
<serverAddresses>
<ipAddress>192.168.1.223</ipAddress>
</serverAddresses>
</syslog>
NSX Edge Service Gateway(ESG)の Object ID を確認しておきます。
PowerNSX> Get-NsxEdge -Name infra-nsxesg-01 | select name,id
name id
---- --
infra-nsxesg-01 edge-1
Invoke-NsxWebRequest で設定します。
PowerNSX> [String]$xml_text = Get-Content .\syslog-nsx-edge.xml
PowerNSX> Invoke-NsxWebRequest -method PUT -URI "/api/4.0/edges/edge-1/syslog/config" -body $xml_text
設定が反映されたことを確認します。
取得した XML は、Format-XML でも確認できます。
Syslog サービスも、自動的に有効(enabled = true)になります。
PowerNSX> $data = Invoke-NsxWebRequest -method GET -URI "/api/4.0/edges/edge-1/syslog/config"
PowerNSX> $data.Content | Format-XML
<?xml version="1.0" encoding="UTF-8"?>
<syslog>
<version>12</version>
<enabled>true</enabled>
<protocol>udp</protocol>
<serverAddresses>
<ipAddress>192.168.1.223</ipAddress>
</serverAddresses>
</syslog>
DLR Control VM の Object ID も確認します。
PowerNSX> Get-NsxLogicalRouter | select name,id
name id
---- --
infra-nsxdlr-01 edge-5
DLR Control VM も NSX Edge アプライアンスによるものなので、
ESG と同様の XML、API で Syslog 転送先サーバを設定できます。
PowerNSX> [String]$xml_text = Get-Content .\syslog-nsx-edge.xml
PowerNSX> Invoke-NsxWebRequest -method PUT -URI "/api/4.0/edges/edge-5/syslog/config" -body $xml_text
転送先の Syslog サーバが設定できたことが確認できます。
PowerNSX> $data = Invoke-NsxWebRequest -method GET -URI "/api/4.0/edges/edge-5/syslog/config"
PowerNSX> $data.Content | Format-XML
<?xml version="1.0" encoding="UTF-8"?>
<syslog>
<version>2</version>
<enabled>true</enabled>
<protocol>udp</protocol>
<serverAddresses>
<ipAddress>192.168.1.223</ipAddress>
</serverAddresses>
</syslog>
以上、PowerNSX で NSX の Syslog サーバを設定してみる話でした。