PHP-FPM 集成

编辑

版本

1.4.0 (查看全部)

兼容的 Kibana 版本

8.13.0 或更高版本

支持的无服务器项目类型
这是什么?

安全性
可观测性

订阅级别
这是什么?

基本

支持级别
这是什么?

Elastic

概述

编辑

PHP-FPM (FastCGI Process Manager) 是一种用于加速网站性能的 Web 工具。它比传统的基于 CGI 的方法快得多,并且能够同时处理巨大的负载。

使用 PHP-FPM 集成可以

  • 收集与池和进程相关的指标。
  • 创建可视化效果来监控、测量和分析使用趋势和关键数据,从而获得业务见解。
  • 创建警报,通过在排除问题时引用相关日志来减少 MTTD 和 MTTR。

数据流

编辑

PHP-FPM 集成收集指标数据。

指标提供对 PHP-FPM 统计信息的深入了解。PHP-FPM 集成收集的指标数据流包括 进程,以便用户可以监控和排除 PHP-FPM 实例的性能问题。

数据流

  • pool:收集与连接处理、队列指标、进程管理器配置、进程活动和性能指标相关的信息。
  • process:收集与请求指标、最新的 CPU 和内存使用情况以及当前运行状态相关的信息。

注意

  • 用户可以在 Discoverlogs-* 索引模式下,监控和查看 PHP-FPM 摄取文档内的指标。

兼容性

编辑

此集成已针对 v8.2v8.1 独立版本的 PHP-FPM 进行了测试。

要求

编辑

您需要 Elasticsearch 来存储和搜索数据,以及 Kibana 来可视化和管理数据。您可以使用我们在 Elastic Cloud 上的托管 Elasticsearch 服务(推荐),也可以在您自己的硬件上自行管理 Elastic Stack。

为了从 PHP-FPM 摄取数据,您必须知道 PHP-FPM 实例的主机和状态路径。

主机配置格式:http[s]://主机[:端口]

主机配置示例:https://127.0.0.1:8080

状态路径配置格式:/路径

状态路径配置示例:/status

设置

编辑

有关如何设置集成的分步说明,请参阅入门指南。

验证

编辑

成功配置集成后,单击 PHP-FPM 集成的“*资产*”选项卡以显示可用的仪表板。选择您配置的数据流的仪表板,其中应填充所需的数据。

故障排除

编辑

如果 host.iplogs-* 数据视图下出现冲突,则可以通过重新索引 PoolProcess 数据流的索引来解决此问题。

指标参考

编辑

pool 数据流收集与 FPM 状态页面的设置和内容相关的指标。

示例

pool 的事件示例如下

{
    "@timestamp": "2023-07-28T10:10:15.918Z",
    "agent": {
        "ephemeral_id": "9581f949-002c-4a1f-8939-abae313a3e55",
        "id": "79efec86-f67c-4ca6-8a2e-a8900f9ae3ac",
        "name": "docker-fleet-agent",
        "type": "filebeat",
        "version": "8.7.1"
    },
    "data_stream": {
        "dataset": "php_fpm.pool",
        "namespace": "ep",
        "type": "logs"
    },
    "ecs": {
        "version": "8.11.0"
    },
    "elastic_agent": {
        "id": "79efec86-f67c-4ca6-8a2e-a8900f9ae3ac",
        "snapshot": false,
        "version": "8.7.1"
    },
    "event": {
        "agent_id_status": "verified",
        "category": [
            "web",
            "configuration",
            "process"
        ],
        "created": "2023-07-28T10:10:15.918Z",
        "dataset": "php_fpm.pool",
        "ingested": "2023-07-28T10:10:19Z",
        "kind": "event",
        "module": "php_fpm",
        "type": [
            "info"
        ]
    },
    "input": {
        "type": "httpjson"
    },
    "php_fpm": {
        "pool": {
            "connections": {
                "accepted": 1,
                "listen_queue": {
                    "max_size": 128,
                    "requests": {
                        "max": 0
                    }
                },
                "queued": 0
            },
            "name": "www",
            "process_manager": {
                "type": "ondemand"
            },
            "processes": {
                "active": {
                    "count": 1,
                    "max": 1
                },
                "children_reached": {
                    "max": 0
                },
                "count": 1,
                "idle": 0
            },
            "slow_requests": 0,
            "start_since": 17,
            "start_time": 1690538998
        }
    },
    "service": {
        "address": "http://elastic-package-service_php_fpm_1"
    },
    "tags": [
        "php_fpm-pool",
        "forwarded"
    ]
}

ECS 字段参考

有关 ECS 字段的详细信息,请参阅以下文档

导出的字段
字段 描述 类型 单位 指标类型

@timestamp

事件时间戳。

日期

data_stream.dataset

数据流数据集。

constant_keyword

data_stream.namespace

数据流命名空间。

constant_keyword

data_stream.type

数据流类型。

constant_keyword

input.type

Filebeat 输入的类型。

keyword

php_fpm.pool.connections.accepted

已接受连接的总数。

long

计数器

php_fpm.pool.connections.listen_queue.max_size

侦听队列允许的最大大小。

long

gauge

php_fpm.pool.connections.listen_queue.requests.max

在任何给定时间在侦听队列中看到的最大请求数。

long

gauge

php_fpm.pool.connections.queued

当前正在等待空闲进程的请求数(积压)。

long

gauge

php_fpm.pool.name

FPM 进程池的名称。

keyword

php_fpm.pool.process_manager.type

进程管理器类型 - static、dynamic 或 ondemand。

keyword

php_fpm.pool.processes.active.count

当前正在处理请求的进程数。

long

gauge

php_fpm.pool.processes.active.max

并发活动的进程的最大数量。

long

gauge

php_fpm.pool.processes.children_reached.max

是否曾达到最大进程数?如果达到,则显示的值为 1,否则值为 0。

long

gauge

php_fpm.pool.processes.count

当前进程总数。

long

gauge

php_fpm.pool.processes.idle

当前处于空闲状态(等待请求)的进程数。

long

gauge

php_fpm.pool.slow_requests

已达到配置的 request_slowlog_timeout 的请求总数。

long

计数器

php_fpm.pool.start_since

自上次启动进程池以来的秒数。

long

计数器

php_fpm.pool.start_time

上次启动进程池的日期/时间。

long

进程

编辑

process 数据流收集与请求持续时间、内容长度、进程状态等相关的指标。

示例

process 的事件示例如下

{
    "@timestamp": "2023-07-28T10:11:12.080Z",
    "agent": {
        "ephemeral_id": "0f5589f7-327f-468e-b368-00ada3a96721",
        "id": "79efec86-f67c-4ca6-8a2e-a8900f9ae3ac",
        "name": "docker-fleet-agent",
        "type": "filebeat",
        "version": "8.7.1"
    },
    "data_stream": {
        "dataset": "php_fpm.process",
        "namespace": "ep",
        "type": "logs"
    },
    "ecs": {
        "version": "8.11.0"
    },
    "elastic_agent": {
        "id": "79efec86-f67c-4ca6-8a2e-a8900f9ae3ac",
        "snapshot": false,
        "version": "8.7.1"
    },
    "event": {
        "agent_id_status": "verified",
        "category": [
            "web",
            "configuration",
            "process"
        ],
        "created": "2023-07-28T10:11:12.080Z",
        "dataset": "php_fpm.process",
        "ingested": "2023-07-28T10:11:15Z",
        "kind": "event",
        "module": "php_fpm",
        "type": [
            "info"
        ]
    },
    "http": {
        "request": {
            "body": {
                "bytes": 0
            },
            "method": "GET"
        }
    },
    "input": {
        "type": "httpjson"
    },
    "php_fpm": {
        "process": {
            "pool": {
                "name": "www"
            },
            "request": {
                "count": 1,
                "duration": 581,
                "last": {
                    "cpu": {
                        "pct": 0
                    },
                    "memory": 0
                }
            },
            "script": "-",
            "start_since": 0,
            "start_time": 1690539072,
            "state": "Running"
        }
    },
    "process": {
        "pid": 33
    },
    "service": {
        "address": "http://elastic-package-service_php_fpm_1"
    },
    "tags": [
        "php_fpm-process",
        "forwarded"
    ],
    "url": {
        "original": "/status?json&full"
    },
    "user": {
        "name": "-"
    }
}

ECS 字段参考

有关 ECS 字段的详细信息,请参阅以下文档

导出的字段
字段 描述 类型 单位 指标类型

@timestamp

事件时间戳。

日期

data_stream.dataset

数据流数据集。

constant_keyword

data_stream.namespace

数据流命名空间。

constant_keyword

data_stream.type

数据流类型。

constant_keyword

input.type

Filebeat 输入的类型。

keyword

php_fpm.process.pool.name

FPM 进程池的名称。

keyword

php_fpm.process.request.count

已服务的请求总数。

long

计数器

php_fpm.process.request.duration

请求的持续时间,以微秒为单位。

long

微秒

gauge

php_fpm.process.request.last.cpu.pct

上次请求的 %cpu。如果进程未处于空闲状态,则此值为 0,因为计算是在请求处理完成后完成的。

long

百分比

gauge

php_fpm.process.request.last.memory

上次请求消耗的最大内存量。如果进程未处于空闲状态,则此值为 0,因为计算是在请求处理完成后完成的。

long

字节

gauge

php_fpm.process.script

上次请求执行的脚本的完整路径。如果不可用,则为-(例如,状态页面请求)。

keyword

php_fpm.process.start_since

自进程启动以来的秒数。

long

计数器

php_fpm.process.start_time

进程启动的日期/时间。

long

php_fpm.process.state

进程的状态。

keyword

变更日志

编辑
变更日志
版本 详细信息 Kibana 版本

1.4.0

增强 (查看拉取请求)
ECS 版本更新至 8.11.0。将 kibana 约束更新为 ^8.13.0。修改了字段定义,以删除 ecs@mappings 组件模板中冗余的 ECS 字段。

8.13.0 或更高版本

1.3.0

增强 (查看拉取请求)
在 data_stream.dataset 上添加全局过滤器以提高性能。

8.7.1 或更高版本

1.2.1

增强 (查看拉取请求)
更新 README 以遵循文档指南。

8.7.1 或更高版本

1.2.0

增强 (查看拉取请求)
将请求跟踪器日志计数限制为 5。

8.7.1 或更高版本

1.1.0

增强 (查看拉取请求)
将包 format_version 更新为 3.0.0。

8.7.1 或更高版本

1.0.0

增强 (查看拉取请求)
使 PHP-FPM GA。

8.7.1 或更高版本

0.6.2

Bug 修复 (查看拉取请求)
将 null 检查和 ignore_missing 检查添加到重命名处理器

0.6.1

增强 (查看拉取请求)
为池和进程数据流添加 metric_type。

0.6.0

增强 (查看拉取请求)
添加 service.address 字段并更新仪表板。

0.5.1

Bug 修复 (查看拉取请求)
解决 host.ip 字段中的冲突

0.5.0

增强 (查看拉取请求)
将所有权从 obs-service-integrations 重命名为 obs-infraobs-integrations

0.4.0

增强 (查看拉取请求)
添加一个新标志以启用请求跟踪

0.3.0

增强 (查看拉取请求)
将可视化迁移到 Lens。

0.2.2

增强 (查看拉取请求)
添加了类别和/或子类别。

0.2.1

错误修复 (查看拉取请求)
PHP-FPM 进程数据流更新字段描述

0.2.0

增强 (查看拉取请求)
包含“进程”数据流的 PHP-FPM 集成包。

0.1.0

增强 (查看拉取请求)
包含“池”数据流的 PHP-FPM 集成包。