引言最近逛 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.pngInfluxDBInfluxDB 是一个由 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 $releaseverbaseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stableenabled = 1gpgcheck = 1gpgkey = https://repos.influxdata.com/influxdb.keyEOF
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 databasesname: databasesname----_internalnjmon> exit
启用用户认证添加用户,设置权限。
# 查看所有用户> show usersuser admin---- -----# 创建 admin 用户,设置密码为 admin> create user "admin" with password 'admin' with all privileges# 再次查看用户信息,发现 admin 为 true> show usersuser admin---- -----admin true
InfluxDB 默认是禁用认证策略的。
# 编辑配置文件,把 [http] 下的 auth-enabled 选项设置为 true$ vi /etc/influxdb/influxdb.conf[http] ... auth-enabled = true ...# 重启服务,配置生效$ systemctl restart influxdb.service
njmonnjmon = 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.zipArchive: 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 adminConnected to http://localhost:8086 version 1.7.10InfluxDB shell version: 1.7.10# 查看库> show databasesname: databasesname----_internalnjmon# 使用 njmon> use njmonUsing database njmon# 查看 measurements,有数据表示已经采集到> show measurementsname: measurementsname----cpu_totalcpuinfocpusdisksfilesystemsidentitylscpunetworksos_releaseproc_meminfoproc_versionproc_vmstatstat_counterstimestampuptime
GrafanaGrafana 是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知安装官方教程: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.njmonhttps://docs.influxdata.com/influxdb/v1.7/introduction/installation/https://www.readkong.com/page/njmon-is-nmon-but-saving-to-json-format-for-modern-4222619
0 评论