ADC

日志

日志是指软件生成的数据,其中包含有关操作系统、应用程序、服务器或其他设备中的使用模式、活动和操作的信息。存储这些日志的文件称为日志文件。日志文件是网络可观测性的主要数据源。

本主题涵盖以下内容:

审核日志

审核是对条件或情况的有条不紊的检查或审查。审核日志记录功能使您可以记录各种模块收集的 NetScaler 状态和状态信息。日志信息可以在内核和用户级守护程序中。

您可以将 NetScaler 配置为将日志信息本地存储在 NetScaler 上,或将其导出到远程服务器或同时导出到远程服务器。有关审核日志的更多信息,请参阅审核日志

配置审核日志

有关如何配置 NetScaler 以进行审核记录的信息,请参阅配置 NetScaler 设备以进行审核日志记录

审核日志示例

以下是审核日志示例:

May 31 02:05:23 <local0.info> 10.106.44.21  05/31/2024:06:05:23 GMT HA1 0-PPE-0 : default API CMD_EXECUTED 7825 0 :  User admuser -
ADM_User NONE - Remote_ip 10.106.44.21 - Command "show ns license" - Status "Success"
<!--NeedCopy-->

下图描述了审核日志:

审核日志格式

导出审核日志

您可以将审核日志和事件从 NetScaler 导出到 Splunk 等行业标准日志聚合器平台,并获得有意义的见解。有关更多信息,请参阅将审核日志和事件直接从 NetScaler 导出到 Splunk

管理日志

管理日志是由在 NetScaler 管理核心上运行的进程生成的日志。(例如 bash、httpd)。属于以下日志文件的一部分的消息将作为管理日志的一部分导出:

  • 外壳或平台日志

    • bash.log:日志文件由 bash 进程创建。它记录 bash shell 处理的命令。
    • sh.log:日志文件由 sh 进程创建。它记录 sh shell 处理的命令。

访问日志

  • auth.log:日志文件记录所有 SSHd 活动和 Console 活动。

  • nsvpn.log:日志文件记录有关虚拟专用网络 (VPN) 活动和事件的详细信息。

  • httpaccess.log:日志文件记录了定向到管理 IP 地址的所有 HTTP 活动。通常,此日志文件包括 NetScaler GUI 访问、NITRO API 和 VPN 访问。

  • httperror.log:日志文件记录了定向到管理 IP 地址的任何 HTTP 活动,这些活动由于任何超时(例如,已达到 PHP 最大超时时间)或后端的任何编程错误而导致错误。Apache 的定期重启也会记录到此文件中。

  • httpaccess-vpn.log:日志文件由 apache 提供的网关门户端点数据组成,用户可以访问这些数据以及日期和时间。

  • httperror-vpn.log:日志文件由 apache 提供的网关门户端点数据组成,用户可以访问这些数据以及日期和时间。

NetScaler 管理日志

  • notice.log:日志文件是系统日志数据流,它记录根据 syslogd 的“通知”数据流生成的系统日志记录。

  • ns.log:该日志文件包含 NetScaler 系统日志。由 NetScaler 的多个模块(例如,负载平衡、SSL、应用防火墙)生成的日志将写入此文件中。在导出过程中,仅导出由管理流程编写的 ns.log 的内容。不导出 NSPPE 进程写入的日志。

在 NetScaler 上运行 syslogd 的管理日志记录到相应的日志文件中,这些文件由在管理核心上运行的各种进程生成。管理日志定期导出,通常每 60 秒导出一次。

配置管理日志的导出

您可以使用以下方法之一配置管理日志的导出:

  • 配置将管理日志导出到 syslog 服务器
  • 配置将管理日志导出到 HTTP 服务器或 HEC 端点,例如 Splunk

配置将管理日志导出到 syslog 服务器

要配置管理日志的导出,必须执行以下步骤:

  1. 使用管理日志选项在 NetScaler 上创建审核 syslog 操作。
  2. 使用 syslog 操作创建系统日志审核策略。
  3. 将 syslog 审核策略与系统全局实体绑定以启用所有 NetScaler 系统事件的记录。
配置 syslog 审核操作

要使用 CLI 在 NetScaler 上配置系统日志审核操作,请运行以下命令:

add audit syslogAction <name> (<serverIP> [-serverPort <port>] -logLevel <logLevel> ... [-managementlog <managementlog> ...] ... [-managementloglevel <managementloglevel> ...][-transport ( TCP | UDP )])
<!--NeedCopy-->

示例:

add audit syslogAction test 10.106.186.102 -serverPort 514 -logLevel ALL -managementlog SHELL NSMGMT -managementloglevel ALL -transport TCP
<!--NeedCopy-->

在此配置中:

  • name: syslog 操作的名称
  • serverIP: 系统日志服务器的 IP 地址。
  • serverPort: syslog 服务器接受连接的端口。
  • logLevel:审核日志级别。
  • managementlog:必须导出的管理日志类型。
  • managementloglevel:您要为导出设置的管理日志级别。
  • transport:用于向 syslog 服务器发送审核日志的传输类型。

注意:

启用管理日志后,syslogAction 配置仅支持服务器 IP 地址和端口配置。不支持基于域的服务 (DBS) 和负载平衡虚拟服务器名称配置。

对于跨多个外部 syslog 服务器导出的负载平衡管理日志,可以使用以下示例配置:

add service syslog_server <server_ip> UDP <port>

add service syslog_server1 1.3.4.4 UDP 514

add service syslog_server2 1.3.4.5 UDP 514

add lb vserver lb1 UDP <lb_vip> <lb_port>

bind lb vserver lb1 syslog_server1

bind lb vserver lb1 syslog_server2

在 syslogAction 中,配置以下内容:

add syslogAction sys1 <server_ip> -serverPort <server_port> -transport UDP -loglevel <loglevel>

add syslogAction sys1 lb_vip -serverPort lb_port -transport UDP -loglevel <loglevel>

要使用 GUI 在 NetScaler 上配置系统日志审核操作,请执行以下步骤:

  1. 导航到“系统”>“审核”>“系统日志”>“服务器”选项卡,然后单击“添加”。
  2. 在“创建审核服务器”页面上,提供以下详细信息:
    1. 输入 Syslog 服务器的名称。
    2. 从“服务器类型”列表中选择“服务器 IP”,然后输入 syslog 服务器 IP 地址和端口。
    3. 从“日志级别”、“管理日志”和“管理日志级别”部分中选择所需的日志级别。
  3. 单击创建
配置 syslog 审核策略

要使用 CLI 配置 syslog 审核策略,请运行以下命令:

add audit syslogPolicy <name> TRUE <syslogAction>

示例:

add audit syslogPolicy test-policy TRUE test

要使用 GUI 配置 syslog 审核策略,请执行以下步骤:

  1. 导航到“系统”>“审核”>“系统日志”>“策略”选项卡,然后单击“添加”。
  2. 在“创建审核 Syslog 策略”页面上,输入名称,选择“高级策略”,然后从“服务器”列表中选择您创建的审核 syslog 服务器。
绑定审核日志策略

要使用 CLI 将 syslog 审核日志策略绑定到绑定点 SYSTEM_GLOBAL,请运行以下命令:

bind audit syslogGlobal <policyname> -globalBindType SYSTEM_GLOBAL

示例:

bind audit syslogGlobal test-policy -globalBindType SYSTEM_GLOBAL

要使用 GUI 全局绑定 syslog 审核日志策略,请运行以下命令:

  1. 导航到“系统”>“审核”>“系统日志”>“策略”选项卡,然后选择您创建的 syslog 审核策略。
  2. 右键单击选定的 syslog 审核策略,然后单击“高级策略全局绑定”。
  3. 从“选择策略”列表中选择您创建的 syslog 审核策略。
  4. 在“优先级”字段中输入优先级。
  5. 从“全局绑定类型”字段中选择 SYSTEM_GLOBAL,然后单击“绑定”。
  6. 在“系统日志审核”页面上,选择 syslog 审核策略,然后单击“完成”。

配置成功后,管理日志将作为 syslog 有效负载发送到外部 syslog 服务器。

配置将管理日志导出到配置为 HTTP 服务器的 Splunk

您可以将 Splunk 配置为 HTTP 服务器。在 HTTP 服务器配置中,您可以使用 HTTP 事件收集器通过 HTTP(或 HTTPS)将管理日志从 NetScaler 直接发送到 Splunk 平台。有关更多信息,请参阅将管理日志导出到配置为 HTTP 服务器的 Splunk

管理日志示例

以下是管理日志示例:

10.222.4.55 10.217.11.103 [04/Oct/2023:18:38:34 +0000] [43533] "GET / HTTP/1.1" 200 20783 "Go-http-client/l.1" "Time: 38848 microsecs"

127.0.0.1 [04/0ct/2023:16:30:00 +0000] [16510] "GET / HTTP/1.1" 200 20783 “curl/7.87.0" "Time: 42015 microsecs"

[Wed Oct 04 16:00:00.093670 2023] [authz_core:error] [pid 7487] [client 127.0.0.1:16161] AH01630: client denied by server configuration: /netscaler/ns_gui/var
<!--NeedCopy-->

下图描述了管理日志:

管理日志格式

以下是示例 bash 日志:

Apr 24 11:21:00 <local7.notice> ns bash[3893]: root on /dev/pts/0 shell_command="PATH=/netscaler:/bin:/sbin:/usr/bin:/usr/sbin:/usr/libexec:/usr/local/bin:/usr/local/sbin:."
Apr 24 11:21:00 <local7.notice> ns bash[3893]: root on /dev/pts/0 shell_command="EDITOR=/usr/bin/vi"
Apr 24 11:21:00 <local7.notice> ns bash[3893]: root on /dev/pts/0 shell_command="[ -f /var/python/bin/python ]"
Apr 24 11:21:00 <local7.notice> ns bash[3893]: root on /dev/pts/0 shell_command="export PATH=$PATH:/var/python/bin"
Apr 24 11:21:00 <local7.notice> ns bash[3893]: root on /dev/pts/0 shell_command="[ -f /var/golang/bin/go ]"
Apr 24 11:21:00 <local7.notice> ns bash[3893]: root on /dev/pts/0 return_code="1"
Apr 24 11:21:00 <local7.notice> ns bash[3893]: root on /dev/pts/0 shell_command=""
Apr 24 11:21:12 <local7.notice> ns bash[3893]: root on /dev/pts/0 shell_command="cat /var/log/bash.log"
<!--NeedCopy-->

以下是示例 httpaccess 日志:

10.102.201.155 -> 10.102.201.155 - - [10/Jun/2024:23:07:11 +0530] [1571] "GET /nitro/v1/config/route6?format=json&sessionid=[FILTERED] HTTP/1.1" 200 1162 "-" "-" "Time: 9797 microsecs"

10.102.201.155 -> 10.102.201.155 - - [10/Jun/2024:23:07:11 +0530] [1571] "GET /nitro/v1/config/nslicense?format=json&sessionid=[FILTERED] HTTP/1.1" 200 1118 "-" "-" "Time: 7774 microsecs"

10.102.201.155 -> 10.102.201.155 - - [10/Jun/2024:23:07:11 +0530] [1571] "GET /nitro/v1/config/appflowparam?format=json&sessionid=[FILTERED] HTTP/1.1" 200 1643 "-" "-" "Time: 8098 microsecs"

10.102.201.155 -> 10.102.201.155 - - [10/Jun/2024:23:07:12 +0530] [1571] "GET /nitro/v1/config/snmpmib?format=json&sessionid=[FILTERED] HTTP/1.1" 200 347 "-" "-" "Time: 8185 microsecs"

10.102.201.155 -> 10.102.201.155 - - [10/Jun/2024:23:11:16 +0530] [1570] "GET /nitro/v1/config/nslicense?format=json&sessionid=[FILTERED] HTTP/1.1" 200 1118 "-" "-" "Time: 23195 microsecs"

10.102.201.155 -> 10.102.201.155 - - [10/Jun/2024:23:11:17 +0530] [1570] "GET /nitro/v1/config/nslicenseserver?format=json&sessionid=[FILTERED] HTTP/1.1" 200 57 "-" "-" "Time: 8992 microsecs"
<!--NeedCopy-->

以下是示例 httperror 日志:

[Mon Jun 10 15:00:01.016898 2024] [mpm_prefork:notice] [pid 47106] AH00171: Graceful restart requested, doing restart

[Mon Jun 10 15:00:01.323746 2024] [mpm_prefork:notice] [pid 47106] AH00163: Apache/2.4.56 (Unix) mod_perl/2.0.10 Perl/v5.30.2 configured -- resuming normal operations

[Mon Jun 10 15:00:01.323756 2024] [core:notice] [pid 47106] AH00094: Command line: '/bin/httpd -f /etc/httpd.conf'

[Mon Jun 10 15:30:00.211099 2024] [authz_core:error] [pid 80696] [client 127.0.0.1:31128] AH01630: client denied by server configuration: /netscaler/ns_gui/var

[Mon Jun 10 15:38:06.205307 2024] [authz_core:error] [pid 80696] [client 127.0.0.2:24903] AH01630: client denied by server configuration: /netscaler/ns_gui/var
<!--NeedCopy-->

以下是示例 auth 日志:

Jun 13 12:03:33 <auth.info> ns login: login on pts/1 as root
Jun 13 12:03:33 <auth.info> ns sshd[17798]: Received disconnect from 10.102.201.155 port 33145:11: Normal Shutdown
Jun 13 12:03:33 <auth.info> ns sshd[17798]: Disconnected from user admuser 10.102.201.155 port 33145
Jun 13 12:03:33 <auth.info> ns sshd[17803]: rexec line 19: Deprecated option UsePrivilegeSeparation
Jun 13 12:03:34 <auth.info> ns sshd[17803]: Accepted keyboard-interactive/NS for admuser from 10.102.201.155 port 65127 ssh2
<!--NeedCopy-->

以下是 nsvpn.log 示例:

Jun  6 09:18:16 <local1.info> ns [1289]: (0-15) extract_ldap_attribute: retrieved mail value mail@citrix.com for Complex1, length is 15
Jun  6 09:18:16 <local1.info> ns [1289]: (0-15) receive_ldap_user_search_event: extracted attribute, name: mail, value: mail@citrix.com
Jun  6 09:18:16 <local1.info> ns [1289]: (0-15) receive_ldap_user_search_event: built group string for Complex1 of:group5 group4 group3 g1
Jun  6 09:18:16 <local1.info> ns [1289]: (0-15) receive_ldap_user_search_event: User search succeeded, attempting user authentication(Bind) for <Complex1>
Jun  6 09:18:16 <local1.info> ns [1289]: (0-15) receive_ldap_user_bind_event: Got user bind event.
Jun  6 09:18:16 <local1.info> ns [1289]: (0-15) receive_ldap_user_bind_event: User authentication (Bind event) for user Complex1 succeeded
Jun  6 09:18:16 <local1.notice> ns [1289]: (0-15) send_accept: sending accept to kernel for : Complex1
Jun  6 09:18:16 <local1.info> ns [1289]: (0-15) aaad_alloc_serialize_keyValue_attrs:  2 custom attribute key_len 4  value_len 15
Jun  8 06:21:48 <local1.info> ns [1289]: (0-62) aaad_remove_user_login_failure_info:  sqlite3_step is SUCCESS
<!--NeedCopy-->

以下是示例 httperror-vpn 日志:

[Thu Jun 06 17:43:38.184137 2024] [core:error] [pid 63478] (63)File name too long: [client 127.0.0.2:42117] AH00036: access to /logon/L                                                                                                                                                       ogonPoint/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa                                                                                                                                                       aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa                                                                                                                                                       aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa                                                                                                                                                       aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa                                                                                                                                                       aaaaaaaaaResources/List failed (filesystem path '/var/netscaler/logon/LogonPoint/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa                                                                                                                                                       aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa                                                                                                                                                       aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa                                                                                                                                                       aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa                                                                                                                                                       aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaResources')
[Thu Jun 06 17:44:23.338278 2024] [core:info] [pid 63475] [client 127.0.0.2:65214] AH00128: File does not exist: /var/netscaler/logon/L                                                                                                                                                       ogoqqqqnPoint/Resources/List
[Thu Jun 06 17:44:41.245211 2024] [core:info] [pid 63476] [client 127.0.0.2:56821] AH00128: File does not exist: /var/netscaler/logon/L                                                                                                                                                       og@
[Tue Jun 11 10:10:55.360797 2024] [core:info] [pid 37517] [client 127.0.0.2:53996] AH00128: File does not exist: /netscaler/ns_gui/vpn/                                                                                                                                                       pluginCustomization.json
[Mon Jun 17 14:11:15.816726 2024] [core:info] [pid 63188] [client 127.0.0.2:27594] AH00128: File does not exist: /netscaler/ns_gui/vpn/                                                                                                                                                       pluginCustomization.json
<!--NeedCopy-->

以下是示例 httpaccess-vpn 日志:

127.0.0.2 - - [20/Jun/2024:08:37:47 +0000] [1508] "GET /logon/LogonPoint/custom/strings.en.js?_=1718869081399 HTTP/1.1" 304 -          "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0" "Time: 529 microsecs"
127.0.0.2 - - [20/Jun/2024:08:37:47 +0000] [1508] "GET /logon/LogonPoint/plugins/ns-gateway/nsg-epa.js HTTP/1.1" 304 - "-" "Mo         zilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0" "Time: 303 microsecs"
127.0.0.2 - - [20/Jun/2024:08:37:47 +0000] [1508] "GET /logon/LogonPoint/plugins/ns-gateway/nsg-setclient.js HTTP/1.1" 304 - "         -" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0" "Time: 311 microsecs"
127.0.0.2 - - [20/Jun/2024:08:37:47 +0000] [1508] "GET /logon/LogonPoint/plugins/ns-gateway/ns-nfactor.js HTTP/1.1" 304 - "-"          "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0" "Time: 315 microsecs"
127.0.0.2 - - [20/Jun/2024:08:37:47 +0000] [1508] "GET /vpn/media/citrixgateway_logo_white.png HTTP/1.1" 304 - "-" "Mozilla/5.         0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0" "Time: 358 microsecs"
<!--NeedCopy-->

导出管理日志

您可以将管理日志从 NetScaler 导出到 Splunk 等行业标准日志聚合器平台。有关更多信息,请参阅将管理日志直接从 NetScaler 导出到 Splunk

解决与管理日志相关的问题

即使在配置了管理日志的导出之后,也可能会出现一些问题,导致管理日志无法导出到可观察性端点。本节提供与以下场景相关的问题故障排除的技巧:

管理日志未导出到 syslog 服务器

当管理日志未导出到 syslog 服务器时,请执行以下操作:

  1. 检查您是否在 syslog 操作上启用了某些管理日志。

    场景

    系统管理员 John 运行了 show syslogaction ns-mgmt-logs-act 命令。在输出中,他找到了 Managementlog: NONEManagementloglevel: NONE,这证实了管理日志未启用。

    显示 syslogaction 命令输出

    为了修复此问题,他通过运行以下命令启用了管理日志和管理日志级别:

    add syslogaction ns-mgmt-logs-act 9.9.9.9 -loglevel none -mgmtlogLevel all -managementlog all
    <!--NeedCopy-->
    

    启用后,他运行 show syslogaction ns-mgmt-logs-act 命令并验证管理日志是否已启用,如以下输出所示。

    显示已启用 syslogaction 命令输出

  2. 检查配置的日志是否是在本地生成的。例如,如果您已将管理日志配置为严重性为 INFO,请检查 /var/log/ns.log 是否包含以 INFO 严重性生成的管理日志(不包含“-PPE-”的行)。以下是几个场景:

    场景 1

    系统管理员 Cassidy 添加了以下仅启用 NSMGMT 警告日志的操作,发现日志未生成。

    add syslogaction ns-mgmt-logs-act 9.9.9.9 -loglevel none -mgmtlogLevel warning -managementlog NSMGMT
    <!--NeedCopy-->
    

    Cassidy 查看了本地日志文件 ns.lognotice.log,发现没有生成警告级别的消息。

    root@ns# cat /var/log/ns.log | grep -v -e '-PPE-'
    Jun 26 05:00:00 ns newsyslog[74791]: logfile turned over due to size>100K
    rootQns# cat /var/log/notice.log | grep warn
    Jun 26 05:08:34 <local7.notice> ns bash[81962]: root on /dev/pts/5 shell_command="cat /var/log/notice.log | grep warning"
    Jun 26 05:08:40 <local7.notice> ns bash[81962]: root on /dev/pts/5 shell_command="cat /var/log/notice.log | grep warn"
    Jun 26 05:09:15 <local7.notice> ns bash[81962]: root on /dev/pts/5 shell_command="cat /var/log/notice.log | grep warn"
    <!--NeedCopy-->
    

    场景 2

    系统管理员 John 添加了以下操作,为所有级别启用了所有管理日志。

    add syslogaction ns-mgmt-logs-act 9.9.9.9 -loglevel none -mgmtlogLevel all -managementlog all
    <!--NeedCopy-->
    

    日志是在 bash.log 中本地生成的,因此,它们的可观察性端点也出现了同样的情况。

    root@ns# tail -f /var/log/bash.log
    Jun 26 05:16:54 <local7.notice> ns bash[4278]: root on (null) return_code="l"
    Jun 26 05:16:54 <local7.notice> ns bash[5909]: root on (null) shell_command="true"
    Jun 26 05:16:54 <local7.notice> ns bash[5909]: root on (null) shell_command="curl 10.102.154.54; sleep 0.5"
    Jun 26 05:16:54 <local7.notice> ns bash[5909]: root on (null)shell_command="curl 10.102.154.54"
    <!--NeedCopy-->
    
  3. 检查并确认以下内容:

    • 如果您使用正确的传输协议
    • 如果您使用正确的 IP 地址或域名
    • 如果您使用正确的负载平衡配置
    • 如果域名已解析
    • 如果服务或虚拟服务器已启动
  4. 检查并确认该策略是使用“真实”规则创建的,并绑定到系统全局。如果绑定不存在,则不会导出日志。

    场景

    系统管理员 Cassidy 运行了 show syslogglobal 命令,发现该策略未绑定到系统全局。

    > show syslogglobal
    Done
    <!--NeedCopy-->
    

    Cassidy 运行以下命令将策略绑定到系统全局:

    bind syslogGlobal -policyName ns-mgmt-logs-pol -priority 1 Done
    <!--NeedCopy-->
    

    绑定后,show syslogglobal 命令显示绑定细节。

    > sh syslogglobal
    1)      Policy Name: ns-mgmt-logs-pol
            Priority: 1
            GlobalType: SYSTEM_GLOBAL
    Done
    <!--NeedCopy-->
    
  5. 运行 nstrace 以检查 UDP 或 TCP 流量是否存在异常。检查端点是否配置为使用 TLS 或 SSL,但是 NetScaler 实际上是在发送未加密的数据,反之亦然。

在 Splunk (HEC) 上看不到管理日志

当管理日志未导出到 Splunk (HEC) 时,请执行以下操作:

  1. 检查您是否在时间序列配置文件上启用了管理日志。要进行检查,请运行 show analyticsprofile <profilename> 命令并查看输出。

    场景

    系统管理员卡西迪意识到她实际上需要的是JSON格式,而不是系统日志格式。因此,她删除了所有管理系统日志配置并添加了分析配置。但是,她发现日志并未从 NetScaler 中流出。当她运行 show analyticsprofile <name> 命令时,她在输出中看到了 Managementlog: NONE 并意识到自己忘记在分析配置文件上启用管理日志。

    为了修复该问题,她使用 set analytics profile <name> -managementlog ACCESS 启用了管理日志。修复后,她看到日志是从 NetScaler 发送出来的,show analyticsprofile <name> 命令也显示了 Managementlog: ACCESS

    显示分析 Profile Management 日志设置为无

  2. 检查配置的日志是否实际是在本地生成的。例如,如果您配置了 NSMGMT 管理日志,则可以检查 /var/log/ns.log 是否已生成管理日志(不包含“-PPE-”的行)。

  3. 检查并确认以下内容:

    • 如果您使用的是正确的配置文件。您必须使用时间序列配置文件
    • 如果服务已解决并且已启动
    • 元数据 (-analyticsEndpointMetadata) 是否配置正确且为有效的 JSON,以及其中包含的所有字段是否存在于导出到 Splunk 的日志中
    • 如果 Splunk 身份验证令牌正确。由于未显示身份验证令牌,因此您必须确保以 -analyticsAuthToken ‘Splunk <token>’ 格式正确输入该令牌
  4. 运行 nstrace 以检查 TCP 或 HTTP 流量是否有任何异常。检查端点是否配置为使用 TLS 或 SSL,但是 NetScaler 发送的是未加密的数据,或者反之亦然。您可以进一步检查导出的 JSON 是否格式不正确。

在任何可观察性端点上看不到管理日志时的常见故障排除技巧

如果管理日志中提供的提示无法导出到 syslog 服务器,而且 Splunk (HEC) 部分中未显示的管理日志无法解决您的问题,请执行以下操作:

  1. 查看以下与导出管理日志的过程相关的日志文件。这些日志文件可能会让您对这个问题有所了解:

    • /var/log/export_mgmtlog_status.log
    • /var/log/export_mgmtlog_cron.log

    场景:系统管理员 Cassidy 在 export_mgmtlog_status.log 中发现管道损坏错误,发现他们的收集器发送重置文件是由于防火墙问题,这在最后得到了纠正。

    Fri May 10 04:02:15 2024   do_logexport.py   ERROR   Traceback (most recent call last):
       File "/netscaler/do_logexport.py", line 505, in netio_send
       pe_socket.sendall(data)
      BrokenPipeError: [Errno 32] Broken pipe
    <!--NeedCopy-->
    
  2. 检查配置文件 /nsconfig/mgmtlogcfg.json 是否正确生成,还要检查它是否提示包含 Syslog 或 JSON 相关的配置。

    例如,当同时配置 Syslog 和 JSON 时,/nsconfig/mgmtlogcfg.json 文件如下所示。“syslog” 字段确认系统日志已配置,而 “json” 字段确认已配置 json。

    root@ns# cat /nsconfig/mgmtlogcfg.json
    {"syslog":{"typemask":7,"levelmask":127,"ip":"127.0.0.2","port" :5566},"json":[{"name":"ns-mgmt-log-json-profile","typemask":2,"ip":"127.0.0.2","port":5563,"metadata":"{"index":"ns-mgmt-log-syslog-index"}"}]}
    <!--NeedCopy-->
    
  3. 确保您查看的是正确的索引和正确的时间戳。

    场景

    系统管理员 Cassidy 意识到自己在 Splunk 上配置了名为 ns-mgmt-log-syslog-index(而非 ns-mgmt-log-json-index)的系统日志索引,但后来得到了纠正。

    显示分析配置文件正确的索引

  4. 在群集部署中,如果日志未从非 CCO 节点流出,请尝试运行 force cluster sync 命令。

  5. 网络配置文件:也可以使用网络配置文件。对于系统日志,请确保已在系统日志操作上设置了“-netprofile”。如果您正在对系统日志进行负载平衡或以 JSON 格式导出它们,请确保您已在该服务上设置了网络配置文件。

  6. 分区:非默认分区不支持管理日志功能。

  7. 时间戳:定期导出由流程生成的管理日志。因此,您收到管理日志的时间可能与生成该日志的时间不同。此外,日期格式可能不符合在 syslog 操作上配置的日期格式,因为管理系统日志遵循 RFC-5424 格式。

日志