From charlesreid1

Line 3: Line 3:
=Installing=
=Installing=


==Prerequisites and Dependencies==
{{Main|Netdata/Installing}}
 
<pre>
apt-get install -y zlib1g-dev uuid-dev libmnl-dev gcc make \
    autoconf autoconf-archive autogen automake pkg-config curl
 
apt-get install -y python python-yaml python-mysqldb \
    python-psycopg2 nodejs lm-sensors netcat
</pre>
 
==Installing Netdata From Source==
 
Get the tarball from the releases page of the github project: https://github.com/firehol/netdata/releases
 
From that directory, you should be able to run the 1-2-3 software build punch:
 
<pre>
./configure && make && make install
</pre>
 
==Installing Netdata Binary on Linux==
 
Here's a quick one-liner to avoid checking out the github repository.
 
<pre>
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
</pre>
 
Where it installs to is easy to see, as the installer script prints out everything that it is doing:
 
<pre>
  You are about to build and install netdata to your system.
 
  It will be installed at these locations:
 
  - the daemon    at /usr/sbin/netdata
  - config files  in /etc/netdata
  - web files      in /usr/share/netdata
  - plugins        in /usr/libexec/netdata
  - cache files    in /var/cache/netdata
  - db files      in /var/lib/netdata
  - log files      in /var/log/netdata
  - pid file      at /var/run/netdata.pid
  - logrotate file at /etc/logrotate.d/netdata
</pre>
 
==What It Do==
 
The script does the following:
* Create users/groups as needed
* Get logrotate
* Set permissions
* Download default netdata configuration
 
==Output from Install Process==
 
Here is the output from the installation process, which contains some useful information:
 
{{Scrollbox|
<pre>
--- Restore user edited netdata configuration files ---
--- Fix generated files permissions ---
[/usr/src/netdata.git]# find ./system/ -type f -a \! -name \*.in -a \! -name Makefile\*
    -a \! -name \*.conf -a \! -name \*.service -a \! -name \*.logrotate -exec chmod 755 \{\} \;                                       
OK 
 
--- Add user netdata to required user groups ---
Adding netdata user group ...
[/usr/src/netdata.git]# groupadd -r netdata
OK 
 
Adding netdata user account ...
[/usr/src/netdata.git]# useradd -r -g netdata -c netdata -s /usr/sbin/nologin -d / netdata
OK 
 
Group 'docker' does not exist.
Group 'nginx' does not exist.
Group 'varnish' does not exist.
Group 'haproxy' does not exist.
Adding netdata user to the adm group ...
[/usr/src/netdata.git]# usermod -a -G adm netdata
OK 
 
Group 'nsd' does not exist.
Adding netdata user to the proxy group ...
[/usr/src/netdata.git]# usermod -a -G proxy netdata
OK 
 
Group 'squid' does not exist.
--- Install logrotate configuration for netdata ---
[/usr/src/netdata.git]# cp system/netdata.logrotate /etc/logrotate.d/netdata
OK 
 
[/usr/src/netdata.git]# chmod 644 /etc/logrotate.d/netdata
OK 
 
--- Read installation options from netdata.conf ---
--- Fix permissions of netdata directories (using user 'netdata') ---
[/usr/src/netdata.git]# chown -R root:netdata /etc/netdata
OK 
 
[/usr/src/netdata.git]# find /etc/netdata -type f -exec chmod 0640 \{\} \;
OK 
 
[/usr/src/netdata.git]# find /etc/netdata -type d -exec chmod 0755 \{\} \;
OK 
 
[/usr/src/netdata.git]# chown -R netdata:netdata /usr/share/netdata/web
OK 
 
[/usr/src/netdata.git]# find /usr/share/netdata/web -type f -exec chmod 0664 \{\} \;
OK 
 
[/usr/src/netdata.git]# find /usr/share/netdata/web -type d -exec chmod 0775 \{\} \;
OK 
 
[/usr/src/netdata.git]# chown -R netdata:netdata /var/lib/netdata
OK 
 
[/usr/src/netdata.git]# chown -R netdata:netdata /var/cache/netdata
OK 
 
[/usr/src/netdata.git]# chown -R netdata:netdata /var/log/netdata
OK 
 
[/usr/src/netdata.git]# chmod 755 /var/log/netdata
OK 
 
[/usr/src/netdata.git]# chown netdata:root /var/log/netdata
OK 
 
[/usr/src/netdata.git]# chown -R root /usr/libexec/netdata
OK 
 
[/usr/src/netdata.git]# find /usr/libexec/netdata -type d -exec chmod 0755 \{\} \;
OK 
 
[/usr/src/netdata.git]# find /usr/libexec/netdata -type f -exec chmod 0644 \{\} \;
OK 
 
[/usr/src/netdata.git]# find /usr/libexec/netdata -type f -a -name \*.plugin -exec chmod 0755 \{\} \;
OK 
 
[/usr/src/netdata.git]# find /usr/libexec/netdata -type f -a -name \*.sh -exec chmod 0755 \{\} \;
OK 
 
[/usr/src/netdata.git]# chown root:netdata /usr/libexec/netdata/plugins.d/apps.plugin
OK 
 
[/usr/src/netdata.git]# chmod 0750 /usr/libexec/netdata/plugins.d/apps.plugin
OK 
 
[/usr/src/netdata.git]# setcap cap_dac_read_search\,cap_sys_ptrace+ep
    /usr/libexec/netdata/plugins.d/apps.plugin                                                                                                           
OK 
 
[/usr/src/netdata.git]# chown root:netdata /usr/libexec/netdata/plugins.d/cgroup-network
OK 
 
[/usr/src/netdata.git]# chmod 4750 /usr/libexec/netdata/plugins.d/cgroup-network
OK 
 
[/usr/src/netdata.git]# chown root /usr/libexec/netdata/plugins.d/cgroup-network-helper.sh
OK 
 
[/usr/src/netdata.git]# chmod 0550 /usr/libexec/netdata/plugins.d/cgroup-network-helper.sh
OK 
 
[/usr/src/netdata.git]# chmod a+rX /usr/libexec
OK 
 
[/usr/src/netdata.git]# chmod a+rX /usr/share/netdata
OK 
 
--- Install netdata at system init ---
Installing systemd service...
[/usr/src/netdata.git]# cp system/netdata.service /etc/systemd/system/netdata.service
OK 
 
[/usr/src/netdata.git]# systemctl daemon-reload
OK 
 
[/usr/src/netdata.git]# systemctl enable netdata
Created symlink /etc/systemd/system/multi-user.target.wants/netdata.service
    -> /etc/systemd/system/netdata.service.
OK 
 
--- Start netdata ---
[/usr/src/netdata.git]# /bin/systemctl stop netdata
OK 
 
[/usr/src/netdata.git]# /bin/systemctl restart netdata
OK 
 
OK. NetData Started!
 
 
-------------------------------------------------------------------------------
 
Downloading default configuration from netdata...
[/usr/src/netdata.git]# curl -s -o /etc/netdata/netdata.conf.new http://localhost:19999/netdata.conf
OK 
 
[/usr/src/netdata.git]# mv /etc/netdata/netdata.conf.new /etc/netdata/netdata.conf
OK 
 
OK  New configuration saved for you to edit at /etc/netdata/netdata.conf
 
[/usr/src/netdata.git]# chown netdata /etc/netdata/netdata.conf
OK 
 
[/usr/src/netdata.git]# chmod 0664 /etc/netdata/netdata.conf
OK 
 
--- Check KSM (kernel memory deduper) ---
 
Memory de-duplication instructions
 
You have kernel memory de-duper (called Kernel Same-page Merging,
or KSM) available, but it is not currently enabled.
 
To enable it run:
 
    echo 1 >/sys/kernel/mm/ksm/run
    echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs
 
If you enable it, you will save 40-60% of netdata memory.
 
--- Check version.txt ---
--- Check apps.plugin ---
--- Generate netdata-uninstaller.sh ---
--- Basic netdata instructions ---
 
netdata by default listens on all IPs on port 19999,
so you can access it with:
 
  http://this.machine.ip:19999/
 
To stop netdata run:
 
  systemctl stop netdata
 
To start netdata run:
 
  systemctl start netdata
 
 
Uninstall script generated: ./netdata-uninstaller.sh
Update script generated  : ./netdata-updater.sh
 
netdata-updater.sh can work from cron. It will trigger an email from cron
only if it fails (it does not print anything when it can update netdata).
--- Installing netdata-updater at cron ---
[/usr/src/netdata.git]# ln -s /usr/src/netdata.git/netdata-updater.sh /etc/cron.daily/netdata-updater
OK 
 
 
--- We are done! ---
 
  ^
  |.-.  .-.  .-.  .-.  .-.  .  netdata                          .-.  .-
  |  '-'  '-'  '-'  '-'  '-'  is installed and running now!  -'  '-' 
  +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->
 
  enjoy real-time performance and health monitoring...
 
OK 
</pre>
}}
 
==Installing Netdata as a Startup Service==
 
To install netdata systemd service by hand, start from the netdata repository.
 
Link: https://github.com/firehol/netdata
 
Start by shutting down netdata:
 
<pre>
killall netdata
</pre>
 
Now, look for the systemd service file in the repository, in the file <code>system/netdata.service.in</code>
 
Link: https://github.com/firehol/netdata/blob/master/system/netdata.service.in
 
Copy this file to the host operating system's systemd directory:
 
<pre>
cp system/netdata.service /etc/systemd/system/
</pre>
 
Now there are a couple of steps involving system control: (a) reload services so it sees there is a new service; (b) enable the new service; (c) start the new service.
 
<pre>
systemctl daemon-reload
systemctl enable netdata
systemctl start netdata
</pre>


=Usage=
=Usage=

Revision as of 00:05, 11 February 2018

Server monitoring/dashboard solution.

Installing

Usage

Netdata Web Dashboard

To use netdata's web dashboard, open a browser and navigate to localhost:19999

You should now see a web dashboard with live statistics about the system.

Spend plenty of time here, as there is a lot of information available.

Database Backends

Here we are interested in dumping data from netdata to a database.

Netdata wiki page on backends: https://github.com/firehol/netdata/wiki/netdata-backends

Backend API URLs

We'll use this below, but check out how to use URLs to access the Netdata backend API:

http://192.168.25.236:19999/api/v1/allmetrics?format=json&help=yes

NetdataBackendJSON.png

http://192.168.25.236:19999/api/v1/allmetrics?format=prometheus&help=yes

NetdataBackendPrometheus.png

This helpful information was pointed out by this guide to setting up Prometheus backend: https://github.com/firehol/netdata/wiki/Netdata,-Prometheus,-and-Grafana-Stack

Prometheus Backend

Following this guide to setting up Prometheus backend, which is on the Netdata wiki: https://github.com/firehol/netdata/wiki/Netdata,-Prometheus,-and-Grafana-Stack

Netdata/Prometheus

Json Backend

I had some trouble getting Netdata to work with MongoDB, a JSON database. I pointed Netdata to a particular port, and then set up a simple echo socket listener in Python, but saw no activity on the port.

I tried this using the following /etc/netdata/netdata.conf:

[backend]
	enabled = yes
	type = json
	destination = localhost:27017
	data source = average
	prefix = netdata
	update every = 10
	buffer on failures = 10
	timeout ms = 20000
        send charts matching = *
        send names instead of ids = yes

Securing Netdata

To secure the Netdata portal, set up a VPN and bind Netdata to the VPN IP address.

See Netdata/Security

Resources

Netdata Github repo: https://github.com/firehol/netdata

Netdata wiki: https://github.com/firehol/netdata/wiki

Netdata wiki article on setting up Prometheus backend: https://github.com/firehol/netdata/wiki/Netdata,-Prometheus,-and-Grafana-Stack

Netdata command line options: https://github.com/firehol/netdata/wiki/Command-Line-Options

Databases

Replicating databases across multiple netdata instances: https://github.com/firehol/netdata/wiki/Replication-Overview

Archiving data to database backends: https://github.com/firehol/netdata/wiki/netdata-backends

Flags