一、数据备份与恢复
1.安装npm工具
1)下载上传包
#下载地址:http://nodejs.cn/download/
[root@es01 ~ ]# rz
[root@es01 ~ ]# ll
-rw-r--r-- 1 root root 21609252 2020 -12 -02 17 :28 node-v14.15 .1 -linux-x64.tar.xz
2)解压
[root@es01 ~ ]# tar xf node-v14.15.1-linux-x64.tar.xz
[root@es01 ~ ]# mv node-v14.15.1-linux-x64 node
3)配置环境变量
[root@es01 ~]
export PATH=/root/n ode/bin:$PATH
[root@es01 ~]
4)更新国内源
[root@es01 ~]
5)安装备份工具
[root@es01 ~]
2.备份工具
1)备份参数
#我们运维需要掌握的
2)备份到另一台ES节点
elasticdump \
--input =http:
--output =http:
--type =analyzer
elasticdump \
--input =http:
--output =http:
--type =mapping
elasticdump \
--input =http:
--output =http:
--type =data
3)备份数据成json文件
elasticdump \
--input =http:
--output =/data/test_mapping.json \
--type =mapping
elasticdump \
--input =http:
--output =/data/test_data.json \
--type =data
elasticdump \
--input =http:
--output =/data/test_alias.json \
--type =alias
elasticdump \
--input =http:
--output =/data/test_template.json \
--type =template
elasticdump \
--input =http:
--output =/data/test_analyzer.json \
--type =analyzer
4)备份成压缩文件
elasticdump \
--input=http://10.0.0.91:9200/test \
--output=$ | gzip > /data/test_data.json.gz
5)备份指定条件的数据
elasticdump \
--input =http:
--output =/data/test_query.json \
--searchBody='{"query" :{"term" :{"name" : "lhd" }}}'
4.导入命令
elasticdump \
--input =/data/test_alias.json \
--output =http:
--type =alias
elasticdump \
--input =/data/test_analyzer.json \
--output =http:
--type =analyzer
elasticdump \
--input =/data/test_data.json \
--output =http:
--type =data
elasticdump \
--input =/data/test_template.json \
--output =http:
--type =template
elasticdump \
--input =/data/test_mapping.json \
--output =http:
--type =mapping
#注意:恢复的时候,如果已存在相同的数据,会覆盖原来的数据,如果不存在数据,则无影响
5.备份脚本
#!/bin/bash
echo '要备份的机器是:' ${1}
index_name='
test_2020-11-30
student
linux7
'
for index in `echo $index_name `
do
echo "start input index ${index} "
elasticdump --input=http://${1} :9200/${index} --output=/data/${index} _alias.json --type =alias &> /dev/null
elasticdump --input=http://${1} :9200/${index} --output=/data/${index} _analyzer.json --type =analyzer &> /dev/null
elasticdump --input=http://${1} :9200/${index} --output=/data/${index} _data.json --type =data &> /dev/null
elasticdump --input=http://${1} :9200/${index} --output=/data/${index} _alias.json --type =alias &> /dev/null
elasticdump --input=http://${1} :9200/${index} --output=/data/${index} _template.json --type =template &> /dev/null
done
6.导入数据脚本
#!/bin/bash
echo '要导入的机器是:' ${1}
index_name='
test
student
linux7
'
for index in `echo $index_name `
do
echo "start input index ${index} "
elasticdump --input=/data/${index} _alias.json --output=http://${1} :9200/${index} --type =alias &> /dev/null
elasticdump --input=/data/${index} _analyzer.json --output=http://${1} :9200/${index} --type =analyzer &> /dev/null
elasticdump --input=/data/${index} _data.json --output=http://${1} :9200/${index} --type =data &> /dev/null
elasticdump --input=/data/${index} _template.json --output=http://${1} :9200/${index} --type =template &> /dev/null
done
二、中文分词器
https: //github.com/medcl /elasticsearch-analysis-ik/
1.插入测试数据
POST /index/text/1
{"content" :"美国留给伊拉克的是个烂摊子吗" }
POST /index/text/2
{"content" :"公安部:各地校车将享最高路权" }
POST /index/text/3
{"content" :"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船" }
POST /index/text/4
{"content" :"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首" }
2.检测数据
POST /index/_search
{
"query" : { "match" : { "content" : "中国" }},
"highlight" : {
"pre_tags" : ["<tag1>" , "<tag2>" ],
"post_tags" : ["</tag1>" , "</tag2>" ],
"fields" : {
"content" : {}
}
}
}
3.配置中文分词器
1)上传插件的安装(集群中所有机器都执行)
[root@es01 ~ ]# rz
[root@es01 ~ ]# ll
-rw-r--r-- 1 root root 4504556 2020 -05 -19 00 :22 elasticsearch-analysis-ik-6.6 .0 .zip
2)解压
[root@es01 ~ ]# mkdir /usr/share/elasticsearch/plugins/ik -p
[root@es01 ~ ]# unzip elasticsearch-analysis-ik-6.6.0.zip -d /usr/share/elasticsearch/plugins/ik
3)编辑配置文件
[root@es03 ~]# vim /usr/share/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd" >
<properties >
<comment > IK Analyzer 扩展配置</comment >
<entry key ="ext_dict" > /etc/elasticsearch/config/my.dic</entry >
<entry key ="ext_stopwords" > </entry >
</properties >
4)编辑分词文件
[root@es03 ~ ]# cat /etc/elasticsearch/config/my.dic
中国
5)重启服务
[root@es01 ~ ]# systemctl restart elasticsearch.service
6)重新插入数据
1.建立索引
PUT /news
3.创建mapping
POST /news/text/_mapping
{
"properties" : {
"content" : {
"type" : "text" ,
"analyzer" : "ik_max_word" ,
"search_analyzer" : "ik_smart"
}
}
}
3.插入数据
POST /news/text/1
{"content" :"美国留给伊拉克的是个烂摊子吗" }
POST /news/text/2
{"content" :"公安部:各地校车将享最高路权" }
POST /news/text/3
{"content" :"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船" }
POST /news/text/4
{"content" :"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首" }
7)再次查询关键字
POST /news/_search
{
"query" : { "match" : { "content" : "中国" }},
"highlight" : {
"pre_tags" : ["<tag1>" , "<tag2>" ],
"post_tags" : ["</tag1>" , "</tag2>" ],
"fields" : {
"content" : {}
}
}
}
三、ELK介绍
1.什么是ELK
ELK是三个软件组成的
E:elasticsearch
L:logstash
K:kibana
F :filebeat
2.ELK的作用
1 .收集:收集所有服务器的日志
2 .传输:把日志稳定的传输到ES 或者消息队列
3 .存储:ES 能有效的存储数据
4 .分析:通过web页面和作图进行分析
5 .监控:监控集群架构
3.ELK优点
1.处理数据方式很灵活
2.配置简单
3.查询数据性能高
4.集群扩展方便
5.页面直观,好看
4.为什么使用ELK
1.web日志收集
2.业务日志收集
3.系统日志收集
4.分析以上日志
1.用户访问量统计
2.访问量前十的IP
3.站点访问次数最多的URL
4.查询一上午以上三个值 8:10-12:30
5.查询一下午以上三个值 13:30-17:30
6.对比一下以上数据
7.对比本周每一天的数据
四、logstash介绍
1.搭建logstash
1)安装java环境
[root@web01 ~ ]# yum localinstall -y jdk-8u181-linux-x64.rpm
2)时间同步
[root@web01 ~ ]# ntpdate time1.aliyun.com
3)安装logstash
[root@web01 ~ ]# rz
[root@web01 ~ ]# yum localinstall -y logstash-6.6.0.rpm
4)授权
[root@web01 ~ ]# ll /usr/share/logstash/
[root@web01 ~ ]# chown -R logstash.logstash /usr/share/logstash/
#启动文件
[root@web01 ~ ]# ll /usr/share/logstash/bin/logstash
-rwxr-xr-x 1 logstash logstash 2354 Jan 24 2019 /usr/share/logstash/bin/logstash
2.logstash插件
INPUT :使Logstash能够读取特定的事件源。
OUTPUT:将事件数据发送到特定的目的地,OUTPUT是事件流水线中的最后阶段。
INPUT支持事件源
OUTPUT支持输出源
CODEC编解码器支持编码
azure_event_hubs(微软云事件中心)
elasticsearch(搜索引擎数据库)
avro(数据序列化)
beats(filebeat日志收集工具)
email(邮件)
CEF(嵌入式框架)
elasticsearch(搜索引擎数据库)
file(文件)
es_bulk(ES中的bulk api)
file(文件)
http(超文本传输协议)
Json(数据序列化、格式化)
generator(生成器)
kafka(基于java的消息队列)
Json_lines(便于存储结构化)
heartbeat(高可用软件)
rabbitmq(消息队列 OpenStack)
line(行)
http_poller(http api)
redis(缓存、消息队列、NoSQL)
multiline(多行匹配)
jdbc(java连接数据库的驱动)
s3*(存储)
plain(纯文本,事件间无间隔)
kafka(基于java的消息队列)
stdout(标准输出)
rubydebug(ruby语法格式)
rabbitmq(消息队列 OpenStack)
tcp(传输控制协议)
redis(缓存、消息队列、NoSQL)
udp(用户数据报协议)
s3*(存储)
stdin(标准输入)
syslog(系统日志)
tcp(传输控制协议)
udp(用户数据报协议)
3.logstash输入输出插件测试
1)配置环境变量
[root@web01 ~]
export PATH=/usr/share/logstash/bin/:$PATH
2)收集标准输入到标准输出
[root@web01 ~]
34567890
{
"message" => "34567890" ,
"@timestamp" => 2020 -12 -03 T09:27 :18.886 Z,
"host" => "web01" ,
"@version" => "1"
}
3)收集标准输入到标准输出指定格式
[root@web 01 ~]# logstash -e 'input { stdin {} } output { stdout { codec => rubydebug } }'
123
{
"message" => "123" ,
"@version" => "1" ,
"@timestamp" => 2020 -12 -03 T09:33 :40.563 Z,
"host" => "web01"
}
4)收集标准输入到文件
[root@web01 ~]
123
[INFO ] 2020 -12 -03 17 :40 :50.731 [[main]>worker0 ] file - Opening file {:path=> "/tmp/1.txt" }
234
345
[root@web01 ~]
{"message" :"123" ,"@timestamp" :"2020-12-03T09:40:50.333Z" ,"host" :"web01" ,"@version" :"1" }
{"message" :"234" ,"@timestamp" :"2020-12-03T09:41:27.302Z" ,"host" :"web01" ,"@version" :"1" }
{"message" :"345" ,"@timestamp" :"2020-12-03T09:41:45.527Z" ,"host" :"web01" ,"@version" :"1" }
5)收集标准输入到ES
[root@ web01 ~ ]# logstash - e 'input { stdin {} } output { elasticsearch { hosts => ["10.0.0.71:9200" ] index => "test" } }'
#启动后随便输入点东西,去ES查看
[root@ web01 ~ ]# logstash - e 'input { stdin {} } output { elasticsearch { hosts => ["10.0.0.71:9200" ] index => "test_%{+YYYY-MM-dd}" } }'
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库