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 的类型是 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 |