我们想使用Swisscom云提供的ELK服务。因为我们要记录的应用程序不是由Swisscom托管,而是在外部,我们希望从外部连接到ELK服务。这有可能吗?或者ELK服务仅适用于Swisscom云中托管的应用程序吗?
答案 0 :(得分:2)
创建和绑定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插入或查询文档。
答案 1 :(得分:1)
ELK堆栈有三个组成部分:
与@Fydor一样,您无法从外部访问ELK的服务端点。如果您想访问CF托管应用程序的日志,这也是一个问题。您并不总是希望使用Swisscom的服务连接器来访问Kibana。
因此,通常,您部署一个小型代理应用程序。 Swisscom有一个样本。
或者,可以使用类似的代理应用程序 Swisscom Kibana Proxy公开制作Kibana信息中心 可用。
由于Elastic Search使用REST接口,您可以使用代理发布Elastic Search端点。最后,您还应该抓住机会,将一些安全措施放入代理应用程序中。
已经有很多日志框架,它们直接支持转发到弹性搜索。
如果您需要集成到现有的日志记录解决方案(如Syslog,文本日志......),那么您可能需要使用logstash。
由于Cloud Foundry目前仅支持发布HTTP和HTTPS端点,因此您无法使用Swisscom提供的实例,但必须部署您自己的实例并将其配置为使用已发布的Elastic Search端点。