Articles of elasticsearch

NGINX:检查$ remote_user是否等于位置的第一部分

我无法弄清楚如何configuration$remote_user是否等于location的第一部分。 location / { auth_basic "ElasticSearch"; auth_basic_user_file /etc/nginx/search_passwords; location ~/([^/]*)/ { # named capture did not work either if ($remote_user = $1) { # ERROR: Unknown variable: $1 / $NAMEDWHATEVER break; } } } 我的用例: 我正尝试通过使用nginx-reverse代理进行身份validation来“保护”ElasticSearch-Cluster。 我想允许多个用户,但对新用户的修改应该尽可能简单; 最好的情况 – 只要改变htpasswd文件。 我试图采用nginx- remote_name -proxy,但是无法检查remote_name和index-name是否相等。

Kibana 4,Logstash仪表板:保存时如何要求Nginxvalidation,但允许匿名视图?

我想要求auth_basic nginx身份validation保存所有kibana 4仪表板,但允许任何人查看仪表板没有身份validation。 我最近使用DigitalOcean 教程在Ubuntu 14.04上安装了ELK(Elasticsearch 1.4.5,Logstash 1:1.5.2-1和Kibana 4.1.1)堆栈。 由于kibana使用基于浏览器的JavaScript来发送查询到elasticsearch,我不知道如何找出保护什么。 DigitalOcean提供了一个nginxconfiguration来完全保护对kibana 4的访问。 FILE:/etc/nginx/sites-available/default server { listen 80; return 301 https://logstash.nyc.3top.com; } server { listen 443; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; server_name logstash.example.com; access_log /var/log/nginx/kibana.access.log; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.users; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host […]

保护Elasticsearch集群

我想创build一个安全的Elasticsearch集群。 关于我的使用案例。 我想要一个多租户系统。 用户必须具有对自己的名称空间的pipe理访问权限。 几次尝试后,我现在只是给用户自己的集群(通过docker)。 尝试1:在具有多租户的专用节点上屏蔽。 这需要我为每个用户修改angular色yml文件。 这是麻烦和痛苦的。 尝试2:docker集装箱+盾牌:经过一些试验和错误,这看起来工作正常,但我不喜欢的许可,我也不明白如何确保TCP传输。 尝试3: Docker容器+ nginx反向代理&htpasswd:这对于确保http传输非常有效,并且现在在Kibana中支持基本身份validation,它与kibana非常相称 。 不幸的是,这限制了我的群集能力,因为9300是开放的。 尝试4:我即将尝试docker集装箱+search卫队:这看起来像一个体面的select,但我仍然不知道如何保证TCP传输。 人们如何确保多租户Elasticsearch集群的安全?

我应该使用弹性search作为我的数据存储而不是MySQL?

我即将重build我的web应用程序使用弹性search,而不是mysql进行search的目的,但我不确定如何做到这一点。 我看了一个Laraconvideo,因为我的应用程序是build立在Laravel 4.2上的,我将使用这个包装来查询: https : //github.com/elasticsearch/elasticsearch 但是,我仍然要使用MySQL数据库来存放数据,并有ESsearch吗? 还是有更好的ES屋和查询数据。 如果我走第一条路线,是否必须在双方进行CRUD操作以保持更新? ES可以处理MySQL的数据加载吗? 意味着数亿行? 开始整个事情,我只是很滑稽。 我可以使用一个小方向,这将不胜感激。 我从来没有任何除了MySQL以外的任何search工作。

Kibana卡在加载屏幕

Kibana没有正常启动。 当我打开控制台时,它似乎是一个JavaScript资源问题。 当我直接打开js文件(点击控制台中的链接),看起来它们不完整,并被突然中断。 不知道这是一个浏览器文件的限制或不知何故我的文件被切断? 请看下面的图片,告诉你我在看什么。 在铬中看到的文件。 这是根据chrome加载它的文件的最底部。 我已经重新启动了kibana,看看是否能解决它,没有运气。 我认为浏览器在js文件中有最大限度的行数限制。 我不知道为什么kibana没有缩小js文件? 它启动了一些开发模式? 问题总结 我想我已经发现kibana不加载的原因是因为js没有完全加载,这将改变我的问题,我怎么能得到我所有的JavaScript加载? 更新 我find了JS文件在kibana bundles文件夹中,发现文件完整无缺。 这确实是一个浏览器加载完整的文件问题。 我很困惑,为什么突然这些文件太长,不能被浏览器加载? 两星期前工作正常。 仍然试图找出如何获得铬加载文件。 正如@asettouf所build议的,我在/opt/kibana/optimize目录中删除了(备份) bundles文件夹,并再次启动了kibana。 这确实重新生成bundles文件夹,但文件是相同的,这意味着我仍然有同样的问题。 为什么Kibana在捆绑文件进行caching时不会将js缩小? 我的kibana.yml 。 我认为粘贴到它的链接是干净的: http://www.heypasteit.com/clip/O8HUN 回去打开详细日志logging,这是我从删除优化文件夹和重新启动输出。 没有什么突出的错误信息给我。 /var/log/kibana/kibana.log 为了隐私和安全的原因,用localhostreplace主机名 http://www.heypasteit.com/clip/OA4OR 我认为这是一个错误的webpack模块不正确地编译JS。 但是,我不知道足够的模块来debugging它。 优化文件夹中有问题的文件是: commons.bundle.js是65723行 在108950 行 kibana.bundle.js 这些都没有进行优化,文件内的内容没有被缩小。 curl -v localhost:5601结果curl -v localhost:5601 http://www.heypasteit.com/clip/OEKEX CURL要求直接向KIBANA JS RESOURCES 我可以确认, curl -ukibanaadmin -v http://localhost/bundles/commons.bundle.js返回完整的108950内衬的JS文件和curl […]

限制对端口的直接访问,但允许在Nginx中进行端口转发

我试图限制直接访问端口9200上的elasticsearch,但允许Nginx代理传递给它。 这是我目前的configuration: server { listen 80; return 301; } server { listen *:5001; location / { auth_basic "Restricted"; auth_basic_user_file /var/data/nginx-elastic/.htpasswd; proxy_pass http://127.0.0.1:9200; proxy_read_timeout 90; } } 这几乎是我想要的。 我可以通过端口5001访问我的服务器来打弹性search,并且必须按照预期input证书。 不过,我仍然能够达到9200,并避免了HTTPauthentication,从而失败了。 我怎样才能防止访问这个端口,而不限制nginx? 我试过这个: server { listen *:9200; return 404; } 但是我得到: nginx: [emerg] bind() to 0.0.0.0:9200 failed (98: Address already in use) 因为它与elasticsearch冲突。 一定有办法做到这一点! 但我想不起来。 编辑: 我根据评论编辑并总结了这个问题: […]

使用Nginx作为代理来阻止通过JavaScript客户端在ElasticSearch上创build/更新/删除操作

我有一个本地ElasticSearch服务器,由Nginx公开,防止POST,PUT和DELETE请求。 这是我的Nginxconfiguration足以防止信息获取之外的操作? 你build议改进吗? upstream elasticsearch { server localhost:9200; } server { listen 7777; location / { return 403; limit_except PUT POST DELETE { proxy_pass http://elasticsearch; } proxy_redirect off; } } 谢谢。 [UPDATE] deagh的build议后我的configuration: upstream elasticsearch { server localhost:9200; } server { listen 7777; location / { return 403; limit_except PUT POST DELETE { proxy_pass http://elasticsearch; […]

反向代理Elasticsearch传输端口

在我的环境中,elasticsearch坐在只有标准端口(80,443等)的服务器上。 所有其他端口都被防火墙closures。 我目前在端口80上有一个反向代理,将所有elasticsearch HTTP请求重新路由到elasticsearch的http端口。 我也想将TCP请求重新路由到elasticsearch的传输端口 ,以便我的本地客户端可以直接查询elasticsearch作为客户端节点。 Nginx 1.9.0最近允许TCP负载平衡,这是我想利用这个,但我有一些麻烦让我的系统工作。 这里是我的nginx.conf文件(删除HTTP上下文来隔离问题): worker_processes 1; events { worker_connections 1024; } stream { server { listen 80; proxy_pass 127.0.0.1:9300; } } 我的客户端节点设置为与mydomain.com:80对话,所以理想情况下应将所有stream量路由到内部传输端口。 但是,我收到以下例外: org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available 有什么我需要configuration我的客户端节点或tcp代理? 编辑1: 一些额外的信息。 我把Elasticsearch的传输端口从9300改为8030,这是一个开放的端口。 当我相应地将我的nginx.conf更改为proxypass 127.0.0.1:8030我的本地客户端节点开始工作,并得到适当的答复我的查询。 所以问题似乎是,如果我代理传递到一个已经打开的端口,它的工作原理,但如果端口closures(9300),代理通过失败。 有谁知道这是为什么,如何解决它? 如果可能的话,我宁愿坚持使用端口9300。

如何在redhat linux中设置伐木工(logstash forwarder)

我正在使用Elasticsearch,Logstash,Kibana(ELK堆栈)来显示我的perfmon日志。 我的日志是从另一个redhat linux框手动复制到我的本地linux框并被parsing。 现在我想使用伐木工自动化,但我没有得到任何有关的信息与伐木工人合作。 在某种意义上来说,自动化是想从远程linux机器上获取日志,而不是手动复制。 提前致谢。

当使用bash脚本超过硬盘大小时,Elasticsearch索引的自动转换

我是新的bash脚本,我想使自动化删除elasticsearch中的旧保存的logging。 我可以通过手动使用curl命令执行此操作, " curl -XDELETE 'index name/_query' -d ' { "query": { "range": { "eventType_timestamp": { "gte": "2016-05-30T07:00:00.000Z", "lte": "2016-06-15T06:59:59.999Z" } } } }' 而不是手动传递date,我想通过shell脚本自动分析date。 我检索date和存储在一个字段,当我将这些字段传递到脚本我收到一些错误 " curl -XDELETE 'index name/_query' -d ' { "query": { "range": { "eventType_timestamp": { "gte": $from_dataset_date, "lte": $to_dataset_date } } } }'" 错误 :这是我运行上面的curl时得到的错误 {"error":{"root_cause":[{"type":"jsonparse_exception","reason":"jsonparse_exception: Unrecognized token '$fromdatasetdate': was […]