Ingress Nginx (Prometheus)¶
Ingress Nginx (Prometheus) 関連のメトリクス、トレース、ログ情報を収集します
設定¶
前提条件¶
- DataKit がデプロイ済みであること。Kubernetes クラスタの <Datakit のインストール> を参照してください
- K8s 環境がデプロイ済みであること
- Ingress-nginx バージョン:1.9.6
Ingress-nginx サービスの ConfigMap リソースを設定する¶
- Ingress-nginx をインストールする Yaml ファイルに、以下の設定を追加します。
apiVersion: v1
data:
allow-snippet-annotations: "false"
enable-opentracing: "true"
opentracing-trust-incoming-span: "true"
datadog-collector-host: "datakit-service.datakit.svc.cluster.local"
datadog-collector-port: "9529"
datadog-service-name: "ingress-nginx"
datadog-environment: "testing"
datadog-operation-name-override: "HTTP $request_method $service_name $uri $opentelemetry_trace_id"
datadog-priority-sampling: "false"
datadog-sample-rate: "1.0"
kind: ConfigMap
metadata:
labels:
app.Kubernetes.io/component: controller
app.Kubernetes.io/instance: ingress-nginx
app.Kubernetes.io/name: ingress-nginx
app.Kubernetes.io/part-of: ingress-nginx
app.Kubernetes.io/version: 1.9.6
name: ingress-nginx-controller
namespace: ingress-nginx
- 以下のコマンドを実行して、この設定を適用します
収集器の設定¶
メトリクス収集¶
ConfigMap 方式で収集器設定を注入することで、KubernetesPrometheus 収集器の収集を有効にします
datakit.yamlファイルのConfigMapにkubernetesprometheus.confを追加します
apiVersion: v1
kind: ConfigMap
metadata:
name: datakit-conf
namespace: datakit
data:
kubernetesprometheus.conf: |-
[inputs.kubernetesprometheus]
[[inputs.kubernetesprometheus.instances]]
role = "pod"
#namespaces = ["ingress-nginx"]
scheme = "http"
#selector = "app=ingress-nginx"
port = "10254"
path = "/metrics"
node_local = "true"
[inputs.kubernetesprometheus.instances.custom]
measurement = "ingress-nginx"
[inputs.kubernetesprometheus.instances.custom.tags]
instance = "__Kubernetes_mate_instance"
host = "__Kubernetes_mate_host"
pod_name = "__Kubernetes_pod_name"
pod_namespace = "__Kubernetes_pod_namespace"
kubernetesprometheus.confを DataKit の/usr/local/datakit/conf.d/kubernetesprometheus/kubernetesprometheus.confにマウントします
- mountPath: /usr/local/datakit/conf.d/kubernetesprometheus/kubernetesprometheus.conf
name: datakit-conf
subPath: kubernetesprometheus.conf
- 以下のコマンドを実行して DataKit を再起動します
- Ingress-nginx-controller をインストールする設定ファイル
Ingress-nginx.yamlで、Service の type をNodePortに設定し、10254 ポートを外部公開します
以下のコマンドを実行して、Ingress-nginx サービスを再起動します
トレース収集¶
- DDTrace 収集器を有効にします
datakit.yaml ファイルを変更し、デフォルトで有効になっている収集器設定に DDtrace を追加します
- name: ENV_DEFAULT_ENABLED_INPUTS
value: cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container,ddtrace
- 以下のコマンドを実行して DataKit を再起動します
- DataKit Operator の Yaml ファイルをダウンロードします
インストールコマンドを実行します
- Ingress アクセステスト
Ingress-nginx-controller Service の type は NodePort で、80 ポートを 30796 ポートにマッピングします(説明:192.168.0.5 は Ingress-nginx Pod が動作しているノード IP です)
curl -H "Host:service.com" http://192.168.0.5:30796/service-a/api/a
Service-A received: Hello from Service-B
Guance のアプリケーション性能監視の画面で、Ingress-nginx のトレースデータが正常に報告されていることを確認できます
ログ収集¶
DataKit はデフォルトでコンテナの標準出力ログを収集するため、追加の収集設定は不要です。
メトリクス¶
Ingress Nginx のメトリクスは ingress-nginx メトリクスセットにあります。ここでは主に Ingress Nginx 関連メトリクスの説明を紹介します
| 指標 | 説明 | データ型 | 単位 |
|---|---|---|---|
| nginx_ingress_controller_requests | クライアントリクエストの総数 | int | count |
| nginx_ingress_controller_nginx_process_connections | 状態 {active, reading, writing, waiting} のクライアント接続数 | int | count |
| nginx_ingress_controller_success | Ingress controller の再読み込み操作の累積回数 | int | count |
| nginx_ingress_controller_config_last_reload_successful | 最後の設定再読み込みが成功したかどうか | int | count |
| nginx_ingress_controller_nginx_process_resident_memory_bytes | 使用中メモリのバイト数 | float | B |
| nginx_ingress_controller_nginx_process_cpu_seconds_total | CPU 使用時間(秒) | float | B |
| nginx_process_resident_memory_bytes | 使用中メモリのバイト数 | int | B |
| nginx_ingress_controller_request_duration_seconds_bucket | リクエスト処理時間(ミリ秒) | int | count |
| nginx_ingress_controller_request_size_sum | リクエスト長(リクエストライン、ヘッダー、リクエストボディを含む) | int | count |
| nginx_ingress_controller_response_size_sum | レスポンス長(リクエストライン、ヘッダー、リクエストボディを含む) | int | count |
| nginx_ingress_controller_ssl_expire_time_seconds | 1970 年から SSL 証明書の有効期限までの秒数 | int | count |