技术中台下终搜技术解决方案(day01-2)

写在前面:
文章为作者原创
如需转载,请注明出处

2.1 Docker容器化环境构建

image

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口

2.1.1 镜像拉取与启动

1、下载

官网下载Docker:

http://www.docker.com

仓库下载Docker:

https://hub.docker.com/

2 Docker安装

**前提条件**
CentOS  安装Docker
支持以下的CentOS版本:CentOS 7 (64-bit);CentOS 6.5 (64-bit) 或更高的版本
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 及以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本
Docker可以运行在MAC、Windows、Centos、UBUNTU等操作系统上,提供社区版和企业版,本课程基于Centos安装Docker。Centos6对docker支持的不好,使用docker建议使用centos7。

查看版本:
cat /etc/redhat-release 
查看内核

以下是在centos7中安装Docker的步骤:

1、yum源更新,如下图

sudo yum update
image

3、安装yum-utils&驱动依赖,如下图

作用:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
image

4、 设置yum源为阿里云,如下图

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
image

5、 安装docker,如下图

sudo yum install -y docker-ce
image

5、 查看docker版本,如下图

docker -v
image

or

docker  info

6、开机启动

注意:开机先启动docker才能再启动容器

systemctl enable docker

2.1.2 固定Ip设置

容器ip变化

1、创建自定义网络

创建一个桥接网络并指定网段

docker network create --subnet=172.188.0.0/16  czbkNetwork
image

2、指定ip启动

镜像启动运行时指定自己的网络IP

docker run    -p 5001:5001 --name 镜像名称 --net czbkNetwork --ip 172.188.0.2 --privileged=true --restart=always -d 镜像名称

Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略

--restart常用参数有3个可选值 :

no:容器退出时不重启,默认
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启

3、更新容器参数

 docker container  update  --restart=always  f3c17f9acfa7

2、为正在运行的容器设置自定义ip

将Docker容器保存为镜像,使用docker commit命令可以将容器保存为镜像。

  • -a :提交的镜像作者;
  • -c :使用Dockerfile指令来创建镜像;
  • -m :提交时的说明文字;
  • -p :在commit时,将容器暂停
 #将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息
 docker commit -a "czbk" -m "install  image" a404c6c174a2  kibana:v1 

此镜像的内容就是当前容器的内容,接下来你可以用此镜像再次运行新的容器

2.1.3 Docker环境迁移

1、迁移

将镜像文件打包成tar文件

docker  save   -o kibana .tar  kibana 

2、还原

docker load -i kibana.tar

2.2 ElasitciSearch高可用构建

背景介绍
为了解决单点故障,在生产环境中,我们需要搭建es集群来保证系统的高可用
Elasticsearch天生就支持分布式部署,一个 Elasticsearch 集群由一个或多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识;通过集群部署可以提高系统的可用性。

2.2.1 镜像拉取

1、拉取镜像

docker pull docker.elastic.co/elasitciSearch/elasitciSearch:7.4.0
image

2、查看镜像

docker  images
image

2.2.2 集群搭建

cluster name node name IP Addr http端口 / 通信端口
itcast-es eNode1 172.188.0.88 9200 / 9700
itcast-es eNode2 172.188.0.89 9201 / 9800
itcast-es eNode3 172.188.0.90 9202 / 9900

1)挂载目录创建

1、挂载目录创建

创建数据挂载目录配置文件(主目录)

 mkdir  -p  /usr/local/es/config

数据目录(递归创建目录)

 mkdir  -p  /usr/local/es/config/eNodeData1
 mkdir  -p  /usr/local/es/config/eNodeData2
 mkdir  -p  /usr/local/es/config/eNodeData3

日志目录

 mkdir  -p  /usr/local/es/config/eNodeLog1
 mkdir  -p  /usr/local/es/config/eNodeLog2
 mkdir  -p  /usr/local/es/config/eNodeLog3

分词器插件挂载目录(稍后会讲)

 mkdir  -p  /usr/local/es/config/plugins

权限设置

chmod  -R  777 /usr/local/es/

2)集群节点配置

1、节点一配置

tips:

path.data:

path.log

上面的目录一定不要写宿主机

eNode1.yml 内容如下

#集群名称
cluster.name: itcast-es
#节点名称
node.name: eNode1
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3 
#ip地址
network.host: 0.0.0.0
#端口
http.port: 9200
#内部节点之间沟通端口
transport.tcp.port: 9700
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["172.18.0.88:9700","172.18.0.89:9800","172.18.0.90:9900"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["eNode1", "eNode2","eNode3"] #数据和存储路径
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs

2、节点二配置

eNode2.yml 内容如下

为了方便测试,itcast2即是数据节点、也是候选节点,暂时不考虑【脑裂现象】,如果生产环境,建议角色分离

#集群名称
cluster.name: itcast-es
#节点名称
node.name: eNode2
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3 
#ip地址
network.host: 0.0.0.0
#端口
http.port: 9201
#内部节点之间沟通端口
transport.tcp.port: 9800
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["172.18.0.88:9700","172.18.0.89:9800","172.18.0.90:9900"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["eNode1", "eNode2","eNode3"] #数据和存储路径
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs

3、节点三配置

eNode3.yml 内容如下

#集群名称
cluster.name: itcast-es
#节点名称
node.name: eNode3
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3 
#ip地址
network.host: 0.0.0.0
#端口
http.port: 9202
#内部节点之间沟通端口
transport.tcp.port: 9900
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["172.18.0.88:9700","172.18.0.89:9800","172.18.0.90:9900"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["eNode1", "eNode2","eNode3"] #数据和存储路径
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs

3)启动集群

复制容器内文件到宿主机

1、先启动容器

2、开始复制

【eNode1】容器名称---容器路径---宿主机路径

docker cp eNode1:/usr/share/elasticsearch/config/elasticsearch.yml /usr/local/es/config/

启动节点一

docker run  -d  --restart=always -p 9200:9200 -p 9700:9700 -v  /usr/local/es/config/eNode1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/es/config/eNodeData1:/usr/share/elasticsearch/data  -v /usr/local/es/config/eNodeLog1:/usr/share/elasticsearch/config/logs  -v /usr/local/es/config/plugins:/usr/share/elasticsearch/plugins  --name eNode1 --net czbkNetwork --ip 172.188.0.88 --privileged=true   dd156dd42341
image

启动节点二

docker run  -d  --restart=always -p 9201:9201 -p 9800:9800 -v  /usr/local/es/config/eNode2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/es/config/eNodeData2:/usr/share/elasticsearch/data  -v /usr/local/es/config/eNodeLog2:/usr/share/elasticsearch/config/logs  -v /usr/local/es/config/plugins:/usr/share/elasticsearch/plugins --name eNode2 --net czbkNetwork --ip 172.188.0.89 --privileged=true   dd156dd42341
image

启动节点三

docker run  -d  --restart=always -p 9202:9202 -p 9900:9900 -v  /usr/local/es/config/eNode3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/es/config/eNodeData3:/usr/share/elasticsearch/data  -v /usr/local/es/config/eNodeLog3:/usr/share/elasticsearch/config/logs -v /usr/local/es/config/plugins:/usr/share/elasticsearch/plugins --name eNode3 --net czbkNetwork --ip 172.188.0.90 --privileged=true   dd156dd42341
image

4) 验证集群

1、问题:在访问elasticsearch前,请确保防火墙是关闭的,执行命令:

#暂时关闭防火墙
systemctl  stop  firewalld

或者

#永久设置防火墙状态
systemctl enable firewalld.service  #打开防火墙永久性生效,重启后不会复原 
systemctl disable firewalld.service #关闭防火墙,永久性生效,重启后不会复原 

2、问题

image
报错的意思是:elasticsearch用户拥有的内存权限太小,至少需要262144;
执行命令:

sysctl -w vm.max_map_count=262144

查看结果:

sysctl -a|grep vm.max_map_count

显示:

vm.max_map_count = 262144

3、访问

http://172.17.0.225:9200/_cat/health?v
或
http://172.17.0.225:9201/_cat/health?v
或
http://172.17.0.225:9202/_cat/health?v

执行上面的任意有一个URL,查看返回的node.total是3,代表集群搭建成功,如下图

image

健康状况结果解释:

cluster 集群名称
status集群状态 green代表健康;yellow代表分配了所有主分片,但至少缺少一个副本,此时集群数据仍旧完整;red代表部分主分片不可用,可能已经丢失数据。
node.total代表在线的节点总数量
node.data代表在线的数据节点的数量
shards 存活的分片数量
pri 存活的主分片数量 正常情况下 shards的数量是pri的两倍。
relo迁移中的分片数量,正常情况为 0
init 初始化中的分片数量 正常情况为 0
unassign未分配的分片 正常情况为 0
pending_tasks准备中的任务,任务指迁移分片等 正常情况为 0
max_task_wait_time任务最长等待时间
active_shards_percent正常分片百分比 正常情况为 100%

tips:

这里需要注意的是,如果只启动一个节点,访问上面的URL,会报错【没有发现主节点异常】

6、 查看容器ip

查看正在运行的容器扎找到id

docker ps

查看ip

docker inspect  容器ID
image

tips

锁堆

集群搭建锁堆问题

image

image

坑:

最大堆内存和最小要相等,否则将锁住整个堆

以下为报错

[1]: initial heap size [2147483648] not equal to maximum heap size [3221225472]; this can cause resize pauses and prevents mlockall from locking the entire heap
image
image
image

systemctl  restart  docker

[图片上传失败...(image-171a17-1606294654412)]

2.3 Kibana监控中心与可视化

什么是kibana

Kibana 是为 Elasticsearch设计的开源分析和可视化平台。

可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互。

也可以很容易实现高级的数据分析和可视化,以图标的形式展现出来。
Kibana 的使用场景,集中在两方面:

实时监控

问题分析

1、拉取镜像

docker pull docker.elastic.co/kibana/kibana:7.4.0
image

2、查看镜像

docker  images
image

3、创建挂载目录

mkdir -p /usr/local/kibana/config/

2、启动容器

docker run  --name kibana --net czbkNetwork --ip 172.188.0.66 --privileged=true  -p 5601:5601 --restart=always   -v /usr/local/kibana/config/:/usr/share/kibana/config/  -d 52cc1051ff10 

3、访问kibana

几个坑需要注意

1、es与kibana版本不一致

2、没有配置es的url

3、浏览器缓存

4、删除kibana_task_manager_1索引(重点)

5、删除.kibana_index_1 索引

curl -XDELETE或者postman

DELETE : http://172.17.0,225:9200/.kibana*

image

解决问题

我们在访问 Kibana 的时候,有可能会出先 Kibana server is not ready yet 的问题 ,原因是因为

kibana文件中的ELASTICSEARCH_URL 配置的应该是容器的 ip,而不是本地ip。

1、首先我们查看 ElasticSearch 的容器内部 ip:

docker inspect    容器ID
image

2、然后进入 Kibana 容器内部,修改 kibana.yml 中的ip

进入容器内部修改(或者直接修改挂载文件都可以)

 docker exec -it   容器id   /bin/bash
 
 vi config/kibana.yml 
image

修改下面的ip(集群中的节点)

#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://172.18.0.88:9200","http://172.18.0.89:9201","http://172.18.0.90:9202" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

修改完成之后退出容器,重新启动即可

image

再次访问kibana

image

2.4 MySql关系存储构建

1、拉取镜像

docker pull mysql:5.7
image

2、查看镜像

docker  images

3、创建挂载目录

将本地的mysql.conf.d挂载的mysql.conf.d

主要是设置时区

mkdir -p /usr/local/mysql/config/

配置文件内容

#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
#log-error      = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address   = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-time-zone = '+8:00'

2、创建容器

-p 代表端口映射,格式为 宿主机映射端口:容器运行端口

-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登陆密码

docker run --name mysql57-test --net czbkNetwork --ip 172.18.0.15 --restart=always --privileged=true  -v /usr/local/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf      -p 33066:3306 -e MYSQL_ROOT_PASSWORD=root  -d 413be204e9c3 
image

3、同步数据

image

4、设置时区(会话级别设置)

查看时间

SELECT NOW();

查看时区

show variables like "%time_zone%";
image

time_zone说明mysql使用system的时区,system_time_zone说明system使用UTC时区

set global time_zone = '+8:00';
set time_zone = '+8:00';
FLUSH PRIVILEGES;

分别进行全局时间和当前会话时间的设置,这里是设置为东八区

2.5 Nacos注册发现与配置高可用构建

2.5.1 Nacos单点

1、下载镜像

docker pull nacos/nacos-server:1.1.3
image

2、查看镜像

docker  images
image

2、启动镜像

docker run  --name nacos --env MODE=standalone  --net czbkNetwork --ip 172.188.0.44 --privileged=true  -p 8848:8848 --restart=always   -d 8cb51161b062 

3、访问nacos

http://ip:8848/nacos
image

用户名nacos密码nacos

2.5.2 Nacos集群

  • 单机模式 - 用于测试和单机试用。

    在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,

    不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力

  • 集群模式 - 用于生产环境,确保高可用。

  • 多集群模式 - 用于多数据中心场景

集群安装约束:

1. 64 bit OS Linux/Unix/Mac,推荐使用Linux系统。

2. 集群需要依赖mysql,单机可不必;在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤

3. 3个或3个以上Nacos节点才能构成集群

搭建Nacos高可用集群步骤:

1、需要去Nacos官网clone Nacos集群项目nacos-docker

2、nacos-docker是使用的Docker Compose对容器进行编排,所以首先需要安装Docker Compose

详细信息可参照Nacos官网:https://nacos.io/zh-cn/docs/quick-start-docker.html

1)安装Docker Compose

什么是Docker Compose

Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

是一个定义和运行多容器的docker应用工具

Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我们以编译好的二进制包方式安装在Linux系统中。

1、安装

#在Linux下下载(下载到/usr/local/bin)
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose


# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose

# 查看版本信息
docker-compose --version

看到版本信息,说明安装成功。

2.卸载

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

常见问题:

如果安装完成后,查看版本频繁报错,如下

Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg

可使用下面的解决方案

1、切换到/usr/local/bin,删除之前的下载/docker-compose

2、切换到/usr/local/bin执行下面的命令

wget https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-Linux-x86_64

3、下载完毕后重命名为docker-compose

mv docker-compose-Linux-x86_64 docker-compose

4、赋权限

5、查看版本成功

2)克隆Nacos-docker项目

如果本机没有安装git

请使用 yum install git安装

#切换到自定义目录
cd /usr/local/nacos
#开始clone
git clone https://github.com/nacos-group/nacos-docker.git

3)运行nacos-docker脚本

#执行编排命令
docker-compose -f /usr/local/nacos/nacos-docker/example/cluster-hostname.yaml up 

上面的编排命令主要下载mysql镜像和nacos镜像,自动完成镜像下载/容器启动

​ Pulling from nacos/nacos-mysql,版本是5.7(执行初始化脚本)

​ Pulling nacos3 (nacos/nacos-server:latest)最新版本,目前是1.2.1(启动nacos123)

4)停止、启动

#启动 
docker-compose -f  /usr/local/nacos/nacos-docker/example/cluster-hostname.yaml start
image

Nacos集群启动成功

#停止
docker-compose -f  /usr/local/nacos/nacos-docker/example/cluster-hostname.yaml stop
image

nacos所有节点、mysql成功终止(停止容器)

5)文件讲解

services:
  nacos1:
    hostname: nacos1
    container_name: nacos1
    image: nacos/nacos-server:latest
    volumes:
      - ./cluster-logs/nacos1:/home/nacos/logs
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8848:8848"
      - "9555:9555"
    env_file:
      - ../env/nacos-hostname.env
    restart: always
    depends_on:
      - mysql

  nacos2:
    hostname: nacos2
    image: nacos/nacos-server:latest
    container_name: nacos2
    volumes:
      - ./cluster-logs/nacos2:/home/nacos/logs
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8849:8848"
    env_file:
      - ../env/nacos-hostname.env
    restart: always
    depends_on:
      - mysql
  nacos3:
    hostname: nacos3
    image: nacos/nacos-server:latest
    container_name: nacos3
    volumes:
      - ./cluster-logs/nacos3:/home/nacos/logs
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8850:8848"
    env_file:
      - ../env/nacos-hostname.env
    restart: always
    depends_on:
      - mysql
  mysql:
    container_name: mysql
    image: nacos/nacos-mysql:5.7
    env_file:
      - ../env/mysql.env
    volumes:
      - ./mysql:/var/lib/mysql
    ports:
      - "3306:3306"

6)访问Nacos

http://172.17.0.225:8848/nacos
http://172.17.0.225:8849/nacos
http://172.17.0.225:8850/nacos
image
  • Leader:负责接收客户端的请求
  • Candidate:用于选举Leader的一种角色
  • Follower:负责响应来自Leader或者Candidate的请求

【集群管理】---【节点列表】可查看Nacos集群节点信息

2.5.3 集群实时监控中心

Nacos 0.8.0版本完善了监控系统,支持通过暴露metrics数据接入第三方监控系统监控Nacos运行状态,目前支持prometheus、elastic search和influxdb,

下面结合prometheus和grafana如何监控Nacos 

1)监控端点暴露

监控前准备

配置application.properties文件,暴露metrics数据

vi  /usr/local/nacos/nacos-docker/example/init.d/custom.properties

开启端点

management.endpoints.web.exposure.include=*

访问{ip}:8848/nacos/actuator/prometheus,看是否能访问到metrics数据

http://172.17.0.225:8848/nacos/actuator/prometheus
或者
http://172.17.0.225:8849/nacos/actuator/prometheus
或者
http://172.17.0.225:8850/nacos/actuator/prometheus
image

2)Prometheus服务监控

采集Nacos metrics数据

1、什么是Prometheus

Prometheus是一套开源的服务监控&报警&时间序列数据库的组合,通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上;主要是负责存储、抓取、聚合、查询;

可通过第三方可视化界面进行分析与监控

起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃。

2、创建挂载目录

用于挂载prometheus.yml文件

mkdir /usr/local/prometheus

3、docker安装

docker pull prom/prometheus

4、创建配置文件

#切换到挂载目录
cd  /usr/local/prometheus
#修改配置文件
vi prometheus.yml

增加下面的配置用来采集Nacos metrics数据

global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
    
    
   #用来采集Nacos metrics数据 
  - job_name: nacos
    metrics_path: '/nacos/actuator/prometheus'
    static_configs:
      - targets: ['172.17.0.225:8848','172.17.0.225:8849','172.17.0.225:8850']

5)运行

docker run --name prometheus  -v /usr/local/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml   --net czbkNetwork --ip 172.188.0.11    --restart=always --privileged=true  -p 9090:9090     -d prom/prometheus:latest

注意:

进入容器使用

docker exec -it b29da0b770cd /bin/sh

6)访问

http://172.17.0.225:9090/graph

通过访问http://{ip}:9090/graph可以看到prometheus的采集数据,在搜索栏搜索nacos_monitor可以搜索到Nacos数据说明采集数据成功

image

3) Grafana度量分析

步骤

1、镜像拉取与启动

2、配置数据源(Proemtheus)

3、配置监控模板

4、配置告警

什么Grafaana
Grafana是一个开源的度量分析与可视化套件。
有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus等数据源

经常被用作基础设施的时间序列数据和应用程序分析的可视化 

1、拉取镜像

 docker  pull grafana/grafana

2、启动

docker run --name grafana  --net czbkNetwork --ip 172.188.0.12    --restart=always --privileged=true  -p 3000:3000     -d grafana/grafana

3.访问

http://172.17.0.225:3000/login

默认用户和密码均为admin

image

输入用户名、密码进入

image

成功进入到Granfana后,我们需要做三件事情

1、配置prometheus数据源
2、导入Nacos grafana监控模版
3、配置grafana告警

1、配置prometheus数据源

最后点击Save,要注意的是Name是prometheus而不是prometheus,否则后续可能会有错误提示

image

2、导入Nacos grafana监控模版

image

模板

https://raw.githubusercontent.com/nacos-group/nacos-template/master/nacos-grafana.json

导入成功

image

Nacos监控分为三个模块:

nacos monitor展示核心监控项

nacos detail展示指标的变化曲线

nacos alert为告警项

nacos monitor展示核心监控项


image

nacos detail展示指标的变化曲线

image

nacos alert为告警项

image

3、配置grafana告警(18种方式预警)

步骤:

1、配置SMTP服务器(email)

2、配置预警规则

3、配置监控通道

1、配置SMTP服务器(email)

登录容器(此处进入容器修改)

 docker exec  -it -u root  150724ac86fd /bin/bash

修改配置文件

vi /usr/share/grafana/conf/defaults.ini
image

1、enabled:开启email发送配置
2、host 设置邮箱smtp地址(加端口)
3、user 发送邮箱账户
4、password 邮箱密码或者smtp客户端验证码
5、from_address邮箱地址

重启容器

docker  restart 150724ac86fd

http://172.17.0.225:3000/login

2、配置预警规则

进入到监控主页面;选择【Nacos alert】选择需要配置的项目,此处配置内存预警

image

1、Name这个是alert预警名称,可以自定义。
2、Evaluate every执行的频率,默认每60s检测一次

Conditions:告警触发条件

3、WHEN [avg0],默认平均值计算(可以修改最大、最小、汇总等)

4、query(A,5m,now),字母A代表选择的metrics中设置的PromQL 指标数据,也可以选择其它在metrics中设置的,但这里是单选。5m代表从现在起往之前的5分钟,now为时间的结束点,此外这里可以自己手动输入时间。
5、保存


image

3、配置监控通道

创建邮件发送规则,Email addresses中多个收件人以英文分号隔开。例:[email protected];[email protected]
创建成功后,点击Send Test 按钮,测试邮件是否能发送成功。(如果发送不成功,可在grafana.log中查看日志信息

当Nacos运行出现问题时,需要grafana告警通知相关负责人。grafana支持多种告警方式,常用的有邮件,钉钉和webhook方式

image

配置说明


image

可以通过【Save Test】发送测试邮件

image

测试邮件


image

内存预警邮件

image

写在后面:
技术中台下终搜技术解决方案 课程合计分为三天
持续更新

  • 第一天内容介绍
    image

ps:当前页面为第一天的【第一章节】

  • 第二天内容介绍:
    image
  • 第三天内容介绍:
image

你可能感兴趣的:(技术中台下终搜技术解决方案(day01-2))