[03] 尝试在非K8s环境中引入Prometheus … 使用NodeExporter试一试
概述
鉴于工作场所的 “非K8s环境”,尽管有点不寻常,但我们决定引入Prometheus,并进行调查和引入评估。
此外,据说在工作场所的“非K8s环境”中已经引入了“Zabbix 4.0”,但希望为未来做好准备,想尝试使用Prometheus。
在之前建立的环境中,引入NodeExporter来进行以下监视。
若连续5分钟内的CPU使用率超过80%,则视为警报处理。
另外,在Zabbix用户角度上加上一些评论。
以下是中文的本机语言版陈述:
环境
主机(物理个人电脑)
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
$ hostname -I
192.168.10.47
建立环境

步驟
1. 文件结构
从之前的内容继续。
目前文件的结构如下。
$ tree . --charset=C --dirsfirst
.
|-- PV
| |-- etc
| | `-- prometheus
| | `-- prometheus.yml
| `-- var
| `-- lib
| `-- grafana
| |-- csv [error opening dir]
| |-- plugins
| |-- png [error opening dir]
| `-- grafana.db
`-- docker-compose.yml
运行NodeExporter
NodeExporter 对应于Zabbix Agent.
它是在物理主机上进行操作。
由于这只是一次验证,所以可以在任意目录上运行。
获取 NodeExporter
$ mkdir bin
$ wget --no-check-certificate \
https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz \
-O nodexporter.tgz
$ tar xvfz nodexporter.tgz -C node --strip-components 1
$ cd bin
运行 NodeExporter
执行NodeExporter会显示监听9100端口的日志。
Zabbix代理程序中对应的是监听15000端口。
$ ./nodeexporter
略
level=info ts=2021-1 (略) msg="Listening on" address=:9100?
level=info ts=2021-1 (略) msg="TLS is disabled." http2=false
3. 创建和注册监控规则
创建规则“PV/etc/prometheus/prometheus-cpu.yml”。
我个人觉得这个和 Zabbix 的触发器设置很相似。
就像Zabbix不同,我认为不需要使用WEB-UI而只需使用YAML进行编写的优点是一个好处,但是好像没有像Zabbix那样完善的描述辅助功能。
groups:
- name: example
interval: 1m
rules:
- alert: cpu_usage_high
expr: 1 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m]))) > 0.8
for: 5m
3-2. 实施规则
将上述的prometheus-cpu.yml应用于PV/etc/prometheus/prometheus.yml。
PV/etc/prometheus/prometheus.yml 可以用以下方式进行改写:
持久化卷/等等/普罗米修斯/普罗米修斯.yml
以 YAML 的方式将 192.168.10.47:9100 注册为新的 NodeExporter。(在 Zabbix 中,这个操作可以通过 WEB-UI 进行注册,不过也可以通过 YAML 完成)。
然后,在”rule_files”部分注册上述创建的prometheus-cpu.yml文件。
(再重申一遍,通常情况下,这种操作在Zabbix中是通过WEB-UI进行的)
global:
# How frequently to scrape targets by default.
scrape_interval: 15s
# How frequently to evaluate rules.
evaluation_interval: 15s
# A list of scrape configurations.
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.10.47:49090']
+ - job_name: 'prometheus host machine'
+ static_configs:
+ - targets: ['192.168.10.47:9100']
+rule_files:
+ - prometheus-cpu.yml
4. 应用规则
文件结构
.
|-- PV
| |-- etc
| | `-- prometheus
| | |-- prometheus-cpu.yml ?追加した?
| | `-- prometheus.yml
| `-- var
| `-- lib
| `-- grafana
| |-- csv [error opening dir]
| |-- plugins
| |-- png [error opening dir]
| `-- grafana.db
`-- docker-compose.yml
重新启动
$ docker-compose restart prometheus
4-3. 确认运转
4-3-1. 检查目标
确认监视目标(在Zabbix中称为“主机”)是否已注册。
只需给出一个选项:请使用Web UI访问http://:49090/targets,并确保以下内容已正确注册。

另外,点击上述红框以查看显示的指标(Zabbix中的数据项值)。

对于4-4-2这个度量标准的确认
确认在Zabbix监控项目中已经注册了项目项。
访问http://:49090/rules,并且需要确认是否已经注册了如下内容。

另外,如果点击上述“expr”右侧的链接,可以看到警报的发生情况。
请直接用中文改写以下句子,只需要一个选项 :
以上
只需要一个选项,请将以下内容用中国母语进行释义:
参考信息
・”Zabbix統合監視実践入門 (技術評論社)” 第三版
・https://kazuhira-r.hatenablog.com/entry/2019/04/29/025816
・Prometheus官方網站
・CentOS 8 實踐指南[伺服器建置篇]
・Kubernetes實踐指南 支持雲原生應用的技術
・使用Prometheus監視Kubernetes的書籍 (電子版)