对于云上的EDAS用户来说,后端监控日志及调用链信息对定位和应用诊断及其重要,EDAS目前主要分ECS集群和K8S集群,K8S集群部署应用通过ARMS收集应用日志。ECS集群因为大部分ECS都是专有网络,因vpc天然网络环境隔离,所以EDAS针对专业网络ECS集群提供了一个特殊的解决方案:日志采集器(鹊桥)。本文将就日志采集器进行介绍和技术支持遇到的经典案例进行分享
日志采集器示意图
日志采集器分为 Server 端和 Client 端。SProxy 是安装在您应用实例上的日志采集器 Client。Cproxy是安装在EDAS后端集群。通过cproxy->sproxy->hblog 获取日志
日志采集器排查
现象:
在 EDAS 的服务中,如果获取不到数据,所有和视图以及调用链相关的服务均变得不可用;这部分功能包括监控(基础监控、服务监控),报警,调用链
重要排查方向:
1.8002和8182重要端口,安装日志采集服务器执行命令'netstat -ant|grep 8002'检测端口(8002)是否建立成功。应用服务器执行命令'netstat -ant|grep 8182'查看 8182 端口是否处于监听状态且有连接信息。
2.核实sproxy和hblog日志是否异常
默认安装目录:/root/sproxy
sproxy日志目录:/root/sproxy/log/console.log
/root/sproxy/log/error.log
hblog日志目录:/usr/alisys/dragoon/log/hblog.log
3.网络应用服务器和日志采集器的网络、日志采集器到后端cproxy的网络
4.日志采集器安装所在ecs服务器的性能,应用服务器性能
日志采集器相关问题
1.VPC 中安装日志采集器大致建议比例
• 需要根据日志量、服务器性能等综合判断,目前个人建议40-50台ECS的应用需要找一个ECS安装日志采集器
2.应用部分某种类型调用链获取不到或者监控无数据。
• 调用链和监控数据需要有访问请求流量才会产生,如果无客户访问网站或者并不是hsf等服务,则不会有数据
3.手动安装命令:
• 以北京为例 wget -q -O /root/ins.sh http://edas-bj.vpc100-oss-cn-beijing.aliyuncs.com/agent/prod/install_scripts/install_sproxy_entry.sh && sh /root/ins.sh -vpcid "客户的vpc id" 其中域名注意变化
4.日志采集器配置
配置文件是 sproxy/priv/queqiao_sproxy.config,配置内容:
{vpc_instance_id, "vpc-bpxxxxxvn"}, %% 当前sproxy所在的vpc的标识,内容为空表示使用ip地址判断
{version, "2.0.0"}, %% 当前sproxy所在的vpc的标识,内容为空表示使用ip地址判断
{cproxy_info,
[{
{cproxy_addr, "100.x.x.31"}, %% 配置cproxy的地址信息
{cproxy_reg_port, 8002}, %% cproxy的监听注册端口
{cproxy_conn_retry_counts, 10000000000}, %% 每个sproxy尝试与cproxy尝试建立链接的次数
{cproxy_conn_retry_interval, 5}, %% 尝试建立链接的秒间隔
{cproxy_conn_heartbeat_interval, 20} %%保持链接, 单位秒
},{
{cproxy_addr, "100.x.x.31"}, %% 配置cproxy的地址信息
{cproxy_reg_port, 8002}, %% cproxy的监听注册端口
{cproxy_conn_retry_counts, 10000000000}, %% 每个sproxy尝试与cproxy尝试建立链接的次数
{cproxy_conn_retry_interval, 5}, %% 尝试建立链接的秒间隔
{cproxy_conn_heartbeat_interval, 20} %%保持链接, 单位秒
},{
{cproxy_addr, "100.100.19.32"}, %% 配置cproxy的地址信息
{cproxy_reg_port, 8002}, %% cproxy的监听注册端口
{cproxy_conn_retry_counts, 10000000000}, %% 每个sproxy尝试与cproxy尝试建立链接的次数
{cproxy_conn_retry_interval, 5}, %% 尝试建立链接的秒间隔
{cproxy_conn_heartbeat_interval, 20} %%保持链接, 单位秒
},{
{cproxy_addr, "100.x.x.32"}, %% 配置cproxy的地址信息
{cproxy_reg_port, 8002}, %% cproxy的监听注册端口
{cproxy_conn_retry_counts, 10000000000}, %% 每个sproxy尝试与cproxy尝试建立链接的次数
{cproxy_conn_retry_interval, 5}, %% 尝试建立链接的秒间隔
{cproxy_conn_heartbeat_interval, 20} %%保持链接, 单位秒
}]
},
5.操作命令
停止: ./run_sproxy_rel.sh stop
启动: ./run_sproxy_rel.sh start
重装:sh /root/install_sp.sh -force
配置原因导致无法采集数据案例(步骤分析)
问题现象:用户正常安装采集器后,页面监控大盘数据还是无法查看,具体现象如截图:
排查步骤:
1.登录服务器核实8182端口是否建立成功,netstat -ant|grep 8182
2.根据问题截图确认了应用服务器的安全组配置,确认安全组对采集器放开了8182端口(排出网络原因)
3.登录采集器服务器 执行 netstat -ant|grep 8002没有建立连接
4.定位是否没有成功安装采集器,重新重新安装后,再次确认8002没有建立连接。
5.定位sproxy日志信息, 查看/root/sproxy/log/console.log 发现报错提示cproxy地址127.0.0.1链接失败
6.日志采集器应该是后端服务器,不应该是本地ip的,核实queqiao_sproxy.config配置cproxy的地址错误
解决方案:
1、保留原有配置mv queqiao_sproxy.config queqiao_sproxy.config.bak
2、复制sproxy/priv下queqiao_sproxy_hz文件,新命名queqiao_sproxy.config: cp queqiao_sproxy_hz.config queqiao_sproxy.config
3.停止重启采集器 ./run_sproxy_rel.sh stop && ./run_sproxy_rel.sh
正常现象