東川印記

一本東川,笑看爭龍斗虎;寰茫兦者,度橫佰昧人生。

Prometheus与Grafana环境配置

2022年10月30日星期日



基本架构

收集数据 -> 处理数据 -> 展示数据

                                    -> 数据报警

对应到Prometheus结构中为

业务数据源NodeExporter -> Prometheus Server -> WebUI(Grafana)

                                                                             ->报警管理器 AlertManager

1,安装 Node Exporter

[root@SENRSL04 senrsl]# docker pull prom/node-exporter

docker run -d --name node-exporter \
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro" \
  --net="host" \
  prom/node-exporter

9100端口冲突

docker run -d --name node-exporter \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
--net=host \
prom/node-exporter \
--web.listen-address=0.0.0.0:9091 \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

测试

http://think4.test.com:9091/metrics



2,安装Prometheus Server

https://prometheus.io/download/

时序数据库,用于存储和查询监控数据

docker安装

[root@SENRSL04 senrsl]# docker pull prom/prometheus

[root@SENRSL04 senrsl]# docker run -d -p 9090:9090 --name prometheus --net=host -v /home/senrsl/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

 [root@SENRSL04 senrsl]# cat prometheus/prometheus.yml
# Prometheus全局配置项
global:
  scrape_interval:     15s # 设定抓取数据的周期,默认为1min
  evaluation_interval: 15s # 设定更新rules文件的周期,默认为1min
  scrape_timeout: 15s # 设定抓取数据的超时时间,默认为10s
  external_labels: # 额外的属性,会添加到拉取得数据并存到数据库中
   monitor: 'codelab_monitor'


# # Alertmanager配置
# alerting:
#  alertmanagers:
#  - static_configs:
#    - targets: ["localhost:9093"] # 设定alertmanager和prometheus交互的接口,即alertmanager监听的ip地址和端口
     
# # rule配置,首次读取默认加载,之后根据evaluation_interval设定的周期加载
# rule_files:
#  - "alertmanager_rules.yml"
#  - "prometheus_rules.yml"

# scape配置
scrape_configs:
  - job_name: prometheus
    # 覆盖global的采样点,拉取时间间隔5s
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
 
  - job_name: node-exporter
    static_configs:
      - targets: ['localhost:9091']
        labels:
          instance: localhost
# - job_name: 'prometheus' # job_name默认写入timeseries的labels中,可以用于查询使用
#   scrape_interval: 15s # 抓取周期,默认采用global配置
#   static_configs: # 静态配置
#   - targets: ['localhost:9091'] # prometheus所要抓取数据的地址,即instance实例项

# - job_name: 'user-module' #个人测试用接口
#   static_configs:
#   - targets: ['think4.test.com:9100']

[root@SENRSL04 senrsl]#


访问

http://think4.test.com:9090/

http://think4.test.com:9090/metrics


测试联通了node-exporter

http://think4.test.com:9090/graph 查询 up 并执行

返回了两条up记录

up{instance="localhost"job="node-exporter"}
1
up{instance="localhost:9090"job="prometheus"}

后面的1代表应用存活

查询内存使用情况,输入 node_memory_Active_bytes

可以显示图形

配图1

3,安装Grafana

docker run -d \
  -p 3000:3000 \
  --name=grafana \
  -v /home/senrsl/prometheus/grafana:/var/lib/grafana \
  grafana/grafana

或者官方给的demo是

sudo docker run -d -i -p 3000:3000 \
-e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
-e "GF_SECURITY_ADMIN_PASSWORD=admin" \
--net=host \
grafana/grafana

GF_SERVER_ROOT_URL:docker的宿主机的ip地址
GF_SECURITY_ADMIN_PASSWORD:设置admin用户的登陆密码

http://think4.test.com:3000/login

默认用户名密码admin

4,grafana配置Prometheus

添加Prometheus plugin,然后配置数据源。。。。

配图2

然后+Dashboard看板   +Panel图表

空白的panel,左下选择数据源为Prometheus134,添加Metric业务指标公式,可以Query inspector和Run queries来测试。之后右侧 设置Title为CPU使用率,保存。

配图3

5,grafana metric指标

metric 指标,kv存储。

指标类型:

    - gauges: 计量器。 某个key的value为特定值。 如Guages(haha, 3), 则haha这个key对应的value即为3.
   - counter:  计数器。某个key的value进行变更。如Counter(haha, +1), 则haha这个key对应的value从3变成了4.
   - meters:   度量某件事情发生的速率。如,1分钟内调用Meter(haha)5次,则haha这个key对应的value为5/min
   - histograms: 柱状图。  Histogram统计数据的分布情况。比如1分钟内调用了很多次update(hehe, x), 则会根据x的计算分布。
   - timer: Meters & Histogram 的结合。
 

metrics,底层使用的可以是opentsdb
opentsdb是一个时间序列的数据库。就是一段时间内某些特定指标量的一些列数据点。


5,grafana alert

配置报警功能,看起来也用了flowable

也可以直接在创建panel的时候添加告警。


6,grafana模板中心

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

找到合适的模板,复制ID,grafa导入ID即可。

配图4

这是别人封装好的UI,很全

配图5

配图6

删了个没用到的datasource就报错了。。。。

TypeError: t.map is not a function


7,springboot actuator

http://think4.test.com:8061/actuator

基于actuator

添加

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <scope>runtime</scope>
</dependency>

启动,访问

http://localhost:8061/actuator/prometheus

配图7

然后grafana import 4701.

查看Prometheus已启动的target

http://think4.test.com:9090/targets

可以看到Prometheus.yml文件中配置的target信息,添加springboot的actuator

  - job_name: user-module
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['think4.test.com:8061']
然后重启Prometheus

确认启动起来了

配图8

然后重新import 4701,刷新一下页面,就显示了。

配图9

可以自定义指标,比如可以配置显示用户增长、登录、订单成交量等等有用的数据。

2022年10月30日22:35:34


--
senRsl
2022年10月28日15:14:34 

没有评论 :

发表评论