linux安装配置ELK日志系统
文章目录
一、资源列表
主机名 | IP | 系统版本 | 备注 |
---|---|---|---|
elasticsearch-only | 10.0.13.72 | CentOS Linux release 7.5.1804 (Core) | 用于单机部署演示 |
elasticsearch-1 & kibana & logstash | 10.0.13.73 | CentOS Linux release 7.5.1804 (Core) | 用于es及ELK集群部署演示 |
elasticsearch-2 & filebeat | 10.0.13.75 | CentOS Linux release 7.5.1804 (Core) | 用于es及ELK集群部署演示 |
elasticsearch-3 & filebeat | 10.0.13.76 | CentOS Linux release 7.5.1804 (Core) | 用于es及ELK集群部署演示 |
1.结构图及说明
本次部署大致结构为:
需要被收集日志的服务器部署filebeat轻量级日志收集服务
filebeat收集本机日志将其发送到logstash的http端口
logstash再将收集来的日志output到es集群内,通过kibana展示出来
本集群未使用任意消息队列服务,如有需求可自行添加
filebeat收集到日志后,将把信息传输给logstash的input组件
input组件将收集来的信息交给filter进行格式化分析、过滤后将由output组件进行输出到elasticsearch集群的索引内,该索引名称可自定义
二、单机部署Elasticsearch
主机名 | IP | 系统版本 |
---|---|---|
elasticsearch-only | 10.0.13.72 | CentOS Linux release 7.5.1804 (Core) |
ES版本:elasticsearch-7.17.5-linux-x86_64
JDK版本:jdk-11.0.17_linux-x64
elasticsearch-7.17.5-linux-x86_64下载地址:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.5-linux-x86_64.tar.gz
jdk-11.0.17_linux-x64下载地址-注意:jdk下载地址为官网下载,需点击进入下载:
若无法下载,可使用以下链接进行下载
elasticsearch-7.17.5-linux-x86_64下载地址:
链接:https://pan.baidu.com/s/17zUWRn3AExDAdQtkLGxZaQ?pwd=zska
提取码:zskajdk-11.0.17_linux-x64下载地址:
链接:https://pan.baidu.com/s/1tXoFHrnI2Zd_pGXmVQhSCg?pwd=zska
提取码:zska
1.环境搭建
在部署elasticsearch前,首先需要对环境进行部署
1.1.JAVA环境部署
将jdk-11.0.17_linux-x64提前下载并上传至服务器
#解压至/usr/local下,解压到哪里都可以,只要对应上后面的环境变量位置即可
tar -zxvf jdk-11.0.17_linux-x64_bin.tar.gz -C /usr/local
#切换工作目录至/usr/local下
cd /usr/local
#改名,方便后续操作
mv jdk-11.0.17/ java
#编辑环境变量
cat >> /etc/profile << EOF
export LC_ALL="zh_CN.UTF-8"
export LANG="zh_CN.UTF-8"
export JAVA_HOME=/usr/local/java
export JRE_HOME=\${JAVA_HOME}
export CLASSPATH=.:\${JAVA_HOME}/lib:\${JRE_HOME}/lib
export PATH=\${JAVA_HOME}/bin:\$PATH
EOF
#使配置生效
source /etc/profile
#验证
java -version
#若出现所有命令均不可使用情况,请使用以下命令解决
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
1.2.服务器环境配置
创建普通用户,及对应目录
#创建es的数据存储目录,建议选择较大盘
mkdir /data
#创建es用户并指定家目录
useradd es -d /data/es
- 修改/etc/security/limits.conf
cat >> /etc/security/limits.conf << EOF
es soft nofile 65536
es hard nofile 65536
* hard nproc 4096
EOF
#注: * 代表 Linux 所有用户名称
- 修改/etc/security/limits.conf
cat >> /etc/sysctl.conf << EOF
vm.max_map_count=655360
EOF
# 一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536
- 重新加载
sysctl -p
2.部署elasticsearch
在环境整体部署完成后即可开始进行服务的部署
2.1.解压软件
#回到root用户家目录
cd ~
#解压elasticsearch-7.17.5-linux-x86_64.tar.gz到/data/es,即es用户家目录
tar -zxvf elasticsearch-7.17.5-linux-x86_64.tar.gz -C /data/es
#切换进es用户的家目录
cd /data/es
#改名,方便后续操作
mv elasticsearch-7.17.5/ elasticsearch
#更改属主属组
chown -R es.es elasticsearch
2.2.修改配置文件
#切换工作目录
cd /data/es/elasticsearch
#更改JVM配置文件,注意:实际需求大小根据情况而定,默认1g,我改为了4g
cat >> config/jvm.options << EOF
-Xms4g
-Xmx4g
EOF
#更改主配置文件,注意network.host默认只允许本机访问,修改为0.0.0.0后则所有IP来访问,根据实际情况指定,也可设置网段
#其中10.0.13.72为本机IP,操作时请改为自己使用的IP,各类配置请以实际需要调配,直接用此单机配置也可
cat >> config/elasticsearch.yml << EOF
cluster.name: utry-test
node.name: node-10.0.13.72
path.data: /data/es/elasticsearch/data
path.logs: /data/es/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.13.72"]
discovery.zen.minimum_master_nodes: 1
cluster.initial_master_nodes: ["10.0.13.72"]
http.cors.enabled: true
http.cors.allow-origin: "*"
script.allowed_types: inline
#fielddata 字段缓存达到 20%回收内存
indices.fielddata.cache.size: 20%
EOF
2.3.启动
#修改配置文件后,切换es用户
su - es
#切换工作目录
cd elasticsearch/
#后天启动并查看日志,日志名称为cluster.name定义的名字
./bin/elasticsearch -d && tail -1000f logs/utry-test.log
#停止
for i in `ps -ef | grep elasticsearch | grep -v grep | awk '{print $2}'` ; do kill -9 $i ; done
三、集群部署Elasticsearch
主机名 | IP | 系统版本 |
---|---|---|
elasticsearch-1 | 10.0.13.73 | CentOS Linux release 7.5.1804 (Core) |
elasticsearch-2 | 10.0.13.75 | CentOS Linux release 7.5.1804 (Core) |
elasticsearch-3 | 10.0.13.76 | CentOS Linux release 7.5.1804 (Core) |
ES版本:elasticsearch-7.17.5-linux-x86_64
JDK版本:jdk-11.0.17_linux-x64
elasticsearch-7.17.5-linux-x86_64下载地址:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.5-linux-x86_64.tar.gz
jdk-11.0.17_linux-x64下载地址-注意:jdk下载地址为官网下载,需点击进入下载:
若无法下载,可使用以下链接进行下载
elasticsearch-7.17.5-linux-x86_64下载地址:
链接:https://pan.baidu.com/s/17zUWRn3AExDAdQtkLGxZaQ?pwd=zska
提取码:zskajdk-11.0.17_linux-x64下载地址:
链接:https://pan.baidu.com/s/1tXoFHrnI2Zd_pGXmVQhSCg?pwd=zska
提取码:zska
1.环境部署
在部署elasticsearch前,首先需要对环境进行部署
注意 环境部署三台都需要执行
1.1.JAVA环境部署
将jdk-11.0.17_linux-x64提前下载并上传至服务器
#解压至/usr/local下,解压到哪里都可以,只要对应上后面的环境变量位置即可
tar -zxvf jdk-11.0.17_linux-x64_bin.tar.gz -C /usr/local
#切换工作目录至/usr/local下
cd /usr/local
#改名,方便后续操作
mv jdk-11.0.17/ java
#编辑环境变量
cat >> /etc/profile << EOF
export LC_ALL="zh_CN.UTF-8"
export LANG="zh_CN.UTF-8"
export JAVA_HOME=/usr/local/java
export JRE_HOME=\${JAVA_HOME}
export CLASSPATH=.:\${JAVA_HOME}/lib:\${JRE_HOME}/lib
export PATH=\${JAVA_HOME}/bin:\$PATH
EOF
#使配置生效
source /etc/profile
#验证
java -version
#若出现所有命令均不可使用情况,请使用以下命令解决
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
1.2.服务器环境配置
创建普通用户,及对应目录
#创建es的数据存储目录,建议选择较大盘
mkdir /data
#创建es用户并指定家目录
useradd es -d /data/es
修改/etc/security/limits.conf
cat >> /etc/security/limits.conf << EOF
es soft nofile 65536
es hard nofile 65536
* hard nproc 4096
EOF
#注: * 带表 Linux 所有用户名称
修改/etc/security/limits.conf
cat >> /etc/sysctl.conf << EOF
vm.max_map_count=655360
EOF
# 一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536
重新加载
sysctl -p
2.部署elasticsearch
在环境整体部署完成之后,可以进行elasticsearch的部署
2.1.解压软件
#以下操作三台都执行
#回到root用户家目录
cd ~
#解压elasticsearch-7.17.5-linux-x86_64.tar.gz到/data/es,即es用户家目录,尽量解压到磁盘空间分配较大目录
tar -zxvf elasticsearch-7.17.5-linux-x86_64.tar.gz -C /data/es
#切换进es用户的家目录
cd /data/es
#改名,方便后续操作
mv elasticsearch-7.17.5/ elasticsearch
#更改属主属组
chown -R es.es elasticsearch
2.2.修改配置文件
- elasticsearch-1执行操作
#切换工作目录
cd /data/es/elasticsearch
#更改JVM配置文件,注意:实际需求大小根据情况而定,默认1g,我改为了4g
cat >> config/jvm.options << EOF
-Xms4g
-Xmx4g
EOF
#更改主配置文件,注意network.host默认只允许本机访问,修改为0.0.0.0后则所有IP来访问,根据实际情况指定,也可设置网段
#其中10.0.13.73为本机IP,操作时请改为自己使用的IP,各类配置请以实际需要调配,直接用此单机配置也可
cat >> config/elasticsearch.yml << EOF
cluster.name: my_es
node.name: node-10.0.13.73
path.data: /data/es/elasticsearch/data
path.logs: /data/es/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.13.73","10.0.13.75","10.0.13.76"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["10.0.13.73"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
script.allowed_types: inline
#fielddata 字段缓存达到 20%回收内存
indices.fielddata.cache.size: 20%
EOF
- elasticsearch-2执行操作
#切换工作目录
cd /data/es/elasticsearch
#更改JVM配置文件,注意:实际需求大小根据情况而定,默认1g,我改为了4g
cat >> config/jvm.options << EOF
-Xms4g
-Xmx4g
EOF
#更改主配置文件,注意network.host默认只允许本机访问,修改为0.0.0.0后则所有IP来访问,根据实际情况指定,也可设置网段
#其中10.0.13.73为本机IP,操作时请改为自己使用的IP,各类配置请以实际需要调配,直接用此单机配置也可
cat >> config/elasticsearch.yml << EOF
cluster.name: my_es
node.name: node-10.0.13.75
path.data: /data/es/elasticsearch/data
path.logs: /data/es/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.13.73","10.0.13.75","10.0.13.76"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["10.0.13.73"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
script.allowed_types: inline
#fielddata 字段缓存达到 20%回收内存
indices.fielddata.cache.size: 20%
EOF
- elasticsearch-3执行操作
#切换工作目录
cd /data/es/elasticsearch
#更改JVM配置文件,注意:实际需求大小根据情况而定,默认1g,我改为了4g
cat >> config/jvm.options << EOF
-Xms4g
-Xmx4g
EOF
#更改主配置文件,注意network.host默认只允许本机访问,修改为0.0.0.0后则所有IP来访问,根据实际情况指定,也可设置网段
#其中10.0.13.73为本机IP,操作时请改为自己使用的IP,各类配置请以实际需要调配,直接用此单机配置也可
cat >> config/elasticsearch.yml << EOF
cluster.name: my_es
node.name: node-10.0.13.76
path.data: /data/es/elasticsearch/data
path.logs: /data/es/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.13.73","10.0.13.75","10.0.13.76"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["10.0.13.73"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
script.allowed_types: inline
#fielddata 字段缓存达到 20%回收内存
indices.fielddata.cache.size: 20%
EOF
2.3.启动
三台一起执行,一起启动
#修改配置文件后,切换es用户
su - es
#切换工作目录
cd elasticsearch/
#后天启动并查看日志,日志名称为cluster.name定义的名字
./bin/elasticsearch -d && tail -1000f logs/my_es.log
#停止
for i in `ps -ef | grep elasticsearch | grep -v grep | awk '{print $2}'` ; do kill -9 $i ; done
- elasticsearch-1:
- elasticsearch-2:
- elasticsearch-3:
#启动完成后,进行访问测试
curl http://10.0.13.73:9200/_cat/health?v
可以看到集群状态为green,node节点有三台,是健康的状态
四、部署IK分词器插件(扩展)
IK分词器是ES的一个插件,主要用于把一段中文或者英文的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,分词器的版本要与elasticsearch的版本对应
IK分词器版本:elasticsearch-analysis-ik-7.17.5
elasticsearch-analysis-ik-7.17.5官网下载地址:
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.5/elasticsearch-analysis-ik-7.17.5.zip
若无法下载,可使用以下链接进行下载
elasticsearch-analysis-ik-7.17.5下载地址:
链接:https://pan.baidu.com/s/1RH0HnZKVnGe7QwrTPZ_CCA?pwd=zska
提取码:zska
1.安装服务
将elasticsearch-analysis-ik-7.17.5.zip上传至服务器,集群需要同时上传
#创建IK目录
mkdir -p /data/es/elasticsearch/plugins/ik
#转移服务至指定目录
cp elasticsearch-analysis-ik-7.17.5.zip /data/es/elasticsearch/plugins/ik
#切换目录
cd /data/es/elasticsearch/plugins/ik
#解压
unzip elasticsearch-analysis-ik-7.17.5.zip
#重启es服务,读取IK
#停止es服务
for i in `ps -ef | grep elasticsearch | grep -v grep | awk '{print $2}'` ; do echo "$i killd" ; kill $i ; done
#启动服务
#切换es用户
su - es
#切换目录
cd elasticsearch/
#启动服务
./bin/elasticsearch -d && tail -100f logs/utry-test.log
日志内会有如下图这条报错
实际上这个报错并不影响什么,只是es启动时会去更新地图的一些数据库,不想看到可以按照以下操作直接禁掉
#编辑配置
echo 'ingest.geoip.downloader.enabled: false' >> /data/es//elasticsearch/config/elasticsearch.yml
#再次重启
#停止es服务
for i in `ps -ef | grep elasticsearch | grep -v grep | awk '{print $2}'` ; do echo "$i killd" ; kill $i ; done
#启动服务
#切换es用户
su - es
#切换目录
cd elasticsearch/
#启动服务
./bin/elasticsearch -d && tail -100f logs/utry-test.log
五、部署Eshead插件(扩展)
部署完单机或集群elasticsearch后,即可部署eshead用于集群/单机的查看及操作
集群版部署在一台上就好,一般部署在master上
1.解压软件
#查看下载软件是否存在
rpm -qa | grep wget
#不存在则下载
yum -y install wget
#安装包
wget https://npm.taobao.org/mirrors/node/v8.1.0/node-v8.1.0-linux-x64.tar.gz
#解压
tar -zxvf node-v8.1.0-linux-x64.tar.gz -C /data/
#切换工作目录
cd /data
#改名方便后续操作(可跳过)
mv node-v8.1.0-linux-x64 node
2.环境配置
#创建软链
ln -s /data/node/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
ln -s /data/node/bin/node /usr/local/bin/node
#修改环境变量
cat >> /etc/profile << EOF
export NODE_HOME=/data/node
export PATH=:\$PATH:\$NODE_HOME/bin
EOF
#使更改生效
source /etcd/profile
#验证
node -v
npm -v
3.服务安装
eshead可在线安装也可离线安装,网速慢则不推荐在线安装
3.1.在线安装
#在线安装,需先安装依赖包
yum -y install gcc-c++ make git
#切换工作目录
cd /data/node
#克隆编译包,速度与网速有关,且访问网站为github
git clone https://github.com/mobz/elasticsearch-head.git
#切换工作目录
cd /data/node/elasticsearch-head
#安装,最后的报错信息可忽略
npm install
#修改配置文件
vim Gruntfile.js
#用/搜索9100,找到connect中的options配置块,添加hostname配置项,hostname后跟本机IP即可,添加完成即可保存退出
#修改app.js
cd /data/node/_site
vim app.js
#使用/匹配app-base_uri,点击n查找下一个找到http://localhost:9200修改为es配置文件中定义的node名称即可,我的叫node-10.0.13.72
#修改前:http://localhost:9200
#修改后:http://node-10.0.13.72:9200
#启动方式,无需es用户
cd /data/node/elasticsearch-head/node_modules/grunt/bin
nohup ./grunt server >/dev/null 2>&1 &
#查看9100端口是否运行
ss -antpl | grep 9100
#停止方法,使用ss命令过滤出9100端口信息,awk过滤出pid交给传参使用kill杀死进程
ss -antpl | grep 9100 | awk '{print $NF}' | awk -F',' '{print $2}' | awk -F'=' '{print $2}' | xargs -i kill -9 {}
#前端访问测试,浏览器访问10.0.13.72:9100
注意显示未连接是因为http栏内,10.0.13.72是无法解析node-10.0.13.72这个域名是指向谁的,所以无法连接
解决方案有三种:
- 手动将http栏内修改为对应IP地址+port
- 修改后台app.js文件为对应IP+port
- 给10.0.13.72服务器做本地解析,将node-10.0.13.72这个域名指向10.0.13.72即可
这是正常后的样子
3.2.离线安装
eshead的第二种安装方式-离线安装(推荐使用)
安装方式为:直接使用提供的编译之后的源码包解压之后修改配置文件即可
资源包地址:
链接:https://pan.baidu.com/s/1X_6I4nzFA8A4UFIcZvEBJg?pwd=zska
提取码:zska将下载好的压缩包上传至服务器
#解压到/data目录下
tar -zxvf elasticsearch-head-compile-after.tar.gz -C /data/
#切换工作目录
cd /data/elasticsearch-head
#编辑配置文件
vim Gruntfile.js
#用/搜索9100,找到connect中的options配置块,添加hostname配置项,hostname后跟本机IP即可,添加完成即可保存退出
#修改app.js
cd /data/elasticsearch-head/_site
vim app.js
#使用/匹配app-base_uri,点击n查找下一个找到http://localhost:9200修改为es配置文件中定义的node名称即可,我的叫node-10.0.13.72
#修改前:http://localhost:9200
#修改后:http://node-10.0.13.72:9200
#启动方式,无需es用户
cd /data/elasticsearch-head/node_modules/grunt/bin
nohup ./grunt server >/dev/null 2>&1 &
#查看9100端口是否运行
ss -antpl | grep 9100
#停止方法,使用ss命令过滤出9100端口信息,awk过滤出pid交给传参使用kill杀死进程
ss -antpl | grep 9100 | awk '{print $NF}' | awk -F',' '{print $2}' | awk -F'=' '{print $2}' | xargs -i kill -9 {}
#前端访问测试,浏览器访问10.0.13.72:9100
注意显示未连接是因为http栏内,10.0.13.72是无法解析node-10.0.13.72这个域名是指向谁的,所以无法连接
解决方案有三种:
- 手动将http栏内修改为对应IP地址+port
- 修改后台app.js文件为对应IP+port
- 给10.0.13.72服务器做本地解析,将node-10.0.13.72这个域名指向10.0.13.72即可
- 单机:
- 集群:
六、部署kibana
主机名 | IP | 系统版本 |
---|---|---|
elasticsearch-1 | 10.0.13.73 | CentOS Linux release 7.5.1804 (Core) |
集群部署一台即可
kibana版本: kibana-7.17.5-linux-x86_64(与es版本对应)
下载地址为:https://artifacts.elastic.co/downloads/kibana/kibana-7.17.5-linux-x86_64.tar.gz
下载失败则使用以下下载地址:
链接:https://pan.baidu.com/s/1MgPfnAG0f2XoAajH70ycAA?pwd=zska
提取码:zska
1.解压软件
#解压到/data/es目录也就是es用户的家目录内
tar -zxvf kibana-7.17.5-linux-x86_64.tar.gz -C /data/es/
#切换工作目录
cd /data/es
#改名,方便后续操作
mv kibana-7.17.5/ kibana
#更改用户权限
chown -R es.es kibana/
2.修改配置文件
#切换工作目录
cd /data/es/kibana
#将server.host参数后改为本机IP
#改之前:# server.host: "localhost"
#改之后:server.host: "10.0.13.73"
#使用/检索elasticsearch.host,集群填写master的地址即可
改之前:#elasticsearch.hosts: ["http://localhost:9200"]
改之后:elasticsearch.hosts: ["http://10.0.13.73:9200"]
#使用/检索locale,修改为zh-CN即可
改之前:# i18n.locale: "en"
改之后:i18n.locale: "zh-CN"
改完保存退出即可,注意10.0.13.73为本机IP
3.启动及停止
#切换用户
su - es
#切换工作目录
cd /data/es/kibana
#启动
nohup bin/kibana >/dev/null 2>&1 &
#停止方法,首先使用ps过滤出node进程的pid
ps -ef | grep node
#再使用kill命令,停止该进程
kill -9 <pid>
#推荐使用ss命令查看对应端口信息及pid进行kill
ss -antpl | grep 5601 | awk '{print $NF}' | awk -F',' '{print $2}' | awk -F'=' '{print $2}' | xargs -i kill -9 {}
4.访问测试
访问本机IP:5601
七、部署logstash
主机名 | IP | 系统版本 |
---|---|---|
elasticsearch-1 | 10.0.13.73 | CentOS Linux release 7.5.1804 (Core) |
集群部署一台即可
logstash版本信息为: logstash-7.17.5-linux-x86_64
官网下载地址为: https://artifacts.elastic.co/downloads/logstash/logstash-7.17.5-linux-x86_64.tar.gz
若下载失败请使用以下地址下载:
链接:https://pan.baidu.com/s/1zgg6Xhb9rfvR2YHZV8qL2w?pwd=zska
提取码:zska
1.解压软件
#解压至/data/es下,也就是es用户的家目录
tar -zxvf logstash-7.17.5-linux-x86_64.tar.gz -C /data/es/
#切换工作目录
cd /data/es
#改名,方便后续操作
mv logstash-7.17.5/ logstash
#制作软链
ln -s /data/es/logstash/bin/logstash /usr/local/bin/logstash
2.安装grok组件
logstash的grok的功能支持将非格式化的数据采集成格式化数据。
有对采集数据进行分析,过滤的需求可以进行下载,否则则可以跳过
2.1在线安装
在线安装方式网速较慢不推荐使用
#切换工作目录
cd /data/es/logstash
#编辑下载源
#改之前: source "https://rubygems.org"
#改之后: source "https://gems.ruby-china.com/"
#镜像源不一定哪个好使,推荐多试几个
cd /data/es/logstash
bin/logstash-plugin install logstash-filter-grok
看到successful即代表下载成功
八、部署filebeat
需要被采集数据服务器,采用filebeat服务来收集数据并发送到logstash服务器,再由logstash输出到elasticsearch集群内。
1.下载并解压
filebeat部署在需要被采集日志的服务器内,用于采集本机日志发送到logstash服务器
filebeat官网下载地址,根据elasticsearch及logstash的版本下载对应的版本即可
filebeat版本信息
filebeat-7.17.5-linux-x86_64
下载地址:
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.5-linux-x86_64.tar.gz
若以上不可用时,使用以下链接下载:
链接:https://pan.baidu.com/s/1ji0x66_Kb-jxsYV6Rv9eJA?pwd=zska
提取码:zska
#解压到/data/es下,即es用户的家目录,或自定义目录即可
tar -zxvf filebeat-7.17.5-linux-x86_64.tar.gz -C /data/es/
#切换工作目录
cd /data/es
#改名,方便后续操作
mv filebeat-7.17.5-linux-x86_64/ filebeat
九、配置ELK
将所有需要使用到的服务部署完成以后
即可开始将这些服务关联起来
接下来将对logstash及filebeat进行基础的配置
1.配置并启动filebeat
#切换工作目录
cd /data/es/filebeat
#备份配置文件
mv filebeat.yml filebeat.yml_bak
#编辑配置文件
vim filebeat.yml
#添加以下内容,path后跟的是日志文件的绝对路径,output下的地址为logstash的地址,改为自己的IP即可
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/nginx/logs/access.log
output.logstash:
hosts: ["10.0.13.73:5044"]
#启动filebeat,后台启动
nohup ./filebeat &
#在默认的情况下,filebeat 会自动寻找定义在 filebeat.yml 文件里的配置。如果我们的配置文件是另外的名字,我们可以通过如下的命令来执行 filebeat:
nohup ./filebeat -c YourYmlFile.yml &
#可以通过查看filebeat的日志查看服务是否启动成功
tail -1000f logs/filebeat
#停止后台启动filebeat方法,前台启动直接ctrl + c,或ctrl + z 后执行 kill -9 %1
ps -ef | grep -w filebeat | grep -v grep | awk '{print $2}' | xargs -i kill -9 {}
2.配置logstash
回到logstash服务器,对logstash服务进行配置,将从filebeat收集来的数据输出到elasticsearch集群
#切换工作目录
cd /data/es/logstash/config
#编辑配置文件,文件名自取即可
vim filebeat.conf
#添加以下内容,output配置栏内的hosts记得改为自己真实的elasticsearrch单机/集群地址
#我的filter配置是针对于nginx做的格式化,如果你使用的是别的日志,请按照个人喜好进行格式化
input {
beats {
port => 5044
}
}
filter {
grok {
match => [
"message" => "%{IPORHOST:clientip} \- \- \[%{HTTPDATE:time_local}\] \"(?:%{WORD:method} %{NOTSPACE:request}(?:HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:status} %{NUMBER:body_bytes_sent} %{QS:http_referer}"
]
}
date {
match => ["timestamp_string", "ISO8601"]
}
}
output {
elasticsearch {
hosts => ["http://10.0.13.73:9200","http://10.0.13.75:9200","http://10.0.13.76:9200"]
index => "logstash-%{+YYYY.MM.dd}"
action => "index"
}
stdout {
codec => rubydebug
}
}
#检测配置文件是否合法logstash
logstash -f filebeat.conf -t
#如图即代表检测合法,开始启动
logstash -f filebeat.conf
#后台启动
nohup logstash -f filebeat.conf &
#停止后台启动logstash方法,前台启动直接ctrl + c,或ctrl + z后执行kill -9 %1
ps -ef | grep -w logstash | grep -v grep | awk '{print $2}' | xargs -i kill -9 {}
如图代表启动完成,5044监听端口已经启动,接下来可以启动服务查看是否能够正常接受日志
可以看到日志接受正常,接下来访问eshead查看数据是否输出到es集群
我当前编写本文档的时间为2022.12.28,所以索引的名称为:logstash-2022.12.28
查看数据后,发现产生数据与终端显示无差别,代表我们搜集日志成功了
3.配置kibana
再进行完以上的测试之后即可开始将传输来的数据进行页面上的展示
- 登录kibana页面:kibanaIP:5601,并点击左选项栏的Stack Management
- 点击 < 索引模式>
- 点击创建索引模式
- 名称栏填写 logstash*,这样就可以匹配所有以logstash开头的索引,时间戳字段选择 ‘我不想使用时间筛选’ 根据个人情况决定 而这些索引库存储的都是我们传输的日志信息,如果你得logstash定义的索引库名称不是以logstash开头,请以实际为准,截图显示已存在是因为我已经创建过了,输入完成后点击 创建索引模式即可
- 回到首页点击Discover,选择准确的时间段,即可查看索引库内的信息
- 点击文档的下展符号即可查看文档信息的详细内容
至此ELK基础配置完成,kibana支持各类视图分析,可以自己研究一下,但关于日志实际用途不大