Ciscoのlogging設定

Cisco機器を使用していてログの設定は何が正解なのか良く悩む。
ここでいうログとはSyslogサーバの設定ではなく、
show loggingにて表示されるログのことである。

Syslogサーバの設定に関してはまた別の機会に書くとして、
機器内のメモリに保存されるログに関して簡単にまとめてみた。


バッファサイズ


色々とログバッファの設定を見てきたが、人それぞれといった感じ。
まったく初期の状態で運用しているシステムもあれば、
良く解らない数値を設定しているシステムもあり正解が解らない。

デフォルト値は「4096」バイトである。
4096バイトというと、ターミナルの1画面分くらいである。
少な・・・。

Cisco的には「512000」が推奨値とのことだが、これはこれで大きすぎな気がする。

個人的にはいつもデフォルト値の10倍程度にしている。

 logging buffered 40960


このくらいあればまぁ足りそうな気がする。
Ciscoの推奨値を参考にするのであれば、10分の1にして「51200」くらいが妥当か?


バッファサイズの最適化


最適化というと大げさではあるが、簡単にバッファサイズの目安についてメモする。

ログバッファはメモリのProcessor Poolから割当てられるので、
ここのFreeの値が小さいのであればあまりバッファサイズを大きくしない方が良い。

確認方法としては下記のようなコマンドがある。

 RT01#show processes memory | inc Used 
Processor Pool Total: 803908352 Used: 256525488 Free: 547382864
lsmpi_io Pool Total: 6295128 Used: 6294296 Free: 832


「show proccesses memory」は結構な行数が出力されるので、
includeでフィルタをかけたほうが見やすい。

他には下記がある。

 RT01#show memory statistics 
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 7F7A6E2FF010 803908352 256524440 547383912 547328248 547176236
lsmpi_io 7F7A6DBFD1A8 6295128 6294304 824 824 412


どちらでも良いと思うが、間違っても「show memory」は叩かぬこと。
機器によっては出力が止まらなくなってしまう事もあるので要注意だ。

ちなみにログバッファの設定をすると、ここのUsedが設定した値分増加する。
すなわちFreeが消費される形になるので、ここの兼ね合いが大事になってくる。

下記公式コミュニティにて詳細が記載されているので、とても参考になる。
※参考:logging buffer のサイズを調整する際の注意点


ログレベル


機器のメモリに保存しておくログレベルも見てきた感じだとバラバラである。
「debugging」にしている人もいれば「warnings」の人もいる。

個人的には、informationalログが鬱陶しくないのであればdebuggingも有りかと。
warningsはあまり勧めないかな。

理由はinterfaceのレイヤ2のup/downがnotificationsだから。
warningsにしてしまうとレイヤ1のup/downしか出なくなってしまうので、
notificationsくらいが妥当な気がする。

なので、個人的に設定は下記のような感じになることが多い。

 logging buffered 40960 notifications


あくまで個人的な意見なので、世の中の標準からはずれているかもしれないが・・・。

ちなみにCiscoのログレベルは下記のようになっている。

■Ciscoのログレベル
levelキーワードレベル説明Syslog定義
emergencies0システムが使用不能LOG_EMERG
alerts1ただちに対応が必要LOG_ALERT
critical2クリティカルLOG_CRIT
errors3エラーLOG_ERR
warnings4警告LOG_WARNING
notifications5正常だが、要注意LOG_NOTICE
informational6通知メッセージのみLOG_INFO
debugging7デバッグ メッセージLOG_DEBUG

※参照:メッセージ ロギングのlevelキーワード


ログ出力を解りやすくする為に


ログは慣れないと見づらいものである。
少しでも見やすくする為に、出力内容から切り分けをしやすくする為に、
下記のような設定を入れることが推奨とされている。

 service timestamps debug datetime localtime msec show-timezone
service timestamps log datetime localtime msec show-timezone
service sequence-numbers

clock timezone JST 9 0
ntp server X.X.X.X


「service timestamps」コマンドはログにタイムスタンプを付与する設定であるが、
オプションはそれぞれ下記のような意味になる。

  • datetime : 日時追加
  • localtime : 機器に設定したtimezoneの時刻を使用
  • msec : ミリ秒まで表示
  • show-timezone : 設定したtimezoneを表示


たまに「datetime」ではなく「uptime」になっているシステムがある。
完全に設定ミスとしか思えないが・・・
ここを「uptime」にすることにより、日時ではなく、
機器がUPしてからどのくらいの時間で発生したかが確認できるのだが、
どう考えても「datetime」にしておいた方が色々と捗りそうだ。

その他「service sequence-numbers」は、下記のようにログにシーケンス番号を付与する。

 000046: *Jul 20 22:47:11.559 JST: %SYS-5-CONFIG_I: Configured from console by vty0 (192.168.1.1)
000047: *Jul 20 22:48:02.329 JST: %SYS-5-CONFIG_I: Configured from console by vty0 (192.168.1.1)
000048: *Jul 20 22:48:09.078 JST: %LINK-3-UPDOWN: Interface GigabitEthernet2, changed state to up
000049: *Jul 20 22:48:10.081 JST: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet2, changed state to up
000050: *Jul 20 22:48:49.316 JST: %LINK-5-CHANGED: Interface GigabitEthernet2, changed state to administratively down
000051: *Jul 20 22:48:50.329 JST: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet2, changed state to down
000052: *Jul 20 22:48:51.709 JST: %SYS-5-CONFIG_I: Configured from console by vty0 (192.168.1.1)


まぁシーケンス番号まで付けてしまうと逆に見づらくなるという話もある。
ここは好みで良いと思う。

最後のtimezoneとntpの設定はログ出力時刻を正確に把握するために必要になる。
ログにタイムスタンプを付与しても機器の時刻がずれていたらあまり意味は無いからね。
ログを見ている時にこそNTPの大切さを理解できると言っても過言ではない。


以上。



rsyslog 実践ログ管理入門


この記事へのコメント