elk集群架构 ELK综合练习
- elastic(类似数据库存储数据的) 对外端口9200 内部通信9300
tar -xf elasticsearch-7.10.0-linux-x86_64.tar.gz -C /usr/local/
创建elstic用户
chown -R elastic.elastic /usr/local/elasticsearch-7.10.0
在每个节点上设置系统内核参数
设置内存映射
sysctl -w vm.max_map_count=262144 > /etc/sysctl.conf
sysctl -p
设置一下文件句柄 /etc/security/limits.conf
-
soft nofile 65536
-
hard nofile 131072
-
soft nproc 2048
-
hard nproc 4096
在每个集群中配置如下参数
/usr/local/elasticsearch-7.10.0/config/elasticsearch.ymlcluster.name: elk
node.name: ela1
node.data: true
network.host: 0.0.0.0
http.port: 9200discovery.seed_hosts:
- 192.168.136.130
- 192.168.136.133:9300
- 192.168.136.137
cluster.initial_master_nodes: [“ela1”, “ela2”, “ela3”]
后面两台配置文件只修改node.name: ela2 ela3
切换用户去执行启动
su - elastic
cd /usr/local/elasticsearch-7.10.0
./bin/elasticsearch -d -p /tmp/elasticsearch.pid
-d 指定后台运行
-p 指定运行文件(方便kill掉)
查看集群健康状态
curl -X GET “localhost:9200/_cat/health?v”
查看集群节点信息
curl -X GET “localhost:9200/_cat/nodes?v”
如果使用root执行启动文件或者配置没问题尝试 集群有问题的按照此步骤做一遍
找到进程
[elastic@ela1 elasticsearch-7.10.0]$ jdk/bin/jps
8244 Jps
7526 Elasticsearch
杀死进程
[elastic@ela1 elasticsearch-7.10.0]$ kill -9 7526
删除零时文件
[elastic@ela1 elasticsearch-7.10.0]$ rm -rf /tmp/elasticsearch-*
删除数据目录中的所有文件
[elastic@ela1 elasticsearch-7.10.0]$ rm -rf data/*
删除 keystore 文件
[elastic@ela1 elasticsearch-7.10.0]$ rm -rf config/elasticsearch.keystore
重新启动进程
[elastic@ela1 elasticsearch-7.10.0]$ bin/elasticsearch -d -p /tmp/elk.pid
部署单个elasticsearch https://blog.csdn.net/qq_22648091/article/details/110219679
如果之前用root用户执行过启动则需要删除执行的文件
查看是否root用户执行 ls -l config/
rm -rf config/elasticsearch.keystore
- Logstash (日志过滤器)端口9600
tar xf logstash-7.10.0-linux-x86_64.tar.gz -C /usr/local/
在目录下vim first-pipeline.conf 用-f指定这个文件
input {
#stdin { }
beats {
port => 5044
}
}
filter {
grok {
match => { “message” => “%{COMBINEDAPACHELOG}”}
remove_field => [ “message” ]
}
geoip {
source => “clientip”
}
}
output {
stdout {
codec => rubydebug
}
if [event][dataset] == “nginx.access” {
elasticsearch {
# 这里是输出到 elasticsearch 集群中
hosts => [“192.168.136.130:9200”,“192.168.136.133:9200”,“192.168.136.137:9200”]
# 创建索引,索引好比是MySQL 数据库中的表名称
index => "nginx-access-%{+YYYY.MM.dd}"
}
} else if [event][dataset] == “nginx.error” {
elasticsearch {
# 这里是输出到 elasticsearch 集群中
hosts => [“192.168.136.130:9200”,“192.168.136.133:9200”,“192.168.136.137:9200”]
# manage_template => false
# 创建索引,索引好比是MySQL 数据库中的表名称
index => "nginx-error-%{+YYYY.MM.dd}"
}
}
}
行如下命令可以测试配置文件(在目录下)
bin/logstash -f first-pipeline.conf --config.test_and_exit
-f 用于指定管道配置文件。
运行如下命令启动 Logstatsh
bin/logstash -f first-pipeline.conf --config.reload.automatic
–config.reload.automatic 会在你修改管道配置文件后自动加载,而不必重新启动 Logstash。
3.Filebeat (日志收集)端口号5044
tar xzvf filebeat-7.10.1-linux-x86_64.tar.gz -C /usr/local/
查看可以启用的模块列表
./filebeat modules list
启用 nginx 模块
例如,下面的命令启用 nginx 的配置模块:
./filebeat modules enable nginx
配置 nginx 模块 modules.d/nginx.yml 文件内容:
- module: nginx
access:开启搜集访问日志
enabled: truevar.paths:
error:开启搜集错误日志
enabled: true
#var.paths:
ingress_controller:
#它可以在K8S环境中用于解析nginx日志的入口,默认禁用此选项
enabled: false
#var.paths:
默认路径
/var/log/nginx/assecc.log
/var/log/nginx/error.log
var.paths 接收的值是一个数组,可以使用如下方式配置。
vi /usr/local/filebeat-7.10.0-linux-x86_64/filebeat.yml
第189行注释去掉 5044端口开放
第176行注释 9200端口关闭
./filebeat启动 启动会卡住不动
nohup ./filebeat & 后台启动
验证
向日志文件中输入日志
echo ‘10.9.29.211 - - [29/Dec/2020:17:43:09 +0800] “GET /35949/bundles/plugin/uptime/uptime.plugin.js HTTP/1.1” 200 5869 “http://10.9.12.250:8080/app/home” “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/4.0.1301.400 QQBrowser/9.0.2524.400 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat” “-”’ >> /var/log/nginx/access.log
echo ‘2020/12/29 15:25:10 [warn] 3380#3380: *161 an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/5/00/0000000005 while reading upstream, client: 10.9.29.234, server: localhost, request: “GET /35949/bundles/plugin/data/data.plugin.js HTTP/1.1”, upstream: “http://127.0.0.1:5601/35949/bundles/plugin/data/data.plugin.js”, host: “10.9.12.250:8080”, referrer: “http://10.9.12.250:8080/app/home”’ >> /var/log/nginx/error.log
Logstash 的终端应有相应的输出
验证Elasticsearch是否创建了索引
[root@lvs ~]# curl -X GET “192.168.136.130:9200/_cat/indices”
green open logstash-2020.12.29-000001 ZJCk7R4xQyCAulrSg2QR2Q 1 1 2 0 58.7kb 29.3kb
green open nginx-access-2020.12.29 xVFMBC3oSc6j2gbTnN_XyQ 1 1 1 0 57.5kb 28.7kb
green open nginx-error-2020.12.29 hTPuBQjZQ_iyJeuTbvxBDg 1 1 1 0 57.4kb 28.7kb
logstash-2020.12.29-000001 是原来的
nginx-access-2020.12.29 和 nginx-error-2020.12.29 是新建立的。
必须先起5044 后起9600 他们是一个pid kill一个两个进程都没了
如果先起9600 附带的5044也会起来 因为配置文件有5044那样是没有效果的
不会处理日志转到集群中 必须先让5044起然后让他卡在那 再执行起9600的命令才会处理追加的日志