ELK超详细操作文档

ELK简介

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。

  • ElasticSearch
    • ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。
    • Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与 Elasticsearch 通信。
    • Elasticsearch 是个分布式搜索和分析引擎,优点是能对大容量的数据进行接近实时的存储、搜索和分析操作。
  • Logstash
    • Logstash:作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给 Elasticsearch。
    • Logstash 由JRuby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具, 可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能,常用于日志处理。
  • Kiabana:
    • Kiabana:是基于 Node.js 开发的展示工具,可以为 Logstash 和 ElasticSearch 提供图形化的日志分析 Web 界面展示,可以汇总、分析和搜索重要数据日志。
  • Filebeat:
    • Filebeat:轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进行解析,或是直接发给 Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。

为什么使用ELK

  • 日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
  • 往往单台机器的日志我们使用grep、awk等工具就能基本实现简单分析,但是当日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
  • 一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

完整日志系统的基本特征

  • 收集:能够采集多种来源的日志数据
  • 传输:能够稳定的把日志数据解析过滤并传输到存储系统
  • 存储:存储日志数据
  • 分析:支持 UI 分析
  • 警告:能够提供错误报告,监控机制

ELK工作原理

  1. 在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。
  2. Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。
  3. Elasticsearch 对格式化后的数据进行索引和存储。
  4. Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

一、安装部署Elasticsearch

1、下载elasticsearch

复制代码
wget https://mirrors.huaweicloud.com/elasticsearch/7.8.0/elasticsearch-7.8.0-linux-x86_64.tar.gz

2、解压

复制代码
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz

3、修改配置文件

修改config/elasticsearch.yml

node.name: node-1 # 设置节点名

network.host: 0.0.0.0 # 允许外部 ip 访问

cluster.initial_master_nodes: "node-1" # 设置集群初始主节点

4、新建用户并赋权

复制代码
adduser es
passwd es
chown -R es /opt/installs/elasticsearch

5、切换至新建的用户并启动Elasticsearch

切换至用户 es

复制代码
su es

启动 ElasticSearch (-d 表示在后台启动)

es@localhost elasticsearch-7.8.0$ ./bin/elasticsearch -d

一下错误是由于在root下启动ES

6、启动之后可能会报以下二个错误

es@elk elasticsearch$ ERROR: 2 bootstrap checks failed

1\]: max file descriptors \[4096\] for elasticsearch process is too low, increase to at least \[65535

2\]: max virtual memory areas vm.max_map_count \[65530\] is too low, increase to at least \[262144

ERROR: Elasticsearch did not exit normally - check the logs at /opt/installs/elasticsearch/logs/elasticsearch.log

编辑 /etc/security/limits.conf

vi /etc/security/limits.conf,添加下面内容:

  • soft nofile 65536
  • hard nofile 131072
  • soft nproc 2048
  • hard nproc 4096

在/etc/sysctl.conf文件最后添加一行

vm.max_map_count=262144

执行sysctl -p 立即生效

修改elasticsearch.yml中的配置:

bootstrap.memory_lock: false

7、验证

访问:http://elk:9200

返回以下内容

复制代码
{
  "name" : "node-1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "0O0vY-KPQAOe_0LYbRVHPg",
  "version" : {
    "number" : "7.8.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
    "build_date" : "2020-06-14T19:35:50.234439Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

查看节点是否健康:

http://elk:9200/_cluster/health?pretty

复制代码
{
  "cluster_name": "elasticsearch",
  "status": "green", // 绿色表示健康
  "timed_out": false,
  "number_of_nodes": 1,
  "number_of_data_nodes": 1,
  "active_primary_shards": 0,
  "active_shards": 0,
  "relocating_shards": 0,
  "initializing_shards": 0,
  "unassigned_shards": 0,
  "delayed_unassigned_shards": 0,
  "number_of_pending_tasks": 0,
  "number_of_in_flight_fetch": 0,
  "task_max_waiting_in_queue_millis": 0,
  "active_shards_percent_as_number": 100
}

8、安装ES可视化管理工具ElasticView

ElasticView - ElasticView的部署

二、安装部署 Kibana

1、下载

复制代码
wget https://mirrors.huaweicloud.com/kibana/7.8.0/kibana-7.8.0-linux-x86_64.tar.gz

2、解压并重命名

复制代码
tar -zxvf kibana-7.8.0-linux-x86_64.tar.gz -C  /opt/installs/
mv /opt/installs/kibana-7.8.0-linux-x86_64.tar.gz  /opt/installs/kibana

3、修改配置文件

vim ./config/kibana.yml

服务端口 server.port: 5601

服务器ip 本机 server.host: "0.0.0.0"

Elasticsearch 服务地址 elasticsearch.hosts: "http://localhost:9200"

设置语言为中文 i18n.locale: "zh-CN"

4、授权并切换用户

复制代码
chown -R es  /opt/installs/kibana
su es

5、启动Kibana

注意:启动 Kibana 之前需要先启动 Elasticsearch

前台启动方式

./bin/kibana

后台启动方式

nohup ./bin/kibana &

6、在浏览器中访问Kibana

访问地址:http://elk:5601/

三、安装部署 Logstash

1、下载安装包

复制代码
wget https://mirrors.huaweicloud.com/logstash/7.8.0/logstash-7.8.0.tar.gz

2、解压并重命名

复制代码
tar -zxvf logstash-7.8.0.tar.gz -C /opt/installs/
mv /opt/installs/logstash-7.8.0  /opt/installs/logstash

3、复制一个新的配置文件并修改

复制代码
cp config/logstash-sample.conf config/logstash-es.conf
vim config/logstash-es.conf

#输入 从控制台输入
input {
  stdin{
  }
}

#过滤器 默认时区是UTC时区 差8个小时所以就加8小时
filter {
  date {
	match => ["timestamp","ISO8601"]
	target => "@timestamp"
	}
 ruby { 
   code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)" 
 }
 ruby {
   code => "event.set('@timestamp',event.get('timestamp'))"
 }
 mutate {
   remove_field => ["timestamp"]
 }
}

#输出
output {
   #输出到elasticsearch
   elasticsearch {   
       #指定elasticsearch服务器的地址和端口,多个ES服务器使用 "逗号空格" 隔开
      hosts =>["elk:9200"]
      #指定输出到elasticsearch 的索引格式
      index =>"system-%{+YYYY.MM.dd}"
 }
}

4、安装插件

由于国内无法访问默认的gem source,需要将gem source改为国内的源。

复制代码
vim /opt/installs/logstash/Gemfile

将source这一行改成如下所示:

source"RubyGems.org | your community gem host"

安装jdk并配置好环境变量

复制代码
./bin/logstash-plugin install logstash-codec-json_lines

5、启动Logstash

创建Logstash软链接

复制代码
ln -s /opt/installs/logstash/bin/logstash /usr/local/bin/

授权并切换用户

复制代码
chown -R es  /opt/installs/logstash
su es

启动Logstash

复制代码
logstash -f /opt/installs/logstash/config/logstash-es.conf

后台启动Logstash

复制代码
nohup ./bin/logstash -f ./config/logstash-es.conf &

四、安装部署 Filebeat

1、下载安装包

复制代码
wget https://mirrors.huaweicloud.com/filebeat/7.8.0/filebeat-7.8.0-linux-x86_64.tar.gz

2、解压并重命名

复制代码
tar -zxvf lfilebeat-7.8.0-linux-x86_64.tar.gz -C /opt/installs/
mv /opt/installs/filebeat-7.8.0-linux-x86_64 /opt/installs/filebeat

3、创建软连接

复制代码
ln -s /opt/installs/filebeat/filebeat /usr/local/bin/

4、赋权并切换es用户

复制代码
chown -R es  /opt/installs/filebeat
chmod go-w ./filebeat.yml
su es

5、修改filebeat.yml配置文件

6、启动filebeat

复制代码
filebeat -e -c /opt/installs/filebeat/filebeat.yml
相关推荐
Raas10012 小时前
MAI Gateway(魔芋企业级AI网关)技术揭秘:AI网关支持哪些模型?从原理到落地
大数据·人工智能·网关·gateway·mai gateway·企业级产品
YangYang9YangYan14 小时前
2026 校招商品分析岗位 JD 拆解,核心指标、工具与面试考点
大数据·数据库·数据分析
大大大大晴天15 小时前
OpenMetadata VS DataHub VS Atlas VS Gravitino
大数据
Qyr9918 小时前
2026全球汽车碳刷行业发展全景分析报告
大数据
蓝速科技19 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
精益数智工坊19 小时前
云计算环境数据怎么同步?云计算集成方案有哪些?
大数据·人工智能·数据挖掘·数据可视化
huashengzsj20 小时前
什么是DMS经销商管理系统?国内经销商管理系统有哪些品牌
大数据
IT毕设梦工厂21 小时前
计算机毕业设计选题推荐:基于大数据的草鱼价格分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·数据挖掘·数据分析·课程设计·大数据毕设项目
辛迪聊物业数字化21 小时前
智慧社区物业管理软件新手部署与实操指南
大数据·php
字节跳动数据平台1 天前
模型再强,为什么 Demo 还是进不了生产?
大数据