同步操作将从 yangyongguang/gala-gopher 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
gala-gopher一款基于eBPF技术的探针框架,通过协同各种内核观测工具(包括CPU、网络、I/O、内存等)实现将操作系统运行状态白盒化呈现,并通过扩展能力提供系统性能瓶颈分析,应用性能劣化故障诊断等特性。
gala-gopher集成了常用的native探针以及知名中间件探针;gala-gopher有良好的扩展性,能方便的集成各种类型的探针程序,发挥社区的力量丰富探针框架的能力;gala-gopher中的几个主要部件:
gala-gopher框架
gala-gopher的基础框架,负责配置文件解析、native探针/extend探针的管理、探针数据收集管理、探针数据上报对接、集成测试等;
native探针
原生探针,主要是基于linux的proc文件系统收集的系统观测指标;
extend探针
支持shell/java/python/c等不同语言的第三方探针程序,仅需满足轻量的数据上报格式即可集成到gala-gopher框架中;方便满足各种应用场景下的观测诉求;目前已实现知名中间件程序的探针观测及指标上报,如:lvs、nginx、haproxy、dnsmasq、dnsbind、kafka、rabbitmq等;
部署配置文件
gala-gopher启动配置文件,可自定义具体使能的探针、指定数据上报的对接服务信息(kafka/prometheus等)
获取部署工具
执行工具脚本进行部署
rpm方式(仅支持openEuler 22.03 LTS/openEuler 22.03 LTS SP1)
sh deploy.sh gopher -K <kafka服务器地址>
容器镜像方式:
sh deploy.sh gopher -K <kafka服务器地址> --docker --tag <容器镜像tag>
注:目前支持的镜像版本tag有:euleros-v2r9(仅支持x86),20.03-lts,20.03-lts-sp1,22.03-lts,22.03-lts-sp1
完成上述两步后gala-gopher即可进入运行状态。部署工具的使用约束说明与所有选项详细说明可参照A-Ops-Tools部署工具手册
获取rpm包
gala-gopher目前已在openEuler 21.09(已停止维护)/openEuler 22.09(已停止维护)/openEuler 22.03-LTS-SP1发布,可以通过配置以上发布版本的正式repo源来获取rpm包;对于其他发布版本我们提供了以下方式来获取rpm包:
openEuler-20.03-LTS : https://117.78.1.88/package/show/home:zpublic:branches:openEuler:20.03:LTS:SP1/gala-gopher-20.03lts
openEuler-20.03-LTS-SP1 : https://117.78.1.88/package/show/home:zpublic:branches:openEuler:20.03:LTS:SP1/gala-gopher
EulerOS-V2R9 : https://117.78.1.88/package/show/home:zpublic:branches:openEuler:20.03:LTS:SP1/gala-gopher-v2r9
openEuler 22.03-LTS: http://121.36.84.172/dailybuild/openEuler-22.03-LTS/openEuler-22.03-LTS/EPOL/main/
rpm安装
yum install gala-gopher
运行
按照配置文件介绍自定义修改配置文件后,执行如下命令在前台运行:
gala-gopher
或者通过 systemd 启动后台服务(推荐):
systemctl start gala-gopher.service
获取容器镜像
获取官方容器镜像
在docker配置文件/etc/docker/daemon.json(文件不存在则需要新建)中追加如下内容来添加hub.oepkgs.net镜像仓库
{
"insecure-registries" : [ "hub.oepkgs.net" ]
}
完成后通过如下命令重启docker服务使配置生效:
systemctl daemon-reload
systemctl restart docker
根据系统架构从对应仓库拉取指定版本的gala-gopher官方容器镜像(以openEuler 20.03 LTS SP1为例):
# x86
docker pull hub.oepkgs.net/a-ops/gala-gopher-x86_64:20.03-lts-sp1
# aarch64
docker pull hub.oepkgs.net/a-ops/gala-gopher-aarch64:20.03-lts-sp1
目前支持的镜像版本tag有:euleros-v2r9(仅支持x86),20.03-lts,20.03-lts-sp1,22.03-lts,22.03-lts-sp1
构建容器镜像
获取gala-gopher的rpm包,获取方式详见第一小节基于rpm包安装运行。
用于生成容器镜像的Dockerfile文件归档在build目录,生成方法详见如何生成gala-gopher容器镜像。
创建并运行容器
gala-gopher涉及两个配置文件:gala-gopher.conf和gala-gopher-app.conf。gala-gopher.conf主要用于配置探针的数据上报开关、探针参数、探针是否开启等;gala-gopher-app.conf是观测白名单,可以把用户感兴趣的进程名加入白名单,gala-gopher就会观测这个进程了。
容器启动前需要用户自定义配置这两个配置文件,请在宿主机创建配置文件目录,并将config目录下两个配置文件保存到该目录,示例如下:
[root@localhost ~]# mkdir gopher_user_conf
[root@localhost gopher_user_conf]# ll
total 8.0K
-rw-r--r--. 1 root root 3.2K Jun 28 09:43 gala-gopher.conf
-rw-r--r--. 1 root root 108 Jun 27 21:45 gala-gopher-app.conf
请按照配置文件介绍自定义修改配置文件。在执行docker run命令时,需要将宿主机上自定义的配置文件目录和容器内/gala-gopher/user_conf目录映射,从而将自定义的配置信息同步到容器内。
最后按照如下示例命令启动容器:
docker run -d --name xxx -p 8888:8888 --privileged -v /etc/machine-id:/etc/machine-id -v /lib/modules:/lib/modules:ro -v /usr/src:/usr/src:ro -v /boot:/boot:ro -v /sys/kernel/debug:/sys/kernel/debug -v /sys/fs/bpf:/sys/fs/bpf -v /root/gopher_user_conf:/gala-gopher/user_conf/ -v /etc/localtime:/etc/localtime:ro -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/overlay2:/var/lib/docker/overlay2 --pid=host gala-gopher:1.0.1
成功启动容器后,通过docker ps可以看到正在运行的容器:
[root@localhost build]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eaxxxxxxxx02 gala-gopher:1.0.1 "/bin/sh -c 'cp -f /…" About a minute ago Up About a minute 0.0.0.0:8888->8888/tcp xxx
获取数据
如上步骤docker run命令中所示,我们映射了宿主机8888端口和容器的8888端口,因而可以通过8888端口获取数据来验证gala-gopher是否运行成功:
[root@localhost build]# curl http://localhost:8888
...
gala_gopher_udp_que_rcv_drops{tgid="1234",s_addr="192.168.12.34",machine_id="xxxxx",hostname="eaxxxxxxxx02"} 0 1656383357000
...
如上有指标数据输出则证明gala-gopher运行成功。
建议在最低openEuler-20.03-LTS-SP1的环境执行编译动作,这是因为gala-gopher中ebpf探针编译依赖clang和llvm,大多数的bpf功能需要clang 10或者更高版本才可以正常工作,而20.03-SP1以下的发布版本中clang版本较低(低于10)。
如下编译安装脚本在build目录。
安装依赖
该步骤会检查安装架构感知框架所有的依赖包,涉及三方探针编译、运行的依赖包会在编译构建中检查安装。
# sh build.sh --check
构建
# sh build.sh --clean
# sh build.sh --release # RELEASE模式
# 或者
# sh build.sh --debug # DEBUG模式
注:在编译过程中出现如下信息,表示bpf探针编译需要的vmlinux.h文件缺失;
vmlinux.h文件包含了系统运行Linux内核源码中使用的所有类型定义,可以利用bpftool工具生成;我们已经预生成了几个openEuler发布版本的vmlinux.h文件在src\probes\extends\ebpf.probe\src\include
目录,请根据内核版本、CPU架构选择相应的文件,并手动软链接到vmlinux.h;例如:
[root@master ~]# uname -r
4.19.90-2012.5.0.0054.oe1.x86_64
[root@master ~]# ln -s linux_4.19.90-2012.5.0.0053.oe1.x86_64.h vmlinux.h
生成vmlinux.h文件后再次执行编译命令。
安装
# sh install.sh
运行
# gala-gopher
我们提供了OBS地址,用于用户编译最新的rpm包。当用户需要最新的rpm包时,可以按照如下步骤自行编译出最新版本的rpm包。
EulerOS-V2R9C00 : https://117.78.1.88/package/show/home:zpublic:branches:openEuler:20.03:LTS:SP1/gala-gopher-v2r9
openEuler-20.03-LTS : https://117.78.1.88/package/show/home:zpublic:branches:openEuler:20.03:LTS:SP1/gala-gopher-20.03lts
openEuler-20.03-LTS-SP1 : https://117.78.1.88/package/show/home:zpublic:branches:openEuler:20.03:LTS:SP1/gala-gopher
openEuler-22.03-LTS : https://117.78.1.88/package/show/home:zpublic:branches:openEuler:22.03:LTS/gala-gopher
openEuler-22.09 : https://117.78.1.88/package/show/home:zpublic:branches:openEuler:22.09:Epol/gala-gopher
编译前需要选择对应版本的路径,并通过 Branch package
按钮拉出个人分支包,如下图所示:
注:branch操作仅需在第一次编包的时候执行一次,后续可以直接在 个人已有项目 处找到,直接执行后续的打包、上传编译等步骤。
# 需要先将gala-gopher文件夹名重命名为gala-gopher-1.0.0
# 然后打成tar包
[root@master code]# tar zcvf gala-gopher-1.0.0.tar.gz gala-gopher-1.0.0/
tar包上传并触发编译
还是以编译能够在openEuler-20.03-LTS环境运行的rpm包为例,需要在外网操作。参考如下视频:
右侧 Build Results
框会显示编译结果,building
表示还在编译中,failed
表示编译失败,succeeded
表示编译成功,编译成功则可以点击获取最新的rpm包。
[root@master ~]# yum localinstall gala-gopher-1.0.0-2.oe1.x86_64.rpm
# 前台运行
[root@master ~]# gala-gopher
# 通过systemd启动(推荐)
[root@master ~]# systemctl start gala-gopher.service
技术特征
•统一观测标准:支持对接prometheus、kafka、openTelemetry标准。
•低底噪:提供eBPF观测技术,通过优化eBPF运行时性能、动态装卸载等技术降低观测底噪。
•协同观测:提供探针框架,根据场景协同各探针调整观测范围,避免观测碎片化。
•对象式:定义(且可扩展)系统观测实体以及实体间关系,实时构建出云服务数据流拓扑。
基于CDN简化场景部署架构感知服务做了拓扑绘制的效果演示如下。
特性 | 发布时间 | 发布版本 |
---|---|---|
TCP异常巡检 | 22.12 | openEuler 22.03 SP1 |
Socket异常巡检 | 22.12 | openEuler 22.03 SP1 |
系统调用异常巡检 | 22.12 | openEuler 22.03 SP1 |
进程I/O异常巡检 | 22.12 | openEuler 22.03 SP1 |
Block I/O异常巡检 | 22.12 | openEuler 22.03 SP1 |
资源泄漏异常巡检 | 22.12 | openEuler 22.03 SP1 |
硬件(磁盘/网卡/内存)故障巡检 | 23.09 | openEuler 22.03 SP1, openEuler 23.09 |
JVM异常巡检 | 23.09 | openEuler 22.03 SP1, openEuler 23.09 |
主机网络栈(包括虚拟化)丢包巡检 | 23.09 | openEuler 22.03 SP1, openEuler 23.09 |
特性 | 发布时间 | 发布版本 |
---|---|---|
进程级TCP观测能力 | 22.12 | openEuler 22.03 SP1 |
进程级Socket观测能力 | 22.12 | openEuler 22.03 SP1 |
分布式存储全栈I/O观测能力 | 22.12 | openEuler 22.03 SP1 |
虚拟化存储I/O观测能力 | 22.12 | openEuler 22.03 SP1 |
Block I/O观测能力 | 22.12 | openEuler 22.03 SP1 |
容器运行观测能力 | 22.12 | openEuler 22.03 SP1 |
Redis性能观测能力 | 22.12 | openEuler 22.03 SP1 |
PG性能观测能力 | 22.12 | openEuler 22.03 SP1 |
Nginx会话观测能力 | 22.12 | openEuler 22.03 SP1 |
Haproxy会话观测能力 | 22.12 | openEuler 22.03 SP1 |
Kafka会话观测能力 | 22.12 | openEuler 22.03 SP1 |
JVM性能观测能力 | 23.06 | openEuler 22.03 SP1, openEuler 23.09 |
L7协议观测能力(HTTP1.X/MySQL/PGSQL/Redis/Kafka) | 23.09 | openEuler 22.03 SP1, openEuler 23.09 |
L7协议观测能力(HTTP1.X/MySQL/PGSQL/Redis/Kafka/MongoDB/DNS/RocketMQ) | 24.03 | openEuler 22.03 SP3,openEuler 24.03 |
通用应用性能观测能力 | 24.03 | openEuler 24.03 |
全链路协议跟踪能力 | 24.09 | openEuler 24.09 |
特性 | 发布时间 | 发布版本 |
---|---|---|
系统性能Profiling(OnCPU、Mem) | 23.03 | openEuler 23.09 |
系统性能Profiling(OnCPU、Mem、OffCPU) | 23.04 | openEuler 22.03 SP1, openEuler 23.09 |
线程级性能Profiling(java、C) | 23.06 | openEuler 22.03 SP1, openEuler 23.09 |
特性 | 发布时间 | 发布版本 |
---|---|---|
支持内核Release版本跨度兼容 | 23.12 | openEuler 22.03 SP3, openEuler 24.03 |
支持内核大版本跨度兼容 | 24.09 | openEuler 24.09 |
特性 | 发布时间 | 发布版本 |
---|---|---|
非侵入集成第三方探针 | 22.12 | openEuler 22.03 SP1 |
非侵入集成第三方eBPF源码 | 24.03 | openEuler 23.09 |
大语言驱动自动生成eBPF观测探针 | 24.09 | openEuler 24.09 |
特性 | 发布时间 | 发布版本 |
---|---|---|
支持Prometheus exporter对接 | 22.12 | openEuler 22.03 SP1 |
支持日志文件形式对接 | 22.12 | openEuler 22.03 SP1 |
支持kafka client形式对接 | 22.12 | openEuler 22.03 SP1 |
支持REST接口动态变更探针监控能力 | 23.06 | openEuler 22.03 SP1, openEuler 23.09 |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。