はじめに
くどうです。
今回はAzure Container Instances を利用してPrometheus 環境を構築する方法を説明していきます。
Container Instance 上で展開するメリットは一時的に展開して監視を行う場合です。
Containerを展開するのみなので、VMを立ち上げるより安易です。
あと、IaaSではないのでメンテナンスのさほどかからないですが費用面ではたぶん割高になると思います。
・・・Serverlessっぽくもありますね(白目
リクエスト
・DockerHubのアカウント
・Docker Imageを編集できる環境(ローカル、VMなど)
・DockerHub
・Azure Container Instances
・VM(監視対象)
注意事項はセキュリティです。
上記の手法ではIP:9100とIP:9090はフルオープンです。
監視対象
監視対象となるVM(ex:ubuntu)を立ち上げます。
node-exporterをインストールします。
$ sudo apt-get install prometheus-node-exporter
受信ポートに9100をanyで開けます。
グローバルIPを確認しておきます。
準備完了です。
Prometheus Container Imageを作成
Prometheus のContainer imageを作成します。
Prometheus のDocker ImageをBuildしようとすると下記のエラーが発生しました。
COPY failed: stat /var/lib/docker/tmp/docker-builder980145409/prometheus: no such file or directory
そこで、一度RunしてConfigを編集してCommitしてImageを作成しています。
$ sudo docker run prom/prometheus
$ sudo docker exec -it {コンテナID} sh
編集ファイル
/etc/prometheus/prometheus.yml
targetsに監視対象(グルーバルIP:9100)を追記します。
# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'.H3見出しa
# 下記に対象を追記します。 static_configs: - targets: ['localhost:9090' ,'52.191.xxx.xxx:9100']
対象をConfigに書き込んだらImageを取得しまします。
$ sudo docker commit {コンテナID} {image名(Dockerhubレポジトリと同じ名前)}
DockerHubにUploadします。
(事前に $sudo docker login が必要)
$ sudo docker push {image名}
以上で準備完了です。
次は、Container Instanceを展開します。
Container imageをAzure Container Instancesに展開
ポータルから展開します。
DockerHubのレポジトリを指定します。
以上で完了です。
しばらくするとアクセス出来るようになります。
しばらくするとグラフが確認できると思います。
まとめ
Container InstancesはDockerで利用できるものなら基本利用できるかと思います。
簡易環境の構築などにも利用できるのではないでしょうか。
再度書きますが注意事項はセキュリティです。
上記の手法ではIP:9100とIP:9090はフルオープンです。