ELK 安装部署

文章目录

      • 1.日志收集规划
      • 2.Elasticsearch部署
        • 2.1.Elasticsearch安装
        • 2.2.Elasticsearch-head安装
        • 2.3.Elasticsearch设置分片数
        • 2.4.elasticsearch健康检查
      • 3.Kibana部署
      • 4.Logstash部署
      • 5.Filebeat部署

  • 开源中间件
# Elastic Stackhttps://iothub.org.cn/docs/middleware/
https://iothub.org.cn/docs/middleware/elk/elk-deploy/

1.日志收集规划

日志管理使用Elastic Stack框架,系统的重要日志进行聚合,统一管理。
涉及的组件包括:Elasticsearch、Filebeat、Logstash、Kibana、RabbitMQ、Nginx。

  • 微服务日志采集

微服务日志通过Logback写到MQ(kafka或rabbitmq,目前选择rabbitmq),logstash读取MQ把日志写到Elasticsearch,通过Kibana查询。
在这里插入图片描述

  • 中间件、数据库日志采集

中间件、数据库日志通过Filebeat写到Elasticsearch,通过Kibana查询。

生产环境日志架构
在这里插入图片描述

2.Elasticsearch部署

2.1.Elasticsearch安装
  • 准备工作
### 准备工作
# 启动简单版,然后 copy 文件到 宿主机,最后删除该容器# 创建目录
mkdir -p /elk/cluster/es# 运行docker
docker run -tid \
--name=elasticsearch \
-p 19200:9200 \
-p 19300:9300 \
-v /etc/localtime:/etc/localtime \
-e ES_JAVA_OPTS="-Xms4g -Xmx4g" \
-e TZ='Asia/Shanghai' \
-e LANG="en_US.UTF-8" \
elasticsearch:7.1.1# 复制配置文件
docker cp elasticsearch:/usr/share/elasticsearch/config/   /elk/cluster/es/
docker cp elasticsearch:/usr/share/elasticsearch/data/   /elk/cluster/es/
docker cp elasticsearch:/usr/share/elasticsearch/logs/   /elk/cluster/es/
docker cp elasticsearch:/usr/share/elasticsearch/plugins/   /elk/cluster/es/# 删除镜像
docker stop elasticsearch
docker rm elasticsearch
  • 配置es
### es-node-01配置(172.17.88.22)
# 修改配置文件
/elk/cluster/es/config/elasticsearch.yml# elasticsearch.yml:
cluster.name: es-iids-cluster
node.name: es-node-01
node.master: true
node.data: true
network.host: 172.17.88.22
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["172.17.88.22", "172.17.88.19", "172.17.88.18"]
cluster.initial_master_nodes: ["es-node-01", "es-node-02", "es-node-03"]
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"# jvm.options
-Xms1g
-Xmx1g

其他三个节点配置相同。

  • 运行Docker
# 运行dockerdocker run -d --name es-node-01 --net host --restart=always \
-v /elk/cluster/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /elk/cluster/es/config/jvm.options:/usr/share/elasticsearch/config/jvm.options \
-v /elk/cluster/es/data/:/usr/share/elasticsearch/data/ \
-v /elk/cluster/es/logs/:/usr/share/elasticsearch/logs/ \
-v /elk/cluster/es/plugins/:/usr/share/elasticsearch/plugins/ \
elasticsearch:7.1.1
### 访问地址# es-node-01(172.17.88.22)
http://47.95.238.119:19200/
curl '172.17.88.22:9200'
2.2.Elasticsearch-head安装
  • 运行Docker
# 运行Docker,三个节点分别安装docker run -d --name es-head --restart=always -p 19100:9100 mobz/elasticsearch-head:5
### 安装遇到问题# 连不上elasticsearch
docker exec -it elasticsearch /bin/bash
vi ES配置文件elasticsearch.yml加入2个参数,并重启http.cors.enabled: true
http.cors.allow-origin: "*"# 重启容器
docker restart elasticsearch
# 访问地址http://47.95.238.119:19100/
curl '172.17.88.22:19100'
2.3.Elasticsearch设置分片数

elasticsearch7.x 设置默认副本 和默认分片

# 设置elasticsearch默认模板(之后创建索引副本为)
curl -X PUT 47.95.238.119:19200/_template/log  -H 'Content-Type: application/json' -d '{"template": "*","settings": {"number_of_shards": 5,"number_of_replicas": "1"}
}'"template": "*" 代表所有 索引
"template": "apple*" 代表生成apple*的索引都会按照这个模板来了
# 设置默认分片5,副本1curl -X PUT 47.95.238.119:19200/_template/log  -H 'Content-Type: application/json' -d '{"template": "*","settings": {"number_of_shards": 5,"number_of_replicas": 1}
}'
2.4.elasticsearch健康检查
# 常用查询命令# 查看集群进程状态:
curl -u elastic:{password} -X GET "172.18.54.20:9200/_nodes/stats/process?pretty"
http://47.95.238.119:19200/_nodes/stats/process?pretty#检查集群状态:
curl -u elastic:{password} -X GET "172.18.54.20:9200/_nodes/stats?pretty"
http://47.95.238.119:19200/_nodes/stats?pretty# 查看ES集群健康状态
curl -u elastic:{password} -X GET "172.18.54.20:9200/_cluster/health?pretty"
http://47.95.238.119:19200/_cluster/health?prettycurl -u elastic:{password} -X GET "172.18.54.20:9200/_cluster/health?level=indices"
http://47.95.238.119:19200/_cluster/health?level=indices# 查看指定索引库的健康状态
curl -u elastic:{password} -X GET "172.18.54.20:9200/_cluster/health/{indexName}?pretty"
http://47.95.238.119:19200/_cluster/health/{indexName}?pretty

3.Kibana部署

  • 准备工作
### 准备工作
# 启动简单版,然后 copy 文件到 宿主机,最后删除该容器# 创建目录
mkdir -p /elk/cluster/kibana# 运行docker
docker run -tid \
--name=kibana \
-p 15601:5601 \
-v /etc/localtime:/etc/localtime \
-e TZ='Asia/Shanghai' \
-e LANG="en_US.UTF-8" \
kibana:7.1.1# 复制配置文件
docker cp kibana:/usr/share/kibana/config/ /elk/cluster/kibana/
docker cp kibana:/usr/share/kibana/data/ /elk/cluster/kibana/
docker cp kibana:/usr/share/kibana/plugins/ /elk/cluster/kibana/# 删除镜像
docker stop kibana
docker rm kibanachmod 777 /elk/cluster/kibana/data
  • 修改配置文件
# 修改配置文件
/elk/cluster/kibana/config/kibana.yml# kibana.yml
server.port: 15601
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://172.17.88.22:9200", "http://172.17.88.19:9200", "http://172.17.88.18:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true# 没有配置以下内容
elasticsearch.username: kibana
elasticsearch.password: keda123456
xpack.security.encryptionKey: "something_at_least_32_characters"
xpack.reporting.encryptionKey: "something_at_least_32_characters"
xpack.security.sessionTimeout: 600000
  • 运行Docker
# 运行docker docker run -d --name kibana --net host --restart=always \
-v /elk/cluster/kibana/config/:/usr/share/kibana/config/ \
-v /elk/cluster/kibana/data/:/usr/share/kibana/data/ \
-v /elk/cluster/kibana/plugins/:/usr/share/kibana/plugins/ \
kibana:7.1.1
### 访问地址
http://47.95.238.119:15601
http://47.95.228.247:15601
http://123.56.18.37:15601

4.Logstash部署

  • 准备工作
### 准备工作
# 启动简单版,然后 copy 文件到 宿主机,最后删除该容器# 创建目录
mkdir -p /elk/cluster/logstash# 运行docker
docker run -tid \
--name=logstash \
-p 15044:5044 \
-p 19600:9600 \
-v /etc/localtime:/etc/localtime \
-e TZ='Asia/Shanghai' \
-e LANG="en_US.UTF-8" \
logstash:7.1.1# 复制配置文件
docker cp logstash:/usr/share/logstash/config/   /elk/cluster/logstash/
docker cp logstash:/usr/share/logstash/pipeline/   /elk/cluster/logstash/# 先不用
docker cp logstash:/usr/share/logstash/data/   /elk/cluster/logstash/
docker cp logstash:/usr/share/logstash/vendor/   /elk/cluster/logstash/# 删除镜像
docker stop logstash
docker rm logstash
  • 修改配置文件
# 修改配置文件
/elk/cluster/logstash/config/logstash.yml (可不配置)
http.host: "0.0.0.0"
xpack.monitoring.enabled: false# /elk/cluster/logstash/pipeline/logstash.conf
# logstash.conf:#  采集rabbitmq
input {rabbitmq {type =>"msa"durable => trueexchange => "iids-elk-msa-exchange"exchange_type => "direct"key => "log"host => "172.17.88.22"port => 5672user => "guest"password => "guest"queue => "iids-elk-msa-queue"auto_delete => false}}output {elasticsearch {hosts => ["172.17.88.22:9200", "172.17.88.19:9200", "172.17.88.18:9200"]index => "%{appname}-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}}#  采集filebeat
input {beats {port => 5044}
}output {elasticsearch {hosts => ["172.17.88.22:19200", "172.17.88.19:19200", "172.17.88.18:19200"]index => "%{appname}-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}}
  • 运行Docker
# 运行docker docker run -d --name logstash --net host --restart=always \
-v /elk/cluster/logstash/config:/usr/share/logstash/config \
-v /elk/cluster/logstash/pipeline:/usr/share/logstash/pipeline \
logstash:7.1.1

5.Filebeat部署

### rpm安装 
rpm -vih filebeat-7.1.1-x86_64.rpm# 启动filebeat服务
systemctl start filebeat# 停止filebeat服务
systemctl stop  filebeat# 设置开机自启动 
systemctl enable filebeat # 常用命令
systemctl start filebeat               #启动服务
systemctl stop  filebeat               #停止服务
systemctl enable filebeat              #设置开机自启动
systemctl disable filebeat             #停止开机自启动
systemctl status filebeat              #查看服务当前状态
systemctl restart filebeat            #重新启动服务
systemctl list-units --type=service    #查看所有已启动的服务
  • 开源中间件
# Elastic Stackhttps://iothub.org.cn/docs/middleware/
https://iothub.org.cn/docs/middleware/elk/elk-deploy/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/535575.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【阿里云系列】-利用yaml文件部署NacosXxl-job到ACK

背景介绍 随着容器化的技术成熟落地,拥抱各种成熟的容器化集群平台是加速我们落地的必然之路,目前国内以阿里云、华为云、腾讯云为平台的供应商为主,国外则以AWS,Azure为主,让我们借助平台已有的优势进行快速落地提高…

VMware安装Ubuntu虚拟机

1. 安装VMware VMware中国官网:VMware - Delivering a Digital Foundation For Businesses VMware Workstation Player(官方个人免费版):VMware Workstation Player | VMware VMware Workstation Pro(商用收费版&am…

酷开系统走在前列,品牌重启增长,酷开科技成为品牌商合作目标

区别于火热的移动端,手机屏作为私密屏,往往面向的是用户个体,而电视作为家庭连接的重要枢纽,不仅仅定位于公共屏,同时也面向客厅场景发挥着其大屏传播的作用,这里不仅牵扯到大屏营销,也关联着大…

jQuery1.10.2升级到jQuery3.6.0返回结果异常

ajax请求代码: jQuery1.10.2 ajax返回结果: 取其TIPS的值,代码如下: let find $(data).find(TIPS); var resultfind[0].innerHTML; 返回值为空字符串。 jQuery3.6.0 ajax返回结果: 取其TIPS的值,代码如下&…

某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

力扣思路题:重复的子字符串

注意比较j与j-i是否相同 bool repeatedSubstringPattern(char* s) {int i;int nstrlen(s);bool flag;for(int i1;i<n/2;i){if(n%i0){flagtrue;}for(int ji;j<n;j){if(s[j]!s[j-i]){flagfalse;break;}}if(flagtrue){return true;}}return false; }

运行时错误‘53’:文件未找到:MathPage.WLL。Word粘贴复制时报错解决方案!

最近写文章使用 Word 时&#xff0c;粘贴复制总是出现这个报错&#xff0c;不能 ctrlc 和 v 好叫人苦恼。百度大致检索了一些过程&#xff0c;仍然有必要记录自己的问题解决过程。 快让本文进你的文件夹吃灰吧~ 报错如下&#xff1a; 运行时错误‘53’&#xff1a; 文件未找…

差旅补助解决方案|数字化差补赋能业务提效

长期以来&#xff0c;差旅补助一直是企业为了激励员工出差并表达对员工的关怀而采取的一种方式&#xff0c;以经济和福利支持来鼓励员工积极投入工作。然而&#xff0c;由于传统差旅补助的核算、发放和管理方式存在诸多问题&#xff0c;往往适得其反&#xff0c;无法实现企业的…

深入探索JavaScript:如何改变this的指向

目录 深入探索JavaScript&#xff1a;如何改变this的指向 一、call方法 二、apply方法 三、bind方法 四、箭头函数 区别&#xff1a; 执行方式和返回值&#xff1a; 参数传递方式&#xff1a; 使用场景&#xff1a; 总结 在JavaScript中&#xff0c;this关键字是一个…

String 底层是如何实现的?

1、典型回答 String 底层是基于数组实现的&#xff0c;并且数组使用了 final 修饰&#xff0c;不同版本中的数组类型也是不同的&#xff1a; JDK9 之前&#xff08;不含JDK9&#xff09; String 类是使用 char[ ]&#xff08;字符数组&#xff09;实现的但 JDK9 之后&#xf…

【Shiro反序列化漏洞】shiro550流程分析

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

Unity中PICO中手柄按键返回值

文章目录 前言一、我们看一下每个按键返回值获取按键返回值的方法 二、我们实现一个左摇杆控制平滑移动的功能1、创建一个左摇杆控制移动的脚本2、传入XR Origin对象&#xff0c;并且定义一个公开变量控制移动速度3、获取到摇杆是否移动&#xff0c;以及移动的偏移量4、如果摇杆…