ELK超详细配置
共 12295字,需浏览 25分钟
·
2021-08-09 01:31
点击“程序员面试吧”,选择“星标🔝”
“下拉至文末”查看更多
Elasticsearch(es):通过搭建群集;存储日志数据,索引日志数据
Logstash :收集日志,收集到了后给es存储
Kibana :视图形式展现日志信息,更加人性化
将日志进行集中化管理
将日志格式化(Logstash)并输出到Elasticsearch
对格式化后的数据进行索引和存储(Elasticsearch)
前端数据的展示(Kibana)
接近实时(NRT),Elasticsearch是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)
集群(cluster),一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。集群有一个唯一性标示的名字,默认是Elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。一个集群可以只有一个节点。强烈建议在配置Elasticsearch时,配置成集群模式。
节点(node),节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。像集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义。该名字也很重要,在集群中用于识别服务器对应的节点。节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到Elasticsearch集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为Elasticsearch的集群。
索引(type),在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。
一款强大的数据处理工具
可实现数据传输、格式处理、格式化输出
数据输入(从业务输入)、数据加工(如过滤、改写等)以及数据输出(输出到Elasticsearch群集)
Logstash的主要组件:
shipper:日志收集者,负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可
indexer:日志存储者,负责接收日志并写入到本地文件
broker:日志hub,负责连接多个shipper和多个indexer
search and storage:允许对事件进行搜索和存储
web interface:基于Web的展示界面
一个针对Elasticsearch的开源分析及可视化平台
搜索、查看存储在Elasticsearch索引中的数据
通过各种图表进行高级数据分析及展示
主要功能:
Elasticsearch无缝之集成
整合数据,复杂数据分析
让更多团队成员收益
接口灵活,分享更容易
配置简单,可视化多数据源
简单数据导出
[root@localhost ~]# hostnamectl set-hostname elk-1
[root@localhost ~]# bash
[root@elk-1 ~]# vim /etc/hosts ###添加本地解析,识别集群主机名
192.168.73.40 elk-1
192.168.73.50 elk-2
[root@elk-1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@elk-1 ~]# vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
[root@elk-1 ~]# yum install -y elasticsearch java
[root@elk-1 ~]# java -version ###查看Java版本
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
[root@elk-1 ~]# vim /etc/elasticsearch/elasticsearch.yml
17行 集群名称 ###两个节点一致
cluster.name: abner
23行 节点名称 ###两个节点不同
node.name: elk-1
33行 工作目录
path.data: /data/es-data
path.logs: /var/log/elasticsearch/
43行 防止交换swap分区
bootstrap.memory_lock: true
54行 监听网络
network.host: 0.0.0.0
58行 端口
http.port: 9200
68行:discovery.zen.ping.unicast.hosts: ["elk-1", "elk-2"] #集群发现通过单播实现,单播的主机名为"elk-1","elk-2"
[root@elk-1 ~]# mkdir -p /data/es-data
[root@elk-1 ~]# chown -R elasticsearch.elasticsearch /data/es-data
[root@elk-1 ~]# systemctl start elasticsearch.service
[root@elk-1 ~]# netstat -anpt | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 46814/java
第一种:Java API
第二种:RESTful API (通过json格式交互)
[root@elk-1 ~]# curl -i -XGET 'http://192.168.73.40:9200/_count?pretty' -d '{
> "query": {
> "match_all": {}
> }
> }'
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 95
{
"count" : 0,
"_shards" : {
"total" : 0,
"successful" : 0,
"failed" : 0
}
}
[root@elk-1 ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
……省略内容
Installed head into /usr/share/elasticsearch/plugins/head ###安装位置
[root@elk-1 ~]# less /var/log/elasticsearch/abner.log
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
[root@elk-1 ~]# vim /etc/security/limits.conf ###末尾插入
[root@elk-1 ~]# systemctl stop elasticsearch.service
[root@elk-1 ~]# systemctl start elasticsearch.service
[root@elk-1 ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
……省略内容
Installed kopf into /usr/share/elasticsearch/plugins/kopf ###安装路径
[root@localhost ~]# hostnamectl set-hostname apache
[root@localhost ~]# bash
[root@apache ~]# yum install -y httpd
[root@apache ~]# systemctl start httpd
[root@apache ~]# yum install -y java
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 1:java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@apache ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
[root@apache ~]# vi /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
[root@apache ~]# yum install -y logstash
[root@apache ~]# ln -s /opt/logstash/bin/* /usr/local/bin ###优化执行路径
Logstash命令选项解释:
-f:指定logstash的配置文件,根据配置文件配置logstash
-e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“ ”,则默认使用stdin做输入,stdout为输出)
-t:测试配置文件是否正确,然后退出
#输入采用标准输入,输出采用标准输出
定义输入和输出流,类似管道
[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{} }'
[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{ codec => rubydeb
[root@apache ~]# logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.73.40:9200"] } }'
Settings: Default filter workers: 1
Logstash startup completed
abc123
tom456
123jerry
[root@apache ~]# chmod o+r /var/log/messages ###允许其他用户访问
[root@apache ~]# ll /var/log/messages
-rw----r--. 1 root root 439103 11月 18 15:20 /var/log/messages
[root@apache ~]# vim /etc/logstash/conf.d/system.conf
input { ###Logstash输入:从/var/log/messages输入,类型为system,起始位
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output { ###Logstash输出:输出给Elasticsearch(以IP地址指定位置)
elasticsearch {
hosts => ["192.168.73.40:9200"]
index => "system-%{+YYY.MM.dd}"
}
}
[root@apache ~]# systemctl restart logstash
[root@elk-1 ~]# tar zxf kibana-4.3.1-linux-x64.tar.gz
[root@elk-1 ~]# vim kibana-4.3.1-linux-x64/config/kibana.yml
//2行
server.port: 5601
//5行
server.host: "0.0.0.0"
//12行 ES地址
elasticsearch.url: "http://192.168.73.40:9200"
//20行
kibana.index: ".kibana"
yum install screen -y
[root@elk-1 ~]# kibana-4.3.1-linux-x64/bin/kibana ###启动监听
log [15:43:45.084] [info][status][plugin:kibana] Status changed from uninitialized to green - Ready
log [15:43:45.105] [info][status][plugin:elasticsearch] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [15:43:45.113] [info][status][plugin:kbn_vislib_vis_types] Status changed from uninitialized to green - Ready
log [15:43:45.119] [info][status][plugin:markdown_vis] Status changed from uninitialized to green - Ready
log [15:43:45.123] [info][status][plugin:metric_vis] Status changed from uninitialized to green - Ready
log [15:43:45.125] [info][status][plugin:spyModes] Status changed from uninitialized to green - Ready
log [15:43:45.132] [info][status][plugin:statusPage] Status changed from uninitialized to green - Ready
log [15:43:45.135] [info][status][plugin:table_vis] Status changed from uninitialized to green - Ready
log [15:43:45.136] [info][status][plugin:elasticsearch] Status changed from yellow to green - Kibana index ready
log [15:43:45.146] [info][listening] Server running at http://0.0.0.0:5601
原文链接:https://blog.csdn.net/weixin_47403060/article/details/109758406 转自:分布式实验室