【发布时间】:2016-06-10 14:41:44
【问题描述】:
我们想使用 Swisscom 云提供的 ELK 服务。因为我们要登录的应用程序不是由 Swisscom 托管的,而是在外部托管的,所以我们想从外部连接到 ELK 服务。这可能吗?还是 ELK 服务仅适用于 Swisscom 云中托管的应用程序?
【问题讨论】:
标签: cloud-foundry connectivity elastic-stack swisscomdev
我们想使用 Swisscom 云提供的 ELK 服务。因为我们要登录的应用程序不是由 Swisscom 托管的,而是在外部托管的,所以我们想从外部连接到 ELK 服务。这可能吗?还是 ELK 服务仅适用于 Swisscom 云中托管的应用程序?
【问题讨论】:
标签: cloud-foundry connectivity elastic-stack swisscomdev
当您创建和绑定 ELK 服务时,您将收到这样的连接字符串和凭据
$ cf env $APP
Getting env variables for app $APP in org $ORC / space $SPACE as $USER...
OK
System-Provided:
{
"VCAP_SERVICES": {
"elk": [
{
"credentials": {
"elasticSearchHost": "9zz2ulprvgzlepa5.service.consul",
"elasticSearchPassword": "$PASSWORD",
"elasticSearchPort": 48783,
"elasticSearchUsername": "$USERNAME",
"kibanaPassword": "$PASSWORD",
"kibanaUrl": "http://xjcv9zh0jer2s44q.service.consul:59664",
"kibanaUsername": "$USERNAME",
"logstashHost": "gew5qn71sxcz49gd.service.consul",
"logstashPort": 46611,
"syslog": "syslog://uew5qn71sxcz49gd.service.consul:46611"
},
"label": "elk",
"name": "example-so",
"plan": "small",
"provider": null,
"syslog_drain_url": "syslog://gew5qn71sxcz49gd.service.consul:46611",
"tags": []
}
],
您无法从外部访问地址 *.service.consul(DNS 仅在 Swisscom Cloud 中可用)。您只能从您的应用(在 Cloud Foundry 容器中运行)访问这些地址。
有一种解决方法,但我建议仅用于开发目的。
您可以从本地桌面创建通往 Elasticsearch 或 Kibana Web 界面的隧道。
见Administrating Service Instances with Service Connector。这是一个由 Swisscom 开发的 CF CLI 插件。
创建服务实例后,您最终需要 管理服务。例如,您可能需要创建数据 数据库中的表或备份/恢复您的数据。对于这些用例, 我们创建了 Cloud Foundry CLI 插件服务连接器,它是一个 本地代理应用程序,您可以通过它连接到您的服务 使用您首选的本地安装工具的实例。
Kibana Web 界面示例。
cf service-connector 80 xjcv9zh0jer2s44q.service.consul:59664
您还可以从桌面访问 Elasticsearch 并使用 API 插入或查询文档。
【讨论】:
ELK 堆栈包含三个组件:
就像@Fydor 写的那样,您无法从外部访问 ELK 的服务端点。如果您想访问 CF 托管应用程序的日志,这也是一个问题。您不必总是使用 Swisscom 的服务连接器来访问 Kibana。
因此,通常情况下,您会部署一个小型代理应用程序。 Swisscom 有一个样本。
或者,也可以使用代理应用程序,例如 Swisscom Kibana Proxy 公开您的 Kibana 仪表板 可用。
由于 Elastic Search 使用 REST 接口,您可以使用代理来发布 Elastic Search 端点。最后,您还应该抓住机会,在代理应用中加入一些安全措施。
已经有很多日志框架,直接支持转发到 Elastic Search。
如果您需要集成到现有的日志记录解决方案(如 Syslog、文本日志等),那么您可能需要使用 logstash。
由于 Cloud Foundry 目前仅支持发布 HTTP 和 HTTPS 端点,因此您不能使用 Swisscom 提供的实例,而必须部署您自己的实例并将其配置为使用您发布的 Elastic Search 端点。
【讨论】: