采集日志到百度云BLS
更新时间:2024-09-25
BCI 支持采集容器内的日志文件、标准输出,并推送到BLS(百度云日志服务)。
BCI日志采集架构
上图是BCI日志采集的架构图,如需采集日志,需要创建三类关键对象
- 存储端:存放用户日志的存储产品,由用户负责创建。目前日志采集支持的存储产品有:BLS日志集、百度云Kafka、BOS、BES。
- 采集端:采集物理机/容器内日志文件的Agent组件,一般一个物理机/容器组内部署一个,由BCI负责创建。
- 传输任务:实际满足用户的日志采集需求,关键参数包含:收集器列表、日志文件路径、日志存储端。传输任务可以由用户创建,也可以由BCI创建,详细说明如下:
传输任务
创建方 | BCI日志采集功能使用流程 | 优势 | 劣势 |
---|---|---|---|
用户 | 用户确保存储产品已经Ready,创建存储产品方式详见下文【使用流程】->【创建存储产品】 用户在BLS上创建传输任务,创建方式详见下文【使用流程】->【创建传输任务】->【用户创建传输任务】 用户在BCI创建BCI实例,并填写传输任务ID BCI按照传输任务的配置,自动采集日志文件并传输到BLS |
*多个BCI实例可复用同一个传输任务,避免达到传输任务个数上限(单用户最多可创建300个传输任务)。 * BCI 实例创建速度更快 |
* 使用流程复杂,需要用户在BLS额外创建传输任务 |
BCI | 用户确保存储产品已经Ready,创建存储产品方式详见下文【使用流程】->【创建存储产品】 用户在BCI创建BCI实例,并填写传输任务所需的参数,配置方式详见下文【使用流程】->【创建传输任务】->【BCI创建传输任务】 BCI按照传输任务参数,自动在BLS创建对应的传输任务 BCI按照传输任务参数,自动采集日志文件并传输到BLS |
* 使用流程简单,无需用户在BLS额外创建传输任务 | BCI会为每个实例都创建单独的传输任务,受限于单用户只能创建300个传输任务,用户在BCI最多创建300个实例 BCI 实例创建速度会略有下降 |
更多信息,请参考 BLS操作指南。
使用流程
创建存储产品(存储端)
注:如果已有存储产品,可跳过此步骤。
用户可选择使用如下任一种云产品作为存储端,详细使用方案如下
- BLS日志集使用文档
- 百度云Kafka使用文档
- BOS使用文档
以 BLS 日志集为例,我们的创建流程如下 - 登录百度智能云官网,点击右上角的“管理控制台”,快速进入控制台界面。
- 选择“产品服务>日志服务BLS”,进入『日志集』页面
- 点击『新建日志集』,弹出新建日志集页面,填写配置信息,包括: a. 名称:设置日志集名称,1-128位字符、数字、英文和符号,符号仅限:_-.。名称创建后不支持修改,并且同一region下名称具有唯一性。 b. 存储周期:支持1~180天范围的存储周期。如需更大存储周期,请提交 BLS 工单。
- 日志集名称为『temp』,完成配置后点击『确定』,完成日志集的创建。
创建传输任务
用户创建传输任务
- 登录百度智能云官网,点击右上角的“管理控制台”,快速进入控制台界面。
- 选择“产品服务>日志服务BLS”,进入『传输任务』页面,并点击『创建传输任务』
- 在『任务信息』区,请输入任务名称,并配置目的端设置。BCI任务名称是『log-task』,日志投递目的为『日志集』,日志集名称为『temp』
- 在『源端设置』区,请输入源端类型,源日志目录、匹配文件规则。源端类型一定是『主机』,源日志目录填 {BLS_LOG_DIR}。匹配文件规则填需要采集的日志文件,如果想要采集源日志目录下所有日志文件,可以填 *。
- 如果要采集的日志为日志文件,{BLS_LOG_DIR} 则是日志文件目录在容器中的绝对路径,比如『/home/work/app/logs』;
- 如果要采集的日志为标准输出,{BLS_LOG_DIR} 则固定是 /stdout/{container_name},其中{container_name} 指定采集哪个容器的标准输出。
- 忽略『收集器列表』区的配置,点击保存
- 记录任务ID {BLS_TASK_ID}
- 在BCI创建实例(日志采集到BLS功能,目前仅在 OpenAPI 支持),详见创建接口【TODO,补充创建接口】body 示例如下
Plain Text
1{
2 "paymentMethod": [],
3 "items": [{
4 "config": {
5 "name": "bci",
6 "enableLog": true,
7 "restartPolicy": "Always", //Aways,OnFailure,Never
8 "vpcId": "",
9 "vpcUuid": "",
10 "cceId": "",
11 "subnetId": "",
12 "subnetUuid": "73582788-fa2a-4e80-b39c-6d2ebd0e276e",
13 "securityGroupId": "g-59gf44p4jmwe",
14 "serviceType": "BCI",
15 "purchaseNum": 1,
16 "productType": "PostPay", //付费类型,BCI目前都是后付费
17 "logicalZone": "zoneC",
18 "volumes": {
19 "emptyDir": [{
20 "name": "nginx-log" // 需要将该卷挂载到用户容器,然后将日志文件放在该卷中。收集器会自动采集该卷中的日志。
21 }],
22 },
23 "tags": [],
24 "containers": [{
25 "name": "container01",
26 "imageName": "nginx-alpine-go", //镜像名称
27 "imageVersion": "latest", //镜像版本(tag)
28 "imageAddress": "hub.baidubce.com/cce/nginx-alpine-go",//镜像地址
29 "memory": 1.0, //Float类型 GB
30 "cpu": 1.0, //Float类型 核心数
31 "workingDir": "working_dir", //工作路径
32 "imagePullPolicy": "", //镜像拉取规则
33 "commands": ["/bin/sh","-c"],//启动命令
34 "args": ['i=0; while true; do echo "{\"time\":\"$(date -u +"%FT%T.999Z")\",\"INFO\":$i}" >> /var/log/info/info.log; i=$((i+1)); sleep 1; done'], //启动参数
35 "volumeMounts": [{
36 "mountPath": "/var/log/info", // 即上文提到的 {BLS_LOG_DIR},nginx-log 是一个 emptyDir 类型的卷,用户容器作为生产者,将日志写到该卷中,BLS收集器(sidecar)作为消费者也会挂载该卷,采集用户日志,推送到BLS。
37 "readOnly": false,
38 "name": "nginx-log",
39 "type": "EmptyDir"
40 }],
41 "logCollections": [{
42 "blsTaskId": "{BLS_TASK_ID}", // 传输任务ID,{BLS_TASK_ID} 取值方式详见上文
43 }],
44 "ports": [],
45 "envs": []
46 }],
47 "imageRegistrySecret": []
48 },
49 "paymentMethod": []
50 }]
51}
BCI创建传输任务
日志采集到BLS功能,目前仅在 OpenAPI 支持,详见创建接口
Plain Text
1{
2 "paymentMethod": [],
3 "items": [{
4 "config": {
5 "name": "bci",
6 "enableLog": true,
7 "restartPolicy": "Always", //Aways,OnFailure,Never
8 "vpcId": "",
9 "vpcUuid": "",
10 "cceId": "",
11 "subnetId": "",
12 "subnetUuid": "73582788-fa2a-4e80-b39c-6d2ebd0e276e",
13 "securityGroupId": "g-59gf44p4jmwe",
14 "serviceType": "BCI",
15 "purchaseNum": 1,
16 "productType": "PostPay", //付费类型,BCI目前都是后付费
17 "logicalZone": "zoneC",
18 "volumes": {
19 "emptyDir": [{
20 "name": "nginx-log" // 需要将该卷挂载到用户容器,然后将日志文件放在该卷中。收集器会自动采集该卷中的日志。
21 }],
22 },
23 "tags": [],
24 "containers": [{
25 "name": "container01",
26 "imageName": "nginx-alpine-go", //镜像名称
27 "imageVersion": "latest", //镜像版本(tag)
28 "imageAddress": "hub.baidubce.com/cce/nginx-alpine-go",//镜像地址
29 "memory": 1.0, //Float类型 GB
30 "cpu": 1.0, //Float类型 核心数
31 "workingDir": "working_dir", //工作路径
32 "imagePullPolicy": "", //镜像拉取规则
33 "commands": ["/bin/sh","-c"],//启动命令
34 "args": ['i=0; while true; do echo "{\"time\":\"$(date -u +"%FT%T.999Z")\",\"INFO\":$i}" >> /var/log/info/info.log; i=$((i+1)); sleep 1; done'], //启动参数
35 "volumeMounts": [{
36 "mountPath": "/var/log/info", // 即上文提到的 {BLS_LOG_DIR},nginx-log 是一个 emptyDir 类型的卷,用户容器作为生产者,将日志写到该卷中,BLS收集器(sidecar)作为消费者也会挂载该卷,采集用户日志,推送到BLS。
37 "readOnly": false,
38 "name": "nginx-log",
39 "type": "EmptyDir"
40 }],
41 "logCollections": [{
42 "srcConfig": {
43 "srcDir":"/var/log/info", // 日志文件目录在容器中的绝对路径
44,
45比如『/home/work/app/logs』
46 // 如果想采集当前容器的标准输出,请固定填写 /stdout
47 "matchedPattern":"^.*$", // 匹配文件规则,如需采集 srcDir 下所有日志文件,可以填 *
48 "ttl": 1 // 有效文件时间范围
49 },
50 // 推送到 BLS 的哪个日志集
51 "destConfig": {
52 "destType": "BLS", // 推送到 BLS,而非 BOS等其他产品
53 "logStore": "BCI-log-gz", // 推送到BLS的哪个日志集
54 "rateLimit": 1, // 自定义投递速率
55 }],
56 "ports": [],
57 "envs": []
58 }],
59 "imageRegistrySecret": []
60 },
61 "paymentMethod": []
62 }]
63}
查看日志
- 登录百度智能云官网,点击右上角的“管理控制台”,快速进入控制台界面。
- 选择“产品服务>日志服务BLS”,进入『查询分析』页面,并点击『日志查询』