Prometheus+consul+alertmanager监控redis、Kafka为例

一、Prometheus

选择文件安装路径:本人喜欢在 opt下创建monitor 文件夹在/opt/monitor文件夹下面创建安装文件的文件夹进行安装相应的中间件

1、下载两种方法

(1)、使用 wget 下载 Prometheus 的安装包

安装路径:在/opt/monitor/prometheus下载并解压Prometheus文件
​
wget https://github.com/prometheus/prometheus/releases/download/v1.6.2/prometheus-2.1.0.linux-amd64.tar.gz

(2)、自己手动下载通过Xftp7放到安装/opt/monitor/prometheus文件夹下

2、解压

到安装目录下进行解压
​
tar -xvzf prometheus-2.1.0.linux-amd64.tar.gz

3、修改prometheus.yml

路径切换到:/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64#
​
执行命令:vim prometheus.yml

 

static_configs:
      - targets: ['192.168.113.244:9090']

4、启动prometheus

进入/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64#文件夹下启动
​
执行启动命令:./prometheus &
​
后台启动:nobup ./prometheus
​

5、查看是否启动成功

查看是否存在进程
   ps -ef|grep prometheus

6、浏览器访问 IP:9090(192.168.113.244:9090)

安装成功!!!

二、redis_exporter和kafka_exporter

Prometheus监控redis需要通过redis_exporter来获取redis的相关信息

1、下载redis_exporter和 kafka_exporter组件包

1、安装路径:在/opt/monitor/redis_exporter下载并解压redis_exporter文件
   手动下载redis_exporter-v1.24.0.linux-amd64.tar.gz
   下载地址:https://github.com/oliver006/redis_exporter/releases
   
2、安装路径:在/opt/monitor/kafka/kafka_exporter下载并解压kafka_exporter文件
   下载kafka_exporter-1.2.0.linux-amd64.tar.gz
   下载地址:https://github.com/danielqsj/kafka_exporter
   linux命令 : 
   wget https://github.com/danielqsj/kafka_exporter/releases/download/v1.2.0/kafka_exporter-1.2.0.linux-amd64.tar.gz

2、运用xftp移入安装文件夹下并解压

解压redis_exporter :tar -zxvf redis_exporter-v1.24.0.linux-amd64.tar.gz
解压Kafka——exporter:tar -zxvf kafka_exporter-1.2.0.linux-amd64.tar.gz

3、启动redis_exporter和kafka_exporter

(1)、redis_exporter

进入/opt/monitor/redis_exporter/redis_exporter-v1.24.0.linux-amd64#目录下执行下方命令启动

nohup ./redis_exporter -web.listen-address :监听端口 -redis.addr IP + 端口 -redis.password 密码 &    #其他机器redis的IP+端口
​
#切换不同的监听端口
nohup ./redis_exporter -web.listen-address :9122 -redis.addr 39.98.125.18:6379  -redis.password admin &
nohup ./redis_exporter -web.listen-address :9123 -redis.addr 192.168.113.238:6380  -redis.password admin &
​

(2)、kafka_exporter

进入/opt/monitor/kafka/kafka_exporter/kafka_exporter-1.2.0.linux-amd64#目录下执行下方命令启动

#一个kafka可监控多个kafka(启动命令)
nohup ./kafka_exporter --kafka.server=192.168.113.98:9092 --web.listen-address=:9308 &
nohup ./kafka_exporter --kafka.server=192.168.113.244:9092 --web.listen-address=:9309 &
​

4、查看是否启动成功

查看是否存在进程
   ps -ef|grep redis_exporter
   ps -ef|grep kafka_exporter

附加:jmx方式监控Kafka

下载jmx_prometheus_javaagent-0.6.jar和kafka-0-8-2.yml
linux命令 :
wget https://raw.githubusercontent.com/prometheus/jmx_exporter/master/example_configs/kafka-0-8-2.yml
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.6/jmx_prometheus_javaagent-0.6.jar

1.1 jmx_prometheus_javaagent和kafka.yml的配置使用

在linux安装的kafka文件的bin目录下打开kafka-server-start.sh 文件的第一二行添加如下两行代码代码:

export JMX_PORT="9999"
export KAFKA_OPTS="-javaagent:/opt/monitor/kafka/jmx_prometheus/jmx_prometheus_javaagent-0.6.jar=9991:/opt/monitor/kafka/jmx_prometheus/kafka-0-8-2.yml"

其中 JMX_PORT="9999"固定配置jmx的端口号,KAFKA_OPTS="-javaagent:..."冒号之后是jmx_prometheus_javaagent jar包的路径,=9991是javaagent的端口号,

冒号之后是kafka-0-8-2.yml的文件路径

然后重启kafka。访问 http://localhost:9991/metrics 如果可以看到各种指标了,则配置生效。

三、下载consul、consul-template并安装

(一)、consul

1首先去官网下载consul

https://www.consul.io/downloads.html        选择linux版本即可 然后上传到linux服务器

2、解压

(1)、创建文件夹:在/opt/monitor/下创建文件夹consul

(2)、运用xftp移入安装文件夹下并解压

unzip consul_1.9.6_linux_amd64.zip

3、操作

在解压目录使用指令,也可以像配置JDK一样配置环境变量,在任意位置启动

以下命令都是在/opt/monitor/consul文件目录下操作

./consul   获取指令帮助
​
./consul --version  查看版本
​
启动命令
nohup ./consul agent -dev -ui -node=consul-dev -client=192.168.113.244 &     # 192.168.113.244 是我的ip 自行更换为自己实际的

4、查看是否成功

(1)、命令查看进程

ps -ef|grep consul

(2)、页面访问:http://192.168.113.244:8500/ 显示页面表明成功!!!(IP换成自己的)

 

(二)、consul-template

1、下载consul-template

https://releases.hashicorp.com/consul-template/0.26.0/

2、解压

(1)、创建文件夹:在/opt/monitor/consul下创建文件夹consul-template

(2)、运用xftp移入安装文件夹下并解压

unzip consul-template_0.26.0_linux_amd64.zip

3、创建consul-template的配置文件

在/opt/monitor/consul/consul-template文件夹下创建配置文件

vim consul-template.conf
#将下面配置文件复制到consul-template.conf内,并做修改
​
log_level = "warn"
syslog {
# This enables syslog logging.
enabled = true
# This is the name of the syslog facility to log to.
facility = "LOCAL5"
}
consul {
# auth {
# enabled = true
# username = "test"
# password = "test"
# }
address = "192.168.113.244:8500"                                        #修改成自己consul的IP+端口
# token = "abcd1234"
retry {
enabled = true
attempts = 12
backoff = "250ms"
# If max_backoff is set to 10s and backoff is set to 1s, sleep times
# would be: 1s, 2s, 4s, 8s, 10s, 10s, ...
max_backoff = "3m"
}
}
template {
source = "/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64/templates/prometheus-discovery.ctmpl"    #模板渲染的路径
destination = "/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64/conf.d/prometheus-discovery.json"   #存储实例的文件路径文件需要自己创建
command = ""
command_timeout = "60s"
backup = true
left_delimiter = "{$"
right_delimiter = "$}"
wait {
min = "2s"
max = "20s"
}
}

4、创建prometheus-discovery.ctmpl和prometheus-discovery.json

在/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64文件下创建conf.d和templates

(1)、进入conf.d下输入

vim prometheus-discovery.json

在内输入以下内容(在这里我定义了一个自己的prometheus:192.168.113.244:9090)

[
{
"targets": ["192.168.113.244:9090"],                        #这个是监控的IP和端口
"labels": {
"instance": "prometheus:192.168.113.244:9090",              #监控的实例名称    
}
}
]
​

(2)、进入templates下输入

vim prometheus-discovery.ctmpl

在内输入以下内容

[
{$ range tree "prometheus/instance" $}                          #事先定义好了在consul上面创建监控实例的路径了
{
"targets": ["{$ .Value $}"],
"labels": {
"instance": "{$ .Key $}"
}
},
{$ end $}
​
]

5、服务启动

在/opt/monitor/consul/consul-template目录下启动

启动consul-template服务,指定配置文件。
​
#./consul-template -config ./consul-template.conf

(三)、修改Prometheus配置文件并重启Prometheus服务,在192.168.113.244:9090查看

1、修改配置文件

进入/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64文件夹下修改 prometheus.yml文件

  - job_name: 'node-discorvery' 
    file_sd_configs:
      - files: ['/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64/conf.d/targets.json'] 
        refresh_interval: 5s 

2、重启Prometheus

在/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64#路径下启动Prometheus 并在浏览器上访问IP+端口(192.168.113.244:9090)

安装成功!!! 并成功启动 !!!

3、在consul上面添加节点信息

 

上述配置好了就可以在Prometheus上查看实例的存在,并且可监控到信息

(四)、查看监控信息

在浏览器地址栏上面直接访问IP+端口

redis_exporter在http://192.168.113.244:9121/metrics/查看

kafka_exporter在http://192.168.113.244:9308/metrics/查看

或者点击

 

监控信息显示:

 

四、alertmanager

alertmanager用于发送告警信息

1、下载alertmanager组件包

安装路径:在/opt/monitor/alertmanager下载并解压alertmanager文件
​
手动下载alertmanager-0.22.2.linux-amd64.tar.gz
​
下载地址:https://github.com/prometheus/alertmanager/releases
​

2、运用xftp移入安装文件夹下并解压

tar -zxvf alertmanager-0.22.2.linux-amd64.tar.gz

3、更改alertmanager.yml文件

在/opt/monitor/alertmanager/alertmanager-0.22.2.linux-amd64#下执行

vim alertmanager.yml

修改配置文件如下:

 

- url: 'http://192.168.103.244:9003/inputKafkaJson/AIOPS-ZJK-REDIS-0107 ' 

4、在Prometheus.yml文件下配置

路径切换到:/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64#执行

vim prometheus.yml

修改配置文件如下:

 

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['192.168.113.244:9093']   #更改成自己的Alertmanager的 IP+端口号      # - alertmanager:9093

Prometheus配置文件修改需要重新启动服务!!!

5、启动alertmanager

在/opt/monitor/alertmanager/alertmanager-0.22.2.linux-amd64#目录下启动

./alertmanager &

6、查看alertmanager是否启动成功

查看是否存在进程   ps -ef|grep alertmanager

五、设置告警规则rules

将告警规则统一放入/opt/monitor/prometheus/rules文件下

例如:

 

在/opt/monitor/prometheus/prometheus-2.1.0.linux-amd64文件夹下prometheus.yml文件下面进行配置:

rule_files:    - "/opt/monitor/prometheus/rules/*.yml"    # *.yml代表rules下面的所有的yml文件都会加载

配置文件修改需要重新启动Prometheus服务!!!

六、Kafka和redis安装省略

......

七、整体流程疏通

1、确保 redis 、redis_exporter、prometheus、alertmanager进程启动状态2、redis_exporter采集redis信息被prometheus监控,并将属性值和告警规则进行匹配,出发告警通过alertmanager将告警信息发送到后端3、后端事件推送接口获取告警信息并将其告警信息推送导Kafka的topic中  (单点可以不定义主题,要是有集群需要自己手动定义主题,并将信息存入定义主题内)4、消费者获取Kafka事件topic内得告警信息进行消费,信息为json格式,处理后将告警信息发送导前端进行告警通知

八、验证告警

单点redis

可以在告警规则上面临时添加一个告警规则来作为测试告警(我添加的是 - 实例连接太少,单点redis只连接一个实例,一定会告警)或者更改规则

例如:切换到/opt/monitor/prometheus/rules下进入alertmanager_rules.yml添加如下告警规则

#添加的告警规则- alert: 实例连接太少      expr: redis_connected_clients < 5      for: 5m      labels:        severity: warning      annotations:        summary: "实例连接太少 (instance {{ $labels.instance }})"        description: "Redis实例连接少 (数目 > 5)\\n  VALUE = {{ $value }}\\n  LABELS: {{ $labels }}"

告警规则添加后需要到 /opt/monitor/prometheus/prometheus-2.1.0.linux-amd64#重启Prometheus,Prometheus重启成功后,将后 serverApplication、EventApplication、BusinessApplication和collectorApplication这几个启动类启动,前端也启动起来,首先在CollectorApplication的控制台会有推送kafka主题:redis_event,数据 {json数据} ,表明数据告警发送到后端接收成功,并且推送到Kafka内,在前端页面中 --智能监控 --虚拟化监控下会产生告警信息,如产生说明成功!!!

注意:更改任何配置文件都需要先将原服务关闭后重启相应的服 务!!!

九、下载grafana

1、安装

2、导入模板

3、配置相关信息

 

注意:grafana中Memory Usage图表存在的问题

Memory Usage这个图表,一直是N/A。是因为redis_memory_max_bytes 获取的值为0

导致 redis_memory_used_bytes / redis_memory_max_bytes 结果不正常。

解决办法:

将redis_memory_max_bytes 改为服务器的真实内存大小 (自己设置系统内存的百分之多少) ------>在告警规则中也要用此办法解决一下啊!!!

查看服务器内存大小:  cat /proc/meminfo |grep MemTotal            查出来的内存是KB转换称bytes : 1kb = 1024 byte

所以我更改计算公式

redis_memory_used_bytes{instance=~"$instance"}  / 8193428

这是我在配置过程中解决问题的办法,若有更好的办法可以使用,并且也可以及时分享出来供大家参考学习!!!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值