1、安装运行Prometheus
下面介绍如何使用Prometheus、Grafana、CAdvisor、node-exporter、mysqld-exporter对本机服务器性能、Docker容器、MySQL数据库进行监控。
- 监控本机,只需要一个exporter
- node_exporter – 用于机器系统数据收集
- mysqld-exporter 用于MySQL数据库数据收集
- Cadvisor 用于收集宿主机上的docker容器数据
- Grafana是一个开源的功能丰富的数据可视化平台,通常用于时序数据的可视化。
下载镜像包
docker pull prom/node-exporter docker pull prom/mysqld-exporter docker pull google/cadvisor docker pull prom/prometheus docker pull grafana/grafana
1.1、启动node-exporter
docker run -d --name node-exporter --restart=always -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter
1.2、访问url:
http://xx.xxx.x.xx:9100/metrics
1.3、效果如下:
2、启动mysqld-exporter
2.1、新建文件.my.cnf
地址:/home/mysql-exporter/.my.cnf
2.2、打开文件编写
vim /home/mysql-exporter/.my.cnf
[client] # 这里使用的容器名称。所有容器都指定在同一 network 中,docker 允许处在同一网络环境的容器使用容器名称项目访问。另外,容器启动时会随机分配 IP,所以这里使用容器名称最合适。当然也可以容器启动时,指定的 IP host=xx.xxx.x.xx port=6306 # mysql 用户名 user=exporter # mysql 用户密码 password=123456
2.3、启动
docker run -d --name mysqld_exporter --restart=always -p 9104:9104 -v /home/mysql-exporter/.my.cnf:/.my.cnf -e DATA_SOURCE_NAME="exporter:123456@(94.191.1.78:6306)/" prom/mysqld-exporter
2.4、访问url:
http://xx.xxx.x.xx:9104/metrics
2.5、效果如下:
这些都是收集到数据,有了它就可以做MySQL数据库数据展示了
2.6、无法连接到mysql
exporter.go:149 level=error msg="Error pinging mysqld" err="Error 1045: Access denied for user 'exporter'@'xx.xxx.x.xx' (using password: YES)"
简单解释就是:mysqld_exporter无法连接到mysql。
原因:本地域用户赋权问题。mysqld_exporter是以本地域访问的MySQL,你指定的用户没有本地域权限。
解决:
-- 查询用户权限: select * from mysql.user; -- 创建用户并赋权 GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost'; -- 更新配置 FLUSH PRIVILEGES;
如果还是不好使,就将创建出来的用户host由localhost改为%,然后再更新配置试试。
3、 启动cadvisor
docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro -v /dev/disk/:/dev/disk:ro -p 8080:8080 -d --name=cadvisor --restart=always google/cadvisor:latest
3.1、访问url:
http://xx.xxx.x.xx:8080/metrics
3.2、效果如下:
这些都是收集到数据,有了它就可以做Docker容器数据展示了
4、启动prometheus
4.1、新建目录prometheus,编辑配置文件prometheus.yml
mkdir /opt/prometheus cd /opt/prometheus/ vim prometheus.yml
内容如下:
global: scrape_interval: 60s evaluation_interval: 60s scrape_configs: - job_name: prometheus static_configs: - targets: ['xx.xxx.x.xx:9090'] labels: instance: prometheus - job_name: linux static_configs: - targets: ['xx.xxx.x.xx:9100'] labels: instance: localhost # - targets: ['192.168.1.22:9100'] #这里添加targets,可以使用Prometheus监控其他装有node_exporter的节点,单节点则不需要 # labels: # instance: 192.168.1.22 - job_name: cadvisor static_configs: - targets: ['xx.xxx.x.xx:8080'] labels: instance: cAdvisor - job_name: mysqld static_configs: - targets: ['xx.xxx.x.xx:9104'] labels: instance: mysql-exporter
4.2、启动容器
docker run -d --name prometheus --restart=always -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
注意:宿主机的路径必须是绝对路径:/opt/prometheus/prometheus.yml,否者报错
4.3、访问url:
http://xx.xxx.x.xx:9090/graph
4.4、效果如下:
4.5、访问targets
http://xx.xxx.x.xx:9090/targets
4.6、效果如下:
如果状态没有UP起来,等待一会,就会UP了
5、启动grafana
5.1、新建空文件夹grafana-storage,用来存储数据
mkdir /opt/grafana-storage
5.2、添加权限
chmod 777 -R /opt/grafana-storage
因为grafana用户会在这个目录写入文件,直接设置777,比较简单粗暴!
5.3、启动
docker run -d --name grafana --restart=always -p 3000:3000 --name=grafana -v /opt/grafana-storage:/var/lib/grafana grafana/grafana
5.4、访问url:
http://xx.xxx.x.xx:3000/
默认会先跳转到登录页面,默认的用户名和密码都是admin
登录之后,它会要求你重置密码。你还可以再输次admin密码!
点击菜单,选择Connections->Data sources->Add new data source
name名字写Prometheus
type 选择Prometheus,因为数据都从它那里获取
url 输入Prometheus的ip(docker容器私网ip)+端口
点击下面的Save & Test,如果出现绿色的,说明ok了
回到首页,导入grafana监控模板,linux监控模板id为8919,填入如下输入框内
保存就可以进行数据可视化展示
导入主机的监控模板,模板id为8919,以相同方式导入即可
导入容器的监控模板,模板id为179,以相同方式导入即可
标签:exporter,部署,prometheus,Prometheus,--,xx,docker,grafana From: https://www.cnblogs.com/Galaxy1/p/18034293