一、试验环境
下面使用Docker把Prometheus安装一遍,详细理论信息看:使用Prometheus+Grafana监控MySQL
我们用到了以下两个exporter:
- node_exporter – 用于机器系统数据收集
- mysqld_exporter – 用于MySQL服务器数据收集
下面是我们安装时用到的架构图:
二、安装Docker
1)Docker命令工具需要root权限才能工作,你可以将你的用户放入docker组来避免每次都要使用sudo。
2)添加YUM源。
1 2 3 4 5 6 7 8 |
$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF |
3)安装Docker
1 |
$ yum install docker-engine |
4)启动Docker
1 2 |
$ systemctl enable docker.service $ systemctl start docker |
5)查看Dcoker版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ docker version Client: Version: 17.05.0-ce API version: 1.29 Go version: go1.7.5 Git commit: 89658be Built: Thu May 4 22:06:25 2017 OS/Arch: linux/amd64 Server: Version: 17.05.0-ce API version: 1.29 (minimum version 1.12) Go version: go1.7.5 Git commit: 89658be Built: Thu May 4 22:06:25 2017 OS/Arch: linux/amd64 Experimental: false |
三、安装运行Prometheus
首先,在创造上的主机文件系统的最小Prometheus配置文件prometheus.yml
(替换你要监控的IP地址):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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: ['10.10.0.186:9100'] labels: instance: db1 - job_name: mysql static_configs: - targets: ['10.10.0.186:9104'] labels: instance: db1 |
10.10.0.186是我们数据库主机的IP,端口则是对应的exporter的监听端口。
启动Prometheus
1 2 3 4 5 6 7 8 |
docker run -d \ -p 9090:9090 \ --name prometheus \ -v ~/prometheus.yml:/etc/prometheus/prometheus.yml \ quay.io/prometheus/prometheus \ -config.file=/etc/prometheus/prometheus.yml \ -storage.local.path=/prometheus \ -storage.local.memory-chunks=10000 |
第一次运行此命令时,它将从Docker Hub中提取Docker镜像。此命令很长,并且包含许多命令行选项。 让我们更详细地看看它:
该-d选项启动在独立模式下的Prometheus的容器,这意味着容器将在后台启动,并不会按终止CTRL+C 。
该–name选项给定容器一个名字。
该-p 9090:9090的选项公开Prometheus的web端口(9090),并使其通过主机系统的外部IP地址访问。
该-v […]选项挂载prometheus.yml从主机文件系统的配置文件到哪里Prometheus希望它(容器内的位置/etc/prometheus/prometheus.yml )。
该-config.file选项相应地设置到Prometheus配置文件的位置,在容器内 。
所述-storage.local.path选项配置在容器内的指标的存储位置。
最后, -storage.local.memory-chunks选项调整Prometheus的内存使用主机系统的非常小的RAM(只有512MB)和少量的储存时间序列的量在本教程中(略低于1000)。 它指示Prometheus只保留10000样品块内存(每列约10块),而不是1048576 这个默认的是更多的内存的机器上运行时的Prometheus和储存更多的时候, 你肯定会需要调整值系列。 请参阅Prometheus的存储文档,为解决此更多的细节。
您可以使用以下命令列出所有正在运行的Docker容器:
1 2 3 |
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 52e570405857 quay.io/prometheus/prometheus "/bin/prometheus -..." 15 minutes ago Up 15 minutes 0.0.0.0:9090->9090/tcp prometheus |
你可以检查使用以下命令运行Prometheus服务器的日志:
1 |
$ docker logs prometheus |
Prometheus内置了一个web界面,我们可通过http://monitor_host:9090
进行访问:
在Status
->Targets
页面下,我们可以看到我们配置的两个Target,它们的State
为UNKNOW
(测试下来这个Docker镜像有问题)。
下一步我们需要安装并运行exporter,在被监控端服务器安装Docker。
安装运行node_exporter
1 2 3 4 5 6 7 8 9 10 11 |
docker run -d \ -p 9100:9100 \ --name node-exporter \ -v "/proc:/host/proc" \ -v "/sys:/host/sys" \ -v "/:/rootfs" \ --net="host" \ quay.io/prometheus/node-exporter \ -collector.procfs /host/proc \ -collector.sysfs /host/sys \ -collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)" |
安装运行mysqld_exporter
mysqld_exporter需要连接到MySQL,所以需要MySQL的权限,我们先为它创建用户并赋予所需的权限。
1 2 3 |
mysql> CREATE USER 'mysql_monitor'@'localhost' IDENTIFIED BY 'mysql_monitor' WITH MAX_USER_CONNECTIONS 3; mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_monitor'@'localhost'; mysql> FLUSH PRIVILEGES; |
启动Docker并传入用户名和密码以及主机IP和端口。
1 2 3 |
docker run -d \ -p 9104:9104 \ -e DATA_SOURCE_NAME="mysql_monitor:mysql_monitor@(10.10.0.186:3306)/" prom/mysqld-exporter |
我们再次回到Status
->Targets
页面,可以看到两个Target的状态已经变成UP
了。
接下来就是加入Grafana作为Prometheus的Dashboard,看前面的文章。
四、安装运行Grafana
1 2 3 4 |
docker run -d \ -p 3000:3000 \ -e "GF_SECURITY_ADMIN_PASSWORD=admin" \ -v ~/grafana_db:/var/lib/grafana grafana/grafana |
我们可通过http://monitor_host:3000
访问Grafana网页界面(缺省的帐号/密码为admin/admin):
完结。。。
<可参考>