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

如何通过Linux服务器Shell脚本在Dynatrace中创建问题指标并触发问题?

如何通过Linux Shell脚本在Dynatrace中创建问题指标

完全可以实现你的需求,以下是对应两个条件的具体实现方案:

1. 让Dynatrace能够调用Shell脚本

有两种常用方式实现脚本调用:

方式一:基于OneAgent自定义扩展(定时自动调用)

通过Dynatrace OneAgent的自定义扩展机制,配置定时执行你的服务状态检查脚本:

  • 在Linux服务器的OneAgent扩展目录(通常是/opt/dynatrace/oneagent/agent/conf/extensions)下创建自定义扩展文件夹,比如custom.service.status.monitor
  • 在该文件夹内创建extension.yaml配置文件,示例内容:
    name: custom.service.status.monitor
    version: 1.0.0
    description: 定时检查服务运行状态
    metrics:
      - key: service.health.status
        type: gauge
        displayName: 服务健康状态
        description: 1=运行正常,0=停止/异常
    entities:
      - type: HOST
        metrics:
          - service.health.status
    monitors:
      - type: remote
        script: /usr/local/bin/check_service_status.sh
        interval: 30s
    
  • 你的Shell脚本check_service_status.sh需要输出符合Dynatrace指标格式的内容,示例:
    #!/bin/bash
    if systemctl is-active --quiet my-target-service; then
      echo "service.health.status 1"
    else
      echo "service.health.status 0"
    fi
    
  • 给脚本添加执行权限:chmod +x /usr/local/bin/check_service_status.sh
  • 重启OneAgent生效:systemctl restart dynatrace-oneagent.service

方式二:通过Dynatrace API触发按需调用

如果需要按需触发脚本而非定时执行,可以通过Dynatrace API结合服务器本地调度实现:

  • 在Dynatrace控制台生成具备entities.read权限的API令牌
  • 在Linux服务器上配置脚本,可通过外部请求或内部调度(如cron)触发,执行状态检查逻辑

2. 根据脚本响应在Dynatrace中创建问题

同样有两种对应方案:

方案一:基于自定义指标配置警报规则

当脚本上报的指标触发阈值时,自动生成问题:

  1. 在Dynatrace控制台进入警报ing > 警报规则,点击「创建警报规则」
  2. 选择「自定义指标」,找到你定义的service.health.status
  3. 设置触发条件:比如「指标值等于0,持续时间超过1分钟」
  4. 配置问题的标题、描述,以及通知渠道(邮件、Slack等)
  5. 保存规则后,当脚本检测到服务异常时,Dynatrace会自动创建对应的问题

方案二:脚本直接调用API上报事件创建问题

如果需要更灵活的问题触发逻辑,可在脚本中直接调用Dynatrace Events API上报异常事件,自动生成问题:

  • 在脚本中添加异常上报逻辑,示例片段:
    #!/bin/bash
    SERVICE_NAME="my-target-service"
    DYNATRACE_URL="https://your-dynatrace-env.live.dynatrace.com/api/v2/events/ingest"
    API_TOKEN="your-api-token-with-events-ingest-permission"
    HOST_ENTITY_ID="HOST-XXXXXX" # 可通过Dynatrace API或控制台获取主机ID
    
    if ! systemctl is-active --quiet $SERVICE_NAME; then
      curl -X POST $DYNATRACE_URL \
        -H "Authorization: Api-Token $API_TOKEN" \
        -H "Content-Type: application/json" \
        -d '{
          "eventType": "CUSTOM_ALERT",
          "title": "'$SERVICE_NAME'服务异常",
          "description": "检测到'$SERVICE_NAME'已停止运行",
          "entitySelector": "type(HOST),entityId('$HOST_ENTITY_ID')"
        }'
    fi
    
  • 上报的自定义警报事件会在Dynatrace中自动转化为问题,并关联到指定的主机实体

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:39:45