f5-teem (英语)
这个库供自动化工具链产品使用. 它的目的是与F5的TEEM基础设施相接,为F5提供用法分析.
使用量
const TeemDevice = require('@f5devcentral/f5-teem').Device;
const assetInfo = {
name: 'Declarative Onboarding',
version: '1.2.3'
};
const teemDevice = new TeemDevice(assetInfo);
const declaration = <incoming_declaration>;
teemDevice.report('Declarative Onboarding Telemetry Data', '1', declaration);
默认情况下, f5-teem 会发送包含
- 代码正在运行的设备类型( 例如“ BIG- IP ”)
- 正在运行代码的设备的TMOS软件版本
- 声明中的每个类类型的计数
注:这些TEEM报告在传输时会出错. 发现任何错误并妥善处理是最佳做法。 然而,放弃任何错误是合理的,因为TEEM(通常)不应该阻止项目的执行. TEEM 报告不应为您的项目设置屏蔽, 响应没有用处 .
匿名 API 用户
为了成功将信息发送到匿名端点,需要提供API密钥.
此外,您还可以指定您的机器 id 值作为资产Info 的一部分。 这将优先于在BIG-IP上运行的自动检查.
目前,除非f5-teem运行在BIG-IP上,产品和产品Version无法确定,因此在输出中会被贴上"未知"的标签.
const TeemDevice = require('@f5devcentral/f5-teem').AnonymousDevice;
const assetInfo = {
name: 'Declarative Onboarding',
version: '1.2.3',
id: '<ID of the machine>'
};
const teemDevice = new TeemDevice(assetInfo, <API_KEY>);
const declaration = <incoming_declaration>;
teemDevice.report('Declarative Onboarding Telemetry Data', '1', declaration);
由 f5-teem 发送的原始对象示例
{
"documentType": "Declarative Onboarding Telemetry Data",
"documentVersion": "1",
"digitalAssetId": "213d40c8-6d64-5682-b29d-bc2ac080c9e2",
"digitalAssetName": "Declarative Onboarding",
"digitalAssetVersion": "1.2.3",
"observationStartTime": "2019-09-27T23:15:23.149Z",
"observationEndTime": "2019-09-27T23:15:23.149Z",
"epochTime": "1569626123149",
"telemetryId": "345619b4-3e4c-429c-b15c-3ee73e3738a0",
"telemetryRecords": [
{
"Device": 1,
"Tenant": 1,
"License": 1,
"DNS": 1,
"NTP": 1,
"Provision": 1,
"VLAN": 2,
"SelfIp": 2,
"platform": "BIG-IP",
"platformVersion": "14.1.0.5"
}
]
}
记录 API 使用情况
设备和匿名Device都有这种API,允许用户指定报告的内容,而不是使用预先设计的报告. 为此,您首先创建和指定一个记录,然后将报告记录()进行解析并发送信息.
以下是使用匿名API创建和发送报告的例子.
注:记录使用承诺来收集信息.
const TeemDevice = require('@f5devcentral/f5-teem').AnonymousDevice;
const Record = require('@f5devcentral/f5-teem').Record;
const assetInfo = {
name: 'Declarative Onboarding',
version: '1.2.3',
id: '<ID of the machine>'
};
const teemDevice = new TeemDevice(assetInfo, <API_KEY>);
const declaration = <incoming_declaration>;
const record = new Record('Declarative Onboarding Telemetry Data', '1');
return Promise.resolve()
.then(() => record.addClassCount(declaration))
.then(() => record.addJsonObject({ <Any JSON information you want to add> }))
.then(() => record.addPlatformInfo())
.then(() => teemDevice.reportRecord(record));
记录功能
随时可以使用
addClassCount(declaration)- 接受并解释声明,增加它发现的类数。 可被多次调用,使已发现的班级数量递增.addJsonObject(jsonObject)- 接受JSON对象并直接添加到记录中.
必须运行在BIG -IP
addPlatformInfo()- 从本地主机调出平台信息,并将其记录下来.addRegKey()- 从本地主机调出RegKey信息,并加入记录.addProvisionedModules()- 抽取和剖析现有和提供模块,并在记录中增加每个模块的提供级别.calculateAssetId()- 提取机器ID并创建散列, 如果不提供资产Info.id, 将使用此程序 .
高级用途
禁用发送数据的 f5-teem
f5-teem尊重电话家庭设置. 要禁用 f5-teem 发送数据:
tmsh modify sys software update auto-phonehome disabled
发送自定义数据
要发送多于默认数据, 请向 报告 API 密码
const extraFields = {
status: 'OK',
firstRun: false
};
teemDevice.report('Declarative Onboarding Telemetry Data', '1', declaration, extraFields);
使用 TEEM 连接环境
- 编辑文件/服务/重新命名/运行
- 在开始重新命名的行之前,添加行:
export TEEM_API_ENVIRONMENT='staging' - 大起步重新启动已暂停