画面に、桁数の大きな数字が並んでいる。
show interfaces counters errors を眺めていて、CRC や input errors の列に目が止まる。数字が小さければ通り過ぎられる。けれど、桁が伸びていると、そこで一度手が止まる。
別の出力では、もっと生々しく見える。
261028 input errors, 259429 CRC, 1599 frame, 0 overrun, 0 ignored
259429 CRC。この行だけを見ると、いま何か大きなことが起きているように見える。だが、counter の数字は、それだけでは現在進行中の事象を語らない。
その数字の上に、もう 1 行ある。
Last clearing of "show interface" counters never
この never を読まずに 259429 CRC だけを読むと、過去の長い時間と、いまこの瞬間が同じ顔で画面に並んでしまう。
大きな counter 値は、Last clearing of と差分を添えて初めて現在進行中かを語れる。


1. その数字は、いつから積み上がったのか
interface の counter は、いま発生している error の「その瞬間だけ」を表示しているわけではない。interface が動き始めてから、または最後に counter が消された時点から、観測された error や packet 数を足し続ける。
だから show interfaces の error 行を読むときは、値そのものより先に、どこから足し始めた値なのかを見る。
Last clearing of "show interface" counters never
never は、最後に counter を消した時点がない、という意味だ。device が起動してから、その counter は一度も 0 に戻されていない。つまり、その下にある 261028 input errors や 259429 CRC は、device 起動から今までの累積値として画面に出ている。
この時点で、読み方が変わる。259429 CRC は大きく見える。だが、それが短い時間で増えたのか、長く動き続けた device の履歴なのかは、まだ決まっていない。
show version で uptime を見ると、baseline の長さが見える。
Switch uptime is 3 weeks, 1 day, 4 hours, 22 minutes
Last clearing of が never で、uptime がこの長さなら、counter はその期間ずっと足され続けた値だ。画面の数字は「いまの interface が悪い」と直接言っているのではなく、「この期間の合計がこれだけある」と言っている。
show interfaces counters errors のテーブル形式でも、読み方は同じだ。列が CRC ではなく FCS-Err や Rcv-Err といった名前で並んでも、各値は同じく baseline からの累積値として扱う。列名の細かい切り分けに進む前に、まず期間を読む。
counter が累積で持たれるのは、運用者が常に画面を見ているわけではないからだ。発生した瞬間だけを表示する作りなら、誰も読んでいない時間帯の error は消えてしまう。足し続けておけば、あとから時刻を選び、区間の差分として取り出せる。
ポイント: counter 値は、
Last clearing ofと uptime を合わせて読むまで、どの期間の累積かが決まらない。
2. ベースラインが違えば、同じ数字の意味も違う
同じ 259429 CRC でも、baseline が違えば意味は変わる。
Last clearing of "show interface" counters never と出ているなら、その値は device 起動からの累積だ。長く稼働している device であれば、過去に少しずつ積み上がった履歴が、今日の画面にそのまま残っている。
一方で、counter を消した直後に同じ値が出ているなら話が違う。短い区間でそこまで増えた値なら、現在進行中の事象として扱う必要が出てくる。
clear counters は、interface の問題を直すコマンドではない。counter の baseline を作り直す操作だ。打つと、古い累積値をいったん 0 に戻し、そこから再び数え始める。
実行前の出力では、baseline が少し前にある。
Last clearing of "show interface" counters 2d17h
実行後に読み直すと、baseline は直近に切り替わる。
Last clearing of "show interface" counters 00:01:27
ここで counter が 0 に見えても、それは「この先も error が出ない」という意味ではない。単に、リセット後の累積がまだ 0 だという意味だ。
0 は安心の印ではない。259429 も即断の印ではない。どちらも、baseline からどれだけ時間が経った値なのかを添えて読む必要がある。
大きな値に驚く誤読と、0 を見て安心する誤読は、同じ根から出ている。どちらも、1 回の show 出力だけで現在進行中かどうかを決めようとしている。
ポイント: 同じ counter 値でも、baseline が起動時なのか、直近の
clear countersなのかで運用上の意味は変わる。
3. 二度読んで、差分が増えているかを見る
気になる counter を見つけたら、1 回目の値を起点にする。
時刻 A で 259429 CRC を見る。この時点では、まだ過去の履歴か現在進行中かは分からない。そこで少し待ち、同じ出力をもう一度読む。
時刻 B で値が増えていれば、その区間で新しく発生している。時刻 A と時刻 B の差分が、いま読むべき値になる。
259429 という数字そのものより、そこから増えたかどうかを見る。1 分後に 263011 になっていれば、その間に 3582 増えている。ここではじめて、counter は現在進行中の事象を語り始める。


差分が 0 なら、その観測区間では増えていない。過去に積み上がった履歴が残っているだけかもしれない。差分が増えているなら、その区間で発生している。
切り分けを始めるときは、clear counters で baseline を作り直す手もある。古い履歴をいったん外し、そこから再び読む。直後に 0 を見て終わりではなく、少し置いてもう一度読むところまでが一つの読み筋になる。
この操作で見たいのは、原因の名前ではない。CRC なら cable なのか、NIC なのか、といった話へ急ぐ前に、その counter が今も増えているのかを切り分ける。
show interfaces counters errors のテーブルを読んでいるときも同じだ。気になる列の値を時刻 A で見る。時刻 B で同じ列をもう一度見る。差分が出るかを読む。列名の意味を調べる前に、まず増え方を見る。
ポイント: counter は 1 回の表示値で決めず、同じ値を二度読みして時刻 A と時刻 B の差分を見る。
4. 差分で、現在進行中かを切り分ける
ここまで来ると、冒頭の 259429 CRC は別の数字に見える。
最初は、桁数だけが目に入っていた。大きいから悪い。小さいから安心。そう読みたくなる。だが、counter はその読み方に向いていない。
見る順番は、こうなる。
まず Last clearing of を探す。never なら、counter は device 起動からの累積として読む。必要なら show version の uptime を見て、どれだけの期間を背負った値なのかを添える。
次に、気になる値を時刻 A として控える。少し置いて、同じ出力を時刻 B として読む。増えていなければ、その区間では静かだ。増えていれば、その区間では発生している。
古い履歴が邪魔なら、clear counters で baseline を作り直す。ただし、直後の 0 で安心しない。そこからの差分を読むために baseline を作っただけだ。
この読み方を持つと、counter の数字に振り回されにくくなる。大きな値を見ても、まず期間を探せる。0 を見ても、まだ観測区間が短いだけではないかと読める。エスカレーションする前に、現在進行中かどうかを一段切り分けられる。
本話で扱ったのは interface counter だけだ。だが、show 出力に潰されず、どの行がいまの判断に効くのかを探す姿勢は、ここから先の観測でも使う。本体の体調を別の出力で読む段がある。
ポイント: counter の判断は、絶対値の大きさではなく、baseline と二度読みの差分で現在進行中かを切り分ける。
もう一度、冒頭の行に戻る。
261028 input errors, 259429 CRC, 1599 frame, 0 overrun, 0 ignored
この行を見たとき、最初に反応するのは桁数でいい。そこに引っかかるから、読み始められる。だが、判断は桁数では閉じない。
上の Last clearing of を読む。never なら uptime を添える。必要なら同じ出力を二度読みし、差分を見る。古い履歴を外したいなら clear counters で baseline を作り直し、その後の増え方を見る。
259429 CRC は、それだけでは現在進行中とは言わない。いつから積み上がった値なのか、そして時刻 A から時刻 B にかけて増えたのか。そこまで読めたとき、その counter は運用判断に使える数字になる。