当前位置:   article > 正文

prometheus

prometheus

 一、认识普罗米修斯

prometheus 介绍
Prometheus( 普罗米修斯 ) 是一套 开源的监控 & 报警 & 时间序列数据库 的组合 , go 语言开发。
适合监控容器平台 , 因为 kubernetes( 俗称 k8s) 的流行带动了 prometheus 的发展。
PS 由于目前还未学习容器,所以在今天的课程里使用 prometheus 监控仍然监控物理服务器。
官方网站 : https://prometheus.io/
时序数据库介绍
数据库分类 :
关系型 mysql,oracle,sql server,sybase,db2,access
非关系型 (nosql)
key-value memcache redis etcd 文档型 mongodb elasticsearch
列式 hbase
时序 prometheus
图形数据库 Neo4j
时间序列数据 (TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据 .
时序数据主要的特点:
数据带有时间属性,且数据量随着时间递增
大都为插入操作较多且无更新的需求,插入数据多,每秒钟插入数据可到达千万甚至是上亿条
分析过去时序数据可以做成多纬度报表,揭示其趋势性、规律性、异常性
分析时序数据趋势可以做大数据分析,机器学习,实现预测和预警
能够按照条件筛选数据 , 也可以按照时间范围统计 , 聚合 , 展示数据
常见应用场景 :
无人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距离等等。每时每刻都要将数
据记录下来做分析。
某一个地区的各车辆的行驶轨迹数据
传统证券行业实时交易数据
实时运维监控数据等
prometheus 主要特性
Prometheus 的主要特性有 :
1. 多维度数据模型
2. 灵活的查询语言
3. 不依赖分布式存储,单个服务器节点是自主的
4. HTTP 方式,通过 pull 模型拉去时间序列数据
5. 也可以通过中间网关支持 push 模型
6. 通过服务发现或者静态配置 , 来发现目标服务对象
7. 支持多种多样的图表和界面展示 pormetheus 原理架构图
二、 prometheus 监控
 
主机IP
server.example.com192.168.35.142
agent1.example.com192.168.35.143

  1. //各自配置好主机名,两台都互相绑定IP与主机名
  2. [root@server ~]# vim /etc/hosts
  3. 192.168.35.142 server.example.com server
  4. 192.168.35.143 agent1.example.com agent1
  5. //解压安装prometheus
  6. [root@server ~]# yum -y install lrzsz tar
  7. [root@server ~]# rz -E
  8. rz waiting to receive.
  9. [root@server ~]# ls
  10. anaconda-ks.cfg prometheus-2.54.0.linux-amd64.tar.gz
  11. [root@server ~]# tar -zxvf prometheus-2.54.0.linux-amd64.tar.gz -C /usr/local/
  12. //配置文件说明
  13. [root@server ~]# cd /usr/local/
  14. [root@server local]# ls
  15. bin games lib libexec sbin src
  16. etc include lib64 prometheus-2.54.0.linux-amd64 share
  17. [root@server local]# mv prometheus-2.54.0.linux-amd64/ prometheus
  18. [root@server local]# ls
  19. bin games lib libexec sbin src
  20. etc include lib64 prometheus share
  21. [root@server local]# cd prometheus/
  22. [root@server prometheus]# ls
  23. console_libraries LICENSE prometheus promtool
  24. consoles NOTICE prometheus.yml
  25. [root@server prometheus]# egrep -n : /usr/local/prometheus/prometheus.yml | awk -F '#' '{print $1}'
  26. 2:global: //全局配置段
  27. 3: scrape_interval: 15s //每15s抓取(采集)数据一次
  28. 4: evaluation_interval: //15s 每15秒计算一次规则
  29. 8:alerting: Alertmanager //报警相关
  30. 9: alertmanagers:
  31. 10: - static_configs:
  32. 11: - targets:
  33. 12:
  34. 15:rule_files: //规则文件列表
  35. 19:
  36. 21:scrape_configs: //抓取的配置文件(也就是监控的实例)
  37. 23: - job_name: 'prometheus' //监控的实例名称
  38. 28: static_configs:
  39. 29: - targets: ['localhost:9090'] //监控的实例IP与端口,在这里为监控服务器本身
  40. //启动prometheus,放入后台运行
  41. [root@server prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
  42. [root@server prometheus]# ss -anlt
  43. State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
  44. LISTEN 0 5 127.0.0.1:25151 0.0.0.0:*
  45. LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
  46. LISTEN 0 5 0.0.0.0:873 0.0.0.0:*
  47. LISTEN 0 511 *:443 *:*
  48. LISTEN 0 511 *:80 *:*
  49. LISTEN 0 128 [::]:22 [::]:*
  50. LISTEN 0 4096 *:9090 *:*
  51. LISTEN 0 5 [::]:873 [::]:*

通过http://服务器IP:9090/metrics可以查看到监控的数据  

  1. //在远程linux主机(被监控端agent1)上安装node_exporter组件
  2. [root@agent1 ~]# rz -E
  3. rz waiting to receive.
  4. [root@agent1 ~]# tar -zxcf node_exporter-1.8.2.linux-amd64.tar.gz -C /usr/local/
  5. //修改名字
  6. [root@agent1 ~]# cd /usr/local/
  7. [root@agent1 local]# ls
  8. bin games lib libexec sbin src
  9. etc include lib64 node_exporter-1.8.2.linux-amd64 share
  10. [root@agent1 local]# mv node_exporter-1.8.2.linux-amd64/ node_exporter[root@agent1 local]# ls
  11. bin games lib libexec sbin src
  12. etc include lib64 node_exporter share
  13. [root@agent1 local]# cd node_exporter/
  14. [root@agent1 node_exporter]# ls
  15. LICENSE node_exporter NOTICE
  16. //启动node_exporter,并放入后台运行
  17. [root@agent1 node_exporter]# nohup /usr/local/node_exporter/node_exporter &
  18. [1] 831
  19. [root@agent1 node_exporter]# nohup: ignoring input and appending output to 'nohup.out'
  20. [root@agent1 node_exporter]# ss -ant
  21. State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
  22. LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
  23. ESTAB 0 0 192.168.35.143:22 192.168.35.1:57584
  24. LISTEN 0 4096 *:9100 *:*
  25. LISTEN 0 128 [::]:22 [::]:*

浏览器访问http://被监控端IP:9100/metrics就可以查看到node_exporter在被监控端收集的

metrics

  1. //修改配置文件,最后加上这三行,取一个job名称来代表被监控的机器
  2. [root@server prometheus]# vim prometheus.yml
  3. - job_name: "agent1"
  4. static_configs:
  5. - targets: ["192.168.35.143:9100"] //这里改成被监控机器的IP,后面端口接9100
  6. //杀掉进程
  7. [root@server prometheus]# ps -ef | grep prometheus
  8. root 942 896 0 15:36 pts/0 00:00:01 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
  9. root 1013 896 0 16:13 pts/0 00:00:00 grep --color=autoprometheus
  10. [root@server prometheus]# kill -9 942
  11. [root@server prometheus]# ps -ef | grep prometheus
  12. root 1017 896 0 16:14 pts/0 00:00:00 grep --color=autoprometheus
  13. //重启服务
  14. [root@server prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
  15. [root@server prometheus]# ps -ef | grep prometheus
  16. root 1018 896 0 16:14 pts/0 00:00:00 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
  17. root 1025 896 0 16:14 pts/0 00:00:00 grep --color=autoprometheus

 回到web管理界面 --》点Status --》点Targets --》可以看到多了一台监控目标

  1. //修改配置文件,最后加上这三行,取一个job名称来代表被监控的机器
  2. [root@server prometheus]# vim prometheus.yml
  3. static_configs:
  4. - targets: ["localhost:9090"]
  5. - job_name: "agent1"
  6. static_configs:
  7. - targets: ["192.168.35.143:9100"]
  8. - job_name: "server"
  9. static_configs:
  10. - targets: ["192.168.35.142:9100"]
  11. // 杀掉进程
  12. [root@server prometheus]# ps -ef | grep prometheus
  13. root 1018 896 0 16:14 pts/0 00:00:00 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
  14. root 1118 896 0 16:33 pts/0 00:00:00 grep --color=autoprometheus
  15. [root@server prometheus]# kill -9 1018
  16. [root@server prometheus]# ps -ef | grep prometheus
  17. root 1150 896 0 16:58 pts/0 00:00:00 grep --color=autoprometheus
  18. //重启服务
  19. [root@server prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
  20. [root@server prometheus]# ps -ef | grep prometheus
  21. root 1151 896 0 16:59 pts/0 00:00:00 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
  22. root 1174 896 0 17:06 pts/0 00:00:00 grep --color=autoprometheus

 回到web管理界面 --》点Status --》点Targets --》可以看到多了一台监控目标

  1. //agent1.example.com
  2. //解压安装mysql数据包
  3. [root@agent1 ~]# rz -E
  4. rz waiting to receive.
  5. [root@agent1 ~]# ls
  6. anaconda-ks.cfg
  7. mysqld_exporter-0.15.1.linux-amd64.tar.gz
  8. node_exporter-1.8.2.linux-amd64.tar.gz
  9. [root@agent1 ~]# tar -zxvf mysqld_exporter-0.15.1.linux-amd64.tar.gz -C /usr/local/
  10. mysqld_exporter-0.15.1.linux-amd64/
  11. mysqld_exporter-0.15.1.linux-amd64/LICENSE
  12. mysqld_exporter-0.15.1.linux-amd64/mysqld_exporter
  13. mysqld_exporter-0.15.1.linux-amd64/NOTICE
  14. //修改名字
  15. [root@agent1 ~]# cd /usr/local/
  16. [root@agent1 local]# ls
  17. bin include libexec sbin
  18. etc lib mysqld_exporter-0.15.1.linux-amd64 share
  19. games lib64 node_exporter src
  20. [root@agent1 local]# mv mysqld_exporter-0.15.1.linux-amd64/ mysqld_exporter
  21. //安装mysql依赖包
  22. [root@agent1 local]# yum -y install mariadb-server mariadb
  23. [root@agent1 local]# systemctl restart mariadb.service
  24. [root@agent1 local]# systemctl enable mariadb.service
  25. Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
  26. Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
  27. Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
  28. //启动MySQL并授权
  29. [root@agent1 local]# mysql
  30. Welcome to the MariaDB monitor. Commands end with ; or \g.
  31. Your MariaDB connection id is 3
  32. Server version: 10.5.22-MariaDB MariaDB Server
  33. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  34. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  35. MariaDB [(none)]>
  36. MariaDB [(none)]> grant all ON *.* to 'mysql_monitor'@'localhost' identified by
  37. -> 'redhat';
  38. Query OK, 0 rows affected (0.001 sec)
  39. MariaDB [(none)]> flush privileges;
  40. Query OK, 0 rows affected (0.000 sec)
  41. MariaDB [(none)]> exit
  42. Bye
  43. //创建连接mariadb配置文件
  44. [root@agent1 local]# vim /usr/local/mysqld_exporter/.my.cnf
  45. [client]
  46. user=mysql_monitor
  47. password=redhat
  48. // 启动mysqld_exporter并验证9104端口
  49. [root@agent1 local]# nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &
  50. [2] 3005
  51. [root@agent1 local]# nohup: ignoring input and appending output to 'nohup.out'
  52. [root@agent1 local]# ss -antl
  53. State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
  54. LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
  55. LISTEN 0 4096 *:9100 *:*
  56. LISTEN 0 4096 *:9104 *:*
  57. LISTEN 0 128 [::]:22 [::]:*
  58. //server.example.com
  59. //修改配置文件,最后加上这三行,取一个job名称来代表被监控的机器
  60. [root@server prometheus]# vim prometheus.yml
  61. static_configs:
  62. - targets: ["localhost:9090"]
  63. - job_name: "agent1"
  64. static_configs:
  65. - targets: ["192.168.35.143:9100"]
  66. - job_name: "server"
  67. static_configs:
  68. - targets: ["192.168.35.142:9100"]
  69. - job_name: "agent1-mariadb"
  70. static_configs:
  71. - targets: ["192.168.35.143:9104"]
  72. //杀掉进程
  73. [root@server prometheus]# ps -ef | grep prometheus
  74. root 1151 896 0 16:59 pts/0 00:00:00 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
  75. root 1206 896 0 17:27 pts/0 00:00:00 grep --color=autoprometheus
  76. [root@server prometheus]# kill -9 1151
  77. //重启服务
  78. [root@server prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
  79. [root@server prometheus]# ps -ef | grep prometheus
  80. root 1211 896 1 17:28 pts/0 00:00:00 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
  81. root 1218 896 0 17:28 pts/0 00:00:00 grep --color=autoprometheus

回到web管理界面 --》点Status --》点Targets --》可以看到多了一台监控目标 

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/1001464
推荐阅读
相关标签
  

闽ICP备14008679号