ELK日志系统在日志系统应用比较广泛,最近研究了ELK的搭建,根据自己这几天的搭建经历,总结了关于ELK的搭建方法
ELK顾名思义是ElasticSearch(后面简称es),Logstash,Kibana组建的一套日志系统,下载官网如下 https://www.elastic.co/cn/downloads/ 选取自己需要搭建的版本 注意版本要一直 因为logstash占用资源比较大 所以我选取了filebeat 轻量级日志收集工具。用filebeat收集日志,用logstash过滤日志(filebeat和logstash可以两选一 也可以一起用)以上我选取的是6.6.2版本的,仅供参考
下图是ELK运行的流程图
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLzUFVPl3aE5kMVpmT3hnMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3kzMwEzM1cTMwEzNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
ELK+filebeat 都是傻瓜式安装,下载完之后用命令安装或者解压压缩包然后配置文件修改之后启动即可用。
**
首先 logstash和es依赖java环境 安装1.8版本的jdk。
vim /etc/profile.d/java.sh 添加如下代码
export JAVA_HOME= jdk安装路径
export JRE_HOME= $JAVA_HOME/jre
export CLASSPATH= .: $ JAVA_HOME/lib:$ JRE_HOME/lib:$CLASSPATH
export PATH= $ JAVA_HOME/bin:$ JRE_HOME/bin:$PATH
退出保存运行
source /etc/profile.d/java.sh
运行 java -version 查看是否java环境安装成功
另外lunix内核也有要求
Linux的内核要在 3.5+ 以上,内核查看命令 uname -a
一,Filebeat安装
**
1,下载安装包
2,解压
3,进入解压之后的目录并编辑 filebeat.yml 配置文件
type:需要收集的服务器日志文件类型
paths: 需要收集的服务器日志文件路径
如果你选择的filebeat直接输出在es上 那么就把注释去掉
output.elasticsearch:
hosts: [“172.18.56.92:9200”] //es服务器的ip es的服务器端口为9200 检查是否有开启
如果你选择的是输出到logstash上 那么就把 logstash output注释去掉
output.logstash:
hosts: [“172.18.56.92:5044”] //logstash服务器ip logstash服务器端口为5044 检查是否开启
4,bin目录下启动filebeat ./filebeat -e -c filebeat.yml 配置文件修改要重新启动
**
二,Logstash安装
1,下载安装包
2,解压
3,进入解压后的目录并在config目录下创建一个配置文件例如 from_beat.conf 文件
4,编辑from_beat.conf文件 并添加如下代码
logstash管道主要包含三部分 input ,filter,output 。
input 数据来源配置 这里的数据来源是filebeat 所以是beats;也可以是redis或者kafka等;
filter 数据过滤配置 里面包含一些过滤规则等,有需求可以具体了解一下;
output 数据输出配置 输出到es里 hosts是es服务器 可以是多个逗号隔开,index是es的索引
5,编辑 logstash.yml 文件如下图
path.data 目录自己创建
http.host logstash服务器的ip
6,bin目录下启动logstash ./logstash -f …/config/from_beat.conf 出现这个即表示启动成功
**
三,ES安装
**
1,下载安装包
2,解压
3,进入解压后的目录编辑config目录下的elasticsearch.yml文件
cluster.name 集群名字
node.name 节点名字
path.data es数据存储路径
path.logs es日志路径
network.host es的服务器ip
http.port 默认端口9200
4,进入bin目录启动es ./elasticsearch
我们看到启动置换后有报错
说明启动的时候没有用非root用户启动,需要新建一个用户组
groupadd es
useradd -g es es
设置es目录
chown -R es:es /es/
切换es用户 su es 再次启动
出现这个错误 原来配置文件写里的数据路径和日志路径没有创建
我们创建该目录之后再次启动
mkdir /data/elk/els_data
mkdir /data/elk/log/els
chown -R es es /data/elk/els_data
chown -R es es /data/elk/log/els
出现报错
ERROR: [3] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[3]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
切换root用户
vi /etc/security/limits.conf
- soft nofile 65536
-
hard nofile 65536
vi /etc/sysctl.conf
添加
vm.max_map_count=655360
保存后执行
sysctl -p
如还有报错参考 https://blog.csdn.net/happyzxs/article/details/89156068
然后访问 访问 ip:9200 如果出现
到此 es 安装启动完成
四,Kibana安装
1,下载安装包
2,解压
3,进入解压后的目录编辑config目录下的kibana.yml文件
server.port: 5601
server.host: “172.18.240.33” //当前服务器ip
elasticsearch.hosts: [“http://172.18.240.28:9200”,“http://172.18.240.33:9200”] //es的服务器
kibana.index: “.kibana6”
logging.dest: /data/log/kibana/kibana.log //kibana日志路径
创建日志目录文件
mkdir -p /data/log/kibana/
touch /data/log/kibana/kibana.log
chmod o+rw /data/log/kibana/kibana.log
4,进入bin目录 启动kibana ./kibana
浏览器访问kibana http://172.18.240.28:5601/
如果浏览器显示 Kibana server is not ready yet 有可能是es和kibana版本不一致导致的 如果版本一致 那么稍等一会刷新页面即可
进入kinbana之后
在index patterns里面添加索引 索引名就是logstash的配置文件里配置的index
匹配到索引之后 点击下一步
根据自己需要选择 我选择的是第一个 然后下一步
log索引建立成功 点击进入discover页面 然后可以看到filebeat收集的服务器日志里面的内容了
好了 现在日志文件只要有内容修改那么filebeat就会将日志收集到传给logstash logstash进行过滤并写入es里 kinbana就可以读取es里面的内容了 快去试一试吧!