此次部署用到两台机器,都采用新版本进行部署
monitor
node-91.2
prometheus部署
1、直接去官方下载页面复制下载链接
https://prometheus.io/download/
cd /data
wget https://github.com/prometheus/prometheus/releases/download/v2.33.1/prometheus-2.33.1.linux-amd64.tar.gz
解压后配置软连接
ln -s prometheus-2.33.1.linux-amd64 prometheus
2、查看prometheus帮助
[root@monitor /data/prometheus]# ./prometheus --help
列出一些常用的配置参数
--config.file="prometheus.yml" 默认prometheus的配置文件
--web.listen-address="0.0.0.0:9090" 默认监听9090端口
--web.enable-lifecycle 开启热重启,可以reload prometheus
--web.enable-admin-api 打开以后可以打快照、删除数据
--storage.tsdb.retention.time 默认tsdb数据存放15天,我将配置为30天
3、配置systemd启动脚本
Restart=always或者on-failure
这里引出一些细节,always表示服务只要是关闭状态的,systemd就会将它启动,on-failure是服务异常退出后systed才会将它启动,kill、kill-9 stop服务这些操作服务exit都是0状态码,不会被视为异常退出
cat /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
After=network.target
[Service]
ExecStart=/data/prometheus/prometheus --storage.tsdb.retention=30d --web.enable-lifecycle --web.enable-admin-api --config.file=/data/prometheus/prometheus.yml
User=root
Restart=always
RestartSec=20s
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable prometheus
systemctl start prometheus
当修改了prometheus.yml需要让其生效时,直接reload热重启
curl -XPOST http://127.0.0.1:9090/-/reload
prometheus服务启动后可以访问web界面
node_exporter 部署
1、download包
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
2、node_exporter有用的只有程序包,移动到/data/目录
mv node_exporter-1.3.1.linux-amd64/node_exporter /data
chmod +x node_exporter
3、配置软连接
ln -s /data/node_exporter /usr/local/bin/
4、创建node_exporter启动参数存放路径
mkdir -p /opt/ops/node/
5、配置启动脚本(ubuntu启动脚本可以使用相同的路径)
cat >>/lib/systemd/system/node_exporter.service<<EOF
[Unit]
# wallet
Description=Node Exporter Mtrices
[Service]
LimitNOFILE=65535
LimitNPROC=65535
LimitCORE=infinity
LimitMEMLOCK=infinity
EnvironmentFile=/opt/ops/node/node_start_args
ExecStart=/usr/local/bin/node_exporter \$NODE_OPTS
Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
6、配置node_exporter启动命令
cat >>/opt/ops/node/node_start_args <<EOF
NODE_OPTS="--collector.textfile.directory /var/lib/node_exporter/textfile_collector \
--collector.tcpstat \
--collector.processes \
--collector.netclass.ignored-devices="^(cali.*|veth.*|cni.*|docker.*|flannel.*)$" \
--collector.netdev.ignored-devices="^(cali.*|veth.*|cni.*|docker.*|flannel.*)$" \
--collector.filesystem.ignored-fs-types="^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs|tmpfs)$" \
--collector.vmstat.fields="^(oom_kill|pgpg|pswp|pg.*fault).*" \
--web.disable-exporter-metrics"
EOF
7、启动node_exporter
systemctl daemon-reload
systemctl enable node_exporter.service
systemctl restart node_exporter
systemctl status node_exporter
prometheus监控主机
1、scrape_configs下添加job,确保可以和被监控主机9100端口通信
- job_name: "api-server-exporter"
static_configs:
- targets: ["192.168.91.2:9100"]
2、curl -XPOST http://127.0.0.1:9090/-/reload
热重启让配置生效
可以看到prometheus已经抓取到了监控信息