您的位置 首页 php

基于 Njmon + InfluxDB + Grafana 实现性能指标实时可视监控

引言

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

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

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

验证环境

CentOS Linux release 7.6.1810 (Core)

整体架构

InfluxDB

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

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

安装 & 启动

官方教程:

配置 InfluxDB 的 yum 源:

 $ cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = 
enabled = 1
gpgcheck = 1
gpgkey = 
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 更多知识见我之前文章“ ”。

安装 njmon

官方下载总目录:

 # 下载
$ wget 

# 解压
$ 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 的功能和使用,可以参见我之前写的文章 “ ”。

安装 njmon_tools

 # 下载
$ wget 

# 解压
$ 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  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 是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知

安装

官方教程:

 $ wget 
$ 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,登录地址:

安装插件

 # 安装插件 grafana-clock-panel
# 插件链接:
$ grafana-cli plugins install grafana-clock-panel

# 安装插件 grafana-piechart-panel
# 插件链接:
$ grafana-cli plugins install grafana-piechart-panel

# 重启生效
$ service grafana-server restart
  

配置

添加数据源

选择 InfluxDB,并配置

导入仪表盘模板
njmon 模板链接:

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

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

选择 InfluxDB。

导入完成。

查看监控数据

参考资料

文章来源:智云一二三科技

文章标题:基于 Njmon + InfluxDB + Grafana 实现性能指标实时可视监控

文章地址:https://www.zhihuclub.com/154391.shtml

关于作者: 智云科技

热门文章

网站地图