[Question] Best tool to collect System Metrics?


Hi all,

I have been doing research on the best way to monitor our system.
Till now, I have used many tools to monitor the system. I found 2 the most useful,

1 - Netdata
2 - Collectd

As these both can write data to influxdb also, and can be viewed via Grafana.
I can also monitor my Nginx Server by these tools. Also , I can monitor Redis, Postgres and Logs via Netdata.
I have also used Telegraf, but I think these 2 have an edge over telegraf.

I want to know that what other tools are there which I can use to collect system Metrics ?
Also, Is using Influxdb with Grafana gives the best performance ? OR should I use any other data store, like Graphite and OPENtsdb ?

I know this question depends on what is my requirement, and also some people will be biased about some tools. But all answers are welcome, Please feel free to share what tools you are using, it might help me.


@Luv I would actually say that telegraf is more flexible, easier to use, and more performant than collectd or netdata. It also works more seamlessly with InfluxDB. It also has integrations with all of the other products you mentioned. I have heard of some people using Snap.

As far as data stores, InfluxDB is by far the most performant and easy to use of the timeseries databases. We have a benchmark against OpenTSDB, and we were designed as a replacement for Graphite. A single server of InfluxDB can handle the same load as a cluster of ~10 similarly provisioned Graphite servers.


Okay. I didn’t know about snap till now. It’s looking good. But I am finding Telegraf somewhat better.
Telegraf is definitely better than Netdata and Collectd.

I would like to know about it’s http_listener plugin.

## Influx HTTP write listener
## Address and port to host HTTP listener on service_address = ":8186"

## timeouts read_timeout = "10s" write_timeout = "10s"
To which database this plugin is writing ? And read_timeout and write_timeout means that it can monitor only GET and POST request, is it so ?


Also, If I want to monitor my ssh server on tcp port 22 using the tcp_listener plugin, what would be the data format.

SSH data format is like this,

Each packet is in the following format:

  uint32    packet_length
  byte      padding_length
  byte[n1]  payload; n1 = packet_length - padding_length - 1
  byte[n2]  random padding; n2 = padding_length
  byte[m]   mac (Message Authentication Code - MAC); m = mac_length

How do I monitor port 22 ?