配置VMware环境
可以参考这一篇 http://t.csdn.cn/ubQQD 文章来对虚拟机环境进行初始化。
配置docker
可以参考这一篇 http://t.csdn.cn/VUk0J 文章来对docker进行安装。定位到标题中的 安装docker-ce 这一章来安排。
注意:别忘了对节点进行初始化。 针对节点初始化可以参考这一篇 http://t.csdn.cn/VUk0J 。定位到标题中的 初始化 这一章来安排。
部署 prometheus
docker pull prom/prometheus
docker run -itd --name=prometheus --restart=always -p 9090:9090 prom/prometheus
验证安装
docker ps
# 老天保佑我, 容器状态可不能是反复`restaring`!!!啊
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c53238641481 prom/prometheus "/bin/prometheus --c…" 19 seconds ago Up 18 seconds 0.0.0.0:9090->9090/tcp prometheus
安装Grafana
方法一:
针对与宿主机目录挂载到docker容器后的访问权限问题,我们授予这个容器root权限。
# docker run 运行
# --name 容器的名称
# -p 指定容器的端口映射
# -v:挂载宿主机目录和 docker容器中的目录 $PWD/grafana-storage 本地宿主机绝对目录;/var/lib/grafana 容器目录(将容器目录挂载到本地)
# --restart 容器重启策略 no不重启,always 退出时总是重启
# grafana/grafana 选择镜像名称启动容器(默认镜像后面会加latest 如果拉取自己创建的镜像后面要加自己的版本号)
docker pull grafana/grafana
docker run -itd --name=grafana \
--restart=always \
-p 3000:3000 \
-v $PWD/grafana-storage:/var/lib/grafana -u root \
grafana/grafana
方法二:
# 下载grafana镜像(以grafana6.7.4为例)
docker pull grafana/grafana:6.7.4
以下命令:命名容器为grafana,后台运行;映射宿主机3000端口到容器3000端口;grafana的配置文件为 /etc/grafana/grafana.ini ,可以进入容器进行修改,或者挂出到宿主机。
# 启动grafana服务
docker run --name=grafana -d \
-p 3000:3000 \
grafana/grafana:6.7.4
验证安装
docker ps
# 老天保佑我, 容器状态可不能是反复`restaring`!!!啊
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2200c3353ec4 grafana/grafana "/run.sh" 6 seconds ago Up 5 seconds 0.0.0.0:3000->3000/tcp grafana
c53238641481 prom/prometheus "/bin/prometheus --c…" 2 minutes ago Up 2 minutes 0.0.0.0:9090->9090/tcp prometheus
如果启动失败,老弟为什么咱们的人生里有数不完的bug啊!!!可以使用 docker logs 容器名
查看失败原因并进行解决。
测试服务
1、本机测试
curl localhost:3000
# 输出
<a href="/login">Found</a>.
2、浏览器测试
访问 http://192.168.56.102:3000
用户名密码默认都是admin,第一次登录会提示修改。
老弟啊,这新版本的节目就是好看啊~!!!
初始账号密码都为admin,不用感谢我,我试了一万遍!!正如某句歌:“爱你一万年”!登陆完成后就可以修改账户密码了。
配置数据
添加数据资源
随后进入以下画面
配置Prometheus数据
Name填入 Prometheus(随便填啦,我就填 咸蛋超人) ;URL填入 http://192.168.18.111:9090;其他不用变;Save&Test。
选择dashboard:
点击Dashboards;点击三个Import;引入三个dashboard。
import
点击import!!欧耶,成功啦!
引入其他dashboard
比如可以填入URL https://grafana.com/grafana/dashboards/444 ,点击Load,就可以下载Node Exporter的dashboard。选择Folder,选择Prometheus数据源,Import。
查看dashboard
左上角HOME,出现下拉框,即可选择dashboard。
安装node-exporter
想要监控我,不得给我一点好处费???
因为 Prometheus 本身不具备监控功能,所以想要通过Prometheus 收集数据的话,需要安装对应的exporter。
# 买新不买旧
docker pull prom/node-exporter
docker run -itd --name=node-exporter \
--restart=always \
-p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter
测试服务
1、本机测试
curl localhost:3000/metrics
输出以下信息,我也看不懂,就是成功了的意思,小伙子!!
# TYPE process_max_fds gauge
process_max_fds 1.048576e+06
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 18
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 3.663872e+07
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.6842689908e+09
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 8.06567936e+08
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes 1.8446744073709552e+19
# HELP prometheus_template_text_expansion_failures_total The total number of template text expansion failures.
# TYPE prometheus_template_text_expansion_failures_total counter
prometheus_template_text_expansion_failures_total 0
# HELP prometheus_template_text_expansions_total The total number of template text expansions.
# TYPE prometheus_template_text_expansions_total counter
prometheus_template_text_expansions_total 0
2、浏览器测试
访问 http://192.168.18.111:3000/metrics
。
配置 Prometheus 监控node节点
修改 Prometheus 主控制文件
哥们快到最后一步了,别全修改了,注意看配置文件啊!!
docker cp prometheus:/etc/prometheus/prometheus.yml $PWD
vim prometheus.yml
# 在Prometheus配置文件按以下内容修改:
# 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"]
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['192.168.18.111:9100'] # 被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
labels:
instance: localhost
docker cp $PWD/prometheus.yml prometheus:/etc/prometheus/prometheus.yml
重启 Prometheus 容器
docker restart prometheus
问题
- 容器状态反复
restaring
,用命令docker container ls -a
查看。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
6aaf2018609d keywords_exact:v1 "bash urn.sh" 6 seconds ago Restarting (1) Less than a second ago keywords_exact
- 去看Docker日志:docker logs [容器名/容器ID]
- 发现宿主机目录挂载到docker容器后的访问权限问题
- 然后kill掉这个容器,
docker kill 6aaf2018609d
docker rm 6aaf2018609d
其它可能的原因:
1.内存不够:找内存
Docker 启动至少需要2G内存,首先执行free -mh
命令查看剩余内存是否足够。
total used free shared buff/cache available
Mem: 15G 14G 627M 195M 636M 726M
Swap: 0B 0B 0B
2.端口冲突:换端口
该docker监听端口已经被其他进程占用,一般此种问题容易出现在新部署的服务,或在原有机器上部署新的后台服务,所以在部署之前应该执行命令检查端口是否已经被占用,如果上线后发现占有则应改为可用端口再重启之。
检查命令:netstat -nltp|grep
[规划的端口号]