【腾讯云】服务不可用报警调查

在腾讯云的告警策略中,只能基于服务器的监测数据(CPU、内存、磁盘、带宽等)进行告警,无法基于服务和接口进行告警。
为了满足上述需求,需要接入腾讯云的应用性能观测服务。
产品帮助文档:https://cloud.tencent.com/document/product/1463

  • JavaOpenTelemetrySkywalking(推荐 OpenTelemetry)
  • NodeJaeger

Java 应用接入

修改 DockerfileDockerfile 中如何使用环境变量)

-javaagent:/path/to/opentelemetry-javaagent.jar //请将路径修改为您文件下载的实际地址。
-Dotel.resource.attributes=service.name=<appName>,token=*****
-Dotel.exporter.otlp.endpoint=*****
  

Node 应用接入(暂不接入,需要改代码)

  1. 使用 npm 安装依赖

    npm i jaeger-client
      
  2. 引入 SDK,示例如下:

    const initTracer = require('jaeger-client').initTracer;
    
    // jaeger 配置
    const config = {
        serviceName: 'service-name', // 服务名称,根据业务自行修改
        sampler: {
            type: 'const',
            param: 1,
        },
        reporter: {
            logSpans: true,
            collectorEndpoint: 'http://ap-guangzhou.apm.tencentcs.com:14268/api/traces', // 接入点,比前在应用性能监控获取的接入点多了 api/traces
        },
    };
    
    const options = {
        tags: {
            token: 'Vds************CrKck' // 业务申请的 token
        },
    };
      
  3. 进行数据上报 ,示例如下:

    // 初始化 tracer 实例对象
    const tracer = initTracer(config, options);
    
    // 初始化 span 实例对象
    const span = tracer.startSpan('spanStart');
    
    // 当前服务为server
    span.setTag('span.kind', 'server');
    
    // 设置标签(可选,支持多个)
    span.setTag('tagName', 'tagValue');
    
    // 设置事件(可选,支持多个)
    span.log({ event: 'timestamp', value: Date.now() });
    
    // 标记Span结束
    span.finish();