介绍
Netdata通过可扩展的web仪表盘,可视化你的Linux系统的进程和服务提供准确的性能监测。它监视有关CPU,内存,磁盘,网络,进程等的指标。 Netdata安装后不需要额外的配置,但提供了显着的自定义。 应用程序的效率和速度的目标是成为媲美本地控制台管理工具,如vmstat
,
iostat
,和
htop
。 本教程中的步骤涵盖了使用其内置的Web服务器或者可选地使用Nginx成功设置运行Netdata的一台Ubuntu 16.04服务器所需的一切。
先决条件
要遵循本教程,您需要:- 一个Ubuntu的16.04服务器通过下面的设置为Ubuntu 16.04初始服务器设置 ,包括Sudo非root用户和防火墙。
- 安装在服务器,您可以通过以下设置上的Git 如何在Ubuntu 16.04安装Git 。
- 或者,Nginx的安装在服务器上,您可以通过以下设置上如何在Ubuntu 16.04安装Nginx。这不是强制性的,但允许比Netdata的内置Web服务器更多的功能和安全性。
第1步 - 安装Netdata
在我们安装任何东西之前,请确保系统包索引是最新的。sudo apt-get update
接下来,安装Netdata的依赖,其中包括
gcc
(C编译器),
GNU Autoconf工具,
GUID管理,压缩库Netdata的内部Web服务器。
sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl
下一组包是可选的,但通过Netdata建议,并包括
Python中 ,一些Python包和Node.js的 的稳定版本
的Node.js与系统包管理器捆绑在一起是罚款Netdata的要求。安装这些。
sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat
要安装Netdata本身,我们必须使用项目的GitHub存储库。将Netdata存储库克隆到您的主目录中。
git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata
移动到新克隆的目录。
cd ~/netdata
现在,构建并使用安装应用程序
netdata-installer.sh
shell脚本此目录中。 确保追加
sudo
此地,否则其中Netdata收集系统数据(通过数据采集器)的方式将无法正常工作。
sudo ./netdata-installer.sh
您将首先看到的输出包含Netdata将存储其所有组件的位置的信息。你可以阅读这些,所以你有点更熟悉程序如何在文件系统安装后传播。
Installer Output. . .
It will be installed at these locations:
- the daemon at /usr/sbin/netdata
- config files at /etc/netdata
- web files at /usr/share/netdata
- plugins at /usr/libexec/netdata
- cache files at /var/cache/netdata
- db files at /var/lib/netdata
- log files at /var/log/netdata
- pid file at /var/run
. . .
按
ENTER
继续安装。稍后,在输出链的末尾,您将看到以下消息:
Installer Output. . .
^
|.-. .-. .-. .-. .-. . netdata .-. .-
| '-' '-' '-' '-' '-' is installed and running now! -' '-'
+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->
enjoy real-time performance and health monitoring...
Netdata现在已成功安装并运行,并且在重新启动服务器时也将自动运行。 如果你有UFW启用,如详细的
Ubuntu 16.04初始服务器设置教程,你需要打开端口
19999
的Netdata的内部Web服务器。
sudo ufw allow 19999/tcp
在这一点上,你可以通过访问查看默认的仪表板
http:// your_server_ip :19999/
在你喜欢的浏览器。您将看到系统的实时指标概述。这是一个很好的检查一切工作到目前为止,但在我们探索GUI之前,让我们自定义Netdata一点。
第2步 - 配置Netdata的内存使用
你可以在浏览器中访问查看Netdata的当前配置http://your_server_ip :19999/netdata.conf
。 您将在这里看到,所有(或大部分)的配置选项都注释掉(即开头带有
#
)。这是因为Netdata的配置通过使用一组假设的默认值来工作。任何禁用的设置使用Netdata的默认值;如果设置为取消注释,则指定的值将覆盖默认值。这保持配置文件仅包含您已修改的内容。 回到你的服务器上,配置文件本身是
/etc/netdata/netdata.conf
。 我们将在本教程中自定义的选项是
history
参数。这控制Netdata使用的内存数据库的最大大小。 这里是你必须决定多少RAM要专用于Netdata,或者你想要保留记录图表数据在丢失之前多少时间:
- 3600秒(图表数据保留1小时)使用15 MB RAM
- 7200秒(图表数据保留2小时)使用30 MB RAM
- 14400秒(4小时的图表数据保留)使用60 MB的RAM
- 28800秒(8小时的图表数据保留)使用120 MB的RAM
- 43200秒(12小时的图表数据保留)使用180 MB的RAM
- 86400秒(24小时的图表数据保留)使用360 MB的RAM
nano
或者你喜欢的文本编辑器。
sudo nano /etc/netdata/netdata.conf
找到
history
的选项
[global]
部分。
/etc/netdata/netdata.conf
. . .
[global]
# glibc malloc arena max for plugins = 1
. . .
# hostname = test-netdata
# history = 3600
# update every = 1
. . .
替换
3600
价值给你之前决定之一。 在这里,我们使用的是
14400
,这给了美国第小时的数据保留。 确保还通过删除注释行
#
符号所以这个选项被Netdata不再理会。
/etc/netdata/netdata.conf
. . .
[global]
# glibc malloc arena max for plugins = 1
. . .
# hostname = test-netdata
history = 14400
# update every = 1
. . .
进行此更改后保存并关闭文件。 虽然这种修改可能增加Netdata将使用的RAM数量,但我们将在下一步中实现的下一个修改应该显着减少。
第3步 - 启用内核同页合并
即使Netdata运行和工作直接开箱,还有更多的修改,我们可以使Netdata使用系统资源的方式,这将加速和优化其性能。我们将与使 内核同页合并 ,或KSM短启动。 Netdata开发人员估计这会将Netdata的内存使用量减少40-60%。 一旦启用,KSM守护程序会定期扫描内存,寻找可由单个写保护页替换的内容相同的页。在这种情况下,它允许在系统上运行的不同进程或程序之间共享相同的存储器页。这减少了不必要的重复存储器内容的创建。 要永久启用的Linux系统内核的这方面,打开/etc/rc.local
使用文本编辑器文件。
sudo nano /etc/rc.local
这
/etc/rc.local
文件或
运行控制文件 ,其他一切正常的Linux系统服务之后,执行和流程已启动。它对于指定自定义服务很有用 - 或者在我们的例子中,在服务器运行时启用KSM。 下面添加突出显示该文件的末尾两个命令,最后才
exit 0
线,如下所示:
/etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
exit 0
第一个命令将1到
run
KSM内核文件,这使得该功能。第二个命令告诉KSM守护进程每秒运行一次,并评估100页去重复。 一旦保存并关闭文件,KSM将在下次服务器重新启动时启用,并在以后的重新启动中保持。要启用这个服务器的正常运行电流的其余部分,你需要运行您加入两个命令
rc.local
手动在命令行上。 首先,启动并通过输入新的shell会话作为服务器的根用户
-s
标志使用
sudo
。 因为从早期使用输出重定向的两个命令(通过这是必要
>
运营商)必须由一个root shell执行成功。
sudo -s
现在输入前面的两个命令:
echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
然后,离开root shell并返回正常的shell会话。
exit
最后,要应用我们在此步骤和此前的步骤所做的所有更改,我们必须重新启动Netdata。
sudo systemctl restart netdata
您可以通过在Netdata仪表板中查找新添加的活动KSM图表来验证KSM是否已启用。这是在右边的菜单树发现,在
记忆>内存Deduper。
现在我们知道仪表板和KSM正在工作,值得通过像Nginx这样的web服务器而不是内置的web服务器来访问仪表板。这不是完全必要的,但它是建议,所以按照下一步设置它。
第4步 - 通过Nginx主控仪表板(可选)
通过Nginx托管Netdata使得更容易安全访问仪表板,并且还允许您在将来需要时指向其他服务器的Netdata仪表板。您可以按照 前提教程Nginx要立即安装它,如果你还没有。 您还需要安装apache2-utils
软件包。 这个软件包包含了
htpasswd
程序,我们会需要以后进行安全访问仪表板页面。
sudo apt-get install apache2-utils
接下来,创建一个新的Nginx主机配置文件。请注意,在这里,我们使用了一个文件
/conf.d
目录,但你可以使用
/sites-available
和
/sites-enabled
如果你使用的Nginx比Netdata其他的东西。 你可以阅读更多关于Nginx的文件和目录
设置教程 。
sudo nano /etc/nginx/conf.d/default.conf
此配置文件将告诉Nginx代理仪表板页面的传入请求。我们还将添加一个简单的身份验证提示,以便只有具有正确用户名和密码的人才能访问它。 下面是要复制和粘贴的整个配置文件。改变两个红色突出显示的项目
listen
和
server_name
指示以上服务器的IP地址和分配域名,分别为。 照顾到包括终接
;
在每个末端。 如果你没有一个域名,您可以将
server_name
指令为
example.com
。
/etc/nginx/conf.d/default.conf
upstream netdata-backend {
server 127.0.0.1:19999;
keepalive 64;
}
server {
listen your_server_ip:80;
server_name example.com;
auth_basic "Authentication Required";
auth_basic_user_file netdata-access;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://netdata-backend;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
}
一旦你确定自己的文件匹配此代码块,您可以保存并退出以返回到命令提示符。 让我们解释这个文件,以便你了解它在做什么。这是第一部分:
/etc/nginx/conf.d/default.conf
upstream netdata-backend {
server 127.0.0.1:19999;
keepalive 64;
}
这种
upstream
命名为模块
netdata-backend
目标内置Netdata Web服务器通过使用服务器的环回地址
127.0.0.1
和Netdata的端口,
19999
。 一个
keepalive
指令设置上游空闲连接,可以在任何给定时间(每个Nginx的工作进程)保持开放的最大数量。 这种
upstream
模块定义被要求以后
proxy_pass
指令。 后直接这是主要的
server
模块。
/etc/nginx/conf.d/default.conf
server {
listen your_server_ip:80;
server_name example.com;
auth_basic "Authentication Required";
auth_basic_user_file netdata-access;
前两行中的块定义的外部IP地址的Nginx应该
listen
为当客户端试图连接。 该
server_name
指令告诉nginx当客户使用指定的域名运行该服务器模块。 此代码段中的最后两行设置简单的HTTP用户名和密码身份验证。为此,它使用的
auth_basic
模块来显示用户名和密码的提示。 您可以自定义提示的消息; 在这里,它被设置为
需要身份验证 。
auth_basic_user_file
指定一个文件名和位置来存储认证提示的登录凭据,在这个步骤中创建以后。 最后一个
location
块,嵌套在里面的
server
模块,处理传入的请求,Nginx的的代理和传球。
/etc/nginx/conf.d/default.conf
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://netdata-backend;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
}
总而言之,这段代码是将客户端请求传递给Netdata Web服务器,并依次是仪表板。的
proxy_pass
指令行指回
upstream
模块在该文件的开始,必须用名称指向它
netdata-backend
。 如果还没有,您可以保存并关闭此配置文件。这里就是
htpasswd
从程序
apache2-utils
包将帮助我们建立仪表板登录提示用户登录凭据。 首先,我们将创建一个用户名和密码。运行以下命令,跟你想的Netdata使用的任何用户名替换
sammy 。出现提示时,输入您要使用的密码。
sudo htpasswd -c /etc/nginx/netdata-access sammy
这将创建在文件
/etc/nginx/netdata-access
包含您所提供的用户名和密码。生成的密码在文件中加密,因此不能看作纯文本。 重新启动Nginx使我们添加的新配置活动。
sudo systemctl restart nginx
为了测试首次Nginx的配置,请访问
http:// your_server_ip
在您最喜爱的网页浏览器。您将看到验证提示。输入您之前在此步骤中提供的用户名和密码,以便访问信息中心,我们将在第5步中进行探索。
第5步 - 探索仪表板
如果您没有按照可选第4步,访问http://your_server_ip:19999/
在你喜欢的浏览器现在可以访问控制板。 您将看到仪表板和系统实时指标的概述。当您在随后的图中将鼠标悬停在每个时间段上时,页面顶部的HUD样式指示器会发生变化。
本概述部分中的各个图形和图表提供了每个系统方面的详细帐户,从CPU到内存,到网络流量等。
图表是交互式的,可以使用鼠标按钮向左或向右拖动,以在不同的时间间隔来回滚动。
按住
SHIFT
和或淡出图形上的鼠标滚轮将缩小或扩大时间标记滚动。双击图表将其重置为默认外观和视图。
在仪表板上导航的最快方法是使用页面右侧的菜单树。这会根据您当前正在查看的网页的哪个部分更改焦点和颜色。
向下滚动页面或使用菜单树可访问更多深入的图表。这些非常详细,并且以与初始概述部分中的图表相同的方式进行控制。
通过Netdata可以获得许多这些额外的特定统计图。 GUI的一个重要部分是更新页面。 Netdata定期接收更新,并保持您的安装电流很容易做到。仪表板包含了允许你检查新版本是否是可供下载顶部的
更新按钮。
单击此按钮将打开更多的细节一个新的菜单,以及
现在检查按钮手动检查更新。
如果有可用的更新,你只需要运行从Netdata Git仓库,这是我们在第1步。也就是说,当有可用的更新,只需运行克隆到Linux用户的主目录所提供的更新脚本
sudo ~/netdata/netdata-updater.sh
命令行。