自動で動くはずの記録が、黙って止まっていた
社内で使っている自動記録の仕組みが止まっていた。日々の作業内容をカレンダーに書き出すもので、放っておいても動く前提で運用していた。
止まっていることに気づいたのは、監視の通知ではない。「動いてない気がします」という人の一言だった。
点検して分かったのは、外部サービスにつなぐための合言葉を新しいものに入れ替えたあと、動いている側がそれを読み直していなかったこと。設定ファイルを書き換えただけでは戻らなかった。外部サービスとのやりとりを担っている小さなソフト(ここではプログラムと呼びます)を一度止め、立ち上げ直す。そこではじめて新しい合言葉が使われた。
作業ログは午前と午後の2回に分かれている。1回で終わらなかった。
きっかけ
外部サービスの合言葉を、定期的な入れ替えの一環で新しくした。新しい合言葉を発行して設定ファイルに書き、それで終わったつもりでいた。
そのあとしばらくして、カレンダーに作業の記録が入らなくなった。ただし画面にエラーは出ない。何も起きないだけ。自動で動く仕組みは、成功したときだけ記録が残る作りになっていることが多く、止まっても静かなままになる。
外部サービスの合言葉を入れ替える機会は、中小企業でも普通に起きる。担当者が辞めたとき、うっかり外に出してしまったとき、契約や料金プランを変えたとき。そのたびに同じ落とし穴がある。
最初に:どこで操作しているのかを整理する
作業する場所は3つある。混ざると迷うので先に分けておく。
- 自分のパソコンの中の設定ファイル — 合言葉などの設定を書いておく場所
- 自分のパソコンで動いているプログラム — 外部サービスとやりとりする役目。止めたり立ち上げ直したりする
- 外部サービスの管理画面 — ブラウザで開くウェブの画面。合言葉の発行と無効化、利用状況の確認をする
今回つまずいたのは1と2のあいだ。1を直しても2に伝わっていなかった。
用語は3つだけ
- 合言葉(APIキーと呼びます) — 会社のシステムが外部のサービスを使うときに見せる、身分証のような文字列。人が使うパスワードとは別に、機械が使う分として発行する。
- 設定をまとめて書いておくファイル(環境変数ファイルと呼びます) — 合言葉や接続先を1か所に書いておくファイル。プログラム本体に直接書かないのは、間違って外に出さないため。
- つながるかどうかだけを確かめる簡単なテスト(疎通確認と呼びます) — 機能が正しいかまでは見ず、「呼びかけて返事が返るか」だけを見る。ウェブの世界では返事に番号が付いていて、200という番号なら成功、401なら「あなたが誰か分からない」という意味になる。
説明する言葉はこの3つで足りる。
手順0 【カレンダーの画面】本当に止まっているのかを確かめる
まず、思い込みを外す。カレンダーを開いて、記録が最後に入った日時を見る。
止まった日が特定できると、そこから逆算して「その日に何を変えたか」を思い出せる。今回は合言葉を入れ替えた日と重なっていた。ここで見当がついた。
止まった日がはっきりしないときは、そもそも記録が入る仕組みを取り違えている可能性がある。人が手で入れていた運用が、途中から自動になっていることもある。
手順1 【パソコンの中の設定ファイル】新しい合言葉が書かれているかを見る
設定ファイルを開いて、新しい合言葉に書き換わっているかを確認する。
ここで注意がひとつ。合言葉の置き場所は1か所とは限らない。 起動時に読む設定と、定期実行が読む設定を別々に持っている構成は珍しくない。片方だけ直しても、もう片方を読む処理があると古い合言葉が使われ続ける。
置き場所が複数あるかどうかは、社内の誰かが把握しているはず。分からなければ、合言葉の文字列の先頭数文字だけを手がかりに、設定を置いていそうな場所をすべて見る。画面に合言葉の全部を映さない。 打ち合わせで画面共有していると、そのまま流れてしまう。
手順2 【パソコンのターミナル】動いているプログラムを立ち上げ直す
ターミナル(文字を打ってパソコンに指示を出す黒い画面)から、外部サービスとやりとりしているプログラムを一度止めて、立ち上げ直す。
ここが今回の要だった。プログラムは起動したときに設定ファイルを読み込み、そのあとは読み直さない作りのものが多い。だからファイルを書き換えても、動き続けているプログラムは古い合言葉を握ったままになる。
「設定は直したのに直らない」の大半は、この立ち上げ直しの漏れだと思っていい。
手順3 【パソコンのターミナル】つながるかどうかだけを確かめる
立ち上げ直したら、機能を試す前に、つながるかどうかだけを確かめる。
パソコンに一行で指示を出す文(コマンドと呼びます)を打つ。呼びかけて返事の番号だけを表示するものが、次の一行。https:// から始まる部分は接続先の住所(URLと呼びます)なので、自社のものに置き換える。
curl -o /dev/null -s -w '%{http_code}\n' https://example.com/健康チェック用の呼び出し口
200 と表示されれば、合言葉は通っている。401 と表示されたら、まだ古い合言葉のままか、書き換えを間違えている。今回は200が返り、新しい合言葉が読み込まれていることを確認できた。
この確認を挟むと、切り分けが早い。200が出ているのに記録が入らないなら、原因は合言葉ではなく、その先の処理にある。
手順4 【外部サービスの管理画面】古い合言葉を無効にして、使われた形跡を見る
ここまでで動きは戻る。ただし、古い合言葉はまだ生きている。入れ替えたつもりでも、無効にするまでは誰でも使える。
外部サービスの管理画面を開き、古い合言葉を使えない状態にした。そのうえで、利用状況と残高を見た。残高は0.55756ドルのままで動いておらず、入れ替えの前後で身に覚えのない使われ方はしていなかった。
順番が大事で、復旧より先に無効化をしたくなるが、無効化を先にすると自分の仕組みも同時に止まる。 新しい合言葉で動くところまで確かめてから、古い方を切る。ただし、合言葉が外に出た疑いがあるときや、高額な請求が発生しうるサービスなら、迷わず無効化を先にする。
つまずき早見表
| 起きたこと | ありそうな原因 | 見るところ |
|---|---|---|
| 設定ファイルを直したのに変わらない | 動いている側が古い設定を抱えたまま | 一度止めて立ち上げ直す |
| 立ち上げ直しても変わらない | 合言葉の置き場所がもう1か所ある | 別の設定ファイル |
| 返事の番号が401 | 合言葉が古いか、書き間違い | 設定ファイルの中身 |
| 止まっていたのに誰も気づかない | 成功したときしか記録が残らない | 失敗したときに手元へ知らせが届くか |
直ったかどうかの確かめ方
- つながるかどうかのテストで200が返る
- 外部サービスの管理画面で、古い合言葉が無効になっている
- 残高や利用明細に、身に覚えのない消費がない
- 翌日、カレンダーに記録が入っている
最後の1つを飛ばさない。自動で動く仕組みは、その場で1回動いても、翌日の決まった時刻に動くとは限らない。翌日まで見て、はじめて直ったと言える。
正直に書いておくこと
古い合言葉を無効にするまでの間は、誰でも使える状態でした。 残高が動いていなかったから問題にならなかっただけで、入れ替えと無効化はセットにして、間を空けない方がいい。
気づく仕組みは、この作業では直していません。 止まったことに気づいたのは人の勘で、その状態は変わっていない。本当に手を入れるべきはそこだと分かっているが、この日はまず動く状態に戻すところで終えた。
設定の置き場所がいくつあるかは、環境次第です。 同じ構成とは限らない。ただ「1か所直したのに効かない」ときの疑い先としては、どの会社でも役に立つ。
要点3行
- 設定ファイルを直しただけでは戻らない。動いている側を立ち上げ直すまで、古い合言葉が使われ続ける。
- 合言葉を入れ替えたら、古い方を無効にして、残高や利用明細に身に覚えのない消費がないかまで見る。
- 一番の問題は止まったことではなく、止まったことに気づけなかったこと。気づくのを人の勘に頼っている仕組みは、いずれ同じことが起きる。
業務改善の無料ヒアリング(1時間・1回)を受け付けています。詳しくは公式LINEから。