0
点赞
收藏
分享

微信扫一扫

智能家居的四种无线技术

戴老师成长记录仪 2024-07-24 阅读 17

目录

一、ELK/EFK简介

1.1 什么是ELK/EFK?

1.2 常见架构 

1、Elasticsearch + Logstash + Kibana

2、Elasticsearch + Logstash + Filebeat + Kibana

3、Elasticsearch + Logstash + Filebeat + Kibana + Redis

4、Elasticsearch + Fluentd + Filebeat + Kibana

1.3 基本流程

二、ELK部署

2.1 环境准备

2.2 部署ElasticSearch集群环境

2.2.1 安装Elasticsearch

2.2.2 配置Elasticsearch集群

2.2.3 检查Elasticsearch集群

2.3 部署Redis+Keepalived高可用环境 

 2.4 部署Kibana及nginx代理访问环境

三、ELK日志收集

3.1 客户机日志收集操作(Logstash)

 3.1.1 logstash 介绍

3.1.2 安装logstash

3.1.3 logStash配置语法 

3.1.4 logstash插件  

3.2 客户机日志收集操作(Filebeat)

3.2.1 安装 Filebeat

3.2.2 配置 Filebeat


一、ELK/EFK简介

1.1 什么是ELK/EFK?

1.2 常见架构 

1Elasticsearch + Logstash + Kibana

        这是一种简单架构。这种架构,通过logstash 收集日志, elasticsearch 分析日志,然后再 kibana 中展示,生产中很少使用。

2Elasticsearch + Logstash + Filebeat + Kibana

        与上一个架构相比,增加了filebeat 模块,它是一个轻量级的日志收集处理工具 (Agent) ,部署在客户端,Filebeat 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstash ,生产中使用较多,但缺点是logstash 出现故障,会造成日志丢失。

3Elasticsearch + Logstash + Filebeat + Kibana + Redis

这种架构,通过增加中间件来避免日志丢失。 

4Elasticsearch + Fluentd + Filebeat + Kibana

        这种使用了fluentd 代替了 logstash 。当然,我们也可以使用 Fluentd 的插件( fluent-plugin

elasticsearch )直接将日志发送给 Elasticsearch ,可以根据自己的需要替换掉 Filebeat ,从而形成

Fluentd => ElasticSearch => Kibana 的架构,也称作 EFK

1.3 基本流程

下面以第三种架构为例,基本流程如下:

二、ELK部署

2.1 环境准备

主机名IP地址角色
 
elk-node01192.168.186.161es01,redis01
elk-node02192.168.186.162es02,redis02(vip:192.168.186.100)
elk-node03192.168.186.163es03,kibana,nginx

1、设置主机名和hosts解析

[root@elk-node01 ~]# cat >> /etc/hosts << EOF
192.168.186.161 elk-node01
192.168.186.162 elk-node02
192.168.186.163 elk-node03
EOF

cat >> /etc/hosts << EOF
 192.168.186.161 elk-node01
 192.168.186.162 elk-node02
 192.168.186.163 elk-node03
EOF

[root@elk-node01 ~]# tail -3 /etc/hosts 
192.168.186.161 elk-node01
192.168.186.162 elk-node02
192.168.186.163 elk-node03

2、时间同步

3、部署jdk

三台机器都部署jdk,建议内存3G以上

[root@elk-node01 ~]# rpm -ivh jdk-8u261-linux-x64.rpm 

[root@elk-node01 ~]# java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

2.2 部署ElasticSearch集群环境

2.2.1 安装Elasticsearch

三台机器都部署

使用清华镜像源,本文安装7.2.0

# vim /etc/yum.repos.d/elk.repo
[elk]
name=elk 7.x
baseurl=https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/
gpgcheck=0

安装:# yum install -y elasticsearch-7.2.0

2.2.2 配置Elasticsearch集群

elk-node01节点的配置

root@elk-node01 ~]# grep '^[a-Z]' /etc/elasticsearch/elasticsearch.yml
cluster.name: elk-node01
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 192.168.186.161
http.port: 9200
discovery.seed_hosts: ["elk-node01", "elk-node02","elk-node03"]
cluster.initial_master_nodes: ["elk-node01"]
node.master: true
node.data: false
node.ingest: false
node.ml: false
cluster.remote.connect: false

安装**head插件**,在5.0版本之后不支持直接把插件包放入es安装目录的plugin目录下,需要单独安装。

1>安装环境支持,需要安装nodejs

[root@elk-node01 ~]# yum install -y nodejs npm

2>下载head插件

[root@elk-node01 elasticsearch]# cd /var/lib/elasticsearch/

[root@elk-node01 elasticsearch]#  wget https://github.com/mobz/elasticsearch-head/archive/master.zip

3>安装依赖包

[root@elk-node01 elasticsearch]# yum install openssl bzip2 unzip -y

下载运行head必要的文件(放置在文件夹/tmp下)

[root@elk-node01 elasticsearch]# cd /tmp
[root@elk-node01 tmp]# wget https://npm.taobao.org/mirrors/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2

用以下命令把下载到的包添加到npm cache目录中

\# npm cache add phantomjs

执行npm install,它便会使用本地缓存的xxx.tgz,而跳过下载过程。

npm安装卡时可以打开info level的log,命令如下

#npm config set loglevel info



解压master.zip

\# unzip master.zip

开始安装依赖:

[root@elk-node01 elasticsearch]# cd elasticsearch-head-master/

\# npm install



\# 直接使用npm安装时间久,依赖网络,替换为淘宝的cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

\# 安装依赖

cnpm install

4> 修改配置文件

修改 Gruntfile.js

在该文件中添加如下,务必注意不要漏了添加“,”号,这边的hostname:’*’,表示允许所有IP可以访问
options: {
port: 9100,
base: '.',
keepalive: true,
hostname: '*'
}
修改elasticsearch-head默认连接地址,将localhost改为本机IP

 5>修改elasticSearch配置文件并启动ElasticSearch

修改 elasticsearch 的配置文件 elasticsearch.yml ,以允许跨域访问,在文末追加如下代码即可

重启:

访问IP:9100就能看到我们集群信息  

安装Bigdesk插件

 1>下载

2>启动web服务器,默认监听端口号8000,指定启动端口,并后台启动  

 

安装cerebro插件

 1>下载cerebro插件:

2>上传到安装目录、解压:

3>启动cerebro

4 、浏览器访问 IP:9000

就能看到数据分片信息。

配置插件开机自启动:

 注意:不添加执行权限,脚本等无法执行

安装: # yum install -y elasticsearch-7.2.0

elk-node02 elk-node03 节点的配置

[root@elk-node02 ~]# grep '^[a-Z]' /etc/elasticsearch/elasticsearch.yml 
node.name: elk-node02
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 192.168.186.162
node.master: false
node.data: true
node.ingest: false
node.ml: false
cluster.remote.connect: false

[root@elk-node03 ~]# grep '^[a-Z]' /etc/elasticsearch/elasticsearch.yml 
node.name: elk-node03
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 192.168.186.163
node.master: false
node.data: true
node.ingest: false
node.ml: false
cluster.remote.connect: false

插件安装和 elk-node01 相同。

启动 elasticsearch 服务:

2.2.3 检查Elasticsearch集群

插件安装和 elk-node01 相同。

启动 elasticsearch 服务:

systemctl restart elasticsearch

systemctl enable elasticsearch

1> 查看集群状态(任意节点执行)

2>查看各个节点的信息

3>查看单个节点信息

 4> 插件查看

head 插件

 Bigdesk插件

cerebro插件

 

2.3 部署Redis+Keepalived高可用环境 

1 、安装 redis 服务及主从配置

2 Keepalived 安装

两个节点都安装

3 redis+keepalived 配置

 1>主节点配置

 2>从节点配置

以上的 keepalived.conf 文件中的切换模式设置为 nopreempt ,意思是:

不抢占 VIP 资源,此种模式要是所有的节点都必须设置为 state BACKUP 模式!

需要注意无论主备服务器都需要设置为 BACKUP ,与以往 KeepAlived 的配置不同,其目的就是防止主服务器恢复后重新抢回VIP ,导致 Redis 切换从而影响稳定。

主节点脚本复制到从节点,保证有执行权限。

Keepalived 在转换状态时会依照状态来呼叫:

当进入 Master 状态时会呼叫 notify_master

当进入 Backup 状态时会呼叫 notify_backup

当发现异常情况时进入 Fault 状态呼叫 notify_fault

Keepalived 程序终止时则呼叫 notify_stop

 3>主从节点启动服务

4 redis+keepalived 测试

1> 通过 VIP 连接 Redis:

2>插入数据测试: 

3> 模拟故障测试 :

停止主节点 redis

 2.4 部署Kibananginx代理访问环境

Kibana nginx 代理访问环境部署(访问权限控制)。在 elk-node03 节点机上操作

1 kibana 安装配置

由于维护的业务系统比较多,每个系统下的业务日志在 kibana 界面展示的访问权限只给该系统相关人员开放,对系统外人员不开放。所以需要做kibana 权限控制。

        这里通过nginx 的访问验证配置来实现。

可以配置多个端口的 kibana ,每个系统单独开一个 kibana 端口号,比如财务系统 kibana 使用 5601

口、租赁系统 kibana 使用 5602 ,然后 nginx 做代理访问配置。

        每个系统的业务日志单独在其对应的端口的kibana界面里展示。

 提供服务脚本:

启动服务: 

查看:

配置nginx的反向代理以及访问验证

配置虚拟主机:

配置虚拟主机:

设置验证文件

启动nginx

2、查看 

 

 

 

三、ELK日志收集

3.1 客户机日志收集操作(Logstash

 3.1.1 logstash 介绍

        LogStash由 JRuby 语言编写,基于消息( message-based )的简单架构,并运行在 Java 虚拟机

JVM )上。不同于分离的代理端( agent )或主机端( server ), LogStash 可配置单一的代理端

agent )与其它开源软件结合,以实现不同的功能。

logStash 的四大组件

正是由于以上组件在 LogStash 架构中可独立部署,才提供了更好的集群扩展性。

LogStash 主机分类

3.1.2 安装logstash

LogStash 初体验

logstash 的家目录创建三个文件夹。分别用来存放日志, conf 配置文件和 logstash 服务主配置

启动测试:

 将屏幕输入的字符串输出到elasticsearch服务中

输入:hello stash,然后在elasticsearch中查看logstash新加的索引

 LogStash启动慢解决:

检查了一下系统的熵数池

如果返回值小于 1000,大于就不用了 , 那么就需要安装 haveged 包。

3.1.3 logStash配置语法 

Logstash 社区通常习惯用 shipper broker indexer 来描述数据流中不同进程各自的角色。 如下

图:

 

语法:

Logstash 设计了自己的 DSL ,包括有区域, 注释, 数据类型 ( 布尔值, 字符串, 数值, 数组, 哈希) , 条件判断, 字段引用等。

区段 (section)

数据类型

字段引用 (field reference)

        在 Logstash 配置中使用字段的值, 只需要把字段的名字写在中括号 [] 里就行了, 这就叫字段引用。

条件判断 (condition)

Logstash 1.3.0 版开始支持条件判断和表达式。

命令行参数

设置文件

3.1.4 logstash插件  

学习编写 conf 格式

输入插件配置,此处以读取文件 file 为例,可以设置多个

记住一个原则: Logstash 配置一定要有一个 input 和一个 output

如果没有写明 input ,默认就会使用 input/stdin ,同理,没有写明的 output 就是 output/stdout

学习编写 input file 插件

input 插件之 file

sincedb_path :记录 logstash 读取位置的路径

start_postion : 包括 beginning end ,指定收集的位置,默认是 end ,从尾部开始

add_field 加一个域

discover_internal 发现间隔,每隔多久收集一次,默认 15

3.2 客户机日志收集操作(Filebeat

3.2.1 安装 Filebeat

3.2.2 配置 Filebeat

配置文件: filebeat.yml

filebeat 默认的配置文件为 filebeat.yml,filebeat 还提供了一个比较完整的配置文件

filebeat.reference.yml

场景1:输入为file,输出为console  

测试:

场景2:输出为file  

 测试:

 场景3:输出为logstash

filebeat 配置

 logstash配置

 测试:三个终端

logstash 输出:

场景4:输出为elasticsearch 

测试:

 默认索引是:filebeat-

自定义索引:

举报

相关推荐

0 条评论