监控软件 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