Prometheus 监控案例
监控linux
node_exporter 用于监控linux系统接口 使用golang编写
官网文档:https://prometheus.io/docs/guides/node-exporter/
安装:
wget https://github.com/prometheus/node_exporter/releases/download/v*/node_exporter-*.*-amd64.tar.gz
tar xvfz node_exporter-*.*-amd64.tar.gz
cd node_exporter-*.*-amd64
./node_exporter
使用system的方式启动
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/node_exporter
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
ProSQL
CPU的换算
100 - irate(node_cpu_seconds_total{instance="192.168.10.11:9100",mode="idle"}[5m])*100 统计cpu的使用率
irate(node_cpu_seconds_total{instance="192.168.10.11:9100",mode="idle"}[5m])*100 统计cpu的空闲率
内存的换算
在使用linux内存换算的时候请注意 因为linux内核为了提供读写 会在物理内存里面使用空间
通过不断的复用 因此我们在计算的时候一定要主要计算的方式
(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100 计算剩余内存百分比
计算方式
去除缓存
剩余的内存 加 Cached 加 Buffers_ 在除它的总共的内存就得到剩余得内存百分比
100 -(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100 计算使用内存百分比
计算方式
使用 100 减去 剩余内存就是使用得内存
磁盘换算
node_filesystem_free_bytes{mountpoint="/",fstype=~"ext4|xfs"} 统计当前分区剩余得值
node_filesystem_free_bytes{mountpoint="/",fstype=~"ext4|xfs"} / node_filesystem_size_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100 计算根剩余得百分比
100 - (node_filesystem_free_bytes{mountpoint="/",fstype=~"ext4|xfs"} / node_filesystem_size_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100) 计算使用的百分比
node_exporter监控systemd
启动systemd参数
--collector.systemd
设置监控那几个service 通过正则表达式去匹配到
--collector.systemd.unit-whitelist=".+"
node_exporter --collector.systemd --collector.systemd.unit-whitelist=(docker|sshd|nginx).service
systemd配置
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/node_exporter
ExecStart=/usr/local/node_exporter/node_exporter --collector.systemd --collector.systemd.unit-whitelist=(docker|sshd|nginx).service
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
数据展示 grafana
下载安装
wget https://dl.grafana.com/oss/release/grafana-7.0.3-1.x86_64.rpm
sudo yum install grafana-7.0.3-1.x86_64.rpm
systemctl daemon-reload
systemctl enable grafana-server.service
systemctl enable grafana-server.service
自己写的做的仪表盘太难看社区里面找到一个比较好的
https://grafana.com/grafana/dashboards/9276/revisions
直接在import里面输入编号就ok
监控docker服务器
cadvisor 用于收集正在运行的容器资源使用信息和性能
github地址:https://github.com/google/cadvisor
启动一个cadvisor
sudo docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--privileged \
--device=/dev/kmsg \
google/cadvisor
修改Prometheus.yaml配置
添加如下:
- job_name: "docker"
static_configs:
- targets: ['192.168.10.11:8080']
保存
使用下面命令检查yaml是否有错误
./promtool check config prometheus.yml
通过 kill -hup 发送信号热更新
通过https://grafana.com/dashboards/193 下载grafana仪表盘
监控mysql
https://grafana.com/dashboards/7362 下载仪表盘
GitHub地址:https://github.com/prometheus/mysqld_exporter
mysql创建用户
授权用户
CREATE USER 'exporter'@'localhost' IDENTIFIED BY '12345678';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
mysql_exporter地址:https://github.com/prometheus/mysqld_exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
tar -zvxf mysqld_exporter-0.12.1.linux-amd64.tar.gz
在mysql_exporyer 目录下面创建 .my.cnf
添加如下
[client]
user=exporter
password=12345678
这样子是为了免密
监控主要的监控
主要 连接数 Innodb缓存