disabled: no name: 'kubernetes' discover: - discoverer: k8s k8s: - tags: unknown role: pod pod: local_mode: yes classify: - name: "Control-Plane" selector: unknown tags: -unknown control_plane match: - tags: kube_scheduler expr: '{{ glob .Image "k8s.gcr.io/kube-scheduler:*" }}' - tags: kube_controller_manager expr: '{{ glob .Image "k8s.gcr.io/kube-controller-manager:*" }}' - name: "Applications" selector: unknown tags: -unknown applications match: - tags: activemq expr: '{{ and (eq .Port "8161") (glob .Image "*/activemq*") }}' - tags: apache expr: '{{ and (eq .Port "80" "8080") (glob .Image "httpd*" "*/httpd*") }}' - tags: bind expr: '{{ and (eq .Port "8653") (glob .Image "*/bind*") }}' - tags: cockroachdb expr: '{{ and (eq .Port "8080") (glob .Image "*/cockroach*") }}' - tags: consul expr: '{{ and (eq .Port "8500") (glob .Image "consul*" "*/consul*") }}' - tags: coredns expr: '{{ and (eq .Port "9153") (glob .Image "*/coredns*") }}' - tags: elasticsearch expr: '{{ and (eq .Port "9200") (glob .Image "elasticsearch:*" "*/elasticsearch:*") }}' - tags: fluentd expr: '{{ and (eq .Port "24220") (glob .Image "fluentd*" "*/fluentd*") }}' - tags: freeradius expr: '{{ and (eq .Port "18121") (glob .Image "*/freeradius*") }}' - tags: hdfs expr: '{{ and (eq .Port "50070") (glob .Image "*/hdfs*") }}' - tags: lighttpd expr: '{{ and (eq .Port "80" "8080") (glob .Image "*/lighttpd*") }}' - tags: logstash expr: '{{ and (eq .Port "9600") (glob .Image "logstash*" "*/logstash*") }}' - tags: mysql expr: '{{ and (eq .Port "3306") (glob .Image "mysql*" "*/mysql*" "mariadb*" "*/mariadb*") }}' - tags: nginx expr: '{{ and (eq .Port "80" "8080") (glob .Image "nginx*" "*/nginx*") }}' - tags: openvpn expr: '{{ and (eq .Port "7505") (glob .Image "*/openvpn") }}' - tags: phpfpm expr: '{{ and (eq .Port "80" "8080") (glob .Image "*/phpfpm*" "*/php-fpm*") }}' - tags: rabbitmq expr: '{{ and (eq .Port "15672") (glob .Image "rabbitmq*" "*/rabbitmq*") }}' - tags: solr expr: '{{ and (eq .Port "8983") (glob .Image "solr*" "*/solr*") }}' - tags: tengine expr: '{{ and (eq .Port "80" "8080") (glob .Image "*/tengine*") }}' - tags: unbound expr: '{{ and (eq .Port "8953") (glob .Image "*/unbound*") }}' - tags: vernemq expr: '{{ and (eq .Port "8888") (glob .Image "*/vernemq*") }}' - tags: zookeeper expr: '{{ and (eq .Port "2181") (glob .Image "zookeeper*" "*/zookeeper*") }}' - tags: consul_envoy expr: | {{ $imageOK := glob .Image "*/consul-dataplane*" -}} {{ $scrapeOK := eq (get .Annotations "prometheus.io/scrape") "true" -}} {{ $promPort := get .Annotations "prometheus.io/port" -}} {{ $portOK1 := and (eq .Port $promPort) (not (empty .Port)) -}} {{ $portOK2 := and (empty .Port) (not (empty $promPort)) -}} {{ and $imageOK $scrapeOK (or $portOK1 $portOK2) }} - name: "Prometheus Generic Applications" selector: unknown tags: -unknown prometheus_generic match: - tags: prometheus_generic expr: | {{ $scrapeOK := eq (get .Annotations "prometheus.io/scrape") "true" -}} {{ $portOK := eq (default .Port (get .Annotations "prometheus.io/port")) .Port -}} {{ $imageOK := not (glob .Image "netdata/netdata*" "*pulsar*" "*telegraf*") -}} {{ and $scrapeOK $portOK $imageOK }} compose: - name: "Control-Plane" selector: '!unknown control_plane' config: - selector: kube_scheduler template: | - module: prometheus name: prometheus-{{.TUID}} url: http://{{.PodIP}}:{{default "10251" .Port}}/metrics app: '{{.ContName}}' update_every: 10 max_time_series: 1000 - selector: kube_controller_manager template: | - module: prometheus name: prometheus-{{.TUID}} url: http://{{.PodIP}}:{{default "10252" .Port}}/metrics app: '{{.ContName}}' update_every: 10 max_time_series: 2000 - name: "Prometheus Generic Applications" selector: '!unknown prometheus_generic' config: - selector: prometheus_generic template: | {{ $path := default "/metrics" (get .Annotations "prometheus.io/path") -}} - module: prometheus name: prometheus-{{.TUID}} url: http://{{.Address}}{{$path}} app: '{{.ContName}}' update_every: 10 max_time_series: 4000 - name: "Applications" selector: '!unknown applications' tags: file config: - selector: activemq template: | - module: activemq name: activemq-{{.TUID}} url: http://{{.Address}} - selector: apache template: | - module: apache name: apache-{{.TUID}} url: http://{{.Address}}/server-status?auto - selector: bind template: | - module: bind name: bind-{{.TUID}} url: http://{{.Address}}/json/v1 - selector: cockroachdb template: | - module: cockroachdb name: cockroachdb-{{.TUID}} url: http://{{.Address}}/_status/vars - selector: consul template: | - module: consul name: consul-{{.TUID}} url: http://{{.Address}} - selector: coredns template: | - module: coredns name: coredns-{{.TUID}} url: http://{{.Address}}/metrics - selector: elasticsearch template: | - module: elasticsearch name: elasticsearch-{{.TUID}} url: http://{{.Address}} - selector: consul_envoy template: | {{ $path := default "/metrics" (get .Annotations "prometheus.io/path") -}} {{ $promPort := get .Annotations "prometheus.io/port" -}} {{ $port := ternary .Port $promPort (not (empty .Port)) -}} - module: envoy name: {{.TUID}} url: http://{{ .PodIP }}:{{ $port }}{{ $path }} - selector: fluentd template: | - module: fluentd name: fluentd-{{.TUID}} url: http://{{.Address}} - selector: freeradius template: | - module: freeradius name: freeradius-{{.TUID}} address: {{.PodIP}} port: {{.Port}} - selector: hdfs template: | - module: hdfs name: hdfs-{{.TUID}} url: http://{{.Address}}/jmx - selector: lighttpd template: | - module: lighttpd name: lighttpd-{{.TUID}} url: http://{{.Address}}/server-status?auto - selector: logstash template: | - module: logstash name: logstash-{{.TUID}} url: http://{{.Address}} - selector: mysql template: | - module: mysql name: mysql-{{.TUID}} dsn: 'netdata@tcp({{.Address}})/' - selector: nginx template: | - module: nginx name: nginx-{{.TUID}} url: http://{{.Address}}/stub_status - selector: openvpn template: | - module: openvpn name: openvpn-{{.TUID}} address: {{.Address}} - selector: phpfpm template: | - module: phpfpm name: phpfpm-{{.TUID}} url: http://{{.Address}}/status?full&json - selector: rabbitmq template: | - module: rabbitmq name: rabbitmq-{{.TUID}} url: http://{{.Address}} - selector: solr template: | - module: solr name: solr-{{.TUID}} url: http://{{.Address}} - selector: tengine template: | - module: tengine name: tengine-{{.TUID}} url: http://{{.Address}}/us - selector: unbound template: | - module: unbound name: unbound-{{.TUID}} address: {{.Address}} use_tls: false - selector: vernemq template: | - module: vernemq name: vernemq-{{.TUID}} url: http://{{.Address}}/metrics - selector: zookeeper template: | - module: zookeeper name: zookeeper-{{.TUID}} address: {{.Address}}