企业运维实战--ELK日志分析平台之elasticsearch实战
- ELK日志分析平台-简介
- 安装elasticsearch
- elasticsearch集群部署
- 为集群添加监控管理
- 监控1
- 监控2
ELK日志分析平台-简介
ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成:
1)ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
在elasticsearch中,所有节点的数据是均等的。
2)Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
3)Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
ELK整体解决方案:
Logstash是一个ETL工具,负责从每台机器抓取日志数据,对数据进行格式转换和处理后,输出到Elasticsearch中存储。
Elasticsearch是一个分布式搜索引擎和分析引擎,用于数据存储,可提供实时的数据查询。
Kibana是一个数据可视化服务,根据用户的操作从Elasticsearch中查询数据,形成相应的分析结果,以图表的形式展现给用户。
在这里还用到redis作为缓存使用。通过logstash搜集日志数据存入redis,再通过logstash对数据格式转化处理后储存到Elasticsearch中。
安装elasticsearch
删除之前的jdk
rpm -qa |grep jdk
rpm -e jdk1.8-1.8.0_171-fcs.x86_64
which java
安装rpm包,7.6.1版本后自带jdk
rpm -ivh elasticsearch-7.6.1-x86_64.rpm
编辑主配置文件
cd /etc/elasticsearch/
vim elasticsearch.yml
cluster.name: my-es # 集群名称
node.name: server4 # 主机名需要解析
path.data: /var/lib/elasticsearch #数据目录
path.logs: /var/log/elasticsearch #日志目录
bootstrap.memory_lock: true #锁定内存分配
network.host: 0.0.0.0 # 监听端口
http.port: 9200 #httpd服务端口
discovery.seed_hosts: ["server4", "server5", "server6"] #包括集群节点
cluster.initial_master_nodes: ["server4"] #初始化集群节点
启动服务,发现报错
systemctl start elasticsearch.service
查看日志
cat /var/log/elasticsearch/my-es.log
修改系统限制
vim /etc/security/limits.conf
tail -n5 /etc/security/limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
elasticsearch - nofile 65536
elasticsearch - nproc 4096
此文件设定锁定内存大小
vim jvm.options
-Xms1g
-Xmx1g
Xmx设置不超过物理RAM的50%,以确保有足够的物理RAM留给内核文件
系统缓存。但不要超过32G。
添加
systemctl status elasticsearch.service
vim /usr/lib/systemd/system/elasticsearch.service
LimitMEMLOCK=infinity
重启服务
systemctl daemon-reload
systemctl restart elasticsearch.service
查看端口9200
netstat -antlp
网页访问172.25.9.4:9200
elasticsearch集群部署
准备两台虚拟机,内存至少为2G
server5/6 虚拟机,部署操作与master相同,
共同执行的操作有:
rpm -ivh elasticsearch-7.6.1-x86_64.rpm
cd /etc/elasticsearch/
# 此处主配置文件需要修改node.name 为本机解析,其余与master保持一致
vim elasticsearch.yml
# 添加系统限制
vim /etc/security/limits.conf
systemctl status elasticsearch.service
vim /usr/lib/systemd/system/elasticsearch.service
systemctl daemon-reload
启动服务并开机自启
systemctl start elasticsearch.service
systemctl enable elasticsearch.service
网页测试访问:
172.25.9.5:9200
172.25.9.6:9200
为集群添加监控管理
监控1
宿主机podman上传镜像并拉起容器
podman load -i cerebro.tar
podman images
podman run -d --name cerbro -p 9000:9000 lmenezes/cerebro
网页访问:172.25.9.254:9000
输入需要监控的ip和端口号
监控2
虚拟机需要能够上网,master端
安装rpm包
rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm
查看是否能上网
ping www.baidu.com
解压准备好的master
yum install -y unzip bzip2
unzip master.zip
解压后进入,更换npm源
cd elasticsearch-head-master/
npm install -g cnpm --registry=https://registry.npm.taobao.org
查看cnpm版本
cnpm -v
安装
cnpm install
启动插件
cnpm run start &
编辑主配置文件
cd /etc/elasticsearch/
vim elasticsearch.yml
http.cors.enabled: true # 是否支持跨域
http.cors.allow-origin: "*" # *表示支持所有域名
重启服务
systemctl restart elasticsearch.service
开放9100端口供监控访问查看
http://172.25.9.4:9100/
可能遇到的问题:集群无法加入,原因为cluster uuid不同
解决方案:重新给定集群名字,删除数据目录
rm -fr /var/lib/elasticsearch/*
重启服务
systemctl restart elasticsearch.service
网页访问ip:9200 查看各个ip的cluster uuid是否一致