[toc]

prometheus安装

prometheus基于Golang编写,编译后的软件包,不依赖于任何的第三方依赖。用户只需要下载对应平台的二进制包,解压并且添加基本的配置即可正常启动prometheus server

下载并解压二进制安装包

官网下载地址 https://prometheus.io/download/

#下载、解压、创建软链接
wget https://github.com/prometheus/prometheus/releases/download/v2.21.0/prometheus-2.21.0.linux-amd64.tar.gz
tar -xf prometheus-2.21.0.linux-amd64.tar.gz
mv prometheus-2.21.0.linux-amd64 /usr/local/
ln -s /usr/local/prometheus-2.21.0.linux-amd64/ /usr/local/prometheus

配置说明

配置文件promethes.yml

# 全局配置
global:
  scrape_interval:     15s # 设置抓取间隔,默认为1分钟
  evaluation_interval: 15s #估算规则的默认周期,每15秒计算一次规则。默认1分钟
  # scrape_timeout  #默认抓取超时,默认为10s

# Alertmanager相关配置
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# 规则文件列表,使用'evaluation_interval' 参数去抓取
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

#  抓取配置列表
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'file_ds'
    file_sd_configs:
    - files:
      - targets.json


引用配置文件

[
  {
    "targets": ["10.0.18.226:9091"],  // 服务metrics
    "labels": {
        "job": "shorturl-api",
        "app": "shorturl-api",
        "env": "test",
        "instance": "10.0.18.226:8080"
    }
  }
]

创建prometheus的用户及数据存储目录

useradd  -s /sbin/nologin -M prometheus 
mkdir  /data/prometheus -p
#修改目录属主
chown -R prometheus:prometheus /usr/local/prometheus/
chown -R prometheus:prometheus /data/prometheus/

创建systemd服务启动prometheus

在service文件里面,定义了启动命令,定义了数据存储在/data/prometheus路径下,否则数据会默认存储在prometheus安装目录的data下

vim /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus
Restart=on-failure
[Install]
WantedBy=multi-user.target

启动命令

systemctl start prometheus
systemctl status prometheus
systemctl enable prometheus

打开prometheus的web页面

prometheus启动后默认会启动9090端口,http://10.10.32.58:9090/,我们通过浏览器打开该端口页面看下

grafana安装

官网下载 https://grafana.com/grafana/download?edition=enterprise&platform=linux

下载并解压二进制安装包

#下载、解压、创建软链接
wget https://dl.grafana.com/oss/release/grafana-7.1.5.linux-amd64.tar.gz
tar -zxvf grafana-6.4.2.linux-amd64.tar.gz
mv grafana-6.4.2  /usr/local/
ln -s /usr/local/grafana-6.4.2/ /usr/local/grafana

创建grafana用户及数据存放目录

useradd -s /sbin/nologin -M grafana
mkdir /data/grafana
chown -R grafana:grafana /usr/local/grafana/ 
chown -R grafana:grafana  /data/grafana/

修改配置文件

修改数据存放目录,日志存放目录,插件存放目录

data = /data/grafana/data
logs = /data/grafana/log
plugins = /data/grafana/plugins
provisioning = /data/grafana/conf/provisioning

把grafana-server添加到systemd中

新增 grafana-server.service 文件,使用systemd来管理grafana服务

vim /etc/systemd/system/grafana-server.service

[Unit]
Description=Grafana
After=network.target

[Service]
User=grafana
Group=grafana
Type=notify
ExecStart=/usr/local/grafana/bin/grafana-server -homepath /usr/local/grafana
Restart=on-failure

[Install]
WantedBy=multi-user.target

启停并设置开机启动

systemctl start  grafana-server
systemctl status  grafana-server
systemctl enable  grafana-server

打开grafana的web页面

grafana安装完毕,默认会启动3000端口,默认账号密码admin/admin

使用Node Exporter采集主机运行数据

与传统的监控zabbix来对比的话,prometheus-server就像是mysql,负责存储数据。只不过这是时序数据库而不是关系型的数据库。数据的收集还需要其他的客户端,在prometheus中叫做exporter。针对不同的服务,有各种各样的exporter,就好比zabbix的zabbix-agent一样。

这里为了能够采集到主机的运行指标如CPU,,内存,磁盘等信息。我们可以使用Node Exporter。Node Exporter同样采用Golang编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。可以从https://prometheus.io/download/ 获取最新的node exporter版本的二进制包。

下载node exporter

wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
tar -xf node_exporter-1.0.1.linux-amd64.tar.gz
#新建一个目录专门安装各种exporter
mkdir -p /usr/local/prometheus_exporter
mv node_exporter-1.0.1.linux-amd64 /usr/local/prometheus_exporter/
cd /usr/local/prometheus_exporter/
ln -s node_exporter-1.0.1.linux-amd64/ node_exporter

启动node exporter

直接打开node_exporter的可执行文件即可启动 node export,默认会启动9100端口。

/usr/local/prometheus_exporter/node_exporter/node_exporter
#建议使用nohup
nohup /usr/local/prometheus_exporter/node_exporter/node_exporter >/dev/null 2>&1 &

加入开机启动

在 /etc/rc.local 加入上面的启动命令即可

##node exporter
nohup /usr/local/prometheus_exporter/node_exporter/node_exporter >/dev/null 2>&1 &

配置Prometheus,收集node exporter的数据

可以看到node exporter启动后也就是暴露了9100端口,并没有把数据传到prometheus,我们还需要在prometheus中配置,让prometheus去pull这个接口的数据。 编辑prometheus.yml文件,增加后面4行。

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

   #采集node exporter监控数据
  - job_name: 'node'
    static_configs:
    - targets: ['localhost:9100']

然后重启prometheus,打开prometheus页面查看是不是有对应的数据了。http://127.0.0.1:9090/targets

导入grafana模板,数据展示

在导入界面,我们输入模板的编号,这里我使用的是9276号模板,如要使用其他的模板,请到grafana的官网去查找 https://grafana.com/dashboards

参考

https://www.jianshu.com/p/967cb76cd5ca