You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Portal中PHP Web Service的监控实现问题咨询

可行的监控方案(适配你的PHP/HTML技术栈)

完全可以实现监控,下面是几个适配你技术栈的方案,从修复Application Insights集成到轻量日志监控都有:

方案1:修复Application Insights PHP集成(推荐)

你之前的失败大概率是配置/初始化问题,而非Azure PHP运行时的限制。官方PHP SDK完全支持Azure App Service环境:

  • 安装SDK:用Composer执行composer require microsoft/application-insights,如果不用Composer,直接下载SDK源码放到项目目录。
  • 初始化并追踪数据:在处理表单的PHP文件顶部添加代码:
<?php
// 加载SDK(Composer安装的话用这个,手动下载的话替换为SDK的autoload路径)
require_once __DIR__ . '/vendor/autoload.php';
use Microsoft\ApplicationInsights\TelemetryClient;

// 从Azure应用设置读取密钥(避免硬编码)
$instrumentationKey = getenv('APPINSIGHTS_INSTRUMENTATIONKEY');
$client = new TelemetryClient(['instrumentationKey' => $instrumentationKey]);

// 追踪当前请求
$client->trackRequest(
    $_SERVER['REQUEST_URI'],
    time(),
    $_SERVER['REQUEST_TIME_FLOAT'],
    http_response_code(),
    true // 标记为成功,可根据数据库插入结果改为false
);

// 追踪表单提交事件(仅POST请求时)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $submitStatus = 'success';
    // 这里可以结合你的数据库插入逻辑,比如如果插入失败就把$submitStatus改成'failed'
    $client->trackEvent('Form_Submitted', [
        'user_input' => $_POST['username'] ?? 'unknown',
        'status' => $submitStatus
    ]);
}

// 发送所有追踪数据到Application Insights
$client->flush();

// 你的原有表单处理逻辑...
  • 配置Azure应用设置:在App Service的「配置」→「应用程序设置」中添加APPINSIGHTS_INSTRUMENTATIONKEY,值为你的Application Insights实例密钥。
  • 部署注意:确保composer.json和composer.lock提交到Git,Azure的Git流水线会自动安装依赖(默认开启)。

方案2:轻量文件日志监控(无需额外SDK)

如果不想引入第三方依赖,直接用PHP原生日志功能:

  • 在PHP中写日志:在表单处理逻辑中添加日志代码:
// 数据库插入成功后记录日志
$logMessage = date('[Y-m-d H:i:s]') . " Form submitted: email=" . ($_POST['email'] ?? 'unknown') . " status=success\n";
// 写入日志文件(路径可自定义)
file_put_contents(__DIR__ . '/form_submission.log', $logMessage, FILE_APPEND | LOCK_EX);

// 如果插入失败,记录错误日志
if ($dbInsertFailed) {
    error_log(date('[Y-m-d H:i:s]') . " Form submission failed: " . mysqli_error($conn), 3, __DIR__ . '/form_errors.log');
}
  • 查看日志:在Azure Portal的App Service「日志」→「日志流」中实时查看,或通过「高级工具(Kudu)」下载日志文件分析。

方案3:前端JS监控(补充后端监控)

利用你略懂的JavaScript,添加前端行为监控,追踪用户提交动作、网络错误:

  • 在HTML表单页面添加JS代码:
<script type="text/javascript">
// 初始化Application Insights JS SDK
var appInsights=window.appInsights||function(a){
  function b(a){c[a]=function(){var b=arguments;c.queue.push(function(){c[a].apply(c,b)})}}var c={config:a},d=document,e=window;setTimeout(function(){var b=d.createElement("script");b.src=a.url||"https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",d.getElementsByTagName("script")[0].parentNode.appendChild(b)});try{c.cookie=d.cookie}catch(a){}c.queue=[];for(var f=["Event","Exception","Metric","PageView","Trace","Dependency"];f.length;)b("track"+f.pop());if(b("setAuthenticatedUserContext"),b("clearAuthenticatedUserContext"),b("startTrackEvent"),b("stopTrackEvent"),b("startTrackPage"),b("stopTrackPage"),b("flush"),!a.disableExceptionTracking){f="onerror",b("_"+f);var g=e[f];e[f]=function(a,b,d,e,h){var i=g&&g(a,b,d,e,h);return!0!==i&&c["_"+f](a,b,d,e,h),i}}return c
}({
  instrumentationKey: "你的Application Insights密钥"
});

window.appInsights=appInsights;
appInsights.trackPageView();

// 追踪表单提交事件
document.getElementById("your-form-id").addEventListener("submit", function(e) {
  appInsights.trackEvent("Frontend_Form_Submit", {
    form_id: "your-form-id",
    submit_timestamp: new Date().toISOString()
  });
});

// 追踪表单提交失败(比如网络错误)
document.getElementById("your-form-id").addEventListener("submit", async function(e) {
  try {
    const formData = new FormData(this);
    await fetch(this.action, { method: this.method, body: formData });
  } catch (err) {
    appInsights.trackException(err);
  }
});
</script>
  • 这个方案可以监控前端用户的操作情况,和后端监控形成互补。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:35:16