ELK Stack Install
ELKInstallELK 简介[ Elasticsearch ](ES)是一个基于Lucene实现的开源、分布式、Restful的全文本搜索引擎;此外,它还是一个分布式实时文档存储,其中每个文档的每个field均是被索引的数据,且可被搜索;也是一个带实时分析功能的分布式搜索引擎,能够扩展至数以百计的节点实时处理PB级的数据。ES Cluster工作过程:启动时,通过...
ELK Install
ELK 简介
[ Elasticsearch ](ES)是一个基于Lucene实现的开源、分布式、Restful的全文本搜索引擎;此外,它还是一个分布式实时文档存储,其中每个文档的每个field均是被索引的数据,且可被搜索;也是一个带实时分析功能的分布式搜索引擎,能够扩展至数以百计的节点实时处理PB级的数据。
ES Cluster工作过程:
启动时,通过多播(默认)或单播方式在9300/tcp查找同一集群中的其它节点,并与之建立通信。集群中的所有节点会选举出一个主节点负责管理整个集群状态,以及在集群范围内决定各shards的分布方式。站在用户角度而言,每个均可接收并响应用户的各类请求。
集群有状态:green, red, yellow
[ Logstash ]:支持多数据获取机制,通过TCP/UDP协议、文件、syslog、windows EventLogs及STDIN等;获取到数据后,它支持对数据执行过滤、修改等操作;
[ Kibana ] : 数据可视化平台
架构图
环境准备
关闭防火墙,清空iptables规则,关闭Selinux
Host | IP | Server |
---|---|---|
node1.zyxasr.com | 192.168.1.106 | Elasticsearch, Kibana |
node2.zyxasr.com | 192.168.1.104 | Logstash-Server |
node3.zyxasr.com | 192.168.1.101 | Redis-Server |
node4.zyxasr.com | 192.168.1.107 | Nginx-Server, Logstash-Agent |
node4
准备epel源
yum install nginx
启动nginx
systemctl start nginx
下载logstash rpm安装包
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.rpm
准备jdk,最新的logstash任然并为支持jdk-10,所以我们使用openjdk-1.8
yum install java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
创建logstash的运行文件
vim /etc/logstash/conf.d/sample.conf
#选择input plugin为file,导入nginx的日志文件
#输出output plugin为redis, redis服务器地址为192.168.1.107
input {
file {
path => ["/var/log/nginx/access.log"]
type => "nginx"
start_position => "beginning"
}
}
output {
if [type] == "nginx" {
redis {
host => ["192.168.1.101"]
id => "My_Redis_Monitor"
db => "1"
key => "nginx"
data_type => ["list"]
}
}
}
准备Redis-Server
node3
下载redis
yum install redis
修改redis配置文件,使其对外部主机提供服务
sed -i "/bind 127.0.0.1/c bind 0.0.0.0" /etc/redis.conf
启动redis
systemctl start redis
部署logstash-server
node2
安装jdk-1.8,以及logstash
编辑logstash的grok-pattern文件,为nginx提供解析
vim /usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/nginx
# nginx
NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip} - %{NOTSPACE:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NOTSPACE:http_x_forwarded_for}
编辑logstash运行文件
vim /etc/logstash/conf.d/sample.conf
input {
redis {
host => ["192.168.1.107"]
db => "1"
data_type => ["list"]
key => "nginx"
}
}
filter {
grok {
match => { "messages" => "%{NGINXACCESS}" }
}
}
output {
elasticsearch {
hosts => ["192.168.1.106:9200"]
index => "redis_nginx-%{+YYYY.MM.dd}"
}
}
配置elasticsearch和kibana
node1
安装jdk-1.8以及 elasticsearch和kibana
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.rpm
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-x86_64.rpm
安装elasticsearch和kibana
修改elasticsearch配置文件
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: My-ElasticSearch
node.name: node1.zyxasr.com
node.master: true
network.host: 192.168.1.106
http.port: 9200
启动elasticsearch
systemctl start elasticsearch 启动速度和主机性能有关,可以稍等片刻
修改kibana配置文件
vim /etc/kibana/kibana.yml
elasticsearch.url: "http://192.168.1.106:9200"
启动kibana
systemctl start kibana
查看es和kibana监听端口
netstat -tnlp
tcp 0 0 192.168.1.106:5601 0.0.0.0:* LISTEN 8485/node
tcp6 0 0 192.168.1.106:9200 :::* LISTEN 8019/java
tcp6 0 0 192.168.1.106:9300 :::* LISTEN 8019/java
查看kibana的Dashboard
在Management 选择redis-nginx之后,打开Discover即可看到如下信息
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)