Prometheus+Grafana监控部署实践

  • A+
所属分类:linux技术
摘要

原博客: https://blog.csdn.net/baidu_38432732/article/details/97003079 , 本文指令大部分复制原博客,所以版本号需要注意一下,不能原样复制


Prometheus+Grafana监控部署实践

前言:说明

原博客: https://blog.csdn.net/baidu_38432732/article/details/97003079 , 本文指令大部分复制原博客,所以版本号需要注意一下,不能原样复制

在部署之前,需要关闭防火墙(firewalld)和selinux

# 查看防火墙状态
[root@prometheus src]# systemctl status firewalld.service
# 临时关闭防火墙
[root@prometheus src]# systemctl stop firewalld.service
# 禁止防火墙开机启动,永久关闭
[root@prometheus src]# systemctl disable firewalld.service
[root@prometheus src]# removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service
[root@prometheus src]# removed symlink /etc/systemd/system/basic.target.wants/firewalld.service

#查看selinux状态
[root@prometheus src]# getenforce
#临时关闭selinux
[root@prometheus src]# setenforce 0
[root@prometheus src]# getenforce
Permissive

#永久关闭|禁止开机启动,进入到/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled,重启生效。
[root@prometheus src]# vim /etc/selinux/config

参考文档:

Prometheus github:https://github.com/prometheus

grafana github:https://github.com/grafana/grafana

Prometheus getting_started:https://prometheus.io/docs/prometheus/latest/getting_started/

Prometheus node_exporter:https://github.com/prometheus/node_exporter

Prometheus部署(docker,optional):https://prometheus.io/docs/prometheus/latest/installation/

Prometheus配置文件详解:

https://prometheus.io/docs/prometheus/latest/configuration/configuration/

grafana 部署:http://docs.grafana.org/installation/rpm/

一、环境

1.拓扑

Prometheus+Grafana监控部署实践

2.节点

*Node* *OS* *Hostname* *IP* *Remark*
prometheus& grafana server centos 7.4 prometheus 172.20.1.211  
prometheus node centos 7.4 node1 172.20.1.212  

3.版本

*Soft/Node* *Version* *Download*
go 1.15.6 https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz
prometheus 2.24.0 https://github-production-release-asset-2e65be.s3.amazonaws.com/6838921/06f75900-503e-11eb-83ab-c11d8006db87?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210119%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210119T011901Z&X-Amz-Expires=300&X-Amz-Signature=acd16dffc801c5b45ebb9cb685a9535035458465a2cbec7a898145dea5fb9324&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=6838921&response-content-disposition=attachment%3B%20filename%3Dprometheus-2.24.0.linux-amd64.tar.gz&response-content-type=application%2Foctet-stream
node_exporter 0.18.1 https://codeload.github.com/prometheus/node_exporter/tar.gz/v0.18.1
mysql_exporter 0.12.1 https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
grafana 7.1.5 https://mirrors.huaweicloud.com/grafana/7.1.5/grafana-7.1.5.linux-amd64.tar.gz
mysql 8.0.20 http://mirrors.sohu.com/mysql/MySQL-8.0/mysql-8.0.20.tar.gz

二、搭建Go环境

  1. 执行tar解压到/usr/loacl目录下,得到go文件夹

    tar -C /usr/local -zxvf  go1.10.3.linux-amd64.tar.gz
  2. 添加/usr/loacl/go/bin目录到PATH变量中。添加到/etc/profile$HOME/.profile都可以

    // 习惯用vim,没有的话可以用命令`sudo apt-get install vim`安装一个
    vim /etc/profile
    // 在最后一行添加
    export GOROOT=/usr/local/go
    export PATH=$PATH:$GOROOT/bin
    // wq保存退出后source一下
    source /etc/profile
  3. 执行go version,如果显示版本号,则Go环境安装成功。

三、部署prometheus

1.下载部署

# 下载
[root@prometheus src]# cd /usr/local/src/
[root@prometheus src]# wget https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz
# 部署到/usr/local/目录
# promethus不用编译安装,解压目录中有配置文件与启动文件
[root@prometheus src]# tar -zxvf prometheus-2.0.0.linux-amd64.tar.gz -C /usr/local/
[root@prometheus src]# cd /usr/local/
[root@prometheus local]# mv prometheus-2.0.0.linux-amd64/ prometheus/
# 验证
[root@prometheus local]# cd prometheus/
[root@prometheus prometheus]# ./prometheus --version

Prometheus+Grafana监控部署实践

2.配置文件

# 解压目录中的prometheus.yml
# 简单验证,主要配置采用默认文件配置,有修改/新增处用红色标示
[root@prometheus prometheus]# vim prometheus.yml
# 全局配置global:
scrape_interval:     15s # 设置抓取(pull)时间间隔,默认是1m
evaluation_interval: 15s # 设置rules评估时间间隔,默认是1m
 # scrape_timeout is set to the global default (10s).
# 告警管理配置,暂未使用,默认配置alerting:
alertmanagers:
 - static_configs:
   - targets:
     # - alertmanager:9093
# 加载rules,并根据设置的时间间隔定期评估,暂未使用,默认配置rule_files:
 # - "first_rules.yml"
 # - "second_rules.yml"
# 抓取(pull),即监控目标配置
# 默认只有主机本身的监控配置scrape_configs:
 # 监控目标的label(这里的监控目标只是一个metric,而不是指某特定主机,可以在特定主机取多个监控目标),在抓取的每条时间序列表中都会添加此label
 - job_name: 'prometheus'
   # metrics_path defaults to '/metrics'
   # scheme defaults to 'http'.
   # 可覆盖全局配置设置的抓取间隔,由15秒重写成5秒。
  scrape_interval: 5s
   # 静态指定监控目标,暂不涉及使用一些服务发现机制发现目标static_configs:
     - targets: ['localhost:9090']
       # (opentional)再添加一个label,标识了监控目标的主机
labels:
        instance: prometheus
 - job_name: 'linux'
  scrape_interval: 10s
static_configs:
 # 采用node_exporter默认开放的端口
     - targets: ['localhost:9100']
labels:
        instance: node1

3.设置用户

# 添加用户,后期用此账号启动服务
[root@prometheus prom etheus]# groupadd prometheus
[root@prometheus prometheus]# useradd -g prometheus -s /sbin/nologin prometheus
# 赋权
[root@prometheus prometheus]# cd ~
[root@prometheus ~]# chown -R prometheus:prometheus /usr/local/prometheus/
# 创建prometheus运行数据目录
[root@prometheus ~]# mkdir -p /var/lib/prometheus
[root@prometheus ~]# chown -R prometheus:prometheus /var/lib/prometheus/

4.设置开机自启动

[root@prometheus ~]# touch /usr/lib/systemd/system/prometheus.service
[root@prometheus ~]# chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service
[root@prometheus ~]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
# Type设置为notify时,服务会不断重启
Type=simple
User=prometheus
# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus
Restart=on-failure
[Install]
WantedBy=multi-user.target
# 设置开机启动
[root@prometheus ~]# systemctl enable Prometheus
[root@prometheus ~]# systemctl start prometheus

5.设置iptables

[root@prometheus ~]# iptables -I INPUT -p tcp --dport 9090 -j ACCEPT  # linux iptables开放端口命令
#下面的命令是修改iptables表的指令,但是我自测行不通
#[root@prometheus ~]# vim /etc/sysconfig/iptables
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT
# 也有说是这种指令 -A INPUT -p udp -m udp --dport 631 -j ACCEPT,也没测试通过
# 具体可以参考链接: https://www.cnblogs.com/xiujin/p/11494471.html
[root@prometheus ~]# service iptables restart

6.启动并验证

  • 查看服务状态

[root@prometheus ~]# systemctl status prometheus

Prometheus+Grafana监控部署实践

[root@prometheus ~]# netstat -tunlp | grep 9090

Prometheus+Grafana监控部署实践

Prometheus+Grafana监控部署实践

在Status菜单下,Configuration,Rule,Targets等,

Statu-->Configuration展示prometheus.yml的配置,如下:

Prometheus+Grafana监控部署实践

四、部署node_exporter

Node_exporter收集机器的系统数据,这里采用prometheus官方提供的exporter,除node_exporter外,官方还提供consul,memcached,haproxy,mysqld等exporter,具体可查看官网。

1.下载&部署

# 部署
[root@node1 src]# tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz -C /usr/local/
[root@node1 src]# cd /usr/local/
[root@node1 local]# mv node_exporter-0.18.1.linux-amd64/ node_exporter/

2.设置用户

[root@node1 ~]# groupadd prometheus
[root@node1 ~]# useradd -g prometheus -s /sbin/nologin prometheus
[root@node1 ~]# chown -R prometheus:prometheus /usr/local/node_exporter/

3.设置开机启动

[root@node1 ~]# 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=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target

[root@node1 ~]# systemctl enable node_exporter
[root@node1 ~]# systemctl start node_exporter

4.设置iptables

# 官方node_exporter默认使用9100端口
[root@node1 ~]# iptables -I INPUT -p tcp --dport 9090 -j ACCEPT # linux iptables开放端口命令
[root@node1 ~]# service iptables restart

5.验证

访问:http://local:9090,可见node1主机已经可被监控,如下:

Prometheus+Grafana监控部署实践

五、部署grafana

1.下载&部署

# 部署
[root@node1 src]# tar -zxvf grafana-7.1.5.linux-amd64.tar.gz -C /usr/local/
[root@node1 src]# cd /usr/local/
[root@node1 local]# mv grafana-7.1.5.linux-amd64/ grafana/

2.配置文件

配置文件位于/etc/grafana/grafana.ini,这里暂时保持默认配置即可。

3.设置开机启动

[root@localhost system]# vim /usr/lib/systemd/system/grafana-server.service
[Unit]
Description=Grafana
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/grafana/bin/grafana-server -homepath /usr/local/grafana
Restart=on-failure
[Install]
WantedBy=multi-user.target

[root@prometheus src]# systemctl enable grafana-server
[root@prometheus src]# systemctl start grafana-server

4.设置iptables

# 官方node_exporter默认使用3000端口
[root@node1 ~]# iptables -I INPUT -p tcp --dport 3000 -j ACCEPT # linux iptables开放端口命令
[root@node1 ~]# service iptables restart

5.添加数据源

  1. 登录

    访问:http://localhost,默认账号/密码:admin/admin

    Prometheus+Grafana监控部署实践

  2. 添加数据源

    在登陆首页,点击"Add data source"按钮,跳转到添加数据源页面,配置如下:

    Name: prometheus

    URL: http://localhost:9090/

    Access: Browser

    取消Default的勾选,其余默认,点击"Add",如下:

    Prometheus+Grafana监控部署实践

    在"Dashboards"页签下"import"自带的模版,如下:

    Prometheus+Grafana监控部署实践

6.导入dashboard

从grafana官网下载相关dashboaed到本地,如:https://grafana.com/dashboards/405

Grafana首页-->左上角图标-->Dashboard-->import

Prometheus+Grafana监控部署实践

Upload已下载至本地的json文件(或者使用dashboard id,如这里的405),如下:

Prometheus+Grafana监控部署实践

数据源选择"prometheus",即添加的数据源name,点击"Import"按钮,如下:

Prometheus+Grafana监控部署实践