引言

最近逛 nmon 官网时,发现了一个新工具 njmon,功能与 nmon 类似,但输出为 JSON 格式,可以用于服务器性能统计。

可以使用 njmon 来向 InfluxDB 存储服务器性能统计数据,再通过 Grafana 实时读取展示,来实现性能测试过程中的实时可视化监控服务器性能指标的目的。

当然,传统的 nmon、InfluxDB+Grafana+Jmeter等都可以实现。

验证环境

CentOS Linux release 7.6.1810 (Core)

整体架构

原图链接:http://nmon.sourceforge.net/docs/nmon_outline_800.png

InfluxDB

InfluxDB 是一个由 InfluxData 开发的开源时序型数据。它由 Go 写成,着力于高性能地查询与存储时序型数据。InfluxDB 被广泛应用于存储系统的监控数据,IoT 行业的实时数据等场景。

InfluxDB 的语法是类 SQL 的,增删改查与 mysql 相同。InfluxDB 中的 measurement 对应的关系型数据库中的 table 。默认端口是 8086。

安装 & 启动

官方教程:https://docs.influxdata.com/influxdb/v1.7/introduction/installation/

配置 InfluxDB 的 yum 源:

$ cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

yum 安装

# CentOS 7-, RHEL 7-
$ sudo yum install -y influxdb
$ sudo service influxdb start # CentOS 7+, RHEL 7+
$ sudo yum install -y influxdb
$ sudo systemctl start influxdb

创建 njmon 库

$ influx
> create database njmon
> show databases
name: databases
name
----
_internal
njmon
> exit

启用用户认证

添加用户,设置权限。

# 查看所有用户
> show users
user admin
---- ----- # 创建 admin 用户,设置密码为 admin
> create user "admin" with password 'admin' with all privileges # 再次查看用户信息,发现 admin 为 true
> show users
user admin
---- -----
admin true

InfluxDB 默认是禁用认证策略的。

# 编辑配置文件,把 [http] 下的 auth-enabled 选项设置为 true
$ vi /etc/influxdb/influxdb.conf
[http]
...
auth-enabled = true
... # 重启服务,配置生效
$ systemctl restart influxdb.service

njmon

njmon = nmon + JSON format + real-time push to a stats database + instant graphing of "all the stats you can eat" (AIX and Linux)

This njmon is a major overhaul of nmon for the next 10 years:

  • Load more stats
  • JSON format is self documenting, flexible and the performance stats format for many new tools
  • Direct real-time loading of the JSON into modern open source time aware databases
  • New age browser based graphing tools allow dynamic data choice and graph style per VM, per server or across the estateAll this will be covered and more including many demo's.

与 nmon 类似,但输出为 JSON 格式,可以用于服务器性能统计。

安装 njmon

官方下载总目录:https://sourceforge.net/projects/nmon/files/

# 下载
$ wget http://sourceforge.net/projects/nmon/files/njmon_linux_binaries_v53.zip # 解压
$ unzip njmon_linux_binaries_v53.zip # 选择相应版本,放到 local 的 bin 下
$ mv njmon_linux_RHEL7_AMD64_v53 /usr/local/bin/njmon # 验证
$ njmon -?

njmon 统计的指标项

$ njmon -c 1 -s 1 | jq keys
[
"cpu_total",
"cpuinfo",
"cpus",
"disks",
"filesystems",
"identity",
"lscpu",
"networks",
"os_release",
"proc_meminfo",
"proc_version",
"proc_vmstat",
"stat_counters",
"timestamp",
"uptime"
]

关于 jq 的功能和使用,可以参见我之前写的文章 “linux 下强大的 JSON 解析命令 jq”。

安装 njmon_tools

# 下载
$ wget http://sourceforge.net/projects/nmon/files/njmon_tools_v50.zip # 解压
$ unzip njmon_tools_v50.zip
Archive: njmon_tools_v50.zip
inflating: line2pretty.py
inflating: njmon2influx.py
inflating: njmond.conf
inflating: njmond.py
inflating: njmonold2line.py
inflating: pretty2line.py

采集数据到 InfluxDB

官方设置了多种采集方式,本教程基于 njmon2influx.py 采集方式。

修改配置文件 njmond.conf

{
"njmon_port": 8181,
"njmon_secret": "ignore",
"data_inject": false,
"data_json": true,
"directory": "/home/njmon/data",
"influx_host": "localhost",
"influx_port": 8086,
"influx_user": "admin",
"influx_password": "admin",
"influx_dbname": "njmon",
"workers": 2,
"debug": true,
# for njmon2influx.py
"batch": 100
}

采集数据

# 间隔 5 秒,一直采集数据
$ nohup njmon -s 5 | ./njmon2influx.py njmond.conf >/dev/null 2>&1 & # 监控 log
$ tail -f /home/njmon/data/njmon2influx.log

InfluxDB 查询数据

# 用户名密码登录
$ influx -username admin -password admin
Connected to http://localhost:8086 version 1.7.10
InfluxDB shell version: 1.7.10 # 查看库
> show databases
name: databases
name
----
_internal
njmon # 使用 njmon
> use njmon
Using database njmon # 查看 measurements,有数据表示已经采集到
> show measurements
name: measurements
name
----
cpu_total
cpuinfo
cpus
disks
filesystems
identity
lscpu
networks
os_release
proc_meminfo
proc_version
proc_vmstat
stat_counters
timestamp
uptime

Grafana

Grafana 是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知

安装

官方教程:https://grafana.com/grafana/download

$ wget https://dl.grafana.com/oss/release/grafana-6.6.2-1.x86_64.rpm
$ sudo yum install -y grafana-6.6.2-1.x86_64.rpm

启动

# 启动并验证
$ sudo systemctl daemon-reload
$ sudo systemctl start grafana-server
$ sudo systemctl status grafana-server # 配置自启动
$ sudo systemctl enable grafana-server.service

默认密码:admin / admin,登录地址:http://xx.xx.xx.xx:3000

安装插件

# 安装插件 grafana-clock-panel
# 插件链接:https://grafana.com/grafana/plugins/grafana-clock-panel
$ grafana-cli plugins install grafana-clock-panel # 安装插件 grafana-piechart-panel
# 插件链接:https://grafana.com/grafana/plugins/grafana-piechart-panel
$ grafana-cli plugins install grafana-piechart-panel # 重启生效
$ service grafana-server restart

配置

添加数据源

选择 InfluxDB,并配置

导入仪表盘模板

njmon 模板链接:https://grafana.com/grafana/dashboards?search=njmon

选择 “njmon Single Host njmon for Linux v11” 模板:

复制 ID ,在 Grafana 中导入即可:

选择 InfluxDB。

导入完成。

查看监控数据

参考资料

基于 Njmon + InfluxDB + Grafana 实现性能指标实时可视监控的更多相关文章

  1. .Net Core 2.*+ InfluxDB+Grafana+App Metrics实时性能监控

    前言 .net core 2.* 实施性能监控 这个工具其实给运维 大大们用起来是更爽的.但是Grafana现在还没有找到中文版. 本文需要了解的相关技术与内容: InfluxDb(分布式时序数据库, ...

  2. [系统集成] 基于telegraf, influxdb, grafana 建立 esxi 监控

    之前在 nagios 上建立了 esxi 监控,指标少.配置麻烦.视觉效果差.最近我把 esxi 监控迁移到了 influxdb+grafana 平台上,无论是监控指标.可操作性还是视觉效果都有了很大 ...

  3. Telegraf+InfluxDB+Grafana快速搭建实时监控系统 监控postgresql

    Telegraf+InfluxDB+Grafana快速搭建实时监控系统  监控postgresql

  4. [转帖] 基于telegraf, influxdb, grafana 建立 esxi 监控

    [系统集成] 基于telegraf, influxdb, grafana 建立 esxi 监控 https://www.cnblogs.com/hahp/p/7677420.html 之前在 nagi ...

  5. 搭建jmeter+influxdb+grafana压测实时监控平台(超详细,小白适用)

    1.前言 在使用jmeter做性能测试的时候,监控系统性能的时候,无论是使用插件还是报告生成,都没法实现实时监控.使用JMeter+Influxdb+Grafana可以实现实时监控. 本次环境搭建各软 ...

  6. Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警

    前言 这次主要分享通过Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警方案.通过执行耗时,定位哪些接口拖累了服务的性能:通过请求频次,设置适当的限流 ...

  7. 【jmeter】基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示

    本文主要讲述如何利用JMeter监听器Backend Listener,配合使用InfluxDB+Grafana展示实时性能测试数据 关于JMeter实时测试数据 JMeter从2.11版本开始,命令 ...

  8. jmeter --- 基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示

    转自:https://blog.csdn.net/RickyOne_RR/article/details/50637839 本文主要讲述如何利用JMeter监听器Backend Listener,配合 ...

  9. 转:基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示

    本文主要讲述如何利用JMeter监听器Backend Listener,配合使用InfluxDB+Grafana展示实时性能测试数据 关于JMeter实时测试数据 JMeter从2.11版本开始,命令 ...

随机推荐

  1. Java井字棋游戏

    试着写了一个井字棋游戏,希望各位能给予一些宝贵的建议. 一.棋盘类 package 井字棋游戏; public class ChessBoard { private int number; Perso ...

  2. 【bzoj2049】[Sdoi2008]Cave 洞穴勘测——线段树上bfs求可撤销并查集

    题面 2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 12030 Solved: 6024 Desc ...

  3. vscode快速生成html模板(vscode快捷键"!"生成html模板)

    问题: 在vscode中新建test.html, 内容是空白的,输入"!",然后按tap键 ,没有生成常见的html模板,也就是如下: 输入! html html:5 DOCTYP ...

  4. C 2012年笔试题

    1指出程序段中的错误:分析错误的原因,并进行修改 1.1函数 swap 将两个字符串(字符数组作实参,长度不超过 100)的内容进行交换 void swap(char *pa,char *pb) { ...

  5. PYTHON数据类型(基础)

    PYTHON数据类型(基础) 一.列表.字典.元祖.集合的基本操作 列表 创建 l1=[] l1=list() l1=list(['你好',6]) 增 l1.append('hu') l1.inser ...

  6. 如何将一篇文章导入Endnote并将引用插入Word

    Endnote作为一款专注管理文献引用的工具用起来还是很方便的,极大地简化了管理引用格式等相关工作,让我们能够把更多精力用在写文章本身. 今天就介绍一下如何将一篇我们看到的觉得有参考价值的文章导入wo ...

  7. JSOI 2016 病毒感染 辅助Dp问题

    原题链接:https://www.luogu.com.cn/problem/P5774 分析 直接看这道题,第一个困惑点,那个绝对值的比较是什么东西,根据数学知识,我们可以知道这个意思是k到i的距离小 ...

  8. Colab笔记本能用英伟达Tesla T4了,谷歌的羊毛薅到酸爽

    谷歌出品的Colab笔记本,机器学习界薅羊毛神器,如今又有了新福利: 连英伟达最新一代机器学习GPU:Tesla T4都能免费蹭,穷苦羊毛党也顿时高端了起来. 英伟达的Tesla T4,是去年秋天才发 ...

  9. RMQ(倍增法求ST)

    解决什么问题:区间查询最值 倍增思想:每次得出结果的范围呈2的幂次增长,有人说相当于二分,目前我觉得相当于线段树的查找. 具体理解看代码: /*倍增法求ST*/ #include<math.h& ...

  10. swagger2 接口文档,整个微服务接口文档

    1,因为整个微服务会有好多服务,比如会员服务,支付服务,订单服务,每个服务都集成了swagger 我们在访问的时候,不可能每个服务输入一个url 去访问,看起来很麻烦,所以我们需要在一个页面上集成整个 ...