Edited at

Alibaba Cloud とDatadog の監視ログ連携

More than 1 year has passed since last update.

DatadogはSaaS型監視のクラウドサービスで、モニタリング機能だけでなく、タグ分析、Slack等の外部連携、ログ管理機能等、豊富な機能が利用できます。ここでは、Alibaba Cloud の監視運用のため、Datadog との連携方法についてご紹介します。


なぜSaaS型監視サービスを使うか

Alibaba Cloud には、CloudMonitor やLog service 等、監視やログ管理の機能が標準であります。

これらは強力なツールですが、すでにAWS等の既存クラウドの監視でDatadog を利用している現場では、Alibaba Cloud の監視も一元化したいというニーズがあると思います。

このようなハイブリッド環境の監視では、Datadog に限らずSaaS型監視サービスの利用は効果的です。


やりたいこと


  • Alibaba Cloud ECS仮想サーバのリソースモニタリングをDatadog で確認したい

  • Alibaba Cloud の各種ログをDatadog logs Managementで確認したい

  • Alibaba Cloud のクラウドサービスのリソースモニタリングをDatadog で確認したい


Datadogと連携する基本構成

Datadog と連携するにあたっての基本構成です。

ECSに導入したDatadog Agent内のフォワーダー機能がDatadogとのデータ連携を担当するため、Datadogのグラフ機能は簡単に使えます。


設定とグラフ表示の例(ECS仮想サーバのリソースモニタリング)

Datadogにログイン後、自身のアカウントのAPIキーを確認する:


DatadogサイドメニューのIntegrations > APIs 参照


Datadog Agent を導入する(Linuxの場合):


DD_API_KEY=[確認したAPIキー] bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"


導入エージェントのバージョンやステータスを確認する:


datadog-agent version


コマンド結果例: ※Agentのバージョンは6以上を推奨

Agent 6.2.1 - Commit: b644e5c - Serialization version: 4.7


datadog-agent status


エージェントに含まれる機能の詳細が表示される(後述のエージェントに設定する値も表示可能)



Datadog Dashboard でECS仮想サーバのリソースグラフを確認する(グラフ表示まで数分かかる):




Alibaba Cloud の標準機能とすみ分けたログ管理構成


Datadog log Management 概要(2018年6月時点)

次はAlibaba Cloud 上の各種ログをDatadog log Management でモニタリングします。

Datadogの本機能は、2018年3月にGAとなった新機能で、6月時点で下記ログソースを管理することが可能です。

また、サーバ以外にもコンテナ、クラウド等のログソースを管理できます。

ご参考ですが、クラウドはAWSしか対応していません。(Azure,GCPの拡張を予定しているようですが、Alibaba Cloud はまだ含まれていませんでした)

また、Datadog のマニュアル上、AWSとのログソース連携は、サーバレスのLambda function による実装が記載されています。

当然ながらクラウド基盤にDatadog Agent は導入できないため、この実装方式は他のクラウドにおいても同様になることが予想されます。Alibaba Cloud だとサーバレス実装はFunction Compute ですが、残念ながら国内向けではまだ使えないようです。


ログ管理連携の構成

Datadog Agent のログ管理パラメータを有効化することで、基本構成でDatadog へのログ転送が可能になりますが、Alibaba Cloud の標準機能とのすみ分けが必要です。

具体的には、Alibaba Cloud のLog service の運用を考慮する必要があります。

Log service には、Loghub というログコレクション機能があり、ここにログを収集することで、他のLog service機能(Log shipperLog Search等のデータストア転送・分析)が利用できます。

また、収集可能なログも今後拡張し、Alibaba Cloud製品のログも対応してくようです。公式ドキュメントでは下記ログの収集に対応するとのことです。


Alibabaクラウド製品


ECSログ:Logtailによって収集

Alibabaクラウドコンテナサービス

メッセージと通知サービス(MNS)ログ

近日公開予定:OSS、CDN、API Gateway



上記の通り、Alibaba Cloud 内のログはLog service に収集することができるため、Datadog への転送・モニタリングは下記構成が考えられます。(リアルタイム性は落ちますが)


  • ログの収集、ログ保管の一元管理はLog Service が担当

  • ECS仮想サーバを中継用に1台たてOSS からDatadogと連携したいログを抽出

  • ECS仮想サーバのDatadog AgentがDatadog に転送

もちろん前述の基本構成で、各サーバのログを直接Datadog に送信する方が、リアルタイム・モニタリング目的には合致しますし、中継サーバもサーバレス化が望ましいのですが、ログの長期保管はDatadog の管理外であることも踏まえ、OSSからのデータ取得を想定した中継サーバ構成を検証してみます。


設定とグラフ表示の例(各種ログをDatadog log Managementで確認)

ここでは例として、ECS仮想サーバのNGINXログ(access_log)をLog Serviceに転送し、OSSに保管されたログを中継サーバで取得します。取得したログはDatadog AgentでDatadogに転送します。

NGINXログをLog service経由でOSSに保管する:


転送対象ログ /var/log/nginx/access.log

転送先OSS oss://dev01-nginx/xxx

※Log service の設定およびOSSへの転送保管は、こちらの記事を参考にさせて頂きました。

 LogShipperの転送機能は、サーバ生ログがそのまま転送するのではないため、各種ログは、圧縮要否・JSON方式(CSV等もあり)・ファイルリネーム等の設定の影響をうけます。(ここでは圧縮なし・JSON方式を選択しています)


ECS中継サーバからOSSに保管されたNGINXログを取得する1(aliyunclコマンドの失敗):


aliyuncli oss GetAllBuckets ※OSSとの疎通確認用


出力結果例

OSS operation in aliyuncli is not supported.

Please use 'ossutil' command line tool for Alibaba Cloud OSS operation.
You can find information about 'ossutil' here: https://github.com/aliyun/ossutil.

※aliyuncliのOSSコマンドを利用してみたのですが、上記メッセージが出力されたのでossutilを設定することにしました。


ECS中継サーバからOSSに保管されたNGINXログを取得する2(ossutilの設定):


ossutil はgit および go が必要なため事前に導入が必要です。

ossutil ls ※OSSとの疎通確認用


出力結果例

CreationTime                                 Region    StorageClass    BucketName

2018-05-13 16:43:31 +0800 CST oss-ap-northeast-1 Standard oss://dev01-nginx
Bucket Number is: 1
0.012950(s) el

ossutil cp oss://dev01-nginx/* /datadog_log/nginx/


準備ができたので中継サーバにOSSのログを取得します。

ここでは、ログ取得後、/datadog_log/nginx/access.log に移動・ファイルリネームをしています。



 参考:ossutilコマンド

ECS中継サーバのDatadog AgentのConfigを設定する:


vim /etc/datadog-agent/datadog.yaml ※datadog log management 有効化


設定値(false⇒trueに変更)

logs_enabled: true


vim /etc/datadog-agent/conf.d/python.d/conf.yaml ※python.dディレクトリ作成およびconf.yamlファイルを作成します。

※ここでは、ログはLog serviceを経由したことによりJSON方式になっているため、Datadogカスタムログ形式で転送します。


設定値

logs:

- type: file
path: /datadog_log/nginx/access.log
service: myapp1
source: python

systemctl restart datadog-agent ※エージェント再起動

datadog-agent status


出力結果例(一部):

==========

Logs Agent
==========
python
 Type: file
 Path: /datadog_log/nginx/access.log
 Status: OK
 Inputs: /datadog_log/nginx/access.log


Datadog log Explorerの表示を確認する(表示まで数分かかる):




Alibaba Cloud クラウドサービスのメトリック情報連携構成

最後にクラウドサービスのメトリック情報(性能情報等)の連携を検討してみましたが、現状では独自プログラミングが必要になり、シンプルにはいけませんでした。特にDatadogはIntegration というAPIに対するクローラ機能があり、いずれPULL型のこちらがDatadog から提供される可能性もあります。

ただ、CloudMonitor のアラームサービスを使って、閾値超過した時点でDatadogにメールによるイベント情報の送信

することが可能です。

現状では独自プログラミングを避け、Datadog イベントでの検知/通知、内容はCloudMonitor 画面で確認することがシンプルかと思いますので、上記を踏まえ、Datadog Integration やAlibaba Cloud のFunctional Compute が整備されるまでは下記のような構成案を検討します。(本項では図中のDogStasD を用いる独自プログラミングについては割愛しています)


メトリック情報の送信構成


設定とDatadog での表示例

ここでは例として、ApsarraDB for RDS のディスク使用率が閾値超過した場合、Datadog のEvents にアラーム通知メールの内容を表示させてみます。

Datadog のアラームメール受信用Emailを作成する:



  • Datadogサイドメニュー の Integrations > APIsEvents API Emails 画面を表示する


  • Format: Plain text を選択し、Create API Email ボタンをクリックする

  • 作成されたEmailアドレスをメモする


CloudMonitor のアラーム送信先を設定する:




  • CloudMonitor 管理コンソールサイドメニューのアラームサービス > アラーム送信先をクリックする


  • アラーム送信先タブの送信先を作成 ボタンをクリックし、先ほどのDatadog Emailアドレスを記載する


  • 認証コードの送信 ボタンをクリックすると、受信側DatadogのEvents に「Your check code is xxxxxxx」を含むイベントが表示されるので、この情報をCloudMonitor認証コード入力欄 に記載し保存する


  • アラーム送信先グループ タブの任意のグループ(デフォルトグループ等)に既存の送信先ボックスに表示されているDatadogのアラーム送信先を追加する


ApsaraDB for RDS の監視設定を行う:




  • CloudMonitor 管理コンソールサイドメニューのクラウドサービスモニタリング > ApsaraDB for RDS をクリックする

  • 監視対象のRDSをクリックし、検証用にディスク使用率のアラームルールを、「閾値0%・アラーム再試行回数:1」に変更する


  • アラーム送信先欄のメール件名備考(本文に相当)に閾値超過を示す任意の文字を入力する。


Datadog Eventsに通知されたメール情報を確認する(監視間隔は5分のため5分後):


CloudMonitor がHTMLメールで、TEXT/JSON表示のメールのみ対応しているDatadog API Email ではわかりにくいため、現状ではタイトルを工夫する必要があります。



おわりに

ここまでお読みいただきありがとうございました。

Alibaba Cloud とDatadog と連携について、基本構成、ログ管理構成、クラウドサービスメトリック監視の3つの観点で検証してみました。

Datadogハイブリッド監視の現場で、Alibaba Cloud を加える運用において、ご参考になれば幸いです。