监控软件 Prometheus
官网:https://prometheus.io/
监控:monitor 监视我们的服务器或者服务,一旦出现问题,要告诉我们(告警),运维人员及时去处理,将公司的损失减少到最小
监控软件:
1.cacti 仙人掌: 出图比较好
2.nagios 监控脚本特别多
3.zabbix 集合cacti+nagios的优点: –》企业里使用非常多
4.openfalcon 小米公司开源的监控软件: 京东,滴滴,小米,字节等
5.prometheus :开源的监控软件
普罗米修斯的主要特点是:
- 具有由指标名称和键/值对标识的时间序列数据的多维数据模型
- PromQL,一种灵活的查询语言 来利用这个维度
- 不依赖分布式存储;单个服务器节点是自治的
- 时间序列收集通过 HTTP 上的拉模型进行
- 通过中间网关支持推送时间序列
- 通过服务发现或静态配置发现目标
- 多种图形和仪表板支持模式
Prometheus的架构及组件
组件:
1.tsdb time series database 时序数据库 –》hdd/ssd hdd机械磁盘 hard disk drive ssd固态磁盘 –>solid state drive
promQL : select ,insert等
2.http server web服务
3.pushgateway 中间件(代理)
4.alertmanager 告警的软件
5.exporter 收集数据,采集数据 木马程序 : 安装到被监控的机器上
采集数据:exporter pushgateway 中间件(代理)
存储数据:tsdb
提供数据:http server
显示数据: grafana
告警、报警:alertmanager
Prometheus搭建
第1步:安装prometheus server
源码安装
1.上传下载的源码包到linux服务器
[root@sc-prom ~]# mkdir /prom[root@sc-prom ~]# cd /prom[root@sc-prom prom]# lsprometheus-2.34.0.linux-amd64.tar.gz[root@sc-prom prom]#
2.解压源码包
[root@sc-prom prom]# tar xf prometheus-2.34.0.linux-amd64.tar.gz[root@sc-prom prom]# lsprometheus-2.34.0.linux-amd64prometheus-2.34.0.linux-amd64.tar.gz[root@sc-prom prom]#
3.修改解压后的压缩包名字
[root@sc-prom prom]# mv prometheus-2.34.0.linux-amd64 prometheus[root@sc-prom prom]# lsprometheusprometheus-2.34.0.linux-amd64.tar.gz[root@sc-prom prom]#
4.临时和永久修改PATH变量,添加prometheus的路径
[root@sc-prom prometheus]# PATH=/prom/prometheus:$PATH[root@sc-prom prometheus]# cat /root/.bashrc.bashrcUser specific aliases and functionsalias rm='rm -i'alias cp='cp -i'alias mv='mv -i'Source global definitionsif [ -f /etc/bashrc ]; then. /etc/bashrcfiPATH=/prom/prometheus:$PATH #添加
5.执行prometheus程序
[root@prometheus prometheus]# nohup prometheus--config.file=/prom/prometheus/prometheus.yml &[1] 8431[root@prometheus prometheus]# nohup: 忽略输入并把输出追加到"nohup.out"[root@prometheus prometheus]#
6.查看prometheus的进程
[root@prometheus prometheus]# ps aux|grep promeroot 84314.52.4 782084 46204 pts/0Sl 11:21 0:00 prometheus --config.file=/prom/prometheus/prometheus.ymlroot 84390.00.0 112824 980 pts/0S+ 11:21 0:00 grep --color=auto prome[root@prometheus prometheus]#
7.查看prometheus监听的端口号
[root@prometheus prometheus]# netstat -anplut|grep prometcp6 00 :::9090 :::*LISTEN8431/prometheus tcp6 00 ::1:9090::1:51738 ESTABLISHED 8431/prometheus tcp6 00 ::1:51738 ::1:9090ESTABLISHED 8431/prometheus [root@prometheus prometheus]#
8.关闭服务器上的firewalld服务
[root@prometheus prometheus]# service firewalld stopRedirecting to /bin/systemctl stop firewalld.service[root@prometheus prometheus]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.[root@prometheus prometheus]#
9.把prometheus做成一个服务来进行管理,非常方便
[root@prometheus prometheus]# vim /usr/lib/systemd/system/prometheus.service [Unit]Description=prometheus[Service]ExecStart=/prom/prometheus/prometheus --config.file=/prom/prometheus/prometheus.ymlExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install]WantedBy=multi-user.target[root@prometheus prometheus]# systemctl daemon-reload 重新加载systemd相关的服务[root@prometheus prometheus]#
第一次因为是使用nohup 方式启动的prometheus,还是需要使用后kill 的方式杀死第一次启动的进程
后面可以使用service方式管理prometheus了
[root@prometheus prometheus]#service prometheus stopRedirecting to /bin/systemctl stop prometheus.service[root@prometheus prometheus]# ps aux|grep promeroot 84310.23.2 782340 61472 pts/0Sl 11:21 0:01 prometheus --config.file=/prom/prometheus/prometheus.ymlroot 86500.00.0 112824 980 pts/0S+ 11:35 0:00 grep --color=auto prome[root@prometheus prometheus]# kill -9 8431[root@prometheus prometheus]# ps aux|grep promeroot 86520.00.0 112824 976 pts/0R+ 11:35 0:00 grep --color=auto prome[1]+已杀死 nohup prometheus --config.file=/prom/prometheus/prometheus.yml[root@prometheus prometheus]# [root@prometheus prometheus]#service prometheus startRedirecting to /bin/systemctl start prometheus.service[root@prometheus prometheus]# ps aux|grep promeroot 8671 14.02.4 782084 45764 " />第2步:在node节点服务器上安装exporter程序 1.下载node_exporter-1.4.0-rc.0.linux-amd64.tar.gz源码,上传到节点服务器上
2.解压
[root@node-liangrui ~]# lsanaconda-ks.cfgname_ip.txtsanchuang1290feng.txt node_exporter-1.4.0-rc.0.linux-amd64.tar.gzsanchuang1965input.sh onekey_install_changjinghu.shsanchuang{random.randint(1,10000)}liangsanchuang[root@node-liangrui ~]# tar xf node_exporter-1.4.0-rc.0.linux-amd64.tar.gz[root@node-liangrui ~]# lsanaconda-ks.cfgname_ip.txtsanchuangfeng.txt node_exporter-1.4.0-rc.0.linux-amd64 sanchuang1290input.sh node_exporter-1.4.0-rc.0.linux-amd64.tar.gzsanchuang1965liangonekey_install_changjinghu.shsanchuang{random.randint(1,10000)}
3.单独存放到/node_exporter文件夹
[root@node-liangrui ~]# mv node_exporter-1.4.0-rc.0.linux-amd64 /node_exporter[root@node-liangrui ~]#[root@node-liangrui ~]# cd /node_exporter/[root@node-liangrui node_exporter]# lsLICENSEnode_exporterNOTICE[root@node-liangrui node_exporter]#
4.修改PATH变量
[root@node-liangrui node_exporter]# PATH=/node_exporter/:$PATH[root@node-liangrui node_exporter]# vim /root/.bashrcPATH=/node_exporter/:$PATH #添加
5.执行node exporter 代理程序agent
[root@node-liangrui node_exporter]#nohup node_exporter --web.listen-address 0.0.0.0:8090&
6.具体的端口号,可以自己定义,只要不和其他的服务冲突就可以
[root@node-liangrui node_exporter]# ps aux|grep noderoot249580.60.6 7162886476 pts/0Sl+11:45 0:00 node_exporter --web.listen-address 0.0.0.0:8090root249810.00.0 112824 988 pts/1R+ 11:46 0:00 grep --color=auto node[root@node-liangrui node_exporter]# netstat -anplult|grep 8090tcp6 00 :::8090 :::*LISTEN24958/node_exporter[root@node-liangrui node_exporter]#
7.访问node节点上的metrics
http://192.168.1.194:8090/metrics
第3步: 在prometheus server里添加我们在哪些机器里安装了exporter程序,这样就可以知道去哪里pull数据
1.在prometheus服务器上添加抓取数据的配置,添加node节点服务器,将抓取的数据存储到时序数据库里
[root@sc-prom prometheus]# vim prometheus.ymlscrape_configs:The job name is added as a label `job=` to any timeseries scraped from this config.- job_name: "prometheus"static_configs:- targets: ["localhost:9090"]添加下面的配置采集node-liangrui服务器的metrics- job_name: "node-liangrui"static_configs:- targets: ["192.168.1.194:8090"]- job_name: "LB1"static_configs:- targets: ["192.168.227.144:8090"]- job_name: "LB2"static_configs:- targets: ["192.168.227.148:8090"]
2.重启prometheus服务
[root@prometheus prometheus]# serviceprometheus restartRedirecting to /bin/systemctl restart prometheus.service[root@prometheus prometheus]#
3.登录prometheus查看是否添加targets成功
http://192.168.1.137:9090/targets
Grafana:
1.概述–美观、强大的可视化监控指标展示工具
Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。最好的参考资料就是官网(http://docs.grafana.org/)
Grafana 和Prometheus server安装在一台服务器上
安装部署
1.先去官方网站下载
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.5-1.x86_64.rpm
2.安装
[root@sc-prom grafana]# lsgrafana-enterprise-8.4.5-1.x86_64.rpm[root@sc-prom grafana]# yum install grafana-enterprise-8.4.5-1.x86_64.rpm -y
3.启动grafana
[root@sc-prom grafana]# service grafana-server startStarting grafana-server (via systemctl): [确定][root@sc-prom grafana]#
4.设置grafana开机启动
[root@prometheus grafana]# systemctl enable grafana-serverCreated symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.[root@prometheus grafana]#
5.监听的端口号是3000
[root@sc-prom grafana]# netstat -anplut|grep grafanatcp00 192.168.1.137:52062 34.120.177.193:443ESTABLISHED 5413/grafana-servertcp6 00 :::3000 :::*LISTEN5413/grafana-server[root@sc-prom grafana]#
6.登录,在浏览器里登录
http://192.168.1.137:3000/
默认的用户名和密码是
用户名admin
密码admin
1.先配置prometheus的数据源
2.导入grafana的模板
https://grafana.com/grafana/dashboards
步骤:
1.需要知道哪些模板可以使用,可以去官方找,也可以百度
1-node-exporter-for-prometheus-dashboard-cn-v20200628_rev1.json
2.导入模板
创建文件夹,存放模板 sanchuang
这2个模板非常好用,推荐使用
1860
8919