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

介绍

Netdata通过可扩展的Web仪表板提供准确的性能监控,可视化 Linux系统上的流程和服务,监控CPU,内存,磁盘,网络,流程等指标。

Netdata 一旦安装,不需要额外的配置,但提供了显著的定制。应用程序的效率和速度旨在与原生控制台管理工具(如vmstat、iostat 和htop)相比。

本教程中的步骤涵盖了你需要成功设置一个 Ubuntu 16.04 服务器,使用其内置的 Web 服务器运行 Netdata 或可选地使用 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 将在下次重新启动服务器时启用,并持续在未来的重新启动中。

首先,通过使用sudos旗帜启动并输入新的壳会话作为服务器的根用户,这是必要的,因为从以前使用的两个命令输出重定向(通过>操作员),并且需要由根壳执行才能成功。

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 Chart Image

现在我们知道仪表板和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 Requiredauth_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 风格指标在随后的图表中每一个时间段时都会改变。

HUD Indicators Image

本概述部分中的个别图表和图表为每个系统方面提供了详细的报告,从CPU到内存到网络流量等等。

CPU Chart Example

图表是互动的,可以用鼠标按钮拖动到左边或右边,通过不同的时间间隔前进。

RAM Chart Example

按住SHIFT并在图表上用鼠标滚动或滚动将缩小或扩展时间标记,双击图表以将其重置为默认外观和视图。

Network Chart Example

导航仪表板的最快方法是使用页面右侧的菜单树,这取决于您当前正在查看页面的哪个部分而改变焦点和颜色。

Menu Tree

滚动页面或使用菜单树可以访问更深入的图表,这些图表非常详细,并且与初始概览部分中的图表相同的方式进行控制。

Menu Tree Image

有许多这些额外的特定州的图表可通过Netdata。

GUI的一个重要部分是更新页面. Netdata 经常收到更新,保持安装流程很容易做. 仪表板上包含一个 Update 按钮,允许您检查新版本是否可下载。

Update Button Image

点击此按钮将打开一个新的菜单,提供更多细节,以及一个 检查现在按钮,以手动检查更新。

Update Check Details Image

如果有一个更新可用,你只需要从Netdata Git存储库运行提供的更新脚本,我们在步骤 1中克隆到Linux用户的主目录,也就是说,当更新可用时,只需从命令行运行sudo ~/netdata/netdata-updater.sh

结论

要了解更多关于 Netdata 项目的信息,以及如何进一步扩展这里所设置的内容,请访问 Netdata GitHub 项目。有关 Netdata 注册表、设置警报和安装自定义图表/模块的信息,请参阅 Netdata wiki,其中还讨论了生成 HTML 标签或处理 Netdata 日志文件等主题。

Published At
Categories with 技术
comments powered by Disqus