NetData 入门

NetData 入门

Y_Wolf(2020.05.06)

一、项目环境

  • 系统:Ubuntu 18.04.3 LTS
  • 官方说明文档:https://learn.netdata.cloud/docs/agent

二、NetData简介

NetData 是一个用于系统和应用的分布式实时性能和健康监控工具。它提供了对系统中实时发生的所有事情的全面检测。你可以在高度互动的 Web 仪表板中查看结果。使用 Netdata,你可以清楚地了解现在发生的事情,以及之前系统和应用中发生的事情。你无需成为专家即可在 Linux 系统中部署此工具。NetData 开箱即用,零配置、零依赖。只需安装它然后坐等,之后 NetData 将负责其余部分。


三、NetData安装

  • 方法一

    Netdata最简单的一种安装方式就是直接使用官方的脚本进行一键安装

    bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)
    # Ubuntu的包管理器不确定有没有  sudo apt-get install netdata
    
  
当出现如下信息后,就代表安装成功了
  
  ```bash
  -------------------------------------------------------------------------------
  OK. NetData is installed and it is running (listening to *:19999).
  -------------------------------------------------------------------------------
  INFO: Command line options changed. -pidfile, -nd and -ch are deprecated.
  If you use custom startup scripts, please run netdata -h to see the
  corresponding options and update your scripts.
  Hit http://localhost:19999/ from your browser.
  To stop netdata, just kill it, with:
  killall netdata
  To start it, just run it:
  /usr/sbin/netdata
  Enjoy!
  Uninstall script generated: ./netdata-uninstaller.sh

这时我们只需要打开http://localhost:19999/就可以看到NetData的默认界面了

在这里插入图片描述

[注]: NetData有汉化版,但是是第三方的包,出于安全考虑还是用官方的。
https://github.com/firehol/netdata (原版)
https://github.com/Fhaohaizi/netdata (汉化版本)
https://github.com/jasoncheng7115/netdata-cpatch (繁体汉化补丁[自行转简体]:html、js)

  • 方法二

    如果上述方法安装不成功的话,也可以使用下面的方法自行安装

    # 安装所需依赖项目
    sudo apt-get install zlib1g-dev uuid-dev libuv1-dev liblz4-dev libjudy-dev libssl-dev libmnl-dev gcc make git autoconf autoconf-archive autogen automake pkg-config curl
    
    # 克隆NetData的git仓库
    git clone https://github.com/netdata/netdata.git --depth=100
    
    # 进入netdata目录
    cd netdata/
    
    # 执行安装脚本,并启动NetData
    sudo ./netdata-installer.sh
    

四、NetData的基本操作

# 启动NetData服务,并设置开机启动
sudo systemctl enable netdata
sudo systemctl start netdata

# 重启服务
sudo systemctl restart netdata

# 停止NetData服务
sudo systemctl stop netdata

# 更新NetData服务(重新拉去,重新运行)
cd netdata
git pull
sudo ./netdata-installer.sh

五、卸载NetData

我们独立的卸载程序能够删除由Shell安装程序创建的Netdata安装。它不需要运行任何其他Netdata存储库文件。它所需要的只是一个.environment文件,该文件是在安装过程中创建的(使用Shell默认安装程序)并放入${NETDATA_USER_CONFIG_DIR}/.environment(默认情况下/etc/netdata/.environment)。该文件包含一些传递给我们的安装程序的参数,这些参数在卸载过程中是必需的。主要需要两个参数:

NETDATA_PREFIX

NETDATA_ADDED_TO_GROUPS

卸载工作流程如下所示:

  1. 查找您的.environment文件,这通常/etc/netdata/.environment是默认安装。
  2. 如果找不到该文件并想要卸载Netdata,则创建一个具有以下内容的新文件:
NETDATA_PREFIX = "<安装前缀>" # 将您用作参数的参数放置到shell已安装的--install标志中。否则应为空

NETDATA_ADDED_TO_GROUPS ="<其他组>" # 运行Netdata进程的用户的其他组
  1. 运行netdata-uninstaller.sh如下:

    $ {NETDATA_PREFIX} /usr/libexec/netdata/netdata-uninstaller.sh --yes --env <environment_file>
    

[注]: 如果没有文件,现有安装可能仍需要下载文件。要在这种情况下执行卸载,请运行以下命令:

wget https://raw.githubusercontent.com/netdata/netdata/master/packaging/installer/netdata-uninstaller.sh

chmod + x ./netdata-uninstaller.sh

./netdata-uninstaller.sh --yes --env  <environment_file>

默认environment_file值为/etc/netdata/.environment

[注]: 此卸载方法假定以前使用netdata-installer.sh或kickstart脚本进行安装。当前由软件包管理器安装Netdata时使用它可能会起作用或导致意外结果。如果是使用docker进行安装。

执行删除命令的过程中,它会让你确认有些文件是否需要删除,一般情况下,一路确定就可以了。

一切顺利的话,当你看到下面的画面就表示你已经安装成功了。

在这里插入图片描述


五、NetData的相关配置文件

NetData的核心配置可以通过cat /etc/netdata/netdata.conf或者http://127.0.0.1:19999/netdata.conf查看。

在这里插入图片描述

[注]: 上图矩形框部分内的为NetData的主要配置文件路径。

​ 如果觉得默认的仪表盘展示的图表太多,可以vim /etc/netdata/netdata.conf或者nano /etc/netdata/netdata.conf ,修改[plugins]中的配置。原配置文件中大部分默认开启的,如果我们不需要某些图表的话,可以将注释去掉,改为no。然后重启服务,就可以禁用相应的图表。

在这里插入图片描述

​ 禁用效果:

在这里插入图片描述

​ 如果觉得NetData占用的内存过大,也可以修改核心配置中的数据刷新率,来降低内存占用。

# 降低cpu占用:
	# 编辑:vim netdata.conf
		[global]
		update every = 2
	# 或者只修改apps部分:
		[plugin:apps]
		update every = 2

六、添加第三方扩展插件(NVIDIA-SMI)

[官方文档]: https://learn.netdata.cloud/docs/agent/collectors/python.d.plugin/nvidia_smi/

在新版NetData中,它自带nvidia显卡监控:

# vim /usr/lib/netdata/conf.d/python.d.conf
  nvidia_smi: yes

[注]:但前提是你必须先确保安装好了nvidia-smi,且NVIDIA GPU必须支持该工具。

其次确保netdata用户可以执行/usr/bin/nvidia-smi或在您的二进制文件所在的任何位置。

生成配置文件:

# 使用官方提供的脚本,生成对用文件的配置文件
cd /etc/netdata   
sudo ./edit-config python.d/nvidia_smi.conf

在这里插入图片描述

# 官方文档提供样例
loop_mode    : yes  # 默认为yes。 如果设置为yes,则使用-l选项在单独的线程中执行nvidia-smi。
poll_seconds : 1      # 默认为1。设置循环查询nvidia-smi工具的频率(秒数)。

在这里插入图片描述


七、多设备监控

  • 方法一

    [官方文档]:https://learn.netdata.cloud/docs/agent/step-by-step/step-03

    使用官方提供的平台NetData Cloud

在这里插入图片描述

点击页面右上角的节点选项,即可进入官方平台。

在这里插入图片描述

通过邮箱或github账号,将设备与账号进行绑定。当我们使用平台绑定多个设备之后,就可以将多个设备的数据汇总到平台中进行浏览。

在这里插入图片描述

也可以使用左上角的下拉菜单进行自由切换。

在这里插入图片描述

[注]:虽然在官方文档中,作者一再强调,他们只会存储账号和绑定关系,但是仍然无法确定是否会发送服务器的状态给到其他人

  • 方法二

    [官方文档]:https://learn.netdata.cloud/docs/agent/streaming

    可以使用为需要监控的服务器建立主从关系,将其他服务器的数据同一汇总到一台服务器进行浏览

    节点服务器

    修改netdata.conf中的如下配置:

    [global]
        memory mode = none # 在此主机上禁用数据库。这也会禁用运行状况监视(没有数据库就无法进行运行状况监视)
        hostname = chenshaolang-MS-7817 # 修改配置名称
    [web]
        mode = none  # 禁用API(Netdata不会监听任何端口)。这也会禁用注册表(没有API的注册表将无法使用)。
    

    同时在同一目录下新建stream.conf并写入如下配置:

      [stream]
      enabled = yes
      destination = 127.0.0.1:19999 # 主服务器的ip地址
      api key = 733d1bb7-91b1-4bcf-9a45-66ec2340316e   
      # api key是一个uuid格式的字符串,可以使用uuidgen命令生成。主要是提供给主服务器使用
    

    在这里插入图片描述

    重启服务:

      systemctl restart netdata
    

    主服务器

    在netdata.conf的同一目录下新建stream.conf并写入如下配置:

    [733d1bb7-91b1-4bcf-9a45-66ec2340316e]  # 刚才节点服务器生成的api key
        enabled = yes
        default history = 3600
        default memory mode = save
        health enabled by default = auto 
        allow from = *  # allow from可以设置数据流的允许来源以保证安全。如 allow from = 127.0.0.1 仅允许该ip连接
    

    [注]:如果有多个节点服务器,则一起写在stream.conf里面

    重启服务:

      systemctl restart netdata
    

    配置完后,我们就可以直接在主服务器上直接浏览所有节点服务器的情况了。

在这里插入图片描述

[注]:右上方箭头处,证明我没有登录官方的平台就是先多服务器数据连通。


八、报警器

[官方文档]:https://learn.netdata.cloud/docs/agent/step-by-step/step-05

事实上在我们安装好NetData时,官方就已经为我们预设了很多的报警器。我们直接点击上方的Alarms就可以进入。

在这里插入图片描述

同时它会定时记录每个时间段服务器的状况,并声称快照。当发现警报时,可以通过查阅历史,点击直接进入放生警报时服务器的状态。

在这里插入图片描述

如上图,在5月4日的时候,系统发生了一次警报。通过点击,直接进入发生状况时,系统的状态。

在这里插入图片描述

[注]: 但是这个功能需要登录他们的平台才能跳转,或者将数据存入数据库或者其他第三方监控软件。如Graphite,OpenTSDB,Prometheus,AWS Kinesis Data Streams,MongoDB

九、将监控数据存入后端

[官方文档]:https://learn.netdata.cloud/docs/agent/step-by-step/step-09

# 首先先安装数据库
sudo apt-get install mongodb

# 然后安装相关的依赖
sudo apt-get install libmongoc-1.0-0 libmongoc-dev

# 在数据库中新建一个名叫netdata的数据库
use netdata

# 并在里面创建一张名叫netdata_metrics的表
db.createCollection("netdata_metrics")

然后在核心配置netdata.conf文件中,将数据发送到MongoDB后端的功能启用

在这里插入图片描述

接着Netdata配置目录中,运行sudo ./edit-config mongodb.conf并设置MongoDB URI,数据库名称和集合名称

在这里插入图片描述

然后重新启动NetData以启用MongoDB后端,当出现下面画面就表示配置成功,已经将数据存储进mongodb中。

在这里插入图片描述

在这里插入图片描述

[注]:这个之前按照官方文档的配置是不成功的,但是后面升级了pymongo,重启了一下就突然能用了。

pip3 uninstall pymongo bson

sudo pip3 install pymongo --upgrade

十、 创建自定义监控界面

[官方文档]:https://learn.netdata.cloud/docs/agent/step-by-step/step-08#why-should-i-create-a-custom-dashboard

NetData除了可以在默认的界面上进行相关图表的删除的添加之外,还支持自定义页面。

首先 我们在目录/usr/share/netdata/web下创建也页面custom-dashboard.html

<!DOCTYPE html>
<html lang="en">
<head>
  <title>My custom dashboard</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">

  <script>
    var netdataTheme = 'slate';
  </script>

  <!-- 添加dashboard.js,这样才能使用NetData的图表 -->
  <script type="text/javascript" src="http://localhost:19999/dashboard.js"></script>

  <style>
    .wrap {
      max-width: 1280px;
      margin: 0 auto;
    }

    h1 {
      margin-bottom: 30px;
      text-align: center;
    }

    .charts {
      display: flex;
      flex-flow: row wrap;
      justify-content: space-around;
    }

    .charts > div {
      margin-bottom: 6rem;
      position: relative;
    }
   </style>

</head>
<body>

  <main class="wrap">

    <h1>My custom dashboard</h1>

    <div class="charts">

      <!-- 添加相关图表格 -->
      <div data-netdata="system.cpu"
           data-after="-300"
           data-height="250px"
           data-width="calc(50% - 2rem)"></div>
      <div data-netdata="apps.cpu"
           data-after="-300"
           data-height="250px"
           data-width="calc(50% - 2rem)"></div>
      <div data-netdata="groups.cpu"
           data-after="-300"
           data-height="250px"
           data-width="calc(50% - 2rem)"></div>
      <div data-netdata="users.cpu"
           data-after="-300"
           data-height="250px"
           data-width="calc(50% - 2rem)"></div>

    </div>

  </main>

</body>
</html>

然后修改这个页面文件的权限,NetData有权限去直接访问它

sudo chown netdata:netdata /usr/share/netdata/web/custom-dashboard.html

配置完后,就可以直接使用http://127.0.0.1:19999/custom-dashboard.html进行登录查看。

在这里插入图片描述


很长一段时间没有在csdn中写文章了,事实上后面自己学习过程中的大部分文档都是在语雀中完成的,基本都是自己写自己看。后续文章都会分享到自己的个人博客上,感兴趣的话可以关注一下。个人博客地址