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的访问

1.JPG

确认执行 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 进行登录,并进行初始密码更改操作。

添加数据源

datasource.JPG

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

创建仪表盘

dashboard.JPG

环境文件

$ 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的中文意思是“节点网络接收的总字节数”。

ElementValuenode_network_receive_bytes_total{device=”enp0s3″,instance=”localhost:9100″,job=”node”}54247node_network_receive_bytes_total{device=”lo”,instance=”localhost:9100″,job=”node”}354136node_network_receive_bytes_total{device=”virbr0″,instance=”localhost:9100″,job=”node”}0node_network_receive_bytes_total{device=”virbr0-nic”,instance=”localhost:9100″,job=”node”}0

标签的正则表达式示例

输出所有带有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
bannerAds