ELK-Elasticsearch v7.6.1集群部署与使用

官网:Multiline codec plugin | Logstash Reference [8.2] | Elastic

Master 与 Slave  的区别

Master 的职责:
统计各 node 节点状态信息、集群状态信息统计、索引的创建和删除、索引分配的管理、关闭 node 节点等

Slave 的职责:从 master 同步数据、等待机会成为 Master

分片:
早期版本ES v5.X v2.x V6.X默认是5个分片,v7.X改成默认一个分片,把数据拆成5份写入 ES集群

16核心,30G等于物理机内存的一半,磁盘 2T 8块15K 600G
elasticsearch:
1.x 2.x 5.x 6.x 都没有集成JDK的安装包,也就是需要自己安装java环境
7.x 会单独出现带JDK的安装包和不带JDK,带JDK的不需要自己在服务器安装java,如果不带JDK仍然需要自己去安装java

elasticsearch优化部分:
  一个是内核参数
  一个是资源限制
  需要允许elasticsearch用户占用系统的资源上限

内存优化
  推荐是宿主机的一半内存,最大不超过30G

 

索引=index

index的创建机制:
  按天创建
    访问量比较大的业务日志,比如各种web服务的访问日志
  按周创建
    网络设备的日志,web服务错误日志
  按月创建
    系统日志,/var/log/message /var/log/syslog


分片:将数据分布式存储到不同的主机,加速存储与数据读取。负责数据读写。
副本:每个主分片的备份,当主分片运行的节点挂了,提升为主分片。

ES集群状态:
  绿色状态:
    表示集群各节点运行正常,而且没有丢失任何数据,各主分片和副本分片都运行正常
  黄色状态:
    表示由于某个节点宕机或者其他情况引起的,node节点无法连接、副本分片丢失等场景,但是还没有丢失任何数据
  红色状态:
    表示由于某个节点宕机或者其他情况引起的主分片丢失及数据丢失
监控:调用内置API,比如调用内置health API,对status code 进行判断

 一、RPM部署elastisearch

官网下载:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-6-1
清华镜像:https://mirrors.tuna.tsinghua.edu.cn/

1.1 挂载磁盘

]# mkdir /elk
[root@nginx-3 ~]# mount /dev/sdb /elk/
[root@nginx-3 ~]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs          tmpfs     1.9G   13M  1.9G   1% /run
tmpfs          tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda3      xfs        48G  5.6G   43G  12% /
/dev/sda1      xfs       297M  163M  135M  55% /boot
tmpfs          tmpfs     378M   12K  378M   1% /run/user/42
tmpfs          tmpfs     378M     0  378M   0% /run/user/0
/dev/sdb       xfs        50G   33M   50G   1% /elk

1.2 修改配置

 ]# vim elasticsearch.yml

cluster.name: magedu-elastisearch-cluster   //集群名称必须一致
node.name: node1   //节点名称唯一
path.data: /elk/esdata
path.logs: /elk/eslogs
#bootstrap.memory_lock: true  //内存限制,默认1G
network.host: 0.0.0.0
http.port: 9200  //客户端,内部通讯端口9300
discovery.seed_hosts: ["192.168.64.130", "192.168.64.131", "192.168.64.132"]   //集群发现
cluster.initial_master_nodes: ["192.168.64.130", "192.168.64.131", "192.168.64.132"]   //哪些节点可以被选举为master
gateway.recover_after_nodes: 2   //半数以上机制,半数以上启动恢复
#设置是否可以通过正则或者_all 删除或者关闭索引库,默认 true 表示必须需要显式指定索引库名称,生产环境建议设置为 true,删除索引库的时候必须指定,否则可能会误删索引库中的索引库。
action.destructive_requires_name: true

 1.3 创建用户

因elastisearch拒绝以root启动服务,因此需要创建用户以及修改目录权限,确保用户有权限访问目录。

useradd elasticsearch
mkdir -p /elk/{esdata,eslogs}

修改权限

chown elasticsearch:elasticsearch 
/elk/ -R chown -R elasticsearch:elasticsearch elk/
chown -R elasticsearch:elasticsearch /etc/elasticsearch/
  127  chown -R  es:es /es7/
  128  chown -R  es:es /data/
  141  chown -R es:es /etc/elasticsearch/
  144  chown -R es:es /usr/share/elasticsearch
  159  chown -R es:es /etc/sysconfig/elasticsearch
  163  chown -R es:es /var/log/elasticsearch

1.4 修改内核参数

elasticsearch用户拥有的内存权限太小,至少需要262144,不然启动报错:

ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: Elasticsearch did not exit normally - check the logs at /elk/eslogs/magedu-elastisearch-cluster.log

解决方法:

vim /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p
[root@iZbp16v2hjkzko44az1ku6Z data]# grep "^[-]"  /etc/elasticsearch/jvm.options
-Xms32g
-Xmx32g

1.5 修改内存限制 , 并同步 配置 文件

[root@linux-host1 ~]# vim /usr/lib/systemd/system/elasticsearch.service #修改内存限制
LimitMEMLOCK=infinity #无限制使用内存

补充:二进制部署es修改内存限制

root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
* soft nproc   unlimited
* hard nproc   unlimited
* soft memlock unlimited
* hard memlock unlimited
* soft core    unlimited
* hard core    unlimited
* soft stack   unlimited
* hard stack   unlimited
es soft nofile 65536
es hard nofile 65536

1.6 查看端口,测试访问页面

]# netstat  -ntpl | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      6012/java

访问:

192.168.64.130:9200

测试

[root@iZbp16v2hjkzko44az1ku6Z data]# curl localhost:9200
{
  "name" : "iZbp16v2hjkzko44az1ku6Z",
  "cluster_name" : "konne-es-0602",
  "cluster_uuid" : "DdJCCmMgTviW5-KtY_Pemw",
  "version" : {
    "number" : "7.16.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "2b937c44140b6559905130a8650c64dbd0879cfb",
    "build_date" : "2021-12-18T19:42:46.604893745Z",
    "build_snapshot" : false,
    "lucene_version" : "8.10.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

二、安装 elasticsearch  插件

2.1  head

插件是为了完成不同的功能,官方提供了一些插件但大部分是收费的,另外也有一些开发爱好者提供的插件,可以实现对 elasticsearch 集群的状态监控与管理配置等功能。

安装 5.x 版本的 的 head 插件:
在 elasticsearch 5.x 版本以后不再支持直接安装 head 插件,而是需要通过启动一个服务方式

git 地址:https://github.com/mobz/elasticsearch-head

docker run -d -p 9100:9100 mobz/elasticsearch-head:5

 连接集群

 2.1 cerebro插件安装

新开源的 elasticsearch 集群 web 管理程序,需要 java1.8 或者更高版本,https://github.com/lmenezes/cerebro

cd /usr/local/src/cerebro-0.8.5
vim conf/application.conf

hosts = [
  {
      host = "http://172.31.0.201:9200"
      name = "magedu"
      # headers-whitelist = [ "x-proxy-user", "x-proxy-roles", "X-Forwarded-For" ]
  }

 启动

 ./bin/cerebro

 节点信息统计

 2.3 监控 h elasticsearch  集群状态

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_cluster_health.html

curl -sXGET http://192.168.15.211:9200/_cluster/health?pretty=true

 

 三、logstash安装

Logstash 是一个开源的数据收集引擎,可以水平伸缩,而且 logstash 整个 ELK当中拥有最多插件的一个组件,其可以接收来自不同来源的数据并统一输出到指定的且可以是多个不同目的地。

https://github.com/elastic/logstash

关闭防火墙和 selinux,并且安装 java 环境
[root@linux-host3 ~]# systemctl stop firewalld
[root@linux-host3 ~]# systemctl disable firewalld
[root@linux-host3 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
[root@linux-host3 ~]# yum install jdk-8u121-linux-x64.rpm
[root@linux-host3 ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
[root@linux-host3 ~]# reboot

 在清华镜像站下载安装包

[root@linux-host3 ~]# yum install logstash-5.3.0.rpm
[root@linux-host3 ~]# chown logstash.logstash /usr/share/logstash/data/queue –R
#权限更改为 logstash 用户和组,否则启动的时候日志报错

 3.1 测试  logstash 

   测试标准输入和输出

[root@linux-host3 ~]# /usr/share/logstash/bin/logstash -e 'input { stdin{} }  output { stdout{ codec => rubydebug }}' #标准输入和输出
hello
{
    "@timestamp" => 2017-04-20T02:30:01.600Z, #当前事件的发生时间,
    "@version" => "1", #事件版本号,一个事件就是一个 ruby 对象
    "host" => "linux-host3.exmaple.com", #标记事件发生在哪里
    "message" => "hello" #消息的具体内容
}

 测试输出到文件

[root@linux-host3 ~]# /usr/share/logstash/bin/logstash -e 'input { stdin{} }   output { file { path => "/tmp/log-%{+YYYY.MM.dd}messages.gz"}}'
hello
11:01:15.229 [[main]>worker1] INFO  logstash.outputs.file - Opening file
{:path=>"/tmp/log-2017-04-20messages.gz"}

[root@linux-host3 ~]# tail /tmp/log-2017-04-20messages.gz #打开文件验证

  测试输出到 elasticsearch

[root@linux-host3 ~]# /usr/share/logstash/bin/logstash -e 'input { stdin{} }   output  {  elasticsearch  {hosts  =>  ["192.168.15.11:9200"]  index  => "mytest-%{+YYYY.MM.dd}" }}'

 elasticsearch  服务器验证收到数据

[root@linux-host1 ~]# ll /elk/data/nodes/0/indices/ #5.x 版本以后不再显示原名称
total 0
drwxr-xr-x 8 elasticsearch elasticsearch 59 Apr 19 19:08 JbnPSBGxQ_WbxT8jF5-TLw
drwxr-xr-x 8 elasticsearch elasticsearch 59 Apr 19 20:18 kZk1UbsjTliYfooevuQVdQ
drwxr-xr-x 4 elasticsearch elasticsearch 27 Apr 19 19:24 m6EiWqngS0C1bspg8JtmBg
drwxr-xr-x 8 elasticsearch elasticsearch 59 Apr 20 08:49 YhtJ1dEXSOa0YEKhe6HW8w

四、kibana  部署 及日志 收集

Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作,可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作,您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。

https://github.com/elastic/kibana

默认端口:5601

[root@linux-host1 ~]# yum localinstall kibana-5.3.0-x86_64.rpm
[root@linux
-host1 ~]# grep -n "^[a-Z]" /etc/kibana/kibana.yml 2:server.port: 5601 #监听端口 7:server.host: "0.0.0.0" #监听地址 28:elasticsearch.hosts: ["http://192.168.7.101:9200"] 114:i18n.locale: "zh-CN" #支持中文 21:elasticsearch.url: http://192.168.15.11:9200 #elasticsearch 服务器地址

 

posted @ 2022-04-16 22:48  不会跳舞的胖子  阅读(311)  评论(0编辑  收藏  举报