介绍
Netdata通过可扩展的Web仪表板提供准确的性能监控,可视化 Linux系统上的流程和服务,监控CPU,内存,磁盘,网络,流程等指标。
Netdata 一旦安装,不需要额外的配置,但提供了显著的定制。应用程序的效率和速度旨在与原生控制台管理工具(如vmstat、iostat 和htop)相比。
本教程中的步骤涵盖了你需要成功设置一个 Ubuntu 16.04 服务器,使用其内置的 Web 服务器运行 Netdata 或可选地使用 Nginx。
前提条件
要遵循本教程,您将需要:
- 一个 Ubuntu 16.04 服务器是按照 Ubuntu 16.04 初始服务器设置设置的,包括一个 sudo 非 root 用户和防火墙
- Git 安装在您的服务器上,您可以通过以下 Ubuntu 16.04 上的如何安装 Git设置。
- 可选地, Nginx 安装在您的服务器上,您可以通过以下 Ubuntu 16.04 上的如何安装 Nginx设置。
步骤 1 - 安装网络数据
在我们安装任何东西之前,请确保系统包索引是最新的。
1sudo apt-get update
接下来,安装Netdata的依赖,其中包括‘gcc’(C编译器)、GNU Autoconf工具、GUID管理以及Netdata内部Web服务器的压缩库。
1sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl
下一组包是可选的,但由Netdata推荐的,包括Python(https://andsky.com/tags/python?type=tutorials),一些Python包和Node.JS。
1sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat
要安装Netdata本身,我们必须使用该项目的GitHub存储库,将Netdata存储库克隆到您的主目录中。
1git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata
转到新克隆的目录。
1cd ~/netdata
现在使用这个目录中的netdata-installer.sh
壳脚本构建和安装应用程序. 请确保在这里附加sudo
,否则Netdata收集系统数据的方式(通过数据收集器)将无法正常工作。
1sudo ./netdata-installer.sh
您将首先看到的输出包含有关 Netdata 将存储其所有组件的信息. 您可以通过这些阅读,以便您更熟悉该程序在安装后如何在文件系统中传播。
1[secondary_label Installer Output]
2. . .
3 It will be installed at these locations:
4
5 - the daemon at /usr/sbin/netdata
6 - config files at /etc/netdata
7 - web files at /usr/share/netdata
8 - plugins at /usr/libexec/netdata
9 - cache files at /var/cache/netdata
10 - db files at /var/lib/netdata
11 - log files at /var/log/netdata
12 - pid file at /var/run
13. . .
点击ENTER
以继续安装. 过了一会儿,在输出链的末尾,你会看到以下消息:
1. . .
2[secondary_label Installer Output]
3 ^
4 |.-. .-. .-. .-. .-. . netdata .-. .-
5 | '-' '-' '-' '-' '-' is installed and running now! -' '-'
6 +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->
7
8 enjoy real-time performance and health monitoring...
Netdata 现在已安装并成功运行,并且在重新启动服务器时也会自动运行。
如果您已启用了 UFW,正如《Ubuntu 16.04 初始服务器设置》(LINK0)教程中详细描述的那样,您需要为 Netdata 内部 Web 服务器打开端口 `19999』。
1sudo 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 使用的内存数据库的最大尺寸。
这里是您需要决定要花多少内存用于 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
或您最喜欢的文本编辑器打开 Netdata 的主要配置文件。
1sudo nano /etc/netdata/netdata.conf
在全球
部分中找到历史
选项。
1[label /etc/netdata/netdata.conf]
2. . .
3[global]
4 # glibc malloc arena max for plugins = 1
5. . .
6 # hostname = test-netdata
7 # history = 3600
8 # update every = 1
9. . .
在这里,我们正在使用14400
,这给了我们4个小时的数据保留时间. 请确保通过删除#
符号来删除该行,以便Netdata不再忽视此选项。
1[label /etc/netdata/netdata.conf]
2. . .
3[global]
4 # glibc malloc arena max for plugins = 1
5. . .
6 # hostname = test-netdata
7 history = 14400
8 # update every = 1
9. . .
保存并关闭该文件在进行此更改后。
虽然这种修改可能会增加Netdata将使用的RAM量,但我们在下一步实施的下一个修改应该大大减少它。
步骤 3 – 允许内核同一页合并
尽管Netdata运行并直接工作,但我们可以对Netdata使用系统资源的方式进行更多的修改,这将加速并优化其性能。
一旦启用,KSM DAEMON会定期扫描内存,寻找具有相同内容的页面,这些页面可以被单个写入保护的页面取代,在这种情况下,它允许在系统上运行的不同流程或程序之间共享相同的内存页面,从而减少不必要的重复内存内容的创建。
要永久启用 Linux 系统内核的这一方面,请使用文本编辑器打开 /etc/rc.local
文件。
1sudo nano /etc/rc.local
此 /etc/rc.local
文件或 run 控制文件 在所有其他正常 Linux 系统服务和流程启动后执行。
将下面的两个命令添加到文件的末尾,如下所示,在最后一个exit 0
行之前:
1[label /etc/rc.local]
2#!/bin/sh -e
3#
4# rc.local
5#
6# This script is executed at the end of each multiuser runlevel.
7# Make sure that the script will "exit 0" on success or any other
8# value on error.
9#
10# In order to enable or disable this script just change the execution
11# bits.
12#
13# By default this script does nothing.
14
15echo 1 > /sys/kernel/mm/ksm/run
16echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
17
18exit 0
第一个命令将1添加到KSM内核文件中,允许该功能,第二个命令告诉KSM大象每秒运行一次,并评估100页以免重复复。
一旦您保存并关闭该文件,KSM 将在下次重新启动服务器时启用,并持续在未来的重新启动中。
首先,通过使用sudo
的s
旗帜启动并输入新的壳会话作为服务器的根用户,这是必要的,因为从以前使用的两个命令输出重定向(通过>
操作员),并且需要由根壳执行才能成功。
1sudo -s
接下来,我们先从前的两个命令中输入:
1echo 1 > /sys/kernel/mm/ksm/run
2echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
然后,离开根壳并返回正常的壳会话。
1exit
最后,要应用我们在这个步骤和之前的步骤中所做的所有更改,我们必须重新启动 Netdata。
1sudo systemctl restart netdata
您可以通过在 Netdata 仪表板中查找新添加的活跃 KSM 图表来验证 KSM 是否已启用。
现在我们知道仪表板和KSM正在工作,值得通过像Nginx这样的Web服务器授予访问仪表板,而不是内置的Web服务器。
步骤 4 — 通过 Nginx 托管仪表板(可选)
通过 Nginx 托管 Netdata 使安全访问仪表板更容易,并允许您在未来指向其他服务器的 Netdata 仪表板,如果您需要。
您还需要安装apache2-utils
包. 此包包含htpasswd
程序,我们稍后将需要用于确保访问仪表板页面。
1sudo apt-get install apache2-utils
接下来,创建一个新的 Nginx 主机配置文件. 请注意,在这里,我们正在使用一个文件在 /conf.d 目录中,但如果您正在使用 Nginx 用于其他事物而不是 Netdata,您可以使用
/sites-available’ 和 `/sites-enabled’ 阅读更多关于 Nginx 文件和目录在 设置教程中。
1sudo nano /etc/nginx/conf.d/default.conf
此配置文件会告诉 Nginx 代理来接收仪表板页面的请求,我们还会添加一个简单的身份验证提示,以便只有有正确的用户名和密码的人才能访问它。
下面是整个配置文件,您可以复制和粘贴。 更改上面的倾听
和server_name
指令的两个红色突出项目,分别为您的服务器的IP地址和分配的域名。 请注意在每个字段的末尾包含终止
; 如果您没有域名,您可以将server_name
指令留给example.com
。
1[label /etc/nginx/conf.d/default.conf]
2upstream netdata-backend {
3 server 127.0.0.1:19999;
4 keepalive 64;
5}
6
7server {
8 listen your_server_ip:80;
9 server_name example.com;
10
11 auth_basic "Authentication Required";
12 auth_basic_user_file netdata-access;
13
14 location / {
15 proxy_set_header X-Forwarded-Host $host;
16 proxy_set_header X-Forwarded-Server $host;
17 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
18 proxy_pass http://netdata-backend;
19 proxy_http_version 1.1;
20 proxy_pass_request_headers on;
21 proxy_set_header Connection "keep-alive";
22 proxy_store off;
23 }
24}
一旦您确定自己的文件匹配此代码块,您可以保存并退出以返回命令提示。
让我们解释这个文件,以便您了解它在做什么。这是第一个部分:
1[label /etc/nginx/conf.d/default.conf]
2upstream netdata-backend {
3 server 127.0.0.1:19999;
4 keepalive 64;
5}
这个名为netdata-backend
的上游
模块通过使用服务器的循环返回地址127.0.0.1
和Netdata的端口19999
来瞄准内置的Netdata Web服务器。
接下来是主要的服务器
块。
1[label /etc/nginx/conf.d/default.conf]
2server {
3 listen your_server_ip:80;
4 server_name example.com;
5
6 auth_basic "Authentication Required";
7 auth_basic_user_file netdata-access;
区块中的前两个行定义了外部 IP 地址 Nginx 应该在客户端尝试连接时倾听
。
本片的最后两行设置了简单的 HTTP 用户名和密码验证。它使用auth_basic
模块来显示用户名和密码提示。您可以定制提示的消息;在这里,它设置为 Authentication Required。auth_basic_user_file
指定一个文件名和位置来存储验证提示的登录凭证,在本步后创建。
最后一个位置
块,嵌入到服务器
块内,处理代理和传输到 Nginx 的请求。
1[label /etc/nginx/conf.d/default.conf]
2 location / {
3 proxy_set_header X-Forwarded-Host $host;
4 proxy_set_header X-Forwarded-Server $host;
5 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
6 proxy_pass http://netdata-backend;
7 proxy_http_version 1.1;
8 proxy_pass_request_headers on;
9 proxy_set_header Connection "keep-alive";
10 proxy_store off;
11 }
12}
简而言之,这个代码是将客户端请求传递到Netdata的Web服务器上,反过来又传递到仪表板上。‘proxy_pass’指令行指向文件开始时的‘上游’模块,必须以名称指向它,‘netdata-backend’。
如果你还没有,你可以保存和关闭这个配置文件. 在这里,来自apache2-utils
包的htpasswd
程序帮助我们创建仪表板登录提示的用户登录凭证。
首先,我们将创建一个用户名和密码。运行下面的命令,以您在Netdata中想要使用的用户名代替 sammy。
1sudo htpasswd -c /etc/nginx/netdata-access sammy
这会创建一个包含您提供的用户名和密码的 /etc/nginx/netdata-access
文件。
重新启动 Nginx 以激活我们添加的新配置。
1sudo systemctl restart nginx
要首次测试 Nginx 配置,请访问您最喜欢的 Web 浏览器中的 http://your_server_ip
. 您将看到一个身份验证提示。 在此步骤中输入您之前提供的用户名以及密码以访问仪表板,我们将在步骤 5 中探索。
步骤5:探索仪表板
如果您没有遵循可选步骤 4,请访问您最喜欢的浏览器中的http://your_server_ip:19999/`现在访问仪表板。
您将看到仪表板和系统的实时指标的概述. 页面顶部的 HUD 风格指标在随后的图表中每一个时间段时都会改变。
本概述部分中的个别图表和图表为每个系统方面提供了详细的报告,从CPU到内存到网络流量等等。
图表是互动的,可以用鼠标按钮拖动到左边或右边,通过不同的时间间隔前进。
按住SHIFT
并在图表上用鼠标滚动或滚动将缩小或扩展时间标记,双击图表以将其重置为默认外观和视图。
导航仪表板的最快方法是使用页面右侧的菜单树,这取决于您当前正在查看页面的哪个部分而改变焦点和颜色。
滚动页面或使用菜单树可以访问更深入的图表,这些图表非常详细,并且与初始概览部分中的图表相同的方式进行控制。
有许多这些额外的特定州的图表可通过Netdata。
GUI的一个重要部分是更新页面. Netdata 经常收到更新,保持安装流程很容易做. 仪表板上包含一个 Update 按钮,允许您检查新版本是否可下载。
点击此按钮将打开一个新的菜单,提供更多细节,以及一个 检查现在按钮,以手动检查更新。
如果有一个更新可用,你只需要从Netdata Git存储库运行提供的更新脚本,我们在步骤 1中克隆到Linux用户的主目录,也就是说,当更新可用时,只需从命令行运行sudo ~/netdata/netdata-updater.sh
。
结论
要了解更多关于 Netdata 项目的信息,以及如何进一步扩展这里所设置的内容,请访问 Netdata GitHub 项目。有关 Netdata 注册表、设置警报和安装自定义图表/模块的信息,请参阅 Netdata wiki,其中还讨论了生成 HTML 标签或处理 Netdata 日志文件等主题。