我只是好奇如何在 Linux 中检查 ElasticSearch 版本?
我在 ubuntu 中安装了带有 deb 文件的 elasticsearch.90.7。我尝试使用以下命令卸载 elasticsearch.90.7:
sudo apt-get --purge autoremove elasticsearch
Run Code Online (Sandbox Code Playgroud)
然后我下载elasticsearch-1.6.0.deb安装elasticsearch 1.6。
当我运行此命令通过 deb 文件安装 elasticsearch 1.6 时:
dpkg -i elasticsearch-1.6.0.deb
Run Code Online (Sandbox Code Playgroud)
它向我展示了这一点:
Selecting previously unselected package elasticsearch.
(Reading database ... 89826 files and directories currently installed.)
Preparing to unpack elasticsearch-1.6.0.deb ...
Creating elasticsearch group... OK
Creating elasticsearch user... OK
Unpacking elasticsearch (1.6.0) ...
Setting up elasticsearch (1.6.0) ...
Processing triggers for ureadahead (0.100.0-16) ...
Run Code Online (Sandbox Code Playgroud)
当我启动 elasticsearch 时,service elasticsearch start它正在启动,但是当我运行此命令时:curl http://localhost:9200
它显示此错误:
curl: (7) …Run Code Online (Sandbox Code Playgroud) 在超过 12 个 centos 5.8 服务器的集群上,我使用本地 logstash 发送器部署了 logstash,该发送器将发送/var/log/*/*.log回中央 Logstash 服务器。
我们尝试使用 rsyslogd 作为托运人,但由于 rsyslogd 的 ImFile 模块中的错误,如果远程端没有回复,日志将堆积在内存中。
我们目前使用 Redis 作为传输机制,因此 logstash01 已在本地运行 redis,绑定到这些日志的 VLAN 的 IP。
所以logstash-shipper 发送到logstash01 上的redis。logstash01 发送到在单独进程中运行的 Elasticsearch。
这就是我们所看到的。Elasticsearch 有 141 个阻塞线程。跟踪 elasticsearch 父项显示:
futex(0x7f4ccd1939d0, FUTEX_WAIT, 26374, NULL
Run Code Online (Sandbox Code Playgroud)
所以.. 昨晚,一些网络服务器(其日志由 logstash 跟踪)发疯了,平均负载超过 500。
在logstash01上,有这个
Dec 19 00:44:45 logstash01 kernel: [736965.925863] Killed process 23429 (redis-server) total-vm:5493112kB, anon-rss:4248840kB, file-rss:108kB
Run Code Online (Sandbox Code Playgroud)
所以OOM杀手杀死了Redis的服务器,然后指原木堆放在内存里面是已上市的东西..而服务器上莫名其妙意味着阿帕奇获取其短裤的扭曲。(坦率地说,我不确定如何,我只是假设它拖尾了日志)。
这是我关于事件如何展开的理论:
我在 CentOS 6.5 上运行 elasticsearch 和 SugarCRM7。我每天都面临同样的问题:java outOfMemory 错误。发生这种情况是因为 vm.max_map_count 值很小,只有在推荐 262144 时才 65530。
问题是 vm.max_map_count 似乎无法改变:
在根下更改
sudo sysctl -w vm.max_map_count=262144
Run Code Online (Sandbox Code Playgroud)
返回
错误:对键“vm.max_map_count”的权限被拒绝
尽管
ps aux | grep java
Run Code Online (Sandbox Code Playgroud)
仅返回 grep 进程
在 elasticsearch 启动时更改
sudo service elasticsearch start
Run Code Online (Sandbox Code Playgroud)
也返回错误
错误:对键“vm.max_map_count”的权限被拒绝
启动弹性搜索:[确定]
通过文件手动更改(dirty-dirty hack):
sudo vi /proc/sys/vm/max_map_count
Run Code Online (Sandbox Code Playgroud)
也不起作用:
"/proc/sys/vm/max_map_count" [只读] 1L, 6C
-- INSERT -- W10:警告:更改只读文件
E45: 'readonly' 选项已设置(添加 ! 以覆盖)
"/proc/sys/vm/max_map_count" E212: 无法打开文件进行写入
尽管
ls -la /proc/sys/vm/ | grep max_map_count
Run Code Online (Sandbox Code Playgroud)
退货
-rw-r--r-- 1 根根 0 Apr …
我最近设置了一个 AWS Elasticsearch 域,但我没有找到停止它的方法(就像使用 EC2 实例一样),这意味着我一直在向我收费。在这个阶段,我只需要做一些测试,不需要全职集群。
我看到的唯一选择是删除域,我错过了什么吗?
我正在 Kubernetes 中管理 Elasticsearch 部署。我看到磁盘存储已接近满,所以我想增加持久卷的大小。
我想在有状态集中更改此值:
spec.?volumeClaimTemplates[0].spec.resources.requests.storage : "10Gi"
但是当我使用 Kubernetes 仪表板执行此操作时,我收到以下消息:
内部服务器错误
StatefulSet.apps "es-cluster" 无效:spec: Forbidden: 禁止更新 statefulset > spec,用于除 'replicas'、'template' 和 'updateStrategy' 以外的字段。
这让我觉得我必须删除我现有的 Stateful Set 并部署一个新的。
是否可以在不中断服务或丢失数据的情况下增加 per-pod 磁盘存储?
我有多个 Elasticsearch 数据 pod,并且正在使用副本计数 = 1,所以如果我能够将它们取下并一次升级一个 pod 的磁盘存储,应该不会有问题。鉴于上述限制,我只是不知道如何做到这一点。
我有一台安装了Elasticsearch 1.3.2的CentOS 6.5服务器。
我的elasticsearch.yml配置文件是对默认使用 elasticsearch 的配置文件的最小修改。删除所有注释行后,它看起来像:
cluster.name: xxx-kibana
node:
name: "xxx"
master: true
data: true
index.number_of_shards: 5
index.number_of_replicas: 1
path:
logs: /log/elasticsearch/log
data: /log/elasticsearch/data
transport.tcp.port: 9300
http.port: 9200
discovery.zen.ping.multicast.enabled: false
Run Code Online (Sandbox Code Playgroud)
默认情况下,Elasticsearch 应该启用压缩,我阅读了各种基准测试,压缩率从低至 50% 到高达 95%。不幸的是,在我的情况下,压缩率是 -400%,或者换句话说:用 ES 存储的数据比具有相同内容的文本文件占用的磁盘空间多 4 倍。看:
12K logstash-2014.10.07/2/translog
16K logstash-2014.10.07/2/_state
116M logstash-2014.10.07/2/index
116M logstash-2014.10.07/2
12K logstash-2014.10.07/4/translog
16K logstash-2014.10.07/4/_state
127M logstash-2014.10.07/4/index
127M logstash-2014.10.07/4
12K logstash-2014.10.07/0/translog
16K logstash-2014.10.07/0/_state
109M logstash-2014.10.07/0/index
109M logstash-2014.10.07/0
16K logstash-2014.10.07/_state
12K logstash-2014.10.07/1/translog
16K …Run Code Online (Sandbox Code Playgroud) 是否有支持 ElasticSearch 的硬件级别的良好指南?对 Lucene 或 Solr 的推荐是一个好的起点吗?我们正在考虑推出一个部署
然后将其放大约 10 倍,以
这是一个奇怪的用例,其中查询将达到数千次/天,但响应时间需要保持足够低才能获得良好的 Ajaxy Web 应用体验。
我有一个 Raspberry Pi 2(截至 2015 年 4 月的最新 Raspbian)设置,上周在测试网络上同时运行 ElasticSearch 和 Logstash(不是一个简单的设置,但它稳定了一个多星期!)。我今天重新启动了我的机器,并且很难让事情再次运行;ES 和 LS 都将独立运行,但是当我尝试将 LS 输出推送到 ES 时,ES 实例会在没有解释的情况下死亡。我的目标是通过标准输出插件将运行数据和 LS 数据泵入 ES。
弹性搜索 [v1.5.0]
我相信这是核心问题所在。ES 可以通过启动service elasticsearch start并保持运行,可以通过 HTTP 请求访问端口 9200,并且所有生命迹象看起来都很健康。只要有东西(据我所知)尝试将数据写入索引,进程就会终止,并且调试日志 @ /var/log/elasticsearch/* 不包含任何与服务失败相关的内容。我试过通过 logstash(见下文)和 curl 插入,这两种方法都会终止 ES 进程。我正在运行的 curl 命令是curl -XPOST "http://localhost:9200/logstash-2015.04.05/records/" -d "{ \"type\" : \"specialRecord\" }".
Logstash [v1.4.2]
我目前正在使用这个简单的配置运行:
input {
stdin { }
}
output {
stdout { codec => rubydebug }
elasticsearch {
host …Run Code Online (Sandbox Code Playgroud) 我在邮件列表上看到过这个问题几次,但没有一个满意的答案。
如何最好地监控管道没有卡住?客户端 -> logstash -> elasticsearch。
Logstash 尤其是 elasticsearch 容易出现资源匮乏。他们都非常擅长从他们离开的地方开始,但是人们究竟是如何观察他们的观察者的呢?
欢迎提出意见。
elasticsearch ×10
logstash ×3
amazon-ebs ×1
centos6 ×1
hardware ×1
java ×1
kubernetes ×1
linux ×1
lucene ×1
monitoring ×1
oom-killer ×1
redis ×1
scaling ×1
sugarcrm ×1