ELK日志收集
ELK的组成:
(1)Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。
(2)Logstash 是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用
(3)Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志
ELK的工作流程:
Logstash 收集 AppServer 产生的 Log,并存放到 ElasticSearch 群集中,而 Kibana 则从 ES 群集中查询数据生成图表,再返回给 Browser。简单来说,进行日志处理分析,一般需要经过以下几个步骤:
1.将日志进行集中化管理
2.将日志格式化(Logstash)并且输出到Elasticsearch
3.对格式化后的数据进行索引和存储
4.web页面的展示
Elasticsearch 核心概念
接近实时 :Elasticsearch 是一个接近实时的搜索平台
集群:一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。
节点:一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能
索引:一个索引就是一个拥有几分相似特征的文档的集合。在一个集群中,可以定义任意多的索引
类型:在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。
文档:一个文档是一个可被索引的基础信息单元分片和复制:一个索引可以存储超出单个结点硬件限制的大量数据。
分片的作用:允许你水平分割/扩展你的内容容量
允许你在分片(潜在地,位于多个节点上)之上进行分布式的、并行的操作,进而提高性能/吞吐量。
ELK组成讲解
Logstash:
Logstash 由 JRuby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出。Logstash具有强大的插件功能,常用于日志处理。
Kibana:
Kibana 是一个设计使用和 Elasticsearch 配置工作的开源分析和可视化平台。可以用它进行搜索、查看、集成Elasticsearch 中的数据索引。可以利用各种图表、报表、地图组件轻松的对数据仅进行可视化分析
主要的功能:
Elasticsearch无缝集成
整合数据
复杂数据分析
让更多的团队成员收益
接口灵活
配置简单
可视化多数据源
简单数据导出
ELK环境搭建
主机 | OS | IP | 配置 | 插件 |
---|---|---|---|---|
node11 | centos7 | 192.168.11.11 | 2G内存 | ES+kibana |
node12 | centos7 | 192.168.11.12 | 2G内存 | ES |
node13 | centos7 | 192.168.11.13 | 2G内存 | ES+logstash |
#关闭防火墙
#安装jdk
rpm -ivh jdk-8u171-linux-x64.rpm
java -version #检测jdk环境
cat >> /etc/profile.d/jdk.sh <<‘EOF’
export JAVA_HOME=/usr/java/default
EOF
. /etc/profile.d/jdk.sh
#安装ES
@11 @12 @13 进行安装三节点的ES集群
rpm -ivh elasticsearch-7.2.0-x86_64.rpm
rpm -qc elasticsearch
systemctl daemon-reload
systemctl enable elasticsearch
配置文件说明:
vim /etc/elasticsearch/elasticsearch.yml
17行 cluster.name: my-es-cluster #集群名称
23行 node.name: node11 #节点名称,各个节点对应解析名称
33行 path.data: /var/lib/elasticsearch #数据存放的路径
37行 path.logs: /var/log/elasticsearch
43行 bootstrap.memory_lock: false 在启动时不锁定内存
55行 network.host: 0.0.0.0
68行 discovery.seed_hosts: [“192.168.11.13″,”192.168.11.12”]
#启动本节点之后,通过单播发现其他节点,各个节点相应修改
72行 cluster.initial_master_nodes: [“node11”, “node12”]
#使用主节点的初始集合引导集群
80行 gateway.recover_after_nodes: 2
#重启之后几个节点成功认为集群启动成功启动
启动服务
systemctl start elasticsearch
systemctl status -l elasticsearch
验证器群状态
curl http://192.168.11.11:9200 #查看节点信息
curl http://192.168.11.11:9200/_cluster/health?pretty #查看集群健康状态
curl http://192.168.11.11:9200/_cluster/state?pretty #查看集群状态
#安装Kibana
在@node11安装
rpm -ivh kibana-7.2.0-x86_64.rpm
#包自行去网上下载
vim /etc/kibana/kibana.yml
2行 server.port: 5601
7行 server.host: “0.0.0.0”
28行 elasticsearch.hosts: [“http://192.168.11.11:9200”]
113行 i18n.locale: “zh-CN”
systemctl start kibana
systemctl enable kibana
ss -tnl
访问: http://192.168.11.11:5601
#logstash
node13安装
rpm -ivh logstash-7.2.0.rpm
rpm -qc logstash
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
systemctl enable logstash
收集系统日志 /var/log/messages 将其输出到 elasticsearch 中
vim /etc/logstash/conf.d/system.conf
input {
file{ #t下
path =>”/var/log/messages” #{下
type =>”system” #p下
start_position =>”beginning” #s下
}
}
output {
elasticsearch { #p下
hosts => [“192.168.11.12:9200”] #t下
index =>”system-%{+YYYY.MM.dd}” #h下
}
}
chmod o+r /var/log/messages #修改权限
systemctl start logstash
curl http://192.168.11.11:9200/_cat/indices?v
#查看 ES 当中的索引信息
在 kibana 中添加 ES 中的索引
时间筛选:选择@timestamp然后创建