网站首页 > 开源技术 正文
引言
最近逛 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 更多知识见我之前文章“nmon 的下一代工具 njmon”。
安装 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://x.x.x.x: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。
导入完成。
查看监控数据
参考资料
http://nmon.sourceforge.net/pmwiki.php?n=site.njmon
https://docs.influxdata.com/influxdb/v1.7/introduction/installation/
https://www.readkong.com/page/njmon-is-nmon-but-saving-to-json-format-for-modern-4222619
猜你喜欢
- 2024-10-15 基于阿里千问的agent项目--Qwen-agent介绍
- 2024-10-15 Python 标准库(10个常用python标准库)
- 2024-10-15 Qt 全流程实战企业级项目 - 云对象存储浏览器
- 2024-10-15 markdown学习(markdown教学)
- 2024-10-15 十次方专属社交平台前端系统开发 网站前台-吐槽与问答
- 2024-10-15 玩转阿里云EMR三部曲-高级篇 交互式查询及统一数据源
- 2024-10-15 web技术支持|Web 客户端实现录音、录像
- 2024-10-15 使用使用rclone挂载OneDrive到服务器
- 2024-10-15 「sabre/dav」只要十行代码让你的网站获得WebDav网盘能力
- 2024-10-15 利用Python渗透实现沙箱逃逸!看黑客是如何绕过网站的防护的?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)