Ubuntu上使用Netdata设置实时性能监控的详细流程

介绍

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

Netdata一旦安装就不需要额外的配置,但提供了重要的定制。该应用程序的效率和速度旨在与本机控制台管理工具(如vmstatiostathtop)相媲美。

本教程中的步骤涵盖了使用其内置Web服务器或可选地使用Nginx成功设置运行Netdata的一台Ubuntu 16.04服务器所需的一切。

准备

要学习本教程,您需要:

  • 一个Ubuntu 16.04服务器,包括具有sudo权限的非root用户。
  • 服务器上安装Git
  • (可选)在服务器上安装Nginx。这不是强制性的,但允许比Netdata的内置Web服务器更多的功能和安全性。

第一步 - 安装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,您需要为Netdata的内部Web服务器打开端口19999

$ sudo ufw allow 19999/tcp

此时,您可以通过在您喜欢的浏览器中访问http:// your_server_ip:19999/来查看默认仪表板。 您将看到系统的实时指标的概述。

第二步 - 配置Netdata的内存使用情况

您可以通过在浏览器中访问http://your_server_ip:19999/netdata.conf查看Netdata的当前配置。

您将在此处看到所有(或大多数)可配置选项都已注释掉(即以#开头)。这是因为Netdata的配置使用一组假定的默认值。任何禁用的设置都使用Netdata的默认值; 如果取消注释某个设置,则指定的值将覆盖默认值。这使配置文件仅包含您修改的内容。

回到您的服务器上,配置文件本身就是/etc/netdata/netdata.conf。我们将在本教程中自定义的选项是history参数。它控制Netdata使用的内存数据库的大小。

在这里,您需要确定要为Netdata提供多少RAM,或者在丢失之前将记录的图表数据保留多长时间:

  • 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的主配置文件。

$ sudo nano /etc/netdata/netdata.conf

找到[global]部分中的history选项。

/etc/netdata/netdata.conf

代码如下:

. . .[global] # glibc malloc arena max for plugins = 1. . . # hostname = test-netdata # history = 3600 # update every = 1. . .

将3600值替换为您之前决定的值。在这里,我们正在使用14400,这为我们提供了4小时的数据保留。确保通过除#符号来取消注释该行,以便Netdata不再忽略此选项。

/etc/netdata/netdata.conf

. . .
[global]
 # glibc malloc arena max for plugins = 1
. . .
 # hostname = test-netdata
 # history = 3600
 # update every = 1
. . .

进行此更改后保存并关闭文件。虽然这种修改可能会增加Netdata将使用的RAM量,但我们将在下一步中实施的下一个修改应该会显著减少它。

第三步 - 启用内核同页合并

即使Netdata直接运行并初始情况下使用,我们可以对Netdata使用系统资源的方式进行更多修改,这将加速并优化其性能。我们将从启用内核同页合并(简称KSM)开始。Netdata开发人员估计这会将Netdata的内存使用量降低40-60%。

启用后,KSM守护程序会定期扫描内存,查找可由单个写保护页替换的相同内容的页面。在此上下文中,它允许在系统上运行的不同进程或程序之间共享相同的内存页。这减少了不必要的重复内存内容的创建。

要永久启用Linux系统内核的此方面,请使用文本编辑器打开/etc/rc.local文件。

代码如下:

$ sudo nano /etc/rc.local

在启动所有其他正常Linux系统服务和进程之后,将执行/etc/rc.local文件或运行控制文件。它对于指定自定义服务很有用-或者,在我们的示例中,用于在服务器运行时启用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

echo 1 > /sys/kernel/mm/ksm/run 第一个命令将1添加到runKSM内核文件中,该文件启用该功能。第二个命令echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs 告诉KSM守护程序每秒运行一次并评估100个页面以进行重复数据删除。

保存并关闭文件后,KSM现在将在下次服务器重新启动时启用,并在将来重新启动时保留。要在此服务器的当前正常运行时间内启用它,您需要在命令行上手动运行您添加到rc.local的两个命令。

首先,通过在sudo中使用-s标志,启动并输入新的shell会话作为服务器的root用户。这是必要的,因为早期的两个命令使用输出重定向(通过>运算符)并且需要由root shell执行才能成功。

$ sudo -s

现在输入之前的两个命令:

echo 1 > /sys/kernel/mm/ksm/runecho 1000 > /sys/kernel/mm/ksm/sleep_millisecs

然后,保留root shell并返回正常的shell会话。

$ exit

最后,要应用我们在此步骤以及此前的步骤中执行的所有更改,我们必须重新启动Netdata。

$ sudo systemctl restart netdata

您可以通过在Netdata仪表板中查找新添加的活动KSM图表来验证KSM现在是否已启用。这可以在右侧菜单树中的Memory > Memory Deduper下找到。

KSM Chart Image

现在我们知道仪表板和KSM正在运行,值得通过像Nginx这样的Web服务器而不是内置的Web服务器来访问仪表板。这不是完全必要的,但建议使用,因此请按照下一步进行设置。

第四步 - 通过Nginx托管仪表板(可选)

通过Nginx托管Netdata可以更轻松地保护对仪表板的访问,并且如果需要,还可以让您在将来指向其他服务器的Netdata仪表板。

您还需要安装apache2-utils软件包。该软件包包含htpasswd程序,稍后我们将需要该程序来保护对仪表板页面的访问。

$ sudo apt-get install apache2-utils

接下来,创建一个新的Nginx主机配置文件。请注意,在这里,我们在/conf.d目录中使用了一个文件,但是如果您使用Nginx进行Netdata以外的其他操作,则可以使用/sites-available/ sites-enabled

$ 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;}

这个名为netdata-backendupstream模块使用服务器的环回地址127.0.0.1和Netdata的端口19999来定位内置的Netdata Web服务器。keepalive指令设置在任何给定时间(对于每个Nginx工作进程)可以保持打开的上游空闲连接的最大数量。proxy_pass指令稍后需要此upstream模块定义。

在此之后直接是主要server块。

/etc/nginx/conf.d/default.conf

upstream netdata-backend {
 server 127.0.0.1:19999;
 keepalive 64;
}

块中的前两行定义了Nginx在客户端尝试连接时应该listen的外部IP地址。server_name指令告诉Nginx在客户端使用指定的域名时运行此服务器块。

此代码段中的最后两行设置了简单的HTTP用户名和密码身份验证。它使用auth_basic模块显示用户名和密码提示。您可以自定义提示消息;

在这里,它设置为Authentication Required。auth_basic_user_file指定用于存储身份验证提示的登录凭据的文件名和位置,稍后在此步骤中创建。

最后一个location块嵌套在server块内,处理代理并将传入的请求传递给Nginx。

/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;

总而言之,此代码是将客户端请求传递给Netdata Web服务器,然后是仪表板的代码。proxy_pass指令行引用回文件开头的upstream模块必须通过名称netdata-backend指向它。

如果尚未安装,则可以保存并关闭此配置文件。这里是apache2-utils包中的htpasswd程序帮助我们为仪表板登录提示创建用户登录凭据的地方。

首先,我们将创建用户名和密码。运行以下命令,将sammy替换为您要在Netdata中使用的用户名。出现提示时,输入您要使用的密码。

$ sudo htpasswd -c /etc/nginx/netdata-access sammy

这将在/etc / nginx / netdata-access中创建一个包含您提供的用户名和密码的文件。

生成的密码在文件中加密,因此不能将其视为纯文本。

重新启动Nginx以使我们添加的新配置处于活动状态。

$ sudo systemctl restart nginx

要首次测试Nginx配置,请在您喜欢的Web浏览器访问http://your_server_ip。您将看到身份验证提示。输入您在此步骤中先前提供的用户名和密码,以访问仪表板,我们将在第五步中进行探讨。

第五步 - 探索仪表板

如果您没有按照可选第四步进行操作,请立即在您喜欢的浏览器访问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 Button Image

单击此按钮将打开一个包含更多详细信息的新菜单,并打开“立即检查”按钮以手动检查更新。

Update Check Details Image

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

结论

Netdata wiki中介绍了Netdata注册表,设置警报和安装自定义图表/模块的信息,还讨论了生成HTML徽章或处理Netdata日志文件等主题。

总结

以上所述是小编给大家介绍的Ubuntu上使用Netdata设置实时性能监控的详细流程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • ubuntu系统下部署zabbix服务器监控的方法教程

    前言 最近需要部署一套zabbix监控服务器,之前只是玩过zabbix的注入漏洞,但还没布置过,发现网上好多都是centos+源码编译的zabbix,因此写下此篇记录下安装过程,下面来一起看看详细的介绍: 环境ubuntu+apache+mysql+php,没搭建的可以参考这篇文章 php设置: //重要,安装zabbix时会检测这些内容是否已经修改 vim /etc/php5/apache2/php.ini ;date.timezone ===>去掉注释在=后添加 Asia/Shanghai

  • 在Ubuntu上使用Grafana监控Docker的方法

    前言 Grafana 是一个有着丰富指标的开源控制面板.在可视化大规模测量数据的时候是非常有用的.根据不同的指标数据,它提供了一个强大.优雅的来创建.分享和浏览数据的方式. 它提供了丰富多样.灵活的图形选项.此外,针对数据源(Data Source),它支持许多不同的存储后端.每个数据源都有针对特定数据源的特性和功能所定制的查询编辑器.Grafana 提供了对下述数据源的正式支持:Graphite.InfluxDB.OpenTSDB. Prometheus.Elasticsearch 和 Clo

  • Ubuntu上使用Netdata设置实时性能监控的详细流程

    介绍 Netdata通过可扩展的Web仪表板提供准确的性能监控,可以显示Linux系统上的流程和服务.它监控有关CPU,内存,磁盘,网络,进程等的指标. Netdata一旦安装就不需要额外的配置,但提供了重要的定制.该应用程序的效率和速度旨在与本机控制台管理工具(如vmstat,iostat和htop)相媲美. 本教程中的步骤涵盖了使用其内置Web服务器或可选地使用Nginx成功设置运行Netdata的一台Ubuntu 16.04服务器所需的一切. 准备 要学习本教程,您需要: 一个Ubuntu

  • Zabbix 上Windows性能监控的方法

    背景信息 最近在重新看一些关于windows 性能的书籍,对于我这样一个原来使用SCOM监控的懒人来说,Zabbix 上自带的windows OS template 的模板实在是不够用,因为之前SCOM监控包(微软出的,把所有工作都做了,我只需要按需启用规则和告警即可). 默认的Zabbix 性能数据只有Avg Latency,平均的数据也不准,想看下磁盘的Latency以及IOPS要自己动手,看了下zabbix 中windows performance Counter 的语法,我略有退缩了.全

  • Spring Boot 项目做性能监控的操作流程

    Spring Boot特别适合团队构建各种可快速迭代的微服务,同时为了减少程序本身监控系统的开发量,Spring Boot 提供了 actuator 模块,可以很方便的对你的 Spring Boot 程序做监控. 1. actuator接口说明 Spring Boot 应用中加入监控很简单,只需要在pom.xml文件中加入以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifact

  • docker环境搭建JMeter+Grafana+influxdb可视化性能监控平台的教程

    目录 1.安装docker 2.安装及配置influxDB 3.Grafana安装及配置 4.Jmeter配置及压测一个接口 背景: 在用jmeter压测接口的时候发现其原生的监控起来不是很友好,在网上查阅的时候发现结合influxDB和grafana,出来的报告很炫酷,监听结果看起来很舒服很明了. 前言: InfluxDB:是一款用Go语言编写的开源分布式时序数据库.该数据库现在主要用于存储涉及大量的时间戳数据. 小数据量的时候还性能还不错,但是数据量大一点,性能问题就体现出来了.不过只是收集

  • 在Ubuntu上搭建一个基于webrtc的多人视频聊天服务实例代码详解

    WebRTC,即Web Real-Time Communication,web实时通信技术.简单地说就是在web浏览器里面引入实时通信,包括音视频通话等. 在疫情期间哪里也去不了,在家没事就研究webrtc视频直播技术,网上找了些教程最终都不太能顺利跑起来的,可能是文章写的比较老,使用的一些开源组件已经更新了,有些配置已经不太一样了,所以按照以前的步骤会有问题.折腾了一阵终于跑起来了,记录一下. 一个简单的聊天室html页面 这个页面使用simple-webrtc来实现webrtc的通讯,sim

  • .NET程序性能监控系统Elastic AMP的使用方法

    目录 什么是Elastic AMP 工作原理 代码演示 1.新增Web项目 2.新增Nuget包 3.配置HttpModule 4.配置Agent 5.启动网站 Elastic APM核心模块 1.Transaction:我们通过Transaction可以看其中Api的调用信息 2. Dependencies:通过Dependencies看到服务依赖关系 3. Error: 能通过Error看到程序中的错误信息 4. Matrics: 可以通过Matrics看到服务气的内存与CPU信息 Elas

  • ubuntu安装jupyter并设置远程访问的实现

    目录 环境: 安装pip 安装Jupyter 生成一个 notebook 配置文件 生成密码 自动生成 手动生成 修改配置文件 Jupyter Notebook是一个Web应用程序,允许您创建和共享包含实时代码,方程,可视化和说明文本的文档. 简单的介绍就是:Jupyter Notebook是Ipython的升级版,而Ipython可以说是一个加强版的交互式 Shell,也就是说,它比在terminal里运行python会更方便,界面更友好 环境: Ubuntu16.04 64位 安装pip (

  • web项目中golang性能监控解析

    目录 性能监控 一.web项目(如gin中) 二.单个的go文件如果查看gc 性能监控 一.web项目(如gin中) 1.使用ginpprof import "github.com/DeanThompson/ginpprof" router := gin.Default() ginpprof.Wrap(router) 2.使用pprof 只需要在main.go中引入:_ “net/http/pprof” 访问:127.0.0.1:8080/debug/pprof /debug/ppro

  • ubuntu上配置Nginx+PHP5 FastCGI服务器配置

    首先安装或编译Nginx.安装Nginx源码包可以在官方主页上下载.Ubuntu 9.04可以直接通过apt安装,也可以从这里下载最新的deb包:sudo apt-get install nginx如果要自己编译的话,需要确保自己已经有编译器和PCRE的库(用于Nginx的rewrite模块,如果不需要这个模块可以在configure时使用./configure –without-rewrite).编译方法如下:wget http://sysoev.ru/nginx/nginx-0.5.34.t

随机推荐