0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Nutanix Syslogをサーバに出力してみる

Last updated at Posted at 2019-12-19

はじめに

本記事は[[4枚目]Nutanix Advent Calendar 2019][Nutanix Advent Calendar 2019]の記事です
[Nutanix Advent Calendar 2019]:https://adventar.org/calendars/4475
本内容は2019/12/18時点での内容となります。また、本記事による万が一の不測の損害・不利益等は負いかねます。

環境

  • 今回のお話は以下の環境です
    • 当初AOSは5.10.0.1だったが後述のトラブルも踏まえVerUPした
ソフトウェア バージョン
AOS 5.10.6
HV AHV
HV Version 20170830

きっかけ

  • 社内規則上、一定期間内・一定プライオリティ以上のログを保管する必要があったが
    Nutanixのログローテート契機は保持期間ではなく容量(9GB)で決められる(容量を超えると自動でローテート)
    ことがわかったため、自前でsyslogサーバを構築し、そこに蓄積させることにした
    • 今回は自前syslogサーバの設定は割愛し、HCI側の設定のみ抜粋

事前知識

  • Nutanixのログファイルは「genesis status」コマンドで得られるプロセス単位で出てくる
nutanix@NTNX-SERIALNUMBER-A-CVM:CVM_IPADDRESS:~$ genesis status
YYYY-MM-DD hh:mm:ss: Services running on this node:
  abac: []
  acropolis: [11951, 12056, 12057, 12058]
  alert_manager: [11851, 11914, 11915, 11996]
  aplos: [13142, 13181, 13182, 13189, 13387, 13565]
  aplos_engine: [12939, 13003, 13004, 13005]
  arithmos: [11874, 11948, 11949, 12115]
  athena: [11513, 11607, 11608, 11609]
  cassandra: [10591, 10626, 10627, 10632, 10732]
  catalog: [11901, 11983, 11984, 11985]
  (省略)
  • 場所は /home/nutanix/data/logs配下
    • .outがメインのログ、.XXXは各プライオリティのログ
nutanix@NTNX-SERIALNUMBER-A-CVM:CVM_IPADDRESS:~$ ls /home/nutanix/data/logs/
acropolis.FATAL
acropolis.out
acropolis.out.YYYYMMMDD-hhmmss
acropolis-scheduler.out
acropolis-scheduler.out.YYYYMMMDD-hhmmss
alert_manager.ERROR
alert_manager.INFO
(省略)

設定内容

  • Nutanixクラスタのどれか一つのCVMにログインしてncliを開始
$ ssh CVM_IPADDRESS -l nutanix 
Nutanix Controller VM 
nutanix@CVM_IPADDRESS's password:
nutanix@NTNX-SERIALNUMBER-A-CVM:CVM_IPADDRESS:~$ ncli 
Welcome, admin 
You're now connected to CULSTER_ID (CLUSTER_NAME) at 127.0.0.1 
<ncli> 
  • 設定変更前に一度syslogを無効する
<ncli>   rsyslog-config set-status enable=false 

     RSyslog Status            : Disabled 
     RSyslog Servers           : [None] 
  • 転送先のsyslogサーバを登録
    • 転送プロトコルはTCPも選べるがUDPにした(この理由も後述)
<ncli> rsyslog-config add-server name=SYSLOG_SERVER_HOSTNAME relp-enabled=false ip-address=SYSLOG_SERVER_IPADDRESS  port=514 network-protocol=udp |

     Name                      : SYSLOG_SERVER_HOSTNAME 
     IP Address                : SYSLOG_SERVER_IPADDRESS
     Port                      : 514
     Protocol                  : UDP 
     Relp Enabled              : false 
  • 登録を確認
<ncli>  rsyslog-config ls-servers 
     Name                      : SYSLOG_SERVER_HOSTNAME 
     IP Address                : SYSLOG_SERVER_IPADDRESS
     Port                      : 514 
     Protocol                  : UDP 
     Relp Enabled              : false 
  • モジュール(対象のプロセスとそのレベル) をプロセスごとに設定
<ncli> rsyslog-config add-module server-name=SYSLOG_SERVER_HOSTNAME module-name=ACROPOLIS level=ERROR include-monitor-logs= false  
<ncli> rsyslog-config add-module server-name=SYSLOG_SERVER_HOSTNAME module-name=AUDIT level=ERROR include-monitor-logs= false  
<ncli> rsyslog-config add-module server-name=SYSLOG_SERVER_HOSTNAME module-name=CASSANDRA level=ERROR include-monitor-logs= false  
<ncli> rsyslog-config add-module server-name=SYSLOG_SERVER_HOSTNAME module-name=CEREBRO level=ERROR include-monitor-logs= false  
<ncli> rsyslog-config add-module server-name=SYSLOG_SERVER_HOSTNAME module-name=CURATOR level=ERROR include-monitor-logs= false  
<ncli> rsyslog-config add-module server-name=SYSLOG_SERVER_HOSTNAME module-name=GENESIS level=ERROR include-monitor-logs= false  
<ncli> rsyslog-config add-module server-name=SYSLOG_SERVER_HOSTNAME module-name=PRISM level=ERROR include-monitor-logs= false  
<ncli> rsyslog-config add-module server-name=SYSLOG_SERVER_HOSTNAME module-name=STARGATE level=ERROR include-monitor-logs= false  
<ncli> rsyslog-config add-module server-name=SYSLOG_SERVER_HOSTNAME module-name=SYSLOG_MODULE level=ERROR include-monitor-logs= false  
<ncli> rsyslog-config add-module server-name=SYSLOG_SERVER_HOSTNAME module-name=ZOOKEEPER level=ERROR include-monitor-logs= false  
  • モジュール追加はls-modulesオプションで確認可能
<ncli> rsyslog-config ls-modules server-name=SYSLOG_SERVER_HOSTNAME 
     Module Name               : ACROPOLIS 
     Log Level                 : ERROR 
     Include Monitor Logs      : false
     Module Name               : AUDIT 
     Log Level                 : ERROR 
     Include Monitor Logs      : false

     Module Name               : CASSANDRA
     Log Level                 : ERROR 
     Include Monitor Logs      : false 

     Module Name               : CEREBRO 
     Log Level                 : ERROR 
     Include Monitor Logs      : false 

     Module Name               : CURATOR 
     Log Level                 : ERROR
     Include Monitor Logs      : false 

     Module Name               : GENESIS
     Log Level                 : ERROR
     Include Monitor Logs      : false

     Module Name               : PRISM
     Log Level                 : ERROR 
     Include Monitor Logs      : false

     Module Name               : STARGATE
     Log Level                 : ERROR
     Include Monitor Logs      : false

     Module Name               : SYSLOG_MODULE
     Log Level                 : ERROR 
     Include Monitor Logs      : false
     
     Module Name               : ZOOKEEPER
     Log Level                 : ERROR
     Include Monitor Logs      : false 
  • syslogを有効にする
<ncli>  rsyslog-config set-status enable=true 

     RSyslog Status            : Enabled 
     RSyslog Servers           : 1 
     Name                      : SYSLOG_SERVER_HOSTNAME 
     IP Address                : SYSLOG_SERVER_IPADDRESS 
     Port                      : 514 
     Protocol                  : UDP 
     Relp Enabled              : false 

ポイントなど

  • Prismからは設定不可能、nCLIから設定する
  • ファシリティはlocal0で固定(変更不可)
  • プライオリティはデフォルトだとERROR
    • 今回の設定は明示的にERRORに設定した例
  • AOS5.10.0.1の環境で試行錯誤していたところ、何故かクラスタ上のVMが不用意に落ちるトラブル発生
  • 当該AOSのバグで、「syslog転送(TCP)に失敗するとHCI内部のキューがスタック(?)」したようだ
  • 対応策は「syslogをUDPで転送」 or 「AOSを上げる」 → 他の影響もないので両方とも実施した

わからなかったこと・今後理解したいこと

  • 「Include Monitor Logs」のオプションの意味・必要性?
  • Trueにすると、指定したログレベルに関わらずログファイルの出力される?なんのため?(INFOではだめなのか?)
  • ローカル(/home/nutanix/data/logs/)に生成されるログファイルの出力規則はどう決まるのか?
  • プロセスXXXは「XXX.out」と「XXX.WARNING」は出力されているがプロセスYYYは「YYY.out」と「YYY.ERROR」と「YYY.INFO」が出力されているようだ

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?