Prometheus
简介
Prometheus是一套开源的监控&报警&时间序列数据库的组合。
Prometheus的优点
配置灵活
Prometheus的核心部分只有一个二进制文件,下载安装即可,没有依赖的第三方的库。
监控更多多样性
prometheus支持多种语言的的客户端,我们通过客户端方便对核心业务进行埋点,比如下单,添加购物车等流程。而且prometheus已经有非常多的系统集成
比如:
应用层面的监控:nginx,haproxy,mysql ,docker等
系统层面如: SNMP协议监控,主机监控,进程监控
容器云监控: docker,k8s openstack私有云
非常高效的存储
平均一个采样数据占 ~3.5 bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G
Prometheus的工作流程
数据来源
prometheus server 定期从配置好的jobs或者exporters中拉metrics.或者接受来自pushgateway发过的metrics,或者从其他的prometheus server中拉取metrics
告警情况
- prometheus server 在本地存储收集到的metrics,并运行已经定义好的arlt.rules,记录新的时间序列或者向alertmanager推送报警
- Alertmanager根据配置文件,对接受的警报进行处理,发出告警
图形显示
在图形界面中,可视化采集数据,可以使用别人写好的grafana模板。
Prometheus的部署
下载
从Prometheus官网下载对应的压缩
https://prometheus.io/download/
安装
将下载完成的安装包上传至服务器,解压后启动
解压执行:
tar -zxvf prometheus-2.36.0-rc0.linux-amd64.tar.gz
启动执行:
cd prometheus-2.36.0-rc0.linux-amd64
./prometheus &
通过WEB页面访问
使用浏览器检查
使用浏览器访问:http://IP:9090
看到以下页面内容即可,说明Prometheus安装完成
可以通过Status – Targets 查看监控的主机
Grafana
简介
Grafana是开源的度量分析和可视化工具,,可以通过将采集的数据查询然后可视化的展示,并实现报警
Grafana的优点
展示方式:
快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式。
数据源:
数据源广:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等。
通知提醒
以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知。
混合展示
在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源。
注释
使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记。
过滤器
Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
Grafana安装
下载
从Grafana官网下载对应的压缩:
https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.4.linux-amd64.tar.gz
安装
将Grafana下载的压缩包上传到服务器中
将下载完成的安装包上传至服务器,解压后启动
解压执行:
tar -zxvf grafana-enterprise-9.0.4.linux-amd64.tar.gz
启动
cd grafana-enterprise-9.0.4.linux-amd64
./bin/grafana-server &
Grafana使用
登录
使用浏览器登录 http://ip:3030
初始的账号密码为:admin。 第一次登录完成后需要修改密码。
添加数据源
找到Configuration - Add data source
选择对应的数据源,如Prometheus。
只需要添加对应的IP地址后就可以
Name可以不用修改
URL:http://IP:9090
完成后再最底下选择 Save & test,等待保存测试通过即可
展示数据
可以选择从官网中导入仪表板模板 选择Dashboards – import
在Import via grafana.com中可以选择对应的模板填入后Load
如主机监控模板:1860
填写仪表板名称,存放的文件夹,以及数据来源后,导入即可
就可以看到一些数据内容了
仪表板模板地址
https://grafana.com/grafana/dashboards/
监控es集群
安装插件
插件下载地址: https://github.com/vvanholl/elasticsearch-prometheus-exporter/releases 通过github中去下载elasticsearch监控所需要的插件
进入到elasticsearch的安装目录中
执行:
./bin/elasticsearch-plugin install file:/安装包所在的路径 安装结果如下图所示
修改Prometheus的配置文件
进入到Prometheus的配置文件所在的位置
vim Prometheus.yml 添加以下内容
- job_name: "elasticsearch" basic_auth: #elasticearch集群的账号密码,如果没有设置。不用添加basic_auth: username: xxxx password: xxxxx scrape_interval: 30s metrics_path: "/_prometheus/metrics" static_configs: - targets: - IP1:9200 - IP2:9200 - IP3:9200 |
然后重启Prometheus服务,重启完成后查看是否存在elasticsearch的内容
添加仪表板查看监控内容
登录Grafana添加仪表板
elasticsearch以Prometheus为数据源的仪表板较好模板的编号:266
添加完成后,等待一段时间即可看到elasticsearch集群的信息了。
监控redis集群
安装插件
Prometheus可以通过redis_export的插件来进行数据内容的上传
下载redis_export插件:
链接:https://pan.baidu.com/s/1Gpr317E-G2bbBWCDMKfplg?pwd=l7z0
下载完成后将插件上传至服务器中,解压等。
启动插件:
进入redis_expro的解压目录中执行:./redis_exporter -redis.password xxxxx &
修改Prometheus的配置文件
进入到Prometheus的配置文件所在的位置
vim Prometheus.yml 添加以下内容
- job_name: 'Redis' static_configs: - targets: - redis://IP1:port - redis://IP1:port - redis://IP2:port - redis://IP2:port - redis://IP3:port - redis://IP3:port metrics_path: /scrape relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: IP1:9121 |
添加完成后,重启Prometheus服务
执行:
ps -ef | grep prometheus
kill -9 xxx
进入到prometheus的安装目录中然后执行
./prometheus –config.file=Prometheus.yml &
添加仪表板查看监控内容
登录Grafana添加仪表板,
Redis以Prometheus为数据源的仪表板可以使用:11835