通用技术 使用 Netdata 监控 Linux 服务器性能

大海 · 2018年10月10日 · 最后由 阿森 回复于 2019年11月15日 · 21 次阅读

Netdata 介绍

它是 Linux 系统实时性能监测工具,以 web 的可视化方式展示系统及应用程序的实时运行状态(包括 cpu、内存、硬盘输入/输出、网络等 linux 性能的数据)。Netdata 的 web 前端响应很快,而且不需要 Flash 插件。 UI 很整洁,保持着 Netdata 应有的特性。第一眼看上去,你能够看到很多图表,幸运的是绝大多数常用的图表数据(像 CPU,RAM,网络和硬盘)都在顶部。如果你想深入了解图形化数据,你只需要下滑滚动条,或者点击在右边菜单的项目。通过每个图表的右下方的按钮,Netdata 还能控制图表的显示,重置,缩放。

Netdata 用可视化的手段,将被监测者最细微的细节,展现了出来。这样便可以清晰地了解 linux 系统和应用程序此时的状况。
  • 优美的界面:bootstrap 框架下的控制界面
  • 自定义的控制界面:你可以使用简单的 HTML 代码去自定义控制界面 (不需要使用 javascript)
  • 极其的快速而高效:程序使用 C 进行编写 (默认安装下,预计只有 2% 的单核 CPU 使用率和少许的内存使用率)
  • 零配置:你只需要去安装它,接着它就会自动地监测一切数据
  • 零依赖:它的静态网络文件和网络接口拥有自己的网络服务器
  • 可扩展:用它自身的插件 API(可以使用许多方式来制作它的插件,从 bash 到 node.js),你可以检测任何可以衡量的数据。
  • 可嵌入:它可以在任何 Linux 内核可以运行的地方运行
监测内容:下面是 Netdata 目前检测的内容(大多数都不需要进行配置,安装后即可开始监测)
  • CPU 的使用率,中断,软中断和频率 (总量和每个单核)
  • RAM,互换和内核内存的使用率(包括 KSM 和内核内存 deduper)
  • 硬盘输入/输出 (每个硬盘的带宽,操作,整理,利用等)
  • IPv4 网络(数据包,错误,分片): TCP:连接,数据包,错误,握手 UDP:数据包,错误 广播:带宽,数据包 组播:带宽,数据包
  • Netfilter/iptables Linux 防火墙 (连接,连接跟踪事件,错误等)
  • 进程 (运行,受阻,分叉,活动等)
  • NFS 文件服务器,v2,v3,v4(输入/输出,缓存,预读,RPC 调用)
  • 网络服务质量(唯一一个可实时可视化网络状况的工具)
  • 应用程序,通过对进程树进行分组(CPU,内存,硬盘读取,硬盘写入,交换,线程,管道,套接字等)
  • Apache Web 服务器状态 (v2.2, v2.4)
  • Nginx Web 服务器状态
  • Mysql 数据库(多台服务器,单个显示:带宽,查询/s, 处理者,锁,问题,临时操作,连接,二进制日志,线程,innodb 引擎等)
  • ISC Bind 域名服务器(多个服务器,单个显示:客户,请求,查询,更新,失败等)
  • Postfix 邮件服务器的消息队列(条目,大小)
  • Squid 代理服务器(客户带宽和请求,服务带宽和请求)
  • 硬件传感器(温度,电压,风扇,电源,湿度等)
  • NUT UPSes(负载,充电,电池电压,温度,使用指标,输出指标)
  • 可以监测任意数量的 SNMP 服务,不过你需要进行配置,还可以对此软件进行扩展,可以使用任何语言编写插件,以此来从任何来源收集数据

安装配置

[sks@localhost ~]$ sudo yum -y install wget
[sks@localhost /]$ sudo yum install autoconf automake curl gcc git libmnl-devel libuuid-devel lm_sensors make MySQL-python nc pkgconfig python python-psycopg2 PyYAML zlib-devel
[sks@localhost /]$ cd /usr/local/src/
[sks@localhost src]$ sudo wget https://github.com/netdata/netdata/releases/download/v1.10.0/netdata-1.10.0.tar.gz
[sks@localhost src]$ sudo tar zxvf netdata-1.10.0.tar.gz
[sks@localhost src]$ cd netdata-1.10.0
[sks@localhost netdata-1.10.0]$ sudo ./netdata-installer.sh

资源监控


监控 MYSQL 服务

[sks@localhost ~]$ systemctl start netdata
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: sks
Password:
==== AUTHENTICATION COMPLETE ===
[sks@localhost ~]$ systemctl start netdata
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: sks
Password:
==== AUTHENTICATION COMPLETE ===
[sks@localhost ~]$ sudo yum install mariadb-server mariadb
[sudo] sks 的密码:
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 mariadb.x86_64.1.5.5.60-1.el7_5 将被 安装
---> 软件包 mariadb-server.x86_64.1.5.5.60-1.el7_5 将被 安装
--> 正在处理依赖关系 perl-DBI,它被软件包 1:mariadb-server-5.5.60-1.el7_5.x86_64 需要
--> 正在处理依赖关系 perl-DBD-MySQL,它被软件包 1:mariadb-server-5.5.60-1.el7_5.x86_64 需要
--> 正在处理依赖关系 perl(DBI),它被软件包 1:mariadb-server-5.5.60-1.el7_5.x86_64 需要
--> 正在检查事务
---> 软件包 perl-DBD-MySQL.x86_64.0.4.023-6.el7 将被 安装
---> 软件包 perl-DBI.x86_64.0.1.627-4.el7 将被 安装
--> 正在处理依赖关系 perl(RPC::PlServer) >= 0.2001,它被软件包 perl-DBI-1.627-4.el7.x86_64 需要
--> 正在处理依赖关系 perl(RPC::PlClient) >= 0.2000,它被软件包 perl-DBI-1.627-4.el7.x86_64 需要
--> 正在检查事务
---> 软件包 perl-PlRPC.noarch.0.0.2020-14.el7 将被 安装
--> 正在处理依赖关系 perl(Net::Daemon) >= 0.13,它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在处理依赖关系 perl(Net::Daemon::Test),它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在处理依赖关系 perl(Net::Daemon::Log),它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在处理依赖关系 perl(Compress::Zlib),它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在检查事务
---> 软件包 perl-IO-Compress.noarch.0.2.061-2.el7 将被 安装
--> 正在处理依赖关系 perl(Compress::Raw::Zlib) >= 2.061,它被软件包 perl-IO-Compress-2.061-2.el7.noarch 需要
--> 正在处理依赖关系 perl(Compress::Raw::Bzip2) >= 2.061,它被软件包 perl-IO-Compress-2.061-2.el7.noarch 需要
---> 软件包 perl-Net-Daemon.noarch.0.0.48-5.el7 将被 安装
--> 正在检查事务
---> 软件包 perl-Compress-Raw-Bzip2.x86_64.0.2.061-3.el7 将被 安装
---> 软件包 perl-Compress-Raw-Zlib.x86_64.1.2.061-4.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================================================================================================
 Package                                         架构                           版本                                      源                               大小
================================================================================================================================================================
正在安装:
 mariadb                                         x86_64                         1:5.5.60-1.el7_5                          updates                         8.9 M
 mariadb-server                                  x86_64                         1:5.5.60-1.el7_5                          updates                          11 M
为依赖而安装:
 perl-Compress-Raw-Bzip2                         x86_64                         2.061-3.el7                               base                             32 k
 perl-Compress-Raw-Zlib                          x86_64                         1:2.061-4.el7                             base                             57 k
 perl-DBD-MySQL                                  x86_64                         4.023-6.el7                               base                            140 k
 perl-DBI                                        x86_64                         1.627-4.el7                               base                            802 k
 perl-IO-Compress                                noarch                         2.061-2.el7                               base                            260 k
 perl-Net-Daemon                                 noarch                         0.48-5.el7                                base                             51 k
 perl-PlRPC                                      noarch                         0.2020-14.el7                             base                             36 k

事务概要
================================================================================================================================================================
安装  2 软件包 (+7 依赖软件包)

总下载量:21 M
安装大小:110 M
Is this ok [y/d/N]: y
Downloading packages:
(1/9): perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm                                                                                    |  32 kB  00:00:00
(2/9): perl-DBD-MySQL-4.023-6.el7.x86_64.rpm                                                                                             | 140 kB  00:00:00
(3/9): perl-IO-Compress-2.061-2.el7.noarch.rpm                                                                                           | 260 kB  00:00:00
(4/9): perl-Net-Daemon-0.48-5.el7.noarch.rpm                                                                                             |  51 kB  00:00:00
(5/9): perl-PlRPC-0.2020-14.el7.noarch.rpm                                                                                               |  36 kB  00:00:00
(6/9): perl-DBI-1.627-4.el7.x86_64.rpm                                                                                                   | 802 kB  00:00:00
(7/9): perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm                                                                                     |  57 kB  00:00:09
(8/9): mariadb-5.5.60-1.el7_5.x86_64.rpm                                                                                                 | 8.9 MB  00:00:11
(9/9): mariadb-server-5.5.60-1.el7_5.x86_64.rpm                                                                                          |  11 MB  00:00:12
----------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                            1.7 MB/s |  21 MB  00:00:12
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                                                                                                  1/9
  正在安装    : 1:mariadb-5.5.60-1.el7_5.x86_64                                                                                                             2/9
  正在安装    : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                                                                                                 3/9
  正在安装    : perl-IO-Compress-2.061-2.el7.noarch                                                                                                         4/9
  正在安装    : perl-Net-Daemon-0.48-5.el7.noarch                                                                                                           5/9
  正在安装    : perl-PlRPC-0.2020-14.el7.noarch                                                                                                             6/9
  正在安装    : perl-DBI-1.627-4.el7.x86_64                                                                                                                 7/9
  正在安装    : perl-DBD-MySQL-4.023-6.el7.x86_64                                                                                                           8/9
  正在安装    : 1:mariadb-server-5.5.60-1.el7_5.x86_64                                                                                                      9/9
  验证中      : 1:mariadb-server-5.5.60-1.el7_5.x86_64                                                                                                      1/9
  验证中      : perl-Net-Daemon-0.48-5.el7.noarch                                                                                                           2/9
  验证中      : perl-DBD-MySQL-4.023-6.el7.x86_64                                                                                                           3/9
  验证中      : perl-IO-Compress-2.061-2.el7.noarch                                                                                                         4/9
  验证中      : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                                                                                                 5/9
  验证中      : 1:mariadb-5.5.60-1.el7_5.x86_64                                                                                                             6/9
  验证中      : perl-DBI-1.627-4.el7.x86_64                                                                                                                 7/9
  验证中      : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                                                                                                  8/9
  验证中      : perl-PlRPC-0.2020-14.el7.noarch                                                                                                             9/9

已安装:
  mariadb.x86_64 1:5.5.60-1.el7_5                                             mariadb-server.x86_64 1:5.5.60-1.el7_5

作为依赖被安装:
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7  perl-DBD-MySQL.x86_64 0:4.023-6.el7  perl-DBI.x86_64 0:1.627-4.el7
  perl-IO-Compress.noarch 0:2.061-2.el7         perl-Net-Daemon.noarch 0:0.48-5.el7          perl-PlRPC.noarch 0:0.2020-14.el7

完毕!

[sks@localhost ~]$ rpm -qa|grep mariadb
mariadb-5.5.60-1.el7_5.x86_64
mariadb-libs-5.5.60-1.el7_5.x86_64
mariadb-server-5.5.60-1.el7_5.x86_64
[sks@localhost ~]$ systemctl start mariadb
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: sks
Password:
==== AUTHENTICATION COMPLETE ===
[sks@localhost ~]$ ps -ef |grep mysql
mysql      4925      1  0 16:53 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql      5086   4925  0 16:53 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/                                                var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
sks        5414   5260  0 17:00 pts/1    00:00:00 grep --color=auto mysql
[sks@localhost ~]$ mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit;
Bye

[sks@localhost ~]$ systemctl restart netdata
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: sks
Password:
==== AUTHENTICATION COMPLETE ===
[sks@localhost ~]$

参考资料

https://github.com/netdata/netdata/wiki/Installation

环境依赖

Prepare your system

  • This is how to do it by hand:
# Debian / Ubuntu
apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make git autoconf autoconf-archive autogen automake pkg-config curl

# Fedora
dnf install zlib-devel libuuid-devel libmnl-devel gcc make git autoconf autoconf-archive autogen automake pkgconfig curl findutils

# CentOS / Red Hat Enterprise Linux
yum install autoconf automake curl gcc git libmnl-devel libuuid-devel lm_sensors make MySQL-python nc pkgconfig python python-psycopg2 PyYAML zlib-devel

Install netdata

  • Do this to install and run netdata:
# download it - the directory 'netdata' will be created
git clone https://github.com/netdata/netdata.git --depth=1
cd netdata

# run script with root privileges to build, install, start netdata
./netdata-installer.sh

  • If you don't want to run it straight-away, add --dont-start-it option.

  • If you don't want to install it on the default directories, you can run the installer like this: shell./netdata-installer.sh --install /opt.
    This one will install netdata inshell /opt/netdata.

starting netdata at boot

In the system directory you can find scripts and configurations for the various distros.

systemd
  • The installer already installs netdata.service if it detects a systemd system.

  • To install netdata.service by hand, run:

# stop netdata
killall netdata

# copy netdata.service to systemd
cp system/netdata.service /etc/systemd/system/

# let systemd know there is a new service
systemctl daemon-reload

# enable netdata at boot
systemctl enable netdata

# start netdata
systemctl start netdata

CentOS / Red Hat Enterprise Linux

For older versions of RHEL/CentOS that don't have systemd, an init script is included in the system directory. This can be installed by running the following commands as root.

# copy the netdata startup file to /etc/init.d
cp system/netdata-init-d /etc/init.d/netdata

# make sure it is executable
chmod +x /etc/init.d/netdata

# enable it
chkconfig --add netdata

补充另一个小工具:Grafana

Grafana 是一个开源的度量分析与可视化套件。经常被用作基础设施的时间序列数据和应用程序分析的可视化,它在其他领域也被广泛的使用包括工业传感器、家庭自动化、天气和过程控制等。
Grafana 支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。

链接地址

http://docs.grafana.org/installation/

参数说明

  • Data Source:grafana 确切的说是一个前端展示工具,将数据以非常美观直接的图形展示出来。那么这些数据必须有一个来源吧,grafana 获取数据的地方就称为 Data Source。官方文档上说 grafana 支持以下数据源:Graphite, InfluxDB, OpenTSDB, Prometheus, Elasticsearch, CloudWatch。在 Grafana 3.0+ 之后,grafana 不仅仅支持上面说的这些数据源,还支持一些其它的数据源,这些就称为 Grafana Plugins,grafana 支持的插件非常多(grafana 支持的插件传送门),只要做一些简单的插件安装配置,你就能获取丰富的数据源。

  • DashBoard:仪表盘,就像汽车仪表盘一样可以展示很多信息,包括车速,水箱温度等。Grafana 的 DashBoard 就是以各种图形的方式来展示从 Datasource 拿到的数据。

  • Row:DashBoard 的基本组成单元,一个 DashBoard 可以包含很多个 row。一个 row 可以展示一种信息或者多种信息的组合,比如系统内存使用率,CPU 五分钟及十分钟平均负载等。所以在一个 DashBoard 上可以集中展示很多内容。

  • Panel:面板,实际上就是 row 展示信息的方式,支持表格(table),列表(alert list),热图(Heatmap)等多种方式,具体可以去官网上查阅。

  • Query Editor:用来指定获取哪一部分数据。类似于 sql 查询语句,比如你要在某个 row 里面展示 test 这张表的数据,那么 Query Editor 里面就可以写成 select *from test。这只是一种比方,实际上每个 DataSource 获取数据的方式都不一样,所以写法也不一样,比如像 zabbix,数据是以指定某个监控项的方式来获取的。

  • Organization:org 是一个很大的概念,每个用户可以拥有多个 org,grafana 有一个默认的 main org。用户登录后可以在不同的 org 之间切换,前提是该用户拥有多个 org。不同的 org 之间完全不一样,包括 datasource,dashboard 等都不一样。创建一个 org 就相当于开了一个全新的视图,所有的 datasource,dashboard 等都要再重新开始创建。

  • User:这个概念应该很简单,不用多说。Grafana 里面用户有三种角色 admin,editor,viewer。admin 权限最高,可以执行任何操作,包括创建用户,新增 Datasource,创建 DashBoard。editor 角色不可以创建用户,不可以新增 Datasource,可以创建 DashBoard。viewer 角色仅可以查看 DashBoard。在 2.1 版本及之后新增了一种角色 read only editor(只读编辑模式),这种模式允许用户修改 DashBoard,但是不允许保存。每个 user 可以拥有多个 organization。

安装配置

可以直接使用 Yum 安装 Grafana

[sks@localhost ~]$ sudo yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1.4-1.x86_64.rpm

启动服务器(init.d 服务)
可以通过运行来启动 Grafana:

[sks@localhost ~]$ sudo service grafana-server start

这将以包安装期间创建 grafana-server 的 grafana 用户身份启动进程。默认 HTTP 端口是 3000,默认用户和组是 admin。
默认登录名和密码 admin/admin

要将 Grafana 服务器配置为在引导时启动:

[sks@localhost ~]$ sudo /sbin/chkconfig --add grafana-server

启动与关闭服务器(通过 systemd)

[sks@localhost /]$ sudo systemctl daemon-reload
[sks@localhost /]$ sudo systemctl start grafana-server
[sks@localhost /]$ sudo systemctl stop grafana-server
[sks@localhost /]$ sudo systemctl status grafana-server

启用 systemd 服务以启动时启动

[sks@localhost ~]$sudo systemctl enable grafana-server.service

运行结果



如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

想问下 Netdata 能否远程监控别的服务,在哪设置的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册