分布式链路跟踪日志标准能将分布在不同服务器的一次请求的日志串联起来,按顺序展示,方便分布式服务定位排查问题。
本日志规范对常见日志字段进行了定义,能够方便倒入ELK系统进行分析,并提供扩展字段方便用户扩展.
Fend已经内置此标准在关键节点都会自动生成日志,属于一种特殊的埋点技巧,方便多维度分析
与市面Trace不同,此方式颇多妙处、为作者心血、请自行体验
简单版 GUID 依赖基础库,是否唯一不一定
奢侈版 IP_PID_TIMESTAMP_RAND 生成串较长
精简版 IDC_IP2LONG(C.D)_TIMESTAMP-2017_RAND=int 64 bit 各个语言开发难度大一点
返回结果返回rpcid及header
一次系统调用的日志可以通过TraceId查找到,但是日志是乱序的
通过RPCID可以记录日志的执行顺序及层级调用关系(并行请求按下任务顺序排法)
如:
入口的RPCID 0.1
发送http RPCID:0.1
查询mysql RPCID:0.2
发送Http RPCID:0.3
被请求API RPCID:0.3.1
HTTP请求到另外一个API RPCID:0.3.2
被请求请求的API RPCID:0.3.2.1
被请求请求的API查数据库 RPCID:0.3.2.2
被请求API继续处理业务 RPCID:0.3.3
继续处理后续业务 RPCID:0.4
...略
从上面实例可以看出RPCID,RPCID只有最后一位+1,前几层不变
子调用的时候会增加层级计数 一个点代表一个调用深度层级的执行顺序。
建议http请求附加在header,其他请求再讨论
参照代码位置:fend/src/Server/Http.php 类文件 function onRequest 70行-110行实行
##采样规则及范围 日志量如果过大会导致接口性能下降,而采样无法回放每一次请求细节对于低概率故障无效。
现行采用关键点记录方式:仅记录依赖资源请求日志,辅以用户自定义日志完成全部相关信息回放故障调查。
具体记录日志内容范围如下:
此文档用于规定:TAL分布式跟踪系统的接入日志格式,通过这个日志可以规定日志的格式
日志name字段规定,允许出现以下选项
在以上字段基础上,提供分级日志拦截服务
模块名称定义建议,用于区分当前日志所在模块层级、例如:
app_module_class_function
language_clientname_version
cpp_classclient_0.1
java_interaction_1.2
用于标注当前日志记录时间,无须小数
格式:unix Timestamp second int
用于记录当前操作耗费时间
float 1.3234 microtime
进程id 如果是线程则pid_tid 格式
用户uid、字符串
{
"x_name": "string:全量字段介绍,必填,用于区分日志类型",
"x_trace_id": "string:traceid,必填",
"x_rpc_id": "string:rpcid,服务端链路必填,客户端非必填",
"x_department":"部门缩写如tal_client_frontend 必填",
"x_version": "string:当前服务版本 cpp-client-1.1 php-baseserver-1.4 java-rti-1.9,建议都填",
"x_timestamp": "int:日志记录时间,单位秒,必填",
"x_duration": "float:消耗时间,浮点数 单位秒,能填就填",
"x_module": "string:模块路径,建议格式应用名称_模块名称_函数名称_动作,必填",
"x_source": "string:请求来源 如果是网页可以记录ref page,选填",
"x_uid": "string:当前用户uid,如果没有则填写为 0长度字符串,可选填",
"x_pid": "string:进程pid,如果没有填写为 0长度字符串,如果有线程可以为pid-tid格式,可选填",
"x_server_ip": "string 当前服务器ip,必填",
"x_client_ip": "string 客户端ip,选填",
"x_user_agent": "string curl/7.29.0 选填",
"x_host": "string 链接目标的ip及端口号,用于区分环境12.123.23.1:3306,选填",
"x_instance_name": "string 数据库连接配置的标识,比如rti的数据库连接,选填",
"x_db": "string 数据库名称如:peiyou_stastic,选填",
"x_code": "string:各种驱动或错误或服务的错误码,选填,报错误必填",
"x_msg": "string 错误信息或其他提示信息,选填,报错误必填",
"x_backtrace": "string 错误的backtrace信息,选填,报错误必填",
"x_action": "string 可以是url、sql、redis命令、所有让远程执行的命令,必填",
"x_param": "string 通用参数模板,用于和script配合,记录所有请求参数,必填",
"x_file": "string userinfo.php,选填",
"x_line": "string 232,选填",
"x_response": "string:请求返回的结果,可以是本接口或其他资源返回的数据,如果数据太长会影响性能,选填",
"x_response_length": "int:相应内容结果的长度,选填",
"x_dns_duration": "float dns解析时间,一般http mysql请求域名的时候会出现此选项,选填",
"x_extra": "json 放什么都可以,用户所有附加数据都扔这里"
}
{
"x_name": "string:全量字段介绍,必填,用于区分日志类型,下面有具体的日志类型介绍",
"x_trace_id": "string:traceid,uuid规则生成的串每次请求产生一个,请求失败重试请用同一个traceid必填",
"x_department":"tal_client_frontend 必填",
"x_rpc_id": "string:rpcid,服务端链路 非必填,如果客户端想追查一个调用牵扯的模块链路可以填写",
"x_version": "string:当前服务版本 cpp-client-1.1 php-baseserver-1.4 java-rti-1.9,用于标识哪个客户端产生的日志,必填",
"x_timestamp": "int:日志记录时间,单位秒,必填",
"x_module": "string:模块路径,建议格式应用名称_模块名称_函数名称_动作,用来记录产生日志的模块所在位置,方便出现错误排查 必填",
"x_action": "string 可以是url、sql、redis命令、所有让远程执行的命令,也可以是websocket指令等,在请求外部资源时必填",
"x_param": "string 通用参数模板,用于和script配合,记录所有请求参数,在请求外部资源时必填",
"x_msg": "string 错误信息或其他提示信息,选填,报错误必填,没有错误可以留空",
"x_backtrace": "string 错误的backtrace信息,选填,报错必填,没有错误时可以为0",
"x_duration": "float:消耗时间,浮点数 单位秒,可选填,填写后,可以针对这些操作进行性能统计",
"x_uid": "string:当前用户uid,如果没有则填写为 0长度字符串,可以根据uid进行判断用户或教室唯一性,建议客户端uuid或者用户uid 可选填",
"x_pid": "string:进程pid,如果没有填写为 0长度字符串,如果有线程可以为pid-tid格式,用于区分多进程情况,可选填",
"x_source": "string:请求来源 如果是网页可以记录ref page,如果是被调用可以记录请求服务等信息,选填",
"x_server_ip": "string 当前服务器ip,选填",
"x_client_ip": "string 客户端ip,选填",
"x_user_agent": "string curl/7.29.0 选填",
"x_host": "string 链接目标的ip及端口号,用于区分环境12.123.23.1:3306,选填",
"x_instance_name": "string 数据库连接配置的标识,比如rti的数据库连接,选填",
"x_db": "string 数据库名称如:peiyou_stastic,选填",
"x_code": "string:各种驱动或错误或服务的错误码,选填,报错误必填",
"x_file": "string userinfo.php,选填",
"x_line": "string 232,选填",
"x_response": "string:请求返回的结果,可以是本接口或其他资源返回的数据,如果数据太长会影响性能,选填",
"x_response_length": "int:相应内容结果的长度,选填",
"x_dns_duration": "float dns解析时间,一般http mysql请求域名的时候会出现此选项,选填",
"x_extra": "json 放什么都可以,用户所有附加数据都扔这里"
}
服务被请求日志,包括被请求参数,耗时,返回值,来源等信息
{
"x_name": "request.info",
"x_trace_id": "123jiojfdsao",
"x_rpc_id": "0.1",
"x_version": "php-baseserver-4.0",
"x_department":"tal_client_frontend",
"x_timestamp": 1506480162,
"x_duration": 0.021,
"x_uid": "9527",
"x_pid": "123",
"x_module": "js_game1_start",
"x_user_agent": "string curl/7.29.0",
"x_action": "http://testapi.speiyou.com/v3/user/getinfo?id=9527",
"x_server_ip": "192.168.1.1:80",
"x_client_ip": "192.168.1.123",
"x_param": "json string",
"x_source": "www.baidu.com",
"x_code": "200",
"x_response": "json:api result",
"x_response_len": 12324
}
可以用于分析连接性能
{
"x_name": "mysql.connect",
"x_trace_id": "123jiojfdsao",
"x_rpc_id": "0.2",
"x_version": "php-baseserver-4",
"x_department":"tal_client_frontend",
"x_timestamp": 1506480162,
"x_duration": 0.024,
"x_uid": "9527",
"x_pid": "123",
"x_module": "js_mysql_connect",
"x_instance_name": "default",
"x_host": "12.123.23.1:3306",
"x_db": "tal_game_round",
"x_msg": "ok",
"x_code": "1",
"x_response": "json:****"
}
可以用于分析Mysql查询性能
{
"x_name": "mysql.request",
"x_trace_id": "123jiojfdsao",
"x_rpc_id": "0.2",
"x_version": "php-4",
"x_department":"tal_client_frontend",
"x_timestamp": 1506480162,
"x_duration": 0.024,
"x_uid": "9527",
"x_pid": "123",
"x_module": "js_game1_round_sigup",
"x_instance_name": "default",
"x_host": "12.123.23.1:3306",
"x_db": "tal_game_round",
"x_action": "select * from xxx where xxxx",
"x_param": "json string",
"x_code": "1",
"x_msg": "ok",
"x_response": "json:****"
}
可以用于分析依赖服务性能
{
"x_name": "http.post",
"x_trace_id": "123jiojfdsao",
"x_department":"tal_client_frontend",
"x_rpc_id": "0.3",
"x_version": "php-4",
"x_timestamp": 1506480162,
"x_duration": 0.214,
"x_uid": "9527",
"x_pid": "123",
"x_module": "js_game1_round_win_report",
"x_action": "http://testapi.speiyou.com/v3/game/report",
"x_param": "json:",
"x_server_ip": "192.168.1.1",
"x_msg": "ok",
"x_code": "200",
"x_response_len": 12324,
"x_response": "json:responsexxxx",
"x_dns_duration": 0.001
}
可以用于分析连接性能
{
"x_name": "redis.connect",
"x_trace_id": "123jiojfdsao",
"x_department":"tal_client_frontend",
"x_rpc_id": "0.3",
"x_version": "php-4",
"x_timestamp": 1506480162,
"x_duration": 0.214,
"x_uid": "9527",
"x_pid": "123",
"x_module": "js_game1_round_win_report",
"x_db_link_name": "default",
"x_host": "12.123.23.1:3306",
"x_db": "0",
"x_code": "1",
"x_msg": "json:****",
"x_dns_duration": 0.001
}
可以用于分析连接性能
{
"x_name": "memcache.connect",
"x_trace_id": "123jiojfdsao",
"x_rpc_id": "0.3",
"x_version": "php-4",
"x_timestamp": 1506480162,
"x_duration": 0.214,
"x_uid": "9527",
"x_pid": "123",
"x_module": "js_memcache_connect",
"x_db_link_name": "default",
"x_host": "12.123.23.1:3306",
"x_code": "1",
"x_msg": "json:****",
"x_dns_duration": 0.001
}
{
"x_name": "log.info",
"x_trace_id": "123jiojfdsao",
"x_department":"tal_client_frontend",
"x_rpc_id": "0.3",
"x_version": "php-4",
"x_timestamp": 1506480162,
"x_duration": 0.214,
"x_uid": "9527",
"x_pid": "123",
"x_module": "game1_round_win_round_end",
"x_file": "userinfo.php",
"x_line": "232",
"x_msg": "ok",
"x_code": "201",
"extra": "json game_id lesson_num xxxxx"
}
{
"x_name": "log.exception",
"x_trace_id": "123jiojfdsao",
"x_department":"tal_client_frontend",
"x_rpc_id": "0.3",
"x_version": "php-4",
"x_timestamp": 1506480162,
"x_duration": 0.214,
"x_uid": "9527",
"x_pid": "123",
"x_module": "game1_round_win",
"x_file": "userinfo.php",
"x_line": "232",
"x_msg": "exception:xxxxx call stack",
"x_code": "hy20001",
"x_backtrace": "xxxxx.php(123) gotError:..."
}
需要跟日志监控组合作抓取去重报警
{
"x_name": "log.alarm",
"x_trace_id": "123jiojfdsao",
"x_department":"tal_client_frontend",
"x_rpc_id": "0.3",
"x_version": "php-4",
"x_timestamp": 1506480162,
"x_duration": 0.214,
"x_uid": "9527",
"x_pid": "123",
"x_module": "game1_round_win_round_report",
"x_file": "game_win_notify.php",
"x_line": "123",
"x_msg": "game report request fail! retryed three time..",
"x_code": "201",
"x_extra": "json game_id lesson_num xxxxx"
}
类似zabbix openFalcon的模块性能统计
{
"x_name": "matrix.count",
"x_trace_id": "123jiojfdsao",
"x_department":"tal_client_frontend",
"x_rpc_id": "0.3",
"x_version": "php-4",
"x_timestamp": 1506480162,
"x_uid": "9527",
"x_pid": "123",
"x_module": "game1_round_win_click",
"x_extra": "json curl invoke count"
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。