コンテンツにスキップ

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
  • 以下のコマンドを実行して、この設定を適用します
kuebctl apply -f ingress-nginx.yaml

収集器の設定

メトリクス収集

ConfigMap 方式で収集器設定を注入することで、KubernetesPrometheus 収集器の収集を有効にします

  • datakit.yaml ファイルの ConfigMapkubernetesprometheus.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 を再起動します
kubectl delete -f datakit.yaml
kubectl apply -f datakit.yaml
  • Ingress-nginx-controller をインストールする設定ファイル Ingress-nginx.yaml で、Service の type を NodePort に設定し、10254 ポートを外部公開します
spec:
  type: NodePort
......
    - name: prometheus
      port: 10254
      targetPort: prometheus

以下のコマンドを実行して、Ingress-nginx サービスを再起動します

kuebctl apply -f ingress-nginx.yaml

トレース収集

  • DDTrace 収集器を有効にします

datakit.yaml ファイルを変更し、デフォルトで有効になっている収集器設定に DDtrace を追加します

 - name: ENV_DEFAULT_ENABLED_INPUTS
   value: cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container,ddtrace
  • 以下のコマンドを実行して DataKit を再起動します
kubectl delete -f datakit.yaml
kubectl apply -f datakit.yaml
  • DataKit Operator の Yaml ファイルをダウンロードします
wget https://guance.com/datakit-operator/datakit-operator.yaml

インストールコマンドを実行します

kubectl apply -f 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

ベストプラクティス

フィードバック

このページは役に立ちましたか?