1.学习安装docker并能安装、启动镜像,能够将容器导出为镜像,不要求docker-compose。
2.学习使用elasticsearch,能够使用docker安装,并使用nodejs存取数据
3.使用filebeats将之前阶段使用的nginx访问日志发送到nodejs,并结构化之后存储到elasticsearch中。使用redis的list或者kafka实现消息队列的功能,批量处理到达的日志,缓冲数据库压力。
4.博客中增加数据统计功能,使用采集的访问日志作为数据源,至少包含统计每日访问趋势、热点访问路径统计,并使用highcharts进行可视化(折线图、柱状图、饼图等等)
5.监控日志中的错误信息,如状态码为40x、50x的请求,自行制定报警策略,使用邮件发送报警信息
1.完成docker安装,掌握基本命令,此外依旧对照技术胖先关博客和视频内容进行学习
2.利用docker完成es的安装, elasticsearch更新得非常快,下载最新版8.2.0遇到了一些奇奇怪怪的问题,最后采用7.6.1版本。
docker安装elasticsearch_ZNineSun的博客-CSDN博客_docker安装elasticsearch
安装完成后,先启动docker, 再在windows powershell 下用管理员身份运行
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.6.1
关闭之后会显示es没有启动,删掉存在的容器 docker rm elasticsearch ,再次重新启动即可。
在docker下常用的两个命令,分别表示查看所有镜像和查看在运行的容器。
docker image ls docke ps
3.由于尝试在linux系统上操作失败,所以此处仍让是在windows上下载filebeat, 在官网上下载的压缩包文件(.zip),此处与es版本应该保持一致(7.6.1)。修改filebeat.yml配置文件,其后cmd打开filebeat, 并在控制台中输入.filebeat -e -c filebeat.yml进行启动。这部分参考其他博客根据自身需要进行了修改。
filebeat.inputs:
- type: log
enabled: true
paths:
#- /usr/local/nginx/logs/access.log
- D:nginxnginx-1.20.2nginx-1.20.2logsaccess.log
exclude_files: ['.gz$','INFO']
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
tags: ["nginx-log-messages"]
fields:
log_source: messages
fields_under_root: true
output.redis:
hosts: ["localhost:6379"]
key: nginx_log
.filebeat -e -c filebeat.yml
在redis中查看获取到的日志内容。自身redis启动有些问题,需输入以下代码启动
redis-server.exe redis.windows.conf redis-cli.exe shutdown redis-server.exe redis.windows.conf
出现标志性启动成功图标后打开另外一个控制台窗口,进入redis查询的基础命令,其后进行查询。首先keys *得到redis中所有内容,再查询对应的nignx_log。注意此处日志信息是list数据类型,并非String,所以不能用get nginx_log。查看list类型的key对应的所有值使用的命令是 lrange key名 0 -1 ,后续数字为0 3则为前3条日志。
redis-cli.exe lrang nignx_log 0 -1
这部分内容在后台的egg中已经可以读取到redis中的日志信息,但是将其存入es等后续工作尚未实现。



