目录
三、两台机器分别安装 elasticsearch 、Java环境
ELK由三个组件构成
Elasticsearch:Elasticsearch 是一个基于 Lucene 的开源搜索和分析引擎。它可以实时存储、检索和分析大量数据。Elasticsearch 提供了分布式的搜索和分析能力,支持高可用和可伸缩性。
Logstash:Logstash 是一个用于收集、处理和转发日志和事件数据的开源工具。它可以从各种来源(如文件、数据库、消息队列等)收集数据,并进行过滤、转换和传输到 Elasticsearch 或其他目的地。
Kibana:Kibana 是一个基于 Web 的用户界面,用于可视化和分析 Elasticsearch 中的数据。它提供了丰富的图表、仪表板和搜索功能,使用户可以轻松地查询和探索数据,并创建交互式的数据可视化。
这三个组件结合在一起,构成了一个功能强大的日志和数据分析平台。Logstash 用于收集和处理数据,Elasticsearch 用于存储和分析数据,而 Kibana 则提供了用户友好的界面,方便用户查询和可视化分析数据。
作用
日志收集、分析、可视化
为什么会使用elk
日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。
如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。
日志收集
搜集、分析、过滤日志的工具
一般工作方式为c/s架构,Client端安装在需要收集日志的服务器上,Server端负责将收到的各节点日志进行过滤、修改等操作,再一并发往Elasticsearch上去
Inputs → Filters → Outputs
输入-->过滤-->输出
File:从文件系统的文件中读取,类似于tail -f命令
Syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析
Redis:从redis service中读取
Beats:从filebeat中读取

Grok:解析任意文本数据,Grok 是 Logstash 最重要的插件。它的主要作用就是将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。
官方提供的grok表达式:logstash-patterns-core/patterns at main · logstash-plugins/logstash-patterns-core · GitHub
Grok在线调试:Grok Debugger
Mutate:对字段进行转换。例如对字段进行删除、替换、修改、重命名等。
Drop:丢弃一部分Events不进行处理。
Clone:拷贝Event,这个过程中也可以添加或移除字段。
Geoip:添加地理信息(为前台kibana图形化展示使用)
Elasticsearch:可以高效的保存数据,并且能够方便和简单的进行查询。
File:将Event数据保存到文件中。
Graphite:将Event数据发送到图形化组件中,踏实一个当前较流行的开源存储图形化展示的组件。
日志分析
开源的日志收集、分析、存储程序
特点
分布式
零配置
自动发现
索引自动分片
索引副本机制
Restful风格接口
多数据源
自动搜索负载
日志可视化 Grafana
为Logstash和ElasticSearch在收集、存储的日志基础上进行分析时友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。
es logstash kibana

es logstash kafka kibana

es logstash (重量级 占用系统资源较多)
filebeat (轻量级 占用系统资源较少) kibana
es logstash filebeat kafka kibana
es logstash fluentd kafka kibana
软件包(完成集群操作需要如下软件包,注意此集群,不支持中文,所以碰到中文的地方要改正,配置文件也是一样,此集群相当耗费配置和内存,建议最少要赋予2核4G,否则会出现内存已满死机的状态)

按下方流程操作即可成功配置日志收集系统









第一台机器 IP 192.168.115.7 作为node节点1
第二台机器 IP 192.168.115.6 作为node节点2
第三台机器 IP 192.168.115.8 作为服务器访问
首先
将两台节点机器 主机分别改名为 node1 和 node2

软件包(完成集群操作需要如下软件包,注意此集群,不支持中文,所以碰到中文的地方要改正,配置文件也是一样,此集群相当耗费配置和内存,建议最少要赋予2核4G,否则会出现内存已满死机的状态)

node1
vim /etc/hosts

node2


node1



node2 显示结果一样
第一台服务 ping node2
第二台服务 ping node1 查看是否成功通信



注意,编译安装时间相当长,要有心理准备
来到node1 配置 配置文件

vim /etc/elasticsearch/elasticsearch.yml
更改如下配置文件内容




更改完成后 重启服务 并将配置文件拷贝到 第二台机器 192.168.115.6

来到第二台机器更改配置文件


重启服务,加载程序,设置开机自启

两边成功启动后,查看状态


来到网站验证 查看节点信息

第一台结果

第二台结果


验证
node1

node2

![]()

这个URL是Elasticsearch的健康检查接口。当你访问`http://192.168.115.6:9200/_cat/health`时,它将返回有关Elasticsearch集群的健康状态信息。
具体来说,以下是URL中的不同部分的含义:
- `http://`:这是用于指定使用HTTP协议进行通信的URL的前缀。
- `192.168.115.6`:这是Elasticsearch集群的主机名或IP地址。
- `9200`:这是Elasticsearch集群的HTTP REST API的默认端口。
- `/_cat/health`:这是指定要获取Elasticsearch集群健康状况的特殊端点。
通过访问该URL,你可以获取有关Elasticsearch集群健康状况的详细信息,如集群名称、节点数量、分片数量、节点状态等。健康状态信息通常以表格形式呈现,提供了对集群整体运行状况的快速了解。
健康状态的输出通常有以下几个字段:
- `epoch`:表示健康状态请求的时间戳。
- `timestamp`:显示日期和时间戳。
- `cluster`:显示集群名称。
- `status`:表示集群的整体状态,有`green`(绿色,表示健康状态)、`yellow`(黄色,表示有一些分片不可用)、`red`(红色,表示有严重问题)三种状态。
- `node.total`:显示集群中节点的总数。
- `node.data`:显示具有数据的节点数。
- `shards`:显示集群中总分片数量。
- `pri`:显示主分片数量。
- `rep`:显示副本分片数量。

根据你提供的URL `http://192.168.115.6:9200/_cat/health?v' --color`,其中的`v`和`--color`是一些参数,可以用于改变输出的格式和显示颜色。
- `v`参数是用于显示更详细的信息,例如节点的IP地址、分片的状态等。它提供了更具体的健康状态报告。
- `--color`参数是用于在终端中显示带有颜色的输出,以提高可读性。
因此,当你访问`http://192.168.115.6:9200/_cat/health?v' --color`时,它将返回对应Elasticsearch集群的健康状态信息,并以详细的形式呈现,并且终端中的输出将以带有颜色的方式显示。
请注意,这个URL在浏览器中打开可能不会显示预期的结果,因为浏览器通常不会显示控制台的颜色和格式化,所以它最适合在命令行终端中使用。
进入var下
![]()
less my-application.log
![]()
less my-application.log是一个命令,用于在终端中查看名为my-application.log的日志文件的内容。
当你执行less my-application.log时,终端上将显示文件的内容,并且你可以通过按键进行浏览和搜索。下面是一些常用的按键命令:
/键后输入关键字可进行搜索。按n键跳到下一个匹配项,按N键跳到上一个匹配项。q键来退出less的浏览。通过使用less my-application.log命令,你可以方便地在终端中查看和浏览日志文件的内容,对于调试和故障排除非常有用。
在节点1上安装







两台服务更改配置文件


更改后启动服务


输入后,等他自己完成,在进行下一步操作(有点慢)

查看监听端口号 (成功启动)

来到网页验证

将 localhost 改成 node1的IP
则成功可以查看到配置的两个节点 (集群健康值显示,正常)


输入内容 进行验证

curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
如下图显示则说明正常 将localhost 改为ip

来到网页验证


说明成功添加




测试一

输入 hello 会给回应

测试二

测试三

来到网页验证 (多了一个索引)





授权并编写配置文件

input {
file{
path =>"/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.115.7:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}

重启服务
systemctl restart logstash.service
网页验证 (多了一个system)



安装 kibana

进入配置文件更改



重启并查看监听端口

网页验证 可成功访问

如下图显示则为成功


如果搜索不到则提示


来到第三台服务器 192.168.115.8
yum 安装 httpd


vim /etc/logstash/conf.d/httpd.conf 更改配置文件没有则创建
input {
file{
path =>"/var/log/httpd/access_log"
type => "access"
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.115.7:9200"]
index => "httpd_access-%{+YYYY.MM.dd}"
}
}

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
开启httpd服务

logstash -f /etc/logstash/conf.d/httpd.conf

输入索引 则成功查看



到现在为止,ELK日志收集系统集群成功创建