组件介绍
-
prometheus
Prometheus是一个开源监控解决方案,用于收集和聚合指标作为时间序列数据。Prometheus 通过使用基于拉取的数据获取机制来确定指标的当前值。它会定期轮询支持每个指标的数据源,然后将结果作为新事件存储在时间序列数据库中。
prometheus架构和生态系统组件如下图所示:
prometheus直接或通过中间推送网关从仪表作业中抓取指标,用于短期作业。它将所有抓取的样本存储在本地,并在这些数据上运行规则,从现有数据中聚合和记录新的时间序列,或者生成警报。
grafana或其他API消费者可以用来可视化收集的数据。
-
node_exporter
node-exporter用于采集主机的运行指标,包括主机的cpu、load、filesystem、meminfo、network等基础监控指标,类似于zabbix监控系统的的zabbix-agent。
在prometheus的架构设计中,prometheus并不直接监控特定的目标,其主要任务负责数据的收集、存储并且对外提供数据查询支持。因此为了能够监控到某些指标,如主机的CPU使用率、内存、磁盘,我们需要使用到exporter,prometheus周期性的从exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。
-
grafana
grafana 是一个开源的监控数据分析和可视化套件。最常用于对基础设施和应用数据分析的时间序列数据进行可视化分析,也可以用于其他需要数据可视化分析的领域。
grafana 可以帮助你查询、可视化、告警、分析你所在意的指标和数据。可以与整个团队共享,有助于培养团队的数据驱动文化。
-
alertmanager
alertmanager是一个独立的告警模块,接收prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器。告警方式可以按照不同的规则发送给不同的模块负责人,alertmanager支持email, slack,等告警方式, 也可以通过webhook接入钉钉等工具。
安装prometheus
-
添加prometheus用户
useradd prometheus chage -M 99999 prometheus passwd prometheus
如果是生产环境,必须设置强密码!!!
-
进入存放压缩包目录
cd /usr/local/app_install # 上传文件压缩包 # 下载链接:https://prometheus.io/download
-
解压缩
tar -zxvf prometheus-2.29.1.linux-amd64.tar.gz -C /usr/local/ mv /usr/local/prometheus-2.29.1.linux-amd64 /usr/local/prometheus chown -R prometheus:prometheus /usr/local/prometheus
-
创建prometheus数据存放目录
mkdir -p /data/prometheus chown -R prometheus:prometheus /data
-
创建配置文件
vim /usr/lib/systemd/system/prometheus.service
[Unit] Description=Prometheus After=network.target [Service] Type=simple User=prometheus Group=prometheus ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/local/prometheus/prometheus \ --config.file=/usr/local/prometheus/prometheus.yml \ --storage.tsdb.path=/data/prometheus \ --storage.tsdb.retention.time=365d \ --web.listen-address=0.0.0.0:9090 \ --web.enable-admin-api \ --web.enable-lifecycle Restart=always [Install] WantedBy=multi-user.target
-
操作命令
#开机自启 systemctl enable prometheus #查看状态 systemctl status prometheus #启动 systemctl start prometheus #停止 systemctl stop prometheus #重启 systemctl restart prometheus
-
访问prometheus web ui页面
prometheus url:主机IP:9090
-
Alerts:查看prometheus中已配置的告警指标。
-
Graph:通过prometheus语法查看相应监控指标状态。
-
Status:查看prometheus配置参数、实例状态、告警规则等信息。
-
Help:帮助手册。
-
Classic UI:返回经典web ui页面。
安装node_exporter
-
进入存放压缩包目录
cd /usr/local/app_install #上传文件压缩包 # 下载链接:https://github.com/prometheus/node_exporter
-
解压缩
tar -zxvf node_exporter-1.2.2.linux-amd64.tar.gz -C /home/prometheus chown -R prometheus:prometheus /home/prometheus/node_exporter-1.2.2.linux-amd64/node_exporter
-
创建node_exporter_script目录(存放自定义脚本)
mkdir -p /home/prometheus/node_exporter_script chown -R prometheus:prometheus /home/prometheus/node_exporter_script
-
创建node_exporter_textfile目录(存放自定义脚本输出结果)
mkdir -p /home/prometheus/node_exporter_textfile chown -R prometheus:prometheus /home/prometheus/node_exporter_textfile
-
创建配置文件
vim /usr/lib/systemd/system/prometheus_node_exporter.service
[Unit] Description=Prometheus node_exporter Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple User=prometheus Group=prometheus ExecStart=/home/prometheus/node_exporter-1.2.2.linux-amd64/node_exporter --collector.textfile.directory=/home/prometheus/node_exporter_textfile ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target
- 操作命令
#开机自启 systemctl enable prometheus_node_exporter #查看状态 systemctl status prometheus_node_exporter #启动 systemctl start prometheus_node_exporter #停止 systemctl stop prometheus_node_exporter #重启 systemctl restart prometheus_node_exporter
-
访问node_exporter web ui页面
node_exporter url:主机IP:9100
配置主机IaaS监控
-
编辑prometheus配置文件
vim /usr/local/prometheus/prometheus.yml
# 静态配置(选择其一即可) - job_name: "node_iaas" static_configs: # node_exporter所在的主机ip:端口 - targets: ["主机IP:9090","主机IP:9090"] # 基于文件发现(选择其一即可) - job_name: "host_iaas" file_sd_configs:: # node_iaas.yml文件中存有node_exporter所在的主机ip:端口信息 - files: ['/usr/local/prometheus/monitorInfo/node_iaas.yml'] refresh_interval: 10s #node_iaas.yml文件内容: - targets: ["主机IP:9090","主机IP:9090"]
-
创建node_iaas.yml文件
vim /usr/local/prometheus/monitorInfo/node_iaas.yml
- targets: ["主机IP:9090","主机IP:9090"]
-
修改node_iaas.yml权限
chown prometheus:prometheus /usr/local/prometheus/monitorInfo/node_iaas.yml
-
重启prometheus
systemctl restart prometheus
安装grafana
-
进入存放压缩包目录
cd /usr/local/app_install # 上传文件压缩包 # 下载链接:https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1
-
rpm安装
yum -y install urw-fonts rpm -ivh grafana-enterprise-8.1.8-1.x86_64.rpm
-
操作命令
#开机自启 systemctl enable grafana-server #查看状态 systemctl status grafana-server #启动 systemctl start grafana-server #停止 systemctl stop grafana-server #重启 systemctl restart grafana-server
-
访问grafana web ui页面
grafana url:主机IP:3000
安装alertmanager
-
进入存放压缩包目录
cd /usr/local/app_install # 上传文件压缩包 # 下载链接:https://prometheus.io/download
-
解压缩
mkdir -p /data/app tar -zxvf alertmanager-0.22.2.linux-amd64.tar.gz -C /data/app mv /data/app/alertmanager-0.22.2.linux-amd64 /data/app/alertmanager chown -R prometheus:prometheus /data/app/alertmanager
-
创建alertmanager数据存放目录
mkdir -p /data/alertmanagerdata chown -R prometheus:prometheus /data/alertmanagerdata
-
创建配置文件
vim /usr/lib/systemd/system/alertmanager.service
[Unit] Description=prometheus_alertmanager_service After=network.target [Service] Type=simple User=prometheus Group=prometheus ExecStart=/data/app/alertmanager/alertmanager \ --storage.path=/data/alertmanagerdata \ --config.file=/data/app/alertmanager/alertmanager.yml ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target
-
操作命令
#开机自启 systemctl enable alertmanager #查看状态 systemctl status alertmanager #启动 systemctl start alertmanager #停止 systemctl stop alertmanager #重启 systemctl restart alertmanager
-
访问alertmanager web ui页面
alertmanager url:主机IP:9093
-
Alerts:查看达到告警阈值的告警项。
-
Silences:配置告警抑制。
-
Status:查看alertmanager状态。
-
Help:帮助手册。