张家界做网站美工公司/正规百度推广
一、简介
1、Consul简介
-
Consul 是基于 GO 语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。
-
在没有使用 consul 服务自动发现的时候,我们需要频繁对 Prometheus 配置文件进行修改,无疑给运维人员带来很大的负担。引入consul之后,只需要在consul中维护监控组件配置,prometheus就能够动态发现配置
2、实验环境
IP | 操作系统 | 安装服务 |
---|---|---|
172.18.200.52 | ubuntu 22.04.1 | Docker、Prometheus、Grafana、Consul |
172.18.200.53 | ubuntu 22.04.1 | node-exporter |
二、安装Consul
1、配置docker-compose.yml
# cat docker-compose.yml
version : '3'
services:consul:image: consul:1.15restart: alwayscontainer_name: consulhostname: consulenvironment:TZ: Asia/Shanghaiports:- 8500:8500volumes:- /etc/localtime:/etc/localtime:ro- ./consul/config:/consul/config- ./consul/data:/consul/data/command: ["consul","agent","-config-dir","/consul/config"]
2、配置consul.hcl
server: 将其设置为 true 将使我们的 consul 服务作为服务器运行,而不是作为客户端或代理运行。
data_dir: consul 的默认数据目录,它存储一些持久服务器值。
log_level: 在运行 consul 的命令时我们将如何处理日志。
client_addr: 我们的客户地址,如果我们想要更多地保护它,我们可以使用 - 子网划分或只允许来自确定的 ip 的连接。
bind_addr: 我们的服务器ip地址,如果只使用一个网卡则不需要
connect: 允许网状连接。
ui_config: 基于Web的用户界面。
# cat consul/config/consul.hcl
client_addr = "0.0.0.0"
bind_addr = "127.0.0.1"
data_dir = "/consul/data"
log_level = "INFO"
server = true
bootstrap = true
connect{enabled = true
}
ui_config{enabled = true
}
acl = {enabled = truedefault_policy = "deny"enable_token_persistence = true
}
3、启动consul
# docker-compose up -d
# docker exec -it consul '/bin/sh'
/ # consul acl bootstrap
AccessorID: 738dba6d-xxxx-6f8e-xxxx-8b10d9b06a6f
SecretID: c32db00c-xxxx-37be-xxxx-8b674d033ce3
Description: Bootstrap Token (Global Management)
Local: false
Create Time: 2023-11-14 06:16:01.812609522 +0000 UTC
Policies:00000000-0000-0000-0000-000000000001 - global-management
4、浏览器访问
通过
SecretID
进行登录
http://172.18.200.52:8500
三、配置Ansible
1、安装
# apt-get install ansible
2、修改配置
# cat /etc/ansible/ansible.cfg
[defaults]
#host_key_checking = False
#error_on_undefined_vars = True
#timeout = 60
#inventory = inventory.tmp
#roles_path = /conjurinc
#remote_tmp = /tmp
host_key_checking = False
log_path = /var/log/ansible.log
四、ansible-playbook编写
1、查看目录结构
# tree ./
# tree ./
./
├── inventory
│ └── hosts
├── node_exporter_roles.yml
└── roles├── node-exporter│ ├── defaults│ │ └── main.yml│ ├── files│ │ └── node_exporter-1.6.1.linux-amd64.tar.gz│ ├── handlers│ │ └── main.yml│ ├── tasks│ │ └── main.yml│ └── templates│ └── node_exporter.service.j2└── register├── files│ └── consul_register.sh└── tasks├── main.yml└── register.yml
2、配置hosts
service_name:可以不配置
# cat inventory/hosts
[linux]
172.18.200.53 service_name=linux-172.18.200.53[linux:vars]
consul_ip=172.18.200.52
consul_port=8500
node_exporter_port=9100
consul_token=c32db00c-xxxx-37be-xxxx-8b674d033ce3
3、配置node_exporter_roles.yml
# cat node_exporter_roles.yml
- hosts: linuxgather_facts: noroles:- role: node-exporter
4、配置roles/node-exporter
(1)下载exporter
下载地址:https://github.com/prometheus/node_exporter/releases/tag/v1.6.1
(2)配置defaults
设置service_name默认值
# cat roles/node-exporter/defaults/main.yml
service_name: "{{ group_names[0] }}-{{ inventory_hostname }}"
(3)配置handlers
# cat roles/node-exporter/handlers/main.yml
- name: restart node exporter servicesystemd:name: node_exporterstate: restarteddaemon-reload: yes- include: roles/register/tasks/register.yml
(4)配置tasks
# cat roles/node-exporter/tasks/main.yml
- name: push node_exporterunarchive:src: node_exporter-1.6.1.linux-amd64.tar.gzdest: /usr/local- name: renameshell: |cd /usr/localif [ ! -d node_exporter ]then mv node_exporter-1.6.1.linux-amd64 node_exporterfi- name: copy node_exporter systemdtemplate:src: node_exporter.service.j2dest: /usr/lib/systemd/system/node_exporter.servicenotify: restart node exporter service- name: start node_exportersystemd:name: node_exporterstate: startedenabled: yesdaemon-reload: yes- include: roles/register/tasks/main.yml
(5)配置templates
node_exporter_port:端口可以进行配置
# cat roles/node-exporter/templates/node_exporter.service.j2
[Unit]
Description=node_exporter[Service]
ExecStart=/usr/local/node_exporter/node_exporter --web.listen-address=:{{ node_exporter_port }}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure[Install]
WantedBy=multi-user.target
5、配置roles/register
(1)配置files
name:ansible hosts的name
group_names[0]:组名,如果属于children,那么就是group_names[1]
inventory_hostname:ansible hosts的ip
node_exporter_port:node_exporter的端口,默认9100
consul_ip:consul服务的ip
consul_port:consul服务的端口
consul_token:consul服务的SecretID
# cat roles/register/files/consul_register.sh
#!/bin/bashinstance_id=$1
service_name=$2
ip=$3
port=$4
consul_ip=$5
consul_port=$6
consul_token=$7curl -X PUT --header "X-CONSUL-TOKEN: $consul_token" -d '{"id": "'"$instance_id"'","name": "'"$service_name"'","address": "'"$ip"'","port": '"$port"',"tags": ["'"$service_name"'"],"checks": [{"http": "http://'"$ip"':'"$port"'","interval": "5s"}]}' http://$consul_ip:$consul_port/v1/agent/service/register
(2)配置tasks
# cat roles/register/tasks/main.yml
- name: push consul_register.shcopy:src: roles/register/files/consul_register.shdest: /usr/local/bin- include: roles/register/tasks/register.yml
# cat roles/register/tasks/register.yml
- name: register nodes into consulshell: /bin/bash /usr/local/bin/consul_register.sh {{ service_name }} {{ group_names[0] }} {{ inventory_hostname }} {{ node_exporter_port }} {{ consul_ip }} {{ consul_port }} {{ consul_token }}
五、修改Prometheus配置
1、配置prometheus.yml
services中的linux:ansible hosts文件中的group名字
这里的services为列表,所有可以添加多个不同组的服务器进来,也实现了分组
# cat prometheus/conf/prometheus.yml
...
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "linux"consul_sd_configs:- server: 172.18.200.52:8500token: c32db00c-xxxx-37be-xxxx-8b674d033ce3services: ['linux']
2、重启
# docker restart prometheus
六、执行并添加Grafana
1、执行ansible-playbook命令
# ansible-playbook -i inventory/hosts node_exporter_roles.yml
2、查看Consul
3、添加Grafana
模板id:9276
相关文章:

Prometheus+Ansible+Consul实现服务发现
一、简介 1、Consul简介 Consul 是基于 GO 语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。 在没有使用 consul 服…...

【原创】java+swing+mysql校园活动管理系统设计与实现
前言: 本文介绍了一个校园活动管理系统的设计与实现。该系统基于JavaSwing技术,采用C/S架构,使用Java语言开发,以MySQL作为数据库。系统实现了活动发布、活动报名、活动列表查看等功能,方便了校园活动的发布和管理&am…...

vscode中vue项目引入的组件的颜色没区分解决办法
vscode中vue项目引入的组件的颜色没区分解决办法 图中引入组件和其他标签颜色一样没有区分,让开发者不易区分,很蓝瘦 这个就很直观,解决办法就是你当前的vscode版本不对,你得去找找其他版本,我的解决办法就是去官网历…...

uniapp: 实现pdf预览功能
目录 第一章 实现效果 第二章 了解并解决需求 2.1 了解需求 2.2 解决需求 2.2.1 方法一 2.2.2 方法二 第三章 资源下载 第一章 实现效果 第二章 了解并解决需求 2.1 了解需求 前端需要利用后端传的pdf临时路径实现H5端以及app端的pdf预览首先我们别像pc端一样&#…...

【Pytorch笔记】7.torch.nn (Convolution Layers)
我们常用torch.nn来封装网络,torch.nn为我们封装好了很多神经网络中不同的层,如卷积层、池化层、归一化层等。我们会把这些层像是串成一个牛肉串一样串起来,形成网络。 先从最简单的,都有哪些层开始学起。 Convolution Layers -…...

MySQL内部组件与日志详解
MySQL的内部组件结构 MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等)&am…...

【LeetCode】94. 二叉树的中序遍历
94. 二叉树的中序遍历 难度:简单 题目 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2]示例 2: 输入:root [] 输出:[]示…...

IP-guard WebServer 命令执行漏洞复现
简介 IP-guard是一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。在旧版本申请审批的文件预览功能用到了一个开源的插件 flexpaper,使用的这个插件版本存在远程命令执行漏洞,攻击者可利用该漏…...

TensorFlow案例学习:图片风格迁移
准备 官方教程: 任意风格的快速风格转换 模型下载地址: https://tfhub.dev/google/magenta/arbitrary-image-stylization-v1-256/2 学习 加载要处理的内容图片和风格图片 # 用于将图像裁剪为方形def crop_center(image):# 图片原始形状shape image…...

解密网络世界的秘密——Wireshark Mac/Win中文版网络抓包工具
在当今数字化时代,网络已经成为了人们生活和工作中不可或缺的一部分。然而,对于网络安全和性能的监控和分析却是一项重要而又复杂的任务。为了帮助用户更好地理解和解决网络中的问题,Wireshark作为一款强大的网络抓包工具,应运而生…...

自学ansible笔记
一、认识ansible Ansible是一款开源自动化运维工具。它有如下特点: 1、不需要安装客户端,通过sshd去通信,比较轻量化; 2、基于模块工作,模块可以由任何语言开发,比较自由和开放; 3、不仅支持命…...

笔记53:torch.nn.rnn() 函数详解
参数解释: (1)input_size():即输入信息 Xt 的每个序列的独热编码向量的长度,即 len(vocab) (2)hidden_size():即隐变量 h 的维度(维度是多少,就代表用几个数…...

【Spring】使用三方包进行数据源对象(数据库)管理
在这里使用alibaba的druid来连接数据库,然后再Spring Config下配置数据库 目录 第一步:在pom.xml中导入坐标第二步:在bean中配置连接注 第一步:在pom.xml中导入坐标 在dependencies下写: <dependency><grou…...

EfficientNet:通过模型效率彻底改变深度学习
一、介绍 EfficientNet 是深度学习领域的里程碑,代表了神经网络架构方法的范式转变。EfficientNet 由 Google Research 的 Mingxing Tan 和 Quoc V. Le 开发,在不影响性能的情况下满足了对计算高效模型不断增长的需求。本文深入探讨了 EfficientNet 背后…...

asp.net core mvc之 布局
一、布局是什么? 布局是把每个页面的公共部分,提取成一个布局页面(头、导航、页脚)。 二、默认布局 _Layout.cshtml 默认的布局是在 /Views/Shared 目录的 _Layout.cshtml文件。通常Shared目录中的视图都是公共视图。该目录下的…...

【QT HTTP】使用QtNetwork模块制作基于HTTP请求的C/S架构
目录 0 引言1 HTTP基本知识1.1 请求类型1.2 HTTP请求报文格式1.3 HTTP响应报文格式1.4 拓展:GET vs POST 请求方法GET请求请求报文:响应报文 POST请求请求报文响应报文 其他注意事项示例:GET请求示例POST请求示例 2 实战2.1 QtNetwork模块介绍…...

R语言绘制精美图形 | 火山图 | 学习笔记
一边学习,一边总结,一边分享! 教程图形 前言 最近的事情较多,教程更新实在是跟不上,主要原因是自己没有太多时间来学习和整理相关的内容。一般在下半年基本都是非常忙,所有一个人的精力和时间有限&#x…...

远程创建分支本地VScode看不到分支
在代码存放处右击,点击Git Bash Here 输入git fetch–从远程仓库中获取最新的分支代码和提交历史 就OK啦,现在分支可以正常查看了...

python后台框架简介
python后台框架 Python是一种流行的编程语言,它有许多优点,如简洁、易读、灵活和功能强大。Python也是一种常用的后端开发语言,它可以用来构建各种类型的网站和应用程序。Python有许多后端框架,可以帮助开发者快速地开发和部署后…...

spring boot validation使用
spring-boot-starter-validation 是 Spring Boot 中用于支持数据验证的模块。它建立在 Java Validation API(JSR-380)之上,提供了一种方便的方式来验证应用程序中的数据。以下是使用 spring-boot-starter-validation 的基本方法: …...

Hadoop3.3.4分布式安装
安装前提:已经配置好java环境,所有机器之间ssh的免密登录。 注意:下文中的flinkv1、flinkv2、flinkv3是三台服务器的别名 1.集群部署规划 注意:NameNode和SecondaryNameNode不要安装在同一台服务器 注意:ResourceMan…...

SQL ALTER TABLE 语句||SQL AUTO INCREMENT 字段
SQL ALTER TABLE 语句 ALTER TABLE 语句 ALTER TABLE 语句用于在现有表中添加、删除或修改列。 SQL ALTER TABLE 语法 若要向表中添加列,请使用以下语法: ALTER TABLE table_name ADD column_name datatype 若要删除表中的列&am…...

【源码系列】短剧系统开发国际版短剧系统软件平台介绍
系统介绍 短剧是一种快节奏、紧凑、有趣的戏剧形式,通过短时间的精彩表演,向观众传递故事的情感和思考。它以其独特的形式和魅力,吸引着观众的关注,成为了当代戏剧娱乐中不可或缺的一部分。短剧每一集都是一个小故事,…...

JavaWeb[总结]
文章目录 一、Tomcat1. BS 与 CS 开发介绍1.1 BS 开发1.2 CS 开发 2. 浏览器访问 web 服务过程详解(面试题)2.1 回到前面的 JavaWeb 开发技术栈图2.2 浏览器访问 web 服务器文件的 UML时序图(过程) ! 二、动态 WEB 开发核心-Servlet1. 为什么会出现 Servlet2. 什么是…...

如何解决小程序异步请求问题
小程序异步请求问题指的是在小程序中进行异步请求时可能会出现的问题,比如请求失败、请求超时等。以下是一些解决方案: 检查网络连接:首先需要确保网络连接正常,只有网络连接正常时才能正常进行异步请求。 检查请求参数ÿ…...

NSSCTF第12页(3)
[NSSCTF 2nd]php签到 首先,代码定义了一个名为 waf 的函数,用于执行一个简单的文件扩展名检查来防止上传恶意文件。 $black_list 是一个存储不允许的文件扩展名的数组,如 “ph”、“htaccess” 和 “ini”。 pathinfo($filename, PATHINF…...

基于ssm+vue交通事故档案系统
摘要 摘要是对文章、论文或其他文本的主要观点、结论和关键信息的简洁概括。由于你没有提供具体的文章或主题,我将为你创建一个通用的摘要。 本文介绍了一种基于SSM(Spring Spring MVC MyBatis)和Vue.js的交通事故档案管理系统的设计与实现…...

DNS1(Bind软件)
名词解释 1、DNS(Domain Name System) DNS即域名系统,它是一个分层的分布式数据库,存储着IP地址与主机名的映射 2、域和域名 域为一个标签,而有多个标签域构成的称为域名。例如hostname.example.com,其…...

PDF自动打印
最近接到用户提过来的需求,需要一个能够自动打印图纸的功能,经过几天的研究整出来个初版了的,分享出来给大家,希望能有帮助。 需求描述: 生产车间现场每天都有大量的图纸需要打印,一个一个打印太慢了࿰…...

【C#】类型转换-显式转换:括号强转、Parse法、Convert法、其他类型转string
目录 一、括号强转 1.有符号整型 2.无符号整型 3.浮点之间 4.无符号和有符号 5.浮点和整型 6.char和数值类型 7.bool和string是不能够通过 括号强转的 二、Parse法 1.有符号 2.无符号 3.浮点型 4.特殊类型 三、Convert法 1.转字符串 2.转浮点型 3.特殊类型转换…...