elastic-stack部署——ELK
#elasticsearchi7.8.0 集群部署设置
1.节点属性设置
node.master:true #是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master.
node.data:true #指定该节点是否存储数据,默认为true。
#以上两个都设置为false则为分发节点。 index.number_of_shards:5 #设置默认索引分片个数,默认为5片。
index.number_of_replicas:1 #设置默认索引副本个数,默认为1个副本。
discovery.type: single-node #单节点则需要加入此参数
2. vim /etc/sysctl.conf
vm.max_map_count=262144
$修改后执行 sysctl -p
3. vim /etc/security/limits.conf
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
4.启动(非root用户启动)
cd bin
./elasticsearch 或 ./elasticsearch -d #后台启动
#filebeat7.8.0部署
1.解压
mkdir /beats #解压到此目录 tar -xvf filebeat-7.8.0-linux-x86_64.tar.gz cd filebeat-6.5.4-linux-x86_64
2. 创建配置文件config.yml
vim config.yml #创建文件
#配置如下 filebeat.inputs:
- type: log enabled: true #是否启用此配置 paths: - /home/soft/nginx/logs/*.log tags: ["nginx"] #添加自定义tag。 fields: #添加自定义字段 log_source: xing #字段名:值
host_ip: ${serverIP} #传递本机IP,需要设置环境变量
fields_under_root: true #true为添加到根节点,false为添加到子节点中
- type: log
paths: #日志2
- /home/soft/nginx/logs/*.log
tags: ["web"] #添加自定义tag。
fields: #添加自定义字段,键值自定义
log_source: app #字段名:值
fields_under_root: true #true为添加到根节点,false为添加到子节点中
processors: - drop_fields: #删除字段 fields: ["beat.hostname","input.type"]
setup.template.settings: index.number_of_shards: 3 #指定索引的分区数
output.elasticsearch: #指定ES的配置 hosts: ["192.168.164.138:9200","192.168.1.7:9201"]
output.logstash:
hosts: ["192.168.164.141:5044"]
#output.console: #输出到控制台 # pretty: true # enable: true
3.启动filebeat
./filebeat -e -c config.yml
#部署Metricbeat收集系统指标
1.解压
tar -zxvf metricbeat-7.8.0-linux-x86_64.tar.gz cd metricbeat-7.8.0-linux-x86_64
2.创建配置文件
vim metricbeat.yml #配置与elasticsearch通信
output.elasticsearch: hosts: ["192.168.164.138:9200","192.168.164.139:9200"]
3.(开启/关闭)监控模块
./metricbeat modules list #查看模块列表 ./metricbeat modules enable mysql #开启模块
./metricbeat modules disenable mysql #关闭模块
./metricbeat -e #启动
4.进入modules.d目录可以修改各模块的配置
# Logstash接收日志
1.解压
tar -zxvf logstash-7.8.0.tar.gz cd logstash-7.8.0
2.创建配置文件
vim config.conf
input { beats { port => "5044" } } filter {
#正则匹配
grok {
match => ["message","%{DATA:service}\|%{DATA:logtime}\|%{DATA:job}\|%{DATA:key}\|%{DATA:operator}$"]
}
date {
match => ["logtime", "yyyy-MM-dd HH:mm:ss"]
locale => "en"
target => [ "@timestamp" ] #日志中的时间替换掉@timestamp
字段默认的时间
timezone => "Asia/Shanghai"
#删除不要的字段
remove_field => ["logtime","message","[beat][version]","[beat][name]","offset","prospector","tags","source"]
}
mutate { split => {"message"=>"|"} } mutate { add_field => { "userId" => "%{message[1]}" "visit" => "%{message[2]}" "date" => "%{message[3]}" } }
#设置字段类型 mutate { convert => { "userId" => "integer" "visit" => "string"
"date" => "string" } } } output { elasticsearch { hosts => ["192.168.40.133:9200","192.168.40.134:9200","192.168.40.135:9200"] } }
#标准输出
output {
stdout {
codec => rubydebug
}
}
#测试是否可以正常启动
bin/logstash -f xing-config.conf --config.test_and_exit #启动 ./bin/logstash -f config.conf
#kibana 部署
1.解压
tar -zxvf kibana-7.8.0-linux-x86_64.tar.gz
2.设置配置文件
cd kibana/config/
vim config/kibana.yml server.host: "192.168.164.141" #配置本机ip elasticsearch.hosts: "http://192.168.164.140:9200" #配置elasticsearch的ip,必须加协议类型
3.启动服务(非root用户启动)
cd kibana/bin ./kibana
http://ip:5601 #访问
#metricbeat仪表盘
#修改metricbeat目录下面的metricbeat.yml配置 setup.kibana: host: "192.168.1.7:5601" #安装仪表盘到Kibana ./metricbeat setup --dashboards
#filebeat仪表盘
#在配置文件中写入(我这里testredis.yml文件) setup.kibana: host: "192.168.142.128:5601" #安装仪表盘到 kibana ./filebeat -c testredis.yml setup #启动 ./filebeat -e -c testredis.yml