Prometheus监控Centos,Mysql,Docker

服务器安装

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

访问urlhttp://192.168.91.132:9090/graph

效果

 

访问targetsurl如下: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数据源的信息,主要是输入nameurl

 

添加 Dashboard -> New Dashboard -> Import Dashboard -> 输入11074,导入Linux监控模板. 并配置数据源为Prometheus,即上一步中的name
配置完保存后即可看到逼格非常高的系统主机节点监控信息,包括系统运行时间, 内存和CPU的配置, CPU、内存、磁盘、网络流量等信息, 以及磁盘IOCPU温度等信息。

 

 

node_exporter安装配置

# 运行用户添加

groupadd prometheus

useradd -g prometheus -m -d /usr/local/node_exporter/ -s /sbin/nologin prometheus

# 下载node_server

wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-386.tar.gz

 

# 解压到指定目录并删除下载文件

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_exporterIP地址, 放到浏览器中访问就可以了 ). 

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一类只需要创建一个,多台服务器查看时选择jobinstance即可以查看到对应的服务器。

不同的功能监控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

 

配置prometheusalertmanager通信

# 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安装配置

下载组件

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-386.tar.gz

 

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数据

访问:http://***:9104/metrics

  

使用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 监控图表

推荐图标IDhttps://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监控

 

 

posted @ 2020-11-10 16:06  刘志斌  阅读(446)  评论(0编辑  收藏  举报