[Amazon FSx for NetApp ONTAP] 管理アクティビティの監査ログをSyslogのVPCエンドポイントを用いてCloudWatch Logsに配信してみた

[Amazon FSx for NetApp ONTAP] 管理アクティビティの監査ログをSyslogのVPCエンドポイントを用いてCloudWatch Logsに配信してみた

長期間ログを保存したい要件やEMSイベントをトリガーに通知や操作をする運用に対応しやすくなった
2026.06.25

管理アクティビティの監査ログを長期間保存したいけど専用のSyslogサーバーは建てたくない

こんにちは、のんピ(@non____97)です。

皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)の管理アクティビティの監査ログを長期間保存したいけど専用のSyslogサーバーは建てたくないと思ったことはありますか? 私はあります。

FSxNの管理アクティビティの監査ログ(以降単純に"監査ログ")は、最大48日 もしくは 4,800MBのどちらかです。これは監査ログのローテーション条件が1日1回もしくは、サイズが100MBを超えた場合に行われ、48世代保持されるためです。

1日100MB以上のログ出力はよっぽどのことがなければ発生しないため、基本的には48日分と理解しておくと良いでしょう。

しかし、組織の監査ログの保持ポリシー的に48日では不足している場合があります。半年や一ヶ月以上確実に保持しなければならない場合もあるでしょう。

そのような場合は監査ログをCloudWatch LogsやS3バケットに配信したいところです。ただし、以下記事で紹介しているようにFSxNから直接これらに配信することはできません。

https://dev.classmethod.jp/articles/amazon-fsx-for-netapp-ontap-audit-log-for-management-activities/

対応として、Syslogサーバーを構築し、そちらに配信した後、SyslogサーバーからCloudWatch LogsやS3バケットに配信することが挙げられます。

この時、FSxNの制約事項としてSyslogの転送先はFSxNファイルシステムがあるサブネットと同じサブネットに存在している必要があります。つまりはFSxNファイルシステム専用のSyslogサーバーを建てるような形になります。

ただでさえEC2インスタンスのメンテナンスはしたくありません。また、可用性も気になります。AZ障害などでSyslogサーバーが潰れてしまうとその間はログ出力ができません。その対策でMulti-AZでSyslogサーバーを建てようにもActive/StandbyのHAクラスターとして動作させるような工夫をしなければ、平常時はログが二重に配信されてしまいます。これではログの運用性が下がってしまいます。ログ配信および保存時のコストが2倍になるのも気になりますね。

このように、ただログを出力したいだけなのに考えることが多すぎます。

今回アップデートによって、CloudWatch LogsがSyslogによる取り込みをサポートしました。

https://dev.classmethod.jp/articles/cloudwatch-logs-syslog-ingestion/

https://dev.classmethod.jp/articles/cloudwatch-logs-support-syslog-protocol/

これにより、今までの辛みが一気に解消されることになります。実際に試してみます。

いきなりまとめ

  • FSxNの管理アクティビティの監査ログを簡単にCloudWatch Logsに配信できるようになった
  • ログストリームはVPCエンドポイント単位で作成されるため、用途ごとにVPCエンドポイントを作成しなければ、様々なログが混在してしまう
  • EMSイベントについてもSyslogで配信できるようになったため、今までAWS側から認知ができなかったONTAP内部のイベントを把握して、運用に活かすことができるようになった

やってみた

検証環境

検証環境は以下のとおりです。

検証環境構成図.png

Multi-AZのFSxNファイルシステムを稼働させています。そして、SyslogのCloudWatch LogsのVPCエンドポイントをFSxNファイルシステムと同じサブネットに動作させています。

FSxNファイルシステムは以下のように作成しました。

1.FSxNファイルシステムの作成.png

セキュリティグループの作成

VPCエンドポイントを作成する前にセキュリティグループを作成しましょう。

CloudWatch LogsのSyslog取り込み機能では以下のプロトコル/ポートをサポートしています。

Protocol Port Notes
TCP + TLS 6514 Encrypted in transit. Recommended for compliance requirements.
TCP plaintext 1514 Plaintext over AWS PrivateLink (network-isolated).
UDP 514 Best-effort delivery.

抜粋 : Syslog ingestion - Amazon CloudWatch Logs

ONTAP側ではこれら全てをサポートしている形になっています。

[-protocol {udp-unencrypted|tcp-unencrypted|tcp-encrypted}] - Log Forwarding Protocol
The protocols are used for sending messages to the destination. The protocols can be one of the following values:

udp-unencrypted - User Datagram Protocol with no security
tcp-unencrypted - Transmission Control Protocol with no security
tcp-encrypted - Transmission Control Protocol with Transport Layer Security (TLS)

cluster log-forwarding create

確実な配信をしたい かつ ログ流量はそこまで多くないことからTCPであっても影響度は少ないと考え、今回はTCP/6514を選択しました。

VPCエンドポイントにアタッチするセキュリティグループではFSxNファイルシステムにアタッチしているセキュリティグループからのTCP/6514宛の通信を許可します。

2.セキュリティグループ.png

VPCエンドポイントの作成

VPCエンドポイントの作成を行います。

syslog-logs.us-east-1.amazonaws.comと通常のCloudWatch LogsのVPCエンドポイントとサービスエンドポイントとは異なります。こちらをFSxNファイルシステムと同じサブネットに作成します。

3.VPCエンドポイントの作成.png

数分で作成が完了しました。

4.VPCエンドポイント作成完了.png

それぞれのDNS名について名前解決をしてみましょう。

まずはVPC内のEC2インスタンスからです。

$ dig vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com

; <<>> DiG 9.18.33 <<>> vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62189
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com. IN A

;; ANSWER SECTION:
vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com. 60 IN A 10.0.1.226
vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com. 60 IN A 10.0.1.105

;; Query time: 0 msec
;; SERVER: 10.0.1.2#53(10.0.1.2) (UDP)
;; WHEN: Thu Jun 25 01:18:27 UTC 2026
;; MSG SIZE  rcvd: 133

$ dig vpce-09052e1d54acb0298-1930h81z-us-east-1b.syslog-logs.us-east-1.vpce.amazonaws.com

; <<>> DiG 9.18.33 <<>> vpce-09052e1d54acb0298-1930h81z-us-east-1b.syslog-logs.us-east-1.vpce.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37740
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;vpce-09052e1d54acb0298-1930h81z-us-east-1b.syslog-logs.us-east-1.vpce.amazonaws.com. IN        A

;; ANSWER SECTION:
vpce-09052e1d54acb0298-1930h81z-us-east-1b.syslog-logs.us-east-1.vpce.amazonaws.com. 60 IN A 10.0.1.226

;; Query time: 10 msec
;; SERVER: 10.0.1.2#53(10.0.1.2) (UDP)
;; WHEN: Thu Jun 25 01:18:35 UTC 2026
;; MSG SIZE  rcvd: 128

$ dig vpce-09052e1d54acb0298-1930h81z-us-east-1a.syslog-logs.us-east-1.vpce.amazonaws.com

; <<>> DiG 9.18.33 <<>> vpce-09052e1d54acb0298-1930h81z-us-east-1a.syslog-logs.us-east-1.vpce.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 801
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;vpce-09052e1d54acb0298-1930h81z-us-east-1a.syslog-logs.us-east-1.vpce.amazonaws.com. IN        A

;; ANSWER SECTION:
vpce-09052e1d54acb0298-1930h81z-us-east-1a.syslog-logs.us-east-1.vpce.amazonaws.com. 60 IN A 10.0.1.105

;; Query time: 0 msec
;; SERVER: 10.0.1.2#53(10.0.1.2) (UDP)
;; WHEN: Thu Jun 25 01:18:41 UTC 2026
;; MSG SIZE  rcvd: 128

$ dig syslog-logs.us-east-1.amazonaws.com

; <<>> DiG 9.18.33 <<>> syslog-logs.us-east-1.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44540
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;syslog-logs.us-east-1.amazonaws.com. IN        A

;; ANSWER SECTION:
syslog-logs.us-east-1.amazonaws.com. 60 IN A    10.0.1.105
syslog-logs.us-east-1.amazonaws.com. 60 IN A    10.0.1.226

;; Query time: 10 msec
;; SERVER: 10.0.1.2#53(10.0.1.2) (UDP)
;; WHEN: Thu Jun 25 01:18:46 UTC 2026
;; MSG SIZE  rcvd: 96

全て正常に名前解決できていますね。

手元のクライアントPCからも名前解決します。

> dig vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com

; <<>> DiG 9.10.6 <<>> vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60682
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com. IN A

;; ANSWER SECTION:
vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com. 60 IN A 10.0.1.105
vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com. 60 IN A 10.0.1.226

;; Query time: 26 msec
;; SERVER: 127.0.2.2#53(127.0.2.2)
;; WHEN: Thu Jun 25 10:20:25 JST 2026
;; MSG SIZE  rcvd: 205

> dig vpce-09052e1d54acb0298-1930h81z-us-east-1b.syslog-logs.us-east-1.vpce.amazonaws.com

; <<>> DiG 9.10.6 <<>> vpce-09052e1d54acb0298-1930h81z-us-east-1b.syslog-logs.us-east-1.vpce.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40625
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;vpce-09052e1d54acb0298-1930h81z-us-east-1b.syslog-logs.us-east-1.vpce.amazonaws.com. IN A

;; ANSWER SECTION:
vpce-09052e1d54acb0298-1930h81z-us-east-1b.syslog-logs.us-east-1.vpce.amazonaws.com. 60 IN A 10.0.1.226

;; Query time: 69 msec
;; SERVER: 127.0.2.2#53(127.0.2.2)
;; WHEN: Thu Jun 25 10:20:40 JST 2026
;; MSG SIZE  rcvd: 211

> dig vpce-09052e1d54acb0298-1930h81z-us-east-1a.syslog-logs.us-east-1.vpce.amazonaws.com

; <<>> DiG 9.10.6 <<>> vpce-09052e1d54acb0298-1930h81z-us-east-1a.syslog-logs.us-east-1.vpce.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2800
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;vpce-09052e1d54acb0298-1930h81z-us-east-1a.syslog-logs.us-east-1.vpce.amazonaws.com. IN A

;; ANSWER SECTION:
vpce-09052e1d54acb0298-1930h81z-us-east-1a.syslog-logs.us-east-1.vpce.amazonaws.com. 60 IN A 10.0.1.105

;; Query time: 29 msec
;; SERVER: 127.0.2.2#53(127.0.2.2)
;; WHEN: Thu Jun 25 10:20:44 JST 2026
;; MSG SIZE  rcvd: 211

> dig syslog-logs.us-east-1.amazonaws.com

; <<>> DiG 9.10.6 <<>> syslog-logs.us-east-1.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 34014
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;syslog-logs.us-east-1.amazonaws.com. IN A

;; AUTHORITY SECTION:
us-east-1.amazonaws.com. 7200 IN SOA dns-external-route53.us-east-1.amazonaws.com. root.amazon.com. 1 3600 900 604800 900

;; Query time: 21 msec
;; SERVER: 127.0.2.2#53(127.0.2.2)
;; WHEN: Thu Jun 25 10:20:50 JST 2026
;; MSG SIZE  rcvd: 156

syslog-logs.us-east-1.amazonaws.comのみ名前解決に失敗しました。

つまりはパブリックなサービスエンドポイントはなく、VPCエンドポイントが必須ということが分かります。

CloudWatch Logsロググループの作成

配信先のCloudWatch Logsのロググループを作成します。

特にこのタイミングでは特殊な設定はありません。

5.non-97-fsxn.png

ロググループ作成後にSyslog設定を行います。アクション-Syslog設定を作成をクリックします。

6.Syslog設定を作成.png

事前に作成したVPCエンドポイントを指定して、作成をクリックします。

7.Syslog configuration.png

完了すると以下のようになります。

8.Syslog configuration2.png

最後にCloudWatch Logsのリソースポリシーを更新し、VPCエンドポイントを経由したSyslogの取り込みを行えるようにしてあげます。

> aws logs put-resource-policy \
  --policy-name syslog-ingestion \
  --policy-document '{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "syslog.logs.amazonaws.com"
      },
      "Action": [
        "logs:PutLogEvents",
        "logs:CreateLogStream"
      ],
      "Resource": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/syslog/non-97-fsxn:*:*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "<AWSアカウントID>"
        },
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:ec2:us-east-1:<AWSアカウントID>:vpc-endpoint/vpce-09052e1d54acb0298"
        }
      }
    }
  ]
}'
{
    "resourcePolicy": {
        "policyName": "syslog-ingestion",
        "policyDocument": "{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"Service\": \"syslog.logs.amazonaws.com\"\n      },\n      \"Action\": [\n        \"logs:PutLogEvents\",\n        \"logs:CreateLogStream\"\n      ],\n      \"Resource\": \"arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/syslog/non-97-fsxn:*:*\",\n      \"Condition\": {\n        \"StringEquals\": {\n          \"aws:SourceAccount\": \"<AWSアカウントID>\"\n        },\n        \"ArnEquals\": {\n          \"aws:SourceArn\": \"arn:aws:ec2:us-east-1:<AWSアカウントID>:vpc-endpoint/vpce-09052e1d54acb0298\"\n        }\n      }\n    }\n  ]\n}",
        "lastUpdatedTime": 1782352394718,
        "policyScope": "ACCOUNT"
    }
}

管理アクティビティ監査ログのSyslog設定

以降はFSxN側の設定です。

FSxNファイルシステムにSSH接続をしてONTAP CLIで操作できるようにします。

FsxId08042f911cbc0ead3::> version
NetApp Release 9.17.1P6: Wed Mar 25 15:38:10 UTC 2026

現在の監査ログは以下のとおりです。

FsxId08042f911cbc0ead3::> security audit log show -fields timestamp, node, application, vserver, username, input, state, message -application ssh -state Error|Success -timestamp >"Thu Jun 25 00:50:00 2026"
timestamp                  node                      application vserver                username          input                     state   message
-------------------------- ------------------------- ----------- ---------------------- ----------------- ------------------------- ------- -------
"Thu Jun 25 00:58:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane set -privilege diagnostic Success -
"Thu Jun 25 00:58:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane Logging out               Success -
"Thu Jun 25 00:58:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane set -privilege diagnostic Success -
"Thu Jun 25 00:58:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane security login unlock -username diag
                                                                                                                                    Success -
"Thu Jun 25 00:58:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane Logging out               Success -
"Thu Jun 25 01:08:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane set -privilege diagnostic Success -
"Thu Jun 25 01:08:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane Logging out               Success -
"Thu Jun 25 01:08:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane set -privilege diagnostic Success -
"Thu Jun 25 01:08:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane security login unlock -username diag
                                                                                                                                    Success -
"Thu Jun 25 01:08:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane Logging out               Success -
"Thu Jun 25 01:18:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane set -privilege diagnostic Success -
"Thu Jun 25 01:18:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane Logging out               Success -
"Thu Jun 25 01:18:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane set -privilege diagnostic Success -
"Thu Jun 25 01:18:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane security login unlock -username diag
                                                                                                                                    Success -
"Thu Jun 25 01:18:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane Logging out               Success -
"Thu Jun 25 01:22:33 2026" FsxId08042f911cbc0ead3-01 ssh         FsxId08042f911cbc0ead3 fsxadmin          Logging in                Success -
16 entries were displayed.

これらの内容が確認していきましょう。

Syslog設定をする前にVPCエンドポイントのDNS名で名前解決できるかを確認します。

FSxNでは現時点で参照しているDNSサーバーは確認できません。

FsxId08042f911cbc0ead3::> dns show
This table is currently empty.

FsxId08042f911cbc0ead3::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

FsxId08042f911cbc0ead3::*> dns show
This table is currently empty.

もし、裏側でRoute 53 VPC Resolverを使用しているのであれば、syslog-logs.us-east-1.amazonaws.comの名前解決ができるはずです。

FSxNでは直接的にDNSによる名前解決を行うコマンドはなさそうですので、pingを投げる過程で発生する名前解決結果を見て判断します。

FsxId08042f911cbc0ead3::*> network ping -node FsxId08042f911cbc0ead3-01 -vserver FsxId08042f911cbc0ead3 -destination vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com -count 1 -show-detail true
PING vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com (10.0.1.226): 56 data bytes

--- vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss

FsxId08042f911cbc0ead3::*> network ping -node FsxId08042f911cbc0ead3-01 -vserver FsxId08042f911cbc0ead3 -destination vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com -count 1 -show-detail true
PING vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com (10.0.1.105): 56 data bytes

--- vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss

FsxId08042f911cbc0ead3::*> network ping -node FsxId08042f911cbc0ead3-01 -vserver FsxId08042f911cbc0ead3 -destination syslog-logs.us-east-1.amazonaws.com -count 1 -show-detail true
ping: cannot resolve syslog-logs.us-east-1.amazonaws.com: Unknown host

はい、syslog-logs.us-east-1.amazonaws.comのみ名前解決に失敗しました。

と言うことで、裏側でRoute 53 VPC Resolverを参照している訳ではなさそうです。

それではSyslog設定を行います。

FsxId08042f911cbc0ead3::*> cluster log-forwarding show
This table is currently empty.

FsxId08042f911cbc0ead3::*> cluster log-forwarding create -destination vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com -port 6514 -protocol tcp-encrypted -facility local0 -verify-server true -force true -message-format rfc-5424

FsxId08042f911cbc0ead3::*> cluster log-forwarding show
                                                Verify  Syslog
Destination Host         Port   Protocol        Server  Facility
------------------------ ------ --------------- ------  --------
vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com
                         6514   tcp-encrypted   true    local0
 IPspace: Default

FsxId08042f911cbc0ead3::*> cluster log-forwarding show -instance

                    Destination Host: vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com
                    Destination Port: 6514
             Log Forwarding Protocol: tcp-encrypted
              IPspace of Destination: Default
  Verify Destination Server Identity: true
                     Syslog Facility: local0
Cached DNS of Last Successful Lookup: 10.0.1.226
               Syslog Message Format: rfc-5424
    Syslog Timestamp Format Override: no-override
     Syslog Hostname Format Override: no-override

設定が完了しました。

配信されたログの確認

CloudWatch Logsを確認します。

9.ログストリームが作成された.png

はい、ログストリームが作成されていますね。ログストリームはVPCエンドポイントごとに作成されるようなので、VPCエンドポイントは用途ごとに専用で作成することになりそうです。個人的にはファシリティごとにプレフィックスが作成されると嬉しいなと感じました。

肝心のログは以下のとおりです。

<134>1 2026-06-25T01:54:50+00:00 FsxId08042f911cbc0ead3-01 kern 5679 audit - : FsxId08042f911cbc0ead3-01: 00000002.0000a935 0000b89a Thu Jun 25 2026 01:54:49 +00:00 [kern_audit:info:5679] 8003e800000011af:8003e80000001291 :: FsxId08042f911cbc0ead3:ssh :: 10.0.1.21:50316 :: FsxId08042f911cbc0ead3:fsxadmin:fsxadmin :: cluster log-forwarding create -destination vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com -port 6514 -protocol tcp-encrypted -facility local0 -verify-server true -force true -message-format rfc-5424 :: Pending 
<134>1 2026-06-25T01:54:50+00:00 FsxId08042f911cbc0ead3-01 kern 5679 audit - : FsxId08042f911cbc0ead3-01: 00000002.0000a936 0000b89a Thu Jun 25 2026 01:54:49 +00:00 [kern_audit:info:5679] 8003e800000011af:8003e80000001291 :: FsxId08042f911cbc0ead3:ssh :: 10.0.1.21:50316 :: FsxId08042f911cbc0ead3:fsxadmin:fsxadmin :: cluster log-forwarding create -destination vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com -port 6514 -protocol tcp-encrypted -facility local0 -verify-server true -force true -message-format rfc-5424 :: Success 

10.ログ.png

Syslog設定時の操作ログが記録されていますね。良い感じですね。

追加でコマンド実行します。

FsxId08042f911cbc0ead3::*> top

そのまま待つと、以下ログがCloudWatch Logsに配信されてきました。

<134>1 2026-06-25T01:58:14+00:00 FsxId08042f911cbc0ead3-01 kern 5679 audit - : FsxId08042f911cbc0ead3-01: 00000002.0000a96e 0000c095 Thu Jun 25 2026 01:58:13 +00:00 [kern_audit:info:5679] 8003e800000011af:8003e800000012aa :: FsxId08042f911cbc0ead3:ssh :: 10.0.1.21:50316 :: FsxId08042f911cbc0ead3:fsxadmin:fsxadmin :: top :: Pending 
<134>1 2026-06-25T01:58:14+00:00 FsxId08042f911cbc0ead3-01 kern 5679 audit - : FsxId08042f911cbc0ead3-01: 00000002.0000a96f 0000c095 Thu Jun 25 2026 01:58:13 +00:00 [kern_audit:info:5679] 8003e800000011af:8003e800000012aa :: FsxId08042f911cbc0ead3:ssh :: 10.0.1.21:50316 :: FsxId08042f911cbc0ead3:fsxadmin:fsxadmin :: top :: Success 

また、しばらくすると実際に私の方で操作した時のログだけではなく、裏側で実行されている時のログもどんどん出力されてきました。

11.大量のログが出力される.png

ここら辺のログの絞り込みはFSxN側でコントロールすることはできないため、CloudWatch Logs側で後から加工する形になります。

次にCloudWatch Logs Insightsでログを確認してみましょう。

以下クエリを実行します。

SOURCE "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/syslog/non-97-fsxn" START=-604800s END=0s |
fields @timestamp, @message
| parse @message "* :: * :: * :: * :: * :: *" as _hdr, access, client, principal, command, result
| filter result not like "Pending"
| filter principal not like "fsx-control-plane"
| parse principal "*:*:*" as _vs, _app, user
| parse client "*:*" as src_ip, _port
| sort @timestamp desc
| display @timestamp, src_ip, user, command, result
| limit 100

12.ログ分析1.png

良い感じにfsxadminユーザーで操作したログだけが出力されました。

次に以下クエリを実行します。

SOURCE "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/syslog/non-97-fsxn" START=-604800s END=0s |
fields @timestamp, hostname as node
| parse @message "* :: * :: * :: * :: * :: *" as _hdr, _access, _client, _principal, input, _result
| parse _access "*:*" as _avs, application
| parse _principal "*:*:*" as vserver, _appsvc, username
| parse _result /(?<state>[A-Za-z]+):?\s*(?<message>.*)/
| filter application = "ssh"
| filter state = "Success" or state = "Error"
| sort @timestamp desc
| display @timestamp, node, application, vserver, username, input, state, message

13.ログ分析2.png

こちらも問題なく実行できていますね。
出力されている

FSxNフェイルオーバー時の管理アクティビティの監査ログ確認

FSxNがフェイルオーバーした際にも継続してログ出力されているかも確認したいです。

試してみましょう。

スループットキャパシティを変更してフェイルオーバーを行わせます。

14.スループットキャパシティ更新.png

フェイルオーバーが開始するとSSHのコネクションが切れます。

再接続を行い、LIFを確認すると、fsxadminやNFS/SMBの管理用のLIFが02ノードになっていることが分かります。

FsxId08042f911cbc0ead3::> network interface show
            Logical    Status     Network            Current       Current Is
Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
----------- ---------- ---------- ------------------ ------------- ------- ----
FsxId08042f911cbc0ead3
            fsxadmin     up/up    198.19.185.178/24  FsxId08042f911cbc0ead3-02
                                                                   e0e     false
            inter_1      up/-     10.0.1.69/26       FsxId08042f911cbc0ead3-01
                                                                   e0e     true
            inter_2      up/up    10.0.1.206/26      FsxId08042f911cbc0ead3-02
                                                                   e0e     true
svm
            iscsi_1      up/-     10.0.1.87/26       FsxId08042f911cbc0ead3-01
                                                                   e0e     true
            iscsi_2      up/up    10.0.1.249/26      FsxId08042f911cbc0ead3-02
                                                                   e0e     true
            nfs_smb_management_1
                         up/up    198.19.185.130/24  FsxId08042f911cbc0ead3-02
                                                                   e0e     false
6 entries were displayed.

この状態でボリュームを作成します。

FsxId08042f911cbc0ead3::> volume create -vserver svm -volume vol2 -aggregate aggr1 -size 1GB -state online -policy default -tiering-policy none
[Job 52] Job succeeded: Successful

FsxId08042f911cbc0ead3::> vol show
Vserver   Volume       Aggregate    State      Type       Size  Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm       svm_root     aggr1        online     RW          1GB    972.4MB    0%
svm       vol1         aggr1        online     RW         32GB    30.40GB    0%
svm       vol2         aggr1        online     RW          1GB    972.5MB    0%
3 entries were displayed.

FsxId08042f911cbc0ead3::> volume mount -vserver svm -volume vol2 -junction-path /vol2

監査ログを確認します。

FsxId08042f911cbc0ead3::> security audit log show -fields timestamp, node, application, vserver, username, input, state, message -application ssh -state Error|Success -timestamp >"Thu Jun 25 02:10:00 2026"
timestamp                  node                      application vserver                username input      state   message
-------------------------- ------------------------- ----------- ---------------------- -------- ---------- ------- -------
"Thu Jun 25 02:17:46 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsxadmin Logging in Success -
"Thu Jun 25 02:18:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane
                                                                                                 set -privilege diagnostic
                                                                                                            Success -
"Thu Jun 25 02:18:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane
                                                                                                 Logging out
                                                                                                            Success -
"Thu Jun 25 02:18:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane
                                                                                                 set -privilege diagnostic
                                                                                                            Success -
"Thu Jun 25 02:18:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane
                                                                                                 security login unlock -username diag
                                                                                                            Success -
"Thu Jun 25 02:18:19 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsx-control-plane
                                                                                                 Logging out
                                                                                                            Success -
"Thu Jun 25 02:18:32 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsxadmin top        Success -
"Thu Jun 25 02:20:17 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsxadmin volume create -vserver svm -volume vol2 -aggregate aggr1 -size 1GB -state online -policy default -tiering-policy none
                                                                                                            Success -
"Thu Jun 25 02:24:30 2026" FsxId08042f911cbc0ead3-02 ssh         FsxId08042f911cbc0ead3 fsxadmin volume mount -vserver svm -volume vol2 -junction-path /vol2
                                                                                                            Success -
9 entries were displayed.

02ノードでコマンド受付がされていることが分かりますね。

それでは、CloudWatch Logs Insightsで以下クエリを実行します。

SOURCE "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/syslog/non-97-fsxn" START=-1800s END=0s |
fields @timestamp, hostname as node
| parse @message "* :: * :: * :: * :: * :: *" as _hdr, _access, _client, _principal, input, _result
| parse _access "*:*" as _avs, application
| parse _principal "*:*:*" as vserver, _appsvc, username
| parse _result /(?<state>[A-Za-z]+):?\s*(?<message>.*)/
| filter state = "Success" or state = "Error"
| sort @timestamp asc
| display @timestamp, node, application, vserver, username, input, state, message

15.フェイルオーバー中のログの確認.png

はい、フェイルオーバー中に実行したボリュームの作成およびマウントコマンドのログが配信されていることを確認できました。これは嬉しいですね。ちなみにログレコード内の時刻とCloudWatch Logsのタイムスタンプを見比べると配信までは1~4秒程度です。

スループットキャパシティの変更が完了し、フェイルバックが完了しました。

ボリュームをアンマウントします。

FsxId08042f911cbc0ead3::> vol unmount -vserver svm -volume vol2

FsxId08042f911cbc0ead3::> network interface show
            Logical    Status     Network            Current       Current Is
Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
----------- ---------- ---------- ------------------ ------------- ------- ----
FsxId08042f911cbc0ead3
            fsxadmin     up/up    198.19.185.178/24  FsxId08042f911cbc0ead3-01
                                                                   e0e     true
            inter_1      up/up    10.0.1.69/26       FsxId08042f911cbc0ead3-01
                                                                   e0e     true
            inter_2      up/-     10.0.1.206/26      FsxId08042f911cbc0ead3-02
                                                                   e0e     true
svm
            iscsi_1      up/up    10.0.1.87/26       FsxId08042f911cbc0ead3-01
                                                                   e0e     true
            iscsi_2      up/-     10.0.1.249/26      FsxId08042f911cbc0ead3-02
                                                                   e0e     true
            nfs_smb_management_1
                         up/up    198.19.185.130/24  FsxId08042f911cbc0ead3-01
                                                                   e0e     true
6 entries were displayed.

FsxId08042f911cbc0ead3::> vol unmount -vserver svm -volume vol2

この時の監査ログは以下のとおりです。

16.スループットキャパシティ変更完了後.png

今度は01のノードでfsxadminがボリュームのアンマウントをしたことがログからも確認できますね。

EMSイベントのSyslog転送

次にEMSイベントのSyslog転送ができるかどうか試してみます。

過去試した時にはFSxN側でEMSイベントに対してSyslog転送することはできませんでした。

https://dev.classmethod.jp/articles/fsxn-ems-events/

試しに確認してみましょう。

FsxId08042f911cbc0ead3::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

FsxId08042f911cbc0ead3::*> event notification ?
  create                      Create an event notification
  delete                      Delete event notifications
  destination>                Create, modify, delete and view event notification destinations.
  history>                    The history directory
  modify                      Modify event notifications
  show                        Display event notifications

はい、どうやらできそうな雰囲気ですね。

つまりは従来CloudWatchメトリクスなどAWSレイヤーで検出できなかったイベントをCloudWatch Logsに配信されるログを介して把握し、管理者に通知をしたり、自動で対応をしたりということができるようになりました。アツいですね。

実際に試してみましょう。

まずは配信先の定義をします。

FsxId08042f911cbc0ead3::*> event notification destination create -name syslog -syslog vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com -syslog-port 6514 -syslog-transport tcp-encrypted -syslog-message-format rfc-5424

FsxId08042f911cbc0ead3::*> event notification destination show
Name            Type        Destination
--------------  ----------  ---------------------
syslog          syslog      vpce-09052e1d54acb0298-1930h81z.syslog-logs.us-east-1.vpce.amazonaws.com (port: 6514, transport: tcp-encrypted)

FsxId08042f911cbc0ead3::*> event notification destination show -instance

                Destination Name: syslog
             Type of Destination: syslog
                     Destination: vpce-09052e1d54acb0298-1930h81z.syslog-logs.
                                  us-east-1.vpce.amazonaws.com (port: 6514,
                                  transport: tcp-encrypted)
 Server CA Certificates Present?: true
   Client Certificate Issuing CA: -
Client Certificate Serial Number: -
       Client Certificate Valid?: -
                     Syslog Port: 6514
                Syslog Transport: tcp-encrypted
           Syslog Message Format: rfc-5424
Syslog Timestamp Format Override: no-override
 Syslog Hostname Format Override: no-override
      System-Defined Destination: false
             Access Control Role: fsxadmin

それではEMSイベントのSyslog配信設定を行います。フィルターはデフォルトで存在しているものを使用します。

FsxId08042f911cbc0ead3::*> event filter show
Filter      Rule Rule                                    SNMP Trap
Name        Posn Type     Message Name     Severity      Type      Parameters
----------- ---- -------- ---------------- ------------- --------- -----------
default-trap-events
            1    include  *                EMERGENCY, ALERT
                                                         *         *=*
            2    include  callhome.*       ERROR         *         *=*
            3    include  *                *             Standard, Built-in
                                                                   *=*
            4    exclude  *                *             *         *=*
important-events
            1    include  *                EMERGENCY, ALERT
                                                         *         *=*
            2    include  callhome.*       ERROR         *         *=*
            3    exclude  *                *             *         *=*
no-info-debug-events
            1    include  *                EMERGENCY, ALERT, ERROR, NOTICE
                                                         *         *=*
            2    exclude  *                *             *         *=*
9 entries were displayed.

FsxId08042f911cbc0ead3::*> event notification create -filter-name no-info-debug-events -destinations syslog -access-control-role fsxadmin

FsxId08042f911cbc0ead3::*> event notification show
ID   Filter Name                     Destinations
---- ------------------------------  -----------------
2    no-info-debug-events            syslog

FsxId08042f911cbc0ead3::*> event notification show -instance

         Internal Event Notification ID: 101
                  Event Notification ID: 2
                      Event Filter Name: no-info-debug-events
List of Event Notification Destinations: syslog
                    Access Control Role: fsxadmin

設定が完了しました。

試しにテストEMSイベントを発行します。

FsxId08042f911cbc0ead3::*> event notification destination check -node FsxId08042f911cbc0ead3-01 -destination-name syslog
Event "ems.eut.notice" was successfully sent to the specified destination.

CloudWatch Logsを確認すると、以下出力が愛rました。

<13>1 2026-06-25T02:56:33+00:00 FsxId08042f911cbc0ead3-01 notifyd - ems.eut.notice - A dummy syslog formatted string for a NOTICE event with value '0'.
<134>1 2026-06-25T02:56:34+00:00 FsxId08042f911cbc0ead3-01 kern 6223 audit - : FsxId08042f911cbc0ead3-01: 00000004.00005718 0000531d Thu Jun 25 2026 02:56:33 +00:00 [kern_audit:info:6223] 8003e800000002bf:8003e80000000541 :: FsxId08042f911cbc0ead3:ssh :: 10.0.1.21:55784 :: FsxId08042f911cbc0ead3:fsxadmin:fsxadmin :: event notification destination check -node FsxId08042f911cbc0ead3-01 -destination-name syslog :: Success 

うまく配信されていますね。先ほどと同じVPCエンドポイントを使用してしまっているので、同じログストリームに出力されてしまっているのが少し分かりづらいところです。

実際にEMSイベントを配信させてみましょう。

イベントカタログを確認するパスワード変更でイベント発行がなされそうでした。

FsxId08042f911cbc0ead3::*> event catalog show -message-name *passwd*
Message                          Severity         SNMP Trap Type
-------------------------------- ---------------- -----------------
passwd.changed                   NOTICE           Severity-based

パスワード変更を行いEMSイベントを発行させます。

FsxId08042f911cbc0ead3::*> security login password -username fsxadmin

Enter your current password:
Enter a new password:
Enter it again:

FsxId08042f911cbc0ead3::*> event log show -time >"6/25/2026 03:00:00"
Time                Node             Severity      Event
------------------- ---------------- ------------- ---------------------------
6/25/2026 03:07:32  FsxId08042f911cbc0ead3-01
                                     NOTICE        passwd.changed: passwd for user 'fsxadmin' changed.

しかし、待てども待てどもCloudWatch Logsにはこちらのログが配信されません。

フィルターが影響しているのかと思い検証してみましたが、特に問題ないように見えます。

FsxId08042f911cbc0ead3::*> event filter test -filter-name no-info-debug-events -message-name passwd.changed
The message-name "passwd.changed" is included in the given filter.

色々カタログを見ていると、ディスクフル状態にするEMSイベントが発行するようです。

ボリュームサイズを20MBにして、1GBの書き込みをしてあげます。

FsxId08042f911cbc0ead3::*> volume modify -volume vol1 -vserver svm -size 20MB
Volume modify successful on volume vol1 of Vserver svm.

FsxId08042f911cbc0ead3::*> volume show
Vserver   Volume       Aggregate    State      Type       Size  Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm       svm_root     aggr1        online     RW          1GB    972.2MB    0%
svm       vol1         aggr1        online     RW         20MB    18.59MB    2%
svm       vol2         aggr1        online     RW          1GB    972.5MB    0%
3 entries were displayed.
$ sudo mount -t nfs svm-004edd82ad16c9420.fs-08042f911cbc0ead3.fsx.us-east-1.amazonaws.com:/vol1 /mnt/fsxn/
$ df -hT -t nfs4
Filesystem                                                                   Type  Size  Used Avail Use% Mounted on
svm-004edd82ad16c9420.fs-08042f911cbc0ead3.fsx.us-east-1.amazonaws.com:/vol1 nfs4   19M  384K   19M   2% /mnt/fsxn

$ sudo dd if=/dev/urandom of=/mnt/fsxn/random_pattern_binary_block_1GiB bs=1M count=1024
dd: error writing '/mnt/fsxn/random_pattern_binary_block_1GiB': No space left on device
94+0 records in
93+0 records out
97517568 bytes (98 MB, 93 MiB) copied, 0.457489 s, 213 MB/s

書き込みが途中で終了しました。

EMSイベントを確認すると、確かにディスクフルになったことによりイベントが発行されていました。

FsxId08042f911cbc0ead3::*> event log show -time >"6/25/2026 03:00:00"
Time                Node             Severity      Event
------------------- ---------------- ------------- ---------------------------
6/25/2026 03:33:31  FsxId08042f911cbc0ead3-01
                                     ALERT         monitor.volume.full: Volume "vol1@vserver:97f93ade-702f-11f1-97f1-2bf30b9c5c7a" is full (using or reserving 100% of space and 0% of inodes).
6/25/2026 03:33:31  FsxId08042f911cbc0ead3-01
                                     ALERT         wafl.vol.full: Insufficient space on volume vol1@vserver:97f93ade-702f-11f1-97f1-2bf30b9c5c7a to perform operation. 72.0KB was requested but only 28.0KB was available.
6/25/2026 03:23:26  FsxId08042f911cbc0ead3-01
                                     NOTICE        passwd.changed: passwd for user 'fsxadmin' changed.
6/25/2026 03:07:32  FsxId08042f911cbc0ead3-01
                                     NOTICE        passwd.changed: passwd for user 'fsxadmin' changed.
4 entries were displayed.

また、CloudWatch Logsを確認すると以下ログが配信されていました。やったね。

<1>1 2026-06-25T03:33:31+00:00 FsxId08042f911cbc0ead3-01 kernel - monitor.volume.full - Volume "vol1@vserver:97f93ade-702f-11f1-97f1-2bf30b9c5c7a" is full (using or reserving 100% of space and 0% of inodes).
<1>1 2026-06-25T03:33:31+00:00 FsxId08042f911cbc0ead3-01 kernel - wafl.vol.full - Insufficient space on volume vol1@vserver:97f93ade-702f-11f1-97f1-2bf30b9c5c7a to perform operation. 72.0KB was requested but only 28.0KB was available.

Logs Insightsでも以下のようにクエリできます。

SOURCE "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/syslog/non-97-fsxn" START=-1800s END=0s |
parse @message "<*>1 * * * - * - *" as pri, _ts, host, app, msgname, msg
| filter app = "kernel" or app = "notifyd"
| sort @timestamp desc
| display @timestamp, host, pri, msgname, msg

17.EMSイベントのInsight.png

長期間ログを保存したい要件やEMSイベントをトリガーに通知や操作をする運用に対応しやすくなった

Amazon FSx for NetApp ONTAPの管理アクティビティの監査ログをSyslogのVPCエンドポイントを用いてCloudWatch Logsに配信してみました。

長期間ログを保存したい要件やEMSイベントをトリガーに通知や操作をする運用に対応しやすくなったなと感じています。個人的には非常に嬉しいアップデートでした。

この記事が誰かの助けになれば幸いです。

以上、クラウド事業本部 コンサルティング部の のんピ(@non____97)でした!

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事