ELK 企业级日志分析系统

一.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内存设置方面,可以遵循以下原则

  1. 当机器内存小于64G时,遵循通用的原则,50%给ES,50%留给操作系统,供lucene使用
  2. 当机器内存大于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


 


 

相关推荐

  1. ELK企业日志系统分析系统

    2024-07-10 05:14:03       46 阅读
  2. ELK 企业日志分析系统

    2024-07-10 05:14:03       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 05:14:03       49 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 05:14:03       53 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 05:14:03       42 阅读
  4. Python语言-面向对象

    2024-07-10 05:14:03       53 阅读

热门阅读

  1. 模型计算量 MAC/FLOPs 的手动统计方法

    2024-07-10 05:14:03       18 阅读
  2. 构建自定义Tensorflow镜像时用到的链接地址整理

    2024-07-10 05:14:03       25 阅读
  3. 凸包——G - Highest Ratio

    2024-07-10 05:14:03       18 阅读
  4. 力扣第226题“翻转二叉树”

    2024-07-10 05:14:03       22 阅读
  5. QUdpSocket 的bind函数详解

    2024-07-10 05:14:03       21 阅读
  6. 代码随想录算法训练营第7天

    2024-07-10 05:14:03       25 阅读
  7. 关于美国服务器IP的几个常见问题

    2024-07-10 05:14:03       25 阅读
  8. html&css基础

    2024-07-10 05:14:03       22 阅读
  9. 【云原生】Kubernetes部署高可用平台手册

    2024-07-10 05:14:03       20 阅读
  10. Ubuntu 20.04.6 安装 docker

    2024-07-10 05:14:03       26 阅读
  11. 数据结构第07节:队列

    2024-07-10 05:14:03       20 阅读