一、背景
生产环境中有台堡垒机,需要收集堡垒机的日志信息,不能在堡垒机上安装agent,只能用UDP协议收集日志,故使用filebeat(udp模式)+elasticsearch+kibana收集并展示日志信息。
二、部署
1. 版本说明
系统版本 centos7.9
软件名 | version | 包名 |
---|---|---|
elasticsearch | 8.3.3 | elasticsearch-8.3.3-linux-x86_64.tar.gz |
filebeat | 8.3.3 | filebeat-8.3.3-linux-x86_64.tar.gz |
kibana | 8.3.3 | kibana-8.3.3-linux-x86_64.tar.gz |
软件下载地址
https://artifacts.elastic.co/downloads/kibana/kibana-8.3.3-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.3.3-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/filebeat/filebeat-8.3.3-linux-x86_64.tar.gz
注:下文中如非明确标注普通用户执行指令外,一切以root用户执行,防火墙,selinux默认关闭
2. elasticsearch 部署
2.1 elasticsearch上传并解压
mkdir /opt/tools -p
#上传elasticsearch-8.3.3-linux-x86_64.tar.gz至/opt/tools目录
tar -xf elasticsearch-8.3.3-linux-x86_64.tar.gz
2.2 进行系统配置
echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
sysctl -p #使配置生效
useradd es #创建elasticsearch启动用户
chown -R es.es /opt/tools/elasticsearch-8.3.3
2.3 进行elasticsearch配置
echo 'network.host: 0.0.0.0' >> /opt/tools/elasticsearch-8.3.3/config/elasticsearch.yml
echo 'http.port: 9200' >> /opt/tools/elasticsearch-8.3.3/config/elasticsearch.yml
echo 'http.cors.enabled: true' >> /opt/tools/elasticsearch-8.3.3/config/elasticsearch.yml
echo 'http.cors.allow-origin: "*"' >> /opt/tools/elasticsearch-8.3.3/config/elasticsearch.yml
2.4 用es账户启动
su - es
/opt/tools/elasticsearch-8.3.3/bin/elasticsearch -d
2.5 更改elastic 及kibana_system密码(用es账户执行)
/opt/tools/elasticsearch-8.3.3/bin/elasticsearch-reset-password -u elastic -i
/opt/tools/elasticsearch-8.3.3/bin/elasticsearch-reset-password -u kibana_system -i
2.6 浏览器访问elasticsearch
3. filebeat部署
3.1 filebeat上传并解压
tar -xf /opt/tools/filebeat-8.3.3-linux-x86_64.tar.gz
3.2 生成证书密钥
es首次启动时会生成http证书文件,通过证书文件生成filebeat访问密钥,否则在es开启安全访问策略情况下,filebeat运行会报错(es配置文件中xpack.security.transport.ssl 不启动时则忽略3.2.1,3.2.2,3.2.3 三步骤)
3.2.1 查找es证书密码
/opt/tools/elasticsearch-8.3.3/bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
3.2.2 复制es证书文件到filebeat目录
cp /opt/tools/elasticsearch-8.3.3/config/certs/http.p12 /opt/tools/filebeat-8.3.3-linux-x86_64
3.2.3 创建filebeat认证密钥
openssl pkcs12 -in /opt/tools/filebeat-8.3.3-linux-x86_64/http.p12 -out newfile.crt.pem -clcerts -nokeys
3.3 配置filebeat
udp配置只更改下列几项
filebeat.inputs:
- type: udp
enabled: true
host: "0.0.0.0:514" #允许地址
#kibana设置
setup.kibana:
host: "10.0.0.110:5601" #kibana地址
username: "elastic" #elastic账户密码,其他账户没有es写入权限
password: "123456789"
#elasticsearch设置
output.elasticsearch:
hosts: [""10.0.0.110:9200"]
protocol: "https"
username: "elastic"
password: "123456789"
ssl:
certificate_authorities: ["newfile.crt.pem"]
verification_mode: none
4. kibana部署
4.1 kibana上传并解压
tar -xf /opt/tools/kibana-8.3.3-linux-x86_64.tar.gz
chown -R es.es /opt/tools/kibana-8.3.3
4.2 kibana 配置
echo 'server.host: "0.0.0.0"' >> /opt/tools/kibana-8.3.3/config/kibana.yml
echo 'i18n.locale: "zh-CN"' >> /opt/tools/kibana-8.3.3/config/kibana.yml
4.3 启动kibana(es账户启动)
su - es
/opt/tools/kibana-8.3.3/bin/kibana &
4.4 访问kibana web 界面配置es
4.5 登录kibana
用es中 elastic 账户登录kibana
4.6 启动filebeat
./filebeat setup 初始设置
./filebeat -e -c filebeat.yml (完成后进行)
5. 客户端测试
5.1 客户端rsyslog配置
找另一台centos机器配置rsyslog服务
echo '*.* @10.0.0.110:514' >> /etc/rsyslog.conf
systemctl restart rsyslog.service