目标
使用filebeat将数据通过公网传输到elasticsearch。
原因
要采集数据的服务与elasticsearch不再一个网络,要采集数据的服务必须通过公网才能访问到elasticsearch。
由于elasticsearch不建议直接对外开放外网访问,因此需要一定的安全机制。
解决方案
通过nginx代理访问elasticsearch,nginx上使用openssl制作证书,开放https访问,外网域名映射到nginx服务。
这样客户端使用https访问到es时必须有客户端证书才可以。可以很大程度上保证其安全性。
同时还需要对elasticsearch设置密码。
实施过程
1. 证书制作及nginx配置过程 https://blog.csdn.net/haoxinqing9698/article/details/119219386
2. filebeat配置
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["自己的nginx域名:443"]
index: "收集到的索引名"
# Protocol - either `http` (default) or `https`.
protocol: "https"
# Authentication credentials - either API key or username/password.
#api_key: "id:api_key"
username: "elastic"
password: "自己的es密码"
# 根证书地址
ssl.certificate_authorities: [ "/xxxx/keys/certs/ca.cer" ]
# 客户端证书
ssl.certificate: "/xxxx/keys/certs/client.cer"
# 客户端密钥 解密密钥命令 openssl rsa -in client-key.pem -out client-key.unsecure
ssl.key: "/xxxx/keys/private/client-key.unsecure"