syslog-ng通过elasticsearch-http模块配置HTTPS及基础认证的问题
syslog-ng通过elasticsearch-http模块配置HTTPS及基础认证的问题
嘿,我来帮你解决这个问题!你用的elasticsearch-http模块其实本身就支持基础认证,完全不用折腾那个依赖Java的elasticsearch2模块,之前没找到配置方法可能是没留意到官方文档里的对应参数。
直接修改你的destination配置就行,给你个完整的示例:
destination elk_http { elasticsearch-http( index("testing_index") type("") url("https://a.b.c.d:port/_bulk") workers(4) # 基础认证配置 username("your-es-username") password("your-es-password") # 如果ES用的是自签证书,需要指定CA证书路径来信任连接 ca-file("/path/to/elasticsearch-ca.pem") ); };
一些细节说明:
- 密码安全建议:不要直接在配置文件里写明文密码,推荐用
password-file()参数,把密码存到一个权限为600的文件里(只有root能读写),比如:password-file("/etc/syslog-ng/es-password.txt") - HTTPS连接验证:如果你的ES用的是公开CA签发的证书,那
ca-file()可以不用加,syslog-ng会自动信任;但如果是自签证书,一定要指定CA证书的路径,否则连接会失败。 - 配置检查:修改完配置后,先运行
syslog-ng -s来验证配置语法是否正确,没问题再重启服务:sudo systemctl restart syslog-ng
为什么不用elasticsearch2模块?
那个模块是基于Java的老版本适配模块,现在官方更推荐用纯C实现的elasticsearch-http模块,轻量且不需要依赖Java环境,你当前的版本(3.35.1)已经完全支持HTTPS和基础认证了,没必要去折腾安装不了的Java模块。
这样改完之后,syslog-ng就能通过HTTPS+基础认证把日志发送到Elasticsearch了,你可以查看syslog-ng的日志(/var/log/syslog)或者Elasticsearch的日志来确认连接是否正常。
备注:内容来源于stack exchange,提问作者admfotad
相关产品推荐
相关产品推荐

