I'm indexing directly into ES.
Config is very close to the default, just because it works without problems (at the start). However, here's a sample config from a live host.
Please also note the shards/indices list below the config!
###################### Metricbeat Configuration Example #######################
#========================== Modules configuration ============================
metricbeat.config.modules:
# Glob pattern for configuration loading
path: ${path.config}/modules.d/*.yml
# Set to true to enable config reloading
reload.enabled: false
# Period on which files under path should be checked for changes
#reload.period: 10s
#==================== Elasticsearch template setting ==========================
setup.template.settings:
index.number_of_shards: 1
index.codec: best_compression
#_source.enabled: false
#================================ General =====================================
# The name of the shipper that publishes the network data. It can be used to group
# all the transactions sent by a single shipper in the web interface.
#name:
# The tags of the shipper are included in their own field with each
# transaction published.
#tags: ["service-X", "web-tier"]
# Optional fields that you can specify to add additional information to the
# output.
#fields:
# env: staging
#============================== Dashboards =====================================
# These settings control loading the sample dashboards to the Kibana index. Loading
# the dashboards is disabled by default and can be enabled either by setting the
# options here, or by using the `-setup` CLI flag or the `setup` command.
#setup.dashboards.enabled: false
# The URL from where to download the dashboards archive. By default this URL
# has a value which is computed based on the Beat name and version. For released
# versions, this URL points to the dashboard archive on the artifacts.elastic.co
# website.
#setup.dashboards.url:
#============================== 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:5601"
# Kibana Space ID
# ID of the Kibana Space into which the dashboards should be loaded. By default,
# the Default Space will be used.
#space.id:
#================================ Outputs =====================================
# Configure what output to use when sending the data collected by the beat.
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["192.168.0.195:9200"]
# Enabled ilm (beta) to use index lifecycle management instead daily indices.
#ilm.enabled: false
# Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"
#----------------------------- Logstash output --------------------------------
#output.logstash:
# The Logstash hosts
#hosts: ["localhost:5044"]
# Optional SSL. By default is off.
# List of root certificates for HTTPS server verifications
#ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
# Certificate for SSL client authentication
#ssl.certificate: "/etc/pki/client/cert.pem"
# Client Certificate Key
#ssl.key: "/etc/pki/client/cert.key"
#================================ Processors =====================================
# Configure processors to enhance or manipulate events generated by the beat.
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
#================================ Logging =====================================
# Sets log level. The default log level is info.
# Available log levels are: error, warning, info, debug
#logging.level: debug
# At debug level, you can selectively enable logging only for some components.
# To enable all selectors use ["*"]. Examples of other selectors are "beat",
# "publish", "service".
#logging.selectors: ["*"]
Here's a snippet of the _cat/indices?v list - every host is creating an index each day, which seems to be not the best solution. However, I dunno what's the best solution here... One big index of all hosts per year? One index per week of all hosts?
The output of each metricbeat host is the same - system metrics. So technically it seems to be useful to put all data in one index, but I couldn't find a simple answer to this simple question
yellow open metricbeat-6.4.0-2019.03.17 6Sc5wLadSHO1CrX7KbRecQ 1 1 441585 0 73.5mb 73.5mb
yellow open metricbeat-6.6.2-2019.04.02 MnLxvzQPRYuKRVZUUhIS_A 1 1 545701 0 115.8mb 115.8mb
yellow open metricbeat-6.4.0-2018.11.05 e-kxrEOeSHmlBGsVpKJFog 1 1 6776060 0 1.1gb 1.1gb
yellow open metricbeat-6.5.1-2018.12.23 SJE2H_kMSq-XsnrMheNFDg 1 1 196861 0 33.5mb 33.5mb
yellow open metricbeat-6.5.0-2019.01.07 NzQs3oJqQo-Lr16wJDRMzQ 1 1 1022098 0 163.1mb 163.1mb
yellow open metricbeat-6.4.0-2018.10.29 NOPk3ZLXQLizufAHZOm7yA 1 1 6734894 0 1gb 1gb
yellow open metricbeat-6.2.4-2018.10.14 vNKq-LGOQp-ETrzn8a2MUg 1 1 609153 0 135.8mb 135.8mb
yellow open metricbeat-6.2.4-2019.03.06 wP8i1oQbSl2NDts_2mPIMA 1 1 530253 0 123.9mb 123.9mb
In my case, I just want an overview of system metrics of my whole setup. I have a grafana and kibana dashboard made by myself to monitor the values I need, which works perfectly (but the performance).
Until ES6 I used elasticsearch-curator to cleanup metrics older than 180 days, which isn't working anymore in ES7. That's why I try to save the data in an appropriate way.
If possible, I'd like to store data 5 years, however, actually I'm working with 180days so far, but I'd like to expand the time span.
Actually I have 300gb in use. There are ~1,2tb raid5 ssd space usable.