🏡作者主页:点击!
🐧Linux基础知识(初学):点击!
🐧Linux高级管理防护和群集专栏:点击!
🔐Linux中firewalld防火墙:点击!
⏰️创作时间:2024年7月30日15点15分
目录
1.实验环境
2.环境准备
部署Elasticsearch
Node1
Node2
3.查看节点信息
4.查看群集的健康情况
5.查看群集的状态信息
安装Elasticsearch-head插件
1.安装node
2.安装phantomjs
3.创建索引
Logstash安装及使用方法
安装Kibana
添加system索引
添加apache日志
总结
日志分析已成为企业监控、故障排查和性能优化的重要组成部分。ELK(Elasticsearch、Logstash 和 Kibana)堆栈作为一种强大的开源解决方案,提供了高效的日志收集、存储和可视化功能,使用户能够快速获取关键业务洞察。本文将详细介绍如何在 CentOS 系统中部署 ELK 日志分析系统,
1.实验环境
配置ELK日志分析集群
使用logstash收集日志
使用kibana分析日志
2.环境准备
所需安装包
node1
elasticsearch-5.5.0.rpm v8.2.1.tar.gz
kibana-5.5.1-x86_64.rpm
elasticsearch-head.tar.gz
node-v8.2.1.tar.gz
phantomjs-2.1.1-linux-x86_64.tar.bz2
apache
logstash-5.5.1.rpm
所有服务器上操作
关闭防火墙和Selinux 配置hosts文件
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
vim /etc/hosts
192.168.192.113 node1
192.168.192.114 node2
192.168.192.116 apache
yum install -y lrzsz
部署Elasticsearch
在 Node1 和 Node2 节点上都需要部署 lasticsearch
Node1
检测java环境
[root@node1 ~]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
如果没有java的话安装
yum install -y java-openjdk
上传安装包
[root@node1 ~]# ls
elasticsearch-5.5.0.rpm v8.2.1.tar.gz
rpm -ivh elasticsearch-5.5.0.rpm
编辑配置文件
自己打开配置文件一个个比对找,行数我已经标出
vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: my-elk-cluster # 集群名称
23 node.name: node1 # 节点名称
33 path.data: /data/elk_data # 数据存储路径
37 path.logs: /var/log/elk_logs # 日志存储路径
43 bootstrap.memory_lock: false # 是否锁定内存以避免交换
55 network.host: 0.0.0.0 # 监听所有网络接口
59 http.port: 9200 # HTTP 服务端口
68 discovery.zen.ping.unicast.hosts: ["node1", "node2"] # 发现其他节点的地址也可以填写ip地址
重新加载系统管理器配置,设置 Elasticsearch 服务为开机自启。
systemctl daemon-reload
systemctl enable elasticsearch.service
创建数据和日志目录
将数据和日志目录的所有权更改为 elasticsearch 用户,以确保 Elasticsearch 有权限访问这些目录
mkdir -p /data/elk_data
mkdir -p /var/log/elk_logs
chown elasticsearch:elasticsearch /data/elk_data/
chown elasticsearch:elasticsearch /var/log/elk_logs
systemctl start elasticsearch
netstat -nultp | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 1264/java
启动 Elasticsearch 服务。
Node2
方法一样不过多介绍
[root@node1 ~]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
yum install -y java-openjdk
这里需改更改节点为node2
vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: my-elk-cluster
23 node.name: node2 //这里需要更改
33 path.data: /data/elk_data
37 path.logs: /var/log/elk_logs
43 bootstrap.memory_lock: false
55 network.host: 0.0.0.0
59 http.port: 9200
68 discovery.zen.ping.unicast.hosts: ["node1", "node2"] //或者输入IP地址
systemctl daemon-reload
systemctl enable elasticsearch.service
vim /etc/elasticsearch/elasticsearch.yml
mkdir -p /data/elk_data
mkdir -p /var/log/elk_logs
chown elasticsearch:elasticsearch /data/elk_data/
chown elasticsearch:elasticsearch /var/log/elk_logs
systemctl start elasticsearch
netstat -nultp | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 1384/java
3.查看节点信息
Web 链接 http://192.168.192.113:9200,可以查看节点Node1 的信息
node2
检查群集的健康状态,可以看到status为绿色表示节点健康运行
在浏览器中输入
4.查看群集的健康情况
http://192.168.192.113:9200/_cluster/health?pretty
5.查看群集的状态信息
http://192.168.192.113:9200/_cluster/state?pretty
安装Elasticsearch-head插件
在Node1上安装
安装 Elasticsearch-head 需要提前安装 node 和 phantomjs
1.安装node
编译安装node 时间可以有多久 大概20分钟左右
yum install -y gzip
ls
node-v8.2.1.tar.gz
tar zxf node-v8.2.1.tar.gz
ls
node-v8.2.1
node-v8.2.1.tar.gz
cd node-v8.2.1
./configure && make && make install
2.安装phantomjs
[root@node1 ~]# ls
elasticsearch-head.tar.gz node-v8.2.1.tar.gz
elasticsearch-5.5.0.rpm node-v8.2.1
phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 ~]# tar -jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
[root@node1 ~]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/
[root@node1 bin]# ls
phantomjs
[root@node1 bin]# cp phantomjs /usr/local/bin
开始安装
cd
[root@node1 ~]# tar -zxf elasticsearch-head.tar.gz
[root@node1 ~]# cd elasticsearch-head
[root@node1 elasticsearch-head]# npm install
修改Elasticsearch 主配置文件
vim /etc/elasticsearch/elasticsearch.yml
//加入一下内容
90 http.cors.enabled: true # 启用 CORS
91 http.cors.allow-origin: "*" # 允许所有来源的请求
systemctl restart elasticsearch
执行命令npm run start &
cd elasticsearch-head //必须进入这个目录执行命令
[root@node1 elasticsearch-head]# npm run start &
[6] 51980
[root@node1 elasticsearch-head]#
> elasticsearch-head@0.0.0 start /root/elasticsearch-head
> grunt server
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
elasticsearch-head 监听的端口是 9100
通过Elasticsearch-head 查看 Elasticsearch信息。可以看到群集很健康,健康值为 green 绿色。单击数据浏览,可以查螺引信息,此时索引为空
浏览器访问
http://192.168.192.113:9100/
3.创建索引
Elasticsearch 中的 index-demo 索引添加了一个文档
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
{
"_index" : "index-demo",
"_type" : "test",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"created" : true
}
"_index":文档所在的索引。
"_type":文档的类型。
"_id":文档的唯一标识符。
"_version":文档的版本号。
"result":操作结果,表示文档已成功创建。
"_shards":分片信息,显示总分片数、成功的分片数和失败的分片数。
"created":布尔值,表示文档是否被创建。
刷新浏览器可以看到创建成功的目录
点击概述 ,还可以看到索引默认被分片成5个篇,且存在一个副本
Logstash安装及使用方法
logstash 一般部署在需要监控其日志的服务器中,在本案例中,Logsiash 部署在 Apache 服务器上解收集 Apsche 服务器的日志信息并发送到 Elasticserch 中,
安装在被监控端,
本案例安装在apache服务器上,用于收集apache服务器的日志信息发送到Elasticsearch中
以下在apache服务器中安装
1.检测java环境
[root@node1 ~]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
yum install -y java-openjdk
报错解决
root@apache ~]# rpm -ivh logstash-5.5.1.rpm
警告:logstash-5.5.1.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:logstash-1:5.5.1-1 ################################# [100%]
Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME.
警告:%post(logstash-1:5.5.1-1.noarch) 脚本执行失败,退出状态码为 1
下载java即可
2.上传rpm包
[root@apache ~]# ls
logstash-5.5.1.rpm
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
测试 Logstash
logstash -e 'input { stdin{} } output { stdout{} }'
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
在Elsticsearch 中查看Logstesh 新增加的索引
配置 Logstash 以读取系统日志
cd /etc/logstash/conf.d/
[root@apache conf.d]# chmod o+r /var/log/messages
[root@apache conf.d]# ll /var/log/messages
-rw----r--. 1 root root 41906 7月 26 13:44 /var/log/messages
[root@apache conf.d]# touch system.conf
[root@apache conf.d]# vim system.conf
vim system.conf
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch{
hosts => ["192.168.192.113:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
systemctl restart logstash
ls
system.conf
这时候系统日志信息就添加进来了
完成后,通过浏览器查看Elasticsearch 的信息
安装Kibana
Kibana 是一个开源的分析和可视化平台,通常与 Elasticsearch 和 Logstash 一起使用,形成 ELK 堆栈。它允许用户通过图形界面轻松地探索和可视化存储在 Elasticsearch 中的数据。
在Node1上安装
首先上传rpm包
kibana-5.5.1-x86_64.rpm
rpm -ivh kibana-5.5.1-x86_64.rpm
systemctl enable kibana
设置主配置文件
vim /etc/kibana/kibana.yml
2 server.port: 5601
7 server.host: "0.0.0.0"
21 elasticsearch.url: "http://192.168.192.113:9200"
30 kibana.index: ".kibana"
验证 Kibana、通过浏览器访问
http://192.168.192.113:5601
添加system索引
添加一个
这时候就可以查看图表和 系统有关的日志信息了
添加apache日志
将 apache 服务器的日志添加到 Elasticsearch 并通过 Kibana 显示
ip地址记得更换
cd /etc/logstash/conf.d/
vim apache_log.conf
//加入一下内容
input {
file {
path => "/var/log/httpd/access_log"
type => "access"
start_position => "beginning"
}
file {
path => "/var/log/httpd/error_log"
type => "error"
start_position => "beginning"
}
}
output {
if [type] == "access" {
elasticsearch {
hosts => ["192.168.192.113:9200"]
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.192.113:9200"]
index => "apache_error-%{+YYYY.MM.dd}"
}
}
}
4.编写脚本
用于启动 Logstash 并加载指定的配置文件。
通过这个脚本快速启动 Logstash 处理 Apache 日志了。
vim /elk.sh
#!/bin/bash
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/apache_log.conf
wq
chmod a+x /elk.sh
. /elk.sh &
访问查看索引是否创建成功
http://192.168.192.113:9100/
回到kibana
如果想要添加其他服务的日志信息也是一样的!
总结
通过本教程,我们详细探讨了在 CentOS 系统中部署 ELK 日志分析系统的各个步骤。我们从环境准备、组件安装到配置与实际应用,全面覆盖了这一强大工具的使用方法。ELK 堆栈不仅提升了日志管理的效率,也为数据分析提供了丰富的可视化手段。希望本文能够帮助您更好地理解和应用 ELK 系统,助力您的业务决策和性能优化。
成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子