prometheus+Grafana搭建主机/容器监控

目录

监控逻辑图

镜像准备

运行镜像文件

启动node-exporter

启动cadvisor

启动prometheus容器

启动grafana容器


 

监控逻辑图

prometheus+Grafana搭建主机/容器监控_第1张图片

 

镜像准备

docker pull prom/node-exporter  # 监控主机基础信息的镜像

docker pull google/cadvisor  # 监控主机容器信息的镜像

docker pull prom/prometheus  # 收集主机信息的镜像

docker pull grafana/grafana  # 展示主机信息的镜像

 

运行镜像文件

启动node-exporter

1.1启动命令

docker run -d -p 9100:9100 \

  -v "/proc:/host/proc:ro" \

  -v "/sys:/host/sys:ro" \

  -v "/:/rootfs:ro" \

  --network="bridge" \

  prom/node-exporter

1.2检查启动情况

等待几秒钟,查看端口状态

netstat -anpt

prometheus+Grafana搭建主机/容器监控_第2张图片

 

 

访问http://192.168.241.137:9100/metrics 查看接口是否有数据,IP为部署的主机的地址,

prometheus+Grafana搭建主机/容器监控_第3张图片

 

启动cadvisor

2.1启动命令

docker run -d \

  --volume=/:/rootfs:ro \

  --volume=/var/run:/var/run:ro \

  --volume=/sys:/sys:ro \

  --volume=/var/lib/docker/:/var/lib/docker:ro \

  --volume=/dev/disk/:/dev/disk:ro \

  --publish=9200:8080 \

  --detach=true \

  --name=cadvisor \

  google/cadvisor

 

注:网上资料有以下说明,但是感觉跟上面简略版的效果没啥区别:

1、在 Ret Hat, CentOS, Fedora 等发行版上需要传递如下参数,因为 SELinux 加强了安全策略:

--privileged=true

设置为true之后,容器内的root才拥有真正的root权限,可以看到host上的设备,并且可以执行mount;否者容器内的root只是外部的一个普通用户权限。

2、由于cadvisor需要通过socket访问docker守护进程,在CentOs和RHEL系统中需要这个这个选项。

--volume=/cgroup:/cgroup:ro

先附复杂的启动脚本以备不时之需:

docker run -d \

  --volume=/:/rootfs:ro \

  --volume=/var/run:/var/run:ro \

  --volume=/sys:/sys:ro \

  --volume=/var/lib/docker/:/var/lib/docker:ro \

  --volume=/dev/disk/:/dev/disk:ro \

  --publish=9200:8080 \

  --volume=/cgroup:/cgroup:ro \

  --detach=true \

  --privileged=true \

  --name=cadvisor \

  --network="bridge" \

  -v "/etc/localtime:/etc/localtime" \

  google/cadvisor

 

2.2检查启动情况

访问http://192.168.241.137:9200/containers/ 查看cadvisor图形化界面,该数据可查看不可存储

prometheus+Grafana搭建主机/容器监控_第4张图片

访问http://192.168.241.137:9200/metrics查看cadvisor json格式数据

prometheus+Grafana搭建主机/容器监控_第5张图片

 

启动prometheus容器

3.1新建目录prometheus

mkdir /opt/prometheus

cd /opt/prometheus/

 

3.2编辑配置文件prometheus.yml

vi prometheus.yml

 

3.3编辑内容

global:

  scrape_interval:     60s

  evaluation_interval: 60s



scrape_configs:

  - job_name: prometheus

    static_configs:

      - targets: ['localhost:9090']

        labels:

          instance: prometheus



  - job_name: linux

    static_configs:

      - targets: ['192.168.241.128:9100']

    static_configs:

      - targets: ['192.168.241.137:9100']



  - job_name: docker

    static_configs:

      - targets: ['192.168.241.128:9200']

    static_configs:

      - targets: ['192.168.241.137:9200']

 

 

注意:修改IP地址,这里的IP是起了node-exporte容器的服务器地址,监控多个配置多个。

prometheus+Grafana搭建主机/容器监控_第6张图片

关于监控多台服务器的配置:

prometheus+Grafana搭建主机/容器监控_第7张图片

 

3.4启动prometheus命令

docker run  -d \

  -p 9090:9090 \

  -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \

  prom/prometheus

prometheus+Grafana搭建主机/容器监控_第8张图片

 

3.5检查启动情况

访问url:http://xxx.xxx.xxx.xxx:9090/graph 查看配置是否有生效,IP为生成prometheus的容器服务器的IP地址;然后访问targets,url如下:http://xxx.xxx.xxx.xxx:9090/targets state为up状态

prometheus+Grafana搭建主机/容器监控_第9张图片

注:

1、如果此处监控的主机的state为DOWN始终无法UP,那就关闭下被监控主机的防火墙,

暂时关闭防火墙:systemctl stop firewalld;

鉴于客户生产环境不可能关闭防火墙运行,可以通过防火墙永久放出9100、9200、9090端口:

放开9100、9200端口操作在被监控主机操作:

firewall-cmd --add-port=9100/tcp --permanent

firewall-cmd --add-port=9100/udp --permanent

firewall-cmd --add-port=9200/tcp --permanent

firewall-cmd --add-port=9200/udp --permanent

firewall-cmd --reload

 

放开9090端口操作在prometheus容器主机操作:

firewall-cmd --add-port=9090/tcp --permanent

firewall-cmd --add-port=9090/udp --permanent

firewall-cmd --reload

开放端口后记得重载防火墙配置firewall-cmd --reload

 

2、如果在容器运行过程中修改防火墙配置会导致容器不能识别新的的防火墙配置,导致prometheus不能识别到被监控主机state为DOWN,此时需要重启docker服务systemctl restart docker,然后重启之前的docker容器。

 

启动grafana容器

4.1新建空文件夹grafana-storage,用来存储数据

mkdir /opt/grafana-storage

设置权限,因为grafana用户会在这个目录写入文件,直接设置777

chmod 777 -R /opt/grafana-storage

 

4.2启动grafana命令

docker run -d \

  -p 3000:3000 \

  --name=grafana \

  -v /opt/grafana-storage:/var/lib/grafana \

  grafana/grafana

 

4.3检查启动情况

访问url:http://xxx.xxx.xxx.xxx:3000/ 这个IP是起了grafana容器的IP。

这里跟Prometheus是部署在同一主机的,一般情况下Prometheus+Grafana是部署在同一服务器,去监控其他服务器,或者本地服务器。

 

4.4登录账号

默认账号:admin 密码:admin

prometheus+Grafana搭建主机/容器监控_第10张图片

   首次登录要求重置密码,可以重置,也可改为默认admin方便使用,根据实际需要而定。

 

4.5配置数据源

settings-Data Sources

prometheus+Grafana搭建主机/容器监控_第11张图片

点击Add data source,选择prometheus

Name使用默认Prometheus,不建议修改,

URL配置Prometheus容器运行的IP:9090;

Access选择Browser,

配置完,点击下面的Save & Test,如果出现绿色的,数据源配置成功

 

prometheus+Grafana搭建主机/容器监控_第12张图片

prometheus+Grafana搭建主机/容器监控_第13张图片

4.6配置看板

添加按钮+-Import

  1. 通过dashboard的ID号直接导入,Liunx主机的监控模板:8919;Docker主机监控模板:193
    2、或者直接官网下载对应的dashboard文件导入即可:https://grafana.com/grafana/dashboards/8919/revisions

导入dashboard的时候可以修改看板的名字,还需要配置数据源。

prometheus+Grafana搭建主机/容器监控_第14张图片

prometheus+Grafana搭建主机/容器监控_第15张图片

展示效果

prometheus+Grafana搭建主机/容器监控_第16张图片

prometheus+Grafana搭建主机/容器监控_第17张图片

注:

  1. 部分看板可能会没有数据,原因有3:
    一是本身就没有数据,可以通过调整显示的时间跨度来验证;
    二是本地时间与服务器时间不一致导致,可以通过同步两地时间来修复;
    三是看板的查询Sql有误,导致查询不到数据,有能力可以修改下Sql修复。

你可能感兴趣的:(技术随笔,docker,centos,服务器,运维,devops)