从零开始启动Zabbix 6.4,并获取以Prometheus格式呈现的指标

一个从未接触过Zabbix的人听说可以从Zabbix获取Prometheus的度量指标时,确认了如何获取的记录。虽然这只是一个业余的记录,可能有很多可挑剔之处,但作为纪录而保留下来。

验证环境

我在下述环境中进行了确认。

    • Ubuntu 20.04.6

 

    docker 24.0.2

启动Zabbix

因为使用docker-compose可以轻松构建,所以我们选择了这种方式。

Zabbix的docker-compose启动也在官方网站上得到支持。

虽然官方文档中写明支持5.4版本,但从GitHub存储库中可以看到适用于v6.4.4版本。这次我们将使用6.4.4版本进行启动。

根据docker-compose文件,配置可能会有所不同,但这次我们将在Ubuntu上使用docker-compose_v3_ubuntu_mysql_latest.yaml配置文件来构建Zabbix和MySQL。

根据官方步骤,执行以下操作:先进行git克隆,然后执行docker compose up。

git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker/
docker compose -f ./docker-compose_v3_ubuntu_mysql_latest.yaml up -d

由于实际上使用了相同的端口,因此使用修正后的docker-compose.yml文件,在801端口等待。

 zabbix-web-nginx-mysql:
  image: zabbix/zabbix-web-nginx-mysql:ubuntu-6.4-latest
  ports:
   - "801:8080"
   - "443:8443"

启动Node Exporter

由于它是基于Prometheus的度量标准,所以只要是Prometheus格式的度量标准,怎么样都可以。在这里,我们简单快速地部署了Node Exporter在跳板环境上,并公开了度量标准。只需在此提供的docker-compose.yml文件中添加公开端口并启动。

cat << EOF > ./docker-compose.yml
version: '3.8'

services:
  node_exporter:
    image: quay.io/prometheus/node-exporter:latest
    ports:
      - 9100:9100
    container_name: node_exporter
    command:
      - '--path.rootfs=/host'
    network_mode: host
    pid: host
    restart: unless-stopped
    volumes:
      - '/:/host:ro,rslave'
EOF
docker compose up -d

启动后,请确认是否可以获取到指标。

$ curl -s 10.41.79.87:9100/metrics
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 2.0534e-05
 :(省略)

通过Zabbix获取指标数据

1689045001575.png
1689049253999.png
1689049860284.png

输入的值将为以下内容。

    • Name: node-exporter

Type: HTTP agent

Key: node-exporter

Type of information: Charactor

URL: http://Node ExporterのホストのIP:9100/metrics

可能的是,Name和Key可以是任何内容。
在这个状态下,点击Test,并点击Get value and test,可以确认在Result处可以获取到与curl的结果类似的字符串。

1689072348263.png
1689072877903.png
    • Name: <対象メトリクス名>

Type: Dependent item

Key: <対象メトリクス名>

Type of information: Numeric (unsigned) ※データの種類によって変える必要あり
Master item: <先程作成したエンドポイントのitem>

1689072974238.png
    • Name: Prometheus pattern

Parameters: <クエリ> ※ここではpromhttp_metric_handler_requests_total{code=”200″}とした

如果以此方式保存,一段时间后,如果没有问题,状态将会变为启用。

1689073305259.png
1689073379808.png
1689073413885.png

我基本上确认了Zabbix能够读取Prometheus格式的指标。

未解决问题

以下调查是否不足或是规格不清还存在问题。

    任意のアプリケーションに対して個々のメトリクスを指定せずにまとめて取る方法(要は普通のPrometheus的なスクレイプ方法)が分からない

如果有人知道对策,请告诉我。

广告
将在 10 秒后关闭
bannerAds