Centos7搭建Elasticsearch + Logstash + filebeat + Kibana
一、什么是ELK
ELK是Elasticsearch + Logstash + Kibana 这种架构的简写。这是一种日志分平台析的架构。
二、ELK常见的几种架构
1 Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。
2 Elasticsearch + Logstash + filebeat + Kibana
与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式。当logstash出现故障, 会造成日志的丢失。
3 Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如kafka) + Kibana
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。比较推荐这种方式。
说明: logstash节点和elasticsearch节点可以根据日志量伸缩数量, filebeat部署在每台需要收集日志的服务器上。
下面介绍一下第二种方式Elasticsearch + Logstash + filebeat + Kibana
1、搭建ELK-ElasticSearch7.5
JDK1.8!!!
新建用户 useradd es
修改用户可创建文件数目
vi /etc/security/limits.conf
# 然后添加如下内容
es soft nproc 50000
es hard nproc 50000
es soft nofile 65535
es hard nofile 65535
修改最大内存限制
vi /etc/sysctl.conf
# 添加下面的配置
vm.max_map_count=655360
# 保存好后执行命令
sysctl -p
下载安装包并解压
# 进入安装目录
cd /opt
# 下载该文件
wget 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz'
# 解压该文件
tar -zxf elasticsearch-7.5.1-linux-x86_64.tar.gz
# 给文件夹改变权限
chown -R es:es elasticsearch-7.5.1
# 进入es用户
su es
修改配置文件(config目录下的elasticsearch.yml)
#配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: cluster
#节点名称
node.name: node-1
#设置索引数据的存储路径
path.data: /opt/elasticsearch-7.5.1/node/data
#设置日志的存储路径
path.logs: /opt/elasticsearch-7.5.1/node/logs
#设置当前的ip地址,通过指定相同网段的其他节点会加入该集群中
network.host: 0.0.0.0
#设置对外服务的http端口
http.port: 9200
#设置节点之间交互的端口号
transport.tcp.port: 9300
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.seed_hosts: ["127.0.0.1:9300"]
#设置集群节点达到什么数量再启动本地恢复
gateway.recover_after_nodes: 1
启动
#执行启动,并后台运行
./bin/elasticsearch &
检查是否安装成功
- 浏览器登录刚才服务器ip加端口9200,能访问成功,既是启动成功。
- 看看是否节点显示正常 浏览器输入 ip:9200/_cat/nodes?v
2、搭建ELK-logstash7
- wget https://artifacts.elastic.co/downloads/logstash/logstash-7.0.0.tar.gz
- tar -xzvf logstash-7.0.0.tar.gz
- mv logstash-7.0.0.tar.gz /usr/local/logstash
读取文件直接发送到es
- 修改/usr/local/logstash/config/logstash-sample.conf
-
input {
#beats {
# port => 5044
#}
file {
path => "/var/log/httpd/access_log"
start_position => beginning
}
}output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][logstash]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
} - 检查配置文件是否正确:(假设当前目录为/usr/local/logstash/config/)
- ../bin/logstash -t -f logstash-sample.conf
启动:
../bin/logstash -f logstash-sample.conf
加载本文件夹所有配置文件启动:
../bin/logstash -f ./
或后台启动:
nohup ../bin/logstash -f config/ &
- 常用命令参数
-f:通过这个命令可以指定Logstash的配置文件,根据配置文件配置logstash
-e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“” 则默认使用stdin作为输入,stdout作为输出)
-l:日志输出的地址(默认就是stdout直接在控制台中输出)
-t:测试配置文件是否正确,然后退出。
读取filebeat发送到es
filebeat端配置请参照本文开头的[安装filebeat]一文中的logstash相关部分
- 创建 /usr/local/logstash/config/logstash-filebeats.conf
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][logstash-filebeats]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
3、搭建ELK-kibana7
官网下载:https://www.elastic.co/cn/downloads/kibana
安装
tar -zxvf kibana-7.3.2-linux-x86_64.tar.gz
cd kibana-7.3.2-linux-x86_64
修改kibana相关配置
vim kibana.yml
修改server.host: "0.0.0.0"
elasticsearch.hosts: ["http://xxxx:9200"]
重启elasticsearch,然后启动kibana
最开始我们通过root用户来启动kibana会发现提示不应该使用root用户来运行它的,如果想用root来运行,必须明确指明--allow-root
来运行,这是kibana的安全保护机制,所以我们尽可能的不要使用root来启动kibana,当我们使用RPM方式安装kibana的时候,就默认给我们创建了名为kibana的用户,我们应当像管理Elasticsearch那样通过systemctl来管理kibana
sudo systemctl daemon-reload
sudo systemctl enable kibana.service
如果需要域名可以部署nginx做一下代理xxxx:5601
server {
listen 80;
server_name elk.ktyiqiao.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
ssl_certificate /data/ssl/ktyiqiao.com.pem;
ssl_certificate_key /data/ssl/ktyiqiao.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
location / {
proxy_pass http://xxxx:5601$request_uri;
auth_basic "登陆验证";
auth_basic_user_file /etc/nginx/htpasswd;
#/etc/nginx/htpasswd是密码文件,路径自定义
}
}
https更安全还有登陆验证!
4、安装filebeat
1、安装filebeat
本次采用yum安装,需要配置yum源
cd /etc/yum.repos.d
vim 文件名.repo
然后将下述内容添加到文件中,保存退出
[filebeat]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=0
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
yum安装filebeat
yum -y install filebeat
rpm -qa filebeat
安装好之后可用whereis filebeat查看下安装情况,方便找配置文件
配置filebeat
filebeat配置文件: filebeat.yml
find / -name filebeat.yml
vim /etc/filebeat/filebeat.yml 需要修改的地方如下
filebeat.inputs:
- type: log
enabled: true
paths:
- /xxxx/logs/*.log
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
output.logstash:
# The Logstash hosts
hosts: ["xxxx:5044"]
配置好之后启动filebeat
cd /usr/share/filebeat/bin
后台启动filebeat
如果直接启动运行会报错:
loading config file: stat filebeat.yml: no such file or direct
是因为未找到配置文件所致,这里采取简单的方法:在运行时直接加上配置文件路径
./filebeat -e -c /etc/filebeat/filebeat.yml
注意:filebeat没有监听端口,主要看日志和进程
后台方式启动filebeat:
./filebeat -e -c filebeat.yml >/dev/null 2>&1 & 将所有标准输出及标准错误输出到/dev/null空设备,即没有任何输出
./filebeat -e -c filebeat.yml > filebeat.log &
停止filebeat:查找进程ID并kill掉:
ps -ef |grep filebeat<br>kill -9 进程号
另外filebeat用法可以参考https://blog.csdn.net/maquealone/article/details/93200288
就此Elasticsearch + Logstash + filebeat + Kibana搭建完毕!
本文地址:https://blog.csdn.net/GGGoodLuck/article/details/108197433
推荐阅读
-
Linux系统下 centos7下搭建ElasticSearch中间件及常用接口演示
-
[转]ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
-
Elasticsearch、Logstash、Kibana手把手教你添加密码设置
-
Centos7搭建Elasticsearch + Logstash + filebeat + Kibana
-
ELk(Elasticsearch, Logstash, Kibana)的安装配置
-
windows2016_x64搭建ELK(datasource->filebeat->logstash->elasticsearch->kibana)
-
Linux系统:centos7下搭建ElasticSearch中间件,常用接口演示
-
docker-compose 部署ELK(logstash->elasticsearch->kibana)
-
docker-compose 部署ELK(logstash->elasticsearch->kibana)
-
Linux系统下 centos7下搭建ElasticSearch中间件及常用接口演示