]> arthur.barton.de Git - netdata.git/blobdiff - README.md
renamed states family
[netdata.git] / README.md
old mode 100755 (executable)
new mode 100644 (file)
index 2d5948b..240ab32
--- a/README.md
+++ b/README.md
-netdata
-=======
+# netdata [![Build Status](https://travis-ci.org/firehol/netdata.svg?branch=master)](https://travis-ci.org/firehol/netdata) [![Coverity Scan Build Status](https://scan.coverity.com/projects/9140/badge.svg)](https://scan.coverity.com/projects/firehol-netdata) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/a994873f30d045b9b4b83606c3eb3498)](https://www.codacy.com/app/netdata/netdata?utm_source=github.com&utm_medium=referral&utm_content=firehol/netdata&utm_campaign=Badge_Grade) [![Code Climate](https://codeclimate.com/github/firehol/netdata/badges/gpa.svg)](https://codeclimate.com/github/firehol/netdata) [![Docker Pulls](https://img.shields.io/docker/pulls/titpetric/netdata.svg)](https://hub.docker.com/r/titpetric/netdata/) [![Twitter Follow](https://img.shields.io/twitter/follow/linuxnetdata.svg?style=social&label=netdata%20on%20twitter)](https://twitter.com/linuxnetdata)
+> *New to netdata? Here is a live demo: [http://my-netdata.io](http://my-netdata.io)*
 
-### Linux real time system monitoring, over the web!
+**netdata** is a system for **distributed real-time performance and health monitoring**.
+It provides **unparalleled insights, in real-time**, of everything happening on the
+system it runs (including applications such as web and database servers), using
+**modern interactive web dashboards**.
 
-**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).
+_netdata is **fast** and **efficient**, designed to permanently run on all systems
+(**physical** & **virtual** servers, **containers**, **IoT** devices), without
+disrupting their core function._
 
-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.
+---
 
-Check it live at:
+## User base
 
- - [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)
+*Since May 16th 2016 (the date the [global public netdata registry](https://github.com/firehol/netdata/wiki/mynetdata-menu-item) was released):*<br/>
+[![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&v42)](https://registry.my-netdata.io/#menu_netdata_submenu_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&v42)](https://registry.my-netdata.io/#menu_netdata_submenu_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&v42)](https://registry.my-netdata.io/#menu_netdata_submenu_registry)
 
-Here is a screenshot:
+*in the last 24 hours:*<br/>
+[![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&v42)](https://registry.my-netdata.io/#menu_netdata_submenu_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&v42)](https://registry.my-netdata.io/#menu_netdata_submenu_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&v42)](https://registry.my-netdata.io/#menu_netdata_submenu_registry)
 
-![image](https://cloud.githubusercontent.com/assets/2662304/2593406/3c797e88-ba80-11e3-8ec7-c10174d59ad6.png)
+---
 
+## News
 
-# Features
+<p align="center">
+Netdata is featured at <b><a href="https://octoverse.github.com/" target="_blank">GitHub's State Of The Octoverse 2016</a></b><br/>
+<a href="https://octoverse.github.com/" target="_blank"><img src="https://cloud.githubusercontent.com/assets/2662304/21743260/23ebe62c-d507-11e6-80c0-76b95f53e464.png"/></a>
+</p>
 
-- **highly optimized C code**
+`Jan 22nd, 2017` - **[netdata v1.5.0 released!](https://github.com/firehol/netdata/releases)**
 
-  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.
+ - netdata now runs on **FreeBSD** and **MacOS**
+ - netdata now supports **Graphite**, **OpenTSDB**, **Prometheus** and compatible backends
+ - netdata now monitors **systemd Services**
+ - new plugins: fping, postgres, varnish, elasticsearch, haproxy, freeradius, mdstat, ISC dhcpd, fail2ban, openvpn, NUMA memory, CPU Idle States, gunicorn, ECC memory errors, IPC semaphores, uptime
+ - improved plugins: netfilter conntrack, mysql/mariadb, ipfs, cpufreq, hddtemp, sensors, nginx, nginx_log, phpfpm, redis, dovecot, containers and cgroups, disk space, apps.plugin, tc (QoS) and almost all internal plugins (memory, IPv4 and IPv6, network interfaces, QoS, etc)
+ - dozens of new and improved alarms (including performance monitoring alarms for mysql)
+ - new alarm notifications: messagebird.com, pagerduty.com, pushbullet.com, twilio.com, hipchat, kafka
+ - dozens more improvements and performance optimizations
 
-- **extremely lightweight**
+---
 
-  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.
+## Features
 
-- **per second data collection**
+<p align="center">
+<img src="https://cloud.githubusercontent.com/assets/2662304/19168687/f6a567be-8c19-11e6-8561-ce8d589e8346.gif"/>
+</p>
 
-  Every chart, every value, is updated every second. Of course, you can control collection period per module.
+ - **Stunning interactive bootstrap dashboards**<br/>
+   mouse and touch friendly, in 2 themes: dark, light
+   
+ - **Amazingly fast**<br/>
+   responds to all queries in less than 0.5 ms per metric,
+   even on low-end hardware
+   
+ - **Highly efficient**<br/>
+   collects thousands of metrics per server per second,
+   with just 1% CPU utilization of a single core, a few MB of RAM and no disk I/O at all
+   
+ - **Sophisticated alarming**<br/>
+   supports dynamic thresholds, hysteresis, alarm templates,
+   multiple role-based notification methods (such as email, slack.com,
+   pushover.net, pushbullet.com, telegram.org, twilio.com, messagebird.com)
+   
+ - **Extensible**<br/>
+   you can monitor anything you can get a metric for,
+   using its Plugin API (anything can be a netdata plugin,
+   BASH, python, perl, node.js, java, Go, ruby, etc)
+   
+ - **Embeddable**<br/>
+   it can run anywhere a Linux kernel runs (even IoT)
+   and its charts can be embedded on your web pages too
+   
+ - **Customizable**<br/>
+   custom dashboards can be built using simple HTML (no javascript necessary)
+   
+ - **Zero configuration**<br/>
+   auto-detects everything, it can collect up to 5000 metrics
+   per server out of the box
+   
+ - **Zero dependencies**<br/>
+   it is even its own web server, for its static web files and its web API
+   
+ - **Zero maintenance**<br/>
+   you just run it, it does the rest
+   
+ - **scales to infinity**<br/>
+   requiring minimal central resources
+   
+ - **back-ends supported**<br/>
+   can archive its metrics on `graphite` or `opentsdb`, in the same or lower detail
+   (lower: to prevent it from congesting these servers due to the amount of data collected)
 
-  **netdata** can perform several calculations on each value (dimension) collected:
+![netdata](https://cloud.githubusercontent.com/assets/2662304/14092712/93b039ea-f551-11e5-822c-beadbf2b2a2e.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)
+---
 
-  - **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.
+## What does it monitor?
 
-  - **percentage of absolute row**, stores the percentage of the collected value, over the sum of all dimensions of the chart.
+netdata monitors several thousands of metrics per device.
+All these metrics are collected and visualized in real-time.
 
-  - **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).
+> _Almost all metrics are auto-detected, without any configuration._
 
-- **visualizes QoS classes automatically**
+This is a list of what it currently monitors:
 
-  If you also use FireQOS for QoS, it collects class names automatically.
+- **CPU**<br/>
+  usage, interrupts, softirqs, frequency, total and per core
 
-- **appealing web site**
+- **Memory**<br/>
+  RAM, swap and kernel memory usage, KSM (Kernel Samepage Merging), NUMA
 
-  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.
+- **Disks**<br/>
+  per disk: I/O, operations, backlog, utilization, space
 
-- **web charts do respect your browser resources**
+   ![sda](https://cloud.githubusercontent.com/assets/2662304/14093195/c882bbf4-f554-11e5-8863-1788d643d2c0.gif)
 
-  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).
+- **Network interfaces**<br/>
+  per interface: bandwidth, packets, errors, drops
 
-- **highly configurable**
+   ![dsl0](https://cloud.githubusercontent.com/assets/2662304/14093128/4d566494-f554-11e5-8ee4-5392e0ac51f0.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.
+- **IPv4 networking**<br/>
+  bandwidth, packets, errors, fragments,
+  tcp: connections, packets, errors, handshake,
+  udp: packets, errors,
+  broadcast: bandwidth, packets,
+  multicast: bandwidth, packets
 
-- 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)
+- **IPv6 networking**<br/>
+  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
 
-- It supports **plugins** for collecting information from other sources!
+- **Interprocess Communication - IPC**<br/>
+  such as semaphores and semaphores arrays
 
-  Plugins can be written in any computer language (pipe / stdout communication for data collection).
+- **netfilter / iptables Linux firewall**<br/>
+  connections, connection tracker events, errors
 
-  It ships with 2 plugins: `apps.plugin` and `charts.d.plugin`:
+- **Linux DDoS protection**<br/>
+  SYNPROXY metrics
 
- - `apps.plugin` is a plugin that attempts to collect statistics per process.
+- **fping** latencies</br>
+  for any number of hosts, showing latency, packets and packet loss
 
- - `charts.d.plugin` provides a simple way to script data collection in BASH. It includes example plugins that collect values from:
+   ![image](https://cloud.githubusercontent.com/assets/2662304/20464811/9517d2b4-af57-11e6-8361-f6cc57541cd7.png)
 
-    - `nut` (UPS load, frequency, voltage, etc)
-   
-    - `pi` (raspberry pi CPU clock and temperature)
-   
-    - `postfix` (e-mail queue size)
-   
-    - `squid` (web proxy statistics)
 
-- netdata is a web server, supporting gzip compression
+- **Processes**<br/>
+  running, blocked, forks, active
+
+- **Entropy**<br/>
+  random numbers pool, using in cryptography
+
+- **NFS file servers and clients**<br/>
+  NFS v2, v3, v4: I/O, cache, read ahead, RPC calls
+
+- **Network QoS**<br/>
+  the only tool that visualizes network `tc` classes in realtime
+
+   ![qos-tc-classes](https://cloud.githubusercontent.com/assets/2662304/14093004/68966020-f553-11e5-98fe-ffee2086fafd.gif)
+
+- **Linux Control Groups**<br/>
+  containers: systemd, lxc, docker
+
+- **Applications**<br/>
+  by grouping the process tree and reporting CPU, memory, disk reads,
+  disk writes, swap, threads, pipes, sockets - per group
+
+   ![apps](https://cloud.githubusercontent.com/assets/2662304/14093565/67c4002c-f557-11e5-86bd-0154f5135def.gif)
+
+- **Users and User Groups resource usage**<br/>
+  by summarizing the process tree per user and group,
+  reporting: CPU, memory, disk reads, disk writes, swap, threads, pipes, sockets
+
+- **Apache and lighttpd web servers**<br/>
+   `mod-status` (v2.2, v2.4) and cache log statistics, for multiple servers
+
+- **Nginx web servers**<br/>
+  `stub-status`, for multiple servers
+
+- **Tomcat**<br/>
+  accesses, threads, free memory, volume
+
+- **mySQL databases**<br/>
+  multiple servers, each showing: bandwidth, queries/s, handlers, locks, issues,
+  tmp operations, connections, binlog metrics, threads, innodb metrics, and more
+
+- **Postgres databases**<br/>
+  multiple servers, each showing: per database statistics (connections, tuples
+  read - written - returned, transactions, locks), backend processes, indexes,
+  tables, write ahead, background writer and more
+
+- **Redis databases**<br/>
+  multiple servers, each showing: operations, hit rate, memory, keys, clients, slaves
+
+- **memcached databases**<br/>
+  multiple servers, each showing: bandwidth, connections, items
+
+- **ISC Bind name servers**<br/>
+  multiple servers, each showing: clients, requests, queries, updates, failures and several per view metrics
+
+- **Postfix email servers**<br/>
+  message queue (entries, size)
 
-  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)
+- **exim email servers**<br/>
+  message queue (emails queued)
 
+- **Dovecot** POP3/IMAP servers<br/>
 
-# How it works
+- **IPFS**<br/>
+  bandwidth, peers
 
-1. You run a daemon on your linux: netdata.
- This deamon is written in C and is extremely lightweight.
- netdata:
+- **Squid proxy servers**<br/>
+  multiple servers, each showing: clients bandwidth and requests, servers bandwidth and requests
 
-  - 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:
+- **Hardware sensors**<br/>
+  temperature, voltage, fans, power, humidity
 
-  - 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
+- **NUT and APC UPSes**<br/>
+  load, charge, battery voltage, temperature, utility metrics, output metrics
 
+- **PHP-FPM**<br/>
+  multiple instances, each reporting connections, requests, performance
 
-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.
+- **hddtemp**<br/>
+  disk temperatures
 
-3. Graphs are generated using Google Charts API (so, your client needs to have internet access).
+- **SNMP devices**<br/>
+  can be monitored too (although you will need to configure these)
 
+And you can extend it, by writing plugins that collect data from any source, using any computer language.
 
-# Installation
+---
 
-## Automatic installation
+## Installation
 
-Before you start, make sure you have `zlib` development files installed.
-To install it in Ubuntu, you need to run:
+Use our **[automatic installer](https://github.com/firehol/netdata/wiki/Installation)** to build and install it on your system.
 
-```sh
-apt-get install zlib1g-dev
-```
+It should run on **any Linux** system (including IoT). It has been tested on:
 
-Then do this to install and run netdata:
+- Alpine
+- Arch Linux
+- CentOS
+- Debian
+- Fedora
+- Gentoo
+- openSUSE
+- PLD Linux
+- RedHat Enterprise Linux
+- SUSE
+- Ubuntu
 
-```sh
-git clone https://github.com/ktsaou/netdata.git netdata.git
-cd netdata.git
-./netdata.start
-```
+---
 
-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.
+## Documentation
 
-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`.
+Check the **[netdata wiki](https://github.com/firehol/netdata/wiki)**.
 
-To access the web site for all graphs, go to:
+## License
 
- ```
- http://127.0.0.1:19999/
- ```
+netdata is GPLv3+.
 
-You can get the running config file at any time, by accessing `http://127.0.0.1:19999/netdata.conf`.
+It re-distributes other open-source tools and libraries. Please check its [License Statement](https://github.com/firehol/netdata/blob/master/LICENSE.md).