Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。
https://prometheus.io/docs/introduction/overview/
从上图可发现,Prometheus整个生态圈组成主要包括prometheus server,Exporter,pushgateway,alertmanager,grafana,Web ui界面,Prometheus server由三个部分组成,Retrieval,Storage,PromQL
Retrieval负责在活跃的target主机上抓取监控指标数据
Storage存储主要是把采集到的数据存储到磁盘中
PromQL是Prometheus提供的查询语言模块。
prometheus工作流程:
1.Prometheus server可定期从活跃的(up)目标主机上(target)拉取监控指标数据,目标主机的监控数据可通过配置静态job或者服务发现的方式被prometheus server采集到,这种方式默认的pull方式拉取指标;也可通过pushgateway把采集的数据上报到prometheus server中;还可通过一些组件自带的exporter采集相应组件的数据;
2.Prometheus server把采集到的监控指标数据保存到本地磁盘或者数据库;
3.Prometheus采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的报警发送到alertmanager
4.Alertmanager通过配置报警接收方,发送报警到邮件,微信或者钉钉等
5.Prometheus 自带的web ui界面提供PromQL查询语言,可查询监控数据
6.Grafana可接入prometheus数据源,把监控数据以图形化形式展示出
在宿主机或者容器内安装prometheus
首先将以下四个相关安装包传入:
prometheus-2.23.0.linux-amd64.tar.gz
alertmanager-0.21.0.linux-amd64.tar.gz
grafana-7.3.6-1.x86_64.rpm
node_exporter-1.0.1.linux-amd64.tar.gz
进行prometheus的安装并进行软连接:
[root@lhrprometheus soft]# tar -zxvf prometheus-2.23.0.linux-amd64.tar.gz -C /usr/local/ [root@lhrprometheus soft]# ln -s /usr/local/prometheus-2.23.0.linux-amd64 /usr/local/prometheus [root@lhrprometheus soft]# ln -s /usr/local/prometheus/prometheus /usr/local/bin/prometheus
我们可以看到普罗米修斯已经在容器内安装成功:
启动普罗米修斯:
[root@lhrprometheus prometheus]# prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data/ --web.enable-lifecycle --storage.tsdb.retention.time=60d &
查看相关的9090端口是否已经启动:
通过登陆地址查看,普罗米修斯已经启动http://192.168.56.7:29090
也可以通过此命令查看普罗米修斯是否可以获取一些数据:
[root@lhrprometheus soft]# curl localhost:9090/metrics
在对应的宿主机安装node_exporter(要监控哪个机器,就安装在对应的机器内)
[root@lhrprometheus soft]# tar -zxvf node_exporter-1.0.1.linux-amd64.tar.gz
启动node_exporter
[root@lhrprometheus soft]# nohup /usr/local/bin/node_exporter &
默认端口9100
查看是否有数据返回
[root@lhrprometheus soft]# curl http://localhost:9100/metrics
将普罗米修斯和node_exporter关联起来
# 添加到prometheus
vi /usr/local/prometheus/prometheus.yml
- job_name: 'Linux' static_configs: - targets: ['localhost:9100'] labels: instance: Linux_192.168.56.7
# 通过命令热加载,也可以直接“pkill prometheus”:
curl -XPOST http://localhost:9090/-/reload
可以看到普罗米修斯和node_exporter已经关联起来:
Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus等数据源。
rpm -ivh grafana-7.3.6-1.x86_64.rpm systemctl daemon-reload systemctl enable grafana-server.service systemctl start grafana-server.service
systemctl status grafana-server.service
将普罗米修斯加入grafana
从以下地址下载监控模版:
https://grafana.com/grafana/dashboards?category=databases&dataSource=prometheus&direction=desc&orderBy=downloads&search=mysql
导入下载到本地的json模版或者通过外网直接导入模版ID:
还可以更换模版