学习Prometheus+Grafana,这一节我们首先在本地搭建一套测试环境
测试环境规划
我使用的是Mac,计划使用VMwareFusion创建3台Centos7的虚拟机组成集群,其中3台机器的规划如下
Hostname | Ip | 功能 |
---|---|---|
prometheus.test | 172.16.141.20/24 | Prometheus |
grafana.test | 172.16.141.21/24 | Grafana |
agent.test | 172.16.141.22/24 | 被监控机器 |
Prometheus机器监控目标机器,然后由Grafana来进行图像显示。
其中要注意的是IP的规划,我这边3台虚拟机通过NAT的方式访问公网,所以设置静态IP的时候,要注意虚拟机的IP设置为NAT的网段内,同时网关要设置为宿主机的NAT网关地址(注意:不是vmnet8的IP地址!!)。
具体的信息可以通过命令cat /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf
来查询,我这边得到的信息如下
# NAT gateway address
ip = 172.16.141.2
netmask = 255.255.255.0
再次提醒,宿主机的vmnet8用于宿主机和虚拟机的通信,并不提供网关功能,禁用掉vmnet8也不影响虚拟机上网,只是宿主机无法访问虚拟机了而已。参考这篇文章的讲解。
单台虚拟机初始化
下面首先安装单台虚拟机,成功以后再复制出另外两台即可。
我这边使用的是centos7的minimal镜像,安装的过程和《Macbook利用VMwareFusion安装Centos7》雷同,只不过这里在安装的时候不用管网络连接。
登录进去以后,编辑/etc/sysconfig/network-scripts/ifcfg-ens33
网卡配置文件,如下
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static # 静态地址
IPADDR=172.16.141.20 # IP地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=172.16.141.2 # NAT网关
DNS1=172.16.141.2 # NAT网关也做DNS服务器
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=e4553369-6742-4bef-8e1f-b35571620f64
DEVICE=ens33
ONBOOT=yes # 开机自启动
配置好以后systemctl restart network
重启网卡生效,如果能ping到外网说明配置有效。需要注意的是有可能一开始网卡并没有启动,也就是用ip addr
查询的时候并没有ip信息出来,导致ping不到外网,这种情况下用命令ifup ens33
启动网卡即可。
复制多台虚拟机
将第一台配置好的机器关机,注意虚拟机不关掉复制会因为硬盘内容没保存而导致新虚拟机启动时出错。
在虚拟机上右键「在Finder中显示」,然后复制该虚拟机的文件
重命名(这里只是对文件重命令,下面还要对虚拟机再次重命名)
然后在VMwareFusion中打开
因为是复制的,所以会弹出下面的报错,选择「已拷贝」即可
最后将虚拟机重命名即可。
下面的操作需要对3台机器同时操作,这里强烈推荐Mac下的多屏操作终端工具iterm2,可以参考《Mac上利用iterm2多屏同时操作多个ssh终端》来进行操作。
首先对另外两台机器分别修改网卡配置,需要改的就只有IP地址和硬件标识UUID,这里将UUID的后3位进行了随机修改,如下
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=172.16.141.21 # IP地址
NETMASK=255.255.255.0
GATEWAY=172.16.141.2
DNS1=172.16.141.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=e4553369-6742-4bef-8e1f-b35571620f32 # 硬件标识
DEVICE=ens33
ONBOOT=yes
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=172.16.141.22 # IP地址
NETMASK=255.255.255.0
GATEWAY=172.16.141.2
DNS1=172.16.141.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=e4553369-6742-4bef-8e1f-b35571620f88 # 硬件标识
DEVICE=ens33
ONBOOT=yes
确保3台机器都可以互相ping到,也能够ping到外网即可。
hostname和hosts
然后利用下面的命令对3台机器设置hostname
hostnamectl set-hostname xxx
并且统一修改/etc/hosts
文件如下
172.16.141.20 prometheus.test
172.16.141.21 grafana.test
172.16.141.22 agent.test
之后3台机器就可以通过hostname互相能ping到了。
时间同步
Prometheus就是通过时间序列来收集log并展示图表的,所以时间同步就显得非常重要。
首先安装ntpdate工具
yum -y install ntpdate
然后是针对中国的节点进行同步
ntpdate cn.ntp.org.cn
至此,3台虚拟机的环境算是搭建完成,建议在这个地方对机器都进行快照保存一下进度,免得后面将系统玩坏了不好回档。下一节我们就来正式安装Prometheus服务了。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。