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 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
目录
相关文章
|
22天前
|
运维 负载均衡 应用服务中间件
自动化运维:使用Ansible进行服务器配置管理
【9月更文挑战第34天】在现代IT运维工作中,自动化已成为提升效率、减少错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化和加速服务器的配置管理工作。我们将通过实际案例展示如何利用Ansible的Playbooks来自动化常见任务,并讨论其对提高运维团队工作效率的影响。
|
21天前
|
运维 应用服务中间件 网络安全
自动化运维:使用Ansible进行批量服务器配置
【9月更文挑战第35天】在现代IT基础设施管理中,高效、可扩展的自动化工具是提升工作效率的关键。本文将引导您了解如何使用Ansible这一强大的自动化工具来简化和加速服务器的配置过程,确保一致性和可靠性的同时减少人为错误。通过实际案例,我们将展示如何编写Ansible Playbook以实现批量服务器配置,从而让您能够更加轻松地管理和维护您的服务器群。
|
11天前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
104 60
|
12天前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
109 62
|
2天前
|
运维 负载均衡 安全
自动化运维:使用Ansible进行服务器配置管理
【10月更文挑战第15天】在本文中,我们将探讨如何利用Ansible这一强大的自动化工具来简化和加速服务器的配置管理工作。通过实际案例和代码示例,我们将展示Ansible如何帮助运维人员高效地进行软件部署、系统更新和日常维护任务,从而提升工作效率并减少人为错误。
|
15天前
|
运维 应用服务中间件 Linux
自动化运维:使用Ansible管理服务器配置
【10月更文挑战第2天】在现代IT运维中,自动化是提高效率和减少错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化日常的服务器管理工作。我们将从基础讲起,逐步深入到高级应用,展示如何通过编写简单的Playbooks来自动化复杂的配置任务。文章还将探讨Ansible的最佳实践,并分享一些实际案例来说明其在实际工作中的应用。
|
18天前
|
运维 应用服务中间件 nginx
自动化运维:使用Ansible管理服务器
【8月更文挑战第70天】随着互联网技术的飞速发展,服务器的数量和复杂性也在日益增加。如何高效、准确地管理这些服务器,成为了每一个运维人员必须面对的问题。本文将介绍如何使用Ansible这个开源的IT自动化工具,来帮助我们更好地管理服务器。Ansible以其简洁的语法、强大的功能和易于上手的特性,成为了运维人员的好帮手。我们将通过一些实际的例子,来看看Ansible是如何工作的。
|
27天前
|
存储 运维 Ubuntu
自动化运维:使用Ansible管理服务器
【8月更文挑战第61天】本文将介绍如何使用Ansible工具进行服务器的自动化管理。我们将从基础概念开始,逐步深入到实际的应用案例,最后通过代码示例展示如何实现自动化部署和配置管理。无论你是初学者还是有经验的运维工程师,这篇文章都会为你提供有价值的参考。
|
1月前
|
运维 Ubuntu 应用服务中间件
自动化运维:使用Ansible进行服务器配置管理
【9月更文挑战第20天】在当今快速发展的信息技术时代,自动化运维已成为提升工作效率、减少人为错误的关键技术手段。本文将引导读者了解如何使用Ansible这一强大的自动化工具来简化和加速服务器的配置管理工作。通过实际代码示例,我们将一起探索Ansible的核心概念、基本操作以及如何构建可重复使用的Playbooks,旨在为读者提供一种清晰、高效的服务器管理方法。无论你是运维新手还是希望提高现有工作流程的效率,这篇文章都将为你提供宝贵的指导和启发。
|
1月前
|
运维 监控 应用服务中间件
自动化运维:使用Ansible管理服务器
【9月更文挑战第26天】在这篇文章中,我们将探索如何使用Ansible来自动化运维任务。Ansible是一种简单而强大的自动化工具,可以简化服务器管理和配置过程。通过学习Ansible的基础知识和实践应用,您将能够更高效地管理您的服务器,并减少人为错误。无论您是初学者还是有经验的系统管理员,这篇文章都将为您提供宝贵的见解和实用的技巧。让我们一起开始学习如何利用Ansible来提升您的运维效率吧!
32 4