
★★★ 緊急告知 ★★★ Visual Studio Code,Docker,WSLを使ってWindows開発環境を改善するためのオンラインセミナーやります!Web+DB Press vol.117に寄稿した内容がベースで,イマドキのナウい開発環境を体感出来ます。 【2021/1/29(金) 19:00〜】WSL2、Visual Studio Code、DockerでグッとよくなるWindows開発環境 |
こんにちは。技術部の髙岡です。
前回のブログで、Azure内のLinuxサーバをZabbixから監視する方法を検証してみましたが、LinuxサーバであればZabbixエージェントをインストールすることができるので、わざわざスクリプトを作り込まなくても、CPU使用率等のリソース情報を取得して監視することが可能です。あまり、有り難みのない事例だったと思います。
ZabbixエージェントをインストールできないPaasやSaasのようなクラウドサービスを監視するのであれば、有り難みのある事例となるのではないかと思いました。
そこで、今回は、ZabbixエージェントをインストールできないAzure Load BalancerのリソースをZabbixから監視する事例を紹介します。
方式は前回のLinuxサーバの監視と同様で、Azure Monitorから監視メトリックの情報を取得するライブラリを使ったPythonスクリプトを実行して、Zabbixの外部チェック機能で取り込んで監視します。
Azure Load Balancerの任意の監視項目をAzure Monitorから取得するスクリプトを実行します。
例として、ByteCount(送信バイト数)を取得してZabbixで監視してみます。
目次
設定方法
前回のブログで記載した方法と同じ要領です。
Azure Load Balancerの送信バイト数を取得するPythonスクリプトの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#! /usr/bin/env python import datetime from azure.mgmt.monitor import MonitorManagementClient subscription_id = 'a2b379a4-5530-4d43-9360-b705cf560d75' resource_group_name = 'test-ttakaoka' # ロードバランサーのリソース名称を指定します。 vm_name = 'ttakaoka-lb-standard-test' resource_id = ( "subscriptions/{}/" "resourceGroups/{}/" "providers/Microsoft.Network/loadBalancers/{}" ).format(subscription_id, resource_group_name, vm_name) # サブスクリプション認証を使います。 from azure.common.credentials import ServicePrincipalCredentials # テナントIDを指定します。 TENANT_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # サービスプリンシパルのアプリケーションIDを指定します。 CLIENT = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # サービスプリンシパルのクライアントIDのパスワードを指定します。 KEY = 'xxxxxxxxx' credentials = ServicePrincipalCredentials( client_id = CLIENT, secret = KEY, tenant = TENANT_ID ) client = MonitorManagementClient( credentials, subscription_id ) today = datetime.datetime.now() nexttime = today - datetime.timedelta(minutes=1) metrics_data = client.metrics.list( resource_id, # 監視データを取得する期間を1分と指定します。 timespan="{}/{}".format(nexttime, today), # 監視項目を指定します。 # リソース毎に使用可能な監視項目 # https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/metrics-supported interval='PT1M', metricnames='ByteCount', # 1分間の合計を取得します。 aggregation='Count' ) for item in metrics_data.value: for timeserie in item.timeseries: for data in timeserie.data: print("{}".format(data.count)) |
このスクリプトを実行した結果です。
1 2 |
# ./azure-mon-lb.py 10 |
スクリプト実行で取得した送信バイト数をZabbixで監視する設定
前回のブログと同様に、Zabbixの外部チェック機能を活用します。
スクリプトを実行するホストがZabbixサーバ自身なのでIPアドレスとして「127.0.0.1」を指定しますが、
Zabbixが識別するホスト名としてはAzure上のリソースであることがわかるような名前「azure-lb-01」を指定します。
ホストの登録
監視アイテムの登録
AzureとZabbixでの監視結果の比較
Azure Monitorでの表示
Zabbixでの表示
ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!

>> 雑誌等の執筆依頼を受付しております。
ご希望の方はお気軽にお問い合わせください!
コメント投稿