【PowerShell】Powershellの起動時にログを生成するショートカット作成
はじめに
Cloud Monitorとは中国のクラウドサービスでであるAlibaba Cloudを監視するサービスです。 AWSでいうとCloudWatchと同様のサービスです。 ZabbixとCloud MonitorのAPIと連携することで、Zabbix画面上でAlibaba Cloudサービスを監視することができます。 今回はCloud MonitorのAPIを連携するためのスクリプトについて説明します。 最低限必要な情報のみ記載してないため、追加で監視したい場合は適宜追加してください。
事前準備
- Zabbix構築済み。
- Cloud Monitor にてサービスを監視済み。
- Cloud Monitor の権限があるRAMロールを作成済み。
Cloud Monitor API連携スクリプト
#! /usr/bin/env python3 #coding=utf-8 # Alibaba Cloudのモジュールのインポート from aliyunsdkcore.client import AcsClient from aliyunsdkcms.request.v20190101.DescribeMetricListRequest import DescribeMetricListRequest import json # 監視対象 accessKeyId = 'accessKeyId' accessSecretKey = 'accessSecretKey' region = 'region' instanceId = 'instanceId' # 監視対象の取得 client = AcsClient(accessKeyId, accessSecretKey, region) #### Cloud Monitor にリクエスト request = DescribeMetricListRequest() request.set_Dimensions("{'instanceId': '" + instanceId + "'}") request.set_accept_format('json') # 監視対象サービス request.set_Namespace('acs_vpn') request.set_MetricName('net_rx.rate') # リクエスト取得 response = client.do_action_with_exception(request) # 監視項目の値を加工 Datapoint = json.loads(json.loads(response)["Datapoints"])[-1] DatapointValue = Datapoint["Value"] print(DatapointValue)
上記を作成し、Zabbixの外部スクリプト連携を行うとZabbixで監視することができます。 Zabbixの外部スクリプトのせっていについては、別の機会に説明したいと思います。 以下に、スクリプトの詳細な説明を記載します。
Alibaba Cloudのモジュールのインポート
from aliyunsdkcore.client import AcsClient from aliyunsdkcms.request.v20190101.DescribeMetricListRequest import DescribeMetricListRequest
Cloud Monitor と連携するために必要なモジュール群です。環境によってはpip3 install
でモジュールをインストールしてください。
また、 v20190101となっているように、バージョンによってはモジュールが動作しない可能性があり、頻繁に変わると思われます。
監視対象
accessKeyId = 'accessKeyId' accessSecretKey = 'accessSecretKey' region = 'region' instanceId = 'instanceId'
事前に作成したRAMユーザーのアクセスキーとシークレットキーを記載してください。 また、監視対象のリージョンのインスタンスIDを記載してください。
⃣Cloud Monitor にリクエストする値の設定
request = DescribeMetricListRequest() request.set_Dimensions("{'instanceId': '" + instanceId + "'}") request.set_accept_format('json')
- DescribeMetricListRequest() Cloud Monitor にリクエストする値を設定します。
- request.set_Dimensions() 監視インスタンスのIDを設定
- request.set_accept_format() フォーマットを指定。デフォルトでJSONで取得します。
Cloud Monitor にリクエストする値の設定(監視対象サービスとメトリック)
request.set_Namespace('acs_vpn') request.set_MetricName('net_rx.rate')
- request.set_Namespace() こちらで監視サービスを設定します。スクリプトの例ではVPN GateWayです。 対象がECSの場合はacs_vpnがacs_ecsになります。
- request.set_MetricName()
こちらで監視メトリックを設定します。サンプルでは受信の帯域幅を取得しています。
サービスにより様々な値があります。
監視サービスと監視メトリックが変更する場合はこちらの値を、適宜変更します。
リクエスト取得
response = client.do_action_with_exception(request)
上記で、設定した値でCloud Monitor から値を取得します。
監視項目の値を加工
Datapoint = json.loads(json.loads(response)["Datapoints"])[-1] DatapointValue = Datapoint["Value"] print(DatapointValue)
リクエストした値には様々な値が格納されているためDatapointsのみ出力し、[-1]で最新の値のみを取得している。
また、["Value"]のみ取得し、printで出力する。
さいごに
上記のスクリプトをZabbixの外部スクリプト連携にて、監視するとスクリプトの値を監視することができます。