配置前提:安装java环境,详见博客
日志采集策略方案:
1、Filebeat(采集数据)+Elasticsearch(建立索引)+Kibana(展示)
适合案例:nginx日志采集,tomcat日志采集,服务端api单行日志采集,服务端api多行日志采集(包含错误日志)
不适合案例:对采集数据进行加工过滤处理
2、Filebeat(采集数据)+Logstash(过滤)+Elasticsearch(建立索引)+Kibana(展示)
适合案例:适合日志通过Logstash过滤或者按照一定模板输出到es中
Elasticsearch部署
1、下载Elasticsearch软件(/mnt/elk目录下)
下载地址:https://www.elastic.co/cn/downloads/elasticsearch
然后上传到当前路径下,解压文件
tar -zxvf elasticsearch-7.8.1-linux-x86_64.tar.gz
2、创建elsearch用户组及elsearch用户
groupadd elsearch
useradd elsearch -g elsearch
chown -R elsearch:elsearch elasticsearch-7.8.1
3、修改配置文件
vi /mnt/elk/elasticsearch-7.8.1/config/elasticsearch.yml
#这里指定的是集群名称,需要修改为对应的,开启了自发现功能后,ES会按照此集群名称进行集群发现
cluster.name: my-application
node.name: node-1
#创建日志和数据存放路径,目录需要手动创建
path.data: /mnt/elasticsearch/data
path.logs: /mnt/log/elasticsearch_log
#ES监听地址
network.host: 0.0.0.0 #允许外网个访问
http.port: 9200
discovery.seed_hosts: ["172.16.61.49"] #内网ip,如果有多个es,后面用逗号隔开
cluster.initial_master_nodes: ["node-1"]
4、在此赋予文件权限
我们将整个文件夹授权给elsearch 用户,不然在启动会报错,显示没有权限
如果不设置启动报错内容地址如下:https://blog.csdn.net/chengyuqiang/article/details/89845051
chown -R elsearch /mnt/elk/elasticsearch-7.8.1
chown -R elsearch /mnt/elasticsearch
chown -R elsearch /mnt/log/elasticsearch_log
5、修改系统配置参数
vim /etc/security/limits.conf ##必须是在root账号权限下才可以,切换到其他用户会报错,没有权限
增加以下内容:
elsearch soft nofile 65536
elsearch hard nofile 65536
elsearch soft nproc 4096
elsearch hard nproc 4096
vi /etc/security/limits.d/20-nproc.conf
增加和修改如下:
elsearch soft nproc 65536
root soft nproc unlimited
vi /etc/sysctl.conf
增加一行:
vm.max_map_count = 655360
如果不重启,上面配置不生效,可以用 sysctl -a|grep vm.max_map_count 查看结果
让上面配置生效,无需重启服务使用命令: sysctl -p
修改elasticsearch内存占用大小,不然后期文件变大,就会因为内存不足报错
vi /mnt/elk/elasticsearch-7.8.1/config/jvm.options
-Xms1g
-Xmx1g
修改成
-Xms1g
-Xmx10g
6、切换到elsearch用户启动ES(用root用户启动会报错)
su elsearch
cd bin
./elasticsearch
./elasticsearch -d 或者 ./elasticsearch & ##后台启动
或者这样 ./elasticsearch & -Xmx10g -Xms10g ##如果数据库过大后期就会报错,设置内存
tail -f /mnt/log/elasticsearch_log/elasticsearch_log ##可以看到后台启动日志
如图所示:
界面显示如下:
7、安装elasticsearch分词
点击下载,找到对应的版本分词zip文件
#进入es安装目录下的plugins下,创建ik文件夹
cd /mnt/elk/elasticsearch-7.8.1/plugins
mkdir ik
#将下载好的zip包放入ik文件夹下,执行解压
unzip elasticsearch-analysis-ik-7.8.1.zip
最后杀掉进程重新启动
Kibana部署
1、下载Kibana(/mnt/elk目录下)
下载地址:https://www.elastic.co/cn/downloads/kibana
然后上传到当前路径下,解压文件
tar -zxvf kibana-7.8.1-linux-x86_64.tar.gz
2、修改配置文件(/mnt/elk/kibana-7.8.1-linux-x86_64/config目录下)
编辑kibana.yml文件,打开注释,并修改相关参数
vi kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://118.178.11.111:9200"]
如图所示:
3、后台启动kibana(/mnt/elk/kibana-7.8.1-linux-x86_64/bin目录下)
./kibana --allow-root & 前台方式启动
nohup ./kibana --allow-root & 后台方式启动
如果你购买的是阿里云服务器,需要配置安全组出入方向5601端口
如图所示:
4、语言设置中文模式 ---》按照自己的习惯
/mnt/elk/kibana-7.8.1-linux-x86_64/config/kibana.yml 修改如下:
i18n.locale: "zh-CN"
如图所示:
设置完成后再重启
重点:kibana 不容易找到进程,ps -ef|grep kibana ,使用方法如下:
尝试使用 fuser -n tcp 5601
kill -9 端口
重点:当系统出现Kibana server is not ready yet,解决方法:
利用 elasticsearch-head 插件去查看一下索引,发现果然有 .kibana_2 索引,并且还有其他以 .kibana 开头的索引,将这些索引都删除了。
重新执行启动即可
https://learnku.com/articles/46345
安装filebeat部署
重点说明:这个主要是采集数据,不具备过滤功能,所以会使用到Logstash
1、下载filebeat(/mnt/elk目录下) -----》用迅雷下载比较快,下载完成后上传到linux服务器
解压文件:tar -zxvf filebeat-7.10.0-linux-x86_64.tar.gz
2、修改配置文件(/mnt/elk/filebeat-7.10.0-linux-x86_64目录下)
vim filebeat.yml
修改以下几个字段
(1)、输入源配置,修改如下
原始:
将enabled 修改成true
将paths 后面跟采集数据源日志,
重点:在paths 下一行增加 tail_files: true 会导致无法采集,在es删除索引,配置该参数导致filebeat 无法创建索引,所以有时候不能随便乱加参数
(2)、输出日志只能选一种,我选择es,修改如下:
原始:
将localhost改成ES服务器IP地址,如果有用户名和密码,需要放开下面内容
(3)、后台方式启动
前台方式启动:./filebeat -e -c filebeat.yml &
后台方式启动:nohup ./filebeat -e -c filebeat.yml &
查看日志可以到/mnt/elk/filebeat-7.10.0-linux-x86_64/logs/filebeat 目录下
重启后如图所示,可以看到重启成功:
在看下es数据概览情况,已经创建了filebeat,如图所示
源文件 /mnt/log/nginx_log/accesslogs/test.log文件输入内容,分三次:
vim /mnt/log/nginx_log/accesslogs/test.log
hello world china
朱老师
李老师
数据日志如下:
重点:可以看到数据重复了,原因是vim 添加内容,所以解决方法是 echo "石头 123456" >> /mnt/log/nginx_log/accesslogs/test.log ----》这种做法是追加内容,不是覆盖。
在es中删除filebeat索引,那么在此启动filebeat不会创建索引,需要删除/mnt/elk/filebeat-7.10.0-linux-x86_64/data目录,该目录存放着缓存,最后在重新启动就可以了。
rm -rf /mnt/elk/filebeat-7.10.0-linux-x86_64/data
4、加入开机启动
在/etc/init.d/目录下创建filebeat_start.sh文件
touch filebeat_start.sh
vi filebeat_start.sh
#!/bin/sh
#chkconfig: 2345 20 80
cd /mnt/elk/filebeat-7.10.0-linux-x86_64
nohup ./filebeat -e -c filebeat.yml &
wq!保存后 使用chmod设置可执行权限
chmod +x filebeat_start.sh
chkconfig --add filebeat_start.sh
chkconfig filebeat_start.sh on
shutdown -r now ---重启系统
重启之后连接查看效果: ps -ef|grep filebeat 可以看到系统的服务了
Logstash部署
Logstash 是一个实时数据收集引擎,可收集各类型数据并对其进行分析,过滤和归纳。按照自己条件分析过滤出符合数据导入到可视化界面。它可以实现多样化的数据源数据全量或增量传输,数据标准格式处理,数据格式化输出等的功能,常用于日志处理。工作流程分为三个阶段:
(1)input数据输入阶段,可接收oracle、mysql、postgresql、file等多种数据源;
(2)filter数据标准格式化阶段,可过滤、格式化数据,如格式化时间、字符串等;
(3)output数据输出阶段,可输出到elasticsearch、mongodb、kfka等接收终端。
那么,接下来将会对每个阶段进行讲解。
1、下载Logstash(/mnt/elk目录下)
下载地址:https://www.elastic.co/cn/downloads/logstash
然后上传到当前路径下,解压文件
tar -zxvf logstash-7.8.1.tar.gz
不同数据源配置方式不同,重启命令稍加变化,当mysql当数据源,需要安装插件
https://songzixian.com/linuxcmot/1010.html
https://www.cnblogs.com/blogjun/articles/8064646.html
https://www.cnblogs.com/renyutao/p/11253587.html
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
重点说明:文章上述都是采用第一种技术方案配合,接下来我要配置第二种方案,解决java的api服务器错误日志问题,请看下一篇博文介绍