Grafana和Prometheus
VirtualBox 6 是一个选项。
客底操作系统:CentOS Linux发布7.5.1804版(核心版)
虚拟机的[设置] -> [网络设置]
分配:NAT
[高级] -> [端口转发]
SSH:TCP 1022 -> 22
Promethus GUI:TCP 19090 -> 9090
Grafana GUI:TCP 13000 -> 3000
模块版本和软件包版本
普罗米修斯:2.14.0
包:prometheus-2.14.0.linux-amd64.tar.gz
Node exporter: 0.18.1
软件包:node_exporter-0.18.1.linux-amd64.tar.gz
Grafana版本:6.4.4
软件包:grafana-6.4.4-1.x86_64.rpm
CentOS安装
在防火墙中允许 http 和 https
防火墙资料库
$ systemctl status firewalld # active (runnig)
$ sudo firewall-cmd --list-all
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
# ポート許可
$ sudo firewall-cmd --permanent --add-port=22/tcp
$ sudo firewall-cmd --permanent --add-port=9090/tcp
$ sudo firewall-cmd --permanent --add-port=9100/tcp
$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --list-ports
$ sudo firewall-cmd --reload
$ sudo systemctl stop firewalld # 以下検証環境
$ sudo systemctl is-enabled firewalld # enabledになっていたら下記を実施
$ sudo systemctl disable firewalld
$ sudo systemctl is-enabled firewalld
Prometheus安装
安装操作
官方网站
所有者等均为root
$ cd /tmp
$ curl -LO https://github.com/prometheus/prometheus/releases/download/v2.14.0/prometheus-2.14.0.linux-amd64.tar.gz
$ tar xvzf prometheus-2.14.0.linux-amd64.tar.gz
$ sudo cp -r prometheus-2.14.0.linux-amd64 /etc/prometheus
普罗米修斯的启动脚本配置和日志轮换配置,可参考。
$ sudo /etc/init.d/prometheus start
$ sudo /etc/init.d/prometheus status
$ sudo /etc/init.d/prometheus stop
确认对Prometheus的访问

确认执行 PromQL
在标有”Expression”的框中输入查询并点击”Execute”执行。
确认上线的服务器
表达方式: 上线
元素: 上线{实例=”localhost:9090″,任务=”prometheus”}
数值: 1
查看使用中的内存(基本单位为字节、秒等)
表达式:process_resident_memory_bytes
元素:process_resident_memory_bytes{instance=”localhost:9090″,job=”prometheus”}
值:49057792
出口商
已分配的端口列表: 端口分配
安装Node exporter。
$ cd /tmp
$ curl -LO https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
$ tar xvzf node_exporter-0.18.1.linux-amd64.tar.gz
$ sudo cp -r node_exporter-0.18.1.linux-amd64 /etc/node_exporter
请参考Node exporter的启动脚本设置和日志轮转设置。
$ sudo vim /etc/rc.d/init.d/node_exporter # 起動スクリプト作成
$ sudo chmod +x /etc/rc.d/init.d/node_exporter
$ sudo mkdir /var/log/node_exporter
$ sudo /etc/init.d/node_exporter start # 起動スクリプトにてスタート
$ sudo /etc/init.d/node_exporter status
$ sudo chkconfig node_exporter on
$ sudo vim /etc/logrotate.d/node_exporter # ログローテート設定作成
$ sudo vim /etc/prometheus/prometheus.yml # Prometheus 設定ファイルに追記
$ sudo /etc/prometheus/promtool check config /etc/prometheus/prometheus.yml
Checking /etc/prometheus/prometheus.yml
SUCCESS: 0 rule files found
$ sudo /etc/init.d/prometheus reload
从Prometheus控制台执行并确认以下内容:
表达式:node_memory_Cached_bytes
元素:node_memory_Cached_bytes{instance=”localhost:9100″,job=”node”}
值:996540416
安装Grafana并与Prometheus进行集成。
$ wget https://dl.grafana.com/oss/release/grafana-6.4.4-1.x86_64.rpm
$ sudo yum install initscripts urw-fonts
$ sudo rpm -Uvh grafana-6.4.4-1.x86_64.rpm
$ sudo /etc/init.d/grafana-server start
$ sudo chkconfig grafana-server on
请登录到 http://localhost:13000/,使用 admin/admin 进行登录,并进行初始密码更改操作。
添加数据源

点击【保存并测试】按钮,会显示”数据源正在工作”。
创建仪表盘

环境文件
$ cat /etc/sysconfig/grafana-server
GRAFANA_USER=grafana
GRAFANA_GROUP=grafana
GRAFANA_HOME=/usr/share/grafana
LOG_DIR=/var/log/grafana
DATA_DIR=/var/lib/grafana
MAX_OPEN_FILES=10000
CONF_DIR=/etc/grafana
CONF_FILE=/etc/grafana/grafana.ini
RESTART_ON_UPGRADE=true
PLUGINS_DIR=/var/lib/grafana/plugins
PROVISIONING_CFG_DIR=/etc/grafana/provisioning
# Only used on systemd systems
PID_FILE_DIR=/var/run/grafana
配置
以下是对 /etc/grafana/grafana.ini 的本地语言翻译:
Grafana 配置文件位于 /etc/grafana/grafana.ini 中。
PromQL (Prometheus Query Language) 用汉语来概括是一种查询语言。
以下是关于安装了node_exporter的服务器(localhost:9100)的接收数据(字节)的输出结果。
node_network_receive_bytes_total的中文意思是“节点网络接收的总字节数”。
标签的正则表达式示例
输出所有带有virbr开头的设备信息的node_network_receive_bytes_total{device=~”virbr.+”}
输出与device为virbr0或virbr0-nic的内容:node_network_receive_bytes_total{device=~”virbr0|virbr0-nic”}
度量的正则表达式
查询”node_network_receive_bytes_total”和”node_network_transmit_bytes_total”两个指标。{__name__=~”node_network_(receive|transmit)_bytes_total”}
rate() 函数用于指定时间的值。
- counterのみに使用すること。
如果想要输出每个时间段的数据,可以使用类似于“node_network_receive_bytes_total”这样按时间累积数据的方式。
每10分钟的值
rate(node_network_receive_bytes_total[10m])
排行榜
返回五个最高的数据。
topk(5, 最大(30分钟内node_network_receive_bytes_total的总和))
符号运算
下列这些运算符也可以进行描述。
rate(node_network_transmit_bytes_total[10m]) + 1000 / 10 * 20 – 5 ^ 2 % 2
以下是对”比較演算子”的中文本土译法:
比较运算符
可以使用以下运算符:相等(==)、不等(!=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=)。
rate(node_network_receive_bytes_total[10m]) 不等于 0
rate(node_network_receive_bytes_total[10m]) 小于等于 1000
分组
获取”localhost:9100″实例的分组总和。
按实例分组计算node_network_receive_bytes_total的总和。
按实例分组计算node_network_receive_bytes_total的速率总和(在5分钟内)。
计量仪表
- 決まった範囲の値が上下するメモリなどに使う。
max_over_time、min_over_time、avg_over_time函数。
max_over_time(node_memory_MemFree_bytes[5m])
随时间的推移,node_memory_MemFree_bytes[5m]的最大值。
以下是我参考的网站
-
- https://qiita.com/tiida26/items/d251fb42f7f2d8a68374
- https://medium.com/@valyala/promql-tutorial-for-beginners-9ab455142085