收集配置
静态方式:
Prometheus 通过 static_configs 来配置监控对象,这种情况下监控的目标 IP、Port、Metrics URI 都是固定的。
scrape_configsjob_name'node_exporter' static_configstargets'172.20.1.101:9100'
动态方式:
Prometheus 结合服务发现来实现,被监控对象先在注册中心进行服务注册,而后 Prometheus 直接去注册中心进行获取被监控信息。
基于文件的形式:
scrape_configsjob_name'node_exporter' file_sd_configsfilestarget/node_exporter.yml refresh_interval1m cat target/node_exporter.yml targets172.20.1.101:9100 172.20.1.102:9100 172.20.1.103:9100 labels exporternode_exporter appkubernetes
基于 Consul 的方式
scrape_configsjob_namenode_exporter consul_sd_configsserverconsul-service8500 refresh_interval1m services relabel_configssource_labels__meta_consul_tags regex.*node-exporter.* actionkeep
服务注册
curl-X PUT -d'{"id": "node-exporter","name": "node-exporter-172.20.31.195","address": "172.20.31.195","port": 9100,"tags": ["node-exporter"],"checks": [{"http": "http://172.20.31.195:9100/metrics", "interval": "10s"}]}' http://consul:8500/v1/agent/service/register
服务注销
curl-X PUT http://consul:8500/v1/agent/service/deregister/node-exporter
基于 DNS 的方式
scrape_configsjob_name'node-exporter-dns' dns_sd_configsnames"node1.example.com" typeA port9100
基于 Kubernetes 的方式
job_name'kubernetes-nodes' tls_config ca_file/var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file/var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configsrolenode job_name'kubernetes-ingress' tls_config ca_file/var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file/var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configsroleingress job_name'kubernetes-endpoints' tls_config ca_file/var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file/var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configsroleendpoints job_name'kubernetes-service' tls_config ca_file/var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file/var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configsroleservice job_name'kubernetes-pod' tls_config ca_file/var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file/var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configsrolepod
但结果确不是预想中的,因为不是每一个被监控对象都支持被 Prometheus 采集 /metrics 。
