prometheus+ Grafana监控全家桶

在调研监控工具,之前一直用的zabbix很平稳(从没出过问题),监控内容大概有系统级别的cpu、内存、硬盘之类的, 也有服务的运行情况、elasticsearch、hive、kafka的lag等等,但有几个问题没法解决:

1、zabbix没法监控flink(虽然可以通过api调用方式,但flink指标有几百个一个一个加,并且zabbix机制为一个一个指标取的,极其麻烦和低效)
2、jvm级别的es、spring、kafka等运行情况不好获取
3、取kafka数据时,我们有n多topic对应又有n多groupid来消费,如果要取一遍所有信息,zabbix也是只能一个一个取(当然后边发现有模板的方式也可以,但如果增加一个也要手动加)
详细对比可以参考网上文章,说的很详细 http://dockone.io/article/10437

我理了下对于我们这种纯java+大数据场景,并且设备一般都在客户环境不能上网,随时会断电,情况下的优劣势
监控工具优势劣势
zabbix稳定、进程少(一个server+agent搞定、文档齐全、所有操作界面都可以配、支持action动作触发(这个很重要)对于docker、flink、hive等动态运行的场景支持不好(也可以自定义脚本搞定)
prometheus部署简单、社区插件比较多(各种exporter),比较多的官方直接支持每增加一个组件的监控就需要一个exporter独立进程、预警action等页面不可配(本身页面功能特简陋)


放个普罗米修斯的架构图
其中:

Prometheus Server: 用数据的采集和存储,PromQL查询,报警配置。
Push gateway: 用于批量,短期的监控数据的汇报总节点。
Exporters: 各种汇报数据的exporter,例如汇报机器数据的node_exporter,汇报MondogDB信息的 MongoDB_exporter 等等。
Alertmanager: 用于高级通知管理。

采集数据的主要流程如下:

1. Prometheus server 定期从静态配置的主机或服务发现的 targets 拉取数据(zookeeper,consul,DNS SRV Lookup等方式)

2. 当新拉取的数据大于配置内存缓存区的时候,Prometheus会将数据持久化到磁盘,也可以远程持久化到云端。

3. Prometheus通过PromQL、API、Console和其他可视化组件如Grafana、Promdash展示数据。

4. Prometheus 可以配置rules,然后定时查询数据,当条件触发的时候,会将告警推送到配置的Alertmanager。

5. Alertmanager收到告警的时候,会根据配置,聚合,去重,降噪,最后发出警告。

prometheus+ Grafana监控全家桶

开始prometheus安装

他本身是用go写的,所以需要安装个go环境,

安装go:

yum install epel-release

yum install golang

安装普罗米修斯

下载 https://github.com/prometheus/prometheus/releases/tag/v2.26.0

tar zxvf prometheus-2.26.0.linux-amd64.tar.gz && cd prometheus-2.26.0.linux-amd64

./prometheus --config.file=prometheus.yml

安装grafana

vim /etc/yum.repos.d/grafana.repo

[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

开始安装: yum install grafana -y

systemctl start grafana-server

systemctl enable grafana-server

这时候应该能访问grafana页面了: http://ip:3000  用户名密码 admin/admin

然后导入prometheus数据源

prometheus+ Grafana监控全家桶

安装node_exporter

下载: https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
tar zxvf node_exporter-1.1.2.linux-amd64.tar.gz && cd node_exporter-1.1.2.linux-amd64
./node_exporter   # 启动node_exporter,默认是9100端口

修改普罗米修斯配置文件加入node_exporter数据获取

先关掉prometheus进程 ,修改 prometheus.yml ,在后边增加如下配置:

- job_name: 'node_exporter_local'
    static_configs:
    - targets: ['127.0.0.1:9100']

修改完之后重新执行 ./prometheus --config.file=prometheus.yml

prometheus+ Grafana监控全家桶

grafana 导入系统监控图

prometheus+ Grafana监控全家桶

到grafana网站找到最新的一个node exporter图,点进去,可以看到get this dashboard的id,然后导入,数据源选择prometheus就可以看到效果了

https://grafana.com/grafana/dashboards/8919

prometheus+ Grafana监控全家桶

增加es监控

[https://github.com/justwatchcom/elasticsearch_exporter](https://github.com/justwatchcom/elasticsearch_exporter)

tar zxvf elasticsearch_exporter-1.1.0.linux-amd64.tar.gz
cd elasticsearch_exporter-1.1.0.linux-amd64
# 启动es_exporter 默认监听端口为9114
./elasticsearch_exporter --es.uri="https://用户名:密码@10.0.81.101:9200" --es.ssl-skip-verify

再修改prometheus.yml  增加如下配置:
- job_name: 'es监控'
    static_configs:
    - targets: ['127.0.0.1:9114']

重新执行: ./prometheus --config.file=prometheus.yml

prometheus+ Grafana监控全家桶

在grafana中导入elasticsearch监控模板: https://github.com/justwatchcom/elasticsearch_exporter/blob/master/examples/grafana/dashboard.json

导入选择json格式即可

prometheus+ Grafana监控全家桶

增加kafka监控

下载: [https://github.com/danielqsj/kafka_exporter/releases](https://github.com/danielqsj/kafka_exporter/releases)

tar zxvf kafka_exporter-1.3.0.tar.gz

cd kafka_exporter-1.3.0

#作者最新版忘了把编译后的文件放进去,所以需要先执行编译

go build # 生成一个kafka_exporter的可执行文件

./kafka_exporter --tls.enabled --tls.ca-file="/etc/ca-cert" --tls.cert-file="/etc/kafka.client.pem" --tls.key-file="/etc/kafka.client.key" --tls.insecure-skip-tls-verify --kafka.server=10.0.81.22:9091 --log.level="debug"

修改 prometheus.yml 增加以下内容,还是一样 重新执行: ./prometheus --config.file=prometheus.yml

- job_name: 'kafka监控'
    static_configs:
    - targets: ['127.0.0.1:9308']

grafana导入kafka模板: id为7589

prometheus+ Grafana监控全家桶

监控flink

我这里用的是flink1.12.0 安装在/opt/目录下

flink在发布时自带了prometheus的jar包,先复制prometheus的jar包到flink的lib目录下   cp /opt/flink-1.12.0/plugins/metrics-prometheus/flink-metrics-prometheus-1.12.0.jar /opt/flink-1.12.0/lib/

修改配置增加监控数据:/opt/flink-1.12.0/conf/flink-conf.yaml

metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: 127.0.0.1
metrics.reporter.promgateway.port: 9091
metrics.reporter.promgateway.jobName: myJob
metrics.reporter.promgateway.randomJobNameSuffix: true
metrics.reporter.promgateway.deleteOnShutdown: false

修改完成之后重启flink,确保任务都正常运行

修改 prometheus.yml 增加以下内容,还是一样 重新执行: ./prometheus --config.file=prometheus.yml

- job_name: 'flink监控'
    static_configs:
    - targets: ['127.0.0.1:9091']

grafana导入模板:  https://grafana.com/grafana/dashboards?search=flink 

安装pushgateway: https://github.com/prometheus/pushgateway/releases/tag/v1.4.0

wget https://github.com/prometheus/pushgateway/releases/download/v1.4.0/pushgateway-1.4.0.linux-amd64.tar.gz

tar zxvf pushgateway-1.4.0.linux-amd64.tar.gz
cd pushgateway-1.4.0.linux-amd64
./pushgateway

prometheus+ Grafana监控全家桶

prometheus+ Grafana监控全家桶
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值