DatadogでのAlibaba Cloud連携について

f:id:sbc_suzuki10:20200722143931p:plain

こんにちは。エンジニアの鈴木です。

今回はクラウド型の監視アプリケーションであるDatadogでAlibaba Cloudを連携してみたいと思います。



はじめに

Datadogは以下のようなことが可能なサービスです。
・クラウドサービスのメトリクスの監視
・アプリケーションのパフォーマンスを監視
・ログの収集・可視化
・アラートの管理と通知

※上記は一部の機能になります。機能の詳細については以下をご覧ください。

www.datadoghq.com


Datadogの下記のページを見るとAlibaba Cloudについても記載がありますので、
実際に使用できるか検証したいと思います。 www.datadoghq.com

f:id:sbc_suzuki10:20200720101320p:plain



連携可能なAlibaba Cloudプロダクトについて

ドキュメントを見ると以下のプロダクトがDatadogと連携可能なようです。 docs.datadoghq.com


Alibaba Cloud Servers Load Balancer
Alibaba Elastic Compute Service
Alibaba Cloud ApsaraDB for RDS
Alibaba Cloud ApsaraDB for Redis
Alibaba Cloud Content Delivery Network
Alibaba Cloud Container Service
Alibaba Cloud Express Connect

実際に連携できるか一部のプロダクトを使用し、検証していきます。

RAM設定

以下のドキュメントによると、
連携のためにAccount IDとAccess Key IDとAccess Key Secretが必要な手順となっていますので、
まずはDatadogとの連携で使用するRAMユーザを作成します。

docs.datadoghq.com


Resource Access ManagementでRAMユーザを作成します。

f:id:sbc_suzuki10:20200720102932p:plain



連携するプロダクトに対応する権限をRAMユーザへ付与します。
・AliyunCloudMonitorReadOnlyAccess
・AliyunECSReadOnlyAccess
・AliyunKvstoreReadOnlyAccess
・AliyunRDSReadOnlyAccess
・AliyunSLBReadOnlyAccess
・AliyunCDNReadOnlyAccess
・AliyunCSReadOnlyAccess
・AliyunExpressConnectReadOnlyAccess

f:id:sbc_suzuki10:20200727182457p:plain



Datadog+Alibaba Cloud連携

Datadog連携用のRAMユーザと権限が用意できたので、Datadogとの連携を図ります。
Integrationsの概要については下記をご覧ください。

docs.datadoghq.com

IntegrationsでAlibaba Cloudを選択します。

f:id:sbc_suzuki10:20200727182625p:plain


以下のプロダクトのメトリックが収集できます。

f:id:sbc_suzuki10:20200717100757p:plain


ConfigurationタブからAdd Accountを押下します。

f:id:sbc_suzuki10:20200720095651p:plain


Alibaba CloudのAccount IDと
RAMユーザのAccess Key IDとAccess Key Secretを入力し、DatadogとAlibaba Cloudを連携します。
※各種Alibaba Cloudインスタンスのメトリックデータ連携時にフィルタとして使用するタグもここで定義しています。
入力後、Install Integrationを押下します。

f:id:sbc_suzuki10:20200720095858p:plain


連携後、再びAlibaba CloudのIntegrationを開くと以下のようになります。
連携できました。これでプロダクトのメトリクスを可視化および監視することが可能となります。

f:id:sbc_suzuki10:20200720100017p:plain



ダッシュボード①

Alibaba CloudのIntegrationを追加したため、Datadogにダッシュボードが追加されます。

f:id:sbc_suzuki10:20200720100959p:plain


ECSとSLBとRDSとRedisのダッシュボードが表示されます。
※作成したばかりのため、まだデータは表示されていません。

f:id:sbc_suzuki10:20200722154629p:plain



リソース用意

Datadogに読み込ませるリソースを作成します。
Datadogではタグによるフィルタリングが可能であるため、今回リソースには意図的にタグを付与します。
※独自にタグを付与しない場合でもカウントやリージョン、ゾーン単位のフィルタリングは可能です。

docs.datadoghq.com

Alibaba Cloudダッシュボードに表示されるECSやSLBなどのリソースを作成し、同じタグを付与します。
今回はIntegrationでのアカウント連携時に設定したタグを付与します。
タグによるリソースのフィルターが可能のため利用します。
※以下はSLBのタグ設定画面

f:id:sbc_suzuki10:20200722163613p:plain


※以下はRDSのタグ設定画面

f:id:sbc_suzuki10:20200722163631p:plain



ダッシュボード②

フィルタを設定しない場合、アカウントのリソースがダッシュボードにすべて表示されます。

f:id:sbc_suzuki10:20200727183641p:plain


$varでインスタンスに設定したタグを選択するとタグを付与したインスタンスのみダッシュボードに表示されます。

f:id:sbc_suzuki10:20200722154815p:plain



ダッシュボード③

デフォルトで作成されるダッシュボード以外にも 自分でダッシュボード作成し、メトリクスを登録することも可能です。

f:id:sbc_suzuki10:20200729155857p:plain


f:id:sbc_suzuki10:20200727200108p:plain


画面上部のウィジェットをドラッグアンドドロップで配置します。

f:id:sbc_suzuki10:20200727200118p:plain


表示するメトリクスを選択し、保存するとダッシュボードに反映されます。

f:id:sbc_suzuki10:20200727195003p:plain


ダッシュボードが表示されました。 Alibaba Cloudプロダクトで表示できるメトリクスについては以下のページのメトリクスをご覧ください。

docs.datadoghq.com

f:id:sbc_suzuki10:20200727195019p:plain



Agent登録

datadog-agentをサーバに導入するとDatadogでサーバ内プロセス監視が可能となります。
今回はECSにAgentを導入し、プロセスを監視してみます。

docs.datadoghq.com


今回はCentOS7.6のパブリックイメージを使用しているため、
左カラムでCentOSを選択し、以下のコマンドでAgentを導入します。

f:id:sbc_suzuki10:20200720135633p:plain



プロセス監視

Agentを導入したECSで設定ファイルを記述します。

「/etc/datadog-agent/conf.d/process.d」配下に設定ファイルを新規作成します。
/etc/datadog-agent/conf.d/process.d/conf.yaml

init_config:

instances:
  - name: chrony
    search_string: ['chrony', 'chronyd']
    exact_match: False

  - name: ssh
    search_string: ['ssh', 'sshd']
    exact_match: False


サービス再起動をして設定を反映します。

# systemctl restart datadog-agent


設定が反映されていることを確認します。
※下記のコマンドはAgentをインストールすることで使用可能となります。

# datadog-agent status
f:id:sbc_suzuki10:20200720193838p:plain


DatadogでMonitors ⇒ Manage Monitorsに遷移し、New Monitorを押下して新規監視定義を作成します。

f:id:sbc_suzuki10:20200720194327p:plain


Process Checkを選択します。

f:id:sbc_suzuki10:20200720195729p:plain


Agentの「/etc/datadog-agent/conf.d/process.d」配下の設定ファイルで定義したプロセスが
Pick a Processに表示されるため選択します(以下の画像ではChronyを選択)。
監視対象とするスコープをタグで指定し(以下の画像ではservice:datadogを指定)、その他メール内容と通知先を設定します。

f:id:sbc_suzuki10:20200722154029p:plain


作成後、Manage Monitorsに表示されます。
プロセスが正常にアップしているとSTATUSがOKになります。

f:id:sbc_suzuki10:20200720194504p:plain


以下はプロセス監視の詳細画面です。

f:id:sbc_suzuki10:20200729144237p:plain


今回プロセス監視設定をしたchronyを停止し、アラートを発報させます。
クライアントでプロセスを停止します。

# systemctl stop chronyd


DatadogでSTATUSがOK ⇒ ALERTに変更されることを確認します。

f:id:sbc_suzuki10:20200720194540p:plain


以下はプロセス監視の詳細画面です。

f:id:sbc_suzuki10:20200729144208p:plain


以下はDatadogから送信されたメールです。
プロセス監視でERRORになったため送信されました。
これによりプロセス監視設定で設定したメールアドレスにメールが発報されることが確認できました。

f:id:sbc_suzuki10:20200729144105p:plain



Live Processesの有効化

プロセス毎にAgent側で動作プロセスを定義しなくとも
Agent側の動作プロセス一覧および消費リソースを取得できます。
AgentでLive Processesを有効化するとクライアントで動作している全てのプロセスが表示されます。

docs.datadoghq.com

以下のProcesses画面ではAgent側でLive Processesをまだ有効化していないので、何も表示されていません。

f:id:sbc_suzuki10:20200722164905p:plain


以下のファイルのprocess_configをtrueにするとDatadog側にもクライアントのプロセス一覧が連携されます。
/etc/datadog-agent/datadog.yaml

process_config:
    enabled: 'true'


サービス再起動をして設定を反映します。

# systemctl restart datadog-agent


Agent側で有効化するとグラフと動作プロセスごとのリソース使用率が表示されます。

f:id:sbc_suzuki10:20200722164852p:plain


おわりに

今回はAlibaba CloudとDatadogを連携してみました。

Alibaba CloudプロダクトやMWのプロセス監視を中心にご紹介させていただきましたが、
Datadogは他クラウドや様々なOSS製品(jenkins、Ansibleなど)、コミュニケーションツール(Slack、teams、GSuite)などとも連携が可能です。
それらを組み合わせることでさらに利便性の向上や管理の手間を削減可能と思われます。

f:id:sbc_suzuki10:20200727181118p:plain


しかし、一部機能(ログ連携機能など)についてはまだAlibaba Cloudに未対応でしたので、Fluentdなどを代替として使う必要がありそうです。

f:id:sbc_suzuki10:20200727101611p:plain:w500


f:id:sbc_suzuki10:20200729183942p:plain:w500


ですが、今回紹介した機能のようにAlibaba Cloudに対応している部分も増えてきていますので、先取りし一部機能を使用してみるのも一興かと思われます。

フル機能が14日間無料のトライアルもありますので、 マルチクラウド環境の方や多数のツールをご利用の方はご利用してみてはいかがでしょうか。