ELK日志监控部署(一)
es7.x配置文件讲解 https://blog.csdn.net/lukabruce/article/details/104814214。https://edu.hellobi.com/course/106/lessons登录名:21种犹豫。logstash配置文件参考:https://www.jianshu.com/p/25ed5ed46682。pcre 安装到 /usr/local/ 解包到
文章目录
一、ELK源码安装
elk官网https://www.elastic.co/
注意:elk里面的组件必须都是统一版本
本次安装
logstash 收集日志
elasticsearch建立索引
kibana视图展示
ELK学习链接:
https://edu.hellobi.com/course/106/lessons 登录名:21种犹豫
https://www.cnblogs.com/kevingrace/p/5919021.html
http://www.cnblogs.com/kevingrace/p/5919021.html
一、安装elasticsearch-7.x
1、介绍:(启动es内存不能小于2G)
es7.x配置文件讲解 https://blog.csdn.net/lukabruce/article/details/104814214
ELK套件(ELK stack)是指ElasticSearch、Logstash/filebeta和Kibana三件套。这三个软件可以组成一套日志分析和监控工具。
Logstash:负责在客户端的日志日志和数据处理,它支持日志过滤功能
filebeta: 和logstash一样都是收集日志工具,它是轻量级工具。
ElasticSearch(es):负责将logstash 收集的信息整理存储并建立索引
Kibana:是一个web界面,便于日志分析
logstash分为两部分:agent 和 indexer ,agent负责从客户端获取日志,indexer负责将得到的日志进行分析然后输出到es,一下是indexer的三部分
input: 负责从哪里获取日志数据
filter: 负责对日志数据进行分析和结构化
tput: 负责将结构化的数据存储进入elasticsearch
本案例使用版本:
服务端:ElasticSearch-5.3.1
服务端:Kibana-5.3.1
客户端:Logstash-5.3.1
1、创建es的运行用户这个用户需要能登陆系统(注意不能用root用户启动elasticsearch)
# useradd elk # 不要设置密码(ssh设置禁止空密码登录)
2、ElasticSearch和Logstash依赖于JDK,所以需要安装JDK1.8:
# yum -y install java-1.8.0-openjdk*
# java -version
3、安装ES
(1)安装elasticsearch
# useradd elk
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.1.tar.gz
# tar zxvf elasticsearch-5.3.1.tar.gz -C /usr/local/
es参数详解:https://blog.csdn.net/qq_21387171/article/details/53577115
es参数优化:https://www.cnblogs.com/zlslch/p/6478773.html
(2)修改配置文件
# vi /usr/local/elasticsearch-5.3.1/config/elasticsearch.yml
修改以下:
# 允许外部用户通过哪个地址访问我
network.host: 172.16.12.33 #监听本机地址
http.port: 9200 #监听端口
bootstrap.system_call_filter: false #因为centos6不支持SecComp,需要增加这一行
cluster.name: myes1 #自定义当前集群的名称
node.name: node-1 #自定义当前节点的名称
#bootstrap.mlockall:true #锁住内存,防止内存不够时自动使用交换分区并降低性能
cluster.initial_master_nodes: ["node-1"] # 指定主节点为当前节点
4、做一些elasticsearch 的优化配置,否则启动es会报错
(1) #vim /etc/security/limits.conf
* - nofile 65536 #修改文件句柄数
* soft memlock unlimited #添加,防止es锁定内存报错
* hard memlock unlimited #添加,防止es锁定内存报错
(2) #vim /etc/security/limits.d/90-nproc.conf
* soft nproc 2048 #修改
(3) #vim /etc/sysctl.conf
vm.max_map_count=655350 #增加
(4) 让配置生效
# sysctl -p
[root@jxq-c2-16-2 ~]# sysctl -a|grep "vm.max_map" #查看优化
vm.max_map_count = 262144
重新登录终端
# ulimit -n #查看优化
66535
(5) 调整jvm参数防止elk占用太多内存
# cat /etc/elasticsearch/jvm.options
# Xmx represents the maximum size of total heap space
-Xms2g
-Xmx2g
5、进入es安装目录安装中文分词插件
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.3/elasticsearch-analysis-ik-6.2.3.zip
#查看插件
[root@jxq-c2-16-2 ~]# ls /alidata/server/es/plugins/
analysis-ik
6、启动es(内存不能太小否则会启动失败,我虚拟机设置4G)
# chown -R elastic.elastic /usr/local/elasticsearch-5.3.1
# su - elastic #切换成普通用户
#两种后台启动方式
$ nohup /usr/local/elasticsearch-5.3.1/bin/elasticsearch & #第一种(会生成nohup.out文件)
/application/elasticsearch-6.5.4/bin/elasticsearch -d -p pid #第二种(推荐)
# tail -f /home/soft/elasticsearch-7.12.0/logs/my-application.log # 启动日志
#查看端口
[root@localhost ~]# netstat -nputl|grep java
tcp 0 0 ::ffff:172.16.12.33:9200 :::* LISTEN 2214/java
tcp 0 0 ::ffff:172.16.12.33:9300 :::* LISTEN 2214/java
#访问测试
# curl http://172.16.100.160:9200
{
"name" : "linux-node1",
"cluster_name" : "myes1",
"cluster_uuid" : "cxsBNynXT9qnoz-Mqw6tew",
"version" : {
"number" : "5.3.1",
"build_hash" : "5f9cf58",
"build_date" : "2017-04-17T15:52:53.846Z",
"build_snapshot" : false,
"lucene_version" : "6.4.2"
},
"tagline" : "You Know, for Search"
}
#查看es当前健康状态
[root@localhost ~]# curl -XGET '172.16.12.33:9200/_cat/health?v&pretty'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1545621044 03:10:44 elasticsearch green 1 1 0 0 0 0 0 0 - 100.0% #green表示健康
#查看当前有哪些节点
[root@localhost ~]# curl -XGET '172.16.12.33:9200/_cat/nodes?v&pretty'
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.16.12.33 10 95 0 0.00 0.00 0.00 mdi * 1NNA3xV #只有这一个节点
#查看当前的索引文件(索引就是用来记录logstash收集的日志条目,相当于es的数据库)
# curl -XGET '172.16.12.33:9200/_cat/indices?v&pretty'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size #我这里还没有索引
6.1、为elasticsearch设置密码
https://zhuanlan.zhihu.com/p/163337278
https://blog.csdn.net/qq_27639777/article/details/98470844
(1) 启动elasticsearch需要依赖SSL,所以需要先创建ssl证书
bin/elasticsearch-certutil ca
ENTER ENTER
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
ENTER ENTER ENTER
(2) 编辑配置文件
cat /home/soft/elasticsearch-7.12.0/config/elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: cert/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: cert/elastic-certificates.p12
(3) 重启elasticsearch
# killall java
# /home/soft/elasticsearch-7.12.0/bin/elasticsearch -d -p pid
(4) 设置用户密码(用户名是默认elastic 密码:全部统一wenqiang123)
bin/elasticsearch-setup-passwords interactive
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana_system]:
Reenter password for [kibana_system]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
(5) 再次登录就需要用户名密码了
$ curl 10.4.7.10:9200 -u elastic:wenqiang123
# curl -XGET -u "elastic:wenqiang123" '10.4.7.10:9200/_cat/indices?v&pretty'
{
"name" : "node-1",
"cluster_name" : "my-application",
"cluster_uuid" : "anM314mzRXmG2iLP_Mg_SA",
"version" : {
"number" : "7.12.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "78722783c38caa25a70982b5b042074cde5d3b3a",
"build_date" : "2021-03-18T06:17:15.410153305Z",
"build_snapshot" : false,
"lucene_version" : "8.8.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
6.1、为elasticsearch设置 systemctl 启动
[root@bogon ~]# cat /usr/lib/systemd/system/elasticsearch.service
[Unit]
Description=elasticsearch # 描述
Wants=network-online.target # 先启动
After=network-online.target # 后启动
[Service]
EnvironmentFile=/home/soft/elasticsearch-7.12.0/config/elasticsearch.yml # elasticsearch配置文件
WorkingDirectory=/home/soft/elasticsearch-7.12.0 # elasticsearch安装目录
User=elk # elasticsearch启动用户
Group=elk # elasticsearch启动用户组
ExecStart=/home/soft/elasticsearch-7.12.0/bin/elasticsearch # elasticsearch启动命令路径
# 将错误消息重定向到journal
StandardOutput=journal
StandardError=inherit
# 允许打开的最大文件描述符
LimitNOFILE=100000
# 指定最大进程数
LimitNPROC=100000
# 禁用超时逻辑并等待进程停止
TimeoutStopSec=0
# 用于停止java进程的信号
KillSignal=SIGTERM
# 关闭java进程永远不会被终止选项
SendSIGKILL=no
# 只向JVM而不是其控制组发送信号
KillMode=process
# 当JVM接收到SIGTERM信号时,它将退出,并返回代码143
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
# chmod +x /usr/lib/systemd/system/elasticsearch.service
# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch
# systemctl status elasticsearch
6.2、为elasticsearch配置环境变量
# cat /etc/profile|tail -2
elasticsearch_path=/home/soft/elasticsearch-7.12.0/bin # 先为elasticsearch的路径设置一个变量
export PATH=$PATH:$elasticsearch_path:/usr/bin:/usr/sbin:/bin:/sbin # 然后设置环境变量
# source /etc/profile
7、es每天都会生出日志需要写脚本只保留最近一个月的
[root@jxq-c2-16-2 elk]# cat delete_index.sh
#!/bin/bash
#当磁盘根分区使用率大于80%删除两个月以前的ELK索引数据
#disk size
Disk_size=`df -h|sed -n '2p'|awk '{print $5}'|awk -F "%" '{print $1}'`
#TIME
year=`date +%Y`
month=`date -d "2 month ago" +%m`
#COMMOND
if [ $Disk_size -gt 80 ];then
curl -XDELETE http://10.1.2.200:9200/*-${year}.${month}.*
if [ $? -eq 0 ];then
echo -e "\nclear elk ok!"
else
echo "clear elk have a error!"
fi
fi
二、安装logstash-5.3.1
1、修改logstash配置文件
#vim /usr/local/logstash/conf/logstash.yml
config.reload.automatic: true #修改为true可以让logstash实时生效,不用每次都重新启动
2、下载安装包
# wget https://artifacts.elastic.co/downloads/logstash/logstash-5.3.1.tar.gz
# tar zxvf logstash-5.3.1.tar.gz -C /usr/local/
3、测试logstash
#直接将标准输入的内容,输出到屏幕上
# /application/logstash-5.3.1/bin/logstash -e 'input{ stdin{} } output{ stdout{ codec => rubydebug } } '
3.1、logstash配置参数基础插件讲解
(1)标准输入插件
input{ #这是一个标准输入插件
stdin{ #只写这个表示从键盘输入【标准输入】
}
stdin{ #代表标准输入的意思
add_field => {"name" => "elk"} #添加固定字段[可选]
codec => "plain" #编解码器[可选]
tags => ["test"] #标签的意思,test表示这是一个宿主[可选]
}
file{ #表示从文件读取,file插件能够实时的读取文件里面的信息类似tail -f的功能
type => "log" #自定义类型划分
path => "/var/log/access.log" #表示日志从哪里读取,支持收集多个日志:path => ["/xxx/xxx","/xxx/xxx"]
start_position => "beginning" #表示从文件什么位置读取数据,beginning表示文件开头,默认是end,end表示从当前位置
}
elasticsearch { #表示把数据发给elasticsearch并建立索引
index => "nginx_error_10.1.1.10-%{+yyyy.MM.dd}" #生成索引名字,kibana创建索引的时候添加这个名字
hosts => ["10.1.2.200:9200"] #指定elasticsearch的访问地址
}
}
(2)过滤器插件
filter{
grok{ #grok插件,用于过滤需要的东西,需要掌握正则匹配
}
mutate{ #也是过滤器插件,将grok过滤出的字段进行数据转换
}
split{ #也是过滤器插件,对数据进行拆分
}
date { #时间字段
match => ["time", "yyyy-MM-dd HH:mm:ss,SSS"] #生成logstash自己的时间字段
}
}
(3)标准输出插件
output{ #这是一个标准输出插件
stdout{ #输出到屏幕
codec => rubydebug #用于调试
}
elasticsearch { #输出到elasticsearch
index => "nginx_error_10.1.1.10-%{+yyyy.MM.dd}" #生成索引名字,kibana创建索引的时候添加这个名字
hosts => ["10.1.2.200:9200"] #指定elasticsearch的访问地址
}
file{ #输出到文件
path => "/var/log/test.txt"
}
}
3.2、logstash配置参数案例
logstash配置文件参考:https://www.jianshu.com/p/25ed5ed46682
logstash参考2:https://www.aliyun.com/jiaocheng/topic_6490.html
(1) 配置文件1 nginx_access.conf
[root@jxq-c2-16-1 config]# cat nginx_access.conf
input { #input表示准备从哪里读取日志到logstsh
file {
type => "nginx-access" #日志类型,自定义
path => "/alidata/nginx/logs/access.log" #指定读取日志的路径
}
}
filter { #filter表示将要过滤日志中的哪些内容
date { #时间字段
match => ["time", "yyyy-MM-dd HH:mm:ss,SSS"] #将日志中的时间字段转换成logstash的时间字段
}
}
output { #表示将过滤后的日志内容输出到哪里
stdout { #表示输出到屏幕
codec => rubydebug #用于调试
}
elasticsearch { #表示输出到elasticsearch服务器
index => "nginx_access_10.1.1.10-%{+yyyy.MM.dd}" #并建立索引名称,kibana创建索引的时候就添加这个名字,会按时间每天生成索引,方便后续删除
hosts => ["10.1.2.200:9200"] #指定elasticsearch服务器地址
user => "elastic"
password => "wenqiang123"
}
}
(2) 配置文件2 nginx_error.conf
[root@jxq-c2-16-1 config]# cat nginx_error.conf
input {
file {
path => "/alidata/nginx/logs/error.log" #error日志路径
}
}
filter {
date {
match => ["time", "yyyy-MM-dd HH:mm:ss,SSS"]
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
index => "nginx_error_10.1.1.10-%{+yyyy.MM.dd}" #索引名字,kibana创建索引的时候添加这个名字
hosts => ["10.1.2.200:9200"]
}
}
注意:如果日志里面没有任何东西正在写入,那么es将无法抓取logstash的动态,kibana也无法识别到es的索引,这时需要手动往日志里写点东西进去
4、启动logstash
(0) 测试logstash配置文件
# /usr/local/logstash-5.3.1/bin/logstash -t -f /usr/local/logstash-5.3.1/config/logstash.conf
Configuration OK
-t 可以测试配置文件是否配置正常
(1) 普通启动
# /usr/local/logstash-5.3.1/bin/logstash -f /usr/local/logstash-5.3.1/config/logstash.conf -l /var/log/logstash/
-f 表示指定logstash配置文件
-l 表示生成并指定logstash日志存放目录
(1.1)查看进程
[root@localhost logstash]# netstat -npult|grep 9600
tcp 0 0 ::ffff:127.0.0.1:9600 :::* LISTEN 8080/java
(2) 写入一些内容到日志文件,查看logstash启动界面是否有输出以下内容
# echo "123456" >> /alidata/nginx/logs/access.log
{
"host" => "localhost.localdomain", #表示从哪台主机输出的信息
"@version" => "1", #日志生成的版本号
"message" => "123456", #日志生成的主要内容
"@timestamp" => 2019-01-04T07:54:08.222Z, #日志生成的时间
"path" => "/alidata/nginx/logs/access.log" #日志路径
}
(3) 如果测试没问题,则后台启动
# nohup /usr/local/logstash-5.3.1/bin/logstash -f /usr/local/logstash-5.3.1/config/logstash.conf &
(注意:启动后会生成一个nohup.out的文件,这个文件需要每隔几个月清空一次 nohup.out是一个临时文件,elk需要到这里抓取数据,之后数据都会存在elk服务器上面,所以清空nohup.out不会影响elk正常访问,也不会导致数据丢失,更不会导致logstash无法采集数据)
三、安装Kibana-5.3.1
1、下载安装包
# wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.1-linux-x86_64.tar.gz
# tar zxvf kibana-5.3.1-linux-x86_64.tar.gz -C /usr/local/
2、配置kibana
# vi /usr/local/kibana-5.3.1-linux-x86_64/config/kibana.yml
server.port: 5601
server.host: "172.16.100.160" #监听本地ip
elasticsearch.url: http://172.16.100.160:9200 #指定连接elasticsearch的访问地址
kibana.index: ".kibana" #用来保存es的索引、可视化和仪表盘,相当于kibana的数据库
elasticsearch.username: "user" #es的用户名和密码
elasticsearch.password: "pass"
# logging.verbose: false #该选项改成true会记录kibana所有的系统日志,默认为false,建议调试kibana的时候再开启
# logging.dest: /application/kibana-5.3.1-linux-x86_64/logs/kibana.log #该选项默认输出日志到屏幕,可以改成输出到指定位置
3、启动kibana
# chmod -R elk.elk /usr/local/kibana-5.3.1-linux-x86_64
# su - elk
# nohup /usr/local/kibana-5.3.1-linux-x86_64/bin/kibana &
4、浏览器访问 http://172.16.100.160:5601
(1) 创建索引——索引名字根据logstash 里面的index来写
[root@localhost ~]# vi /usr/local/logstash-5.3.1/config/test.conf
index => "test_%{+YYYY.MM.dd}"(最好写成test_*)
@timestamp此处必须选上要不然看不到时间
(2) 写一些内容到测试文件
[root@localhost ~]# echo "123456" >> /var/log/test.log
[root@localhost ~]# echo "123456" >> /var/log/test.log
[root@localhost ~]# echo "123456" >> /var/log/test.log
[root@localhost ~]# echo "123456" >> /var/log/test.log
[root@localhost ~]# echo "123456" >> /var/log/test.log
[root@localhost ~]# echo "123456" >> /var/log/test.log
[root@localhost ~]# echo "123456" >> /var/log/test.log
[root@localhost ~]# echo "123456" >> /var/log/test.log
[root@localhost ~]# echo "123456.apk" >> /var/log/test.log
[root@localhost ~]# echo "123456.apk" >> /var/log/test.log
(3) 选择Discover进程日志搜索
4.1、设置systemctl启动kibana
# cat /lib/systemd/system/kibana.service
[Unit]
Description=kibana
Wants=network-online.target
After=network-online.target
[Service]
EnvironmentFile=/home/soft/kibana-7.12.0-linux-x86_64/config/kibana.yml
WorkingDirectory=/home/soft/kibana-7.12.0-linux-x86_64
User=elk
Group=elk
ExecStart=/home/soft/kibana-7.12.0-linux-x86_64/bin/kibana
StandardOutput=journal
StandardError=inherit
LimitNOFILE=100000
LimitNPROC=100000
TimeoutStopSec=0
KillSignal=SIGTERM
SendSIGKILL=no
KillMode=process
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
# chmod +x /lib/systemd/system/kibana.service
# chmod +x /lib/systemd/system/kibana.service
# systemctl daemon-reload
# systemctl start kibana
5、为Kibana配置登录认证 (通过nginx访问Kibana实现提示用户输入用户名密码)(如果前面elasticsearch设置了密码这里就不用了为kibana配置密码了)
1、pcre-8.12
pcre 安装到 /usr/local/ 解包到/usr/src/
# tar zxvf pcre-8.12.tar.gz -C /usr/src/
# cd /usr/src/pcre-8.12/
# ./configure --prefix=/usr/local/
make && make install
2、nginx-1.11.13
# useradd nginx -s /sbin/nologin -M
# tar zxvf nginx-1.11.13.tar.gz -C /usr/local/
# cd /usr/local/nginx-1.11.13/
# ./configure --prefix=/alidata/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/src/pcre-8.12/
# make && make install
3、添加一个单独的nginx配置文件,设置转发
# mkdir -pv /usr/local/nginx/conf/conf.d/
# vim /usr/local/nginx/conf/conf.d/kibana.conf
server {
listen 8080;
server_name 192.168.135.136; #当前主机名
auth_basic "Restricted Access";
auth_basic_user_file /usr/local/nginx/conf/htpasswd.users; #登录验证
location / {
proxy_pass http://192.168.135.136:5601; #转发到kibana
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
4、修改nginx主配置文件导入配置(把主配置文件默认80那一大段注释掉)
# vim /usr/local/nginx/conf/nginx.conf
include /usr/local/nginx/conf/conf.d/*.conf;
5、配置登录验证(可设置多个用户)
# htpasswd -bc /usr/local/nginx/conf/htpasswd.users admin admin (创建用户名和密码都,第一次需要加-c来创建文件)
# htpasswd -b /alidata/nginx/conf/htpasswd.users devlop dev.ro123.com (第二次不要加-c,-c是创建文件用的)
# cat /usr/local/nginx/conf/htpasswd.users #查看创建的用户名密码
admin:HbQcH7ctR9JpI
devlop:0or17BvYp5sOU
6、重启nginx
# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload
7、用浏览器直接访问80端口
http://192.168.135.136/
二、清除ELK索引文件
一、什么是索引
索引文件就是es的数据库,也就是本地存储,它的配置文件在这里(默认被注释了,可以手动开启指定路径,默认路径在 /alidata/elasticsearch-5.3.1/data/nodes/)
[root@jxq-c2-16-2 elasticsearch-5.3.1]# cat /alidata/elasticsearch-5.3.1/config/elasticsearch.yml|grep path
#path.data: /path/to/data
二、删除索引文件,防止占用太大的磁盘空间(删除索引数据就没了,可以删除几个月之前的数据)
(1) 查看全部索引文件
# curl http://10.1.2.200:9200/_cat/indices?v
# curl -u "elastic:Clouddeep@8890" http://127.0.0.1:9200/_cat/indices?v # 可以指定用户名密码
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana y__8shNETGiunYgF1GwToA 1 1 7 1 37.8kb 37.8kb
yellow open apache_access_10.1.2.10 wSqWcaRhRDqYzIVZVYnCIQ 5 1 317850 0 149.7mb 149.7mb
yellow open apache_access_10.1.10.10 XEyh5y7SR6eVeYd4vDmHaQ 5 1 2 0 12.1kb 12.1kb
yellow open nginx_access_10.1.1.10-2017.07.28 9AUaIylWQQSD-2IPQ02WjA 5 1 55837 0 27.2mb 27.2mb
yellow open apache_error_10.1.2.11 tBEkhE-oTS-Rvdcfh9_-Rg 5 1 6903 0 3.3mb 3.3mb
yellow open nginx_error_10.1.1.10-2017.07.27 aiStUUWAS7CSPiZcfynlZQ 5 1 1 0 6kb 6kb
yellow open nginx_access_10.1.1.10-2017.07.27 hzMxMzNxTBCdDUgsXSIY7Q 5 1 1310377 0 582.8mb 582.8mb
yellow open apache_error_10.1.2.10 9stFDP-qTqiTxy1ys8Ziow 5 1 7290 0 4.2mb 4.2mb
yellow open apache_access_10.1.2.11
# 查详细索引
curl -u "elastic:Clouddeep@8890" http://127.0.0.1:9200/ueba_20220523/doc/_search
#nginx_access_10.1.1.10-2017.07.27 后面的是时间,是因为之前定义过了【index => "nginx_access_10.1.1.10-%{+yyyy.MM.dd}" 】,这里会按天生成索引
store.size 和 pri.store.size 是索引大小(kb mb gb)
(2) 对应的索引目录
[root@jxq-c2-16-2 data]# ll /alidata/elasticsearch-5.3.1/data/nodes/0/indices/
(3) 删除某天或某月的索引数据(根据【curl http://10.1.2.200:9200/_cat/indices?v】查看到的名字来删除,其实就是logstash里面记录的index 【index => "nginx_access_10.1.1.10-%{+yyyy.MM.dd}"】)
curl -XDELETE http://10.1.2.200:9200/nginx_access_10.1.1.10-2017-07-27 #删除2017-07-27号的nginx_access的所有数据
curl -XDELETE http://10.1.2.200:9200/*2017-07-* #删除2017-07月的所有数据 推荐:当占用磁盘空间太大时手动删除前几个月的 推荐手动删除
curl -XDELETE http://10.1.2.200:9200/nginx_access_10.1.1.10-2017-07-* #删除7月的nginx_access数据(索引)
curl -u "elastic:wenqiang123" -XDELETE http://10.4.7.10:9200/filebeat-7.12.0-2021.03.25-000001
(4) 通过脚本定期删除索引
# 删除某个月的
[root@jxq-c2-16-2 elk]# cat delete_index.sh
#!/bin/bash
#当磁盘根分区使用率大于80%删除两个月以前的ELK索引数据
#disk size
Disk_size=`df -h|sed -n '2p'|awk '{print $5}'|awk -F "%" '{print $1}'`
#TIME
Time=`date --date "60 days ago" +%Y.%m`
#COMMOND
if [ $Disk_size -gt 80 ];then
curl -XDELETE http://10.1.2.200:9200/*-${Time}.*
if [ $? -eq 0 ];then
echo -e "\nclear elk ok!"
else
echo "clear elk have a error!"
fi
fi
# 每天都是删除29天前的那一天数据(这里只删一天的数据,所以需要手动把29天前的数据先删掉)
#elkdelete
59 23 * * * root /bin/sh /project/redcore/tools/elkdelete.sh
# cat /project/redcore/tools/elkdelete.sh
#!/bin/bash
LAST_DATA=`date -d "-29 days" "+%Y%m%d"`
LAST_DATA_sdp=`date -d "-29 days" "+%Y.%m.%d"`
curl -u "elastic:Clouddeep@8890" -XDELETE http://127.0.0.1:9200/ueba_${LAST_DATA}
curl -u "elastic:Clouddeep@8890" -XDELETE http://127.0.0.1:9200/sdp-${LAST_DATA_sdp}
(5) 删除所有索引数据 (隐患:删除后需要KIbana再次重新采集数据,不推荐)
curl -XDELETE http://10.1.2.200:9200/*
(6) 最好用的推荐手动删除
curl -XDELETE http://10.1.2.200:9200/*-2017.07.* // 删除2017-07月的所有数据 推荐:当占用磁盘空间太大时手动删除前几个月的
更多推荐
所有评论(0)