logentry模板用于表示日志中的一条记录,如下所示:
apiVersion: "config.istio.io/v1alpha2"
kind: logentry
metadata:
name: accesslog
namespace: istio-system
spec:
severity: '"Default"'
timestamp: request.time
variables:
sourceIp: source.ip | ip("0.0.0.0")
destinationIp: destination.ip | ip("0.0.0.0")
sourceUser: source.user | ""
method: request.method | ""
url: request.path | ""
protocol: request.scheme | "http"
responseCode: response.code | 0
responseSize: response.size | 0
requestSize: request.size | 0
latency: response.duration | "0ms"
monitored_resource_type: '"UNSPECIFIED"'
编写上述模板配置时,字段既可以设定为一个常量,也可以设定为一个表达式。如果字段的数据类型不是istio.policy.v1beta1.Value,那么表达式的类型必须和字段的数据类型相匹配。
以下是logentry protobuffer的定义内容,从中可以看到logentry定义的字段及数据类型:
package logEntry;
import "policy/v1beta1/type.proto";
import "mixer/adapter/model/v1beta1/extensions.proto";
option (istio.mixer.adapter.model.v1beta1.template_variety) = TEMPLATE_VARIETY_REPORT;
message Template {
// 发送给日志条目的变量
map<string, istio.policy.v1beta1.Value> variables = 1;
// 日志条目的时间
istio.policy.v1beta1.TimeStamp timestamp = 2;
// 日志条目的紧要程度
string severity = 3;
// 可选字段。用于表示该日志条目相关资源的表达式。
// 如果日志后端支持针对资源的监控,这些字段就会用于对该资源的后续处理;否则适配器会丢弃该字段。
string monitored_resource_type = 4;
// 可选字段。一组表达式,用于生成该日志对应的受监视资源的维度。
// 如果日志记录后端支持受监视的资源,则这些字段用于填充该资源。否则,适配器将忽略这些字段。
map<string, istio.policy.v1beta1.Value> monitored_resource_dimensions = 5;
}