700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【DevOps】 Prometheus + Grafana (一)安装配置与系统级监控

【DevOps】 Prometheus + Grafana (一)安装配置与系统级监控

时间:2019-02-05 07:54:04

相关推荐

【DevOps】 Prometheus + Grafana (一)安装配置与系统级监控

文章目录

关于Prometheus介绍数据格式与实例四种数据类型promql相关组件Centos7 安装 PrometheusCentos7 安装 Go 环境Centos7 安装 Prometheus配置 Prometheus启动与使用Centos7 安装与配置 Grafana安装 Grafana配置数据源dashboardsPrometheus + Grafana 监控案例监控 Linux 服务器监控 mysql监控 redis监控 kafka监控 Nginx监控业务Prometheus 查询参考

关于Prometheus

介绍

1、prometheus 存储的是时序数据,适合监控一些随时间变化的场景

2、原理:通过HTTP协议周期性抓取(Pull方式)被监控组件的状态,好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境,比如VM或者Docker。输出被监控组件信息的Http接口叫exporter。

3、特点

Prometheus Server 负载定时在目标上抓取 metrics(指标)数据,每个抓取目标都需要暴露一个 HTTP 服务接口用于 Prometheus 定时抓取。这种调用被监控对象获取监控数据的方式被称为 Pull(拉)。Pull 方式体现了 Prometheus 独特的设计哲学与大多数采用 Push(推)方式的监控不同

Pull 方式的优势是能够自动进行上游监控和水平监控,配置更少,更容易扩展,更灵活,更容易实现高可用。简单来说就是 Pull 方式可以降低耦合。由于在推送系统中很容易出现因为向监控系统推送数据失败而导致被监控系统瘫痪的问题。所以通过 Pull 方式,被采集端无需感知监控系统的存在,完全独立于监控系统之外,这样数据的采集完全由监控系统控制

4、时序(time series)是由名字(Metric)以及一组key/value标签定义的,具有相同的名字以及标签属于相同时序

5、metric名字:表示metric的功能,如 http_request_total

数据格式与实例

1、数据格式:<metric name>{<label name>=<label value>, ...}

2、实例

up{job="<job-name>", instance="<instance-id>"}: 1 表示该实例正常工作up{job="<job-name>", instance="<instance-id>"}: 0 表示该实例故障

四种数据类型

1、Counter

Counter用于累计值,例如记录请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。

http_response_total{method=”GET”,endpoint=”/api/tracks”} 100

2、Gauge

Gauge 瞬时数据,比如内存使用率、CPU使用率等。

3、Histogram

<basename>_bucket{le="<upper inclusive bound>"}<basename>_bucket{le="+Inf"} <basename>_sum<basename>_count

Histogram(直方图)可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供count和sum全部值的功能。

4、Summary

<basename>{quantile="<φ>"}<basename>_sum<basename>_count

Summary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。

count=7次,sum=7次的值求值。

它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。

promql

做查询 与 报警

相关组件

参考:/s?id=1689945188583938997&wfr=spider&for=pc

1、Prometheus Server:Prometheus 的核心部分,负责实现对监控数据的获取,存储以及查询;

静态或动态的配置管理监控目标;

本身具有时序数据库的功能;

对外提供自定义的 PromQL 语言,可以查询分析;

内置 Express Browser UI, 可以通过该 UI 用 PromQL 实现数据的查询以及可视化

2、push gateway:接收由 Client push 过来的指标数据,在指定的时间间隔,由主程序来抓取;

Prometheus Server 与 Exporter 无法直接通信时,可以利用 PushGateway 来进行中转。

3、Exporter:采集数据,并通过 HTTP 服务的形式暴露给 Prometheus Server;

例子:node_exporter、mysqld_exporter、haproxy_exporter 等。

4、Alertmanager:Prometheus 体系中的告警处理中心;

Prometheus Server 中支持基于 PromQL 创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由 AlertManager 进行管理;

可以邮件、webhook 等方式预警。

Centos7 安装 Prometheus

参考:/baidu_36943075/article/details/91829364

Centos7 安装 Go 环境

wget /dl/golang/go1.10.3.linux-amd64.tar.gz #下载包sudo tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz #解压包sudo vim /etc/profile #打开环境变量配置文件,写入如下内容(位置根据实际的存放位置为准)export GO_HOME=/usr/local/goexport PATH=$GO_HOME/bin:$PATHsource /etc/profile # 重启环境变量go version #查看版本号验证是否安装成功

Centos7 安装 Prometheus

cd /usr/softwarewget /prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gztar -zxvf prometheus-2.26.0.linux-amd64.tar.gz -C /usr/local/

配置 Prometheus

官网说明:https://prometheus.io/docs/prometheus/latest/configuration/configuration/

/p/b9d15f236e02

global:全局配置

alerting:Alertmanager相关配置

rule_files:规则文件列表,使用’evaluation_interval’ 参数抓取

scrape_configs:抓取配置列表

cd /usr/local/prometheus-2.26.0.linux-amd64vim prometheus.yml # my global configglobal:scrape_interval:15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configurationalerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.rule_files:# - "first_rules.yml"# - "second_rules.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'# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ['localhost:9090']

启动与使用

1、启动

注意:prometheus 没有自带任何加密措施,因此尽量不要暴露所使用的端口,通过 grafana去查看监测数据,实在要用 prometheus 的UI 的话,可以做 Nginx 加密;

# 后台启动,并修改开放端口nohup ./prometheus --config.file=prometheus.yml --web.enable-lifecycle --web.listen-address=:19908 & # 查看启动状态ps -ef | grep prometheus lsof -i:19908# 查看启动的命令行参数./prometheus -h

2、常用启动参数

# 启动使用的配置文件--config.file=prometheus.yml# 是否启用 API,启用API后,可以通过 API指令完成 Prometheus 的 停止、热加载配置文件 等--web.enable-lifecycle# 服务监听端口--web.listen-address=:19908# 是否启用 admin api 的访问权限(TSDB管理API)--web.enable-admin-api# 保留数据的天数--storage.tsdb.retention.time=7d

3、API

# 查看当前配置curl http://localhost:9090/api/v1/status/config# 使修改后的配置生效curl -XPOST http://localhost:19908/-/reload

4、强行关闭 Prometheus

lsof -i:19908kill -9 pid

Centos7 安装与配置 Grafana

官网:/grafana/download

配置文件说明:/liumiaocn/article/details/104027047

Dashboards :/grafana/dashboards

安装 Grafana

wget /oss/release/grafana-7.5.3-1.x86_64.rpmsudo yum install grafana-7.5.3-1.x86_64.rpmyum clean allvim /etc/grafana/grafana.ini# 编辑http_port = 13818# 保存systemctl enable grafana-serversystemctl start grafana-server访问 ip:13818

配置数据源

访问 ip:3000,初始用户名和密码都是 admin,修改新密码后进入

1、点击 Configuration -> Add data source

2、选择 Prometheus

3、Dashboards 选择 Prometheus 2.0 Stats ,Import

4、Settings 写入 Prometheus 的 IP 和 端口,我这里写为 http://localhost:19908

5、点击 Save & Test

6、进入 Dashboards,选择 prometheus-2-0-stats,即可看到监控数据

dashboards

网址:/grafana/

服务器推荐:/grafana/dashboards/8919

Docker 推荐:/grafana/dashboards/8321

Prometheus + Grafana 监控案例

exporter 案例:https://prometheus.io/docs/instrumenting/exporters/

监控 Linux 服务器

参考: /p/7bec152d1a1f

1、被监控服务器 同步时间

yum install ntpdate -yntpdate date # 或 timedatectl

2、在被监控的机器下载与安装 node_exporter

查看最新 Release:

/prometheus/node_exporter/

cd /usr/softwarewget /prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gztar -zxvf node_exporter-1.1.2.linux-amd64.tar.gz -C /usr/local/

3、启动 node_exporter

命令启动 (不推荐):

cd /usr/local/node_exporter-1.1.2.linux-amd64nohup ./node_exporter --web.listen-address=:19918 &

启动参数:

#node_exporter监听的端口,默认是9100,若需要修改则通过此参数。--web.listen-address=":19918" #获取metric信息的url,默认是/metrics,若需要修改则通过此参数--web.telemetry-path="/metrics" #设置日志级别--log.level="info" #设置打印日志的格式,若有自动化日志提取工具可以使用这个参数规范日志打印的格式--log.format="logger:stderr"

做成系统服务并启动 (优秀教程:/yuesichiu/article/details/51485147)

# centos 7.9cat > /usr/lib/systemd/system/node_exporter.service << EOF[Unit]Description=node_exporterDocumentation=https://prometheus.io/After=network.target[Service]Type=simpleExecStart=/usr/local/node_exporter-1.1.2.linux-amd64/node_exporter --web.listen-address=:19918Restart=on-failure[Install]WantedBy=multi-user.targetEOFchmod 754 /usr/lib/systemd/system/node_exporter.servicesystemctl daemon-reload && systemctl enable node_exporter.service && systemctl start node_exporter.servicesystemctl daemon-reload && systemctl restart node_exporter.service && systemctl status node_exportersystemctl status node_exporter# ubuntu 14.04 cd /usr/local/node_exporter-1.1.2.linux-amd64nohup ./node_exporter --web.listen-address=:19918 &# ubuntu 18.04 su # 进入 rootcat > /etc/systemd/system/node_exporter.service << EOF[Unit]Description=node_exporterDocumentation=https://prometheus.io/After=network.target[Service]Type=simpleExecStart=/usr/local/node_exporter-1.1.2.linux-amd64/node_exporter --web.listen-address=:19918Restart=on-failure[Install]WantedBy=multi-user.targetEOFchmod 754 /etc/systemd/system/node_exporter.servicesystemctl daemon-reload && systemctl enable node_exporter.service && systemctl start node_exporter.servicesystemctl daemon-reload && systemctl restart node_exporter.service && systemctl status node_exportersystemctl status node_exporter

查看监控指标:

curl http://localhost:19918/metrics;# 简单的指标说明:node_boot_time: 系统启动时间node_cpu: 系统CUP使用情况node_disk_*: 磁盘ionode_filesystem_*: 文件系统使用量node_load1: 系统负载node_memory_*: 系统内存使用量node_network_*: 网络宽带node_time: 当前系统时间go_*: node exporter中go相关指标*process_ :**node exporter自身进程相关指标

5、prometheus 的配置文件添加监控项

Centos机器 29 台:

172、173、174、175、176、177、178、179、180、181、182、183、184、185、

186、·187、188、189、190、197、198

89、91、93、94

下载的四台

Ubuntu机器 13 台:

164、165、166、168、169、170、171

85、86、87、88、90、92

cd /usr/local/prometheus-2.26.0.linux-amd64vim prometheus.yml - job_name: 'server_91'crape_interval: 8sstatic_configs:- targets: ['192.168.10.106:19918']labels:instance: Prometheus# 保存# 热重启 Prometheuscurl -XPOST http://localhost:19908/-/reload

6、导入 dashboard

Dashboards -> Manage -> Import -> mport via -> 输入8919 -> 点击 load

监控 mysql

参考:/xiangsikai/p/11289675.html

1、在被监控的mysql所在的服务器安装 mysql_export

cd /usr/softwarewget /prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gztar -zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/

2、配置 被监控机器的 mysql

mysql -u root -pCREATE USER 'mysql_exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX';GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_exporter'@'localhost';cd /usr/local/mysqld_exporter-0.12.1.linux-amd64vim .f[client]user=mysql_exporterpassword=123456

3 、启动 mysql_export

命令启动(不推荐)

cd /usr/local/mysqld_exporter-0.12.1.linux-amd64# 如需修改端口,可加参数 --web.listen-address=:9104(默认是9104)nohup ./mysqld_exporter --config.my-cnf=.f &curl http://localhost:9104/metrics

做成系统服务启动

# centos 7.9cat > /usr/lib/systemd/system/mysqld_exporter.service << EOF[Unit]Description=mysqld_exporterAfter=network.target[Service]Type=simpleExecStart=/usr/local/node_exporter-1.1.2.linux-amd64/node_exporter --config.my-cnf /usr/local/mysqld_exporter-0.12.1.linux-amd64/.f Restart=on-failure[Install]WantedBy=multi-user.targetEOFchmod 754 /usr/lib/systemd/system/mysqld_exporter.servicesystemctl daemon-reload && systemctl enable mysqld_exporter.service && systemctl start mysqld_exporter.service && systemctl status mysqld_exportersystemctl daemon-reload && systemctl restart mysqld_exporter.service && systemctl status mysqld_exportersystemctl status mysqld_exporter

4、配置 Prometheus 配置文件,并热重启

- job_name: 'mysql'static_configs:- targets: ['xxx.xxx.xx.164:9104','xxx.xxx.xx.165:9104','xxx.xxx.xx.166:9104']curl -XPOST http://localhost:19908/-/reload

5、在 Grafana 中 添加 dashboard

Dashboards -> Manage -> Import -> mport via -> 输入7362-> 点击 load

监控 redis

1、在要被监控的redis 所在的机器上下载与安装 redis_exporter

cd /usr/software/wget /oliver006/redis_exporter/releases/download/v1.20.0/redis_exporter-v1.20.0.linux-amd64.tar.gztar -zxvf redis_exporter-v1.20.0.linux-amd64.tar.gz -C /usr/local

2 、启动 redis_exporter

命令启动(不推荐)

cd /usr/local/redis_exporter-v1.20.0.linux-amd64# 如需修改端口,可加参数 --web.listen-address=:9121(默认是9121)nohup ./redis_exporter -redis.addr localhost:6379 -redis.password 123456 &curl http://localhost:9121/metrics

做成系统服务启动

# centos 7.9cat > /usr/lib/systemd/system/redis_exporter.service << EOF[Unit]Description=redis_exporterAfter=network.target[Service]Type=simpleExecStart=/usr/local/redis_exporter-v1.20.0.linux-amd64/redis_exporter -redis.addr=IP:6379 -redis.password=passwd Restart=on-failure[Install]WantedBy=multi-user.targetEOFchmod 754 /usr/lib/systemd/system/redis_exporter .servicesystemctl daemon-reload && systemctl enable redis_exporter .service && systemctl start redis_exporter .service && systemctl status redis_exporter systemctl daemon-reload && systemctl restart redis_exporter .service && systemctl status redis_exporter systemctl status redis_exporter

4、配置 Prometheus 配置文件,并热重启

- job_name: redis_exporterstatic_configs:- targets: ['xxx.xxx.xx.85:9121','xxx.xxx.xx.86:9121']curl -XPOST http://localhost:19908/-/reload

5、在 Grafana 中 添加 dashboard

Dashboards -> Manage -> Import -> mport via -> 输入763-> 点击 load

/dashboards/763/revisions

监控 kafka

1、在被监控的kafka集群所在的任意一台服务器安装 kafka_exporter

cd /usr/softwarewget /danielqsj/kafka_exporter/releases/download/v1.2.0/kafka_exporter-1.2.0.linux-amd64.tar.gztar -zxvf kafka_exporter-1.2.0.linux-amd64.tar.gz -C /usr/local/

2、启动 kafka_exporter

命令启动(不推荐)

cd /usr/local/kafka_exporter-1.2.0.linux-amd64# 如需修改端口,可加参数 --web.listen-address=:9308(默认是9308)nohup ./kafka_exporter --kafka.server=localhost:9308 &curl http://localhost:9308/metrics

做成系统服务启动

# centos 7.9cat > /usr/lib/systemd/system/kafka_exporter.service << EOF[Unit]Description=kafka_exporterDocumentation=https://prometheus.io/After=local-fs.target network-online.target network.targetWants=local-fs.target network-online.target network.target[Service]Type=simpleExecStart=/usr/local/node_exporter-1.1.2.linux-amd64/node_exporter --kafka.server=localhost:9096Restart=on-failure[Install]WantedBy=multi-user.targetEOFchmod 754 /usr/lib/systemd/system/kafka_exporter.servicesystemctl daemon-reload && systemctl enable kafka_exporter.service && systemctl start kafka_exporter.service && systemctl status node_exportersystemctl daemon-reload && systemctl restart kafka_exporter.service && systemctl status kafka_exportersystemctl status node_exporter

3、配置 Prometheus 配置文件,并热重启

- job_name: 'kafka'static_configs:- targets: ['xxx.xxx.xx.170:9308']curl -XPOST http://localhost:19908/-/reload

4、在 Grafana 中 添加 dashboard

7589、10466、11963

Dashboards -> Manage -> Import -> mport via -> 输入7589-> 点击 load

监控 Nginx

参考:

/nginx/2697.html

/xiao987334176/p/11180652.html

promethues监控nginx可选两个exporter,通过nginx_exporter主要是获取nginx-status中的内建的指标,nginx自身提供status信息,较为简单,promethues中对应的metrics也较少,想要监控更多的指标可以通过nginx-vts-exporter采集信息,依赖在编译nginx的时候添加nginx-module-vts模块来实现。

nginx virtual host traffic status模块是nginx第三方模块之一,vts提供了访问虚拟主机状态的信息,包含server,upstream以及cache的当前状态,类似于NGINX Plus 提供的在线活动监控功能。

1、安装 nginx-exporter

docker pull fish/nginx-exporterdocker run -it fish/nginx-exporter# 新开一个终端docker ps|grep nginx-exporterdocker cp 容器ID:/usr/local/bin/nginx_exporter /opt/# 执行成功则说明安装成功/opt/nginx_exporter --help# 退出容器mkdir -p /etc/nginx_exporter/bin/mv /opt/nginx_exporter /etc/nginx_exporter/bin/

2、配置 nginx

vi /etc/nginx/sites-enabled/status.confserver {listen 8011;server_name localhost;location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;}}nginx -s reload/etc/nginx/sites-enabled# curl 127.0.0.1:8011/nginx_status

3、封装为系统 service

vim /lib/systemd/system/nginx_exporter.service[Unit]Description=nginx monitorAfter=network.target[Service]ExecStart=/etc/nginx_exporter/bin/nginx_exporter -nginx.scrape_uri="http://127.0.0.1:8011/nginx_status"ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5TimeoutStopSec=5KillMode=mixed[Install]WantedBy=multi-user.targetsystemctl daemon-reloadsystemctl enable nginx_exporter.servicesystemctl start nginx_exporter.servicenetstat -anpt|grep nginx_exportecurl 127.0.0.1:9113/metrics

4、配置 Prometheus

cd /usr/local/prometheus-2.26.0.linux-amd64vim prometheus.yml - job_name: nginx_exporterstatic_configs:- targets: ['192.168.10.139:9113']# prometheus 热重启curl -XPOST http://localhost:19908/-/reload

监控业务

Prometheus 查询

http_requests_totalhttp_requests_total{code="200", handler="query"}http_requests_total{code~="2xx"}http_requests_total > 100http_requests_total[5m]count(http_requests_total)sum(http_requests_total)avg(http_requests_total)topk(3, http_requests_total)irate(http_requests_total[5m])

参考

/ywd1992/article/details/85989259

prometheus 中文指南:https://yunlzheng.gitbook.io/prometheus-book/

Prometheus 官方文档:https://prometheus.io/docs/introduction/overview/

Grafana 官方文档:/

全面学习Prometheus:http://dockone.io/article/5716?tdsourcetag=s_pcqq_aiomsg

Prometheus 非官方中文手册:/read/prometheus-manual/README.md

Prometheus 实战:https://songjiayang.gitbooks.io/prometheus/content/

prometheus-book:https://yunlzheng.gitbook.io/prometheus-book/

Grafana的一些实用技巧:/a/1190000013565079

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。