服务器安装
1.下载镜像包
docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana
2.启动node-exporter
docker run -d --privileged=true --name=nodeexporter
-p 9100:9100
-v "/proc:/host/proc:ro"
-v "/sys:/host/sys:ro"
-v "/:/rootfs:ro"
--net="host"
prom/node-exporter
访问地址:http://192.168.91.132:9100/metrics,确定正常启动
3.启动prometheus
新建目录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: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['192.168.91.132:9100']
labels:
instance: localhost
注意:修改IP地址,这里的192.168.91.132就是本机地址
启动prometheus
docker run -d --privileged=true --name=prometheus
-p 9090:9090
-v /etc/localtime:/etc/localtime
-v /opt/prometheus/data:/etc/prometheus
prom/prometheus --web.enable-lifecycle
--config.file=/etc/prometheus/prometheus.yml
访问url:http://192.168.91.132:9090/graph
效果
访问targets,url如下:http://192.168.91.132:9090/targets
效果如下:
4.启动grafana
新建空文件夹grafana-storage,用来存储数据
mkdir /opt/grafana-storage
设置权限
chmod 777 -R /opt/grafana-storage
因为grafana用户会在这个目录写入文件,直接设置777,比较简单粗暴!
启动grafana
docker run -d --privileged=true --name=grafana
-p 3000:3000
--name=grafana
-v /opt/grafana-storage:/var/lib/grafana
grafana/grafana
granafa默认端口为3000,可以在浏览器中输入http://localhost:3000/
granafa首次登录账户名和密码admin/admin,可以修改
配置数据源Data sources->Add data source -> Prometheus,输入prometheus数据源的信息,主要是输入name和url
添加 Dashboard -> New Dashboard -> Import Dashboard -> 输入11074,导入Linux监控模板. 并配置数据源为Prometheus,即上一步中的name
配置完保存后即可看到逼格非常高的系统主机节点监控信息,包括系统运行时间, 内存和CPU的配置, CPU、内存、磁盘、网络流量等信息, 以及磁盘IO、CPU温度等信息。
node_exporter安装配置
# 运行用户添加
groupadd prometheus
useradd -g prometheus -m -d /usr/local/node_exporter/ -s /sbin/nologin prometheus
# 下载node_server
# 解压到指定目录并删除下载文件
tar -zxf node_exporter-1.0.1.linux-386.tar.gz
mv node_exporter-1.0.1.linux-386 /usr/local/
ln -sv /usr/local/node_exporter-1.0.1.linux-386 /usr/local/node_exporter
rm -f node_exporter-1.0.1.linux-386.tar.gz
# 系统服务配置 node_exporter
touch /usr/lib/systemd/system/node_exporter.service
chown prometheus:prometheus /usr/lib/systemd/system/node_exporter.service
chown -R prometheus:prometheus /usr/local/node_exporter*
vim /usr/lib/systemd/system/node_exporter.service
在node_exporter.service中加入如下代码:
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter-1.0.1.linux-386/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动 node_exporter 服务并设置开机启动
systemctl daemon-reload
systemctl enable node_exporter.service
systemctl start node_exporter.service
systemctl status node_exporter.service
systemctl restart node_exporter.service
systemctl start node_exporter.service
systemctl stop node_exporter.service
node_exporter启动成功后, 你就可以通过如下api看到你的监控数据了(将下面的node_exporter_server_ip替换成你的node_exporter的IP地址, 放到浏览器中访问就可以了 ).
http://node_exporter_server_ip:9100/metrics
在prometheus server服务器上/opt/prometheus/prometheus.yml下添加监控机器
- job_name: 192.168.10.205-dev.docker
static_configs:
- targets: ['192.168.10.205:9100']
labels:
instance: 192.168.10.205-dev.docker
重写加载配置
curl -X POST http://localhost:9090/-/reload
新添加的机器即可在Dashbord中看到。
注:Dashbord一类只需要创建一个,多台服务器查看时选择job和instance即可以查看到对应的服务器。
不同的功能监控Dashbord可以自动识别归类
创建和配置Alertmanager
mkdir -p /opt/prometheus/alertmanager
cd !$
vim alertmanager.yml
global:
# resolve_timeout:解析超时时间
resolve_timeout: 5m
# smtp_smarthost: 使用email打开服务配置
smtp_smarthost: 'smtp.exmail.qq.com:465'
# smtp_from:指定通知报警的邮箱
smtp_from: 'system_business@jmgo.com'
# smtp_auth_username:邮箱用户名
smtp_auth_username: 'system_business@jmgo.com'
# smtp_auth_password:授权密码
smtp_auth_password: ']kqN,8q)!iSX'
# smtp_require_tls:是否启用tls
smtp_require_tls: false
# route标记:告警如何发送分配
route:
# group_by:采用哪个标签作为分组的依据
group_by: ['alertname']
# group_wait:分组等待的时间
group_wait: 10s
# group_interval:上下两组发送告警的间隔时间
group_interval: 10s
# repeat_interval:重复发送告警时间。默认1h
repeat_interval: 1m
# receiver 定义谁来通知报警
receiver: 'mail'
# receiver标记:告警接受者
receivers:
# name:报警来源自定义名称
- name: 'mail'
# email_configs:通过邮箱发送报警
email_configs:
# to:指定接收端email
- to: 'zbliu@jmgo.com'
# inhibit_rules标记:降低告警收敛,减少报警,发送关键报警
#inhibit_rules:
# - source_match:
# severity: 'critical'
# target_match:
# severity: 'warning'
# equal: ['alertname', 'dev', 'instance']
运行altermanager
docker rm -f alertmanager
docker run -d -p 9093:9093 --privileged=true --name alertmanager -v /opt/prometheus/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
prom/alertmanager
访问http://192.168.10.15:9093
配置prometheus与alertmanager通信
# vim prometheus.yml
alerting:
alertmanagers: # 配置alertmanager
- static_configs:
- targets:
- 127.0.0.1:9093 #alertmanager服务器ip端口
rule_files: # 告警规则文件
- '/etc/prometheus/rules/rule.yml'
配置报警规则rules
# vim /opt/prometheus/data/rules/rule.yml
groups:
- name: test
rules:
- alert: 内存使用率过高
expr: 100-(node_memory_Buffers_bytes+node_memory_Cached_bytes+node_memory_MemFree_bytes)/node_memory_MemTotal_bytes*100 > 30
for: 1m # 告警持续时间,超过这个时间才会发送给alertmanager
labels:
severity: warning
annotations:
summary: "Instance {{ $labels.instance }} 内存使用率过高"
description: "{{ $labels.instance }} of job {{$labels.job}}内存使用率超过80%,当前使用率[{{ $value }}]."
- alert: cpu使用率过高
expr: 100-avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)*100 > 0
for: 1m
labels:
severity: warning
annotations:
summary: "Instance {{ $labels.instance }} cpu使用率过高"
description: "{{ $labels.instance }} of job {{$labels.job}}cpu使用率超过80%,当前使用率[{{ $value }}]."
# 尽可能把详细告警信息写入summary标签值,因为告警短信/邮件/钉钉发送的内容使用了summary标签中的值。
检查告警规则,重启prometheus
查看http://192.168.10.15:9090/rules,显示规则则表示规则配置起效
http://192.168.10.15:9090/alerts,显示目前报警
开启防火墙端口9093
http://192.168.10.15:9093/#/alerts
收到邮件
Mysql_exporter安装配置
下载组件
tar zxvf mysqld_exporter-0.12.1.linux-386.tar.gz
mv mysqld_exporter-0.12.1.linux-386 /usr/local/mysql_exporter
切换至mysql
mysql -u root -p
# 创建数据库用户。
mysql> CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'Jmgo.123';
# 可查看主从运行情况查看线程,及所有数据库。
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
创建mysql配置文件、运行时可免密码连接数据库:vim /usr/local/mysql_exporter/.my.cnf
[client]
user=exporter
password=***
启动
Cd /usr/local/mysql_exporter
./mysqld_exporter --config.my-cnf=.my.cnf
常用参数:# 选择采集innodb
--collect.info_schema.innodb_cmp# innodb存储引擎状态
--collect.engine_innodb_status# 指定配置文件
--config.my-cnf=".my.cnf"
添加系统服务:vim /usr/lib/systemd/system/mysql_exporter.service
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/mysql_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysql_exporter/.my.cnf
[Install]
WantedBy=multi-user.target
查看捕获mysql数据
使用prometheus监控修改监控端配置文件:vim prometheus.yml
- job_name: Mysql_10.204
static_configs:
- targets: ['192.168.10.204:9104']
labels:
instance: 192.168.10.204-dev.mysql
检查并重启服务
http://***:9090/targets,看是否有新增的监控服务器
Granfana 导入Mysql 监控图表
推荐图标ID:https://grafana.com/dashboards/7362
cadvisor安装配置(监控docker)
docker run -d --privileged=true --restart=always
-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
--name=cadvisor
google/cadvisor:latest
执行
mount -o remount,rw '/sys/fs/cgroup'
ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu
打开防火墙端口,到prometheus服务器上修改监控端配置文件:vim prometheus.yml
- job_name: Docker_10.205
static_configs:
- targets: ['192.168.10.205:8080']
labels:
instance: 192.168.10.205-dev.docker
引入模板193,重启prometheus,可以查看到docker监控