Prometheus: ansible+consul自动发现,监控服务器

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: Prometheus: ansible+consul自动发现,监控服务器

一,安装部署ansible和准备hosts文件

yum -y install ansible

注: 我把Prometheus和grafana的目录都放在新建目录/opt/monitor中,为方便管理,在其目录下创建ansible目录,所需要的文件,脚本都放在ansible下

cd /opt/monitor/
mikdir ansible

注,ansible后面的操作,都在/opt/monitor/ansible/目录下完成

vim /opt/monitor/ansible/hosts

[webservers]
192.168.123.171  name=web1
[dbservers]
192.168.123.172  name=db1
192.168.123.176  name=db2

“name=” 是后面需要用到的定义的变量,在这里放一百台服务器ip也行,看自己需求,分组

二, docker里面运行consul

单独下载consul太麻烦,我直接是拉去容器方式(容器安装步骤,在我另一篇博客的过程中 请点击查看

docker run --name consul -d -p 8500:8500 consul

注: consul可以部署在任何一台服务器上,只要能注册服务即可,我部署在Prometheus服务器上

检测是否部署成功 local hosts:8500

三, 准备ansible所需要的脚本,软件等

3.1 在ansible目录下准备node_exporter的tar包

可以去官网下载,也可以到我的百度网盘提取,百度网盘分享 提取码cjcj 请点击这里

3.2 用systemd来管理node_exporter

vim /opt/monitor/ansible/node_exporter.service

[Unit]
Description=node_exporter
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

3.3 准备consul服务注册脚本

vim /opt/monitor/ansible/consul_register.sh

#!/bin/bash
service_name=$1
instance_id=$2
ip=$3
port=$4
curl -X PUT -d '{"id": "'"$instance_id"'","name": "'"$service_name"'","address": "'"$ip"'","port": "'"$port"'","tags": ["'"$service_name"'"],"checks": [{"http": "http://192.168.123.152:9100","interval": 
"5s"}]}' http://192.168.123.170:8500/v1/agent/service/register

解释:service_name 相当于Prometheus当中的job_name,相当于分组,然后脚本中tags:service_name便是consul的标签,附上图片解释一下变量

f26482ad8a8f4695b3b3e45cb4b9b522.png

01a806b0074d4560a1792a23268a3c07.png

a483cafe438944adbc21d1338baa5949.png

3.4 准备playbook.yml

vim /opt/monitor/ansible/playbook.yml

- hosts: webservers
  gather_facts: no
  tasks:
  - name: push node_exporter
    unarchive:
      src: node_exporter-1.4.0-rc.0.linux-amd64.tar.gz
      dest: /usr/local
  - name: rename
    shell: |
      cd /usr/local
      if [ ! -d node_exporter ]
        then mv node_exporter-1.4.0-rc.0.linux-amd64 node_exporter
      fi
  - name: copy systemd content
    copy:
      src: node_exporter.service
      dest: /usr/lib/systemd/system
  - name: start node_exporter
    systemd:
      name: node_exporter
      state: started
      enabled: yes
      daemon-reload: yes
  - name: push consul_register.sh
    copy:
      src: consul_register.sh
      dest: /usr/local/bin
  - name: register nodes into consul
    shell: /bin/bash /usr/local/bin/consul_register.sh {{ group_names[0] }} {{ name }} {{ inventory_hostname }} {{ 9100 }}
- hosts: dbservers
  gather_facts: no
  tasks:
  - name: push node_exporter
    unarchive:
      src: node_exporter-1.4.0-rc.0.linux-amd64.tar.gz
      dest: /usr/local
  - name: rename
    shell: |
      cd /usr/local
      if [ ! -d node_exporter ]
        then mv node_exporter-1.4.0-rc.0.linux-amd64 node_exporter
      fi
  - name: copy systemd content
    copy:
      src: node_exporter.service
      dest: /usr/lib/systemd/system
  - name: start node_exporter
    systemd:
      name: node_exporter
      state: started
      enabled: yes
      daemon-reload: yes
  - name: push consul_register.sh
    copy:
      src: consul_register.sh
      dest: /usr/local/bin
  - name: register nodes into consul
    shell: /bin/bash /usr/local/bin/consul_register.sh {{ group_names[0] }} {{ name }} {{ inventory_hostname }} {{ 9100 }}

四, 准备Prometheus.yml的配置文件

vim /opt/monitor/prometheus/prometheus.yml

  - job_name: 'webservers'
    consul_sd_configs:
    - server: 192.168.123.170:8500
      services: ['webservers']
  - job_name: 'dbservers'
    consul_sd_configs:
    - server: 192.168.123.170:8500
      services: ['dbservers']

注意,更改配置之后 检查Prometheus的pid,然后 kill -HUP pid 来进行reload

如果担心语法有误,可以进入到Prometheus目录下,执行:

./promtool check config prometheus.yml

五, 执行playbook.yml

执行之前做免密(博客ansible部署zabbix-agent有过详细步骤,故省略,可以点击此处),或者用ansible-playbook -i hosts -uroot -k 然后输入密码来执行。不过这种输入密码可能出现以下报错

ad72861f6b544860b0c6e2d06d9546bf.png

解决思路 : vim /etc/ansible/ansible.cfg

b3dd117e13e54494b43184cddac5893b.png

我用的免密,然后执行:

ansible-playbook -i hosts playbook.yml

faaec2c1bf774695a7f331a43821215b.png

然后去检查ip:8500 和 ip:9090 去检查即可

完结撒花

a1c5355ac7b54fe0bd1b75718b21344f.png

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
目录
相关文章
|
12天前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
20天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
108 3
|
1月前
|
运维 应用服务中间件 网络安全
自动化运维:使用Ansible进行批量服务器配置
【9月更文挑战第35天】在现代IT基础设施管理中,高效、可扩展的自动化工具是提升工作效率的关键。本文将引导您了解如何使用Ansible这一强大的自动化工具来简化和加速服务器的配置过程,确保一致性和可靠性的同时减少人为错误。通过实际案例,我们将展示如何编写Ansible Playbook以实现批量服务器配置,从而让您能够更加轻松地管理和维护您的服务器群。
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
122 60
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
213 62
|
10天前
|
Prometheus 监控 Cloud Native
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
在 HBase 集群中,Prometheus 监控关注的核心指标包括 Master 和 RegionServer 的进程存在性、RPC 请求数、JVM 内存使用率、磁盘和网络错误、延迟和吞吐量、资源利用率及 JVM 使用信息。通过 Grafana 可视化和告警规则,帮助管理员实时监控集群性能和健康状况。
|
20天前
|
存储 Prometheus 监控
服务器监控软件Prometheus
【10月更文挑战第19天】
41 6
|
20天前
|
运维 应用服务中间件 调度
自动化运维:使用Ansible实现服务器批量管理
【10月更文挑战第26天】在当今快速发展的IT领域,自动化运维已成为提升效率、降低人为错误的关键技术手段。本文通过介绍如何使用Ansible这一强大的自动化工具,来简化和加速服务器的批量管理工作,旨在帮助读者理解自动化运维的核心概念和实践方法。文章将围绕Ansible的基础使用、配置管理、任务调度等方面展开,通过实际案例引导读者深入理解自动化运维的实现过程,最终达到提高运维效率和质量的目的。
|
1月前
|
运维 负载均衡 安全
自动化运维:使用Ansible进行服务器配置管理
【10月更文挑战第15天】在本文中,我们将探讨如何利用Ansible这一强大的自动化工具来简化和加速服务器的配置管理工作。通过实际案例和代码示例,我们将展示Ansible如何帮助运维人员高效地进行软件部署、系统更新和日常维护任务,从而提升工作效率并减少人为错误。
|
19天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
92 0