日志分析和ELK监控
一、ELK引入

nginx的日志文件位置
二进制安装:/var/log/nginx/access.log
源码编译安装:/usr/local/nginx/logs/access.log

一般情况想要得到web服务器的PV和UV必须在日志轮转之前查看日志文件
PV (Page View)
页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次。可以统计服务一天的访问日志得到;
UV (Unique Visitor)
独立访客,统计1天内访问某站点的用户数。可以统计服务一天的访问日志并根据用户的唯一标识去重得到。响应时间(RT):响应时间是指系统对请求作出响应的时间,一般取平均响应时间。可以通过Nginx、Apache之类的Web Server得到。
二、ELK概述


三、环境准备

3、关闭防火墙和selinux 时间同步ntpd
四、单点elasticsearch的安装和配置
查找配置文件
修改配置文件


查看是服务是否启动成功
最后用curl命令 或者 浏览器访问


五、elasticsearch集群的安装和配置
scp上传安装包到另外的 节点
打开network监听 和http端口
unicast 单播 点对点 multicast 组播 boardcast 广播
这里每个节点都必须配置单播,并且把ip都写进配置文件用逗号隔开
node.master:true 就是中心管理节点 其他节点可以配置成false

systemctl enable elasticsearch
集群高可用的中心节点解决方法都差不多,都能防止脑裂


timeout是超时就踢出去,保证集群的高可用

elasticsearch中 一行日志就是document 一个日志文件就是index

和ceph分布式存储类似镜像备份实现高可用
API格式
增加和删除index


elasticsearch-head
官网地址:https:/github.com/mobz/elasticsearch-head
node.js下载页面: https://nodejs.org/en/download/


注意创建软链接必须把目录写对 要不然会报错





连接的ip必须都配置了下面的两个参数

六、logstash

input插件:用于导入日志源(配置必须)
https://www.elastic.co/guide/en/logstash/current/input-plugins.html
filter插件:用于过滤(不是配置必须的)
https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
output插件:用于导出(配置必须)
https://www.elastic.co/guide/en/logstash/current/output-plugins.html
6.1、logstash的安装和启动验证
网络很慢,建议去阿里云镜像站里面找,但是这个软件没有
最好提前官网下载好
Releases · elastic/logstash (github.com)
https://github.com/elastic/logstash/releases
最小化安装可能没有jdk


stden 标准输入法 指键盘输入的内容
通过标准输入和标准输出测试启动

要等一会儿之后才能启动
启动成功之后可以键盘输入测试 message

第二种测试方法


多日志采集配置
采集的两个日志文件分别对应两个索引
启动之后如果yum日志是空的 或者刚好日志轮转就不会采集到数据

采集的日志配置都编写在里面
七、kibana介绍
Kiban是一个开源的可视化平台,可以为ElasticSearch集群的管理提供友好的Web界面,帮助汇总,分析和搜索重要的日志数据。
文档路径: https://www.elastic.colguide/en/kibana/current/setup.html
可以根据官方文档安装和配置kibana

下载rpm软件包可以把wget去掉,直接在网页下载
7.1、kibana部署
第1步:在kibana服务器(我这里是VM1)上安装kibana

写错了 标准输出是stdout
重启kibana服务设置开机自启 然后浏览器访问就可以使用了

7.2、kibana 汉化
https://github.com/anbai-inc/Kibana Hanization/
这个github的资源已经没有了 希望大哥大姐可以给我一个新的


汉化成功之后再刷新访问web 注意:只有安装了kibana的服务器才能访问


点击发现,可以过滤日志产生的时间

还可以通过筛选器来 精确筛选日志的信息,想看什么信息就看什么
可视化操作可以把日志信息画图显示

仪表盘其实就是聚合图形,把所有的可视化图聚合在一起

八、filebeat
注意:下载的是下x86_64rpm

如果使用EFK架构的话,日志没有通过logstash过滤

8.1、filebeat采集日志发送给es集群


yaml格式特别严格
这配置是为了把采集到的 日志发送给es集群


开启filebeat服务之后如果不取消kibana的筛选就会看不到日志

8.2、filebeat采集的日志输出到logstash
这里必须要把filebeat的配置文件output.elasticsearch改成output.logstash

在logstash服务器上配置端口5044接收filebeat的日志
后台开启logstash服务,开启服务的命令不需要记忆
&
收集nginx日志
yum install epel-release -y
一般用yum源安装的软件 日志文件都在/var/log/软件名称
在filebeat.yml文件里面配置filebeat output nginx的访问日志路径或者error.log日志
把nginx的access.log配置好
可能会出现的问题
filebeat可以配置通过关键字采集日志

logstash插件
tcp

把本地的信息传输变成网络的

json

把日志信息过滤成 key -value 方便单独统计UV
就是把message里面的信息过滤成content里面的key-value
如果把target => "content" 去掉 就直接过滤成key-value

kv
分隔带有字符字段的信息
·自动解析为key=value。
·也可以任意字符串分割数据。
. field_split一串字符,指定分隔符分析键值对

和json类似,只不过json是处理key-value的值 kv是处理字符分隔的信息

grok
grok是将非结构化数据解析为结构化
·这个工具非常适于系统日志,mysql日志,其他Web服务器日志以及通常人类无法编写任何日志的格式。
·默认情况下,Logstash附带约120个模式。也可以添加自己的模式(patterns_dir)·模式后面对应正则表达式
·查看模式地址: https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns


字段和过滤的message的类容是按顺序一 一 对应的
geoip
开源lP地址库
自己找

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。
更多推荐




所有评论(0)