CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送

文章目录

  • 安装部署
      • 安装go环境
    • 安装Prometheus
    • 安装node_exporter
    • 安装mysqld_exporter
    • 安装redis_exporter
    • 安装Grafana
      • 配置grafana-node_exporter仪表版
      • 配置grafana-mysqld_exporter仪表版
      • 配置grafana-redis_exporter仪表版
    • 安装Altermanager(Altermanager监控告警)

安装部署

基础环境
操作系统:CentOS 7.7
MySQL:5.7

安装go环境

  • 选择go安装包 传送门
  • 下载安装go,及环境配置
    确定要下载的go安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:
    wget https://studygolang.com/dl/golang/go1.13.5.linux-amd64.tar.gz   #下载go安装包
    
    tar -C /usr/local -zxvf go1.13.5.linux-amd64.tar.gz   #解压到/usr/local目录下
    
    vim /etc/profile   #打开环境变量配置文件,末尾写入如下内容(位置根据实际的存放位置为准)
    
    export GO_HOME=/usr/local/go
    export PATH=$GO_HOME/bin:$PATH
    #添加完成后:wq保存退出
    
    source /etc/profile   # 重启环境变量
    go version    #查看版本号验证是否安装成功
    
    

安装Prometheus

  • 下载Prometheus安装包 传送门

  • 下载安装Prometheus及环境配置
    确定要下载的安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:

    mkdir -p /software/installs   #安装包安装目录,根据自己习惯设定
    mkdir -p /software/pkgs   #安装包存储目录,根据自己习惯设定
    
    cd /software/pkgs
    wget https://github.com/prometheus/prometheus/releases/download/v2.14.0/prometheus-2.14.0.linux-amd64.tar.gz   #下载Prometheus安装包
    
    #创建prometheus用户
    groupadd prometheus
    useradd -g prometheus prometheus -d /software/installs/prometheus
    
    cd /software/pkgs
    tar -zxvf prometheus-2.14.0.linux-amd64.tar.gz -C /software/installs/   #解压包至指定目录,根据自己习惯
    
    mv /software/installs/prometheus-2.14.0.linux-amd64 /software/installs/prometheus
    cd /software/installs/prometheus   #进入解压后的文件
    mkdir {data,cfg,logs,bin} -p
    mv prometheus promtool bin/
    mv prometheus.yml cfg/
    
    chown -R prometheus.prometheus *
    
    #设置环境变量
    vim /etc/profile
    
    #末尾加入如下内容
    export PROMETHEUS_HOME=/software/installs/prometheus
    export PATH=$PROMETHEUS_HOME/bin:$PATH
    #添加后确认无误:wq保存并退出
    
    source /etc/profile   #重新加载环境变量
    
    
  • 创建prometheus.service 的 systemd unit 文件

    vim /etc/systemd/system/prometheus.service
    
    #加入如下内容
    [Unit]
    Description=Prometheus
    Documentation=https://prometheus.io/
    After=network.target
    
    [Service]
    Type=simple
    User=prometheus
    ExecStart=/software/installs/prometheus/bin/prometheus --config.file=/software/installs/prometheus/cfg/prometheus.yml --storage.tsdb.path=/software/installs/prometheus/data   #这里是重点,注意每个目录与上面保持一致
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    #完成且检查无误后:wq保存并退出
    
    
  • prometheus.yml配置文件

    #末尾处加入如下内容
      	labels:
        instance: prometheus
    - job_name: node
    static_configs:
      - targets: ['localhost:9100']        #博主的node_exporter安装在本地,如果安装在其他机器使用IP即可,9100是node_exporter的端口号
        labels:
          instance: server1                #名称,根据自己爱好取就行了
          
    - job_name: mysql
    static_configs:
      - targets: ['localhost:9104']      #博主的mysqld_exporter安装在本地,如果安装在其他机器使用IP即可,9104是mysqld_exporter的端口号
        labels:
          instance: db1                     #名称,根据自己爱好取就行了
          
    - job_name: redis
    static_configs:
      - targets: ['localhost:9121']      #博主的redis_exporter安装在本地,如果安装在其他机器使用IP即可,9121是redis_exporter的端口号
        labels:
          instance: redis1                     #名称,根据自己爱好取就行了
    #添加完成后:wq保存退出
    
    
  • 启动prometheus服务

    systemctl daemon-reload
    systemctl enable prometheus.service
    systemctl start prometheus.service
    

    这里遇到了重启失败的情况,经过多次尝试终于找到问题,由于是yml格式,对缩进格式要求非常严格,要保证添加的配置-job_name和原来已有的保持同级,处理过程为:

    1. 检查prometheus.service文件配置目录是否正确,确认没有问题

    2. 执行prometheus --config.file=/software/installs/prometheus/cfg/prometheus.yml后看到启动prometheus服务详情信息发现其格式有误,这里真的很难发现问题。
      在这里插入图片描述
      图片中的错误信息为:

      level=error ts=2019-12-20T07:22:15.646Z caller=main.go:736 err=“error loading config from “/software/installs/prometheus/cfg/prometheus.yml”: couldn’t load configuration (–config.file=”/software/installs/prometheus/cfg/prometheus.yml"): parsing YAML file /software/installs/prometheus/cfg/prometheus.yml: yaml: line 40: did not find expected key"

      格式问题处理完成后,再使用上述命令重启prometheus服务就没有问题了。
      具体格式如下,红框内缩进格式一定要保持一致:
      CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第1张图片

  • 查看prometheus运行状态

    systemctl status prometheus.service
    

    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第2张图片

  • Prometheus自带有简单的UI, http://ip:9090/targets
    如果访问不了,且使用的是阿里云服务器,请到阿里云控制台安全组开放9090端口,开启9090端口后访问结果如下:
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第3张图片

安装node_exporter

  • node_exporter也是需要go的环境,安装在被监控的设备上(本文是都安装在同一台机器)

  • 下载node_exporter安装包 传送门

  • 下载安装node_exporter及环境配置
    确定要下载的安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:

    cd /software/pkgs
    wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
    
    #解压到prometheus目录下
    tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz -C /software/installs/prometheus/
    
    mv /software/installs/prometheus/node_exporter-0.18.1.linux-amd64 /software/installs/prometheus/node_exporter   #重命名
    cd /software/installs/prometheus/node_exporter   #进入解压后的文件
    mkdir bin -p
    mv node_exporter bin/
    
    chown -R prometheus.prometheus /software/installs/prometheus/node_exporter   #改变node_exporter所属用户及用户组
    
    #设置环境变量
    vim /etc/profile
    
    #末尾加入如下内容
    export NODE_EXPORTER_HOME=/software/installs/prometheus/node_exporter
    export PATH=$NODE_EXPORTER_HOME/bin:$PATH
    #添加后确认无误:wq保存并退出
    
    source /etc/profile   #重新加载环境变量
    
    
  • 创建node_exporter.service的 systemd unit 文件

    vim /usr/lib/systemd/system/node_exporter.service
    
    #加入如下内容
    [Unit]
    Description=node_exporter
    Documentation=https://prometheus.io/
    After=network.target
    
    [Service]
    Type=simple
    User=prometheus
    ExecStart=/software/installs/prometheus/node_exporter/bin/node_exporter
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    #完成且检查无误后:wq保存并退出
    
    
  • 启动node_exporter服务

    systemctl daemon-reload
    systemctl enable node_exporter.service
    systemctl start node_exporter.service
    
  • 查看node_exporter运行状态

    systemctl status node_exporter.service
    

    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第4张图片
    如果访问http://ip:9090/targets看不到node服务节点,且使用的是阿里云服务器,请到阿里云控制台安全组开放9100端口。

  • 注意事项
    如果不想使用.service文件处理服务启动,或找不到添加启动服务文件的目录,可以使用如下方式启动并设置后台运行:

    #启动服务并设置后台运行
    cd /software/installs/prometheus/node_exporter /bin
    
    nohup node_exporter &   #启动node_pxporter并后台运行,推荐cd到目录下再运行,这样nohup的日志就会存在当前目录,如果在系统根目录下运行,所有的nohup.out日志文件会混淆
    
    ps -ef | grep mysqld_exporter #检查进程的方式查看是否运行成功,如果没有运行成功就去掉nohup直接运行查看一下错误原因
    
    

安装mysqld_exporter

  • mysqld_exporter也是需要go的环境,安装在被监控的设备上(本文是都安装在同一台机器)

  • 下载mysqld_exporter安装包 传送门

  • 下载安装mysqld_exporter及环境配置
    确定要下载的安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:

    cd /software/pkgs
    
    wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
    #解压到prometheus目录下
    tar zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /software/installs/prometheus
    
    mv /software/installs/prometheus/mysqld_exporter-0.12.1.linux-amd64 /software/installs/prometheus/mysqld_exporter   #重命名
    cd /software/installs/prometheus/mysqld_exporter   #进入解压后的文件
    mkdir {bin,cfg} -p
    mv mysqld_exporter bin/
    
    chown -R prometheus.prometheus /software/installs/prometheus/mysqld_exporter #改变mysqld_exporter所属用户及用户组
    
    #设置环境变量
    vim /etc/profile
    
    #末尾加入如下内容
    export MYSQLD_EXPORTER_HOME=/software/installs/prometheus/mysqld_exporter
    export PATH=$MYSQLD_EXPORTER_HOME/bin:$PATH
    #添加后确认无误:wq保存并退出
    
    source /etc/profile   #重新加载环境变量
    
    
  • 创建mysqld_exporter.service的 systemd unit 文件

    vim /usr/lib/systemd/system/mysqld_exporter.service
    
    #加入如下内容
    [Unit]
    Description=mysqld_exporter
    Documentation=https://prometheus.io/
    After=network.target
    
    [Service]
    Type=simple
    User=prometheus
    ExecStart=/software/installs/prometheus/mysqld_exporter/bin/mysqld_exporter --config.my-cnf=/software/installs/prometheus/mysqld_exporter/cfg/.my.cnf
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    #完成且检查无误后:wq保存并退出
    
    
  • 添加mysqld_exporter服务的mysql用户
    mysqld_exporter需要连接到Mysql,所以需要Mysql的权限,我们先为它创建用户并赋予所需的权限。

    mysql -uroot -p密码
    mysql> GRANT REPLICATION CLIENT,PROCESS ON *.* TO 'mysql_monitor'@'localhost' identified by 'mysql_monitor';
    mysql> GRANT SELECT ON *.* TO 'mysql_monitor'@'localhost';
    
    
  • 创建.my.cnf文件

    vim /software/installs/prometheus/mysqld_exporter/cfg/.my.cnf
    
    #加入如下内容
    [client]
    user=mysql_monitor
    password=mysql_monitor
    #添加完成后:wq保存并退出
    
    
  • 启动mysqld_exporter服务

    systemctl daemon-reload
    systemctl enable mysqld_exporter.service
    systemctl start mysqld_exporter.service
    
  • 查看mysqld_exporter运行状态

    systemctl status mysqld_exporter.service
    

    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第5张图片
    如果访问http://ip:9090/targets看不到mysql服务节点,且使用的是阿里云服务器,请到阿里云控制台安全组开放9104端口。

  • 注意事项
    如果不想使用.service文件处理服务启动,或找不到添加启动服务文件的目录,可以使用如下方式启动并设置后台运行:

    #启动服务并设置后台运行
    cd /software/installs/prometheus/mysql_exporter/bin
    
    nohup mysqld_exporter -config.my-cnf=../cfg/.my.cnf &   ##启动mysqld_exporter并后台运行,推荐cd到目录下再运行,这样nohup的日志就会存在当前目录,如果在系统根目录下运行,所有的nohup.out日志文件会混淆
    
    ps -ef | grep mysqld_exporter #检查进程的方式查看是否运行成功,如果没有运行成功就去掉nohup直接运行查看一下错误原因
    
    

安装redis_exporter

  • 下载redis_exporter安装包 传送门

  • 下载安装redis_exporter及环境配置
    确定要下载的安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:

    cd /software/pkgs
    
    wget https://github.com/oliver006/redis_exporter/releases/download/v1.3.5/redis_exporter-v1.3.5.linux-amd64.tar.gz
    
    #解压到prometheus目录下
    tar zxvf redis_exporter-v1.3.5.linux-amd64.tar.gz -C /software/installs/prometheus/
    
    mv /software/installs/prometheus/redis_exporter-v1.3.5.linux-amd64 /software/installs/prometheus/redis_exporter   #重命名
    cd /software/installs/prometheus/redis_exporter   #进入解压后的文件
    mkdir {bin,cfg} -p
    mv redis_exporter bin/
    
    chown -R prometheus.prometheus /software/installs/prometheus/redis_exporter   #改变redis_exporter所属用户及用户组
    
    #设置环境变量
    vim /etc/profile
    
    #末尾加入如下内容
    export REDIS_EXPORTER_HOME=/software/installs/prometheus/redis_exporter
    export PATH=$REDIS_EXPORTER_HOME/bin:$PATH
    #添加后确认无误:wq保存并退出
    
    source /etc/profile   #重新加载环境变量
    
    
  • 创建redis_exporter.service的 systemd unit 文件

    vim /usr/lib/systemd/system/redis_exporter.service
    
    #加入如下内容
    [Unit]
    Description=redis_exporter
    Documentation=https://prometheus.io/
    After=network.target
    
    [Service]
    Type=simple
    User=prometheus
    ExecStart=/software/installs/prometheus/redis_exporter/bin/redis_exporter
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    #完成且检查无误后:wq保存并退出
    
    
  • 启动mysqld_exporter服务

    systemctl daemon-reload
    systemctl enable redis_exporter.service
    systemctl start redis_exporter.service
    
  • 查看mysqld_exporter运行状态

    systemctl status redis_exporter.service
    

    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第6张图片
    如果访问http://ip:9090/targets看不到redis服务节点,且使用的是阿里云服务器,请到阿里云控制台安全组开放9121端口。

  • 注意事项
    如果不想使用.service文件处理服务启动,或找不到添加启动服务文件的目录,可以使用如下方式启动并设置后台运行:

    #启动服务并设置后台运行
    cd /software/installs/prometheus/redis_exporter/bin
    
    nohup ./redis_exporter exporter redis://localhost:6379 &   #启动redis_exporter并后台运行,推荐cd到目录下再运行,这样nohup的日志就会存在当前目录,如果在系统根目录下运行,所有的nohup.out日志文件会混淆
    
    ps -ef | grep redis_exporter  #检查进程的方式查看是否运行成功,如果没有运行成功就去掉nohup直接运行查看一下错误原因
    
    

安装配置成果:
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第7张图片

安装Grafana

  • 下载Grafana安装包 传送门

  • 下载安装Grafana及环境配置
    确定要下载的安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:

    cd /software/pkgs
    
    wget https://dl.grafana.com/oss/release/grafana-6.5.2-1.x86_64.rpm
    
    #安装grafana,无需指定安装目录,默认即可,否则可能会由于依赖等问题导致安装失败
    yum localinstall grafana-6.5.2-1.x86_64.rpm
    
    
  • 设置grafana服务开机自启动及开启服务

    systemctl daemon-reload
    systemctl enable grafana-server.service
    systemctl start grafana-server.service
    
    
  • 查看mysqld_exporter运行状态

    systemctl status grafana-server.service
    

    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第8张图片

  • 登录grafana图形化界面

    1. 访问grafana网页: http://ip:3000/login ,默认用户名“admin”默认密码“admin”,登录后重置密码。

    2. 如果访问http://ip:3000/login失败,且使用的是阿里云服务器,请到阿里云控制台安全组开放3000端口。
      不知道是我操作的问题还是其他原因,登录后修改密码提示未认证,修改密码后登录不跳转,我强制刷新之后又自动登录了,疑惑!

    登录后界面:
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第9张图片

配置grafana-node_exporter仪表版

  • 添加data sources,点击添加选择prometheus即可
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第10张图片
  • Name默认Prometheus,URL填写上面配置的prometheus地址http://ip:9090,其他默认,保存即可
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第11张图片
  • 在Dashboards页面导入Prometheus Status模板,这里选择导入官网的模板
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第12张图片
  • 导入Prometheus仪表版,Dashboards–Manage–import
  • 在 Granfana.com-Dashboard中填写8919,点击load即可。(https://grafana.com/dashboards 中可以直接搜索prometheus,copy ID to Clipboard,grafana官网提供了大量的仪表板模板可以使用)
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第13张图片
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第14张图片
  • 点击“import”,执行导入,效果如下
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第15张图片

配置grafana-mysqld_exporter仪表版

  • 导入Prometheus仪表版,Dashboards–Manage–import。方式同上

  • 在 Granfana.com-Dashboard中填写7362,点击load即可。(https://grafana.com/dashboards 中可以直接搜索MySQL Overview,copy ID to Clipboard,grafana官网提供了大量的仪表板模板可以使用)。方式同上

  • 修改仪表版名称和选择“prometheus”为Prometheus即可(如果这里提示没有数据库,就是前面的data sources没有添加好需要重新检查)

    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第16张图片
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第17张图片

  • 进入仪表板就可以在仪表版看到相应的监控
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第18张图片

配置grafana-redis_exporter仪表版

  • 导入Prometheus仪表版,Dashboards–Manage–import

  • 在 Granfana.com-Dashboard中填写2751,点击load即可。(https://grafana.com/dashboards 中可以直接搜索Prometheus Redis,copy ID to Clipboard,grafana官网提供了大量的仪表板模板可以使用)

  • 修改仪表版名称和选择“prom”为Prometheus即可(如果这里提示没有数据库,就是前面的data sources没有添加好需要重新检查)
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第19张图片
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第20张图片

  • 进入仪表板就可以在仪表版看到相应的监控(redis无密码)
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第21张图片

安装Altermanager(Altermanager监控告警)

第一种:使用grafana自带的报警功能

  • 配置钉钉报警通知
    1. 配置钉钉机器人
      打开要通知的钉钉群->群设置->点击“智能群助手”
      CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第22张图片
      点击“添加机器人”
      CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第23张图片
      选择自定义:
      CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第24张图片
      点击“添加”按钮,输入机器人名称,选择安全设置后点击“完成”
      CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第25张图片
      注意,由于请求实现的原因,必须选择ip地址段,只有填写的IP地址请求才会被接受,否则后面的测试将不会收到消息,也就是说ip地址必须包含grafana安装的地址。
      CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第26张图片
    2. grafana添加报警通知设置
      CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第27张图片
      CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第28张图片
      CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第29张图片
      警报发送的是一个URL地址,这里需要注意一下,需要修改为自己的grafana地址。
    vim /etc/grafana/grafana.ini
    # 修改为自己grafana服务的访问地址
    domain = 39.98.134.170
    root_url = http://ip:3000
    
    修改完成后,保存并退出,然后重启grafana服务:
    systemctl daemon-reload
    systemctl restart grafana-server
    
    如果钉钉收不到报警消息,关闭发送图片开关试试。
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第30张图片
  • 配置邮件报警通知
    这里使用qq邮箱
    登录qq账户,点击“设置”、“账户”,开启服务,开启邮件服务后,qq邮件服务端口是465:
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第31张图片
    同时,点击“生成授权码”,根据提示发送短信并在该页面获取授权码,复制下来以备使用:
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第32张图片
    修改grafana邮箱配置
    vim /usr/share/grafana/conf/grafana.ini
    
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第33张图片
    修改完成后,保存并退出,然后重启grafana服务:
    systemctl daemon-reload
    systemctl restart grafana-server
    

去grafana添加邮件报警
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第34张图片
添加完成后,点击“send test”,就会接收到报警测试邮件:
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_第35张图片

  • 配置企业微信报警通知
    公司没有使用企业微信,这里暂留,以后用到再完善。

第二种:使用alertmanager软件报警通知
后期添加

参考资料:
https://blog.csdn.net/baidu_36943075/article/details/91829364
https://blog.csdn.net/yaodunlin/article/details/89159500
https://blog.csdn.net/xiegh2014/article/details/84936174

你可能感兴趣的:(linux,服务器,运维)