Openshiftの運用_アラートの送信_メール検証環境作成

こんにちはサイオステクノロジーの前田です。

OpenShiftの導入や設定したときに、今までのRHELと違うため、アラートの設定と操作方法について悩んでしまう場合があります。今回はOpenShiftのアラート検証環境を作成しながら、OpenShiftのアラートについて記載します。

OpenShiftのアラート概要

OpenShiftのアラートは主に2種類あります。どちらも初期構築時に設定されています。

  • OpenShift Insights RHELのエラータみたいなもので脆弱性等のアラート
  • モニタリングスタック Prometheusを利用して検知、Alertmanagerを利用してアラート送信

OpenShift Insights

RHELのエラータみたいなもので、脆弱性等を確認できます。コンテナの詳細な脆弱性を見るわけではありませんが、OpenShiftとしての基本的な設定等を確認するものです。例としては、アラート送信先設定ができていない。モニタリングの永続ストレージ設定ができていない。アラート内容はOCM(cloud.redhat.com)で詳細な情報は確認することができます。

OpenShiftクラスターから見たinsight情報

詳細ないInsight情報

モニタリングスタック

Prometheusでモニタリング情報の収集を行い、Alertmanagerを利用してアラートを送信します。Prometheusは情報収集、検知、アラート判断の機能を有し、Alertmanagerはアラート送信機能と考えてください。

Prometheusの取得する情報はコンテナのCPUやメモリ、ネットワーク転送量等を確認できます。検知ルールはPrometheusrulesで記載しておりいろいろなものがあります。クラスターのノード停止等も主にこちらで確認します。

Alertmanager機能は、アラートをどのように通知するか、通知先や通知方法(mailやslack,webhook)を制御します。

■監視画面

収集した情報を表示。OpenShiftではAdministratorコンソールとDeveloperコンソールでモニタリング内容を表示することができます。

■アラート画面(アラート発生状態)

■アラート画面(全体_アラート発生していないのも含む)

 

本記事では、このモニタリング機能を利用した、外部確認検証用のメールアプリの作成とアラートを発生させて動作確認をしていきます。

検証手順

初期設定でモニタリングスタックの監視は設定済みです。しかしアラートの転送先は未設定です。検証するには転送先の作成、転送先の設定、テストのアラートの作成等をしないといけないため大変です。またドキュメントも少ないため、知識がない状態では何が正しいのかわかなくなります。そのためテストメールのアプリケーション作成と検証方法を記載していきます。

流れ

  1. OpenShiftにメールサンプルアプリを導入
  2. Alertmanagerの設定をOCPの管理コンソールから設定
  3. Alertmanagerのコンテナからテストアラート送信

1. OpenShiftにメールサンプルアプリを導入

メールサンプルアプリ用のプロジェクト作成
oc new-project sendalert
アプリケーションをデプロイするための空間を作成します。
docker-imageからアプリケーションをデプロイ
oc new-app --docker-image=maildev/maildev --name='maildev'
dockerの下記イメージをデプロイしていきます。
https://hub.docker.com/r/maildev/maildev
外部アクセスを可能にするためOpenShiftのrouteを作成(service maildevからroute{URL}を作成)
oc expose service/maildev --port=1080
作成されたルート(URL)を確認
oc get route
ブラウザからwebコンソールにアクセスします。
最初はアラートメールが届いてないため上記のような管理画面になります。メールが届けば下記のような表示になります。
■補足 service経由でメールポートにアクセスする方法としては下記でアクセスを行う。
maildev.sendalert.svc.cluster.local:1025

Alertmanagerの設定をOCPの管理コンソールから設定

    モニタリングスタックのAlertmanagerの設定をOpenshiftのクラスターから設定を行います。

    管理コンソールにcluster-admin権限でログインし、管理、クラスター設定、設定、Alertmanagerの順に選択する。mailの設定をするため「レシーバの作成」を選択する。レシーバーのパラメーターを下記設定で入力し保存を選択する。

    レシーバーのパラメータ(アラートラベルにseverityがあるものを全部検知)

    レシーバー名 mail
    レシーバータイプ Email
    宛先アドレス ocp@example.com
    送信元アドレス ocpfrom@example.com
    SMTP スマートホスト maildev.sendalert.svc.cluster.local:1025
    SMTP hello localhost
    TLSが必須 チェックなし
    ラベルのルーティング_名前 severity
    ラベルのルーティング_値 .*
    正規表現 チェックあり

    設定をした後でメールアプリの画面を確認すると、アラート通知が届いています。

    ■補足①

    Alertmanagerは、下記仕組みがあるため注意する

    • レシーバのチェック順番がある。
    • チェック条件を満たすと次のチェックに進まない。 (※continue trueがある場合のみ次のチェックに進む)
    • 全てのチェック条件にあたらない場合は、defaultを利用して通知する

    ■補足②

    yaml設定の内容を編集することでさらに特殊なカスタマイズができます。例としてはアラートメールの件名変更等ができます。詳細はPrometheusのAlertmanagerのマニュアルを確認ください。

    参考URL Alertmanager設定

    テストアラート送信

    初期状態の設定ではノードを落としてもアラートの発生(prometheusの検知、アラートまでの時間はprometheusruleの設定に依存)には時間がかかります。今回はprometheusのアラートチェックをしない(Openshiftの管理コンソール上に表示されない)方法で、テストアラートを送信する方法を記載します。

     

    プロジェクト移動
    oc project openshift-monitoring
    設定確認(アラート送信設定の確認)
    oc exec alertmanager-main-0 -- amtool config routes show --alertmanager.url http://localhost:9093
    テスト確認(該当アラートがreceiverに該当するか確認)
    oc exec alertmanager-main-0 -- amtool config routes test severity=errtest --alertmanager.url http://localhost:9093
    アラート送信
    oc exec alertmanager-main-0 -- amtool alert add --alertmanager.url http://localhost:9093 alertname=myalerm  --start=""2022-03-18T00:00:00-00:00"" severity=errtest
    アラートの確認
    oc exec alertmanager-main-0 -- amtool alert --alertmanager.url http://localhost:9093
    参考画像

     

    ※件名やアラートの動作を確認する場合は、マスターノードを停止して10分以上待つことでアラートのテストをすることができます。ただこちらの場合はたくさんのアラートが発生するため、注意してください。

    最後に

    サーバからコンテナに代わり覚えることがたくさんある中の一つとしてアラートの検知と送信があります。ユーザの中には設定が難しいためDatadogや別サービスを利用されるかたも多いです。初期は本記事のように簡易設定を行い試してみてください。mail検証環境もコンテナで簡単に作りテストすることができます。本記事で少しでもコンテナ環境への移行での負担や苦手意識が減ることを望みます。

    ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

    役に立った 役に立たなかった

    0人がこの投稿は役に立ったと言っています。

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です