ELK----介绍 ----部署elasticsearch 和kibana(es内存限制,密码修改),head插件

#ELK介绍

1. 什么是 ELK?

通俗来讲,ELK 是由 Elasticsearch、Logstash、Kibana 、filebeat 三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又称为 ELK stack,
ELK stack 的主要优点有如下几个:

  1. 处理方式灵活: elasticsearch 是实时全文索引,具有强大的搜索功能
  2. 配置相对简单:elasticsearch 全部使用 JSON 接口,logstash 使用模块配置,kibana 的配置文件部分更简单。
  3. 检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
  4. 集群线性扩展:elasticsearch 和 logstash 都可以灵活线性扩展
  5. 前端操作绚丽:kibana 的前端设计比较绚丽,而且操作简单

2. 什么是 Elasticsearch

两个端口
9200用户访问
9300集群之间做同步使用

是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索、支持分布式可实现高可用、提供 API 接口,可以处理大规模日志数据,比如 Nginx、Tomcat、系统日志等功能。
在这里插入图片描述

3. 什么是 Logstash

可以通过插件实现日志收集和转发,支持日志过滤,支持普通 log、自定义 json格式的日志解析
在这里插入图片描述

4. 什么是 kibana

也就是所谓的dashboard图形化界面
主要是通过接口调用 elasticsearch 的数据,并进行前端数据可视化的展现

在这里插入图片描述

5. 为什么使用 ELK?

ELK 组件在海量日志系统的运维中,可用于解决以下主要问题

  • 分布式日志数据统一收集,实现集中式查询和管理
  • 故障排查
  • 安全信息和事件管理
  • 报表功能

ELK 组件在大数据运维系统中,主要可解决问题如下:

  • 日志查询,问题排查,故障恢复,故障自愈
  • 应用日志分析,错误报警
  • 性能分析,用户行为分析

redis用于临时缓存:因为elasticsearch的性能不一定能够撑得住
从redis取出日志:日志只能被去一次,就会被删除
在这里插入图片描述

一. elasticsearch 部署

在这里插入图片描述
这里所用的包都为7.11.2版本的
https://www.elastic.co/cn/downloads/
在这里插入图片描述

1. 环境初始化(两台elasticsearch)

两台elasticsearch会相互同步

注意查看依赖于那个java版本

最小化安装 Centos 7.2 x86_64 操作系统的虚拟机,vcpu 2,内存 4G 或更多,操作系统盘50G,主机名设置规则为linux-hostX.exmaple.com,其中host1和host2为elasticsearch
服务器,为保证效果特额外添加一块单独的数据磁盘大小为 50G 并格式化挂载到/elk

  1. 主机名和磁盘挂载
hostnamectl set-hostname elk-1.com
mkfs.xfs /dev/sdb 

mkdir /elk
mount /dev/sdb /elk/
echo " /dev/sdb /elk/ xfs defaults 0 0" >> /etc/fstab

mount -a

  1. 防火墙和 selinux
    关闭防所有服务器的火墙和 selinux,包括 web 服务器、redis 和 logstash 服务器的防火墙和 selinux 全部关闭,此步骤是为了避免出现因为防火墙策略或 selinux 安全权限引起的各种未知问题,以下只显示了 host1 和 host2 的命令,但是其他服务器都要执行。
systemctl disable firewalld
systemctl disable NetworkManager
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf


  1. 各服务器配置本地域名解析
vim /etc/hosts
192.168.66.101 elk-1.com
192.168.66.102 elk-2.com
192.168.66.103 elk-3.com
192.168.66.104 elk-4.com
192.168.66.105 elk-5.com
...
  1. 设置 epel 源、安装基本操作命令并同步时间
wget -O /etc/yum.repos.d/epel.repo  http://mirrors.aliyun.com/repo/epel-7.repo

yum install -y net-tools vim lrzsz tree screen lsof tcpdump wget ntpdate

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "*/5 * * * * ntpdate time1.aliyun.com &> /dev/null && 
hwclock -w" >> /var/spool/cron/root

systemctl restart crond

#重启检查各项配置是否生效,没有问题的话给虚拟机做快照以方便后期还原
reboot 

2. 配置java环境

注意查看依赖于那个java版本

  1. 在两台服务器准备 java 环境
    因为 elasticsearch 服务运行需要 java 环境,因此两台 elasticsearch 服务器需要安装 java 环境,可以使用以下方式安装
    下 载 地 址 : http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
tar xvf jdk-11-linux-x64.tar.gz -C /usr/local/

ln -sv /usr/local/src/jdk1.8.0_121 /usr/local/jdk
ln -sv /usr/local/jdk/bin/java /usr/bin/

vim /etc/profile
export HISTTIMEFORMAT="%F %T `whoami` "
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

java -version

3. elasticsearch 并安装

下载地址:https://www.elastic.co/downloads/elasticsearch
在这里插入图片描述

两台服务器分别安装 elasticsearch:

yum -y localinstall elasticsearch-5.3.0.rpm
	或者
安装deb包
	-i安装     -c查看有什么内容
dpkg -i elasticsearch-7.12.1-amd64.deb

ES配置,及内存

编辑各 elasticsearch 服务器的服务配置文件

grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml 
	 #ELK 的集群名称,名称相同即属于是同一个集群
cluster.name: ELK-Cluster
	#本机在集群内的节点名称(必须不一样)
node.name: elk-node1 

path.data: /elk/data #数据保存目录
path.logs: /elk/logs #日志保存目

	#先不要更改这个可能   会起不来
	#服务启动的时候锁定足够的内存,防止数据写入swap
#bootstrap.memory_lock: true 
network.host: 0.0.0.0 #监听 IP
http.port: 9200

cluster.initial_master_nodes: ["192.168.66.101", "192.168.55.102"]

修改内存限制,并同步配置文件
内存锁定的配置参数
https://discuss.elastic.co/t/memory-lock-not-working/70576

vim /usr/lib/systemd/system/elasticsearch.service #修改内存
限制
LimitMEMLOCK=infinity #无限制使用内存

vim /etc/elasticsearch/jvm.options
 -Xms2g
 -Xmx2g #最小和最大内存限制,为什么最小和最大设置一样大?

https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
官方配置文档最大建议 30G 以内。将以上配置文件 scp 到 host2 并修改自己的 node 名称
修改限制–针对于elasticsearch
/etc/security/limits.conf

elasticsearch               soft    core               unlimited
elasticsearch               hard    core             unlimited
elasticsearch                   soft    nproc            1000000
elasticsearch                   hard    nproc          1000000
elasticsearch                   soft    nofile            1000000
elasticsearch               hard    nofile          1000000
elasticsearch               soft    memlock      32000
elasticsearch               hard    memlock    32000
elasticsearch               soft    msgqueue    8192000
elasticsearch               hard    msgqueue  8192000
scp /etc/elasticsearch/elasticsearch.yml  192.168.15.12:/etc/elasticsearch/

拷贝过去注意修改`node.name:` 编号

目录权限更改
各服务器创建数据和日志目录并修改目录权限为 elasticsearch

mkdir /elk/{data,logs}

chown elasticsearch.elasticsearch /elk/ -R

启动 elasticsearch 服务并验证

systemctl start elasticsearch
systemctl enable elasticsearch

tail -f /elk/logs/

在这里插入图片描述
如果出现这种错误
在这里插入图片描述
说明yml文件权限不够

chown elasticsearch.elasticsearch /etc/elasticsearch/elasticsearch.yml

验证端口监听成功:应用程序为java

在这里插入图片描述
通过浏览器访问 elasticsearch 服务端口
192.168.66.101:9200

在这里插入图片描述

一.二 监控 elasticsearch 集群状态

@@安装 elasticsearch 插件之 head

可以实现对 elasticsearch 集群的状态监控与管理配置等功能。

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

yum install -y npm

NPM 的全称是 Node Package Manager,是随同 NodeJS 一起安装的包管理和分发工具,它很方便让 JavaScript 开发者下载、安装、上传以及管理已经安装的包。

cd /usr/local/src/
[root@linux-host1 src]#git clone git://github.com/mobz/elasticsearch-head.git 
[root@linux-host1 src]# cd elasticsearch-head/
[root@linux-host1 elasticsearch-head]# yum install npm -y
[root@linux-host1 elasticsearch-head]# npm install grunt -save
[root@linux-host2 elasticsearch-head]# ll node_modules/grunt #确认生成文件
[root@linux-host1 elasticsearch-head]# npm install #执行安装
[root@linux-host1 elasticsearch-head]# npm run start & #后台启动服务

修改 elasticsearch 服务配置文件
开启跨域访问支持,然后重启 elasticsearch 服务:

[root@linux-host1 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@linux-host1 ~]# /etc/init.d/elasticsearch restart

docker 版本启动 head 插件


[root@linux-host1 ~]# yum install docker -y
[root@linux-host1 ~]# systemctl start docker && systemctl enable docker
[root@linux-host1 ~]# docker run -d -p 9100:9100 mobz/

在这里插入图片描述
由于宿主机内存不足,系统内核会将占用内存最大的进程强制 kill 掉,以保证系统的正常运行以及其他服务的正常运行
在这里插入图片描述
Master 与 Slave 的区别
Master 的职责:统计各 node 节点状态信息、集群状态信息统计、索引的创建和删除、索引分配的管理、关闭 node 节点等
Slave 的职责:从 master 同步数据、等待机会成为 Master

导入本地的 docker 镜像

[root@linux-host2 ~]# docker save docker.io/mobz/elasticsearch-head > 
/opt/elasticsearch-head-docker.tar.gz #导出镜像
[root@linux-host1 src]# docker load < /opt/elasticsearch-head-docker.tar.gz #导入

[root@linux-host1 src]# docker images#验证
	#从本地 docker images 启动容器
[root@linux-host1 src]# docker run -d -p 9100:9100 --name elastic docker.io/mobz/elasticsearch-head:5 

在这里插入图片描述

1. 通过 shell 命令获取集群状态

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


curl -sXGET  http://ip:19201/_cat/health

获取到的是一个 json 格式的返回值,那就可以通过 python 对其中的信息进行分析,例如对 status 进行分析,
green(绿色)就是运行在正常
yellow(黄色)表示副本分片丢失,
red(红色)表示主分片丢失

2. python 脚本

[root@linux-host1 ~]# cat els-cluster-monitor.py 
#!/usr/bin/env python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
import subprocess
body = ""
false="false"
obj = subprocess.Popen(("curl -sXGET http://192.168.15.211:9200/_cluster/health?pretty=true"),shell=True, 
stdout=subprocess.PIPE)
data = obj.stdout.read()
data1 = eval(data)
status = data1.get("status")
if status == "green":
 print("50")
else:
 print("100")

结果

python els-cluster-monitor.py 
50

3. zabbix 添加监控

二. kibana 部署及日志收集

也就是所谓的dashboard图形化界面

Kibana 是一个通过调用 elasticsearch 服务器进行图形化展示搜索结果的开源项 目。

不需要java环境

安装并配置 kibana

可以通过 rpm 包或者二进制的方式进行安装
rpm 方式

yum localinstall kibana-5.3.0-x86_64.rpm

deb包方式:必须于elasticearch版本一致

dpkg -i 包.deb
grep -n "^[a-Z]" /etc/kibana/kibana.yml 
server.port: 5601 #监听端口
server.host: "0.0.0.0" #监听地址
	#elasticsearch服务器地址
elasticsearch.hosts: ["http://192.168.66.101:9200"]
i18n.locale: "zh-CN" #支持中文

启动 kibana 服务并验证:

systemctl start kibana
systemctl enable kibana
ss -tnl | grep 5601

可能不需要这一步
如果 连不上es----可能是权限问题
修改这个文件

在这里插入图片描述

可能需要长时间才能启动
查看状态

http://192.168.66.101:5601/status

在这里插入图片描述

http://192.168.66.101:5601/

kibana 验证数据
如果默认没有显示柱状的图,可能是最近没有写入新的数据,可以查看较长日期当中的数据或者通过 logstash 新写入数据即可
在这里插入图片描述

三、es、kibana修改密码

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值