1.8K Views
October 16, 17
スライド概要
                        NetOpsCoding#5 × ネットワークプログラマビリティ勉強会#13で話してきた。
ネットワークの自動化・監視の取り組みについての発表資料となります。
                    
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
P オペレーション自動化と監視の取り組み ヤフー株式会社 サイトオペレーション本部 インフラ技術3部 安藤 格也
自己紹介  安藤 格也(あんどう かくや) servak  2011年入社  決済チームで開発、運用  2015/10にNWチーム(現職)に異動 P 2
目次  オペレーション自動化  ネットワーク監視 P 3
P 4 オペレーション自動化
普段のオペレーション P 5 専用ネットワークが欲しい ネットワークを作ります 利用者 NW担当者 機器に応じた設定を人が投入 NW機器
問題点について   人による作業が多いため、ヒューマンエラーが発生してしまう  日常的ではない作業ではなおさら間違えやすい  ヒューマンエラーについて再発防止が難しい オペレーションに時間がかかってしまい、多くの依頼をこなせない  Etc... 自動化を進めていこう P 6
自動化の方針について   P 7 NW機器とのやりとりはCLI(SSH, TELNET), SNMP  CLIだとプログラムで扱いやすい形(JSON, XMLなど)になっていない  SNMPだと取得できる情報が不十分になってしまう 新しい機器、バージョンだとWebAPI、Netconfに対応しているもの もあるが、古い機器でのオペレーションがまだ圧倒的に多い 極力構造化されたAPIを利用 出来ないところは努力!
自動化の方針について  マルチベンダーを利用するがゆえの問題点  NW機器ベンダーによって使いかたが大きく違う。  同じベンダーでも複数のOSがあり、情報取得方法が違う。 抽象化を進める 自動化へ P 8
OS毎のアクセス方法を整理 OS API Cisco IOS CLI Cisco NXOS Netconf Juniper JUNOS Netconf Arista EOS EAPI Brocade NetIron CLI P 9
OS毎のアクセス方法を整理 P 10
しかし多くの問題が。。。  やっていくうちに出てくる問題たち(考慮漏れ)  NETCONFで取れるデータ != 構造化されたデータ  運用している機器すべてでWebAPIが利用できるわけでなかった    運用している機器すべてのバージョンを上げることが難しい などなど ... 取得方法をCLIベースに変更 P 11
次のステップへ  ログイン時にOSを意識する必要性は無くなった  コマンド、コマンド結果は未だOSを意識する必要が残った => 抽象化は不完全 P 12
共通モデルの定義  取得したい内容を共通モデル化  コマンド結果の定義化  コアとなる考えのみ定義  すべてのOSで扱えるもの P 13
共通関数の定義  共通で利用する関数を用意  共通モデルを取得できる関数  コマンドでのOSの意識を消す P 14
コマンド結果のパースが大変。。。 P 15  欲しい情報をコマンドから取得するのがとても大変。  既存のOSSを参考にすることに!
google/textfsm  CLIの結果を解析するライブラリ    テンプレート(独自DSL)を記載すると簡単にCLIをパース出来る 多くのテンプレート実装が用意されている  Networktocode Orgが多くのテンプレートを用意してくれてる  https://github.com/networktocode/ntc-templates/tree/master/templates OSSとして公開されている  https://github.com/google/textfsm P 16
google/textfsm 利用のコード例 P 17
google/textfsm コード例 P 18
抽象化ひとまず完 IOS P 19 EOS 同じ方法で、色んなOSから情報が取得できるように!
オペレーション自動化へ P 20 fabric(python)ベースでオペレーションを関数化(タスク化) VLAN3897をTrunkする作業 mnx04.*****.ynwp snx04.*****.ynwp 既にVLAN3897は存在し ている Po205 Po205 Po205 Po205 Po1 es-c1e-b007-1 Po1 es-c1e-b007-2 まだVLAN3897設定して ない
メンテナンスの自動化  メンテナンスで行う内容  トラフィック寄せ(OSPF, VRRP)  インターフェースのダウンアップ  YAMLファイルに上記の内容を記載することでその状態にしてくれ るコマンドを作成  設定を流すだけでなく、Before, Afterの状態を確認する  YAMLファイルも機器から情報を取得し自動生成 P 21
メンテナンスの自動化  行いたいことを記載することでOSを意識する必要なく、インター フェースのup/downを実施することが出来るように! P 22
まとめ  P 23 抽象化レイヤーの作成を行ったため、オペレーション自動化する 際のコーディングがとても楽に!  抽象化レイヤーのコードカバレッジが90%以上になるほどテストを しっかりしたことも有り、バグがとても少なくなった  ベンダー毎に取り扱っている情報が違うため、すべてに置いて共 通化は出来なかったが重要概念はしっかり共通化できた
P 24 ネットワーク監視
ネットワーク監視の見直し  PING監視   リソース監視   smokeping MRTG 問題点  情報が散らばってしまう  ツールがバラける(確認箇所の増加)  情報の詳細度が低い  UIがイケてない P 25
ネットワーク監視でやったこと  PING監視  パケットが落ちていないこと    複数拠点から NW機器のリソース監視  トラフィック使用率  トラフィックが溢れていないこと  SFP故障によるパケットのドロップ 監視のHA化 P 26
利用したツール  Prometheus  Alertmanager  Grafana P 27
Prometheusとは  Pull型(HTTP)のメトリクス監視ツール   Alert管理機能を標準装備    Inspired by Google’s Borgmon Alertを発生させることが出来るし、管理ができる 多彩なService Discoveryに対応  OpenStack, Kubernetes, StaticFile ...  監視対象を自動的に見つけてくれる 公式で様々なメトリクス取得方法を提供  snmp_exporter, blackbox_exporter, node_exporter ... P 28
Exporterについて P 29 例: snmp_exporter Prometheus snmp_exporter 定期的に監視(HTTP)  snmp_exporter   SNMPによる情報取得が出来る node_exporter   NW機器からトラフィック情報を取得(SNMP) *NIXのメトリクスを集めることが出来る blackbox_exporter  外部監視をすることが出来る(pingなど)
Prometheusの集約について(Federation) Prometheus同士の集約・監視が可能 snmp_exporter Prometheus blackbox_exporter Prometheus Prometheus snmp_exporter P 30
Alertmanagerについて P 31 • Prometheusから来たアラートをルールに応じてグループ化、通知先を変更可能 • アラートの黙認など柔軟に設定が出来る Chatツール Prometheus アラート Alertmanager メール送信 黙認
ネットワーク監視でやったこと  PING監視  パケットが落ちていないこと    複数拠点から NW機器のリソース監視  トラフィック使用率  トラフィックが溢れていないこと  SFP故障によるパケットのドロップ 監視のHA化 P 32
PING監視について  BlackboxExporterを利用   ICMP監視 Aggregateも2台構成 P 33
PING監視について  P 34 パケットが落ちていないこと  複数拠点(4箇所)すべてでPING失敗であったのが30s継続した場合、ア ラートを発生させる監視設定を追加
PING監視について P 35
PING監視について P 36
ネットワーク監視でやったこと  PING監視  パケットが落ちていないこと    複数拠点から NW機器のリソース監視  トラフィック使用率  トラフィックが溢れていないこと  SFP故障によるパケットのドロップ 監視のHA化 P 37
リソース監視について  SnmpExporterを利用  監視・可視化のため16指標 の情報を取得  情報量が多いため、短期用 のPrometheusと長期の Prometheusを設置 P 38
リソース監視について P 39
リソース監視について  以下は定常的にアラート化していないが、いつでも確認できる状態に  トラフィック使用率 P 40
リソース監視について  トラフィック溢れによるパケットのドロップ  マイクロバーストや上限を超えるトラフィックがきたときに、 ifDiscardsが上昇するためそちらに閾値を設けアラートを実施 P 41
リソース監視について  P 42 SFP故障によるパケットのドロップ  パケットが壊れている時など、ifErrorsが上昇するためそちらに閾値 を設けアラートを実施
ネットワーク監視でやったこと  PING監視  パケットが落ちていないこと    複数拠点から NW機器のリソース監視  トラフィック使用率  トラフィックが溢れていないこと  SFP故障によるパケットのドロップ 監視のHA化 P 43
HA化について  AlertManagerをHA構成で稼働  アラートは2つのAlertManagerに連携されるが実際に通知される のは1件のみになる。 P 44
アラート通知内容 P 45
まとめ P 46  情報を集約することで、適切なアラートだけ上げることが出来るようになった。  アラートに応じて、条件を細かく指定できることが良かった。  Alertmanagerによりアラートをグループ化することが出来るため、一気にア ラートが来たときもグループでまとまりわかりやすくなった。
今後について P 47  監視ツールとしての信頼性を高めていく  まだsmokeping, MRTGを利用して監視通知を上げている状態でもあるため、 それを完全に切り替えていきたい。  長期データの保持について考えていく
P 48 ご清聴ありがとうございました