我正在构建一个用于日志分析的小型系统,并且无法安装额外的代理,因此使用已经运行的 rsyslog 将日志发送到 elasticsearch。
我的 rsyslog 和 elasticsearch 是独立的虚拟机。这些虚拟机有一个共同的网络: 10.8.4.0/24 。
rsyslog 服务器已安装 rsyslog-elasticsearch.x86_64 并配置为从所有基础设施中的所有服务器接收错误日志。
我的 ElasticSearch 在 localhost:9200 上运行,我已将 nginx 设置为它的代理。
这是我的配置:
[root@all-logs rsyslog.d]# cat 00-Send2Elastic.conf
module(load="omelasticsearch")
template(name="testTemplate"
type="list"
option.json="on") {
constant(value="{")
constant(value="\"timestamp\":\"") property(name="timereported" dateFormat="rfc3339")
constant(value="\",\"message\":\"") property(name="msg")
constant(value="\",\"host\":\"") property(name="hostname")
constant(value="\",\"severity\":\"") property(name="syslogseverity-text")
constant(value="\",\"facility\":\"") property(name="syslogfacility-text")
constant(value="\",\"syslogtag\":\"") property(name="syslogtag")
constant(value="\"}")
}
action(type="omelasticsearch"
server="10.8.4.21"
serverport="29200"
template="testTemplate"
searchIndex="test-index"
searchType="test-type"
bulkmode="on"
maxbytes="100m"
queue.type="linkedlist"
queue.size="5000"
queue.dequeuebatchsize="300"
action.resumeretrycount="-1")
# http://www.rsyslog.com/doc/v8-stable/configuration/modules/omelasticsearch.html
# https://sematext.com/blog/recipe-rsyslog-elasticsearch-kibana/
和 Nginx:
[root@test-elk centos]# cat /etc/nginx/conf.d/elastic.conf
server {
listen 10.8.4.21:29200;
server_name elastic.host;
allow 10.8.4.0/24;
deny all;
location / {
proxy_pass http://localhost:9200;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection 'upgrade';
# proxy_set_header Host $host;
# proxy_cache_bypass $http_upgrade;
}
}
乍一看,其他一切似乎都没有问题:slight_smile:。
来自 rsyslogd -nd 的错误日志: https://pastebin.com/YDrTi2q5
错误行:
0478.493507244:action 0 queue:Reg/w0: omelasticsearch: pWrkrData reply: '{"error":"Content-Type header [text/json; charset=utf-8] is not supported","status":406}'
答案1
已经从 rsyslog.com repo 更新至 8.33.1-2,一切运行正常!