ELK基础知识
概述:ELK是一种开源的实时日志分析系统,它能通过日志分析来帮助发现问题,解决系统故障,它由ElasticSearch(ES)、Logstash和Kibana组成
ELK组成
- ES:对logstash格式化的数据进行索引和存储
- logstash:收集日志、过滤、格式化,传输到ES上(如果是高并发则可以用filebeat工具来进行日志的收集)
- Kibana:展示日志分析结果
ELK处理步骤
- 通过logstash将日志收集,并格式化传输到ES上存储
- ES对格式化的数据进行索引和存储
- 通过Kibana来展示使用者观察
Elasticsearch核心知识
- 接近实时:它有索引标识数据,搜索的过着只有轻微的延迟(通常1秒)
- 集群:ES具有集群机制,节点通过集群名加入到集群中,同时在集群中的节点会有一个自己的唯一身份标识
- 索引:这里的索引有点类似于关系型数据库中的库,它由一个拥有积分相似特征的文档的集合,索引名必须小写字母标识
- 文档:一个文档是一个可被索引的基础信息单元,
- 类型:在一个索引中,可以定义一种或多种类型,它是索引上的一个逻辑分类或分区,类似于关系型数据库中的表
- 分片和分片副本:分片是防止数据过大不易存储在单个节点,影响搜索,它提高性能和吞吐量,进行水平分割拓展,增大存储量,分片副本是放在单个分片或节点故障,丢失数据,它增加了冗余性,高可用性,默认情况下,ES每个索引被分片5个主分片和一个副本
部署ELK日志分析系统
设备准备:
- ES服务器:node1 ,软件,Elasticsearch,Kibana,192.168.118.11
- ES服务器,node2,软件,Elasticsearch,192.168.118.22
- Logstash服务器,node3,软件,Logstash,Apache,192.168.118.33
配置ES环境
[root@node1 opt]
192.168.118.11 node1
192.168.118.22 node2
[root@node1 opt]
[root@node1 opt]
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@node1 ~]
node2:
[root@node2 opt]
192.168.118.11 node1
192.168.118.22 node2
[root@node2 opt]
[root@node2 opt]
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@node2 jdk]
- 部署Elasticsearch(node1和node2节点部署一样,node2改下节点名称即可)
node1:
[root@node1 opt]
[root@node1 opt]
[root@node1 opt]
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[root@node1 opt]
[root@node1 elasticsearch]
[root@node1 elasticsearch]
[root@node1 elasticsearch]
cluster.name: my-elk-cluster
node.name: node1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
[root@node1 elasticsearch]
[root@node1 elasticsearch]
[root@node1 elasticsearch]
drwxr-xr-x. 2 elasticsearch elasticsearch 6 8月 14 10:55 /data/elk_data/
[root@node1 elasticsearch]
[root@node1 elasticsearch]
tcp6 0 0 :::9200 :::* LISTEN 81615/java
- 查看集群状态信息
- 安装各种工具,以方便查看浏览器
node1和node2配置一样:
[root@node1 opt]
[root@node1 node-v8.2.1]
[root@node1 opt]
[root@node1 node-v8.2.1]
[root@node1 node-v8.2.1]
[root@node1 node-v8.2.1]
[root@node1 node-v8.2.1]
[root@node1 src]
[root@node1 src]
[root@node1 bin]
[root@node1 src]
[root@node1 src]
[root@node1 src]
[root@node1 elasticsearch-head]
[root@node1 elasticsearch-head]
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@node1 elasticsearch-head]
[root@node1 elasticsearch-head]
tcp6 0 0 :::9200 :::* LISTEN 128499/java
[root@node1 elasticsearch-head]
[1] 128588
[root@node1 elasticsearch-head]
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 128598/grunt
-
在浏览器上查看 -
在node1上创建一个索引
[root@node1 elasticsearch-head]
{
"_index" : "index-demo",
"_type" : "test",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"created" : true
}
-
刷新浏览器查看 -
查看索引信息
部署apache服务器,安装Logstash
[root@appche ~]
[root@appche ~]
[root@appche opt]
[root@appche opt]
[root@appche local]
bin etc games include jdk1.8.0_91 lib lib64 libexec sbin share src
[root@appche local]
[root@appche opt]
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@appche opt]
[root@appche opt]
[root@appche opt]
[root@appche opt]
[root@appche local]
bin etc games include jdk1.8.0_91 lib lib64 libexec sbin share src
[root@appche local]
[root@appche opt]
[root@appche opt]
Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.
[root@appche ~]
…………………………
www.baidu.com
2021-08-14T12:21:46.662Z appche www.baidu.com
[root@appche ~]
…………………………
www.baidu.com
{
"@timestamp" => 2021-08-14T12:24:31.885Z,
"@version" => "1",
"host" => "appche",
"message" => "www.baidu.com"
}
[root@appche ~]
………………………………
20:28:12.680 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com
www.google.com.cn
- 刷新浏览器查看会发现有新的logstash信息
- 在apache上做对接配置,收集系统日志
[root@appche ~]
[root@appche ~]
[root@appche conf.d]
input {
file{
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.118.11:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
[root@appche conf.d]
部署Kibana
[root@node1 opt]
[root@node1 opt]
[root@node1 kibana]
[root@node1 kibana]
[root@node1 kibana]
[root@node1 kibana]
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.
- 在浏览器上查看
- 在Kibana上输入索引查看
|