]> arthur.barton.de Git - netdata.git/blobdiff - README.md
Merge pull request #528 from paulfantom/master
[netdata.git] / README.md
old mode 100755 (executable)
new mode 100644 (file)
index ff394cc..5b6aa20
--- a/README.md
+++ b/README.md
-netdata
-=======
+[![Build Status](https://travis-ci.org/firehol/netdata.svg?branch=master)](https://travis-ci.org/firehol/netdata)
+[![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&v40)](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&v40)](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&v40)](https://registry.my-netdata.io/#netdata_registry)
 
-### Linux real time system monitoring, over the web!
+[![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&v40)](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&v40)](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&v40)](https://registry.my-netdata.io/#netdata_registry)
 
-**Netdata** is a daemon that collects system information from a linux system and presents a web site to view the data.
-The presentation is full of charts that precisely render all system values, in realtime, for a short time (1 hour by default).
 
-You can use it to monitor all your servers, linux PCs or linux embedded devices, without the need to ssh to them.
-Also, you can view a short history of all collected values, so if something happens you can use **netdata** to find out what and when.
+# netdata
 
-Check it live at:
+> 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
 
- - [My Home Gentoo Box](http://195.97.5.206:19999/)
- - [My Home Raspberry Pi B+](http://195.97.5.204:19999/) with data collection every 5s (raspbian playing movies 24x7)
- - [My Home Raspberry Pi 2](http://195.97.5.205:19999/) (osmc as an access point)
+---
 
-Here is a screenshot:
+May 1st, 2016
 
-![image](https://cloud.githubusercontent.com/assets/2662304/2593406/3c797e88-ba80-11e3-8ec7-c10174d59ad6.png)
+##### 320.000+ views, 92.000+ visitors, 28.500+ downloads, 11.000+ github stars, 700+ forks, 1 month!
 
+And it still runs with 600+ git downloads... per day!
 
-# Features
+**[Check what our users say about netdata](https://github.com/firehol/netdata/issues/148)**.
 
-- **highly optimized C code**
+---
 
-  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.
+**Real-time performance monitoring, done right!**
 
-- **extremely lightweight**
+This is the default dashboard of **netdata**:
 
-  It only needs a few megabytes of memory to store all its round robin database.
-  
-  Internally, it uses a **custom-made 32-bit number** to store all the values, along with a limited number of metadata for each collected value. This customer-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 (2 are currently used and 1 is reserved for future use). This provides an extremely optimized memory footprint.
+ - real-time, per second updates, snappy refreshes!
+ - 300+ charts out of the box, 2000+ metrics monitored!
+ - zero configuration, zero maintenance, zero dependencies!
 
-- **per second data collection**
+Live demo: [http://netdata.firehol.org](http://netdata.firehol.org)
 
-  Every chart, every value, is updated every second. Of course, you can control collection period per module.
+![netdata](https://cloud.githubusercontent.com/assets/2662304/14092712/93b039ea-f551-11e5-822c-beadbf2b2a2e.gif)
 
-  **netdata** can perform several calculations on each value (dimension) collected:
+---
 
-  - **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)
+## Features
 
-  - **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 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.
+**netdata** is a highly optimized Linux daemon providing **real-time performance monitoring for Linux systems, Applications, SNMP devices, over the web**!
 
-  - **percentage of absolute row**, stores the percentage of the collected value, over the sum of all dimensions of the chart.
+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.
 
-  - **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).
+This is what you get:
 
-- **visualizes QoS classes automatically**
+- **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 and its charts can be embedded on your web pages too
 
-  If you also use FireQOS for QoS, it collects class names automatically.
+---
 
-- **appealing web site**
+## What does it monitor?
 
-  The web site uses bootstrap and google charts for a very appealing result.
-  It works even on mobile devices and adapts to screen size changes and rotation.
+This is what it currently monitors (most with zero configuration):
 
-- **web charts do respect your browser resources**
+- **CPU usage, interrupts, softirqs and frequency** (total and per core)
 
-  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 scrolling, etc).
+- **RAM, swap and kernel memory usage** (including KSM and kernel memory deduper)
 
-- **highly configurable**
+- **Disks** (per disk: I/O, operations, backlog, utilization, space, etc)
 
-  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.
+   ![sda](https://cloud.githubusercontent.com/assets/2662304/14093195/c882bbf4-f554-11e5-8863-1788d643d2c0.gif)
 
-- 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)
- - `tc` classes (QoS classes)
+- **Network interfaces** (per interface: bandwidth, packets, errors, drops, etc)
 
-- It supports **plugins** for collecting information from other sources!
+   ![dsl0](https://cloud.githubusercontent.com/assets/2662304/14093128/4d566494-f554-11e5-8ee4-5392e0ac51f0.gif)
 
-  Plugins can be written in any computer language (pipe / stdout communication for data collection).
+- **IPv4 networking** (bandwidth, packets, errors, fragments, tcp: connections, packets, errors, handshake, udp: packets, errors, broadcast: bandwidth, packets, multicast: bandwidth, packets)
 
-  It ships with 2 plugins: `apps.plugin` and `charts.d.plugin`:
+- **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)
 
- - `apps.plugin` is a plugin that attempts to collect statistics per process.
+- **netfilter / iptables Linux firewall** (connections, connection tracker events, errors, etc)
 
- - `charts.d.plugin` provides a simple way to script data collection in BASH. It includes example plugins that collect values from:
+- **Linux DDoS protection** (SYNPROXY metrics)
 
-   - `nut` (UPS load, frequency, voltage, etc)
-   
-   - `pi` (raspberry pi CPU clock and temperature)
-   
-   - `postfix` (e-mail queue size)
-   
-   - `squid` (web proxy statistics)
+- **Processes** (running, blocked, forks, active, etc)
 
-- netdata is a web server, supporting gzip compression
+- **Entropy** (random numbers pool, using in cryptography)
 
-  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)
+- **NFS file servers**, v2, v3, v4 (I/O, cache, read ahead, RPC calls)
 
+- **Network QoS** (yes, the only tool that visualizes network `tc` classes in realtime)
 
-# How it works
+   ![qos-tc-classes](https://cloud.githubusercontent.com/assets/2662304/14093004/68966020-f553-11e5-98fe-ffee2086fafd.gif)
 
-1. You run a daemon on your linux: netdata.
- This deamon is written in C and is extremely lightweight.
- netdata:
+- **Linux Control Groups** (containers), systemd, lxc, docker, etc
 
-  - reads several /proc files
-  - keeps track of the values in memroy (a short history)
-  - generates JSON and JSONP HTTP responses containing all the data needed for the web graphs
-  - is a web server. You can access JSON data by using:
- ```
- http://127.0.0.1:19999/data/net.eth0
- ```
- This will give you the JSON file for traffic on eth0.
- The above is equivalent to:
- ```
- http://127.0.0.1:19999/data/net.eth0/3600/1/average/0/0
- ```
- where:
+- **Applications**, by grouping the process tree (CPU, memory, disk reads, disk writes, swap, threads, pipes, sockets, etc)
 
-  - 3600 is the number of entries to generate.
-  - 1 is grouping count, 1 = every single entry, 2 = half the entries, 3 = one every 3 entries, etc
-  - `average` is the grouping method. It can also be `max`.
-  - 0/0 they are `before` and `after` timestamps, allowing panning on the data
+   ![apps](https://cloud.githubusercontent.com/assets/2662304/14093565/67c4002c-f557-11e5-86bd-0154f5135def.gif)
 
+- **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)
 
-2. On your web page, you add a few javascript lines and a DIV for every graph you need.
- Your browser will hit the web server to fetch the JSON data and refresh the graphs.
+- **Apache web server** mod-status (v2.2, v2.4)
 
-3. Graphs are generated using Google Charts API (so, your client needs to have internet access).
+- **Nginx web server** stub-status
 
+- **mySQL databases** (multiple servers, each showing: bandwidth, queries/s, handlers, locks, issues, tmp operations, connections, binlog metrics, threads, innodb metrics, etc)
 
-# Installation
+- **ISC Bind name server** (multiple servers, each showing: clients, requests, queries, updates, failures and several per view metrics)
 
-## Automatic installation
+- **Postfix email server** message queue (entries, size)
 
-Before you start, make sure you have `zlib` development files installed.
-To install it in Ubuntu, you need to run:
+- **Squid proxy server** (clients bandwidth and requests, servers bandwidth and requests) 
 
-```sh
-apt-get install zlib1g-dev
-```
+- **Hardware sensors** (temperature, voltage, fans, power, humidity, etc)
 
-Then do this to install and run netdata:
+- **NUT UPSes** (load, charge, battery voltage, temperature, utility metrics, output metrics)
 
-```sh
-git clone https://github.com/ktsaou/netdata.git netdata.git
-cd netdata.git
-./netdata.start
-```
+- **Tomcat** (accesses, threads, free memory, volume)
 
-Once you run it, the file conf.d/netdata.conf will be created. You can edit this file to set options for each graph.
-To apply the changes you made, you have to run netdata.start again.
+- **PHP-FPM** (multiple instances, each reporting connections, requests, performance)
 
-If you run `netdata.start` as `root`, netdata will start by default as `nobody`. Otherwise it will run as the user that started it. If you run it as `root`, you can set the user you want it to run in the config file `conf.d/netdata.conf`.
+- **SNMP devices** can be monitored too (although you will need to configure these)
 
-To access the web site for all graphs, go to:
+And you can extend it, by writing plugins that collect data from any source, using any computer language.
 
- ```
- http://127.0.0.1:19999/
- ```
+---
+
+## Still not convinced?
+
+Read **[Why netdata?](https://github.com/firehol/netdata/wiki/Why-netdata%3F)**
+
+---
+
+## Installation
+
+Use our **[automatic installer](https://github.com/firehol/netdata/wiki/Installation)** to build and install it on your system
+
+It should run on **any Linux** system. It has been tested on:
+
+- 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)**.
 
-You can get the running config file at any time, by accessing `http://127.0.0.1:19999/netdata.conf`.