长期支持版本

    gala-gopher使用手册

    gala-gopher作为数据采集模块提供OS级的监控能力,支持动态加 /卸载探针,可无侵入式地集成第三方探针,快速扩展监控范围。

    本章介绍如何部署和使用gala-gopher服务。

    安装

    挂载repo源:

    [oe-22.03-lts-sp1-everything] # openEuler 22.03-LTS-SP1 官方发布源
    name=oe-2203-lts-sp1-everything
    baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/everything/x86_64/
    enabled=1
    gpgcheck=0
    priority=1
    
    [oe-22.03-lts-sp1-epol-update] # openEuler 22.03-LTS-SP1 Update 官方发布源
    name=oe-22.03-lts-sp1-epol-update
    baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/EPOL/update/main/x86_64/
    enabled=1
    gpgcheck=0
    priority=1
    
    [oe-22.03-lts-sp1-epol-main] # openEuler 22.03-LTS-SP1 EPOL 官方发布源
    name=oe-22.03-lts-sp1-epol-main
    baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/EPOL/main/x86_64/
    enabled=1
    gpgcheck=0
    priority=1
    

    安装gala-gopher:

    # yum install gala-gopher
    

    配置

    配置介绍

    gala-gopher配置文件为/opt/gala-gopher/gala-gopher.conf,该文件配置项说明如下(省略无需用户配置的部分)。

    如下配置可以根据需要进行修改:

    • global:gala-gopher全局配置信息。
      • log_file_name:gala-gopher日志文件名。
      • log_level: gala-gopher日志级别(暂未开放此功能)。
      • pin_path:ebpf探针共享map存放路径(建议维持默认配置)。
    • metric:指标数据metrics输出方式配置。
      • out_channel:metrics输出通道,支持配置web_server|kafka,配置为空则输出通道关闭。
      • kafka_topic:若输出通道为kafka,此为topic配置信息。
    • event:异常事件event输出方式配置。
      • out_channel:event输出通道,支持配置logs|kafka,配置为空则输出通道关闭。
      • kafka_topic:若输出通道为kafka,此为topic配置信息。
    • meta:元数据metadata输出方式配置。
      • out_channel:metadata输出通道,支持logs|kafka,配置为空则输出通道关闭。
      • kafka_topic:若输出通道为kafka,此为topic配置信息。
    • imdb:cache缓存规格配置。
      • max_tables_num:最大的cache表个数,/opt/gala-gopher/meta目录下每个meta对应一个表。
      • max_records_num:每张cache表最大记录数,通常每个探针在一个观测周期内产生至少1条观测记录。
      • max_metrics_num:每条观测记录包含的最大的metric指标个数。
      • record_timeout:cache表老化时间,若cache表中某条记录超过该时间未刷新则删除记录,单位为秒。
    • web_server:输出通道web_server配置。
      • port:监听端口。
    • kafka:输出通道kafka配置。
      • kafka_broker:kafka服务器的IP和port。
    • logs:输出通道logs配置。
      • metric_dir:metrics指标数据日志路径。
      • event_dir:异常事件数据日志路径。
      • meta_dir:metadata元数据日志路径。
      • debug_dir:gala-gopher运行日志路径。
    • probes:native探针配置。
      • name:探针名称,要求与native探针名一致,如example.probe 探针名为example。
      • param :探针启动参数,支持的参数详见启动参数介绍表
      • switch:探针是否启动,支持配置 on | off。
    • extend_probes :第三方探针配置。
      • name:探针名称。
      • command:探针启动命令。
      • param:探针启动参数,支持的参数详见启动参数介绍表
      • start_check:switch为auto时,需要根据start_check执行结果判定探针是否需要启动。
      • switch:探针是否启动,支持配置on | off | auto,auto会根据start_check判定结果决定是否启动探针。
    启动参数介绍
    参数项含义
    -l是否开启异常事件上报
    -t采样周期,单位为秒,默认配置为探针5s上报一次数据
    -T延迟时间阈值,单位为ms,默认配置为0ms
    -J抖动时间阈值,单位为ms,默认配置为0ms
    -O离线时间阈值,单位为ms,默认配置为0ms
    -D丢包阈值,默认配置为0(个)
    -F配置为task表示按照task_whitelist.conf过滤,配置为具体进程的pid表示仅监控此进程
    -P指定每个探针加载的探测程序范围,目前tcpprobe、taskprobe探针涉及
    -U资源利用率阈值(上限),默认为0%
    -L资源利用率阈值(下限),默认为0%
    -c指示探针(tcp)是否标识client_port,默认配置为0(否)
    -N指定探针(ksliprobe)的观测进程名,默认配置为NULL
    -p指定待观测进程的二进制文件路径,比如nginx_probe,通过 -p /user/local/sbin/nginx指定nginx文件路径,默认配置为NULL
    -w筛选应用程序监控范围,如-w /opt/gala-gopher/task_whitelist.conf,用户可将需要监控的程序名写入task_whitelist.conf中,默认配置为NULL表示不筛选
    -n指定某个网卡挂载tc ebpf,默认配置为NULL表示所有网卡均挂载,示例: -n eth0
    配置文件示例
    • 配置选择数据输出通道:

      metric =
      {
          out_channel = "web_server";
          kafka_topic = "gala_gopher";
      };
      
      event =
      {
          out_channel = "kafka";
          kafka_topic = "gala_gopher_event";
      };
      
      meta =
      {
          out_channel = "kafka";
          kafka_topic = "gala_gopher_metadata";
      };
      
    • 配置kafka和webServer:

      web_server =
      {
          port = 8888;
      };
      
      kafka =
      {
          kafka_broker = "<kafka服务器IP>:9092";
      };
      
    • 选择开启的探针,示例如下:

      probes =
      (
          {
              name = "system_infos";
              param = "-t 5 -w /opt/gala-gopher/task_whitelist.conf -l warn -U 80";
              switch = "on";
          },
      );
      extend_probes =
      (
          {
              name = "tcp";
              command = "/opt/gala-gopher/extend_probes/tcpprobe";
              param = "-l warn -c 1 -P 7";
              switch = "on";
          }
      );
      

    启动

    配置完成后,执行如下命令启动gala-gopher。

    # systemctl start gala-gopher.service
    

    查询gala-gopher服务状态。

    # systemctl status gala-gopher.service
    

    若显示结果如下,说明服务启动成功。需要关注开启的探针是否已启动,如果探针线程不存在,请检查配置文件及gala-gopher运行日志文件。

    gala-gopher成功启动状态

    说明:gala-gopher部署和运行均需要root权限。

    使用方法

    外部依赖软件部署

    gopher软件架构图

    如上图所示,绿色部分为gala-gopher的外部依赖组件。gala-gopher会将指标数据metrics输出到prometheus,将元数据metadata、异常事件event输出到kafka,灰色部分的gala-anteater和gala-spider会从prometheus和kafka获取数据。

    说明:安装kafka、prometheus软件包时,需要从官网获取安装包进行部署。

    输出数据
    • 指标数据metrics

      Prometheus Server内置了Express Browser UI,用户可以通过PromQL查询语句查询指标数据内容。详细教程参见官方文档:Using the expression browser。示例如下:

      指定指标名称为gala_gopher_tcp_link_rcv_rtt,UI显示的指标数据为:

      gala_gopher_tcp_link_rcv_rtt{client_ip="x.x.x.165",client_port="1234",hostname="openEuler",instance="x.x.x.172:8888",job="prometheus",machine_id="1fd3774xx",protocol="2",role="0",server_ip="x.x.x.172",server_port="3742",tgid="1516"} 1
      
    • 元数据metadata

      可以直接从kafka消费topic为gala_gopher_metadata的数据来看。示例如下:

      # 输入请求
      ./bin/kafka-console-consumer.sh --bootstrap-server x.x.x.165:9092 --topic gala_gopher_metadata
      # 输出数据
      {"timestamp": 1655888408000, "meta_name": "thread", "entity_name": "thread", "version": "1.0.0", "keys": ["machine_id", "pid"], "labels": ["hostname", "tgid", "comm", "major", "minor"], "metrics": ["fork_count", "task_io_wait_time_us", "task_io_count", "task_io_time_us", "task_hang_count"]}
      
    • 异常事件event

      可以直接从kafka消费topic为gala_gopher_event的数据来看。示例如下:

      # 输入请求
      ./bin/kafka-console-consumer.sh --bootstrap-server x.x.x.165:9092 --topic gala_gopher_event
      # 输出数据
      {"timestamp": 1655888408000, "meta_name": "thread", "entity_name": "thread", "version": "1.0.0", "keys": ["machine_id", "pid"], "labels": ["hostname", "tgid", "comm", "major", "minor"], "metrics": ["fork_count", "task_io_wait_time_us", "task_io_count", "task_io_time_us", "task_hang_count"]}
      

    文档捉虫

    “有虫”文档片段

    问题描述

    提交类型 issue

    有点复杂...

    找人问问吧。

    PR

    小问题,全程线上修改...

    一键搞定!

    问题类型
    规范和低错类

    ● 错别字或拼写错误;标点符号使用错误;

    ● 链接错误、空单元格、格式错误;

    ● 英文中包含中文字符;

    ● 界面和描述不一致,但不影响操作;

    ● 表述不通顺,但不影响理解;

    ● 版本号不匹配:如软件包名称、界面版本号;

    易用性

    ● 关键步骤错误或缺失,无法指导用户完成任务;

    ● 缺少必要的前提条件、注意事项等;

    ● 图形、表格、文字等晦涩难懂;

    ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

    正确性

    ● 技术原理、功能、规格等描述和软件不一致,存在错误;

    ● 原理图、架构图等存在错误;

    ● 命令、命令参数等错误;

    ● 代码片段错误;

    ● 命令无法完成对应功能;

    ● 界面错误,无法指导操作;

    风险提示

    ● 对重要数据或系统存在风险的操作,缺少安全提示;

    内容合规

    ● 违反法律法规,涉及政治、领土主权等敏感词;

    ● 内容侵权;

    您对文档的总体满意度

    非常不满意
    非常满意
    提交
    根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
    文档捉虫
    编组 3备份