はじめに
先日、システムの状況を観測するオブザーバビリティソリューションが提供開始されました。
オブザーバビリティソリューションは、AWS でのインフラストラクチャとアプリケーションの監視を迅速に立ち上げて実行するのに役立ちます。これらは、AWS サービス、カスタムアプリケーション、サードパーティーのワークロードを監視するための最適なオプションについて、意見に基づいたガイダンスを必要とする開発者を対象としています。オブザーバビリティソリューションには、インストルメンテーション、テレメトリ収集、カスタムダッシュボード、メトリックアラームの実施例が含まれます。
実際に機能を有効にして内容をみてみましょう。
使ってみる
公式のチュートリアルに沿って構築します。手順はチュートリアル通りですので、ポイントとなる部分のみ補足します。
- 環境
Amazon Linux release 2023
NGINXメトリクスの公開設定
チュートリアルに沿ってステータスエンドポイントの設定を追記しましょう。
Prometheus メトリクスエクスポーター設定
Prometheusエクスポーターは2025年1月現在v1.4.1が公開されていますので、新しいバージョンでコマンドを置き換えると良いでしょう。
wget https://github.com/nginx/nginx-prometheus-exporter/releases/download/v1.4.1/nginx-prometheus-exporter_1.4.1_linux_amd64.tar.gz
ロール設定
AWS管理ロールである以下の権限相当がインスタンスに付与されていることを確認します。
- AmazonEC2ReadOnlyAccess
- AmazonSSMManagedInstanceCore
- CloudWatchAgentServerPolicy
CloudWatchエージェント設定
CloudWatchエージェントインストール
CloudWatchエージェントは初期状態ではインストールされていないので、インストールします。
sudo dnf install amazon-cloudwatch-agent
パラメータ設定
サンプルを参照し、CloudWatchエージェント設定ファイル、Prometheus設定ファイルをそれぞれ作成し、AWS Systems Managerのパラメータストアに配置します。
- CloudWatchエージェント設定ファイル(パラメータ名:AmazonCloudWatch-NGINX-CloudWatchAgent-Configuration)
{ "agent": { "metrics_collection_interval": 60 }, "logs": { "metrics_collected": { "prometheus": { "log_group_name": "nginx", "prometheus_config_path": "/opt/aws/amazon-cloudwatch-agent/etc/prometheus.yaml", "emf_processor": { "metric_declaration_dedup": true, "metric_namespace": "CWAgent", "metric_declaration":[ { "source_labels":["InstanceId"], "metric_selectors":["nginx_up", "nginx_http_requests_total", "nginx_connections*"], "dimensions": [["InstanceId"]] } ] } } } } }
- Prometheus設定ファイル(パラメータ名:NGINX-Prometheus-Configuration)
global: scrape_interval: 30s scrape_timeout: 10s scrape_configs: - job_name: 'nginx' metrics_path: /metrics static_configs: - targets: ['localhost:9113'] ec2_sd_configs: - port: 9113 relabel_configs: - source_labels: ['__meta_ec2_instance_id'] target_label: InstanceId metric_relabel_configs: - source_labels: ['__name__'] regex: 'nginx_up|nginx_http_requests_total|nginx_connections_.*' action: keep
CloudFormationで展開
CloudFormationでエージェント設定を展開します。パラメータ設定項には以下の内容を設定します。
パラメータ | 内容 |
---|---|
CloudWatchAgentConfigSSM | パラメータ設定項で設定したパラメータ(AmazonCloudWatch-NGINX-CloudWatchAgent-Configuration) |
InstanceIds | モニター対象インスタンスID |
PrometheusConfigSSM | パラメータ設定項で設定したパラメータ(NGINX-Prometheus-Configuration) |
ダッシュボードのデプロイ
「CloudWatch」→「利用開始」を押下します。
「オブザーバビリティソリューション - 新規」→「今すぐ始める」を押下します。
オブザーバビリティソリューションの中から「NGINX」を選択します。内容を確認し、「in CloudFormation」を押下し、ダッシュボードを作成します。
スタック作成時のパラメータ項にDashboardNameParameterとしてダッシュボードの名前を設定できるので、必要に応じて変更します。
動作確認
「CloudWatch」→「Dashboards」→「NginxDashboard(デフォルトの場合)」を押下します。NGINXのメトリクスが反映されていることを確認します。
おわりに
公式のテンプレートが用意されたことで、メトリクスの可視化が簡単になったと思います。活用していきましょう。