Upgrade to Pro — share decks privately, control downloads, hide ads and more …

full-managed-hosting-with-mackerel

hogem
August 02, 2018

 full-managed-hosting-with-mackerel

hogem

August 02, 2018
Tweet

Other Decks in Technology

Transcript

  1. 法人向けフルマネージド ホスティング 法人向けフルマネージド ホスティング 自社基盤メイン 既存 ISP の回線設備を有効活用 クラウド基盤 VMware

    / 約700VM 物理 専用サーバ、共用サーバ / 約500 台 NW 機器 / 約300 台 パブリッククラウド AWS 、GCP 、(Azure)
  2. Cacti Cacti L2/L3 SW の interface 全部 グラフにするとかは楽 snmp 、mib

    の知識が必要 ( やや特殊) cacti plugin 作成の学習コスト お手軽にグラフ描きたい!
  3. ある日 大規模な NW 障害が発生 ある日 大規模な NW 障害が発生 NW 環境が不安定に

    一部のホストとストレージが切断 約1時間、影響 数百VM Pandora 上はステータスが“ 不明” となりアラート 通知が飛ばなかった 後日調査: Pandora のリソース不足が原因だった 可能性が高い
  4. プライベート NW 環境に導入しやすい プライベート NW 環境に導入しやすい セキュリティ要件の厳しい顧客のプライベート ネットワーク環境 api.mackerelio.com 443

    port への outbound の許可 があればOK HTTP Proxy or NAT 監視のために 443 通します、という説明は必要 監視サーバからのルーティング、FW 許可などが 不要
  5. マネージドホスティング マネージドホスティング 原則 1 顧客 1 オーガニゼーション 約 70 オーガニゼーション

    Mackerel 管理画面上でオーガニゼーションを超 えてホスト、アラートが検索できない
  6. 自前ダッシュボードの作成 自前ダッシュボードの作成 GCP 上に GCE インスタンスを構築 本当は App Engine を使ってみたかった

    本番利用の実績がなく、実装までの時間の都 合上断念 Python + Flask + FlaskAdmin で作成 API Key の管理 登録ホスト、アラート等を JSON で取得 オーガニゼーションごとのホスト数
  7. Flask Admin + SQLAlchemy Flask Admin + SQLAlchemy class Organizations(db.Model):

    id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), nullable=False, index= apikey = db.Column(db.String(50), nullable=False, unique verified = db.Column(db.Boolean) private = db.Column(db.Boolean) memo = db.Column(db.String(200)) admin.add_view(ModelView(Organizations, db.session))
  8. GCP 上に API 用意 GCP 上に API 用意 Flask で

    Webhook 受け取る JSON から orgName, hostname 等を取得 1 ホスト 1 サービス で運用 ユーザへのメール送信には SendGrid を利用 user = db.session.query(Notifications).filter( Notifications.orgname == orgname, Notifications.service == service).first()
  9. 補足 : GCP のメール送信制限 補足 : GCP のメール送信制限 ポート 25

    を宛先とする送信トラフィック (SMTP )はすべてブロックされます ポート 465 または 587 を宛先とするほとんどのト ラフィック(SMTP over SSL )がブロックされま す https://cloud.google.com/compute/docs/networks- and-firewalls
  10. Mackerel 導入前 URL 監視設定フロー Mackerel 導入前 URL 監視設定フロー サーバ構築者が監視内容をexcel に記入

    サーバ構築者がチケットにexcel を添付 監視担当者がチケット内容を元に監視設定 辛い
  11. Mackerel 導入後 ( 予定 ) Mackerel 導入後 ( 予定 )

    担当者が監視内容を設定 mkr monitors pull して編集 branch 切って commit, push ( 社内 Gitlab ) Merge Request 投げる チェック者が Merge Gitlab CI で自動的に設定 mkr monitors push
  12. cron を Mackerel に巻き取る cron を Mackerel に巻き取る 定期的なチェック処理等 クリティカルなモノは結果を監視してる

    全部してない スクリプト個別に実装すると面倒 失敗時の連続通知抑制 終了ステータスだけ調整すれば check plugin で出 来る
  13. CDN CDN CDN: J-Stream とパートナー契約 ( 利用状況次第で) AWS より転送単価安い CloudWatch

    のような通知機能がない API で転送量取得は可能 転送量コミット xx TB / 月額 oo 万円 容量超過時 xx 円 / GB
  14. Mackerel 登録ホスト数の監視 Mackerel 登録ホスト数の監視 default では mackerel-agent.conf は一般ユーザで 読み取り可能 API

    Key がわかる chmod 600 mackerel-agent.conf し忘れたり 他部署に root 権限を渡している 万が一、誤った操作されたら。。。 自前ダッシュボードのAPI が正常動作しているか の確認も兼ねてる
  15. 外形監視 外形監視 Mackerel で外部からの監視 URL 外形監視はある 特定ホストの障害として紐づけたい icmp, port 監視

    Mackerel 本体で全部やってくれたら嬉しい もしくは OSS を使う https://github.com/fujiwara/maprobe