0x00 TLDR;
本文记录了使用aws的es服务, 加上自建filebeat服务,最小成本实现日志收集和远程展示
内容包括:
- es服务创建,及特性介绍
- filebeat安装和配置
- nginx 公网配置
0x01 Amazon OpenSearch Service 服务
Amazon OpenSearch Service就是之前我们熟知的 elastic search服务, 服务创建时,使用的关键配置信息:
域访问策略: 允许对域进行公开访问
加密: 对所有数据都不进行加密
服务创建完成后, 我们会得到两个有用链接:
- es服务链接: https://xxx.eu-central-1.es.amazonaws.com
- kibana服务链接: https://xxx.eu-central-1.es.amazonaws.com/_plugin/kibana
需要注意的地方: 我们一般使用的es服务端口为9200, 这里使用的是443.
同时, 这两个链接, 只支持VPC内网访问, 对于kibana的远程访问, 在文末有提及.
0x02 filebeat 安装和配置
这里为了使用简单, 我们并未使用 logstash,kafka.
在第一步安装的时候, 从console网页上, 可以知道当前es的使用版本(7.10)
接下来, 我们可以在自己的ec2节点上,安装filebeat服务.
由于aws一般都使用的是开源版本(OSS)的服务, 所以,我们这里使用的下载链接为:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-7.10.2-x86_64.rpm
然后, 使用 rpm -ivh *.rpm
完成安装.
重点来了, 我们在配置filebeat有以下几个关键点:
- 禁用x_pack校验(开源版用不到这个)
- 自定义 es的index名称
- 使用 json格式上报日志
配置文件如下: /etc/filebeat/filebeat.yml
#logging.level: info
#logging.to_files: true
filebeat.inputs:
- type: log
enabled: true
paths:
# 递归目录日志
- /logpath/**/*.log
json.keys_under_root: true
json.overwrite_keys: true
json.add_error_key: true
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
output.elasticsearch:
# 留意行尾的 443 ,不写的话, 会解析成 9200
hosts: ["https://xxxx.eu-central-1.es.amazonaws.com:443"]
index: "mylog-%{+yyyy-MM-dd}"
setup.template.name: "mylog"
setup.template.pattern: "mylog-"
processors:
- drop_fields:
fields: ["input","agent","ecs","log"]
# 禁用 x_pack校验
setup.ilm.enabled: false
完成配置后, 启动服务: service filebeat start
0x03 公网访问kibana
由于默认的kibana服务只能VPC内部访问, 不方便我们实际的开发需求.
这里可以通过一个nginx反向代理请求, 实现远程访问. 当然, 对IP:PORT的白名单设置比较简单, 这里不表.
直接上配置:
server {
listen 99;
server_name _;
access_log off;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass https://xxx.eu-central-1.es.amazonaws.com;
proxy_set_header Authorization "";
proxy_hide_header Authorization;
}
}
重启nginx后, 就可以通过下面的链接访问 kibana:
http://you_public_ip:99/_plugin/kibana
完~