跳转至

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 文件的 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
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://static.guance.com/datakit-operator/datakit-operator.yaml

执行安装指令

kubectl apply -f datakit-operator.yaml
  • Ingress 访问测试

Ingress-nginx-controller Service 的类型是 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

在 观测云 应用性能检测部分,可以看到 Ingress-nginx 链路数据正常上报

日志采集

DataKit 默认会采集容器的标准输出日志,无需额外配置采集。

指标

Ingress Nginx 指标位于 ingress-nginx 指标集下,这里主要介绍 Ingress Nginx 相关指标说明

指标 描述 数据类型 单位
nginx_ingress_controller_requests The total number of client requests int count
nginx_ingress_controller_nginx_process_connections current number of client connections with state int count
nginx_ingress_controller_success Cumulative number of Ingress controller reload operations int count
nginx_ingress_controller_config_last_reload_successful Whether the last configuration reload attempt was successful int count
nginx_ingress_controller_nginx_process_resident_memory_bytes number of bytes of memory in use float B
nginx_ingress_controller_nginx_process_cpu_seconds_total Cpu usage in seconds float B
nginx_process_resident_memory_bytes number of bytes of memory in use int B
nginx_ingress_controller_request_duration_seconds_bucket The request processing time in milliseconds int count
nginx_ingress_controller_request_size_sum The request length (including request line, header, and request body) int count
nginx_ingress_controller_response_size_sum The response length (including request line, header, and request body) int count
nginx_ingress_controller_ssl_expire_time_seconds Number of seconds since 1970 to the SSL Certificate expire int count

最佳实践

文档评价

文档内容是否对您有帮助? ×