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