笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述Centos7环境ELK搭建相关的知识,希望能为你提供帮助。
一、ELK简介官网:??https://www.elastic.co/??
官网权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
安装指南:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
?ELK?是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。
?Elasticsearch?是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和java API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
?Logstash?是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
?Kibana?是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据
?Filebeat
?随附可观测性和安全数据源模块,这些模块简化了常见格式的日志的收集、解析和可视化过程,只需一条命令即可。功能与logstash对比更轻便。
二、架构
三、环境?Centos7 三台(两台client、一台server)?
?IP:192.168.32.100 安装: elasticsearch、logstash、Kibana、nginx
?
?IP:
192.168.32.101 安装:
elasticsearch、 logstash?
?IP:
192.168.32.102 安装:
elasticsearch、 Filebeat?
四、安装与配置安装配置elasticsearch配置yum云或直接wget安装
安装elasticsearch的yum源的密钥(这个需要在所有服务器上都配置)
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
配置elasticsearch的yum源
# vim /etc/yum.repos.d/elasticsearch.repo
在elasticsearch.repo文件中添加如下内容
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
yum install -y elasticsearch //也可以直接下载rpm文件,然后安装
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.23.rpm
rpm -ivh elasticsearch-6.8.23.rpm
安装java环境
配置环境变量
vi /etc/profile
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
安装java环境(java环境必须是1.8版本以上的)
官网下载地址:https://www.oracle.com/java/technologies/downloads/#java8
rpm -ivh jdk-8u321-linux-x64.rpm
java -version//查看java版本
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)
配置elasticsearch
主节点100配置
# vim /etc/elasticsearch/elasticsearch.yml
找到配置文件中的cluster.name,打开该配置并设置集群名称
cluster.name: demon #自定义集群名称
path.data: /var/lib/elasticsearch #(存放data数据的默认目录)
node.master: true #//意思是该节点为主节点
node.name: es-master//自定义节点主机名
node.data: false
network.host: 0.0.0.0#根据实际需求可指定本机IP
discovery.zen.ping.unicast.hosts: ["192.168.32.100","192.168.32.101","192.168.32.102"]
http.port: 9200
在101和102上同样编辑配置文件
vi /etc/elasticsearch/elasticsearch.yml//增加或更改
找到配置文件中的cluster.name,打开该配置并设置集群名称
cluster.name: demon #自定义集群名称
path.data: /var/lib/elasticsearch #(存放data数据的默认目录)
node.name: es-slaver//自定义节点主机名
node.master: false
node.data: true #//意思是该节点为从节点
network.host: 0.0.0.0#根据实际需求可指定本机IP
discovery.zen.ping.unicast.hosts: ["192.168.32.100","192.168.32.101","192.168.32.102"]
http.port: 9200
修改data存放目录属主属组
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch
防火墙放通
关闭防火墙
systemctl stop firewalld //新手建议直接关闭防火墙
或者放通端口
firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --add-port=9300/tcp --permanent
firewall-cmd --reload
??启动服务??
systemctl enable elasticsearch.service//开机自启
systemctl start elasticsearch.service//启动服务
curl命令查看状态
curl localhost:9200/_cluster/health?pretty 健康检查
curl localhost:9200/_cluster/state?pretty集群详细信息
详细命令参考:https://zhaoyanblog.com/archives/732.html
注意事项需要修改几个参数,不然启动会报错
vim /etc/security/limits.conf
在末尾追加以下内容(*为所有用户,也可以指定为对应用户)
* soft nofile 65536
* hard nofile 65536
* soft nproc 2048
* hard nproc 2048
* soft memlock unlimited
* hard memlock unlimited
安装配置kibana配置yum云或直接wget安装
kibana只需100主上安装提供界面服务
yum install -y kibana
若速度太慢,可以直接下载rpm包
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.8.23-x86_64.rpm
rpm -ivh kibana-6.8.23-x86_64.rpm
安装x-pack
#根据是否登录添加账号验证需求在去官网下载安装,因为需要付费这里不介绍安装过程
配置kibana
配置文件
vim /etc/kibana/kibana.yml
server.port: 5601
server.host: 192.168.32.100#指定本机地址
elasticsearch.hosts: ["http://192.168.32.100:9200"]#指定本机elasticsearch端口
logging.dest: /var/log/kibana.log
创建kibana.log文件修改主机属组
touch /var/log/kibana.log
chown kibana: /var/log/kibana.log
启动服务
systemctl enable kibana
systemctl start kibana
安装配置logstash
配置yum云或直接wget安装
以下在100、101上执行
logstash目前不支持java9
直接yum安装(配置源同前面es的源)
yum install -ylogstash //如果慢,就下载rpm包
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.8.23.rpm
rpm -ivh logstash-6.8.23.rpm
?主节点100配置调测logstash?(主节点可不配置该步骤)
编辑配置文件 vi /etc/logstash/conf.d/syslog.conf//加入如下内容
input
syslog
type =>
"system-syslog"
port =>
10514
output
elasticsearch
hosts =>
["192.168.32.100:9200"]
index =>
"system-syslog-%+YYYY.MM"
检测配置文件
检测配置文件是否配置正确
/usr/share/logstash/bin/logstash -t -f /etc/logstash/conf.d/nginx.conf
Config Validation Result: OK.
前台启动logstash
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/nginx_access.conf
测试截图
配置/etc/rsyslog.conf 传输端口 (主节点需配置)
*.* @@127.0.0.1:10514 #未配置调测logstash可忽略,@@代表TCP通信,@代表UDP
*.* @@192.168.32.101:10514#配置101从节点接收端口
重启服务
systemctl restart rsyslog
?从节点101配置logstash?
编辑配置文件 vi /etc/logstash/conf.d/syslog.conf//加入如下内容
input
syslog
type =>
"system-syslog"
port =>
10514
output
elasticsearch
hosts =>
["192.168.32.100:9200"]#配置主从节点ip均可
index =>
"system-syslog-%+YYYY.MM"
2.检测文件是否正确
cd /usr/share/logstash/bin
./logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/syslog.conf --config.test_and_exit
3.修改文件属组
chown -R logstash:root /var/log/logstash
chown -R logstash:root /var/lib/logstash/
4.配置/etc/rsyslog.conf 传输端口
/etc/rsyslog.conf 传输端口
*.* @@192.168.32.100:10514#配置100接收端口
重启服务
systemctl restart rsyslog
防火墙放通
关闭防火墙
systemctl stop firewalld //新手建议直接关闭防火墙
放通端口
firewall-cmd --add-port=9600/tcp --permanent
firewall-cmd --add-port=10514/tcp --permanent
firewall-cmd --reload
启动服务
systemctl enable logstash
systemctl start logstash
logstash配置nginx日志?从节点101安装配置nginx?
1.yum安装简单安装nginx
yum install -y nginx
2.配置反向代理//80端口需检测是否被占用,防火墙是否放通
vi /etc/nginx/conf.d/kibanatest.conf
server
listen80;
server_namewww.kibanatest.com;
location /
proxy_pass http://192.168.32.100:5601;
#kibana前台页面ip及端口
indexindex.html index.htm index.jsp;
查看配置文件是否正常
nginx -t
启动服务
systemctl enable nginx
systemctl start nginx
?配置logstash采集文件 /etc/logstash/conf.d/nginx_access.conf?
input
file
path =>
"/var/log/nginx/access.log"#指定logstash检测nginx日志路径
start_position =>
"beginning"
type =>
"nginx_access_log"
filter
grok
match =>
"message" =>
"%IPORHOST:clientip %USER:ident %USER:auth \\[%HTTPDATE:timestamp\\] \\"%WORD:verb %DATA:request HTTP/%NUMBER:httpversion\\" %NUMBER:response:int (?:-|%NUMBER:bytes:int) \\"(?:-|%DATA:referrer)\\" \\"%DATA:user_agent\\" (?:%IP:proxy|-) %DATA:upstream_addr %NUMBER:upstream_request_time:float %NUMBER:upstream_response_time:float"
match =>
"message" =>
"%IPORHOST:clientip %USER:ident %USER:auth \\[%HTTPDATE:timestamp\\] \\"%WORD:verb %DATA:request HTTP/%NUMBER:httpversion\\" %NUMBER:response:int (?:-|%NUMBER:bytes:int) \\"%DATA:referrer\\" \\"%DATA:user_agent\\" \\"%DATA:proxy\\""
if [request]
urldecode
field =>
"request"
ruby
init =>
"@kname = [url_path,url_arg]"
code =>
"
new_event = LogStash::Event.new(Hash[@kname.zip(event.get(request).split(?))])
event.append(new_event)"
if [url_arg]
ruby
init =>
"@kname = [key, value]"
code =>
"event.set(url_args, event.get(url_arg).split(&
).collect |i| Hash[@kname.zip(i.split(=))])"
geoip
source =>
"clientip"
useragent
source =>
"user_agent"
target =>
"ua"
remove_field =>
"user_agent"
date
match =>
["timestamp","dd/MMM/YYYY:HH:mm:ss Z"]
locale =>
"en"
mutate
remove_field =>
["message","timestamp","request","url_arg"]
output
elasticsearch
hosts =>
"192.168.32.101:9200"#本机地址及端口
index =>
"nginx-access-log-%+YYYY.MM.dd"
#stdout#codec =>
rubydebug#
重启服务
测试配置文件
/usr/share/logstash/bin/logstash -t -f /etc/logstash/conf.d/nginx.conf
重启服务
systemctl restart logstash
查看是否有日志收集
curl localhost:9200/_cat/indices?v
安装配置Beats采集日志配置yum云或直接wget安装
102上安装filebeat
yum install -y filebeat
或者
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.8.23-x86_64.rpm
rpm -ivhfilebeat-6.8.23-x86_64.rpm
配置filebeat
配置文件
vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true#默认为false,修改为true则启用该配置
paths:
- /var/log/messages#配置采集路径为message日志
#正常情况只需配置enabled: true,paths采集路径,及elasticsearch端口
#就能正常启动采集,账号密码根据是否有安装x-pack自行选择配置。
#以下配置项根据需求配置
fields:
filetype: test1#自定义字段,用来区分多个类型日志
fields_under_root: true
#如果该选项设置为true,则新增fields成为顶级目录,而不是将其放在fields目录下
#============================= Filebeat modules ===============================
filebeat.config.modules:
path: $path.config/modules.d/*.yml
reload.enabled: false
#==================== Elasticsearch template setting ==========================
setup.template.settings:
index.number_of_shards: 1
#index.codec: best_compression
#_source.enabled: false
#================================ Outputs =====================================
#直接将log数据传输到Elasticsearch
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["localhost:9200"]
username: "elastic"
password: "elastic"
#----------------------------- Logstash output --------------------------------
#将log数据传输到logstash#先启动logstash,不然的话filebeat会找不到logstash的5044端口
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
启动服务
systemctl enable filebeat
systemctl start filebeat
五、kibana前台页面配置
根据nginx配置的反向代理登录前台页面
www.kibanatest.com
或者直接根据ip:port登录
http://192.168.32.100:5601
创建收集日志
【Centos7环境ELK搭建】
展示日志收集信息
推荐阅读
- 数据仓库的数据模型(拉链表-能追踪历史信息的实现方案)实践杂谈
- 北亚数据恢复IBM DS系列存储服务器硬盘故障导致映射出错,业务下线的数据恢复案例
- WGCLOUD和ZABBIX两个运维软件如何选型
- Hadoop-3.1.3高可用集群部署
- linux基础用户权限管理
- 13个免费数据恢复软件
- yum安装mysql5.7报密钥已过期的解决方案
- Docker-compose快速编排
- 游戏开发新手入门教程9:游戏积木之逻辑