一.ELK概念
1)ELK介绍
ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。
- ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。
- Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与 Elasticsearch 通信。
- Elasticsearch是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大容量的日志数据,也可用于搜索许多不同类型的文档。
- Kiabana:Kibana 通常与 Elasticsearch 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 提供图形化的 web 界面来浏览 Elasticsearch 日志数据,可以用来汇总、分析和搜索重要数据。
- Logstash:作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给 Elasticsearch。
- Logstash 由 Ruby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具, 可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能,常用于日志处理。
2)ELK使用
服务器数量较少时:
- 不做任何日志集中管理,直接登录到服务器捞日志查看(缺点:当服务器不可用时,无法及时收集到日志)
- 通过 rsyslog 或 shell/python脚本 实现自动收集日志,集中保存到统一的日志服务器中
3)ELK组件
- Logstash 负责采集日志数据,还可通过插件模块对日志数据进行过滤、格式化处理,再 输出给ElasticSearch
- ElasticSearch 负责对日志数据进行分片、存储,并创建索引,方便全文检索
- Kibana 用于接入ElasticSearch的数据源,将日志数据进行图形化展示,方便用户通过 浏览器查看、搜索、分析日志
- Filebeat 用于替代Logstash采集日志数据,优点:比Logstash更轻量,资源消耗更少
- Fluentd 也是Logstash的一种替代方案,可用于替代Logstash采集日志数据和过滤转换 等功能,常用于收集K8S环境中的容器日志
- Kafka/Redis 作为消息队列MQ,实现流量销峰、缓冲、应用解耦等功能
4)ELK日志处理步骤
Logstash部署在服务器上对日志数据进行收集,并对日志数据进行格式化处理在输出Elasticsearch中,Elasticsearch对格式化数据进行存储并且在本地添加索引,方便搜索,再接入到kibana进行前端web展示。客户使用浏览器使用。
二.ELK Elasticsearch 集群部署
node1节点:192.168.86.10
node2节点:192.168.86.20
node3节点:192.168.86.30
1.初始化操作关闭防火墙
systemctl stop firewalld
setenforce 0
2.部署 Elasticsearch 软件
1)上传并安装elasticsearch—rpm包
cd /opt/
上传elasticsearch-6.7.2.rpm到/opt目录下
rpm -ivh elasticsearch-6.7.2.rpm
2)修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
#修改文件之前先备份
vim /etc/elasticsearch/elasticsearch.yml
#修改配置文件
JVM内存优化
3)es 性能调优参数
vim /etc/security/limits.conf
vim /etc/systemd/system.conf
注:修改好配置后记得重启ELK服务才能生效
4)优化elasticsearch用户拥有的虚拟内存
在ES内存设置方面,可以遵循以下原则
- 当机器内存小于64G时,遵循通用的原则,50%给ES,50%留给操作系统,供lucene使用
- 当机器内存大于64G时,遵循原则:建议分配给ES分配 4~32G 的内存即可,其它内存留给操作系统,供lucene使用
vim /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p
5)启动ELK测试是否成功开启
systemctl enable --now elasticsearch.service
netstat -lntp | grep 9200
网页测试
三. ELK Logstash 部署 (再nginx节点上操作)
nginx服务器 192.168.86.40
1)安装nginx
hostnamectl set-hostname nginx01 改名
bash 刷新
yum install-y nginx
2)部署logstash
上传软件包 logstash-6.7.2.rpm 到/opt目录下
cd /opt
rpm -ivh logstash-6.7.2.rpm
systemctl start logstash.service
systemctl enable --now logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
#用来识别命令
3)修改配置
vim /etc/logstash/conf.d/syslog.conf
再logstash -t -f syslog.conf 检查
logstash -f syslog.conf 开启
四.ELK Kiabana 部署
1)安装kibana
cd /opt
#上传软件包 kibana-6.7.2-x86_64.rpm 到/opt目录
rpm -ivh kibana-6.7.2-x86_64.rpm
2)设置 Kibana 的主配置文件
vim /etc/kibana/kibana.yml
3)创建日志文件加权,启动 Kibana 服务
touch /var/log/kibana.log
chown kibana:kibana /var/log/kibana.log
systemctl start kibana.service
systemctl enable kibana.service
4)网页测试kibbna
5)将nginx服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示
vim /etc/logstash/conf.d/nginx_log.conf
五.Elasticsearch 索引管理
#创建索引
curl -XPUT localhost:9200/index-demo
#查看索引
curl -XGET localhost:9200/index-demo/_settings
#修改索引
curl -XPUT localhost:9200/index-demo/_settings \
-H "Content-Type: application/json" \
-d '{"number_of_replicas": 2}
#创建索引别名
curl -XPOST localhost:9200/_aliases \
-H "Content-Type: application/json" \
-d '{"actions":[{"add":{"index":"index-demo","alias":"user_info_alicas"}}]}'
#删除索引别名
curl -XPOST localhost:9200/_aliases \
-H "Content-Type: application/json" \
-d '{"actions":[{"remove":{"index":"index-demo","alias":"user_info_alicas"}}]}'
#删除索引
删除单个索引:
curl -XDELETE localhost:9200/index-demo
删除多个索引:
curl -XDELETE localhost:9200/index-demo,index-demo2