环境说明
方案:使用ElasticSearch保存日志,使用Kibana进行日志展示、搜索、过期删除,使用 ElasticSearch 的pipeline进行日志的解析,使用 filebeat 采集日志发送给ElasticSearch。使用服务器192.168.xxx.xxx进行部署。
准备:
●
从官网下载 ElasticSearch(elasticsearch-8.15.0-linux-x86_64.tar.gz)上传到服务器
●
从官网下载 kibana(kibana-8.15.0-linux-x86_64.tar.gz)上传到服务器
●
从官网下载 elastic/filebeat 的docker镜像,推送到cce镜像仓库
部署环境
环境检查
检查vm.max_map_count的大小,要求该值至少为262144:
如果该值不满足要求,可以修改/etc/sysctl.conf文件,在该文件中新增一行或者修改vm.max_map_count:
检查ulimit的值:
修改ulimit的值为65536:
配置防火墙:
部署ElasticSearch
将 ElasticSearch 解压:
调整 ElasticSearch的配置文件:config/elasticsearch.yml:
创建对应的文件夹:
●
/home/elk/elasticsearch-workspace/data:数据文件夹
●
/home/elk/elasticsearch-workspace/logs:日志文件夹
生成证书:
1
生成CA:
2
通过CA生成证书:
启动ElasticSearch:
配置用户密码:
访问ElasticSearch:http://192.168.xxx.xxx:9200
如果提示需要用户密码,输入用户elastic,密码123456(即上面设置的密码)
关闭elasticsearch:
部署kibana
解压Kibana:
调整Kibana配置文件:config/kibana.yml
启动kibana:
访问kibana:http://192.168.xxx.xxx:5601/
如果提示需要用户密码,输入用户elastic,密码123456(即elasticsearch设置的密码)
关闭Kibana:
配置项目的日志格式
调整项目的日志格式,使其成为固定格式,例如:
调整日志的输出路径、日志名称、日志级别等信息
配置项目的ELK索引信息
通过向ElasticSearch发送相关请求,创建项目的索引信息。
创建生命周期策略myproject-strategy:
创建索引模板:myproject-app
创建pipeline:myproject-logback-pipeline
部署filebeat
filebeat需要能够读取到云上myproject项目的日志,所以需要将myproject项目的日志映射出来。可以使用以下几种方案:
●
方案1:使用PVC,将项目日志映射到PVC上,filebeat也挂载该PVC,读取其中的日志
●
方案2:filebeat配置节点亲和配置为亲和myproject项目,使得filebeat的pod和myproject项目pod运行在同一个节点。将myproject日志映射到节点主机HostPath上,filebeat也挂载主机的HostPath,读取其中的日志
CCE云上现在没有PVC配额,目前采用方案2。
添加一个ConfigMap myproject-filebeat:其中配置filebeat.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
filebeat.inputs:
- type: filestream
enabled: true
id: filestream-myproject-app
paths:- /tmp/logs/myproject/myproject.log
fields:
sourceSystem: myproject-app
profile: dev
project: web
level: all
pod: ${POD_IP:"-"}
fields_under_root: true
parsers: - multiline:
type: pattern
pattern: '^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3}\s[[\w.-]]\s[[\w.-]]\s[[\w.-]*]\s[A-Z]{4,5}\s'
negate: true
match: after
- /tmp/logs/myproject/myproject.log
setup:
template:
enabled: false
name: "myproject-app"
pattern: "myproject-app-*"
overwrite: true
settings:
index.number_of_shards: 1
ilm:
enabled: false
output.elasticsearch:
hosts: ["192.168.xxx.xxx:9200"]
username: "elastic"
password: "123456"
index: "myproject-app-dev-%{+yyyy.MM.dd}"
pipeline: "myproject-logback-pipeline"
创建工作负载myproject-filebeat,镜像使用elastic/filebeat:8.15.0。
数据存储中,将myproject-filebeat的filebeat.yml挂载到/usr/share/filebeat/filebeat.yml(注意配置子路径)
将HostPath的/tmp/logs/挂载到容器的/tmp/logs/。
配置应用亲和,亲和 myproject-app应用。
查看日志
访问Kibana即可查看相关日志:http://192.168.xxx.xxx:5601/