如何在Ubuntu 16.04上使用Netdata设置实时性能监控

介绍

Netdata通过可扩展的web仪表盘,可视化你的Linux系统的进程和服务提供准确的性能监测。它监视有关CPU,内存,磁盘,网络,进程等的指标。 Netdata安装后不需要额外的配置,但提供了显着的自定义。 应用程序的效率和速度的目标是成为媲美本地控制台管理工具,如 vmstatiostat ,和 htop 。 本教程中的步骤涵盖了使用其内置的Web服务器或者可选地使用Nginx成功设置运行Netdata的一台Ubuntu 16.04服务器所需的一切。

先决条件

要遵循本教程,您需要:

第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
请记住,上述估计是基于股票仪表板使用的图表数量。将来删除或添加自定义图表将影响这些估计值。 打开Netdata的主配置文件与 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图表 现在我们知道仪表板和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代理仪表板页面的传入请求。我们还将添加一个简单的身份验证提示,以便只有具有正确用户名和密码的人才能访问它。 下面是要复制和粘贴的整个配置文件。改变两个红色突出显示的项目 listenserver_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样式指示器会发生变化。 HUD指示器图像 本概述部分中的各个图形和图表提供了每个系统方面的详细帐户,从CPU到内存,到网络流量等。 CPU图示例 图表是交互式的,可以使用鼠标按钮向左或向右拖动,以在不同的时间间隔来回滚动。 RAM图示例 按住 SHIFT和或淡出图形上的鼠标滚轮将缩小或扩大时间标记滚动。双击图表将其重置为默认外观和视图。 网络图示例 在仪表板上导航的最快方法是使用页面右侧的菜单树。这会根据您当前正在查看的网页的哪个部分更改焦点和颜色。 菜单树 向下滚动页面或使用菜单树可访问更多深入的图表。这些非常详细,并且以与初始概述部分中的图表相同的方式进行控制。 菜单树图像 通过Netdata可以获得许多这些额外的特定统计图。 GUI的一个重要部分是更新页面。 Netdata定期接收更新,并保持您的安装电流很容易做到。仪表板包含了允许你检查新版本是否是可供下载顶部的 更新按钮。 更新按钮图像 单击此按钮将打开更多的细节一个新的菜单,以及 现在检查按钮手动检查更新。 更新检查详细信息 如果有可用的更新,你只需要运行从Netdata Git仓库,这是我们在第1步。也就是说,当有可用的更新,只需运行克隆到Linux用户的主目录所提供的更新脚本 sudo ~/netdata/netdata-updater.sh命令行。

结论

要了解更多关于Netdata项目和如何进一步扩大什么已经在这里设置,请访问 Netdata GitHub的项目 。 在Netdata注册表的信息,报警设置和安装自定义图表/模块涵盖了 Netdata维基 ,其中还讨论喜欢生成HTML徽章或处理Netdata的日志文件的主题。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏