ELK介绍
- Elast icsearch:数据库,存数据 JAVA
- Logstash:收集日志,过滤数据 JAVA
- Kibana:分析,过滤,展示 JAVA
- Filebeat:收集日志,传输到Elasticsearch GO
日志收集分类
- 代理层:nginx,haproxy
- web层:nginx
- db层:mysql,redis,mongodb,elasticsearch
- 安装部署:es,kibana,nginx,filebeat
安装产品
- db01: 2G-4G内存,安装es,kibana,nginx,filebeat
官方演示地址
安装部署ELK
安装配置java
#yum安装
yum install java-1.8.0-openjdk.x86_64 -y
#查看版本
java -version
同步时间
yum install ntpdate -y
ntpdate time1.aliyun.com
安装配置elasticsearch
- 受log4j漏洞影响,不要在生产环境使用该版本
- 受log4j漏洞影响,不要在生产环境使用该版本
- 受log4j漏洞影响,不要在生产环境使用该版本
#db01
### 下载安装软件
mkdir -p /data/es_soft/
cd /data/es_soft/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.rpm
rpm -ivh elasticsearch-6.6.0.rpm
### 配置启动
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service
systemctl status elasticsearch.service
### 检查是否启动成功
ps -ef|grep elastic
lsof -i:9200
netstat -luntp|grep 9200
tail -f /var/log/elasticsearch/elasticsearch.log
修改配置文件如下
vi /etc/elasticsearch/elasticsearch.yml
node.name: node-1
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.51,127.0.0.1
http.port: 9200
修改参数
systemctl edit elasticsearch.service
[Service]
LimitMEMLOCK=infinity
#重启服务
systemctl daemon-reload
systemctl restart elasticsearch
#检查是否启动成功
ps -ef|grep elastic
lsof -i:9200
netstat -luntp|grep 9200
tail -f /var/log/elasticsearch/elasticsearch.log
安装配置es-head插件
以谷歌浏览器为例,打开以下地址(所有chrome内核的浏览器都适用)
#扩展程序
chrome://extensions/
- 开启开发者模式,将解压以后的文件夹导入,浏览器地址栏结尾处会出现图标点击使用
- es-head-0.1.4_0.crx.zip
- 连接成功
安装配置kibana
- 受log4j漏洞影响,不要在生产环境使用该版本
- 受log4j漏洞影响,不要在生产环境使用该版本
- 受log4j漏洞影响,不要在生产环境使用该版本
#db01
### 下载安装软件
mkdir -p /data/es_soft/
cd /data/es_soft/
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-x86_64.rpm
rpm -ivh kibana-6.6.0-x86_64.rpm
修改配置文件如下
vi /etc/kibana/kibana.yml
server.port: 5601
server.host: "10.0.0.51"
server.name: "db01"
elasticsearch.hosts: ["http://10.0.0.51:9200"]
kibana.index: ".kibana"
#6.7版本以后可以设置语言为简体中文
i18n.locale: "zh-CN"
启动kibana
#启动后浏览器访问该服务器的5601端口
systemctl start kibana.service
systemctl status kibana.service
netstat -lntup|grep 5601
安装配置nginx
#配置repos源
vi /etc/yum.repos.d/nginx.repo
[nginx-stabLe]
name=nginx stable repo
baseurL=http://nginx.org/packages/centos/$reLeasever/$basearch/
gpgcheck=1
enabLed=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-maintine]
name=nginx maintine repo
baseurl=http://nginx org/packages/maintine/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
安装nginx和httpd-tools
yum安装
yum install nginx httpd-tools -y
#启动nginx
systemctl start nginx
#压力测试
ab -n 100 -c 100 http://10.0.0.51/
#查看日志
tail -f /var/log/nginx/access.log
安装配置filebeat
-
受log4j漏洞影响,不要在生产环境使用该版本
-
受log4j漏洞影响,不要在生产环境使用该版本
-
受log4j漏洞影响,不要在生产环境使用该版本
#db01
### 下载安装软件
mkdir -p /data/es_soft/
cd /data/es_soft/
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.0-x86_64.rpm
rpm -ivh filebeat-6.6.0-x86_64.rpm
备份配置文件
cd /etc/filebeat/
cp filebeat.yml{,.bak}
filebeat配置日志收集
#修改配置文件
vi filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
output.elasticsearch:
hosts: ["10.0.0.51:9200"]
#启动服务
systemctl start filebeat.service
查看elasticsearch,kibana创建索引
可以在es-head查看到数据
kibana创建索引
选择索引
选择第一个,等待创建完成
可以查看到日志的数据
点击选项的add按钮过滤字段
查看效果
可以通过搜索添加条件来过滤数据
配置filebeat收集普通日志
修改nginx日志为json格式
vi /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#添加json日志格式
log_format json '{ "time_local": "$time_local", '
'"remote_addr": "$remote_addr", '
'"referer": "$http_referer", '
'"request": "$request", '
'"status": $status, '
'"bytes": $body_bytes_sent, '
'"agent": "$http_user_agent", '
'"x_forwarded": "$http_x_forwarded_for", '
'"up_addr": "$upstream_addr",'
'"up_host": "$upstream_http_host",'
'"upstream_time": "$upstream_response_time",'
'"request_time": "$request_time"'
' }';
# access_log /var/log/nginx/access.log main;
#修改为json格式日志
access_log /var/log/nginx/access.log json;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
重启nginx查看日志格式是否改变
#重启
systemctl restart nginx
#清空日志
> /var/log/nginx/access.log
#访问100次nginx
ab -n 100 -c 100 http://10.0.0.51/
#查看日志
tail -f /var/log/nginx/access.log
收集日志创建对应的索引
修改配置文件
vi /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.elasticsearch:
hosts: ["10.0.0.51:9200"]
删除数据
- Elasticsearch
- kibana
重启filebeat,制造日志
#重启
systemctl restart filebeat
#制造日志
ab -n 100 -c 100 http://10.0.0.51/
查看数据
- 数据已经拥有对应的字段
重复之前kibana创建索引的步骤重新创建索引后
filebeat修改默认索引模版
修改配置文件
vi /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.elasticsearch:
hosts: ["10.0.0.51:9200"]
index: "nginx-%{[beat.version]}-%{+yyyy.MM}"
#不添加以下参数会产生报错
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
setup.template.enabled: false
setup.template.overwrite: true
报错内容
- 需要设置关闭默认模版,并启用模版覆盖
- 官方文档: https://www.elastic.co/guide/en/beats/filebeat/6.6/elasticsearch-output.html
2020-06-01T22:05:19.920+0800 ERROR instance/beat.go:911 Exiting: setup.template.name and setup.template.pattern have to be set if index name is modified
删除elasticsearch,kibana数据,重启filebeat
#重启
systemctl restart filebeat.service
#生成新的日志
ab -n 100 -c 100 http://10.0.0.51/
重复之前kibana创建索引的步骤重新创建索引后
- 只剩配置的参数,隐藏了默认模版的大量参数
最后一次更新于2021-12-27 14:58
0 条评论