前言
这两天面试被问到promethues,发现我之前一直忽略了promethues,只有一点仅存的记忆,现在来实现promethues服务
promethues下载官网-linux
| IP | ROLE |
|---|---|
| 192,168.179.140 | SERVER,EXPOTER,Grafana |
| 192.168.179.191 | EXPOTER |
实践
服务端部署
下载安装promethuescd /app/tools wget https://github.com/prometheus/prometheus/releases/download/v3.2.1/prometheus-3.2.1.linux-amd64.tar.gz tar xf prometheus-3.2.1.linux-amd64.tar.gz mv prometheus-3.2.1.linux-amd64 prometheus运行promethues
ln -s /app/prometheus/prometheus /usr/bin/ nohup /app/prometheus/prometheus -- config.file="/app/prometheus/prometheus.yml" -- web.listen-address="0.0.0.0:9090" --web.max-connections=512 &>/var/log/prometheus.log &测试promethues
ss -lntup |grep prometheus #查看端口9090 ./prometheus --versionsystemctl配置promethues(推荐)
vim /usr/lib/systemd/system/prometheus.service [Unit] Description=prometheus server After=network.target [Service] Type=simple ExecStart=/app/prometheus/prometheus --config.file=/app/prometheus/prometheus.yml --web.listen-address=0.0.0.0:9090 --web.max-connections=512 KillMode=process [Install] WantedBy=multi-user.targetprometheus命令参数 内容 --config.file="prometheus.yml" 指定配置文件,默认是当前目录下在的prometheus.yml --web.listen-address="0.0.0.0:9090" 前端web页面,端口和监听的地址。 --web.max-connections=512 并发连接数. --storage.tsdb.path="data/" 指定tsdb数据存放目录. --log.level=info 日志级别.prometheus日志默认输出到屏幕(标准输出) --log.format=logfmt 日志格式,默认格式为logfmt,其他可选值有json格式(日志收集格式) 客户端部署(两个节点都要部署)
prometheus有众多的exporters.基本通过命令或docker运行,例如MYSQL expoter,redis expoter,Elasticsearch exporter等等,这里选择部署node_expoter监控节点数据
下载安装node_expotercd /app wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz tar -xf node_exporter-1.9.1.linux-amd64.tar.gz mv node_exporter-1.9.1.linux-amd64 node_exporter运行node_expoter
ln -s /app/node_exporter/node_exporter /usr/bin/ node_exporter检测
node_exporter --versionsystemctl配置node_expoter(推荐)
vim /usr/lib/systemd/system/node_expoter.service [Unit] Description=node_expoter by prometheus After=network.target [Service] Type=simple ExecStart=/usr/bin/node_exporter KillMode=process [Install] WantedBy=multi-user.target systemctl daemon-reload systemctl enable --now node_expoter.service服务端配置
因为expoter的数据需要服务端去主动获取,因此不需要配置客户端,需要在服务端配置文件配置客户端地址vim /app/prometheus/prometheus.yml #这里只需要修改scrape_configs - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] - job_name: "prometheus-1" static_configs: - targets: ["localhost:9100"] - job_name: "prometheus-2" static_configs: - targets: ["192.168.179.191:9100"]
promethues有自己的PromQL查询数据,后面再详细介绍
部署grafana
下载启动wget https://dl.grafana.com/enterprise/release/grafana-enterprise-11.6.0-1.x86_64.rpm yum localinstall -y grafana-enterprise-11.6.0-1.x86_64.rpm systemctl enable --now grafana-server.service
用户:admin 密码:admin
安装promethues(位于plugin,找不到参考之前的zabbix安装)
安装完后就可以将promethues作为数据源
创建promethues数据源
创建仪表盘,key就是之前查询promethues的搜索语句
可以发现,这里的数据已经获取到了
至此,完成promethues+grafana的搭建
错误
从表面上看起来与正确的一模一样,但是其中空格的编码是错误的,我重新手动输入了一遍就对了
后谈
不得不说,grafana对promethues的支持度远高于zabbix,zabbix插件还要手动安装,甚至配置监控项还要考虑主机,用户,标签,当然,这也是因为zabbix本身的功能比promethues更多






