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.mzph.cn/news/742117.shtml

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

相关文章

工会排队模式:引领创新消费体验的新潮流

在互联网和电子商务的浪潮下,消费者的购物需求与期待正在持续升级。为了迎合这一趋势,工会排队模式应运而生,以其独特的消费体验方式引领市场潮流。 工会排队模式打破了传统电商的桎梏,通过现金返还机制为购物赋予了新的定义。这一…

【微服务】SpringBoot整合Resilience4j使用详解

目录 一、前言 二、熔断器出现背景 2.1 几个核心概念 2.1.1 熔断 2.1.2 限流 2.1.3 降级 2.2 为什么会出现熔断器 2.3 断路器介绍 2.3.1 断路器原理 三、Resilience4j介绍 3.1 Resilience4j概述 3.1.1 Resilience4j是什么 3.1.2 Resilience4j功能特性 3.2 Resilie…

Windows系统安装OpenSSH结合VS Code远程ssh连接Ubuntu【内网穿透】

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-mEkKUraSFHLKkzIj {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

使用Visual Studio创建跨平台CMake项目

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 创建跨平台项目的意义是什么? 跨平台CMake项目的意义在于提供一种统一的构建系统,使得开发者可以编写一份…

十五、软考-系统架构设计师笔记-面向服务架构设计理论与实践

1、SOA相关概念 面向服务的架构(SOA)的定义 SOA 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构…

技术驱动校园招聘:Java+SpringBoot+Vue的实践之旅

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

【Vue3】学习命名路由和嵌套路由

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

wsl安装及Anaconda配置

文章目录 wslAnaconda下载安装包安装Anaconda配置环境写在最后 wsl 照着一步一步配置就好 wsl_update链接 Anaconda 下载安装包 找到自己所需的 在终端输入: wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh将Anaconda3-2024.02-…

软件测试面试都问了什么?中级软件测试岗面试(4面)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 一面(…

Pulsar消息路由深入剖析

一、概述 大数据背景下,分区应该是所有组件必备的基本条件,否则面对海量数据时无论是计算还是存储都容易遇到瓶颈。跟其他消息系统一样,Pulsar通过Topic将消息数据进行业务层面划分管理,同时也支持Topic分区,通过将多…

2024年信息技术与计算机工程国际学术会议(ICITCEI 2024)

2024年信息技术与计算机工程国际学术会议(ICITCEI 2024) 2024 International Conference on Information Technology and Computer Engineering ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 大会主题: 信息系统和技术…

软件应用实例分享,茶楼计时收费管理系统软件,佳易王茶社吧台计时收费软件试用版教程

软件应用实例分享,茶楼计时收费管理系统软件,佳易王茶社吧台计时收费软件试用版教程 一、前言 以下软件操作教程以 佳易王茶室计时计费软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 【茶楼计时计费软件&…

解决Java项目运行时错误:“Command line is too long”

在开发Java应用的过程中,你可能偶尔会遇到“Error running ‘Application’: Command line is too long”的问题。这是因为Java虚拟机(JVM)在启动时,如果传递给它的类路径(classpath)过长,超过了…

基于Java (spring-boot)的人才招聘系统

一、项目介绍 公司: IT公司的注册与管理 招聘要求的发布与维护 站内私信 求职者: 招聘需求浏览 招聘需求筛选(按岗位、薪酬、城市、地区等) 简历编辑,建立投递等 站内私信 管理员: 用户信息维护 岗…

ChatGPTPLUS、Poe、Claude介绍,以及如何订阅

我使用了FOmepay的556150卡段升级了ChatGPTPLUS、POE、Claude3 一、ChatGPT Plus 是什么? ChatGPT Plus 是基于 ChatGPT 的月订阅升级方案,它可以提供更快的回应速度、更高的可用性以及优先使用到新功能的权限。 ChatGPT Plus 和原版 ChatGPT 的差异 …

【黑马程序员】python数据容器

文章目录 python数据容器认识数据容器列表列表定义list下标索引列表的常用操作方法列表的查询功能列表的修改功能插入元素追加元素删除元素删除某元素在列表中的第一个匹配项清空列表统计某元素在列表中的数量统计列表中元素个数总结 列表遍历 元组为什么需要元组定义元组下标索…

跟着GPT学设计模式之桥接模式

说明 桥接模式,也叫作桥梁模式,英文是 Bridge Design Pattern。在 GoF 的《设计模式》一书中,桥接模式是这么定义的:“Decouple an abstraction from its implementation so that the two can vary independently。”翻译成中文就…

LeetCode[题解] 1261. 在受污染的二叉树中查找元素

首先我们看原题 给出一个满足下述规则的二叉树: root.val 0如果 treeNode.val x 且 treeNode.left ! null,那么 treeNode.left.val 2 * x 1如果 treeNode.val x 且 treeNode.right ! null,那么 treeNode.right.val 2 * x 2 现在这个…

通过Cpp + Lua 解析副本与服务器的逻辑1

进入副本流程 读publicTables,OnOpenCopySceneOK()发包 private void OnOpenCopySceneOK(){GameManager.PlayerDataPool.CurSelectTier m_curSelTier;CG_OPEN_COPYSCENE_PAK pak new CG_OPEN_COPYSCENE_PAK();pak.data.SceneID (int)SCENE_DEFINE.SCENE_TDBK;p…

[Java、Android面试]_02_HashMap的原理

本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料,感兴趣的朋友可收藏关注。由于时间有限,只能每天整理一点,分享一点儿! 现分享如下&#xf…