Prometheus+Granfana安装

版本: 1.0.0

前言

  • Prometheus是一个开源的系统监控和报警的工具包,最初由SoundCloud发布。
    • 特点:
      • 1.多维数据模型(有metric名称和键值对确定的时间序列)
      • 2.灵活的查询语言
      • 3.不依赖分布式存储
      • 4.通过pull方式采集时间序列,通过http协议传输
      • 5.支持通过中介网关的push时间序列的方式
      • 6.监控数据通过服务或者静态配置来发现
      • 7.支持图表和dashboard等多种方式
  • 组件:
    • Prometheus 主程序,主要是负责存储、抓取、聚合、查询方面。
    • Alertmanager 程序,主要是负责实现报警功能。
    • Pushgateway 程序,主要是实现接收由Client-push过来的指标数据,在指定的时间间隔,由主程序来抓取。
    • *_exporter 这类是不同系统已经实现了的集成。
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ArUXgqsz-1576472446434)(https://note.youdao.com/yws/res/1907/456EE7C75FDB45198DEC1AA3494F22ED)]

Prometheus的安装

  • 由于不可说的原因,在这里不是用docker进行安装。以下的安装均使用传统方式进行安装
    • 在这里安装prometheus的版本为: prometheus-2.8.1.linux-amd64.tar.gz

Promethues 搭建

  1. 公司grafana安装在服务器:http://ip:3000
  2. promethues安装在: 服务器http://ip:9090
//第一步 解压下载后的文件
 tar zxvf prometheus‐*.tar.gz 
//第二步 将解压后的文件移动的/server下。
mv prometheus‐2.8.1.linux‐amd64 /server/
// 第三步 进入解压后的目录中
cd prometheus
  • 进入解压后的目录中,对promethues.yml文件进行修改,修改后的文件为:
# my global config
global:
  scrape_interval:     15s # 默认为15s,用于设置每次数据收集的间隔.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets: ["ip:9093"]
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "/server/prometheus/server-node.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus-server'
    static_configs:
    - targets: ['ip:9090']
#数据库oracle监控
  - job_name: 'hzpt-oracle-datasource'
    static_configs:
    - targets: ['ip:9161']
#服务器监控
  - job_name: 'server-node'
    scrape_interval: 10s
    file_sd_configs:
      - files:
        - /server/prometheus/conf.d/server.json
#中间件监控
  - job_name: 'middleware-node'
    scrape_interval: 10s
    file_sd_configs:
      - files:
        - /server/prometheus/conf.d/middleware.json

#nacos服务注册监控
  - job_name: 'nacos'
    scrape_interval: 10s
    metrics_path: '/nacos/actuator/prometheus'
    file_sd_configs:
      - files:
        - /server/prometheus/conf.d/data-nacos.json
#数据中台数据接口网关
  - job_name: 'dsp-api-gateway'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 10s
    file_sd_configs:
      - files:
        - /server/prometheus/conf.d/credit-data.json

#数据中台数据接口fuw
  - job_name: 'das-api'
    metrics_path: '/das/actuator/prometheus'
    scrape_interval: 10s
    file_sd_configs:
      - files:
        - /server/prometheus/conf.d/credit-data-api.json

#乐惠分2.0接口api监控
  - job_name: 'credit-api-2.0'
    metrics_path: '/credit-lhf/actuator/prometheus'
    file_sd_configs:
      - files:
        - /server/prometheus/conf.d/credit-points.json
  • 配置json文件
    在prometheus目录下创建conf.d文件夹。然后分别创建credit-points.json、credit-data-api.json、credit-data.json、server.json。这里取server.json和credit-points.json文件配置
    • server.json.
[
    {
        "targets": ["ip:9100"],
        "labels": {
            "hostname": "redis-node-1"
        }
    },
    {
        "targets": ["ip:9100"],
        "labels": {
            "hostname": "credit-api-100"
        }
    }
]

  • credit-points.json.
[
    {
        "targets": ["ip:8700"],
        "labels": {
            "hostname": "credit-api-1"
        }
    },
    {
        "targets": ["ip:8700"],
        "labels": {
            "hostname": "credit-api-2"
        }
    }
]
  • 启用promethues
 nohup ./prometheus ‐‐config.file=prometheus.yml & (&代表后台启动)
  • 启动后默认端口为:9090.
  • 释放端口:
    • centos7:
  添加 firewall-cmd --zone=public --add-port=80/tc--permanent
  重新载入 firewall-cmd --reload
  查看  firewall-cmd --zone= public --query-port=80/tcp
  删除  firewall-cmd --zone= public --remove-port=80/tcp --permanent 
- centos6:
   /sbin/iptables -I INPUT -p tcp --dport 9090 -j ACCEPT
   /etc/rc.d/init.d/iptables save

Granfana安装

//测试环境先可以联网,可以使用该命令。但是生产环境下,无法连接外网。需要下载本地下载好后上传到服务器
wget https://dl.grafana.com/oss/release/grafana-6.1.6-1.x86_64.rpm 
sudo yum localinstall grafana-6.1.6-1.x86_64.rpm
启动服务service grafana-server start 

Prometheus监控redis

将redis_export放入目录 /server/redis_export下。

有密码的redis:
./redis_exporter -redis.addr 192.168.10.78:6379 -redis.password wangyu & (启动可以时集群,也可以是单机。)
下面的启动 默认监听本机的6379端口的redis:
nohup ./redis_export& 后台启动 (9121对外端口)

将redis_export放入目录 /server/redis_export下。

有密码的redis:

./redis_exporter -redis.addr 192.168.10.78:6379 -redis.password wangyu & (启动可以时集群,也可以是单机。)

下面的启动 默认监听本机的6379端口的redis:

nohup ./redis_export& 后台启动 (9121对外端口)

注意: 释放端口 9121端口

Prometheus监控oracle数据库

注意: 版本的不同,生产的目录也不同。公司目前使用的是18.3版本。

  1. 下载oracle客户端安装包(linux版)到ip服务器上。
  2. 运行 rpm -ivhoracle-instantclient12.1-basic-18.3.rpm ,安装oracle客户端。
    包文件:/usr/lib/oracle/18.3/client64/ 下,包含{bin、lib}两个文件夹.
  1. 创建文件夹
    mkdir -p /usr/lib/oracle/18.3/client64/network/admin/
  1. 创建监听文件,并添加内容

vim /usr/lib/oracle/18.3/client64/network/admin/tnsnames.ora

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = *IP*)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = *SID*)
    )
  )

注意: 缩进不要用tab键,不然会出现莫名其妙的问题。
5. 配置环境变量

vim ~/.bashrc
–根目录下为全局使用,为限制用户权限,可只修改某一用户的环境变量

export  ORACLE_HOME=/usr/lib/oracle/18.3/client64
export  TNS_ADMIN=$ORACLE_HOME/network/admin
export  NLS_LANG='simplified chinese_china'.ZHS16GBK
export  LD_LIBRARY_PATH=$ORACLE_HOME/lib
export  PATH=$ORACLE_HOME/bin:$PATH
  1. 使配置完的环境变量生效

source ~/.bashrc

  1. 执行以下命令为oracledb_exporter.linux-amd64赋权
1. tar -zvxf oracledb_exporter.linux-amd64.tar.gz

//统一将软件安装的一定的目录
2.mv oracledb_exporter.linux-amd64/  /server/

//修改权限
3. chmod +x  oracledb_exporter.linux-amd64
  1. 再设置执行的环境变量,命令行直接执行如下命令export:

export DATA_SOURCE_NAME=用户名/密码@ 数据库服务名

  1. 启动 oracledb_exporter.linux-amd64

nohup ./oracledb_exporter &

注意: 释放端口 9161端口

  1. 在prometheus中修改prometheus.yml文件。
- job_name: oracle
    static_configs:
      - targets: ['ip:9161']
        labels:
          instance: oracle

Prometheus监控服务器 node_export

为了更好的演示 Prometheus 从配置,到监控,到报警的功能,本实例将引入本机 ubuntu server 的监控。由于 Prometheus 主要用于监控 web 服务,如果需要监控 ubuntu server,则需要在本机上安装 node exporter。 Node exporter 主要用于暴露 metrics 给 Prometheus,其中 metrics 包括:cpu 的负载,内存的使用情况,网络等。

// 将node-export放入目录
tar -zxvf node-export-*.tar.gz
// 将解压后的文件移动到server目录下
mv  node-exprot-*/  /server/
// 启动即可
nohup ./node_exporter & 后台启动

注意: 释放端口 9100

Prometheus监控elasticsearch (elasticsearch_export)

// 将elasticsearch_export放入目录
tar -zxvf elasticsearch_export-*.tar.gz
// 将解压后的文件移动到server目录下
mv  elasticsearch_export-*/  /server/
// 启动即可
nohup ./elasticsearch_exporter   --es.uri http://ip:9200 &

注意: 释放端口 9108

Prometheus报警系统的实现

  1. 安装alertmanager插件:
// 使用的版本是:0.16.2
tar -zxvf alertmanager-0.16.2.linux-amd64.tar.gz 
// 将其放入prometheus目录下便于管理
mv alertmanger-0.16.2.linux-amd64/  /server/prometheus/
  1. 修改alertmanager.yml文件
#没有匹配到子节点的警报,会默认匹配到根节点上
#接下来是子节点的配置
  routes:
#乐惠分服务器监控
  - receiver: credit-server-node
    group_wait: 5m
    repeat_interval: 4h
    match:
      team: credit-server-node
#中台服务器监控   
  - receiver: data-server-node
    group_wait: 5m
    repeat_interval: 4h
    match:
      team: data-server-node
#定义报警接收者信息
receivers:
  - name: 'default'
#邮箱配置  
    email_configs:
    - to: 'wangm@creditstate.cn,xuzk@creditstate.cn'
#邮件内容模版      
      html: '{{ template "points.html" . }}'
#接收邮件的标题
      headers: { Subject: "[服务器监控失败] 告警监控"}
      send_resolved: true
#乐惠分
  - name: 'credit-server-node'
    email_configs:
    - to: 'wangm@creditstate.cn,xuzk@creditstate.cn'
      html: '{{ template "points.html" . }}'
      headers: { Subject: "【服务器监控失败】 告警监控"}
      send_resolved: true
#中台服务器
  - name: 'data-server-node'
    email_configs:
    - to: 'kaiy@creditstate.cn,xuzk@creditstate.cn'
      html: '{{ template "points.html" . }}'
      headers: { Subject: "【服务器监控失败】 告警监控"}
      send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

注意: smtp_auth_password: ‘wang8251426’ 这里密码不是邮箱的登录密码,是邮箱的授权密码。

  1. 创建模版

在alertmanager目录下创建目录: template目录

在此目录下创建文件points.tmpl

{{ define  "points.html" }}
<table border="1">
        <tr>
                <td>报警项</td>
                <td>实例</td>
                <td>报警阀值</td>
                <td>报警描述</td>
                <td>开始时间</td>
        </tr>
        {{ range $i, $alert := .Alerts }}
                <tr>
                        <td>{{ index $alert.Labels "alertname" }}</td>
                        <td>{{ index $alert.Labels "instance" }}</td>
                        <td>{{ index $alert.Annotations "value" }}</td>
                        <td>{{ index $alert.Annotations "description"}}</td>
                        <td>{{ $alert.StartsAt }}</td>
                </tr>
        {{ end }}
</table>
{{ end }}

4.启动

nohup ./alertmanager &

注意: 释放端口 9093

以上监控是通过Promethues进行监控。在granfa中的展示数据若是折线图的话我们可以通过granafa进行监控。具体通过如下实现:

1、进入grafana目录中
cd /etc/grafana
2.修改配置文件
vim grafana.ini

修改文件

enabled = true
host = smtp.mxhichina.com:25
user = jkxt@creditstate.cn
# If the password contains # or ; you have to wrap it with trippel quotes. Ex """#password;"""
password = Hgzx@2019
;cert_file =
;key_file =
skip_verify = true
from_address = jkxt@creditstate.cn
from_name = credit-grafana
;# EHLO identity in SMTP dialog (defaults to instance_name)
;;ehlo_identity = dashboard.example.com

然后重启service grafana restart

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值