写在前面:
文章为作者原创
如需转载,请注明出处
2.1 Docker容器化环境构建
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
3、安装yum-utils&驱动依赖,如下图
作用:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4、 设置yum源为阿里云,如下图
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、 安装docker,如下图
sudo yum install -y docker-ce
5、 查看docker版本,如下图
docker -v
or
docker info
6、开机启动
注意:开机先启动docker才能再启动容器
systemctl enable docker
2.1.2 固定Ip设置
容器ip变化
1、创建自定义网络
创建一个桥接网络并指定网段
docker network create --subnet=172.188.0.0/16 czbkNetwork
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
2、查看镜像
docker images
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
启动节点二
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
启动节点三
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
4) 验证集群
1、问题:在访问elasticsearch前,请确保防火墙是关闭的,执行命令:
#暂时关闭防火墙
systemctl stop firewalld
或者
#永久设置防火墙状态
systemctl enable firewalld.service #打开防火墙永久性生效,重启后不会复原
systemctl disable firewalld.service #关闭防火墙,永久性生效,重启后不会复原
2、问题
报错的意思是: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,代表集群搭建成功,如下图
健康状况结果解释:
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
tips
锁堆
集群搭建锁堆问题
前
后
坑:
最大堆内存和最小要相等,否则将锁住整个堆
以下为报错
[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
、
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
2、查看镜像
docker images
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*
解决问题
我们在访问 Kibana 的时候,有可能会出先 Kibana server is not ready yet 的问题 ,原因是因为
kibana文件中的ELASTICSEARCH_URL 配置的应该是容器的 ip,而不是本地ip。
1、首先我们查看 ElasticSearch 的容器内部 ip:
docker inspect 容器ID
2、然后进入 Kibana 容器内部,修改 kibana.yml 中的ip
进入容器内部修改(或者直接修改挂载文件都可以)
docker exec -it 容器id /bin/bash
vi config/kibana.yml
修改下面的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
修改完成之后退出容器,重新启动即可
再次访问kibana
2.4 MySql关系存储构建
1、拉取镜像
docker pull mysql:5.7
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
3、同步数据
4、设置时区(会话级别设置)
查看时间
SELECT NOW();
查看时区
show variables like "%time_zone%";
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
2、查看镜像
docker images
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
用户名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
Nacos集群启动成功
#停止
docker-compose -f /usr/local/nacos/nacos-docker/example/cluster-hostname.yaml stop
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
- 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
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=<job_name>` 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数据说明采集数据成功
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
输入用户名、密码进入
成功进入到Granfana后,我们需要做三件事情
1、配置prometheus数据源
2、导入Nacos grafana监控模版
3、配置grafana告警
1、配置prometheus数据源
最后点击Save,要注意的是Name是prometheus而不是prometheus,否则后续可能会有错误提示
2、导入Nacos grafana监控模版
模板
https://raw.githubusercontent.com/nacos-group/nacos-template/master/nacos-grafana.json
导入成功
Nacos监控分为三个模块:
nacos monitor展示核心监控项
nacos detail展示指标的变化曲线
nacos alert为告警项
nacos monitor展示核心监控项
nacos detail展示指标的变化曲线
nacos alert为告警项
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
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】选择需要配置的项目,此处配置内存预警
1、Name这个是alert预警名称,可以自定义。
2、Evaluate every执行的频率,默认每60s检测一次
Conditions:告警触发条件
3、WHEN [avg0],默认平均值计算(可以修改最大、最小、汇总等)
4、query(A,5m,now),字母A代表选择的metrics中设置的PromQL 指标数据,也可以选择其它在metrics中设置的,但这里是单选。5m代表从现在起往之前的5分钟,now为时间的结束点,此外这里可以自己手动输入时间。
5、保存
3、配置监控通道
创建邮件发送规则,Email addresses中多个收件人以英文分号隔开。例:xxx@163.com;xxx@qq.com
创建成功后,点击Send Test 按钮,测试邮件是否能发送成功。(如果发送不成功,可在grafana.log中查看日志信息)
当Nacos运行出现问题时,需要grafana告警通知相关负责人。grafana支持多种告警方式,常用的有邮件,钉钉和webhook方式
配置说明
可以通过【Save Test】发送测试邮件
测试邮件
内存预警邮件
写在后面:
技术中台下终搜技术解决方案 课程合计分为三天
持续更新
-
第一天内容介绍
ps:当前页面为第一天的【第一章节】
-
第二天内容介绍:
- 第三天内容介绍: