Prometheus+grafana部署
简介:
Prometheus是一个最初在SoundCloud上构建的开源系统监控和警报工具包 。自2012年成立以来,许多公司和组织都采用 Prometheus,该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,并且独立于任何公司。为了强调这一点,并澄清 项目的治理结构,Prometheus 于2016年加入 云本地计算基金会,作为Kubernetes之后的第二个托管项目。
Prometheus 属于一站式监控告警平台,依赖少,功能齐全。 Prometheus 支持对云的或容器的监控,其他系统主要对主机监控。 Prometheus 数据查询语句表现力更强大,内置更强大的统计函数。 Prometheus 在数据存储扩展性以及持久性上没有 InfluxDB,OpenTSDB,Sensu 好。
Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
client libraries,用于对接 Prometheus Server, 可以查询和上报数据。
push gateway ,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
各种汇报数据的 exporters ,例如汇报机器数据的 node_exporter, 汇报 MongoDB 信息的 MongoDB exporter 等等。
Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统, 不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。 Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。 输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、 Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等
从这个架构图,也可以看出 Prometheus 的主要模块包含, Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。
Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据。
当新拉取的数据大于配置内存缓存区的时候,Prometheus 会将数据持久化到磁盘(如果使用 remote storage 将持久化到云端)。
Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alert 推送到配置的
Alertmanager。Alertmanager 收到警告的时候,可以根据配置,聚合,去重,降噪,最后发送警告。
可以使用 API, Prometheus Console 或者 Grafana 查询和聚合数据。
Counter用于累计值,例如记录请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。 例如:http_response_total{method=”GET”,endpoint=”/api/tracks”} 100,10秒后抓取http_response_total {method=”GET”,endpoint=”/api/tracks”} 100。
Gauge常规数值,例如 温度变化、内存使用变化。可变大,可变小。重启进程后,会被重置。 例如: memory_usage_bytes{host=”master-01″} 100 < 抓取值、memory_usage_bytes{host=”master-01″} 30、 memory_usage_bytes{host=”master-01″} 50、memory_usage_bytes{host=”master-01″} 80 < 抓取值。
Histogram(直方图)可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内 容进行分组,提供count和sum全部值的功能。 例如:{小于10=5次,小于20=1次,小于30=2次},count=7次,sum=7次的求和值。
Summary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。 例如:count=7次,sum=7次的值求值。 它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。
1、安装prometheus
安装go
[root@tiger ~]# yum -y install go
安装prometheus 服务器端
[root@tiger ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.9.2/prometheus-2.9.2.linux-amd64.tar.gz
[root@tiger ~]# tar xvf prometheus-2.9.2.linux-amd64.tar.gz -C /usr/local/
[root@tiger ~]# vim /usr/local/prometheus-2.9.2.linux-amd64/prometheus.yml
在里面写清楚监控节点的信息。注意此文件是yml文件,对格式要求很严格。
主机的9090端口是必须配置的,这是prometheus自带的web界面
9100是node_exporter的默认端口
9104是mysqld_exporter默认端口,此服务器上为了测试我也装了mysql。
配置完成后,运行服务:
[root@tiger ~]# cd /usr/local/prometheus-2.9.2.linux-amd64/
[root@tiger ~]# prometheus热加载配置
prometheus启动命令添加参数 --web.enable-lifecycle
然后热重启:curl -XPOST http://localhost:9090/-/reload
nohup ./prometheus --web.enable-lifecycle &
这样更改配置文件后就不用关闭再启动prometheus了
在被监控的mysql机器上安装对应的exporter官网地址
下载完成在服务器上解压
[root@localhost ~]# tar xvf mysqld_exporter-0.11.0.linux-amd64.tar.gz -C /usr/local/
[root@localhost ~]# nohup /usr/local/mysqld_exporter-0.11.0.linux-amd64/mysqld_exporter &
然后访问192.168.3.121:9090。可以看到up,此时就实现了用普罗米修斯监控系统参数。
2、安装grafana
[root@tiger ~]# wget https://dl.grafana.com/oss/release/grafana-5.4.0-1.x86_64.rpm
[root@tiger ~]# yum localinstall grafana-5.4.0-1.x86_64.rpm -y
[root@tiger ~]# systemctl start grafana-server
访问192.168.3.121:3000,默认账户密码 admin/admin
回到刚刚的界面,导入进去
暂时这么多,继续学习,继续编写。