こんにちはサイオステクノロジーの前田です。
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コンソールでモニタリング内容を表示することができます。
■アラート画面(アラート発生状態)
■アラート画面(全体_アラート発生していないのも含む)
本記事では、このモニタリング機能を利用した、外部確認検証用のメールアプリの作成とアラートを発生させて動作確認をしていきます。
検証手順
初期設定でモニタリングスタックの監視は設定済みです。しかしアラートの転送先は未設定です。検証するには転送先の作成、転送先の設定、テストのアラートの作成等をしないといけないため大変です。またドキュメントも少ないため、知識がない状態では何が正しいのかわかなくなります。そのためテストメールのアプリケーション作成と検証方法を記載していきます。
流れ
- OpenShiftにメールサンプルアプリを導入
- Alertmanagerの設定をOCPの管理コンソールから設定
- Alertmanagerのコンテナからテストアラート送信
1. OpenShiftにメールサンプルアプリを導入
oc new-project sendalert
oc new-app --docker-image=maildev/maildev --name='maildev'
oc expose service/maildev --port=1080
oc get route
Alertmanagerの設定をOCPの管理コンソールから設定
モニタリングスタックのAlertmanagerの設定をOpenshiftのクラスターから設定を行います。
管理コンソールにcluster-admin権限でログインし、管理、クラスター設定、設定、Alertmanagerの順に選択する。mailの設定をするため「レシーバの作成」を選択する。レシーバーのパラメーターを下記設定で入力し保存を選択する。
レシーバーのパラメータ(アラートラベルにseverityがあるものを全部検知)
レシーバー名 | |
レシーバータイプ | |
宛先アドレス | 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のマニュアルを確認ください。
テストアラート送信
初期状態の設定ではノードを落としてもアラートの発生(prometheusの検知、アラートまでの時間はprometheusruleの設定に依存)には時間がかかります。今回はprometheusのアラートチェックをしない(Openshiftの管理コンソール上に表示されない)方法で、テストアラートを送信する方法を記載します。
oc project openshift-monitoring
oc exec alertmanager-main-0 -- amtool config routes show --alertmanager.url http://localhost:9093
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検証環境もコンテナで簡単に作りテストすることができます。本記事で少しでもコンテナ環境への移行での負担や苦手意識が減ることを望みます。