elk搭建线上实战

整体部署架构
在这里插入图片描述

一、基础环境介绍

系统:CentOS Linux release 7.6.1810 (Core)

机器环境
代理机:111.60.23.165(安全考虑所以通过代理机进行端口转发)
elk-node-01: 10.200.58.100 master机器
elk-node-02: 10.200.58.101 slave机器
redis: 10.200.58.100
logstash: 10.200.58.100

二、代理机安装haproxy

[root@yh-elk ~] # wget http://download.openpkg.org/components/cache/haproxy/haproxy-1.8.10.tar.gz
[root@yh-elk ~] # tar -xvf haproxy-1.8.10.tar.gz 
[root@yh-elk ~] # make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
[root@yh-elk ~] # make install PREFIX=/usr/local/haproxy
[root@yh-elk ~] # mkdir /usr/local/haproxy/conf
[root@yh-elk ~] # cp examples/option-http_proxy.cfg /usr/local/haproxy/conf/haproxy.cfg

配置文件添加
在这里插入图片描述

完成配置后启动haproxy

[root@yh-elk ~] # /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
	iptables开放配置的端口
	[root@yh-elk ~] # iptables -I INPUT -p tcp --dport 19200 -j ACCEPT
	[root@yh-elk ~] # iptables -I INPUT -p tcp --dport 19201 -j ACCEPT
	[root@yh-elk ~] # iptables -I INPUT -p tcp --dport 15601 -j ACCEPT

通过访问宿主机的19200,19201端口分别转发到elk-node1,elk-node2的9200端口
通过访问宿主机的15601端口转发到elk-node1的5601端口

三、配置主备的elk(可同步开始)

1.下载并安装GPG Key添加yum仓库

[root@elk-node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@elk-node1 ~]# vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

2.安装java环境elasticsearch和redis

[root@elk-node01 ~]# yum install -y elasticsearch
[root@elk-node01 ~]# yum install -y redis
[root@elk-node01 ~]# yum install -y java

3.创建数据目录,修改elasticsearch配置

[root@elk-node01 ~]# mkdir -p /data/es-data
[root@elk-node01 ~]# vim /etc/elasticsearch/elasticsearch.yml        

cluster.name: huanqiu                            # 组名(同一个组,组名必须一致)
node.name: elk-node1                             # 节点名称,建议和主机名一致
path.data: /data/es-data                         # 数据存放的路径
path.logs: /var/log/elasticsearch/               # 日志存放的路径
bootstrap.mlockall: true                         # 锁住内存,不被使用到交换分区去
network.host: 0.0.0.0                            # 网络设置
http.port: 9200                                  # 端口
启动elasticsearch
[root@elk-node01 ~]# chown -R elasticsearch.elasticsearch /data/
[root@elk-node01 ~]# systemctl start elasticsearch
[root@elk-node01 ~]# systemctl status elasticsearch

通过代理机访问
http://111.60.23.165:19200/
返回如下则没问题
在这里插入图片描述

下载插件head

[root@elk-node1 src]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
[root@elk-node1 src]# systemctl restart elasticsearch

安装完成可测试数据读写
http://111.60.23.165:19200/_plugin/head/
"复合查询"下,选择GET选项,在/index-demo/test/后面输入上面POST结果中的id号,不输入内容,即{}括号里为空!
然后点击”验证JSON“->“提交请求”,观察右栏内就有了上面插入的数据了

安装kopf监控插件

[root@elk-node1 src]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
[root@elk-node1 src]# systemctl restart elasticsearch

访问插件
http://111.60.23.165:19200/_plugin/kopf/#!/cluster
可在页面看到节点状态

elk-node-02配置
前面配置和node-01相同在elasticsearch配置文件加上集群配置

[root@elk-node2 src]# vim /etc/elasticsearch/elasticsearch.yml
discovery.zen.ping.unicast.hosts: ["10.200.58.100", "10.200.58.101"]

配置完成可登录
http://111.60.23.165:19201/_plugin/kopf/#!/cluster 查看是否两个节点是集群状态

基本的输入输出测试

[root@elk-node2 ~]# /opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{} }'	

可在终端写上一些数据
返回页面查看数据是否可以读取
master收集到日志后,会把一部分数据碎片到salve上(随机的一部分数据),master和slave又都会各自做副本,并把副本放到对方机器上,这样就保证了数据不会丢失。

抓取日志filebeat安装配置

yum -y install filebeat
vim /etc/filebeat/filebeat.yml
filebeat.prospectors:
	- input_type: log
	paths:
	- /data/tuya-live.broadcast/logs/admin*      #读取日志路径
	tags: ["livebroadcast-admin-service"]        #标记
	index.number_of_shards: 3s
output.logstash:
	hosts: ["10.200.58.100:5044"]

配置完成重启 systemctl filebeat restart
查看状态 systemctl filebeat restart
filebeat有三种输出方式
将读取的日志输出到redis,输出到elasticsearch或输出到logstash
这里采用的是输出到logstash

logstash安装配置

	yum -y install logstash
	vim /etc/logstash/conf.d/shipperlog.conf   
	input{
    		beats {
        		port => "5044"
    		}
	}
	output{
		if "livebroadcast-admin-service" in [tags]{
	 redis  {
            		host => "10.200.58.100"
           		port => "6379"
           		db => "1"
            		data_type => "list"
           	       key => "livebroadcast-admin-service"
   		 }
 }

获取filebeat传输的数据写进redis
通过后台启动
启动前可检查配置

/opt/logstash/bin/logstash -f /etc/logstash/conf.d/shipperlog.conf &
/opt/logstash/bin/logstash -f shipperlog.conf --configtest
vim /etc/logstash/conf.d/redis_in.conf 
input {
	  redis {
       		 host => "10.200.58.100"
        		 port => "6379"
        		 db => "1"
        		 data_type => "list"
       		 key => "livebroadcast-admin-service"
		}

}
output {
	 elasticsearch {
        hosts => ["10.200.58.100:9200"]
        index => "livebroadcast-admin-service-%{+YYYY.MM.dd}"
 }
}

从redis读取数据写入elasticsearch
通过后台启动

/opt/logstash/bin/logstash -f /etc/logstash/conf.d/redis_in.conf &

安装配置kibana
kibana的安装:

[root@elk-node1 ~]# cd /usr/local/src
[root@elk-node1 src]# wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
[root@elk-node1 src]# tar zxf kibana-4.3.1-linux-x64.tar.gz
[root@elk-node1 src]# mv kibana-4.3.1-linux-x64 /usr/local/
[root@elk-node1 src]# ln -s /usr/local/kibana-4.3.1-linux-x64/ /usr/local/kibana

修改配置文件:

[root@elk-node1 config]# pwd
/usr/local/kibana/config
[root@elk-node1 config]# cp kibana.yml kibana.yml.bak
[root@elk-node1 config]# vim kibana.yml 
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://10.200.58.100:9200"
kibana.index: ".kibana"        

注意这个.Kibana索引用来存储数据,千万不要删除了它。它是将es数据通过kibana进行web展示的关键。
这个配置后,在es的web界面里就会看到这个.kibana索引。

配置完成启动kibana
systemctl kibana restart
通过页面查看
111.60.23.165:15601

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值