首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ELK 集群部署

ELK 集群部署

作者头像
Kevin song
发布2020-04-27 10:18:38
1.6K0
发布2020-04-27 10:18:38
举报

Elasticsearch介绍

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。

Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。”Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。“相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引,就不能更改主分片的数量。

elasticsearch 组件介绍

Elasticsearch

基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展、高可用和管理便捷性而设计。

Logstash

作为Elasicsearch常用的实时数据采集引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源,是Elastic Stack 的重要组成部分

Kibana

为 Elasticsearch设计的开源分析和可视化平台。你可以使用 Kibana来搜索,查看存储在Elasticsearch索引中的数据并与之交互。你可以很容易实现高级的数据分析和可视化,以图标的形式展现出来。

Filebeat

进行文件和目录采集,主要用于收集日志数据传输至Elasticsearch和Logstash。

Heartbeat

系统间连通性检测,比如icmp,tcp, http等系统的连通性监控。

Winlogbeat

用于密切监控基于Windows的基础设施上发生的事件。使用Winlogbeat,将 Windows事件日志流式传输至Elasticsearch和Logstash。

metricbeat

进行指标采集,指标可以是系统的,也可以是众多中间件产品的,主要用于监控系统和软件的性能。

packetbeat

通过网络抓包、协议分析,对一些请求响应式的系统通信进行监控和数据收集,可以收集到很多常规方式无法收集到的信息。

elasticsearch-head

一款专门针对于elasticsearch的客户端web 管理工具。

Elasticsearch架构

集群主机清单

Hostname

Server IP

Software Version

Role

elk-node1

192.168.99.185

elasticsearch-6.8.4-1.noarchlogstash-6.8.4-1.noarchkibana-6.8.4-1.x86_64openjdk version "1.8.0_242"

es master data nodekibana weblogstash

elk-node2

192.168.99.186

elasticsearch-6.8.4-1.noarchlogstash-6.8.4-1.noarchopenjdk version "1.8.0_242"

es data nodekibana weblogstash

Linux系统环境

系统版本

cat  /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core)

安装软件包

yum install epel-releaseyum -y install sysstat traceroute  net-tools telnet  tree net-snmp-utils htop vim lrzsz tcpdump wget git

关闭selinux

永久关闭将配置文件中参数selinux改为disabled

临时关闭setenforce 0

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

修改ulimit(最大进程数和最大文件打开数)

vim /etc/security/limits.conf *               soft      nofile          65536*               hard      nofile          65536*               soft      nproc           65536*               hard      nproc           65536

* 代表针对所有用户

nproc 是代表最大进程数

nofile 是代表最大文件打开数

系统优化

vim /etc/sysctl.conf#关闭交换内存vm.swappiness =0 #影响java线程数量,建议修改为262144或者更高vm.max_map_count= 262144#优化内核listen连接net.core.somaxconn=65535#最大打开文件描述符数,建议修改为655360或者更高fs.file-max=655360                 #开启ipv4转发net.ipv4.ip_forward= 1

激活设置

sysctl -p

修改完需要重启系统

Elasticsearch部署

Elasticsearch 版本信息

[root@elk-node1 mnt]# rpm -qa elasticsearch logstash  kibana  heartbeat-elastickibana-6.8.4-1.x86_64logstash-6.8.4-1.noarchelasticsearch-6.8.4-1.noarchheartbeat-elastic-6.8.0-1.x86_64 

yum 配置

[root@elk-node1 mnt]# cat  /etc/yum.repos.d/elk.repo [elk]name=elkbaseurl=https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-6.x/enable=1gpgcheck=0

elk安装

yum install java-1.8.0-openjdk yum install elasticsearch logstash kibana  filebeat nodejs -y

Elasticsearch配置文件

[root@elk-node1 ~]# grep -v ^# /etc/elasticsearch/elasticsearch.ymlcluster.name: elk-clusternode.name: elk-node1node.master: truenode.data: truepath.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchnetwork.host: 192.168.99.185http.port: 9200discovery.zen.ping.unicast.hosts: ["192.168.99.185", "192.168.99.186"]discovery.zen.minimum_master_nodes: 1http.cors.enabled: truehttp.cors.allow-origin: "*"#########################################################################[root@elk-node2 ~]#  grep -v ^# /etc/elasticsearch/elasticsearch.ymlcluster.name: elk-clusternode.name: elk-node2node.master: falsenode.data: truepath.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchnetwork.host: 192.168.99.186http.port: 9200discovery.zen.ping.unicast.hosts: ["192.168.99.185", "192.168.99.186"]discovery.zen.minimum_master_nodes: 1#启动服务并设置开机启动[root@elk-node1 ~]# systemctl start elasticsearch && systemctl enable  elasticsearch#查看服务端口监听情况[root@elk-node1 ~]# netstat -auntlp |grep -E "9200|9300"

Elasticsearch JVM调优

#elasticsearch内存资源配置文件为jvm.options,建议修改服务器物理内存的一半[root@elk-node1 conf.d]# vim /etc/elasticsearch/jvm.options-Xms8g-Xmx8g

es API

#查看Elasticsearch集群状态("*" 为Master 节点)[root@elk-node1 ~]# curl http://192.168.99.185:9200/_cat/nodes?vip             heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name192.168.99.186           10          84  13    0.04    0.09     0.23 mdi       -      elk-node2192.168.99.185           42          93   6    0.57    0.59     0.58 mdi       *      elk-node1#查看集群健康[root@elk-node1 /]# curl -u  http://192.168.99.185:9200/_cluster/health#查看索引[root@elk-node1 /]# curl  -XGET http://192.168.99.185:9200/_cat/indices | sort#删除索引[root@elk-node1 /]# curl  -XDELETE http://192.168.99.185:9200/XXXXX

Kibana 部署

kibana 配置

[root@elk-node1 ~]# egrep -v "*#|^$" /etc/kibana/kibana.yml server.port: 5601server.host: "192.168.99.185"elasticsearch.hosts: ["http://192.168.99.185:9200"]kibana.index: ".kibana"i18n.locale: "zh-CN"#启动服务并设置开机启动[root@elk-node1 ~]# systemctl start kibana &&systemctl enable  kibana#查看服务端口监听情况[root@elk-node1 ~]# netstat -auntlp |grep 5601#Kibana访问方式http://192.168.99.185:5601

heartbeat部署

下载 heartbeat rpm 包

curl-L -O  https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-6.8.0-x86_64.rpm

安装 heartbeat 软件包

rpm-ivh heartbeat-6.8.0-x86_64.rpm

启动服务并设置开机启动

[root@elk-node1 ~]# systemctl start heartbeat-elastic && systemctl enable heartbeat-elastic

配置heartbeat 健康检查

[root@elk-node2 ~]# egrep  -v "*#|^$" /etc/heartbeat/heartbeat.yml heartbeat.config.monitors:  path: ${path.config}/monitors.d/*.yml  reload.enabled: false  reload.period: 5sheartbeat.monitors:- type: http  urls: ["http://192.168.99.185:9200","http://192.168.99.185:5601","http://192.168.99.186:9200"]  schedule: '@every 10s'- type: tcp  schedule: '@every 5s'  hosts: ["192.168.99.200:10051","192.168.99.51:3306"]setup.template.settings:  index.number_of_shards: 1  index.codec: best_compressionsetup.kibana:output.elasticsearch:  hosts: ["192.168.99.185:9200"]processors:  - add_host_metadata: ~  - add_cloud_metadata: ~

Kibana 查看运行时间

Kibana Authentication

Elastic在6.8.0 以上的版本核心安全功能免费提供。用户能够对网络流量进行加密、创建和管理用户、定义能够保护索引和集群级别访问权限的角色.为Kibana 提供用户身份验证;

基于免费的X-Pack kibana 认证的部署请查看公众号ELK专栏《Elastic Stack 6.8 X-Pack 安全功能部署》的文章

在6.8.0之前的版本通常使用 Nginx反向认证作为用户认证的方式

Nginx反向认证

kibana 默认无身份认证以至于数据完全暴露

#安装httpd-toolsyum install -y httpd-tools#生成认证文件htpasswd -c /mnt/kibanauser  admin#执行后会提示输入密码,admin为用户名,最后生成kibanauser文件#修改nginx配置文件server{    listen 8001;    server_name 172.18.0.75;    location / {    auth_basic "kibanalogin auth";    auth_basic_user_file    /mnt/kibanauser;    proxy_pass http://127.0.0.1:5601;    proxy_set_header Host $host:5601;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;    rewrite ^/kibana/(.*)$/$1 break;    proxy_redirect off;}#检查ngixn配置并重启nginx nginx-t systemctl   restart nginx#编辑Kibana文件vim /etc/kibana/kibana.yml#修改参数如下server.host: "127.0.0.1"   #修改这一步是为了禁止外部用户直接访问kibana页面,如果不修改这个参数的话也可以使用iptables限制外部用户直接访问本机的5601端口#重启kibanasystemctl restart kibana

访问 Nginx 代理

http://192.168.99.185:8001
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux系统环境
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档