Невозможно получить нормированный процент использования ЦП с помощью упругого поиска и метрического измерения. - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь получить нормализованный процент использования ЦП с помощью запроса ниже.

curl -H "Content-Type: application/json" -X POST  http://localhost:12001/metricbeat*/_search?pretty=true -d '{"query":{"bool":{"must": [{"range": {"system.cpu.total.norm.pct": {"gte": 0.1}}},{"range": {"@timestamp": {"gte": "now-10m","lte": "now/m"}}}]}}}'

Я хочу нормализованный процент за последние 10 минут, но я не получаю никаких данных.Ниже приведен ответ.

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 8,
    "successful" : 8,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}

Тем не менее, если я запрашиваю эластичный поиск с " system.cpu.total.pct ", я получаю данные.Кроме того, я обновил конфигурацию для «CPU» с помощью « cpu.metrics: [« процентные доли »,« normalized_percentages »,« галочки »] ».

Может кто-нибудь сообщить мне, почему нормализованный запросне работает?

Ниже представлена ​​моя конфигурация metricbeat.reference.yml.

module: system
  metricsets:
    - cpu             # CPU usage
    - load            # CPU load averages
    - memory          # Memory usage
    - network         # Network IO
    - process         # Per process metrics
    - process_summary # Process summary
    - uptime          # System Uptime
    - core           # Per CPU core usage
    #- diskio         # Disk IO
    - filesystem     # File system usage for each mountpoint
    #- fsstat         # File system summary metrics
    #- raid           # Raid
    #- socket         # Sockets and connection info (linux only)
  enabled: true
  period: 10s
  processes: ['.*']

  # Configure the metric types that are included by these metricsets.
  cpu.metrics:  ["percentages", "normalized_percentages", "ticks"]  # The other available options are normalized_percentages and ticks.
  core.metrics: ["percentages"]  # The other available option is ticks.

Модуль Elasticsearch:

module: elasticsearch
  metricsets:
    - node
    - node_stats
    #- index
    #- index_recovery
    #- index_summary
    #- shard
    #- ml_job
  period: 10s
  hosts: ["localhost:8881"]

Я включил kibana в качестве выходного хоста:

# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  host: "localhost:8882"

1 Ответ

1 голос
/ 16 апреля 2019

Какую версию метрики вы используете? system.cpu.total.norm.pct является относительно новым полем и отсутствует в старых версиях metricsbeat. Это может быть поле system.cpu.total.norm.pct, которое не является частью показателя метрики, или условие, когда system.cpu.total.norm.pct больше 0,1, не заполняется полностью.

Если вы хотите извлечь только одно поле, оно должно быть частью раздела include в _source, а не само условие, как показано ниже

curl -H "Content-Type: application/json" -X POST  http://localhost:12001/metricbeat*/_search?pretty=true -d '{ "_source": {"includes": [ "system.cpu.total.norm.pct"]},"query":{"bool":{"must": [{"range": {"@timestamp": {"gte": "now-10m","lte": "now/m"}}}]}}}'

Пояснения к конфигурации модулей metricsbeat

Поскольку произошли изменения в metricbeat.reference.yml, позвольте мне объяснить, как metricsbeat читает конфиги для модулей ввода.

Metricsbeat по умолчанию читает metricbeat.yml.

В этом файле первый раздел - metricbeat.config.modules, который определяет все входные модули, которые он должен использовать

metricbeat.config.modules:
  # Glob pattern for configuration loading
  path: ${path.config}/modules.d/*.yml

, поэтому он включает все файлы в каталоге modules.d и имеет суффикс yml.

По умолчанию активен только system.yml, а для других файлов расширение отключено, поэтому они не являются частью активных модулей

modules.d/aerospike.yml.disabled
modules.d/apache.yml.disabled
modules.d/ceph.yml.disabled
modules.d/couchbase.yml.disabled
modules.d/docker.yml.disabled
modules.d/dropwizard.yml.disabled
modules.d/elasticsearch.yml.disabled
modules.d/envoyproxy.yml.disabled
modules.d/etcd.yml.disabled
modules.d/golang.yml.disabled
modules.d/graphite.yml.disabled
modules.d/haproxy.yml.disabled
modules.d/http.yml.disabled
modules.d/jolokia.yml.disabled
modules.d/kafka.yml.disabled
modules.d/kibana.yml.disabled
modules.d/kubernetes.yml.disabled
modules.d/kvm.yml.disabled
modules.d/logstash.yml.disabled
modules.d/memcached.yml.disabled
modules.d/mongodb.yml.disabled
modules.d/munin.yml.disabled
modules.d/mysql.yml.disabled
modules.d/nginx.yml.disabled
modules.d/php_fpm.yml.disabled
modules.d/postgresql.yml.disabled
modules.d/prometheus.yml.disabled
modules.d/rabbitmq.yml.disabled
modules.d/redis.yml.disabled
modules.d/system.yml
modules.d/traefik.yml.disabled
modules.d/uwsgi.yml.disabled
modules.d/vsphere.yml.disabled
modules.d/windows.yml.disabled
modules.d/zookeeper.yml.disabled

Как видите, только system.yml не имеет расширения .disabled и соответствует условию включаемого модуля path: ${path.config}/modules.d/*.yml, поэтому он включен.

Вы можете перечислить все включенные и отключенные модули, запустив ниже commnad

$ ./metricbeat modules list
Enabled:
system

Disabled:
aerospike
apache
ceph
couchbase
docker
dropwizard
elasticsearch
envoyproxy
etcd
golang
graphite
haproxy
http
jolokia
kafka
kibana
kubernetes
kvm
logstash
memcached
mongodb
munin
mysql
nginx
php_fpm
postgresql
prometheus
rabbitmq
redis
traefik
uwsgi
vsphere
windows
zookeeper

и измените активный, чтобы отключить и отключить, выполнив команду, такую ​​как ниже

$ ./metricbeat modules
Manage configured modules

Usage:
  metricbeat modules [command]

Available Commands:
  disable     Disable one or more given modules
  enable      Enable one or more given modules
  list        List modules

Flags:
  -h, --help   help for modules

Global Flags:
  -E, --E setting=value      Configuration overwrite
  -c, --c string             Configuration file, relative to path.config (default "metricbeat.yml")
  -d, --d string             Enable certain debug selectors
  -e, --e                    Log to stderr and disable syslog/file output
      --path.config string   Configuration path
      --path.data string     Data path
      --path.home string     Home path
      --path.logs string     Logs path
      --plugin pluginList    Load additional plugins
      --strict.perms         Strict permission checking on config files (default true)
  -v, --v                    Log at INFO level

Так что, если вы хотите включить модуль kafka, это можно сделать, как показано ниже

$ ./metricbeat modules enable kafka
Enabled kafka

и затем проверьте, активен ли он

$ ./metricbeat modules list
Enabled:
kafka
system

Disabled:
aerospike
apache
ceph
couchbase
docker
dropwizard
elasticsearch
envoyproxy
etcd
golang
graphite
haproxy
http
jolokia
kibana
kubernetes
kvm
logstash
memcached
mongodb
munin
mysql
nginx
php_fpm
postgresql
prometheus
rabbitmq
redis
traefik
uwsgi
vsphere
windows
zookeeper

Как только вы запустите указанную выше команду, она переименует файл modules.d/kafka.yml.disabled в modules.d/kafka.yml, и вы сможете обновить измененные конфигурации, имеющиеся в modules.d/kafka.yml

Я надеюсь, что это объяснение поможет изменить конфигурации метрических битов.

...