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
卸载工作流程如下所示:
- 查找您的
.environment
文件,这通常/etc/netdata/.environment
是默认安装。 - 如果找不到该文件并想要卸载Netdata,则创建一个具有以下内容的新文件:
NETDATA_PREFIX = "<安装前缀>" # 将您用作参数的参数放置到shell已安装的--install标志中。否则应为空
NETDATA_ADDED_TO_GROUPS ="<其他组>" # 运行Netdata进程的用户的其他组
-
运行
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工具的频率(秒数)。
七、多设备监控
点击页面右上角的节点选项,即可进入官方平台。
通过邮箱或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中写文章了,事实上后面自己学习过程中的大部分文档都是在语雀中完成的,基本都是自己写自己看。后续文章都会分享到自己的个人博客上,感兴趣的话可以关注一下。个人博客地址