概述
摘要:本文主要是基于空管莱斯雷达设备的环境,结合容器和Prometheus等监控技术开展的一个实验部署,主要应用于机房的运维工作,对信息化设备进行监控。主要监控机器的物理参数、系统状态、网络状态、数据库等信息。未来会将监控范围会持续扩大,并加入告警及自动化的功能,本文只限于监控的部署。
目录
一、机房情况及部署技术选型
二、离线部署docker服务
三、运行封装好的docker镜像---Prometheus&&Grafana
四、部署Node_exporter服务
五、离线部署Chrome应用
一、机房情况及部署技术选型
机房情况说明,本次部署的机房为莱斯雷达机房,莱斯雷达机房主要运行了莱斯公司编写的空中交通管制系统,模拟机智能评估系统,语音识别和通信系统等,其中主要的空中交通管制系统里面又包含了很多的子系统,像自动化系统,自动观测系统,航班信息系统等。机房的系统全部是基于红帽Linux,数据库使用的是Oracle。本次监控系统主要是对Linux系统的监控和数据库的监控。首先,事先搞清楚机房是否存在部署的空间,是否可以使用监控技术进行监控,在向领导提交了技术方案和得到首肯后开始编写部署方案。
关于本次监控系统的技术选型问题。本次监控系统选用Prometheus作为监控的核心,Grafana作为监控的展示,两者封装在docker镜像里面。通过容器技术可以一定程度的减少对物理环境的影响,尽量不要对现有系统产生不必要的波动,维持环境的稳定运行。
二、离线部署docker服务
首先我们在有外网环境的服务器上下载docker的离线安装包,选择好docker的版本后下载下来。这是docker的下载链接,下载完成后在linux上事先编写好安装和卸载的shell脚本和服务脚本。
以下是安装脚本和卸载脚本,仅供参考:
#安装脚本install.sh
#!/bin/sh
echo '解压tar包...'
tar -xvf $1
echo '将docker目录移到/usr/bin目录下...'
cp docker/* /usr/bin/
echo '将docker.service 移到/etc/systemd/system/ 目录...'
cp docker.service /etc/systemd/system/
echo '添加文件权限...'
chmod +x /etc/systemd/system/docker.service
echo '重新加载配置文件...'
systemctl daemon-reload
echo '启动docker...'
systemctl start docker
echo '设置开机自启...'
systemctl enable docker.service
echo 'docker安装成功...'
docker -v
#卸载脚本uninstall.sh
#!/bin/sh
echo '删除docker.service...'
rm -f /etc/systemd/system/docker.service
echo '删除docker文件...'
rm -rf /usr/bin/docker*
echo '重新加载配置文件'
systemctl daemon-reload
echo '卸载成功...'
编写服务脚本让docker每次开机能够自启动,脚本docker.sevice如下:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
因为本次环境的网络出于安全考虑是完全独立的,做到了物理隔离,所以没有写daemon.json的需求,如果在有网络的环境可以更改daemon.json的脚本,把docker的镜像库变成国内的会快很多。
{
"registry-mirrors" : [
"https://mirror.ccs.tencentyun.com",
"http://registry.docker-cn.com",
"http://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug" : true,
"experimental" : true
}
执行完以上操作后,我们把以上的文件,包括docker的安装包、install.sh、uninstall.sh、docker.service、daemon.json放在同一个目录下拷贝进U盘中。到机房找到一个空置的Linux服务器终端,在上面完成部署。
#进root挂载U盘
fdisk -l
mount /dev/sdb1 /mnt
#拷贝部署文件
cp -r /mnt/docker/* /opt/monitor/docker/
#执行部署脚本
cd /opt/monitor/docker/
sh install.sh
三、运行封装好的docker镜像---Prometheus&&Grafana
在办公外网上事先部署好docker环境的机器中,先把prometheus和grafana的镜像拉取下来,然后启动容器,开始配置prometheus的配置文件。
外网环境操作如下:
#拉取镜像文件
docker pull prometheus
docker pull grafana
#生成容器
docker run --name prometheus -p 9090:9090 -d image/prometheus:laster
//此处镜像名称可能不一样
docker run --name grafana -p 3000:3000 -d image/grafana:laster
#查看容器运行是否正常
docker ps -a
//查看容器状态为up时正常
操作完成后,我们可以打开浏览器输入http://本机IP:9090和http://本机IP:3000验证prometheus和grafana启动是否正常。注意,运行环境下我们要放开防火墙对这两个端口的访问限制。
接下来我们要配置prometheus容器的配置文件,配置为文件服务发现的形式,把机房各个固定的服务器IP地址录入配置中。
#进入prometheus容器
docker exec -it --user=root prometheus /bin/sh
#去编辑prometheus的配置文件
cd /etc/prometheus/
mkdir target
cd target
touch nodes-linux.yaml prometheus-server.yaml
以下分别是prometheus.yml、nodes-linux.yaml、prometheus-server.yaml的配置文件需要更改的地方。
#vi nodes-linux.yaml进入配置文件
- targets:
- IP1:9100
- IP2:9100
...
- IPn:9100
labels:
app: node_exporter
#vi prometheus-server.yaml进入配置文件
- targets:
- prometheusIP:9090
labels:
app: prometheus
#vi ../prometheus.yml进入普罗米修斯的主配置文件
#在scrape_configs:栏目下加两个job
- job_name: "prometheus"
file_sd_configs:
- files:
- target/prometheus-*.yaml
refresh_interval: 1m
- job_name: "node"
file_sd_configs:
- files:
- target/nodes-*.yaml
refresh_interval: 1m
配置完成后我们对prometheus和grafana的容器进行打包,变成镜像文件。
#将docker容器打包为镜像
docker commit grafana grafana:v1
docker commit prometheus prometheus:v1
#导出镜像文件
docker save 镜像ID > grafanaV1.tar
docker save 镜像ID > prometheusV1.tar
把镜像文件导出存放到U盘中,到机房环境进行部署。
#导入镜像文件
docker load < prometheusV1.tar
docker load < grafanaV1.tar
#生成容器
docker run --name prometheus_rad -p 9090 -d image/prometheus:v1
docker run --name grafana_rad -p 3000 -d image/grafana:v1
#验证容器并使容器开机自启动
docker ps -a
docker update --restart=always grafana_rad prometheus_rad
到这里基本已经部署完成了。还需要部署的是收集监控信息的客户端,因为是侵入式安装所以在生产环境请注意判断是否可行。 最后要验证是否可以使用,因为浏览器版本不够,需要部署新版本的浏览器,后面在进行展示。
四、部署Node_exporter服务
Node_exporter服务是一个对linux系统进行监控信息收集的客户端,一般安装在linux服务器上为我们收集数据,然后prometheus server在通过定时pull的形式得到监控数据。这里部署分为两种,一种是单机进行部署,另一种是固定IP分发部署。在部署前,我们需要到prometheus的官网上下载node_exporter这个包,然后和脚本,启动服务脚本放在同一个目录下。
node_exporter.service的脚本和安装脚本如下:
#node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
#install.sh
#!/bin/bash
tar -xvf node_exporter.tar.gz
mv node_exporter-1.5.0.linux-amd64 node_exporter
sudo cp -r node_exporter /usr/local/
cp node_exporter.service /etc/systemd/system/
systemctl daemon-reload
systemctl start node_exporter.service
systemctl enable node_exporter.service
五、离线部署Chrome应用
因为机房的服务器和外网隔绝,所以火狐浏览器的部分图表样式展示不出来,所以更新以下浏览器。在chrome for linux的官网下载安装包和依赖包,编写安装脚本后直接安装即可。
这是安装chrome官网
这是下载依赖包网站
脚本如下:
#!/bin/bash
rpm -ivh
google-chrome-stable_current_x86_64.rpm liberation-fonts-1.07.2-16.el7.noarch.rpm liberation-narrow-fonts-1.07.2-16.el7.noarch.rpm vulkan-1.1.97.0-1.el7.x86_64.rpm vulkan-filesystem-1.1.97.0-1.el7.noarch.rpm
安装完成后,因为莱斯的启动界面系统经过编辑,所以我想让浏览器界面每次自动启动,可以在启动的用户家目录下编辑.bashrc文件,在末尾加上一条指令,
/usr/bin/google-chrome http://localhost:3000 &
即可自启动。
到这里整个部署流程就完成了,可以打开grafana的网页选择模板进行监控展示。如果有错误可以自行查各自的日志解决。
最后
以上就是安静煎蛋为你收集整理的基于Prometheus的机房监控系统的全部内容,希望文章能够帮你解决基于Prometheus的机房监控系统所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复