ELK含义
Elasticsearch : 负责日志检索和存储
Logstash : 负责日志的收集和分析,处理
Kibana : 负责日志的可视化
环境准备
1 es集群 5台 ip:51~55
2 kibana 1台 ip:56
3 logstash1台 ip:57
相关安装包与插件
百度云:https://pan.baidu.com/s/1hMUltMKBeOCw6PS8Snl9VQ
提取码:23np
一、 es集群安装
1 设置ip与主机名对应
–配置/etc/hosts
192.168.1.51 es1
192.168.1.52 es2
192.168.1.53 es3
192.168.1.54 es4
192.168.1.55 es5
2 安装jdk
–Elasticsearch 要求至少java7
yum -y install java-1.8.0-openjdk
3 安装ES
yum -y install elasticsearch
4 修改配置文件
–/etc/elasticsearch/elasticsearch.yml
cluster.name: es_cluster #es集群名称
node.name: es1 #节点名称(主机名)
network.host: 0.0.0.0 #允许所有主机
discovery.zen.ping.unicast.hosts: ["es-0001","es-0002","es-0003"] #声明集群里的主机成员,不需要全部写
#主机成员个数:Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
5 启动服务,开机自启
systemctl restart elasticsearch
systemctl enable elasticsearch
6 检测服务是否启动,查看端口
ss -ntulp | grep 9200
tcp LISTEN 0 50 [::]:9200 [::]:* users:(("java",pid=1942,fd=195))
ss -ntulp | grep 9300
tcp LISTEN 0 50 [::]:9300 [::]:* users:(("java",pid=1942,fd=80))
7 验证集群状态
curl http://192.168.1.51:9200/_cluster/health?pretty(竖直显示)
8 安装插件
–head插件:展现ES集群的拓扑结构,并且可以通过它来索引(Index)和节点(Node)级别的操作
–kkopf插件:提供对ES集群操作的API
–bigdesk插件:集群监控工具,可以汉坎es集群各种状态
cd /usr/share/elasticsearch/bin/
./plugin install file:///tmp/bigdesk-master.zip
./plugin install file:///tmp/elasticsearch-head-master.zip
./plugin install file:///tmp/elasticsearch-kopf-master.zip
./plugin list
9 使用POST方式批量导入数据,数据格式位json,url编码使用data-binary导入含有index的json文件
gzip -d logs.jsonl.gz
curl -X POST "http://192.168.1.51:9200/_bulk" \
--data-binary @logs.jsonl
10 访问9200端口,查看是否安装成功(es5上绑定公网IP)
http://139.9.104.239:9200/_plugin/head/
Kibana服务搭建
1 安装软件包
yum -y install kibana
2 修改配置文件(/opt/kibana/config/kibana.yml)
server.port: 5601 #kibana端口
server.host: "0.0.0.0" #允许所有主机
elasticsearch.url: "http://192.168.1.51:9200" #ES 集群地址
kibana.index: ".kibana" #索引名称
kibana.defaultAppId: "discover" #默认进去页面
elasticsearch.pingTimeout: 1500
elasticsearch.requestTimeout: 30000
elasticsearch.startupTimeout: 5000
3 启动服务
systemctl start kibana
systemctl enable kibana
4 访问
http://139.9.104.239:9200/_plugin/head/
成功连接ES集群
5 web访问(这里我解绑之前的公网IP,重新绑定在kibana上【节省资源】)
http://139.9.104.239:5601
web服务器安装filebeat
1 安装filebeat
yum -y install filebeat
2 修改配置文件
vim /etc/filebeat/filebeat.yml
#注释以下俩行
elasticsearch
hosts: ["localhost:9200"]
filebeat:
prospectors:
-
paths:
- /usr/local/nginx/logs/access.log
input_type: log
document_type: accesslog
registry_file: /var/lib/filebeat/registry
output:
logstash:
hosts: ["192.168.1.57:5044"]
shipper:
logging:
files:
rotateeverybytes: 10485760 # = 10MB
3 启动服务
systemctl start filebeat
systemctl enable filebeat
Logstash服务搭建
1 logstash以来Java环境
yum -y install java-1.8.0-openjdk
2 安装软件包
yum -y install logstash
3 自定义配置文件
–参考官方手册 官方手册:
http://github.com/logstash-plugins
vim /etc/logstash/logstash.conf
input{
beats{
port => 5044 #filebeat端口
}
}
filter{
if [type]=="accesslog"{
grok {
match => { "message" => "(?<client_ip>(\d{1,3}\.){3}(\d{1,3})) (?<ident>\S+) (?<auth>\S+) \[(?<time>.*)\] \"(?<verb>\S{3,4}) (?<requst>\S+) (?<proto>[A-Z]+)\/(?<Http_version>[0-9]+\.[0-9]+)\" (?<reponse>\d+) (?<bytes>\d+) \"(?<referer>\S+)\" \"(?<agent>\S+)\"" } #正则表达式获取log日志信息
}
}
}
output{
if [type]=="accesslog"{
stdout{ codec => "rubydebug" }
elasticsearch {
hosts => ["es-0001:9200", "es-0002:9200", "es-0003:9200"]
index => "weblog" #logstash索引
flush_size => 2000 #够2000字节写一次
idle_flush_time => 10 #空闲10秒
}}
}
4 启动验证
/opt/logstash/bin/logstash -f /etc/logstash/logstash.conf
5 结果
如果无数据请多访问几遍web