监控方案(prometheus+grafana)一体式RPM包制
2024-03-26 本文已影响0人
伊来尔去
系统要求
centos
简要介绍大致需要做的工作:
- 安装制作rpm工具包(rpmdevtools)
- 从官网下载,并解压需要的监控程序(prmetheus,note_exporter,grafana)
- 编写服务脚本(start.sh, stop.sh,my-monitoring.service)
- 制作SPEC打包规范
- 生成RPM,测试
具体操作步骤如下:
- 安装制作rpm工具包(rpmdevtools)
yum instatll rpm-build rpmdevtools
- 下载监控方案相关服务包
创建my-monitoring项目目录
mk my-monitoring && cd my-monitoring
- 下载prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.50.1/prometheus-2.50.1.linux-amd64.tar.gz
tar -xzvf prometheus-2.50.1.linux-amd64.tar.gz
- 下载node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar -xzvf node_exporter-1.7.0.linux-amd64.tar.gz
- 下载grafana
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-10.3.3.linux-amd64.tar.gz
tar -zxvf grafana-enterprise-10.3.3.linux-amd64.tar.gz
- 配置服务
编辑 vim ~/my-monitring/prometheus-2.50.1.linux-amd64/prometheus.yml,追加内容:
- job_name: 'nodes'
static_configs:
- targets: ['localhost:9100']
- 编写服务脚本(start.sh, stop.sh,my-monitoring.service)
vim ~/my-monitring/start.sh
#!/bin/bash
nohup /opt/my-monitoring/node_exporter-1.7.0.linux-amd64/node_exporter > /opt/my-monitoring/logs/node_exporter.log 2>&1 &
nohup /opt/my-monitoring/prometheus-2.50.1.linux-amd64/prometheus --config.file=/opt/my-monitoring/prometheus-2.50.1.linux-amd64/prometheus.yml > /opt/my-monitoring/logs/prometheus.log 2>&1 &
cd /opt/my-monitoring/grafana-v10.3.3/bin
nohup ./grafana-server > /opt/my-monitoring/logs/grafana.log 2>&1 &
sleep 10
echo -n "node_exporter status:" && curl -s http://localhost:9100/metrics | head -n 1
echo -n "Prometheus status:" && curl -s http://localhost:9090/api/v1/status/config | awk -F'[{}]' '{print $2}' | sed 's/.*status":\s*"\([^"]*\).*/\1/'
echo -n "Grafana status:" && curl -s http://localhost:3000/api/health | awk -F'[,:]' '/"database":/ {print $2}' | tr -d '"'
vim ~/my-monitring/stop.sh
#!/bin/bash
pkill -f "grafana server"
pkill -f prometheus
pkill -f node_exporter
vim ~/my-monitring/my-monitoring.service
[Unit]
Description=my server Monitoring
Wants=network-online.target
After=network-online.target
[Service]
User=root
Type=simple
RemainAfterExit=yes
ExecStart=/opt/my-monitoring/start.sh
ExecStop=/opt/my-monitoring/stop.sh
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
- 生成rpmbuild打包目录
rpmdev-setpuptree
- 创建打包SPEC规范文件
vim ~/rpmbuild/SPECS/monitoring.spec
内容如下:
Summary: my server monitoring
Name: my-monitoring
Version: 1.0.0
Release: 1%{?dist}
License: GPLv3
Group: Applications/System
#BuildArch: noarch
%description
monitoring cpu, memory, network, JVM and so or.
%prep
echo "starting installation..."
%build
%install
mkdir -p %{buildroot}/opt/my-monitoring
cp -r ~/my-monitoring/node_exporter-1.7.0.linux-amd64 %{buildroot}/opt/my-monitoring/
cp -r ~/my-monitoring/prometheus-2.50.1.linux-amd64 %{buildroot}/opt/my-monitoring/
cp -r ~/my-monitoring/grafana-v10.3.3 %{buildroot}/opt/my-monitoring/
cp -r ~/my-monitoring/start_monitoring.sh %{buildroot}/opt/my-monitoring/
cp -r ~/my-monitoring/stop_monitoring.sh %{buildroot}/opt/my-monitoring/
cp -r ~/my-monitoring/my-monitoring.service %{buildroot}/opt/my-monitoring/
%files
%defattr(-,root,root,-)
/opt/my-monitoring/node_exporter-1.7.0.linux-amd64/*
/opt/my-monitoring/prometheus-2.50.1.linux-amd64/*
/opt/my-monitoring/grafana-v10.3.3/*
/opt/my-monitoring/start_monitoring.sh
/opt/my-monitoring/stop_monitoring.sh
/opt/my-monitoring/my-monitoring.service
%post
mkdir /opt/my-monitoring/logs
chmod -R 777 /opt/my-monitoring/grafana-v10.3.3
cp /opt/my-monitoring/my-monitoring.service /etc/systemd/system/my-monitoring.service
chmod 755 /etc/systemd/system/my-monitoring.service
systemctl enable my-monitoring.service
systemctl start my-monitoring.service
#systemctl daemon-reload
echo "installation completed. use the 'systemctl status my-monitoring' command to view the status of service"
%preun
systemctl stop my-monitoring.service
%postun
rm -f /etc/systemd/system/my-monitoring.service
systemctl daemon-reload
echo "uninstallation completed."
%changelog
- 生成RPM包
cd ~/rpmbuild/SPECS
rpmbuild -bb my-monitoring.spec
- 测试安装RPM
cd ~/rpmbuild/RPMS/x86_64
rpm -i my-monitoring-1.0.0-1.el7.x86_64.rpm
- 确认
在浏览器中输入http://localhost:3000(如果是虚拟机使用ip地址代替localhost)
- 卸载测试程序
rpm -e my-monitoring