elasticsearch那几个坑

公司有若干的nginx日志,打算用elastic search实现对实践间隔nginx请求量的统计,实现对各种常用指标的检索。

大坑1:

有三台同配置的es,但总有一台异常退出。经过对该服务器的内存使用情况进行分析,发现,是有进程占用内存,导致es的内存OOM。

大坑2:

es需要用logstash读取nginx日志进行解析,但如何书写规则,特别是自定义的nginx日志规则。

建议用如下网站进行日志的匹配规则编写。

http://grokdebug.herokuapp.com/

我根据我们日志编写了如下规则,可以参考。

input {
	
filter {
	grok {
            match =>{"message" =>"\"%{IP:remote_addr}\" \"%{IPORHOST:upstream_addr}:%{POSINT:port}\" \"\[%{HTTPDATE:time_local}\]\" \
"%{BASE16FLOAT:request_time}\" \"%{BASE16FLOAT:upstream_response_time}\" \"%{INT:status}\" \"%{WORD:sent_http_ufactrl_response_code}\
" \"%{INT:request_length}\" \"%{INT:bytes_sent}\" \"%{NOTSPACE:sent_http_ufactrl_subapp_code}\" \"%{WORD:verb} %{URIPATHPARAM:request
} HTTP/%{NUMBER:httpversion}\" \"%{DATA:http_user_agent}\""}

	}
	#mutate {
	#	split  => { "message" => "\"  " }
	#}
	date {
		match => [ "time_local" , "dd/MMM/yyyy:HH:mm:ss Z" , "yyyy-MMM-dd HH:mm:ss" ]
	}
	geoip {
		source => "remote_addr"
	}

	kv {
		source => "request"
			field_split => "&?"
			value_split => "="
	}
	urldecode {
		all_fields => true
	}
}

output {
	elasticsearch {
		hosts => '10.0.3.99'
			index =>"%{type}-nginx-%{+YYYY.MM.dd}"
			document_type => "nginx"
#		document_type => "%{type}"
			template_overwrite => true
	}
#	stdout {
#		codec => rubydebug
#	}
}

大坑3:

如果直接用logstash进行日志收集,那节点服务器的内存会占用很多。所以,我们使用n个logstash foward 汇集日志到logsgtash节点。当然,kafka更好。

es里如下配置:

lumberjack {
# The port to listen on
		port => 13810

# The paths to your ssl cert and key
			ssl_certificate => "/home/ke/logstash-2.1.0/bin/lumberjack.crt"
			ssl_key => "/home/ke/logstash-2.1.0/bin/lumberjack.key"

# Set this to whatever you want.
			type => "somelogs"
	}
}

大坑4.kabian的大坑。

每次都下意识想把日志时间字段转化为timestap.其实不用这样。直接拿来日期,用kabian直接显示即可。

<think>好的,我现在需要处理用户关于如何下载Elasticsearch源码的问题。用户提到想从GitHub下载,所以首先我得确认正确的步骤和可能的注意事项。 首先,我记得用户之前提供的引用中有几个相关的信息。比如引用[2]提到要克隆仓库并切换到特定分支,比如7.10分支。引用[3]则提到了下载特定版本的源码压缩包,比如6.1.2版本。引用[4]指出有时源码版本和实际发布的版本可能不一致,需要注意。这些信息都需要整合到回答中,确保用户不会遇到版本混淆的问题。 接下来,用户需要具体的步骤。我应该分步骤说明如何通过Git克隆和切换分支,以及如何直接下载发布版本。同时要提醒用户可能需要非root账户运行,如引用[3]所述,避免权限问题。 另外,源码编译可能需要Java环境,引用[1]提到JDK版本,这里需要确认用户是否已安装合适版本的JDK,并在步骤中加入相关提示。例如,编译前需要安装正确的JDK版本,否则可能导致失败。 还要注意引用[5]提到的Elasticsearch Head插件,虽然这可能属于后续使用部分,但可以作为补充信息,帮助用户更好地管理和查看ES的信息。 用户可能遇到的常见问题包括:版本选择错误、分支切换问题、依赖安装缺失等。需要提前将这些可能的点列出来,比如引用[4]中的版本不一致问题,提醒用户仔细核对版本号。 最后,生成相关问题需要考虑用户可能的后续需求,比如环境搭建、版本差异处理、插件使用等,这样能帮助用户更全面地解决问题。 总结步骤: 1. 克隆仓库并切换分支或标签。 2. 下载特定版本的发布包。 3. 注意权限问题,使用非root账户。 4. 检查依赖环境如JDK。 5. 提示编译和运行时的注意事项。 6. 提供相关引用支持每个步骤,增强可信度。 需要确保每个步骤都有对应的引用支持,例如步骤1引用[2],步骤2引用[3],权限问题引用[3]等。同时,语言要简洁明了,避免技术术语过多,但保持准确。</think>以下是Elasticsearch源码的下载方法及注意事项: ### 一、通过GitHub克隆源码(推荐开发者) 1. **克隆仓库** 执行命令克隆最新代码(默认`main`分支): ```bash git clone git@github.com:elastic/elasticsearch.git ``` 若需特定版本(如7.10),切换分支: ```bash git checkout -b 7.10 origin/7.10 # 引用[2] ``` 2. **版本对照** 注意Git标签与发布版本可能不一致,例如Git标签`v7.13.0`实际对应Release版本`7.12.0`[^4],需在[Release页面](https://github.com/elastic/elasticsearch/releases)核对。 --- ### 二、直接下载发布版本(推荐快速获取) 1. **访问Release页面** 打开[Elasticsearch GitHub Releases](https://github.com/elastic/elasticsearch/releases),选择所需版本(如6.1.2): ```bash wget https://github.com/elastic/elasticsearch/archive/refs/tags/v6.1.2.tar.gz tar -zxvf v6.1.2.tar.gz # 引用[3] ``` 2. **可运行版本** 官网提供预编译版本:[官网下载地址](https://www.elastic.co/downloads/elasticsearch)[^1] --- ### 三、关键注意事项 1. **权限问题** Elasticsearch禁止以root用户运行,需创建普通用户: ```bash groupadd admin && useradd -d /home/admin -g admin -m admin # 引用[3] ``` 2. **编译依赖** - JDK版本需与源码要求匹配(如ES 7.x需要JDK11+) - 配置Gradle参数加速编译: ```bash ./gradlew -Dorg.gradle.daemon=true assemble ``` 3. **插件支持** 建议安装Elasticsearch Head插件管理索引[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值