SSHでZabbixの途中経路を暗号化(zabbix2.2系)
にて、設定を行ったSSH VPNトンネルの監視ですけど、運用中に発生した出来事から一部見直したり、改めて頭の中を整理したのでまとめます。
基本構成図
このように、
・グローバルIPを設定したインタフェース
・ローカルIPを設定したインタフェース
・ZabbixAgentからZabbixServerへ接続するインタフェース
3つがあるのでややこしい状態です。とはいえ、グローバルからとローカルからの監視は良くある監視ポリシーなので、
サーバ1つに紐づけられるのは良いことかもしれません。
SSH VPNが切れたことを感知して再接続するトリガーの図
また、上記のように再接続アクションをキックするためのトリガーは2つ設けました。
最初はSSHが復帰した時だけでよいかと思ったのですが、今までもそうだったように、AgentがUnreachableになった時も
再接続をしなければなりません。これは、SSHのトンネルが接続したまま通信できなくなるという事象があったためです。
今のところは1年以上、再起動でSSHのVPNが復帰するのでこれで良いかと思っています。
今後の課題
課題1:ホストのSSH公開鍵の追加作業
スクリプトは必ず相手サーバのhostの公開鍵を取得して記述しなければならないのですが、これが意外に面倒な作業でして、
Zabbixでの操作だけでは終わりません。
Detect operating system sudo /usr/bin/nmap -O {HOST.CONN} 2>&1
Zabbixには上記のようなスクリプトをマップなどからそのホストに向けて実行する機能が備わっています。
こういうのを利用して相手サーバの公開鍵の取得ができないかな?と思ったりします。そうでなければ、SSHの接続ポリシーで
公開鍵の確認を行わないというオプションをつけて構成しなければならないと思います。
課題2:原因不明のSSH VPN切断の後に再接続を行う
一応、再接続は自動で行ってくれるのですが、今までにないパターンで切断され、復帰トリガーが起動しない条件に
陥ってしまった場合は手動でVPNの張り直しをしなければなりません。
課題1で書いたようなスクリプトをホストごとに作成して今はしのいでいますが、なんだか本末転倒な気分がするので
どうにかしたいなと思っています。
まあ、試してみたところ{HOST.PORT}はZabbixのスクリプトでは展開してくれなかったので、さらなるバージョンアップを待つか
何かの改造をしなくてはいけないかなと思っていたりします。