コンテンツにスキップ

リソースカタログデータの報告

リソースカタログデータを報告するには、まず DataKit と DataFlux Func をインストールして接続し、DataFlux Func から DataKit にデータを報告し、最終的に DataKit がデータを Guance ワークスペースに報告します。

DataKit のインストール

Guance ワークスペースで、インテグレーション > DataKit の順にクリックし、DataKit のインストール方法を選択して、以下の情報を確認し、インストールコマンドをコピーしてホストで実行します。

コマンドラインターミナルツールを開き、ホストにログインして、コピーしたインストールコマンドを実行します。インストールが完了すると Install Success と表示されます。

DataKit の使用入門についてはこちら

DataFlux Func のインストール

Guance ワークスペースで、インテグレーション > 拡張 の順にクリックし、以下の手順に従ってコマンドラインターミナルツールで Func をインストールします。

1、携帯版をダウンロードします。

2、自動デプロイスクリプトでインストールします。

3、インストールが完了したら、ブラウザで http://サーバーIPアドレス:8088 にアクセスし、データベースを保存して初期化 をクリックして初期化します。

Func のインストールの詳細については、クイックスタート を参照してください。

DataFlux Func と DataKit の接続

DataFlux Func を使用して DataKit にデータを書き込む前に、まず接続が確立されていることを確認する必要があります。そのため、DataKit のインストールが完了したら、DataFlux Func が接続できるように設定を調整する必要があります。

  1. DataKit の設定を開きます:sudo vim /usr/local/datakit/conf.d/datakit.conf

  2. http_listen = "localhost:9529"http_listen = "0.0.0.0:9529" に変更します。

  3. DataKit を再起動します。

sudo datakit --restart

詳細については、DataKit への接続と操作 を参照してください。

リソースカタログデータの報告

DataFlux Func と DataKit が接続されたら、DataFlux Func で関数を作成してリソースカタログデータを報告できます。

DataFlux Func 関数呼び出しのインターフェース説明については、DataKit API を参照してください。

DataFlux Func が DataKit にデータを書き込む方法については、DataKit 経由でのデータ書き込み を参照してください。

サンプル説明

以下のサンプルでは、主に Alibaba Cloud 製品を例に、DataFlux Func を使用してリソースカタログデータを報告する方法を説明します。

前提条件:DataKit と DataFlux Func のインストールと接続が完了していること。

1、ブラウザで http://サーバーIPアドレス:8088 にアクセスし、ユーザー名とパスワードを入力します。初期化時に設定可能で、デフォルトは admin/admin です。

2、DataFlux Func にログインしたら、スクリプトエディター でスクリプトを追加できます。

3、DataFlux Func は Python でスクリプトを作成してデータを報告することをサポートしています。スクリプトを追加する前に、まず Alibaba Cloud の Python SDK をインストールする必要があります。

1) DataFlux Func で 管理 > 実験的機能 > PIP ツールモジュールを有効にする を選択します。

2) PIP ツール モジュールで、Alibaba Cloud Python SDK のウェブサイトを開き、aliyun-python-sdk-core をコピーしてインストールします。

4、Alibaba Cloud Python SDK のインストールが完了したら、スクリプトエディター > スクリプトセットを追加 をクリックします。

DataKit API ドキュメントに従って報告 API エンドポイントを取得し、DataFlux にデータを報告するスクリプトを作成します。Alibaba Cloud API ドキュメントに従って、Alibaba Cloud 製品の基本情報のフィールドを取得するスクリプトを作成します。

スクリプトの作成が完了したら、右上隅の 実行 をクリックして、コードが正常に実行されるかを確認できます。

スクリプトコードの参考例は以下の通りです。図の指示に従って関連部分を置き換えてください。

from aliyunsdkcore.request import CommonRequest
from aliyunsdkcore.client import AcsClient
import requests
import json
import time

# DF にデータをプッシュ
def pushdata(data):
    params = (
        ('token', 'tokn_bW47smmgQpoZxxxxxxx'),
    )
    response = requests.post('http://サーバーIPアドレス:9529/v1/write/custom_object', params=params, data=data)
    print(response.status_code, response.text)

# メイン関数
@DFF.API('custom_object')
def main():
    # 1. SDK の初期化
    client = AcsClient(
        'LTAI5t6d3sRh3xxxxxxxx',  # your-access-key-id
        'CHdrce2XtMyDAnYJxxxxxxxxxxxxxx',  # your-access-key-secret
        'cn-qingdao',  # your-region-id
    )
    request = CommonRequest()
    request.set_accept_format('json')
    request.set_domain('ecs.aliyuncs.com')
    request.set_method('POST')
    request.set_version('2014-05-26')
    request.set_action_name('DescribeInstances')
    request.add_query_param('RegionId', 'cn-qingdao')
    response = json.loads(client.do_action_with_exception(request))
    for i in response["Instances"]["Instance"]:
        data = ''' aliyun_ecs,name=%s,host=%s instanceid="%s",os="%s",status="%s",creat_time="%s",publicip="%s",regionid="%s",privateip="%s",cpu=%s,memory=%s %s''' %(
            i['HostName'], 
            i['InstanceId'], 
            i['InstanceId'], 
            i['OSType'],
            i['Status'], 
            i['CreationTime'], 
            i['PublicIpAddress']['IpAddress'],
            i['RegionId'], 
            i['NetworkInterfaces']['NetworkInterface'][0]['PrivateIpSets']['PrivateIpSet'][0]['PrivateIpAddress'],
            i['Cpu'],
            i['Memory'], 
            int(time.time()))
        print(data)
        pushdata(data)

5、DataFlux Func スクリプトの設定が完了して実行されると、Guance ワークスペースの インフラストラクチャ > カスタム で報告されたデータを確認できます。

6、スクリプトタスクを定期的に実行する必要がある場合は、DataFlux Func > 管理 > 自動トリガー設定 で定期的な報告タスクを作成できます。

フィードバック

このページは役に立ちましたか?