Centreon (nagios) 到 Prometheus:bash 自定义检查
Centreon (nagios) to Prometheus : bash custom check
我们有一个 Centreon 服务器(基于 nagios),在 bash 中有不同的自定义检查。
例如,每 2 分钟检查一次 CSV 文件是否有错误的脚本:
- 如果错误超过 0 个,检查结果为警告
- 否则,OK
类似于:
count_files=$(find -name "*.csv" | wc -l)
if [[ $count_files -ne 0 ]]
then
echo "WARNING - Error files found"
exit 1
else
echo "OK - No error file found"
exit 0
fi
我们计划将 Centreon 更改为 Prometheus/Grafana,但我想知道如何在 Prometheus 中进行自定义 bash 检查。
我应该将我的脚本放在这些 VM 上并以 Prometheus 格式公开结果吗?像这样:
# HELP csv_checker Check error in csv files
# TYPE csv_checker gauge
csv_checker 20
如果是,我该怎么做?
Prometheus 会定期检查这个端点吗?我如何使用约 300 个虚拟机来管理它?
我建议您使用 NodeExporter 的功能 Textfile Collector
在每个 VM 上设置节点导出器并添加一个 cronjob 调用您的 bash 脚本以每 2 分钟收集一次数据 (*/2 * * * *
):
#!/usr/bin/env bash
set -euo pipefail
csv_files=$(find /mnt -name "*.csv" | wc -l)
echo "# HELP csv_files Amount of .csv files
# TYPE csv_files gauge
csv_files{} $csv_files" > /opt/node_exporter/textfile_collector/csv_files.prom.$$
mv /opt/node_exporter/textfile_collector/csv_files.prom.$$ /opt/node_exporter/textfile_collector/csv_files.prom
设置 Prometheus 以从您的 VM 收集指标
设置警报管理器
添加警报规则,例如:
- alert: Errors in CSV files
expr: csv_files != 0
for: 1m
labels:
severity: warning
annotations:
summary: Errors in CSV files on the instance {{ $labels.instance }}
description: "VALUE = {{ $value }}\n LABELS = {{ $labels }}"
Prometheus 将以给定的时间间隔检查您的所有主机,并在 /target_folder
中使用 .csv 文件通知每个实例
我们有一个 Centreon 服务器(基于 nagios),在 bash 中有不同的自定义检查。
例如,每 2 分钟检查一次 CSV 文件是否有错误的脚本:
- 如果错误超过 0 个,检查结果为警告
- 否则,OK
类似于:
count_files=$(find -name "*.csv" | wc -l)
if [[ $count_files -ne 0 ]]
then
echo "WARNING - Error files found"
exit 1
else
echo "OK - No error file found"
exit 0
fi
我们计划将 Centreon 更改为 Prometheus/Grafana,但我想知道如何在 Prometheus 中进行自定义 bash 检查。
我应该将我的脚本放在这些 VM 上并以 Prometheus 格式公开结果吗?像这样:
# HELP csv_checker Check error in csv files
# TYPE csv_checker gauge
csv_checker 20
如果是,我该怎么做?
Prometheus 会定期检查这个端点吗?我如何使用约 300 个虚拟机来管理它?
我建议您使用 NodeExporter 的功能 Textfile Collector
在每个 VM 上设置节点导出器并添加一个 cronjob 调用您的 bash 脚本以每 2 分钟收集一次数据 (
*/2 * * * *
):#!/usr/bin/env bash set -euo pipefail csv_files=$(find /mnt -name "*.csv" | wc -l) echo "# HELP csv_files Amount of .csv files # TYPE csv_files gauge csv_files{} $csv_files" > /opt/node_exporter/textfile_collector/csv_files.prom.$$ mv /opt/node_exporter/textfile_collector/csv_files.prom.$$ /opt/node_exporter/textfile_collector/csv_files.prom
设置 Prometheus 以从您的 VM 收集指标
设置警报管理器
添加警报规则,例如:
- alert: Errors in CSV files expr: csv_files != 0 for: 1m labels: severity: warning annotations: summary: Errors in CSV files on the instance {{ $labels.instance }} description: "VALUE = {{ $value }}\n LABELS = {{ $labels }}"
Prometheus 将以给定的时间间隔检查您的所有主机,并在 /target_folder