利用Grafana和Prometheus对系统进行监控
简要介绍如何在docker
环境下利用Grafana和Prometheus对系统进行监控。
软件安装
在给Grafana软件集成LDAP实现单点登录一文中简要说明了如何基于docker
安装Grafana
,本节出于简化使用与维护的目的,将Grafana
与Prometheus
合并到一个docker-compose.yml
文件中,相关的文件如下
docker-compose.yml
文件
version: "3"
services:
prometheus:
image: prom/prometheus:latest
container_name: "prometheus_custom"
restart: always
ports:
- "9090:9090"
volumes:
- "$PWD/prometheus.yml:/etc/prometheus/prometheus.yml"
- "$PWD/prometheus_data:/prometheus"
grafana:
image: grafana/grafana
container_name: "grafana_custom"
ports:
- "3000:3000"
restart: always
volumes:
- "$PWD/grafana_data:/var/lib/grafana"
- "$PWD/ldap.toml:/etc/grafana/ldap.toml"
environment:
# 管理员账号
- GF_SECURITY_ADMIN_USER=admin
# 管理员密码
- GF_SECURITY_ADMIN_PASSWORD=xxx
- GF_AUTH_LDAP_ENABLED=true
ldap.toml
文件,用于Grafana
接入LDAP
[[servers]]
host = "10.10.0.55"
port = 389
use_ssl = false
start_tls = false
ssl_skip_verify = false
bind_dn = "cn=xxx,dc=chinahirain,dc=com"
bind_password = 'xxx'
search_filter = "(uid=%s)"
search_base_dns = ["dc=chinahirain,dc=com"]
[servers.attributes]
name = "givenName"
surname = "displayName"
username = "uid"
#member_of = "cn"
email = "mail"
[[servers.group_mappings]]
group_dn = "grafana-admins"
org_role = "Admin"
[[servers.group_mappings]]
group_dn = "grafana-editors"
org_role = "Editor"
[[servers.group_mappings]]
group_dn = "*"
org_role = "Viewer"
prometheus.yml
文件用于配置要接入Prometheus
的系统
global:
scrape_interval: 15s # 默认抓取周期
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'node-exporter' #服务的名称
scrape_interval: 5s
metrics_path: /metrics #获取指标的url
static_configs:
# 这个为监听指定服务服务的ip和port
- targets: ['10.30.31.56:9188','10.30.5.113:9188']
上述这些文件必须位于同一目录下,之后通过docker-compose
启动
root@lucumt:~/grafana# ls
docker-compose.yml grafana_data ldap.toml prometheus.yml prometheus_data
root@lucumt:~/grafana# docker-compose up -d
系统接入
主要基于node exporter
实现,参考 centos7安装node export 一文进行相关操作。
-
在安装有
node exporter
服务器上的/usr/local/bin/
目录下复制名为node_exporter
的文件到目标机器的/usr/local/bin/
目录下,并将其赋予可执行权限chmod +x /usr/local/bin/node_exporter
-
执行
vi /etc/systemd/system/node_exporter.service
并输入下述内容[Unit] Description=cicd_exporter After=network.target [Service] ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9188 Restart=on-failure [Install] WantedBy=multi-user.target
-
执行下述命令将其设置为
Linux
服务同时开机自启动systemctl daemon-reload && systemctl start node_exporter && systemctl enable node_exporter
-
在目标机器的浏览器中输入
http://127.0.0.1:9188
若能正常显示,则表示node_exporter
安装成功 -
在安装
Grafana
的服务器上找到前述的prometheus.yml
,在其targets
下面添加对应的node_exporter
服务,然后通过docker-compose restart
重启相关服务 -
在
Grafana
中查看新添加的服务器是否集成成功