参考博客:https://www.cnblogs.com/arnoLixi/p/10402684.html
https://blog.csdn.net/zy517863543/article/details/102591180
一、简介
1)ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 在elasticsearch中,所有节点的数据是均等的。
2)Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
3)Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
Elasticsearch、Logstash、Kibana、Filebeat安装的版本号必须全部一致,不然会出现kibana无法显示web页面。
ELK工作演示图:
- Filebeat在APP Server端收集日志
- Logstash处理过滤Filebeat收集过来的日志
- Elasticsearch存储Logstash提供的处理之后的日志,用以检索、统计
- Kibana提供web页面,将Elasticsearch的数据可视化的展示出来
二、yum安装步骤
1、前置工作准备:
java环境配置: jdk8
关闭防火墙:systemctl stop firewalld
关闭selinux:setenforce 0
系统优化:
vim /etc/security/limits.conf
末尾添加:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
vim /etc/sysctl.conf
末尾添加:vm.max_map_count=655360
使其生效:sysctl -p
导入Elasticsearch GPG KEY 秘钥:rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
配置ELK yum源,使用清华的yum源镜像
vim /etc/yum.repos.d/elk.repo
添加以下内容
[ELK]
name=ELK-Elasticstack
baseurl=https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-6.x/
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
2、安装elasticsearch
2.1 yum install -y elasticsearch
2.2 配置elasticsearch:
vim /etc/elasticsearch/elasticsearch.yml
节点名称:
node.name: node-1
#绑定IP地址
network.host: 127.0.0.1
#端口号
http.port: 9200
按需修改jvm内存设置
vim /etc/elasticsearch/jvm.options
-Xms128m
-Xmx128m
2.3 启动,测试
which java
/usr/java/jdk1.8.0_211/bin/java
建立软连接:
ln -s /usr/java/jdk1.8.0_211/bin/java /usr/bin/java
systemctl start elasticsearch #启动
systemctl status elasticsearch #查看
systemctl enable elasticsearch #开机启动
systemctl stop elasticsearch #停止
curl http://127.0.0.1:9200,访问成功
3、安装Kibana
3.1 yum install -y kibana
安装目录:/usr/share/kibana
配置文件路径:/etc/kibana/
3.2 修改kibana配置
vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
修改为中文:
3.3 启动,测试
# 查看版本号
rpm -qa elasticsearch kibana
systemctl start kibana #启动
systemctl enable kibana #开机启动
systemctl status kibana #查看
systemctl stop kibana #停止
访问:http://ip:5601 ,
4、安装Logstash
4.1 yum install -y logstash
安装目录:/usr/share/logstash
配置文件路径:/etc/logstash/
日志文件路径:/var/log/logstash/
systemctl start logstash #启动
systemctl enable logstash #开机启动
systemctl status logstash #查看
systemctl stop logstash #停止
解决:sudo /usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd
监听端口: netstat -lptnu|grep java
4.2 配置logstash
https://www.cnblogs.com/xishuai/p/elk-logstash-filebeat.html
https://blog.csdn.net/mazhiwb/article/details/105775199
https://www.cnblogs.com/cheyunhua/p/11238489.html
采集日志数据,需要有个数据源,这里我们使用 /var/log/message进行测试。
chmod 777 /var/log/messages
vim /etc/logstash/conf.d/system.conf
添加以下内容:
#input日志输入模块:日志的获取方式和路径
input {
file {
path => "/var/log/messages"
type => "system-log"
start_position => "beginning"
}
}
#output日志的输出模块:导出你的数据
output {
elasticsearch {
hosts => "127.0.0.1:9200"
index => "system_log-%{+YYYY.MM.dd}"
}
}
如果conf.d 下有多个配置文件需要修改pipelines.yml(管道)文件
vim pipelines.yml
- pipeline.id: main
path.config: "/etc/logstash/conf.d/system.conf"
- pipeline.id: sec
path.config: "/etc/logstash/conf.d/sec.conf"
验证配置文件,是否有效:
cd /usr/share/logstash/bin
./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/system.conf --config.test_and_exit
查询索引:curl http://127.0.0.1:9200/_cat/indices?v
5、安装filebeat
logstash占用的资源比较大,没有beats轻量,所以官方也推荐使用beats来作为日志采集工具。而且beats可扩展,支持自定义构建。
5.1 yum install filebeat -y
5.2 vim /etc/filebeat/filebeat.yml
- type: log
paths: - /var/log/messages # 指定需要收集的日志文件的路径
output.elasticsearch:
hosts: ["127.0.0.1:9200"] # 配置 Elasticsearch 服务器的 IP 地址
systemctl start filebeat #启动
systemctl enable filebeat #开机启动
systemctl status filebeat #查看
systemctl stop filebeat #停止