记录Consul+TenSunS+Prometheus监控主机

环境:华为云服务器、ubuntu22

一、场景:使用grafana查找模板时,发现一个consulManager模板,从而引出Consul、Tensuns这些。这里简单记录一下部署及使用过程,目前仅使用其监控主机的功能和模板。

二、部署consul+tensuns,两者都是开源的。tensuns本质就是一个基于Consul的WEB运维平台。开源项目地址:starsliao/TenSunS

1.安装,推荐使用docker安装。确保已安装docker和docker-compose,一键式安装命令:
curl -s https://starsl.cn/static/img/all_install.sh|sudo bash

 运行该脚本后会使用docker-compose启动TenSunS和Consul,安装路径是:/opt/tensuns,脚本运行完成后会有使用提示及自动生成登录密码。访问地址应该分别是ip:1026,ip:8500。

2.我的consul和tensuns是分开部署的,consul是直接部署,tensuns使用docker部署。

consul部署步骤可参考该文档:TenSunS/docs/Consul部署说明.md at main · starsliao/TenSunS · GitHub

ubuntu部署步骤:

2.1  下载安装包,依次执行下面三个命令:
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install consul

2.2 后面是配置,操作步骤和centos基本无区别
  • 执行以下命令获取UUID,填写到下面配置末尾部分,作为最高权限的token

uuidgen
  • 清空/etc/consul.d/consul.hcl,并使用以下完整配置内容,注意advertise_addr、initial_management 、agent需要修改
data_dir = "/opt/consul"
log_level = "error"

# 服务器有多个IP启动会报错请增加这行配置:填写服务器IP。
advertise_addr = "192.168.x.x"

client_addr = "0.0.0.0"
ui_config{
  enabled = true
}
ports = {
  grpc = -1
  https = -1
  dns = -1
  grpc_tls = -1
  serf_wan = -1
}
peering {
  enabled = false
}
connect {
  enabled = false
}
server = true
bootstrap_expect=1
acl = {
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true
  tokens {
    initial_management = "生成的UUID"
    agent = "生成的UUID,和上面保持一致"
  }
}

启动服务

mkdir /opt/consul
chown -R consul:consul /opt/consul
sed -i 's/Type=notify/Type=exec/g' /usr/lib/systemd/system/consul.service
systemctl daemon-reload
systemctl enable consul.service
systemctl restart consul.service

验证: 访问Consul自带WEB页面

  • 浏览器访问Consul的8500端口
  • 使用生成的UUID登录
2.3 部署tensuns

1.新建tensuns_install_only.sh脚本,内容如下:

#!/bin/bash
tsspath="/opt/tensuns"
mkdir -p $tsspath

cat <<EOF > $tsspath/docker-compose.yaml
version: '3.6'
services:
  flask-consul:
    image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/flask-consul:latest
    container_name: flask-consul
    hostname: flask-consul
    restart: always
    volumes:
      - /usr/share/zoneinfo/PRC:/etc/localtime
    environment:
      consul_token: xxxxx-xxxxx-xxxxx
      consul_url: http://x.x.x.x:8500/v1
      admin_passwd: xxxxxxxx
      log_level: INFO
    networks:
      - TenSunS

  nginx-consul:
    image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/nginx-consul:latest
    container_name: nginx-consul
    hostname: nginx-consul
    restart: always
    ports:
      - "1026:1026"
    volumes:
      - /usr/share/zoneinfo/PRC:/etc/localtime
    depends_on:
      - flask-consul
    networks:
      - TenSunS

networks:
  TenSunS:
    name: TenSunS
    driver: bridge
    ipam:
      driver: default
EOF


echo -e "\n编辑:$tsspath/docker-compose.yaml,修改3个环境变量:\n\033[31;1mconsul_token\033[0m:consul的登录token(安装consul时生成的UUID)\n\033[31;1mconsul_url\033[0m:consul的URL(http开头,/v1要保留)\n\033[31;1madmin_passwd\033[0m:登录后羿运维平台admin用户的密码\n"
echo "启动:cd $tsspath && docker-compose up -d"
echo -e "\n请使用浏览器访问 http://{你的IP}:1026 并登录使用\n"
echo -e "\033[31;1mhttp://`ip route get 1.2.3.4 | awk '{print $NF}'|head -1`:1026\033[0m\n"

2.使用bash命令执行该脚本 

bash ./tensuns_install_only.sh

3.进入/opt/tensuns目录,执行docker-compose.yml文件

cd /opt/tensuns
docker-compose up -d

4.docker ps查询是否启动成功,访问ip:1026即可

注意:可能存在无法访问的情况,防火墙开放8500/1026端口。

三、自建云主机,具体实现prometheus+consul+tensuns

1.新建自建云主机,端口号保持与监控目的端主机node_exporter一致即可

2.选择服务器和系统版本生成配置,追加到prometheus.yml文件中

3. 新建recording_rules.yml作为记录规则的配置文件。这个规则是用于处理模板中【最近7天P99资源使用率】图表无数据。内容如下:

groups:
- name: node_usage_record_rules  
  interval: 1m  
  rules:
  - record: cpu:usage:rate1m
    expr: (1 - avg(irate(node_cpu_seconds_total{mode="idle"}[3m])) by (instance,vendor,account,group,name)) * 100
  - record: mem:usage:rate1m
    expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100
~                                                                                                                                                                                                                                      
~                                                                                                                                                                                                                                      
~                                                                                              

4.修改prometheus.yml文件

因为我是容器部署,所以需要挂载到容器内部中,修改docker-compose.yml文件并重新加载,需要删除旧的prometheus容器,重新运行 docker compose up  -d

services:
    prometheus:
        image: prom/prometheus
        container_name: prometheus
        hostname: prometheus
        restart: always
        volumes:
            - ./prometheus.yml:/etc/prometheus/prometheus.yml
            - ./recording_rules.yml:/etc/prometheus/recording_rules.yml
#            - ./node_down.yml:/usr/local/etc/node_down.yml:rw
        ports:
            - "9090:9090"
        networks:
            - monitor

5.重启prometheus并查看target、rules是否生效,docker restart prometheus。

6.最后的仪表盘内容如下:

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值