]> arthur.barton.de Git - netdata.git/blobdiff - README.md
updated README.md for the 1.3.0 release
[netdata.git] / README.md
old mode 100755 (executable)
new mode 100644 (file)
index 33f4eae..759d4e9
--- a/README.md
+++ b/README.md
-netdata
-=======
+[![Build Status](https://travis-ci.org/firehol/netdata.svg?branch=master)](https://travis-ci.org/firehol/netdata)
+<a href="https://scan.coverity.com/projects/firehol-netdata"><img alt="Coverity Scan Build Status" src="https://scan.coverity.com/projects/9140/badge.svg"/></a>
+[![User Base](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=persons&label=user%20base&units=null&value_color=blue&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry)
+[![Monitored Servers](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=machines&label=servers%20monitored&units=null&value_color=orange&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry)
+[![Sessions Served](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_sessions&label=sessions%20served&units=null&value_color=yellowgreen&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry)
 
-[Live Demo Site](http://netdata.firehol.org)
+[![New Users Today](http://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=persons&after=-86400&options=unaligned&group=incremental-sum&label=new%20users%20today&units=null&value_color=blue&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry)
+[![New Machines Today](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=machines&group=incremental-sum&after=-86400&options=unaligned&label=servers%20added%20today&units=null&value_color=orange&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry)
+[![Sessions Today](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_sessions&after=-86400&group=incremental-sum&options=unaligned&label=sessions%20served%20today&units=null&value_color=yellowgreen&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry)
 
 
-### Realtime time data collection and charts!
+# netdata
 
-**Netdata** is a daemon that collects data in realtime (per second) and presents a web site to view and analyze them.
-The presentation is full of charts that precisely render all system values, in realtime.
+> Aug 28th, 2016
+>
+> [netdata v1.3.0 released!](https://github.com/firehol/netdata/releases)
+>
+> - netdata has **[health monitoring / alarms](https://github.com/firehol/netdata/wiki/health-monitoring)**!
+> - netdata **[generates badges](https://github.com/firehol/netdata/wiki/Generating-Badges)** that can be embeded anywhere!
+> - netdata plugins are now written in python!
+> - new plugins: redis, memcached, nginx_log, ipfs, apache_cache
 
-It has been designed to be installed **on every system**, without desrupting it:
+---
 
-1. It will just use some spare CPU cycles.
+> May 16th, 2016
+>
+> [netdata v1.2.0 released!](https://github.com/firehol/netdata/releases)
+>
+> - 30% faster!
+> - **[netdata registry](https://github.com/firehol/netdata/wiki/mynetdata-menu-item)**, the first step towards scaling out performance monitoring!
+> - real-time Linux Containers monitoring!
+> - dozens of additional new features, optimizations, bug-fixes
 
-    Although it is very light weight, on slow processors you can futher control its CPU consumption by lowering its data collection frequency.
-    By default it is running with the lowest possible linux priority.
+---
 
-2. It will use the memory you want it have.
+**Real-time performance monitoring, done right!**
 
-    Although we have made the most to make its memory footprint the smallest possible,
-    you can further control the memory it will use, by sizing its round robin memory database.
+This is the default dashboard of **netdata**:
 
-3. It does not use disk I/O.
+ - real-time, per second updates, snappy refreshes!
+ - 300+ charts out of the box, 2000+ metrics monitored!
+ - zero configuration, zero maintenance, zero dependencies!
 
-    All its round robin database is in memory.
-    It is only saved on disk and loaded back when netdata restarts.
-    You can also disable the access log of its embedded web server, so that netdata will not use any I/O at all while running.
+Live demo: [http://my-netdata.io](http://my-netdata.io)
 
+![netdata](https://cloud.githubusercontent.com/assets/2662304/14092712/93b039ea-f551-11e5-822c-beadbf2b2a2e.gif)
 
-You can use it to monitor all your applications, servers, linux PCs or linux embedded devices.
+---
 
-Out of the box, it comes with plugins for data collection about system information and popular applications.
+## Features
 
+**netdata** is a highly optimized Linux daemon providing **real-time performance monitoring for Linux systems, Applications, SNMP devices, over the web**!
 
-# Features
+It tries to visualize the **truth of now**, in its **greatest detail**, so that you can get insights of what is happening now and what just happened, on your systems and applications.
 
-- **highly optimized C code**
+This is what you get:
 
-  It only needs a few milliseconds per second to collect all the data.
-  It will nicelly run even on a raspberry pi with just one cpu core, or any other embedded system.
+- **Stunning bootstrap dashboards**, out of the box (themable: dark, light)
+- **Blazingly fast** and **super efficient**, mostly written in C (for default installations, expect just 2% of a single core CPU usage and a few MB of RAM)
+- **Zero configuration** - you just install it and it autodetects everything
+- **Zero dependencies**, it is its own web server for its static web files and its web API
+- **Zero maintenance**, you just run it, it does the rest
+- **Custom dashboards** that can be built using simple HTML (no javascript necessary)
+- **Extensible**, you can monitor anything you can get a metric for, using its Plugin API (anything can be a netdata plugin - from BASH to node.js, so you can easily monitor any application, any API)
+- **Embeddable**, it can run anywhere a Linux kernel runs (even IoT) and its charts can be embedded on your web pages too
 
-- **extremely lightweight**
+---
 
-  It only needs a few megabytes of memory to store its round robin database.
+## What does it monitor?
 
-  Although `netdata` does all its calculation using `long double` (128 bit) arithmetics, it stores all values using a **custom-made 32-bit number**. This custom-made number can store in 29 bits values from -167772150000000.0 to  167772150000000.0 with a precision of 0.00001 (yes, it is a floating point number, meaning that higher integer values have less decimal precision) and 3 bits for flags. This provides an extremely optimized memory footprint with just 0.0001% max accuracy loss (run: `./netdata --unittest` to see it in action).
+This is what it currently monitors (most with zero configuration):
 
-  If your linux box has KSM enabled, netdata will give it all its round robbin database, to lower its memory requirements even further.
+- **CPU usage, interrupts, softirqs and frequency** (total and per core)
 
-- **per second data collection**
+- **RAM, swap and kernel memory usage** (including KSM and kernel memory deduper)
 
-  Every chart, every value, is updated every second. Of course, you can control collection period per plugin.
+- **Disks** (per disk: I/O, operations, backlog, utilization, space, etc)
 
-  **netdata** can perform several calculations on each value (dimension) collected:
+   ![sda](https://cloud.githubusercontent.com/assets/2662304/14093195/c882bbf4-f554-11e5-8863-1788d643d2c0.gif)
 
-  - **absolute**, stores the collected value, as collected (this is used, for example for the number of processes running, the number of connections open, the amount of RAM used, etc)
+- **Network interfaces** (per interface: bandwidth, packets, errors, drops, etc)
 
-  - **incremental**, stores the difference of the collected value to the last collected value (this is used, for example, for the bandwidth of interfaces, disk I/O, i.e. for counters that always get incremented) - **netdata** automatically interpolates these values to second boundary, using nanosecond calculations so that small delays at the data collection layer will not affect the quality of the result - also, **netdata** detects arithmetic overflows and presents them properly at the charts.
+   ![dsl0](https://cloud.githubusercontent.com/assets/2662304/14093128/4d566494-f554-11e5-8ee4-5392e0ac51f0.gif)
 
-  - **percentage of absolute row**, stores the percentage of the collected value, over the sum of all dimensions of the chart.
+- **IPv4 networking** (bandwidth, packets, errors, fragments, tcp: connections, packets, errors, handshake, udp: packets, errors, broadcast: bandwidth, packets, multicast: bandwidth, packets)
 
-  - **percentage of incremental row**, stores the percentage of this collected value, over the sum of the the **incremental** differences of all dimensions of the chart (this is used, for example, for system CPU utilization).
+- **IPv6 networking** (bandwidth, packets, errors, fragments, ECT, udp: packets, errors, udplite: packets, errors, broadcast: bandwidth, multicast: bandwidth, packets, icmp: messages, errors, echos, router, neighbor, MLDv2, group membership, break down by type)
 
-- **visualizes QoS classes automatically**
+- **netfilter / iptables Linux firewall** (connections, connection tracker events, errors, etc)
 
-  If you also use FireQOS for QoS, it collects class names automatically.
+- **Linux DDoS protection** (SYNPROXY metrics)
 
-- **appealing web site**
+- **Processes** (running, blocked, forks, active, etc)
 
-  The web site uses bootstrap and the excellent [dygraphs](http://dygraphs.com), for a very appealing and responsive result.
-  It works even on mobile devices and adapts to screen size changes and rotation (responsive design).
+- **Entropy** (random numbers pool, using in cryptography)
 
-- **web charts do respect your browser resources**
+- **NFS file servers**, v2, v3, v4 (I/O, cache, read ahead, RPC calls)
 
-  The charts adapt to show only as many points are required to have a clear view.
-  Also, the javascript code respects your browser resources (stops refreshing when the window looses focus, when something is selected, when charts are not in the visible viewport, etc).
+- **Network QoS** (yes, the only tool that visualizes network `tc` classes in realtime)
 
-- **highly configurable**
+   ![qos-tc-classes](https://cloud.githubusercontent.com/assets/2662304/14093004/68966020-f553-11e5-98fe-ffee2086fafd.gif)
 
-  All charts and all features can be enabled or disabled.
-  The program generates its configuration file based on the resources available on the system it runs, for you to edit.
+- **Linux Control Groups** (containers), systemd, lxc, docker, etc
 
-- It reads and renders charts for all these:
- - `/proc/net/dev` (all netwrok interfaces for all their values)
- - `/proc/diskstats` (all disks for all their values)
- - `/proc/net/snmp` (total IPv4, TCP and UDP usage)
- - `/proc/net/netstat` (more IPv4 usage)
- - `/proc/net/stat/nf_conntrack` (connection tracking performance)
- - `/proc/net/ip_vs/stats` (IPVS connection statistics)
- - `/proc/stat` (CPU utilization)
- - `/proc/meminfo` (memory information)
- - `/proc/vmstat` (system performance)
- - `/proc/net/rpc/nfsd` (NFS server statistics for both v3 and v4 NFS)
- - `/proc/interrupts` (total and per core hardware interrupts)
- - `/proc/softirqs` (total and per core software interrupts)
- - `tc` classes (QoS classes - [with FireQOS class names](http://firehol.org/tutorial/fireqos-new-user/))
+- **Applications**, by grouping the process tree (CPU, memory, disk reads, disk writes, swap, threads, pipes, sockets, etc)
 
-- It supports **plugins** for collecting information from other sources!
+   ![apps](https://cloud.githubusercontent.com/assets/2662304/14093565/67c4002c-f557-11e5-86bd-0154f5135def.gif)
 
-  Plugins can be written in any computer language (pipe / stdout communication for data collection).
+- **Users and User Groups resource usage**, by summarizing the process tree per user and group (CPU, memory, disk reads, disk writes, swap, threads, pipes, sockets, etc)
 
-  It ships with 2 plugins: `apps.plugin` and `charts.d.plugin`:
+- **Apache web server** mod-status (v2.2, v2.4) and cache log statistics (multiple servers)
 
- - `apps.plugin` is a plugin that attempts to collect statistics per process. It groups the entire process tree based on your settings (for example, mplayer, kodi, vlc are all considered `media`) and for each group it attempts to find CPU usage, memory usages, physical and logical disk read and writes, number of processes, number of threads, number of open files, number of open sockets, number of open pipes, minor and major page faults (major = swapping), etc. 15 stackable (per group) charts in total.
+- **Nginx web server** stub-status (multiple servers)
 
- - `charts.d.plugin` provides a simple way to script data collection in BASH. It includes example plugins that collect values from:
+- **mySQL databases** (multiple servers, each showing: bandwidth, queries/s, handlers, locks, issues, tmp operations, connections, binlog metrics, threads, innodb metrics, etc)
 
-    - `nut` (UPS load, frequency, voltage, etc, for multiple UPSes)
-    - `sensors` (temperature, voltage, current, power, humidity, fans rotation sensors)
-    - `cpufreq` (current CPU clock frequency, for all CPUs)
-    - `postfix` (e-mail queue size)
-    - `squid` (web proxy statistics)
-    - `mysql` (mysql global statistics)
-    - `opensips` (opensips statistics)
+- **Redis databases** (multiple servers, each showing: operations, hit rate, memory, keys, clients, slaves)
 
-    Of course, you can write your own using BASH scripting.
+- **memcached databases** (multiple servers, each showing: bandwidth, connections, items, etc)
 
-- netdata is a web server, supporting gzip compression
+- **ISC Bind name server** (multiple servers, each showing: clients, requests, queries, updates, failures and several per view metrics)
 
-  It serves its own static files and dynamic files for rendering the site.
-  It does not support authentication or SSL - limit its access using your firewall, or put it behind an authentication proxy.
-  It does not allow ` .. ` in the files requested (so it can only serve files stored in the web directory `/usr/share/netdata/web`).
+- **Postfix email server** message queue (entries, size)
 
+- **exim email server** message queue (emails queued)
 
-# How it works
+- **IPFS** (Bandwidth, Peers)
 
-1. You run a daemon on your linux: netdata.
- This deamon is written in C and is extremely lightweight.
+- **Squid proxy server** (multiple servers, each showing: clients bandwidth and requests, servers bandwidth and requests)
 
- netdata:
+- **Hardware sensors** (temperature, voltage, fans, power, humidity, etc)
 
-  - Spawns threads to collect all the data for all sources
-  - Keeps track of the collected values in memory (no disk I/O at all)
-  - Generates JSON and JSONP HTTP responses containing all the data needed for the web graphs
-  - Is a standalone web server.
+- **NUT UPSes** (load, charge, battery voltage, temperature, utility metrics, output metrics)
 
- For example, you can access JSON data by using:
+- **Tomcat** (accesses, threads, free memory, volume)
 
- ```
- http://netdata.firehol.org/api/v1/data?chart=net.eth0&after=-300&before=0&points=120&group=average&format=json
+- **PHP-FPM** (multiple instances, each reporting connections, requests, performance)
 
- ```
+- **hddtemp** (disk temperatures)
 
- The above will give you the last 300 seconds of traffic for eth0, aggregated in 120 points, grouped as averages, in json format.
+- **SNMP devices** can be monitored too (although you will need to configure these)
 
- Check [Netdata Swagger UI](http://netdata.firehol.org/swagger/) for more information about the API.
+And you can extend it, by writing plugins that collect data from any source, using any computer language.
 
-2. If you need to embed a **netdata** chart on your web page, you can add a few javascript lines and a `div` for every graph you need. Check [this example](http://netdata.firehol.org/dashboard.html) (open it in a new tab and view its source to get the idea).
+---
 
-3. No internet access is required. Netdata is standalone.
+## Installation
 
+Use our **[automatic installer](https://github.com/firehol/netdata/wiki/Installation)** to build and install it on your system
 
-# Installation
+It should run on **any Linux** system. It has been tested on:
 
-Check the **[[Installation]]** page.
+- Gentoo
+- Arch Linux
+- Ubuntu / Debian
+- CentOS
+- Fedora
+- RedHat Enterprise Linux
+- SUSE
+- Alpine Linux
+- PLD Linux
+
+---
+
+## Documentation
+
+Check the **[netdata wiki](https://github.com/firehol/netdata/wiki)**.