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

简介: 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

目录
相关文章
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
运维 Ubuntu 应用服务中间件
自动化运维之路:使用Ansible进行服务器管理
在现代IT基础设施中,自动化运维已成为提高效率和可靠性的关键。本文将引导您通过使用Ansible这一强大的自动化工具来简化日常的服务器管理任务。我们将一起探索如何配置Ansible、编写Playbook以及执行自动化任务,旨在为读者提供一条清晰的路径,从而步入自动化运维的世界。
260 11
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。
|
运维 Ubuntu 网络协议
自动化运维:使用Ansible进行服务器配置管理
在现代IT架构中,自动化运维已成为提升效率、减少人为错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化和标准化服务器的配置管理过程。通过具体的代码示例和操作步骤,我们将展示如何快速部署应用、管理配置以及自动化日常任务,从而确保环境的一致性和可靠性。
|
运维 安全 Ubuntu
自动化运维:使用Ansible进行服务器配置管理
在现代IT基础设施中,自动化运维是确保高效、稳定和安全服务的关键。本文将深入介绍如何使用Ansible这一开源工具来简化服务器配置管理工作,从基础安装到高级应用,我们将一步步展示如何通过Ansible Playbooks实现自动化部署和维护,旨在帮助读者构建更加灵活和可扩展的运维体系。
242 7
|
存储 Prometheus 监控
服务器监控软件Prometheus
【10月更文挑战第19天】
265 6
|
运维 应用服务中间件 调度
自动化运维:使用Ansible实现服务器批量管理
【10月更文挑战第26天】在当今快速发展的IT领域,自动化运维已成为提升效率、降低人为错误的关键技术手段。本文通过介绍如何使用Ansible这一强大的自动化工具,来简化和加速服务器的批量管理工作,旨在帮助读者理解自动化运维的核心概念和实践方法。文章将围绕Ansible的基础使用、配置管理、任务调度等方面展开,通过实际案例引导读者深入理解自动化运维的实现过程,最终达到提高运维效率和质量的目的。
|
运维 负载均衡 安全
自动化运维:使用Ansible进行服务器配置管理
【10月更文挑战第15天】在本文中,我们将探讨如何利用Ansible这一强大的自动化工具来简化和加速服务器的配置管理工作。通过实际案例和代码示例,我们将展示Ansible如何帮助运维人员高效地进行软件部署、系统更新和日常维护任务,从而提升工作效率并减少人为错误。
|
7月前
|
Prometheus 监控 Cloud Native
云原生监控实战:Prometheus+Grafana快速搭建指南
云原生监控实战:Prometheus+Grafana快速搭建指南
|
7月前
|
存储 Prometheus 监控
OSS监控体系搭建:Prometheus+Grafana实时监控流量、错误码、存储量(开源方案替代云监控自定义视图)
本方案基于Prometheus构建OSS监控系统,涵盖架构设计、指标采集、可视化、告警及性能优化,助力企业实现高可用、低成本的自建监控体系。
743 1