ELK8.13——入门搭建和基本的一些理解
最新的链接:https://www.cnblogs.com/Starryskies/articles/19126964 写的更详细一点,适合有一点基础看的朋友
以下是抄来ELK的简介
来自于知乎某大哥:https://zhuanlan.zhihu.com/p/351831747
ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称(但是后期出现的Filebeat(beats中的一种)可以用来替代Logstash的数据收集功能,比较轻量级)。市面上也被成为Elastic Stack。
Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。
Logstash是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。Logstash能够动态地采集、转换和传输数据,不受格式或复杂度的影响。利用Grok从非结构化数据中派生出结构,从IP地址解码出地理坐标,匿名化或排除敏感字段,并简化整体处理过程。
Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎,是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。无论您是结构化文本还是非结构化文本,数字数据或地理空间数据,Elasticsearch都能以支持快速搜索的方式有效地对其进行存储和索引。
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。并且可以为Logstash和ElasticSearch提供的日志分析友好的 Web 界面,可以汇总、分析和搜索重要数据日志。还可以让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(Dashboard)实时显示Elasticsearch查询动态。
ELK总结:
1-为什么要用ELK?
因为喜欢用所以用它,没什么好说的,能做到这些的不是只有它
2-ELK三剑客介绍
老大:Elasticsearch
老二:Kibana
打工仔:Logstash 或者 Filebeat
老大:存储数据
老二:从老大那里拿东西给你看
打工仔:负责给你收集数据,并发给老大
3-ELK集群的概念
集群无非就是多个节点进行传输,并且有什么反向代理,负载均衡等等,没什么用,ELK只要你高兴全装在一台机子上也不是不行
4-安装说明
我的这次安装是有一些出于安全考虑的,所以在一些规则上,做测试环境的时候可以不添加,不然报错不要怪我
ELK前置
官方:https://www.elastic.co/cn/elastic-stack/
根据你的系统下载三个组件:
Elasticsearch
Kibana
Logstash
你找不到下载框就自己再去搜索引擎那,搜索xxx下载即可,最好三个版本相同如,我这里是8.13那么最好三个组件都是8.13的

ELK安装
CentOS7服务端:192.168.1.1
CentOS7客户端:192.168.1.2
服务端操作
随便在一个地方解压压缩包
elasticsearch-8.13.0-linux-x86_64.tar.gz kibana-8.13.0-linux-x86_64.tar.gz
tar -xf elasticsearch-8.13.0-linux-x86_64.tar.gz
tar -xf kibana-8.13.0-linux-x86_64.tar.gz
#由于elasticsearch是核心平台,所以我们搭建ELK的时候一定要确保elasticsearch正常运行且没有问题
#我推荐是将firewalld以及selinux进行关闭以防万一
#我这里解压的路径是/data/
mv elasticsearch-8.13.0-linux-x86_64.tar.gz el
mv kibana-8.13.0-linux-x86_64.tar.gz kibana
#改个名,你不改也没关系 你高兴就好
elasticsearch配置
#进行核心配置文件编辑
vim /data/el/config/elasticsearch.yml
node.name: ELK
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
cluster.initial_master_nodes: ["192.168.1.1"]
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.key: /data/es/key.pem
xpack.security.transport.ssl.certificate: /data/es/cert.pem
node.name本节点名字
path.data:接收数据后存储在哪
path.logs:日志的存储地方,错误日志啊,启动日志啊巴拉巴拉的
network.host:有多网卡的时候你可以选择某个网卡的IP来进行监听,0.0.0.0代表监听所有网卡
http.port:API接收点,嗯,不知道有什么用,之后学到了再告诉你们
transport.port:信息接收点,负责接收打工仔发过来的信息,可以随便改,不占用即可
cluster.initial_master_nodes:主节点地址,可多个,据我的理解没什么用
以下为安全设置,如果你对这些不熟悉,请不要启用或者添加,修改上面的配置即可
http.cors.enabled: true
http.cors.allow-origin: "*"
允许跨域访问请求API,*代表允许全部(存在一定的风险)
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.key: /data/es/config/key.pem
xpack.security.transport.ssl.certificate: /data/es/config/cert.pem
启动elasticsearch的安全访问控制
ssl.enabled代表启用安全单元主体
ssl.key和ssl.pem是证书配置
以上这四个是安全主体开启的所需配置的内容,如果需要开启身份验证以上这个安全主体必不可少
进入到/data/es/bin/
./elasticsearch启动测试
测试如果完成那么就可以执行以下命令放到后台运行
./elasticsearch -d
如果设置了安全主体的小伙伴需要执行一次以下命令,完成默认用户密码设置:
elasticsearch-setup-passwords interactive
kibana配置
vim /data/kibana/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "123456"
i18n.locale: "zh-CN"
#server.port:kibana网页服务开放端口,可以随便改
#server.host:一样的,监听哪个网卡,这个是多网卡的意思
#elasticsearch.hosts: 核心平台地址,我这里安装在本地,所以使用localhost即可
i18n.locale: "zh-CN" 一定要设置,不然Web平台的语言就是英文
#以下文安全主体的相关配置,没开启的小伙伴可不需要进行启用
elasticsearch.username: "kibana_system"
elasticsearch.password: "123456"
#这两项是用于配置elasticsearch的身份验证的,以确保你的服务可以与核心平台进行联动
进入/data/kibana/bin/
./kibana #测试启动
测试完成后可使用以下命令放到后台运行
nohup ./kibana &
客户端操作
#这里要说明一下Logstash,它拥有非常丰富的插件,你无需进行额外安装
#它的插件能够帮助你转发任何东西,如监听端口再进行转发,或者指定转发某个文件
#同时它拥有中断检测功能,应该是不会重复发送无用的东西,采用偏移量进行检测
它的常用插件:
grok:用于解析和提取结构化日志中的字段。
date:用于解析和处理日期和时间字段。
mutate:用于转换和修改事件中的字段。
drop:用于丢弃不符合特定条件的事件。
geoip:用于根据 IP 地址获取地理位置信息。
translate:用于根据指定的词典对字段进行翻译。
以上我们需要重点固关注的只有:grok,mutate,drop三个,就已经完完全全能够满足大部分的需求
grok是ELK的一些专属表达式,能够帮助我们进行字段提取,以及替换,比较像正则表达式,但是又不完全是
mutate能够将一些奇怪的数据进行替换,如将替换符去掉
drop基本很少会使用到它,不过也还是写进来吧,也就是能够丢掉一些我们不需要的日志信息
grok学习是重点,它需要我们专门去学习一下,同时如果你搭建成功EK平台(elasticsearch,kibana)你可以登陆到kibana平台里面的开发工具里面,进行测试,将你的样本数据丢进去,再输入grok语句即可知道你的数据经过grok语句处理后的模样,非常好用。
解压压缩包
tar -xf logstash-8.13.0-linux-x86_64.tar.gz
#改个名,你不改也行,你喜欢就好
mv logstash-8.13.0-linux-x86_64.tar.gz logstash
#编写配置文件强烈推荐的在 logstash 的主目录下编写,不然可能它不认这个配置文件
vim syslog.conf
#以下为文件内容
#file start
input {
# 请根据你的数据来源进行配置,例如从文件读取数据
file {
path => "/data/sys/rsyslog.log" #我这里是读取文件 path代表文件路径
start_position => "beginning" #文件读取的方式,beginning表示从头开始读
sincedb_path => "/dev/null" #sincedb 中断功能,如果logstash被中断它会优先读取这个文件里面的内容来确定,上次读取到哪,如果设置为/dev/null则表示不使用
}
}
filter {
mutate {
gsub => [
"message", "#011", " " #将#011替换成空格
]
}
mutate {
gsub =>[
"message","test","" #将数据内容里面的test替换成空
]
}
grok {
match => {
"message" =>
"%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:hostname} %{WORD:account} %{TIMESTAMP_ISO8601:time} %{IPV4:user_ip} %{NUMBER} %{NUMBER} %{WORD:mac} %{IPV4:dest_ip} %{NUMBER:sport} %{NUMBER:dport} %{NUMBER} %{IPV4:gateway} %{NUMBER} %{GREEDYDATA:url_ip}"
#使用grok将数据以空格作为切割,并打上字段,其中%{SYSLOGTIMESTAMP:timestamp}很重要,代表着你之后的数据的排序,有点类似于主键的味道
}
}
}
output {
# 请根据你的需求配置输出目的地,例如发送到Elasticsearch
elasticsearch {
hosts => ["192.168.1.1:9200"] #Elasticsearch的地址以及端口
index => "rs-syslog" #索引
user => "elastic" #安全主体验证所需的账户
password=> "123456" #安全主体验证所需密码
}
}
#file end
说明:
logstash文件分为三大区域:input,filter,output
input:信息的来源,可以是读取某个日志文件,也可以是监听某个端口
filter:中间站,负责对来源数据的处理,如过滤,替换,切割等等
output:发出,负责将处理好的数据发送到指定地点
input监听端口
input {
tcp {#端口类型
port => 5000 #端口号
codec => "json" #接收json格式数据
}
}
编写完成后我们进入到/data/logstash/bin/
./logstash -f /data/logstash/syslog.conf
进行测试启动,可以编写systemd服务单元来进行管理,比较方便
vim /etc/systemd/system/logstash.service
#file start
[Unit]
Description=logstash
[Service]
Type=simple
User=root #负责启动的用户
Group=root #负责启动的用户组
ExecStart=/data/logstash/bin/logstash -f /data/logstash/syslog.conf #执行的命令
Restart=always
[Install]
WantedBy=multi-user.target
#end file
#重新加载配置
systemctl daemon-reload
#启动服务
systemctl restart logstash
ELK平时的使用说明
1、索引概念
索引这个概念起的不是很好,你可以将它当作Mysql里面的数据库名称,每个索引代表着一个数据库
2、索引的添加,与收集数据
在kibana里面搜索,索引添加进去就好,然后在logstash转发的时候指定索引,它转发到elasticsearch平台的时候会主动将数据添加到对应的索引里面
3、字段概念
字段的概念,我个人理解为是类似于Mysql的Cloumns,然后在elasticsearch中它能根据字段提供Excel的功能,如排序或者是视图调整
4、logstash与Filebeat
这两个工具是一个组合,属于一个相辅相成的工具,logstash负责接收和转发以及数据处理,它不会去主动收集一些数据,而filebeat会去主动收集,可以将收集来的数据交给logstash处理和转发。在本次安装中我并没有使用filebeat的工具,因为能替换它的实在太多了
5、安全主体的配置
安全主体的配置其实就是证书配置一下就好,以及再配置一下各个组件的安全验证用户,由于我这边不记得我当初怎么使用openssl进行配置的了,所以没写进去,不过值得注意的一点就是:openssl的证书默认似乎会有个加密,在elasticsearch的SSL设置中并不能解读该加密,所以会因此报错。
6、用户的一些说明
在elasticsearch中默认会存在一些用户elastic,apm_system,kibana_system,logstash_system,beats_system,remote_monitoring_user在初始化的过程中需要单独给它们设置密码,也可以使用elasticsearch平台中自带的elasticsearch-reset-password来进行随机密码生成。 这些均属于内置存在的用户但是值得注意的是除了elastic用户以外剩下的用户权限都不高,elastic属于内置的管理员用户。虽然说这些内置用户看名字上是给一些组组件专门使用的,但是实际用下来可能会因为权限问题导致无法接收数据,或者是无法启动。
7、用户的管理
在旧版本的kibana中可以很直接的找到对应的用户管理,但是在8.13版本中,我几乎找不到这些界面,所以也挺奇怪的就是了
常见的问题以及处理方式
注意的几点:
问题1-常见的启动失败原因:
大多数可能是配置文件写错,或者说没写错只是因为缺少空格,因为在配置文件里面你写好了选项和冒号之后要有个空格才能写参数;
问题2-明明修改了文件和流程的最大数,但是还是无法启动?
可能是因为系统没有启动完全,或者是ELK平台无法检测到你的数值可使用systcl来检测看看,如果还是不行建议重新启动计算机系统
问题3-系统因为意外断电导致重启,ELK平台无法启动
可能是因为系统并没有完全加载好系统环境,你稍等一会即可
问题4-提示无法使用root用户进行启动
ELK平台因为安全性考虑,全部的组件其实都不推荐直接使用root启动,特别是elasticsearch,直接使用root启动会报错,你添加一个ELK专属用户用来启动这些组件即可。
问题5-这些组件怎么挂入后台启动?
ELK这三个组件出于管理性考虑,除了elasticsearch剩下的两个组件均没有后台启动选项,需要通过nohup或者systemd的服务单元来进行后台管理以及启动
问题6-使用以上后台启动方式怎么进行管理?
呃,常见使用ps -ef进行查看,再将进程给kill掉即可关闭,你再重新启动一遍就好
问题7-后台启动后看不见kibana的进程?
它的进程是一个node节点,你稍微关注一下相关目录即可如:ps -ef|grep /data

浙公网安备 33010602011771号